Farben im Skin und im Code

  • Ich habe eine Frage zum Thema Farben, in meinem Plugin habe ich viele Listen in denen die Texte in den Zeilen unterschiedliche Farben haben, z.B. wenn ein Eintrag deaktiviert ist, dann wird er rot dargestellt, ansonsten weiß. Das wird zur Zeit beim Aufbau der Liste, also wenn ich die Zeilen einfüge, im Code entschieden und die jeweils richtige Farbe gesetzt.
    Jetzt beschweren sich die Skinner, dass man bei einem hellen Skin die Texte nicht lesen kann (weiß auf weiß). Die Skinner haben empfohlen die "foreground" Color im Code anstelle von weiß zu verwenden, mein erster Versuch parseColor("foreground") führte aber direkt zu Crash.
    Wie lässt sich mein Problem richtig lösen, damit die Skinner zufrieden sind - gibt es u.U. sogar die Möglichkeit mehr als nur eine Farbe im Skin zu definieren die ich dann im Code verwenden kann?

    Einmal editiert, zuletzt von MacDisein ()

  • sieh dir mal den Bereich <colors> in der skin.xml an


    Code
    <colors>
    		<color name="white" 			value="#ffffff"/>
    		<color name="grey" 			value="#aaaaaa"/>
    		<color name="foreground" 		value="#dddddd"/>
    
    
    	<colors>


    dann wird aus dem jeweiligen skin immer die jeweilige foreground Farbe genommen - egal welche Farbe du definierst

    Gruß Fred

    Die Dreambox ist tot, es lebe die Dreambox

  • Danke, habe mir das jetzt mal angesehen - jetzt wird einiges klarer.
    Aber eine Frage habe ich trotzdem noch:


    Das <colors> Tag ist ja relativ global - kann denn der Skinner die Farben pro Screen neu definieren, wenn er für mein Plugin die Farben anpassen muss?
    Oder muss dann eine Farbe 'yellow' global z.B. dunkler werden?

  • als Bespiel eignet sich die EMC skin_user.xml - die kann man auch schön direkt in den Skin einbauen


    Code
    <colors>
    		.
                    .
                    .
    <!-- EMC Color for DMConcinnity-HD -->
                    <color name="EMCFinished" value="#0046d93a" />
                    <color name="EMCRecording" value="#009f1313" />
                    <color name="EMCWatching" value="#003486f4" />
                    <color name="EMCcyan"  value="#2CADFB" />
    	</colors>


    du kannst ja nur farbcodes für DeinPlugn_foreground, DeinPlugin_background, DeinPlugin_etc definieren, dann braucht der skiner die colornames nur in die gobale color liste aufnehmen und dort die Farben entsprechend dem Skin EINMALIG anpassen, wenn dein Plugin Screen nur mit den color names anstatt HEX Codes geskinnt ist


    alternativ kannst du auch die die standard color names verwenden: foreground, background, transparent usw. die sind so gut wie in jedem skin global definiert

    Gruß Fred

    Die Dreambox ist tot, es lebe die Dreambox


  • Als Skinner würde ich empfehlen die Farben aus dem Windowstyle zu verwenden. Wenn Du feste Farben für Dein Plugin voraussetzt, wie z.B. sr_Farbe1, usw., wird jeder Skin, der diese Farbdefinitionen nicht hat, crashen.
    Was ich besser finden würde, es so zu machen, wie zum Beispiel in der ChannelSelection. Dort kann ich dem widget Farben "mitgeben".

    Code
    <widget backgroundColor="background" colorEventProgressbar="2ndFG" colorEventProgressbarBorder="3rdFG" colorEventProgressbarBorderSelected="white" colorEventProgressbarSelected="foreground" colorServiceDescription="2ndFG" colorServiceDescriptionSelected="foreground" foregroundColorServiceNotAvail="3rdFG" name="list" position="30,57" scrollbarMode="showOnDemand" serviceInfoFont="Regular;20"
                serviceItemHeight="30" size="820,600" transparent="1"/>


    Du müsstest nur die Namen festlegen. Wird vom Skin nix gemacht, werden Deine default-Werte genommen, wird im Skin das entsprechend angepasst, werden die Skinfarben genommen und nix crasht ;). Wie man das in Python macht, keine Ahnung...

  • Vielen Dank für die Erläuterungen und Ideen - ich habe jetzt im ersten Schritt den Code so umgebaut, dass foreground anstelle von white verwendet wird und die anderen Farben aus dem Skin geladen werden. So haben die Skinner etwas mehr Möglichkeiten - damit kann ich jetzt erstmal leben - sollte es dann immer noch Probleme geben, kann man noch mal über eigene Farbnamen nachdenken.