FritzCall Plugin (auch mit FHD! :)

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    • Genau das hatte ich ja auch vorhin geschrieben ,ein Plugin liefert default screens und was es alles brauch mit.
      Dadurch ist ein Plugin default in den mitgelieferten skinscreens default immer passend .
      Da muss nix gescalt oder sonst was gemacht werden und man kann da ja auch im Plugin direkt fullhd screens mit liefern das geht ja schon immer.
      Im Plugin kann man dann angeben das zb. die call icons direkt aus dem aktiven skin gelesen werden wenn vorhanden ,ansonsten werden die default icons genommen.
      Und wenn dann die screens skinbar sind (und das muss nicht über applet sein ,aber kann) dann kann jeder skinner oder user sich den screen sammt icons passend zu seinem genutzten skin skinnen.
      Ohne scale ,mit scale wie man zur Verfügung hat.
      Das einzige was man halt scalen lassen könnte vom Plugin wäre das FritzCallFaces Bild oder man lagert das per applet aus so das es in jedem skin anpassbar ist.Wenn ein screen skinbar ist (und das ganz normal) dann kann man Buttons ,Schrift ,Größe und was weiß ich jeder Auflösung anpassen da muss nix im Plugin skaliert werden und das ist doch auch für einen Programmierer viel besser oder denke ich da einfach nur falsch?

      Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von zombi ()

    • dem schließe ich mich gerne an :) und sorry, war eben etwas zu schnell mit senden, wollte eigentlich noch etwas anfügen.
      es ist natürlich erstmal jedem Plugin-Entwickler selbst überlassen, wie er den Standard-Skin gestaltet. Die aktuelle Auflösung wird ja im Plugin schon ermittelt, damit könnten bestimmt leicht die Standards für die verschiedenen Auflösungen definiert werden.
      Zudem sind die E2-Images inzwischen auch schon sehr verschieden, was so einige skin Funktionen angeht, z.B. config widgets, scrollbar etc. was einen default skin für alle Images nicht unbedingt leichter werden lässt ... (@shadowrider, ich glaube, da hast du auch so deine Erfahrungen, oder ? ;) )
      da muss man eben den kleinsten, gemeinsamen Nenner finden, oder auch wie die Jungs vom MediaPortal, verschiedene skins z.B. für DreamOS und die anderen E2s bauen ...

      Im Prinzip ist Fritzcall ja schon sehr gut auch in FHD skinnbar, z.B. die Anrufliste als List im Plugin und TemplatedMulticontent im Skin gibt dem Skinner schon alle Möglichkeiten zur Anpasssung. Es fehlt halt noch ein default für FHD skins, die das Plugin nicht geskinnt haben. Hab auch schon ganz andere Plugins gesehen, die eben für nur eine Auflösung gedacht waren und z.B. die Werte für MultiContent-Listen nur im Plugin definiert sind. So was kann man eben per skin nicht anpassen (oder ich weis halt nicht wie...)

      ich fasse für mich mal @zombis Ausführungen so zusammen : "so wenig Aufwand wie möglich und so viel Aufwand wie unbedingt nötig" wäre auch mein Ziel, wenn ich für ein Plugin Default screens zu definieren hätte ... gepaart mit der weitestgehenden Anpassbarkeit für Skinner. :)
      und das ist natürlich auch nur meine persönliche Meinung.

      Ist jetzt natürlich die Frage, was @DrMichael vor hat ... wie gesagt, wenn ich irgendwie unterstützen / testen kann, immer gerne .
    • Das war mir jetzt alles zu schnell... (Ich bin kein Skin-Experte...)
      Ich versuche mal zusammenzufassen.

      1. Es ist skinbar per Applet. Ok, mag man als Hack ansehen, gibt es aber schon immer.
      2. Diesen ganzen Berechnungswahnsinn im Plugin (den ich früher toll fand, heute eher gruselig) in ein Applet im Standardskin zu packen. Ja, klingt gut, jemand müsste mir dabei helfen.
      3. DIe call*.png skalieren mit scale=1. Geht das auch mit "alten" Firmwares?
      4. Ja, dieses callrejected.png sieht furchtbar aus. Jemand hatte mal die anderen verschönert, aber ich weiß nicht, wie. Wenn das jemand machen könnte, wäre das Klasse.
      5. Eigene Verzeichnisse für Screens in SD, HD, FHD, (UHD?). Das ist nicht mehr einfach, wenn es auch anders geht.
      6. Für das input_error.png nehme ich jetzt mal resolveFilename(SCOPE_CURRENT_SKIN, "icons/input_error.png"), sodass das direkt aus dem aktuellen Skin genommen wird.
      7. Die call*.png kann ich gerne so machen, dass zuerst im aktuellen Skin gesucht wird. Wie würde das aussehen? Aktuell habe ich resolveFilename(SCOPE_PLUGINS, "Extensions/FritzCall/images/callout.png")

      Ansonsten mal eine neue Version. Darin ist die Beschriftung der Buttons in FritzOfferAction für SD, HD, FHD gut. Na, zumindest ok.

      Und ja, wie @gordon55 sagte, die Default Screens sollten erstmal brauchbar sein für alle Skins, die diese eben (noch) nicht drin haben. Das hat bisher für SD/HD gut geklappt, sollte auch für FHD, UHD eigentlich gehen.

      DrMichael
      Dateien
    • Dr.Michael
      1. call*.png nicht scalen das geht nicht in allen Image oder Oe´s ,im Plugin einfach eintragen das sie auch aus dem aktiven skin geladen werden können ,dann kann man direkt im skin die passende größe mit bringen ohne etwas zu scalen (und das geht in allen Image oder auf allen Boxen.
      2. Die call png´s hatte damals glaube denmimleo gemacht nachdem ich ihn diesbezüglich gefragt hatte und die hatte ich dir dann gegeben zum einchecken.Warum da eins fehlt weiß ich garnicht mehr
      3. Eigene Verzeichnisse für die Auflösungen würde gehen ist aber normal auch unnötig ,man kann direkt im Plugin über ein if und der größe der Auflösung das regeln und passende defaultscreens mitliefern.Da kannste dann auch im Plugin direkt zb. passende Buttons mitliefern und schon passen default die Buttons und die Schriften usw.
      4. Beispiel hier mal aus dem showclock Plugin

      Spoiler anzeigen
      def clockSkin():
      if width < 1280:
      if width < 1024: # SD
      currentSkin = """
      <screen name="ShowClock" size="190,60" zPosition="10" backgroundColor="#50202020" flags="wfNoBorder">
      <widget source="global.CurrentTime" render="Label" position="55,12" size="58,17" font="Regular;21" halign="left" valign="center" transparent="1">
      <convert type="ClockToText">Default</convert>
      </widget>
      <widget source="global.CurrentTime" render="Label" position="111,15" size="30,15" font="Regular;16" halign="left" valign="center" transparent="1">
      <convert type="ClockToText">Format::%S</convert>
      </widget>
      <widget source="global.CurrentTime" render="Label" position="0,37" size="190,13" font="Regular;15" halign="center" valign="center" foregroundColor="#999999" transparent="1">
      <convert type="ClockToText">Format:%A, %d.%m.%Y</convert>
      </widget>
      </screen>"""
      else: # XD
      currentSkin = """
      <screen name="ShowClock" size="250,70" zPosition="10" backgroundColor="#50202020" flags="wfNoBorder">
      <widget source="global.CurrentTime" render="Label" position="80,10" size="80,25" font="Regular;24" halign="left" valign="center" transparent="1">
      <convert type="ClockToText">Default</convert>
      </widget>
      <widget source="global.CurrentTime" render="Label" position="142,15" size="40,18" font="Regular;20" halign="left" valign="center" transparent="1">
      <convert type="ClockToText">Format::%S</convert>
      </widget>
      <widget source="global.CurrentTime" render="Label" position="0,40" size="250,25" font="Regular;19" halign="center" valign="center" foregroundColor="#999999" transparent="1">
      <convert type="ClockToText">Format:%A, %d.%m.%Y</convert>
      </widget>
      </screen>"""
      else: # HD
      currentSkin = """
      <screen name="ShowClock" size="280,80" zPosition="10" backgroundColor="#50202020" flags="wfNoBorder">
      <widget source="global.CurrentTime" render="Label" position="85,15" size="80,25" font="Regular;30" halign="left" valign="center" transparent="1">
      <convert type="ClockToText">Default</convert>
      </widget>
      <widget source="global.CurrentTime" render="Label" position="162,20" size="40,18" font="Regular;24" halign="left" valign="center" transparent="1">
      <convert type="ClockToText">Format::%S</convert>
      </widget>
      <widget source="global.CurrentTime" render="Label" position="0,45" size="280,30" font="Regular;23" halign="center" valign="center" foregroundColor="#999999" transparent="1">
      <convert type="ClockToText">Format:%A, %d.%m.%Y</convert>
      </widget>
      </screen>"""

      Und wenn das wie gesagt so ist brauch man nichtmal applet (außer eventuell für das faces Bild ) dann kann man das auch so skinnen oder hat auch direkt vom Plugin default screens die unter den Auflösungen passen.

      Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von hgdo ()

    • Vorschlag

      evtl kann ja ein skinner helfen?

      Ordner
      skin
      skin/sd
      skin/hd
      skin/fHD
      ein skinner der es kann möge xml's erstellen wo die Elemente enthalten sind

      einzufügen wäre dann jeweils ein applet, welches das Anruferbild skaliert
      (damit wäre auch gleich die Beschränkung auf eine bestimmte Bildgröße aufgehoben)

      damit können jedwede Berechnungen entfallen, die skinner haben zukünftig 'freie Hand', Pflege/Änderungen sollten etwas einfacher umsetzbar sein

      wie gesagt, ein Vorschlag

      Nachtrag:
      praktisch von einem skinner den 'Rohbau', so das Dr.Michael im Prinzip nur noch die Beschickung entsprechend proggt
      ============================================================================================

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von shadowrider ()

    • alles sehr schöne Vorschläge :thumbup:

      @DrMichael, was meinst du mit "Erweiterten Anzeigemanipulationen" ?, sorry, verstehe ich grad net...

      DrMichael schrieb:

      6. Für das input_error.png nehme ich jetzt mal resolveFilename(SCOPE_CURRENT_SKIN, "icons/input_error.png"), sodass das direkt aus dem aktuellen Skin genommen wird.

      das ist glaube ich keine gute Idee, nicht jeder Skin hat das Verzeichnis "icons" und noch das PNG genau hier ... würd mich nicht drauf verlassen wollen ...



      DrMichael schrieb:

      7. Die call*.png kann ich gerne so machen, dass zuerst im aktuellen Skin gesucht wird. Wie würde das aussehen? Aktuell habe ich resolveFilename(SCOPE_PLUGINS, "Extensions/FritzCall/images/callout.png")
      muss ich nochmal suchen, wie das genau geht mit SCOPE_CURRENT_PLUGIN ... ich glaube, das hab ich schon mal mit @betonme im SeriesPlugin getestet ...


      noch was zu den Grafiken : so viele sind es hier ja auch nicht - Fritz-Logo, webseite, call*, evtl. 4 colorButtons und 3 Info-Icons...
      also ich würde durch die verschiedenen Auflösungen gar keine PNGs mehr aus dem Image nehmen, die sind inzwischen auch verschieden groß bei den Images und immer nur ein Default (für eine Auflösung). Die wenigen PNGs würde ich für die verschiedenen Auflösungen auch gleich im Plugin mitliefern, dafür bietet sich z.B. auch die von @shadowrider vorgeschlagenen Verzeichnisstruktur an.
      PNGs in verschiedenen Auflösungen ist überhaupt kein Problem, wenn man z.B. das Original als SVG hat. Ist ja vektor-orientiert, läßt sich gut mit Inkscape bearbeiten und in jeder Auflösung als PNG speichern.

      wenn ich es schaffe, mach ich nachher mal nen Beispiel ....

      PS: der Smiley in meinem Post 27 hier war im SVG-Original 20x20px ... ich hab ihn im Inkscape einfach auf 800 skaliert :D
    • DrMichael schrieb:

      7. Die call*.png kann ich gerne so machen, dass zuerst im aktuellen Skin gesucht wird. Wie würde das aussehen? Aktuell habe ich resolveFilename(SCOPE_PLUGINS, "Extensions/FritzCall/images/callout.png")

      habs gefunden und ist ganz einfach : SCOPE_PLUGINS durch SCOPE_CURRENT_PLUGIN, siehe /usr/lib/enigma2/python/Tools/Directories.py, d.h. die Zeile ändern in.

      resolveFilename(SCOPE_CURRENT_PLUGIN, "Extensions/FritzCall/images/callout.png")

      im Gegensatz zu SCOPE_PLUGINS, bei dem nur im Pfad des Plugins gesucht wird, ergänzt die Funktion erstmal den Skin zu dem Pfad : "/user/share/enigma2/<skin-in-settings>/Extensions/FritzCall/images/callout.png". Erst wenn da nix existiert, also kein skin-spezifisches Bild vorliegt, wird das aus dem Plugin genommen.


      Deinen Pfad "Extensions/FritzCall/images/callout.png" kannst du natürlich gestalten wie du möchtest. Könntest auch Auflösungen einbauen, die du wie im Beispiel von zombi per if definierst, z.B. könnte es so ähnlich aussehen

      Quellcode

      1. if width > 1920: # UHD
      2. PIXMAP_PATH = "Extensions/FritzCall/images/UHD"
      3. elif width > 1280: # FHD
      4. PIXMAP_PATH = "Extensions/FritzCall/images/FHD"
      5. elif width > 1024: # FHD
      6. PIXMAP_PATH = "Extensions/FritzCall/images/HD"
      7. else: # SD
      8. PIXMAP_PATH = "Extensions/FritzCall/images/SD"
      9. ... = resolveFilename(SCOPE_CURRENT_PLUGIN, PIXMAP_PATH + "/callout.png")
    • Was Skins betrifft ist das nicht die beste Wahl, Ich würde dieses empfehlen, was in verschiedenen Plugins so zu finden ist:

      key_bg = LoadPixmap(cached=True, path=resolveFilename(SCOPE_CURRENT_SKIN, "skin_default/vkey_bg.png"))

      Das Bild kann dann unter /user/share/enigma2/<skin>/skin_default/ liegen.
      Carpe diem!

      Skin: CerX FHD | Plugins: TMDb, BacksNcovers, FritzDect, AutoShredder, PluginMover | EPG: GraphMultiEPG | ... [Alle anzeigen]

      Vu+ Wiki
    • jep, für PNGs, die bereits im Image enthalten sind und die wie im auch FritzCall verwendet werden (wie das standard "input_info.png"), ist das klar die bevorzugte Lösung.
      wenns nicht unter /user/share/enigma2/<skin>/skin_default/ zu finden ist, wird eben aus dem default /user/share/enigma2/skin_default/ genommen
      aber ich meine, dass plugin-Spezifische PNGs wie die call*.png nix im Verzeichnis skin_default zu suchen haben, die werden ja auch im Plugin mitgeliefert und sind eigentlich im Skin nicht anpassbar ... es sei denn der Pluginentwickler nutzt eben SCOPE_CURRENT_PLUGIN.

      oder übersehe ich da noch was ?

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von gordon55 ()

    • Sowas kann man auch regeln und da kann man im Plugin dann auch sagen wo die icons im skin zb. zu liegen haben ,das muss nicht skin_default oder so sein.
      Beim EMC ist es zb. der Ordner emc in einem skin wo dann die icons gesucht werden für das EMC.
      Wenn halt nicht vorhanden im skin werden dann die icons aus dem Plugin geladen
      Hier mal wie ichs zb. im Partnerboxplugin umgesetzt hatte

      def loadPix(name):
      plugindir = '/usr/lib/enigma2/python/Plugins/Extensions/Partnerbox/icons/'
      if fileExists(resolveFilename(SCOPE_CURRENT_SKIN, 'skin_default/icons/'+name)):
      pic = LoadPixmap(cached=True, path=resolveFilename(SCOPE_CURRENT_SKIN, 'skin_default/icons/'+name))
      else:
      pic = LoadPixmap(cached=True, path=plugindir+name)
      return pic

      def Partnerbox_EPGList__init__(self, type=0, selChangedCB=None, timer = None):
      baseEPGList__init__(self, type, selChangedCB, timer)
      # Partnerbox Clock Icons
      self.remote_clock_pixmap = loadPix('remote_epgclock.png')
      self.remote_clock_add_pixmap = loadPix('remote_epgclock_add.png')
      self.remote_clock_pre_pixmap = loadPix('remote_epgclock_pre.png')
      self.remote_clock_post_pixmap = loadPix('remote_epgclock_post.png')
      self.remote_clock_prepost_pixmap = loadPix('remote_epgclock_prepost.png')
    • danke @zombi für die Infos. Natürlich gibt es wie immer viele Wege, die nach Rom führen :) EMC hatte ich auch schon mal gesehen, dass PNGs anpassbar sind..
      und natürlich kann es jeder Pluginentwickler machen, wie er es für richtig hält.
      aus Sicht eines Skinner ist dann die Vielfalt vielleicht etwas verwirrend , aber ich finde es zumindest gut, wenn es überhaupt eine Möglichkeit für skin-spezifische PNGs gibt. 8)

      und wenn ich noch ein wenig anmerken darf : deine Methode fürs PartnerPlugin sucht ja im Endeffekt an 3 Orten das PNG in dieser Reihenfolge:
      1. /usr/share/enigma2/<skin-name>/skin_default/icons/
      2. /usr/share/enigma2/skin_default/icons/
      3. /usr/lib/enigma2/python/Plugins/Extensions/Partnerbox/icons/
      der 2. wäre mMn. nicht unbedingt nötig, könnte u.U. auch zu Verwechselungen führen, aber geht natürlich auch :)

      und machmal sorgt vielleicht auch ein wenig Ordnung im Skin für mehr Übersichtlichkeit, wenn PNGs für Plugins in nur einem Pfad liegen, z.B.
      /usr/share/enigma2/<skin-name>/Extensions/<Plugin-name>/...
      das wäre auch ein kleiner Vorteil von SCOPE_CURRENT_PLUGIN. Ich persönlich fände es toll, wenn mehr Pluginentwickler das nutzen würden.
    • Doch der ist in dem Fall nötig weil es kann ja auch mal in Zukunft sowas direkt in dem system mitgeliefert werden ;) .(aber hier im Plugin wäre es unnötig ,das sollte ja nur ein Beispiel sein)
      Und warum nicht im skin_default/icons des skins ,das ist doch auch Ordnung ,da ist dann kein extra ordner nötig für ein Plugin usw.
      Es gibt wie gesagt da viele Ansätze ,wie auch zb. das icon einfach größer und dann würde ein defaulticon sogar in allen Skinauflösungen gehen.
      Nur mal hier als Beispiel icon
      Das man das icon direkt im skin auch mitliefern können sollte finde ich persönlich auch richtig gut aber für die Plugins dann noch unterordner da bin ich mir nicht so sicher aber ist ne Überlegung wert.
      Dateien

      Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von zombi ()

    • Hier mal mein aktueller Stand...

      FritzOfferAction kann fröhlich in den Skins verwendet werden, wenn man die entsprechende (neue) Einstellung in der Konfig ganz am Ende einschaltet (die Beschriftung ist etwas holprig, Vorschläge willkommen).

      Müsste man wg. MessageBoxPixmap noch etwas machen, damit das besser skinbar wäre?

      DrMichael

      PS: Und, ja, ich denke, mittlerweile für FHD müssen die Skin-Entwickler dafür sorgen, dass es ordentlich aussieht...
      PPS: Kann mal jemand den "Schüler" bei mir rausmachen?!?! Ich akzeptiere auch "Junior Developer"... :)

      Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von DrMichael () aus folgendem Grund: Anhänge gelöscht. Neuere Version verfügbar...

    • huch, da ward ihr aber schneller ... ;)

      wenn das mal so einfach wäre ...
      Meine Meinung :

      a) SCOPE_CURRENT_PLUGIN ist gut, weil erst im Skin-verzeichnis nachgesehen wird
      b) SCOPE_PLUGIN alleine bringt für Skinner nix, nur in Kombination mit SCOPE_CURRENT_SKIN wie im Beispiel von @zombi schön beschrieben.

      möchtest du eigentlich die Plugin-spezifischen png's in verschiedenen Auflösungen gleich ins Plugin integrieren ?
      und wie @zombi auch geschrieben hat,ob du jetzt Unterverzeichnisse für die verschiedenen Auflösungen anlegst oder nicht ... Ansichtssache. :)

      zombi schrieb:

      Es gibt wie gesagt da viele Ansätze ,wie auch zb. das icon einfach größer und dann würde ein defaulticon sogar in allen Skinauflösungen gehen.
      sorry, verstehe ich noch nicht ganz ... wie kann z.B. ein "callin.png" in der Größe 25x25 für alle Auflösungen passen ? in einem UHD-Skin würde das bei einer Zeilenhöhe von ca 100 nur noch als "Fliegendr..." zu sehen sein auf Images, die eben nicht automatisch skalieren.
      ?(

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von gordon55 ()