Pure Vision goes Backdrop (4 Viewers)

Lehmden

Retired Team Member
  • Premium Supporter
  • December 17, 2010
    12,562
    3,944
    Lehmden
    Home Country
    Germany Germany
    Hallo.
    Hier sollen ja Skin- Modifikationen vorgestellt werden. Da ich aktuell an einer Mod vom PureVision HD Skin arbeite, dachte ich, ich stelle meine laufende Arbeit hier mal vor. Prinzipiell mag ich den PureVision Skin von Catavolt, weil er gut aussieht und flüssig arbeitet. Früher habe ich den Backdrop Skin von cul8er genutzt, der aber leider nicht weiter entwickelt wird und mit den aktuellen Media Portal Versionen gar nicht mehr kompatibel ist. Den Basic Home Screen von Backdrop halte ich aber immer noch für den schönsten, den ich kenne. Deswegen habe ich versucht, diesem Design nahe zu kommen. Ob es mir gelungen ist, könnt ihr selbst beurteilen. Ich werde nach und nach alle für mich relevanten Skin Files überarbeiten, so lange, bis sie vollständig meinem Geschmack und meinen Bedürfnissen entsprechen. Prinzipiell habe ich zwei Möglichkeiten gehabt. zum einen den Backdrop Skin nehmen und aktualisieren oder den Pure Vision Skin modifizieren. Ich habe mich aus diversen Gründen für letzteres entschieden. Zum einen wird PVHD stetig aktualisiert. Zum anderen kann man (da vom gleichen Skinner) problemlos auch Dateien vom Default Wide nutzen, sollte es mal keine angepassten Skin Files für ein bestimmtes Plugin geben. Dank dem Skinfile Konverter von m3rcury ist es keinerlei Probem die unterschiedlichen Auflösungen zu kompensieren. Und zum Dritten braucht der Backdrop Skin deutlich mehr CPU Power, von der ich nicht wirklich im Überfluss habe...

    Ob das Ganze, wenn es mal fertig ist, überhaupt noch als Mod oder schon als neuer Skin zu betrachten ist, kann ich aktuell noch nicht abschätzen. Vorerst ist es mal ein modifizierter PureVision HD 5.5 Skin. Das Gute daran ist, das der Skin im Prinzip jederzeit voll einsetzbar ist. Was schon fertig ist, ist halt neu und was noch nicht fertig ist, ist eben noch der "normale" PVHD.

    Noch ein Wort zu den Farben. Ich habe mir fest vorgenommen, keinen blauen Skin zu machen. Da fast alle Skins (zumindest partiell) blau sind, langweilt mich das doch ein wenig. Auch bei PVHD ist vieles Blau (Knöpfe, Overlays, usw) Das wird nach und nach alles geändert. Als grobes Farbschema habe ich mich vorerst für Terracotta Farbtöne entschieden. Mal sehen, wie das in letzter Konsequenz aussieht

    Soweit der Vorrede. Hier sind ein paar Screenshots von aktuellen Stand. Die Menus funktionieren alle und auch sonst ist der Basic Home fast fertig. Lediglich diverse Hintergründe die passend zu den Menus bzw Menu- Punkten angezeigt werden, sind noch nicht fertig bzw vorhanden.

    TV Series, Moving Pictures und Musik wechseln die jeweilige Fanart im Hintergrund automatisch, soweit ist das ganz normal.
    Screen-1_1.jpg


    Screen-2_1.jpg


    Screen-3_1.jpg


    Bei "Bilder" habe ich per Multishortcut XBMC mit eingebaut, da ich zum Bilder gucken eigentlich nie MP nutze. Dafür ist das MyPictures Plugin einfach zu schlecht. Weniger "mächtige" Bildanzeige- Programme, die sich ebenfalls per FB steuern lassen, sind mir nicht bekannt.
    Screen-4_1.jpg


    Sonst werden im Bilder Menu diverse selbst fotografierte Bilder als Backdrop genutzt.
    Screen-5_1.jpg


    Bei Wetter wird eine Auswahl an schönen Wetter Bildern aus dem Netz als Hintergrund genutzt.
    Screen-6_1.jpg


    Ein paar kleine Erklärungen noch. Oben links über dem "Rec" Knopf wird die freie Speicherkapazität (für HD Aufnahmen) mit Hilfe des Plugins DriveFreeSpace angezeigt. Oben rechts unter dem "Kurz- Wetter" wird mir angezeigt, ob meine anderen Rechner ein- oder ausgeschaltet sind. Das erledigt das Plugin WOLPowerManager.

    Ich würde die Grafiken und XML Dateien ja gerne zum Download anbieten. Doch sind die Menus ganz individuell auf meine Bedürfnisse angepasst, so das ohne aufwändige Modifikationen wohl sonst niemand etwas damit anfangen kann...
     

    Lehmden

    Retired Team Member
  • Premium Supporter
  • December 17, 2010
    12,562
    3,944
    Lehmden
    Home Country
    Germany Germany
    Hi.
    Nicht das ihr meint, es würde nicht weiter gehen...
    Inzwischen ist die TV Hauptseite fertig. Außerdem kommt nächste Woche ein neuer LatestMediaHandler raus. Die neuen Features werden sofort eingebaut. Außerdem habe ich mich entschieden, wenn erst mal ein paar mehr Seiten fertig sind, die Mod doch als "eigenen" Skin zu veröffentlichen, ähnlich wie mit Avalon und Avalonis. Ein Grundkonzept für einen Basic Home Editor habe ich auch schon. Ohne den würde es nicht viel Sinn machen, den Skin zu veröffentlichen. Ein gescheiter Name fehlt mir noch, vielleicht so was wie "PureBackdrop" oder "BackVision"...
    Screen-11.jpg
     

    Lehmden

    Retired Team Member
  • Premium Supporter
  • December 17, 2010
    12,562
    3,944
    Lehmden
    Home Country
    Germany Germany
    Hi.
    ...Dein Grundkonzept für den BasicHome Editor würde mich auch interessieren ;)
    Mit ein wenig Umgestaltung des Basic Home und ein paar Anpassungen wird sich der Editor wohl auch für den "normalen" PureVision gebrauchen lassen. Wichtig ist vorher aber vor allem, das jede User- spezifische Definition in einer einzigen Datei stattfindet. Das wird sonst zu komplex... Alle Label, Header, Pfade, usw müssen in die jeweiligen BasicHomeButtons2xx.xml verlagert werden. Das sollte sich über Defines machen lasse, da afaik alle Defines, auch die aus importierten XML zuerst abgearbeitet werden. Es ist nur übliche Praxis, aber nicht notwendig, diese Defines ganz zu Anfang zu erledigen. Die Pfade zu den Hintergründen, die Header usw stehen alle in der entsprechenden BasicHomeButtons2xx.xml, so das im eigentlichen Basic Home kaum noch "konstante" Werte verwendet werden. Dann kann man mit einer einzigen Datei das Menu komplett gestalten. Geschrieben wird der Editor als eigenständige .exe in AutoIT, da ich nichts anderes kann... Müsste ich den Editor als Media Portal Plugin schreiben, bräuchte ich vermutlich ein paar Jahre dafür, weil ich kein C# kann und das irgendwie auch nicht kapiere.

    Ich muss nächste Woche für den neuen Latest Media Handler sowieso einige Änderungen an meinem Basic Home vornehmen, dann werde ich das gleich mit ausprobieren.
     

    Lehmden

    Retired Team Member
  • Premium Supporter
  • December 17, 2010
    12,562
    3,944
    Lehmden
    Home Country
    Germany Germany
    Hi.
    Ich bin heute einen Riesenschritt weiter gekommen auf dem Weg zum Editor. Ich hab ein (und damit im Prinzip jedes) Menu komplett auf Variablen umstellen können. Jetzt muss nur noch am Anfang vom BasicHome eine Datei importiert werden, die alle Variablen beinhaltet. Diese Datei steuert dann das Menu vollständig. Einzig mit den LatestMedia Geschichten muss ich mich noch weiter auseinander setzen. Dazu warte ich aber auf die neue Version...
    Die Variablen Datei sieht so aus:
    Code:
    <?xml version="1.0" encoding="utf-8" standalone="yes"?>
    <window>
     
    <!-- here are the variables for the main menu button 0  -->
      <define>#menu0.back:Animations\BasicHome\mytv.jpg</define>
      <define>#menu0.label:Fernsehen</define>
      <define>#menu0.buttonlabel:Fernsehen</define>
      <define>#menu0.link:1</define>
      <define>#menu0.onup:202</define>
      <define>#menu0.posy:811</define>
     
    <!-- here are the variables that switch visibility of menu 0 buttons  -->
      <define property="true">#menu0.but1:no</define>
      <define property="true">#menu0.but2:yes</define>
      <define property="true">#menu0.but3:yes</define>
      <define property="true">#menu0.but4:yes</define>
      <define property="true">#menu0.but5:yes</define>
      <define property="true">#menu0.but6:no</define>
      <define property="true">#menu0.but7:no</define>
      <define property="true">#menu0.but8:no</define>
     
    <!-- here are the variables for the menu 0 buttons  -->
      <define property="true">#menu0.but1label:Fernsehen</define>
      <define property="true">#menu0.but1link:1</define>
      <define property="true">#menu0.but1linkpar:</define>
      <define property="true">#menu0.but1back:</define>
      <define property="true">#menu0.but2label:TV-Programm</define>
      <define property="true">#menu0.but2link:600</define>
      <define property="true">#menu0.but2linkpar:</define>
      <define property="true">#menu0.but2back:Animations\BasicHome\epg.jpg</define>
      <define property="true">#menu0.but3label:Aufnahmen</define>
      <define property="true">#menu0.but3link:603</define>
      <define property="true">#menu0.but3linkpar:</define>
      <define property="true">#menu0.but3back:C:\ProgramData\Team MediaPortal\MediaPortal\thumbs\Fan Art\fanart\original</define>
      <define property="true">#menu0.but4label:Geplant</define>
      <define property="true">#menu0.but4link:601</define>
      <define property="true">#menu0.but4linkpar:</define>
      <define property="true">#menu0.but4back:C:\ProgramData\Team MediaPortal\MediaPortal\thumbs\Fan Art\fanart\original</define>
      <define property="true">#menu0.but5label:Suche</define>
      <define property="true">#menu0.but5link:604</define>
      <define property="true">#menu0.but5linkpar:</define>
      <define property="true">#menu0.but5back:C:\ProgramData\Team MediaPortal\MediaPortal\thumbs\Fan Art\fanart\original</define>
      <define property="true">#menu0.but6label:</define>
      <define property="true">#menu0.but6link:</define>
      <define property="true">#menu0.but6linkpar:</define>
      <define property="true">#menu0.but6back:</define>
      <define property="true">#menu0.but7label:</define>
      <define property="true">#menu0.but7link:</define>
      <define property="true">#menu0.but7linkpar:</define>
      <define property="true">#menu0.but7back:</define>
      <define property="true">#menu0.but8label:</define>
      <define property="true">#menu0.but8link:</define>
      <define property="true">#menu0.but8linkpar:</define>
      <define property="true">#menu0.but8back:</define>
    </window>

    und die dazu gehörende Menu- Datei so:
    Code:
    <?xml version="1.0" encoding="utf-8" standalone="yes"?>
    <window>
     
      <controls>
    	<!--	*******************************************************************************************  -->
    	<!--	******************************  BUTTONS Menu 0 SECTION  ***********************************  -->
    	<!--	*******************************************************************************************  -->
    	<control Style="BasicHomeSubButton">
    	  <description>TV button image</description>
    	  <type>button</type>
    	  <id>209</id>
    	  <posX>42</posX>
    	  <posY>1015</posY>
    	  <font>font12</font>
    	  <textXOff>0</textXOff>
    	  <textYOff>0</textYOff>
    	  <textcolor>white</textcolor>
    	  <textcolorNoFocus>ffffffff</textcolorNoFocus>
    	  <width>230</width>
    	  <textalign>center</textalign>
    	  <label></label>
    	  <hyperlink>1</hyperlink>
    	  <visible>control.hasFocus(2)|control.isVisible(209)+[!control.isVisible(219)+!control.isVisible(229)+!control.isVisible(239)+!control.isVisible(249)+!control.isVisible(259)+!control.isVisible(269)+!control.isVisible(279)+!control.isVisible(289)]</visible>
    	</control>
     
    	<control>
    	  <type>group</type>
    	  <description>group element</description>
     
    	  <layout>StackLayout(0, Vertical, true)</layout>
    	  <posX>40</posX>
    	  <posY>#menu0.posy</posY>
    	  <visible>control.isVisible(209)</visible>
    	  <animation effect="slide" start="-100,0" time="100" condition="!control.isVisible(219)" reversible="false">visible</animation>
    	  <animation effect="slide" start="100,0" time="100" condition="control.isVisible(219)" reversible="false">visible</animation>
     
    	  <control>
    		<description>Dummy button</description>
    		<type>button</type>
    		<id>0</id>
    		<font>font11</font>
    			<textureFocus>sub-button-top.png</textureFocus>
    			<textureNoFocus>sub-button-top.png</textureNoFocus>	 
    		<label> </label>
    		<width>230</width>
    		<height>10</height>
    	  </control>
     
    	  <control Style="BasicHomeSubButton">
    		<description>Search normal push button</description>
    		<type>button</type>
    		<id>208</id>
    		<font>font11</font>
    			<textureFocus>sub-button.png</textureFocus>
    			<textureNoFocus>sub-button.png</textureNoFocus>	 
    		<label>#menu0.but8label</label>
    		<width>230</width>
    		<height>40</height>
    		<hyperlink>#menu0.but8link</hyperlink>
    			  <hyperlinkParameter>#menu0.but8linkpar</hyperlinkParameter>	
    		<onup>201</onup>
    		<ondown>207</ondown>
    		<onleft>260</onleft>
    		<onright>210</onright>
    				<visible>string.equals(#menu0.but8,yes)</visible>
    	  </control>
    	  <control Style="BasicHomeSubButton">
    		<description>Search normal push button</description>
    		<type>button</type>
    		<id>207</id>
    		<font>font11</font>
    			<textureFocus>sub-button.png</textureFocus>
    			<textureNoFocus>sub-button.png</textureNoFocus>	 
    		<label>#menu0.but5label</label>
    		<width>230</width>
    		<height>40</height>
    		<hyperlink>#menu0.but7link</hyperlink>
    			  <hyperlinkParameter>#menu0.but7linkpar</hyperlinkParameter>	
    		<onup>208</onup>
    		<ondown>206</ondown>
    		<onleft>260</onleft>
    		<onright>210</onright>
    				<visible>string.equals(#menu0.but7,yes)</visible>
    	  </control>
    	  <control Style="BasicHomeSubButton">
    		<description>Search normal push button</description>
    		<type>button</type>
    		<id>206</id>
    		<font>font11</font>
    			<textureFocus>sub-button.png</textureFocus>
    			<textureNoFocus>sub-button.png</textureNoFocus>	 
    		<label>#menu0.but6label</label>
    		<width>230</width>
    		<height>40</height>
    		<hyperlink>#menu0.but6link</hyperlink>
    			  <hyperlinkParameter>#menu0.but6linkpar</hyperlinkParameter>	
    		<onup>207</onup>
    		<ondown>205</ondown>
    		<onleft>260</onleft>
    		<onright>210</onright>
    				<visible>string.equals(#menu0.but6,yes)</visible>
    	  </control>
    	  <control Style="BasicHomeSubButton">
    		<description>Search normal push button</description>
    		<type>button</type>
    		<id>205</id>
    		<font>font11</font>
    			<textureFocus>sub-button.png</textureFocus>
    			<textureNoFocus>sub-button.png</textureNoFocus>	 
    		<label>#menu0.but5label</label>
    		<width>230</width>
    		<height>40</height>
    		<hyperlink>#menu0.but5link</hyperlink>
    			  <hyperlinkParameter>#menu0.but5linkpar</hyperlinkParameter>	
    		<onup>206</onup>
    		<ondown>204</ondown>
    		<onleft>260</onleft>
    		<onright>210</onright>
    				<visible>string.equals(#menu0.but5,yes)</visible>
    	  </control>
    	  <control Style="BasicHomeSubButton">
    		<description>Timer normal push button</description>
    		<type>button</type>
    		<id>204</id>
    		<width>230</width>
    		<height>40</height>
    		<font>font11</font>
    			<textureFocus>sub-button.png</textureFocus>
    			<textureNoFocus>sub-button.png</textureNoFocus>	 
    		<label>#menu0.but4label</label>
    		<hyperlink>#menu0.but4link</hyperlink>
    			  <hyperlinkParameter>#menu0.but4linkpar</hyperlinkParameter>	
    		<onup>205</onup>
    		<ondown>203</ondown>
    		<onleft>260</onleft>
    		<onright>210</onright>
    				<visible>string.equals(#menu0.but4,yes)</visible>
    	  </control>
    	  <control Style="BasicHomeSubButton">
    		<description>Recordings normal push button</description>
    		<type>button</type>
    		<id>203</id>
    		<font>font11</font>
    			<textureFocus>sub-button.png</textureFocus>
    			<textureNoFocus>sub-button.png</textureNoFocus>	 
    		<label>#menu0.but3label</label>
    		<width>230</width>
    		<height>40</height>
    		<hyperlink>#menu0.but3link</hyperlink>
    			  <hyperlinkParameter>#menu0.but3linkpar</hyperlinkParameter>	
    		<onleft>260</onleft>
    		<onright>210</onright>
    		<onup>204</onup>
    		<ondown>202</ondown>
    				<visible>string.equals(#menu0.but3,yes)</visible>
    	  </control>
    	<control Style="BasicHomeSubButton">
    		<description>EPG normal push button</description>
    		<type>button</type>
    		<id>202</id>
    		<font>font11</font>
    			<textureFocus>sub-button.png</textureFocus>
    			<textureNoFocus>sub-button.png</textureNoFocus>	 
    		<label>#menu0.but2label</label>
    		<width>230</width>
    		<height>40</height>
    		<hyperlink>#menu0.but2link</hyperlink>
    			  <hyperlinkParameter>#menu0.but2linkpar</hyperlinkParameter>	
    		<onup>203</onup>
    		<ondown>201</ondown>
    		<onleft>260</onleft>
    		<onright>210</onright>
    				<visible>string.equals(#menu0.but2,yes)</visible>
    	</control>
     
    	<control Style="BasicHomeSubButton">
    		<description>EPG normal push button</description>
    		<type>button</type>
    		<id>201</id>
    		<font>font11</font>
    			<textureFocus>sub-button.png</textureFocus>
    			<textureNoFocus>sub-button.png</textureNoFocus>	 
    		<label>#menu0.but1label</label>
    		<width>230</width>
    		<height>40</height>
    		<hyperlink>#menu0.but1link</hyperlink>
    			  <hyperlinkParameter>#menu0.but1linkpar</hyperlinkParameter>	
    		<onup>202</onup>
    		<ondown>2</ondown>
    		<onleft>260</onleft>
    		<onright>210</onright>
    				<visible>string.equals(#menu0.but1,yes)</visible>
    	</control>
     
    	  <control>
    		<description>Dummy button</description>
    		<type>button</type>
    		<id>208888888</id>
    		<font>font11</font>
    			<textureFocus>sub-button.png</textureFocus>
    			<textureNoFocus>sub-button.png</textureNoFocus>	 
    		<label> </label>
    		<width>230</width>
    		<height>10</height>
    		<hyperlink>35</hyperlink>
    		<onup>17</onup>
    		<ondown>205</ondown>
    	  </control>	
      </control>
      </controls>
    </window>
    Die Variablendatei, die ausschließlich "Define" tags beihaltet kann recht leicht mit einem externem Programm beabeitet werden, also auch mit einem eigenen BasicHome Editor... Hier ein "Live" Bild von dem so definierten Menu...
    Screen-12.jpg
     
    Last edited:

    catavolt

    Design Group Manager
  • Team MediaPortal
  • August 13, 2007
    14,592
    10,578
    Königstein (Taunus)
    Home Country
    Germany Germany
    Das sieht nach der ersten Durchsicht schon sehr gut aus.
    So etwas Ähnliches hatte ich auch schon vorbereitet.
    Dazu fehlt dann aber die eigentliche Editor.exe, mit der man die defines auslesen und neu schreiben kann ;)
     

    Lehmden

    Retired Team Member
  • Premium Supporter
  • December 17, 2010
    12,562
    3,944
    Lehmden
    Home Country
    Germany Germany
    Hi.
    Dazu fehlt dann aber die eigentliche Editor.exe, mit der man die defines auslesen und neu schreiben kann
    Für so eine eher schlichte Datei lässt sich ein Editor in AutoIT mit ein paar Mausklicks und etwas Tippen schnell regeln. Darum mache ich mir keine Sorgen. Die Skin Engine von MP ist da schon weit schwieriger zu zähmen.... Es fehlen oft die einfachsten Sachen, so was wie for to Schleifen. Dazu das teilweise sehr löcherige Wiki... Im Wiki steht z.B. das Defines, egal wo sie stehen, immer zuerst abgearbeitet werden. Das stimmt leider nicht, denn es werden nur defines zuerst abgearbeitet, die in der eigentlichen Datei stehen. Defines aus importierten Dateien werden erst abgearbeitet, wenn die Skin Engine beim abarbeiten der XML- Datei zum Import- Tag kommt.... Bis ich das raus hatte, hat es echt gedauert, denn eigentlich wollte ich die defines in den BasicHomeButtons2xx.xml unter bringen. Aber das führt nur zu unregelmäßigen Total- Abstürzen von MP...
     

    catavolt

    Design Group Manager
  • Team MediaPortal
  • August 13, 2007
    14,592
    10,578
    Königstein (Taunus)
    Home Country
    Germany Germany
    Bei <import> ist ausserdem zu beachten, dass eine über <import> importierte XML keine weiteren <import>s zuläßt, also in 1.xml steht <import>2.xml</import>, und in dieser 2.xml steht <import>3.xml</import>. Dies funktioniert nicht.
    Ausserdem habe ich schon oft erlebt, dass defines, die nicht vor dem <controls> tag stehen, nicht abgearbeitet werden.
    Da ist also noch eine Menge offen für skin engine devs....
     

    Users who are viewing this thread

    Top Bottom