You can subscribe to this list here.
2007 |
Jan
(36) |
Feb
(79) |
Mar
(123) |
Apr
(95) |
May
(119) |
Jun
(172) |
Jul
(124) |
Aug
(100) |
Sep
(83) |
Oct
(52) |
Nov
(97) |
Dec
(87) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2008 |
Jan
(131) |
Feb
(80) |
Mar
(163) |
Apr
(178) |
May
(73) |
Jun
(54) |
Jul
(106) |
Aug
(118) |
Sep
(50) |
Oct
(125) |
Nov
(100) |
Dec
(99) |
2009 |
Jan
(104) |
Feb
(99) |
Mar
(68) |
Apr
(81) |
May
(52) |
Jun
(87) |
Jul
(67) |
Aug
(33) |
Sep
(27) |
Oct
(37) |
Nov
(60) |
Dec
(116) |
2010 |
Jan
(82) |
Feb
(79) |
Mar
(38) |
Apr
(50) |
May
(45) |
Jun
(53) |
Jul
(23) |
Aug
(86) |
Sep
(22) |
Oct
(96) |
Nov
(97) |
Dec
(73) |
2011 |
Jan
(24) |
Feb
(45) |
Mar
(28) |
Apr
(31) |
May
(42) |
Jun
(25) |
Jul
|
Aug
(12) |
Sep
(28) |
Oct
(13) |
Nov
(43) |
Dec
(13) |
2012 |
Jan
(62) |
Feb
(28) |
Mar
(6) |
Apr
(16) |
May
(7) |
Jun
|
Jul
(16) |
Aug
(2) |
Sep
(1) |
Oct
(4) |
Nov
(1) |
Dec
(3) |
2013 |
Jan
(5) |
Feb
|
Mar
(34) |
Apr
(9) |
May
(6) |
Jun
(10) |
Jul
(32) |
Aug
(8) |
Sep
(11) |
Oct
(35) |
Nov
(24) |
Dec
(22) |
2014 |
Jan
(44) |
Feb
(9) |
Mar
(9) |
Apr
(15) |
May
(25) |
Jun
(34) |
Jul
(16) |
Aug
(11) |
Sep
(7) |
Oct
(6) |
Nov
(1) |
Dec
(12) |
2015 |
Jan
(33) |
Feb
(19) |
Mar
|
Apr
|
May
(1) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2019 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
(1) |
Jul
(2) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2023 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(1) |
Jun
|
Jul
|
Aug
(1) |
Sep
|
Oct
|
Nov
|
Dec
(5) |
From: <fr...@us...> - 2007-09-22 06:57:01
|
Revision: 948 http://mp-plugins.svn.sourceforge.net/mp-plugins/?rev=948&view=rev Author: framug Date: 2007-09-21 23:56:57 -0700 (Fri, 21 Sep 2007) Log Message: ----------- Added Paths: ----------- trunk/plugins/file explorer/Release/Skin/blue two/ trunk/plugins/file explorer/Release/Skin/blue two/FileExplorer_dialog.xml trunk/plugins/file explorer/Release/Skin/blue two/FileExplorer_main.xml trunk/plugins/file explorer/Release/Skin/blue two/FileExplorer_modulepreview.xml trunk/plugins/file explorer/Release/Skin/blue two/FileExplorer_musicpreview.xml trunk/plugins/file explorer/Release/Skin/blue two/FileExplorer_textpreview.xml Added: trunk/plugins/file explorer/Release/Skin/blue two/FileExplorer_dialog.xml =================================================================== --- trunk/plugins/file explorer/Release/Skin/blue two/FileExplorer_dialog.xml (rev 0) +++ trunk/plugins/file explorer/Release/Skin/blue two/FileExplorer_dialog.xml 2007-09-22 06:56:57 UTC (rev 948) @@ -0,0 +1,46 @@ +<window> + <id>557316</id> + <defaultcontrol>10</defaultcontrol> + <allowoverlay>no</allowoverlay> + <controls> + <control> + <type>image</type> + <id>0</id> + <posX>177</posX> + <posY>225</posY> + <width>409</width> + <height>202</height> + <texture>dialog_background.png</texture> + </control> + <control> + <description>dialog Heading</description> + <type>label</type> + <id>2</id> + <posX>190</posX> + <posY>230</posY> + <label>0</label> + <font>font13</font> + <textcolor>ffffffff</textcolor> + </control> + <control> + <description>dialog line 1</description> + <type>label</type> + <id>3</id> + <posX>190</posX> + <posY>260</posY> + <label>0</label> + <font>font13</font> + <textcolor>ffffffff</textcolor> + </control> + <control> + <description>dialog line 2</description> + <type>label</type> + <id>4</id> + <posX>190</posX> + <posY>280</posY> + <label>0</label> + <font>font13</font> + <textcolor>ffffffff</textcolor> + </control> + </controls> +</window> Added: trunk/plugins/file explorer/Release/Skin/blue two/FileExplorer_main.xml =================================================================== --- trunk/plugins/file explorer/Release/Skin/blue two/FileExplorer_main.xml (rev 0) +++ trunk/plugins/file explorer/Release/Skin/blue two/FileExplorer_main.xml 2007-09-22 06:56:57 UTC (rev 948) @@ -0,0 +1,112 @@ +<window> + <id>557311</id> + <defaultcontrol>1</defaultcontrol> + <allowoverlay>no</allowoverlay> + <controls> + <control> + <description>BackGround</description> + <type>image</type> + <id>5</id> + <posX>0</posX> + <posY>0</posY> + <width>720</width> + <height>576</height> + <texture>background.png</texture> + </control> + <control> + <description>Menu left</description> + <type>button</type> + <id>1</id> + <posX>1</posX> + <posY>1</posY> + <label>Menu left</label> + <onleft>1</onleft> + <onright>2</onright> + <onup>1</onup> + <ondown>3</ondown> + </control> + <control> + <description>Menu right</description> + <type>button</type> + <id>2</id> + <posX>352</posX> + <posY>1</posY> + <label>Menu right</label> + <onleft>1</onleft> + <onright>2</onright> + <onup>2</onup> + <ondown>4</ondown> + </control> + <control> + <description>file listcontrol</description> + <type>listcontrol</type> + <id>3</id> + <posX>1</posX> + <posY>55</posY> + <height>500</height> + <width>350</width> + <onright>4</onright> + <onleft>1</onleft> + <onup>3</onup> + <ondown>3</ondown> + <spinPosX>240</spinPosX> + </control> + <control> + <description>file listcontrol</description> + <type>listcontrol</type> + <id>4</id> + <posX>352</posX> + <posY>55</posY> + <height>500</height> + <width>350</width> + <onright>2</onright> + <onleft>3</onleft> + <onup>4</onup> + <ondown>4</ondown> + </control> + <control> + <description>label left</description> + <type>label</type> + <id>6</id> + <posX>1</posX> + <posY>500</posY> + <label>Test</label> + <font>font10</font> + <align>left</align> + <textcolor>White</textcolor> + </control> + <control> + <description>label right</description> + <type>label</type> + <id>7</id> + <posX>352</posX> + <posY>500</posY> + <label>Test</label> + <font>font10</font> + <align>left</align> + <textcolor>White</textcolor> + </control> + <control> + <description>labeldir left</description> + <type>label</type> + <id>9</id> + <posX>1</posX> + <posY>35</posY> + <label>Test</label> + <font>font10</font> + <align>left</align> + <textcolor>White</textcolor> + </control> + <control> + <description>labeldir right</description> + <type>label</type> + <id>10</id> + <posX>352</posX> + <posY>36</posY> + <label>Test</label> + <font>font10</font> + <align>left</align> + <textcolor>White</textcolor> + </control> + </controls> +</window> Added: trunk/plugins/file explorer/Release/Skin/blue two/FileExplorer_modulepreview.xml =================================================================== --- trunk/plugins/file explorer/Release/Skin/blue two/FileExplorer_modulepreview.xml (rev 0) +++ trunk/plugins/file explorer/Release/Skin/blue two/FileExplorer_modulepreview.xml 2007-09-22 06:56:57 UTC (rev 948) @@ -0,0 +1,64 @@ +<window> + <id>557313</id> + <defaultcontrol>10</defaultcontrol> + <allowoverlay>no</allowoverlay> + <controls> + <control> + <type>image</type> + <id>0</id> + <posX>177</posX> + <posY>225</posY> + <width>409</width> + <height>202</height> + <texture>dialog_background.png</texture> + </control> + <control> + <description>dialog Heading</description> + <type>label</type> + <id>2</id> + <posX>190</posX> + <posY>230</posY> + <label></label> + <font>font13</font> + <textcolor>ffffffff</textcolor> + </control> + <control> + <description>dialog line 1</description> + <type>label</type> + <id>3</id> + <posX>190</posX> + <posY>260</posY> + <label></label> + <font>font13</font> + <textcolor>ffffffff</textcolor> + </control> + <control> + <description>dialog line 2</description> + <type>label</type> + <id>4</id> + <posX>190</posX> + <posY>280</posY> + <label></label> + <font>font13</font> + <textcolor>ffffffff</textcolor> + </control> + <control> + <description>OK button</description> + <type>button</type> + <id>10</id> + <posX>435</posX> + <posY>355</posY> + <textXOff>10</textXOff> + <textYOff>7</textYOff> + <width>105</width> + <height>38</height> + <textureFocus>small_button_focus.png</textureFocus> + <textureNoFocus>small_button_nofocus.png</textureNoFocus> + <label>186</label> + <onleft>10</onleft> + <onright>10</onright> + <onup>10</onup> + <ondown>10</ondown> + </control> + </controls> +</window> Added: trunk/plugins/file explorer/Release/Skin/blue two/FileExplorer_musicpreview.xml =================================================================== --- trunk/plugins/file explorer/Release/Skin/blue two/FileExplorer_musicpreview.xml (rev 0) +++ trunk/plugins/file explorer/Release/Skin/blue two/FileExplorer_musicpreview.xml 2007-09-22 06:56:57 UTC (rev 948) @@ -0,0 +1,64 @@ +<window> + <id>557314</id> + <defaultcontrol>10</defaultcontrol> + <allowoverlay>no</allowoverlay> + <controls> + <control> + <type>image</type> + <id>0</id> + <posX>177</posX> + <posY>225</posY> + <width>409</width> + <height>202</height> + <texture>dialog_background.png</texture> + </control> + <control> + <description>dialog Heading</description> + <type>label</type> + <id>2</id> + <posX>190</posX> + <posY>230</posY> + <label></label> + <font>font13</font> + <textcolor>ffffffff</textcolor> + </control> + <control> + <description>dialog line 1</description> + <type>label</type> + <id>3</id> + <posX>190</posX> + <posY>260</posY> + <label></label> + <font>font13</font> + <textcolor>ffffffff</textcolor> + </control> + <control> + <description>dialog line 2</description> + <type>label</type> + <id>4</id> + <posX>190</posX> + <posY>280</posY> + <label></label> + <font>font13</font> + <textcolor>ffffffff</textcolor> + </control> + <control> + <description>OK button</description> + <type>button</type> + <id>10</id> + <posX>435</posX> + <posY>355</posY> + <textXOff>10</textXOff> + <textYOff>7</textYOff> + <width>105</width> + <height>38</height> + <textureFocus>small_button_focus.png</textureFocus> + <textureNoFocus>small_button_nofocus.png</textureNoFocus> + <label>186</label> + <onleft>10</onleft> + <onright>10</onright> + <onup>10</onup> + <ondown>10</ondown> + </control> + </controls> +</window> Added: trunk/plugins/file explorer/Release/Skin/blue two/FileExplorer_textpreview.xml =================================================================== --- trunk/plugins/file explorer/Release/Skin/blue two/FileExplorer_textpreview.xml (rev 0) +++ trunk/plugins/file explorer/Release/Skin/blue two/FileExplorer_textpreview.xml 2007-09-22 06:56:57 UTC (rev 948) @@ -0,0 +1,29 @@ +<window> + <id>557312</id> + <defaultcontrol>2</defaultcontrol> + <allowoverlay>no</allowoverlay> + <controls> + <control> + <description>BackGround</description> + <type>image</type> + <id>1</id> + <posX>0</posX> + <posY>0</posY> + <width>720</width> + <height>576</height> + <texture>background.png</texture> + </control> + <control> + <type>textbox</type> + <id>2</id> + <posX>1</posX> + <posY>1</posY> + <width>700</width> + <height>576</height> + <font>font12</font> + <textcolor>White</textcolor> + <spinPosX>640</spinPosX> + <spinPosY>560</spinPosY> + </control> + </controls> +</window> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fr...@us...> - 2007-09-22 06:45:53
|
Revision: 947 http://mp-plugins.svn.sourceforge.net/mp-plugins/?rev=947&view=rev Author: framug Date: 2007-09-21 23:45:50 -0700 (Fri, 21 Sep 2007) Log Message: ----------- unnecessary folder Removed Paths: ------------- trunk/plugins/file explorer/Release/Skin/BlueTwo/ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mis...@us...> - 2007-09-21 21:36:45
|
Revision: 946 http://mp-plugins.svn.sourceforge.net/mp-plugins/?rev=946&view=rev Author: misterd_sf Date: 2007-09-21 14:36:43 -0700 (Fri, 21 Sep 2007) Log Message: ----------- Step 2 of Mplayer 0.8: - Added MPI script - Minor layout changes in external player configuration panels - Completed initial ConfigurationWizard - Fixed ExternalPlayer - ISetupForm wasn't recognized by MP Modified Paths: -------------- trunk/plugins/My MPlayer/MPlayer_ExtPlayer/ConfigurationForm.cs trunk/plugins/My MPlayer/MPlayer_ExtPlayer/ConfigurationManager.cs trunk/plugins/My MPlayer/MPlayer_ExtPlayer/ConfigurationPanel/AudioSection.Designer.cs trunk/plugins/My MPlayer/MPlayer_ExtPlayer/ConfigurationPanel/AudioSection.resx trunk/plugins/My MPlayer/MPlayer_ExtPlayer/ConfigurationPanel/GeneralSection.resx trunk/plugins/My MPlayer/MPlayer_ExtPlayer/ConfigurationPanel/SubtitleSection.Designer.cs trunk/plugins/My MPlayer/MPlayer_ExtPlayer/ConfigurationPanel/SubtitleSection.resx trunk/plugins/My MPlayer/MPlayer_ExtPlayer/ConfigurationPanel/VideoSection.cs trunk/plugins/My MPlayer/MPlayer_ExtPlayer/MPlayer_ExtPlayer.cs trunk/plugins/My MPlayer/MPlayer_Installer/ConfigurationWizard.Designer.cs trunk/plugins/My MPlayer/MPlayer_Installer/ConfigurationWizard.cs trunk/plugins/My MPlayer/MPlayer_Installer/Installer.cs Added Paths: ----------- trunk/plugins/My MPlayer/My MPlayer.xmp Modified: trunk/plugins/My MPlayer/MPlayer_ExtPlayer/ConfigurationForm.cs =================================================================== --- trunk/plugins/My MPlayer/MPlayer_ExtPlayer/ConfigurationForm.cs 2007-09-21 21:07:49 UTC (rev 945) +++ trunk/plugins/My MPlayer/MPlayer_ExtPlayer/ConfigurationForm.cs 2007-09-21 21:36:43 UTC (rev 946) @@ -91,7 +91,7 @@ subtitleSection1.LoadConfiguration(); audioSection1.LoadConfiguration(); extensionSection1.LoadConfiguration(); - streamSection1.SaveConfiguration(); + streamSection1.LoadConfiguration(); } /// <summary> Modified: trunk/plugins/My MPlayer/MPlayer_ExtPlayer/ConfigurationManager.cs =================================================================== --- trunk/plugins/My MPlayer/MPlayer_ExtPlayer/ConfigurationManager.cs 2007-09-21 21:07:49 UTC (rev 945) +++ trunk/plugins/My MPlayer/MPlayer_ExtPlayer/ConfigurationManager.cs 2007-09-21 21:36:43 UTC (rev 946) @@ -1,1949 +1,974 @@ -\xFF\xFE# |
From: <rs...@us...> - 2007-09-21 21:07:50
|
Revision: 945 http://mp-plugins.svn.sourceforge.net/mp-plugins/?rev=945&view=rev Author: rsparey Date: 2007-09-21 14:07:49 -0700 (Fri, 21 Sep 2007) Log Message: ----------- modifying skin layout Modified Paths: -------------- trunk/skins/Foofaraw/Development Skin/Foofaraw/BasicHome.xml trunk/skins/Foofaraw/Development Skin/Foofaraw/DialogPictureInfo.xml trunk/skins/Foofaraw/Development Skin/Foofaraw/Media/Tetris/Thumbs.db trunk/skins/Foofaraw/Development Skin/Foofaraw/Media/background.png trunk/skins/Foofaraw/Development Skin/Foofaraw/TVSeries.xml trunk/skins/Foofaraw/Development Skin/Foofaraw/common.MS.xml trunk/skins/Foofaraw/Development Skin/Foofaraw/common.window.xml trunk/skins/Foofaraw/Development Skin/Foofaraw/common.xml trunk/skins/Foofaraw/Development Skin/Foofaraw/myHome.xml trunk/skins/Foofaraw/Development Skin/Foofaraw/myHomePlugIns.xml trunk/skins/Foofaraw/Development Skin/Foofaraw/mymusicgenres.xml trunk/skins/Foofaraw/Development Skin/Foofaraw/mymusicplaylist.xml trunk/skins/Foofaraw/Development Skin/Foofaraw/mymusicsongs.xml trunk/skins/Foofaraw/Development Skin/Foofaraw/mypics.xml trunk/skins/Foofaraw/Development Skin/Foofaraw/myplugins.xml trunk/skins/Foofaraw/Development Skin/Foofaraw/myradio.xml trunk/skins/Foofaraw/Development Skin/Foofaraw/myradioguide.xml trunk/skins/Foofaraw/Development Skin/Foofaraw/mytvguide.xml trunk/skins/Foofaraw/Development Skin/Foofaraw/mytvhome.xml trunk/skins/Foofaraw/Development Skin/Foofaraw/mytvhomeServer.xml trunk/skins/Foofaraw/Development Skin/Foofaraw/mytvrecordedtv.xml trunk/skins/Foofaraw/Development Skin/Foofaraw/mytvrecordedtvchannel.xml trunk/skins/Foofaraw/Development Skin/Foofaraw/mytvrecordedtvgenre.xml trunk/skins/Foofaraw/Development Skin/Foofaraw/mytvsearch.xml trunk/skins/Foofaraw/Development Skin/Foofaraw/myvideo.xml trunk/skins/Foofaraw/Development Skin/Foofaraw/myvideoTitle.xml Modified: trunk/skins/Foofaraw/Development Skin/Foofaraw/BasicHome.xml =================================================================== --- trunk/skins/Foofaraw/Development Skin/Foofaraw/BasicHome.xml 2007-09-21 13:12:32 UTC (rev 944) +++ trunk/skins/Foofaraw/Development Skin/Foofaraw/BasicHome.xml 2007-09-21 21:07:49 UTC (rev 945) @@ -45,31 +45,21 @@ <type>image</type> <decription>mid_strip</decription> <id>1</id> - <posX>-12</posX> - <posY>186</posY> - <width>1390</width> - <height>365</height> - <texture>mid_strip.png</texture> + <posX>12</posX> + <posY>136</posY> + <width>1342</width> + <height>420</height> + <texture>mid_strip2.png</texture> </control> + <control> <type>image</type> - <decription>bottom_strip</decription> - <id>1</id> - <posX>-12</posX> - <posY>547</posY> - <width>1390</width> - <height>18</height> - <texture>bottom_strip.png</texture> - - </control> - <control> - <type>image</type> <decription>top-strip</decription> <id>1</id> - <posX>-12</posX> - <posY>155</posY> - <width>1390</width> + <posX>12</posX> + <posY>100</posY> + <width>1342</width> <height>36</height> <texture>top-strip.png</texture> @@ -108,7 +98,7 @@ <description>MY LAST FM</description> <type>button</type> <id>21</id> - <posY>155</posY> + <posY>100</posY> <posX>12</posX> <height>36</height> <width>209</width> @@ -138,7 +128,7 @@ <id>22</id> <animation effect="fade" time="400">WindowClose</animation> <animation effect="fade" time="400" delay="500">WindowOpen</animation> - <posY>155</posY> + <posY>100</posY> <posX>221</posX> <label>533</label> <hyperlink>762</hyperlink> @@ -201,7 +191,7 @@ <description>MY TV SERIES</description> <type>button</type> <id>31</id> - <posY>155</posY> + <posY>100</posY> <posX>12</posX> <height>36</height> <width>209</width> @@ -233,7 +223,7 @@ <id>32</id> <animation effect="fade" time="400">WindowClose</animation> <animation effect="fade" time="400" delay="500">WindowOpen</animation> - <posY>155</posY> + <posY>100</posY> <posX>221</posX> <label>5906</label> <hyperlink>5900</hyperlink> @@ -296,7 +286,7 @@ <description>Recorded TV</description> <type>button</type> <id>41</id> - <posY>155</posY> + <posY>100</posY> <posX>12</posX> <height>36</height> <width>209</width> @@ -328,7 +318,7 @@ <id>42</id> <animation effect="fade" time="400">WindowClose</animation> <animation effect="fade" time="400" delay="500">WindowOpen</animation> - <posY>155</posY> + <posY>100</posY> <posX>221</posX> <label>600</label> <hyperlink>600</hyperlink> @@ -360,7 +350,7 @@ <id>43</id> <animation effect="fade" time="400">WindowClose</animation> <animation effect="fade" time="400" delay="500">WindowOpen</animation> - <posY>155</posY> + <posY>100</posY> <posX>430</posX> <label>137</label> <hyperlink>604</hyperlink> @@ -445,7 +435,7 @@ <description>Playing Now</description> <type>button</type> <id>51</id> - <posY>155</posY> + <posY>100</posY> <posX>12</posX> <height>36</height> <width>209</width> @@ -477,7 +467,7 @@ <id>52</id> <animation effect="fade" time="400">WindowClose</animation> <animation effect="fade" time="400" delay="500">WindowOpen</animation> - <posY>155</posY> + <posY>100</posY> <posX>221</posX> <label>136</label> <hyperlink>500</hyperlink> Modified: trunk/skins/Foofaraw/Development Skin/Foofaraw/DialogPictureInfo.xml =================================================================== --- trunk/skins/Foofaraw/Development Skin/Foofaraw/DialogPictureInfo.xml 2007-09-21 13:12:32 UTC (rev 944) +++ trunk/skins/Foofaraw/Development Skin/Foofaraw/DialogPictureInfo.xml 2007-09-21 21:07:49 UTC (rev 945) @@ -42,7 +42,7 @@ <decription>top-strip</decription> <id>1</id> <posX>12</posX> - <posY>155</posY> + <posY>100</posY> <width>1342</width> <height>36</height> <texture>top-strip.png</texture> Modified: trunk/skins/Foofaraw/Development Skin/Foofaraw/Media/Tetris/Thumbs.db =================================================================== (Binary files differ) Modified: trunk/skins/Foofaraw/Development Skin/Foofaraw/Media/background.png =================================================================== (Binary files differ) Modified: trunk/skins/Foofaraw/Development Skin/Foofaraw/TVSeries.xml =================================================================== --- trunk/skins/Foofaraw/Development Skin/Foofaraw/TVSeries.xml 2007-09-21 13:12:32 UTC (rev 944) +++ trunk/skins/Foofaraw/Development Skin/Foofaraw/TVSeries.xml 2007-09-21 21:07:49 UTC (rev 945) @@ -524,7 +524,7 @@ <animation effect="zoom" start="70,70" end="100,100" center="640,360" time="400">WindowOpen</animation> <animation effect="zoom" start="100,100" end="130,130" center="640,360" time="400">WindowClose</animation> <posX>920</posX> - <posY>155</posY> + <posY>100</posY> <width>730</width> <height>50</height> <texture flipY="true" diffuse="Thumb_Mask.png">#TVSeries.Logos</texture> Modified: trunk/skins/Foofaraw/Development Skin/Foofaraw/common.MS.xml =================================================================== --- trunk/skins/Foofaraw/Development Skin/Foofaraw/common.MS.xml 2007-09-21 13:12:32 UTC (rev 944) +++ trunk/skins/Foofaraw/Development Skin/Foofaraw/common.MS.xml 2007-09-21 21:07:49 UTC (rev 945) @@ -27,9 +27,9 @@ <type>image</type> <decription>top-strip</decription> <id>1</id> - <posX>-12</posX> - <posY>155</posY> - <width>1390</width> + <posX>12</posX> + <posY>100</posY> + <width>1342</width> <height>36</height> <texture>top-strip.png</texture> Modified: trunk/skins/Foofaraw/Development Skin/Foofaraw/common.window.xml =================================================================== --- trunk/skins/Foofaraw/Development Skin/Foofaraw/common.window.xml 2007-09-21 13:12:32 UTC (rev 944) +++ trunk/skins/Foofaraw/Development Skin/Foofaraw/common.window.xml 2007-09-21 21:07:49 UTC (rev 945) @@ -14,7 +14,7 @@ <type>label</type> <id>1</id> <posX>1200</posX> - <posY>520</posY> + <posY>650</posY> <label>#itemcount</label> <align>right</align> <textcolor>White</textcolor> Modified: trunk/skins/Foofaraw/Development Skin/Foofaraw/common.xml =================================================================== --- trunk/skins/Foofaraw/Development Skin/Foofaraw/common.xml 2007-09-21 13:12:32 UTC (rev 944) +++ trunk/skins/Foofaraw/Development Skin/Foofaraw/common.xml 2007-09-21 21:07:49 UTC (rev 945) @@ -27,9 +27,9 @@ <type>image</type> <decription>top-strip</decription> <id>1</id> - <posX>-12</posX> - <posY>155</posY> - <width>1390</width> + <posX>12</posX> + <posY>100</posY> + <width>1342</width> <height>36</height> <texture>top-strip.png</texture> Modified: trunk/skins/Foofaraw/Development Skin/Foofaraw/myHome.xml =================================================================== --- trunk/skins/Foofaraw/Development Skin/Foofaraw/myHome.xml 2007-09-21 13:12:32 UTC (rev 944) +++ trunk/skins/Foofaraw/Development Skin/Foofaraw/myHome.xml 2007-09-21 21:07:49 UTC (rev 945) @@ -20,41 +20,8 @@ <animation effect="fade" time="500" delay="1000">WindowOpen</animation> <animation effect="fade" time="500">WindowClose</animation> </control> + <control> - <type>image</type> - <decription>mid_strip</decription> - <id>1</id> - <posX>-12</posX> - <posY>186</posY> - <width>1390</width> - <height>365</height> - <texture>mid_strip.png</texture> - <animation effect="zoom" start="100,100" end="100,115" center="12,186" time="1000" acceleration="-1">WindowOpen</animation> - <animation effect="zoom" start="100,115" end="100,100" center="12,186" time="1000" acceleration="-1">WindowClose</animation> - </control> - <control> - <type>image</type> - <decription>bottom_strip</decription> - <id>1</id> - <posX>-12</posX> - <posY>547</posY> - <width>1390</width> - <height>18</height> - <texture>bottom_strip.png</texture> - <animation effect="slide" time="1000" start="0,0" end="0,50" acceleration="-1">WindowOpen</animation> - <animation effect="slide" time="1000" start="0,50" end="0,0" acceleration="-1">WindowClose</animation> - </control> - <control> - <type>image</type> - <decription>top-strip</decription> - <id>1</id> - <posX>-12</posX> - <posY>155</posY> - <width>1390</width> - <height>36</height> - <texture>top-strip.png</texture> - </control> - <control> <description>shutdown button</description> <type>button</type> <animation effect="fade" time="1500">WindowOpen</animation> Modified: trunk/skins/Foofaraw/Development Skin/Foofaraw/myHomePlugIns.xml =================================================================== --- trunk/skins/Foofaraw/Development Skin/Foofaraw/myHomePlugIns.xml 2007-09-21 13:12:32 UTC (rev 944) +++ trunk/skins/Foofaraw/Development Skin/Foofaraw/myHomePlugIns.xml 2007-09-21 21:07:49 UTC (rev 945) @@ -107,7 +107,7 @@ <decription>top-strip</decription> <id>1</id> <posX>12</posX> - <posY>155</posY> + <posY>100</posY> <width>1342</width> <height>36</height> <texture>top-strip.png</texture> Modified: trunk/skins/Foofaraw/Development Skin/Foofaraw/mymusicgenres.xml =================================================================== --- trunk/skins/Foofaraw/Development Skin/Foofaraw/mymusicgenres.xml 2007-09-21 13:12:32 UTC (rev 944) +++ trunk/skins/Foofaraw/Development Skin/Foofaraw/mymusicgenres.xml 2007-09-21 21:07:49 UTC (rev 945) @@ -86,14 +86,13 @@ <height>18</height> <texture>bottom_strip.png</texture> - </control> - <control> + </control> <control> <type>image</type> <decription>top-strip</decription> <id>1</id> - <posX>-12</posX> - <posY>155</posY> - <width>1390</width> + <posX>12</posX> + <posY>100</posY> + <width>1342</width> <height>36</height> <texture>top-strip.png</texture> @@ -121,7 +120,7 @@ <id>2</id> <animation effect="fade" time="400">WindowClose</animation> <animation effect="fade" time="400">WindowOpen</animation> - <posY>155</posY> + <posY>100</posY> <posX>12</posX> <label>100</label> <font>font14</font> @@ -143,7 +142,7 @@ <id>3</id> <animation effect="fade" time="400">WindowClose</animation> <animation effect="fade" time="400">WindowOpen</animation> - <posY>155</posY> + <posY>100</posY> <posX>221</posX> <label>103</label> <font>font14</font> @@ -170,7 +169,7 @@ <id>6</id> <animation effect="fade" time="400">WindowClose</animation> <animation effect="fade" time="400">WindowOpen</animation> - <posY>155</posY> + <posY>100</posY> <posX>430</posX> <label>457</label> <font>font14</font> @@ -190,7 +189,7 @@ <id>7</id> <animation effect="fade" time="400">WindowClose</animation> <animation effect="fade" time="400">WindowOpen</animation> - <posY>155</posY> + <posY>100</posY> <posX>639</posX> <label>137</label> <font>font14</font> @@ -211,7 +210,7 @@ <animation effect="fade" time="400">WindowClose</animation> <animation effect="fade" time="400">WindowOpen</animation> - <posY>155</posY> + <posY>100</posY> <posX>848</posX> <label>890</label> <font>font14</font> @@ -232,7 +231,7 @@ <id>10</id> <animation effect="fade" time="400">WindowClose</animation> <animation effect="fade" time="400">WindowOpen</animation> - <posY>155</posY> + <posY>100</posY> <posX>1057</posX> <label>983</label> <font>font14</font> Modified: trunk/skins/Foofaraw/Development Skin/Foofaraw/mymusicplaylist.xml =================================================================== --- trunk/skins/Foofaraw/Development Skin/Foofaraw/mymusicplaylist.xml 2007-09-21 13:12:32 UTC (rev 944) +++ trunk/skins/Foofaraw/Development Skin/Foofaraw/mymusicplaylist.xml 2007-09-21 21:07:49 UTC (rev 945) @@ -80,14 +80,13 @@ <height>18</height> <texture>bottom_strip.png</texture> - </control> - <control> + </control> <control> <type>image</type> <decription>top-strip</decription> <id>1</id> - <posX>-12</posX> - <posY>155</posY> - <width>1390</width> + <posX>12</posX> + <posY>100</posY> + <width>1342</width> <height>36</height> <texture>top-strip.png</texture> @@ -112,7 +111,7 @@ <id>2</id> <animation effect="fade" time="400">WindowClose</animation> <animation effect="fade" time="400">WindowOpen</animation> - <posY>155</posY> + <posY>100</posY> <posX>12</posX> <label>100</label> <font>font14</font> @@ -133,7 +132,7 @@ <id>20</id> <animation effect="fade" time="400">WindowClose</animation> <animation effect="fade" time="400">WindowOpen</animation> - <posY>155</posY> + <posY>100</posY> <posX>221</posX> <label>191</label> <font>font14</font> @@ -152,7 +151,7 @@ <id>21</id> <animation effect="fade" time="400">WindowClose</animation> <animation effect="fade" time="400">WindowOpen</animation> - <posY>155</posY> + <posY>100</posY> <posX>430</posX> <label>190</label> <font>font14</font> Modified: trunk/skins/Foofaraw/Development Skin/Foofaraw/mymusicsongs.xml =================================================================== --- trunk/skins/Foofaraw/Development Skin/Foofaraw/mymusicsongs.xml 2007-09-21 13:12:32 UTC (rev 944) +++ trunk/skins/Foofaraw/Development Skin/Foofaraw/mymusicsongs.xml 2007-09-21 21:07:49 UTC (rev 945) @@ -66,20 +66,7 @@ </control> - <control> - <description>Selected item Label</description> - <type>fadelabel</type> - <id>1</id> - <animation effect="fade" time="400">WindowClose</animation> - <animation effect="fade" time="400">WindowOpen</animation> - <posX>240</posX> - <posY>600</posY> - <width>1000</width> - <label>#selecteditem</label> - <font>wipeout</font> - <align>Left</align> - <textcolor>ffffffff</textcolor> - </control> + <control> <type>image</type> <decription>top-strip</decription> @@ -230,24 +217,41 @@ <control> <id>1</id> <type>image</type> - <posX>120</posX> - <posY>250</posY> - <width>340</width> - <height>340</height> + <posX>165</posX> + <posY>170</posY> + <width>280</width> + <height>280</height> <texture flipY="true" diffuse="Thumb_Mask.png">#selectedthumb</texture> <visible>facadeview.list</visible> + <animation effect="fade" time="250">visiblechange</animation> </control> <control> <type>image</type> <id>1</id> <posX>112</posX> - <posY>240</posY> + <posY>150</posY> <width>360</width> - <height>340</height> + <height>308</height> <texture>cd_box.png</texture> + <texture flipY="true" diffuse="Thumb_Mask.png">cd_box.png</texture> <visible>facadeview.list</visible> - <thumbs flipY="true" diffuse="Thumb_Mask.png"/> + <animation effect="fade" time="250">visiblechange</animation> </control> + + <control> + <description>Selected item Label</description> + <type>fadelabel</type> + <id>1</id> + <animation effect="fade" time="400">WindowClose</animation> + <animation effect="fade" time="400">WindowOpen</animation> + <posX>240</posX> + <posY>650</posY> + <width>1000</width> + <label>#selecteditem</label> + <font>wipeout</font> + <align>Left</align> + <textcolor>ffffffff</textcolor> + </control> <control> <type>group</type> @@ -270,13 +274,13 @@ <onup>2</onup> <ondown>50</ondown> <posX>542</posX> - <posY>140</posY> + <posY>160</posY> <width>800</width> - <height>600</height> + <height>520</height> <spinWidth>27</spinWidth> <spinHeight>27</spinHeight> <spinPosX>1240</spinPosX> - <spinPosY>515</spinPosY> + <spinPosY>650</spinPosY> <spinColor>ffffffff</spinColor> <textureUp>arrow_round_up_nofocus.png</textureUp> <textureDown>arrow_round_down_nofocus.png</textureDown> @@ -454,7 +458,7 @@ <type>label</type> <id>1</id> <posX>1200</posX> - <posY>520</posY> + <posY>650</posY> <label>#itemcount</label> <align>right</align> <textcolor>White</textcolor> Modified: trunk/skins/Foofaraw/Development Skin/Foofaraw/mypics.xml =================================================================== --- trunk/skins/Foofaraw/Development Skin/Foofaraw/mypics.xml 2007-09-21 13:12:32 UTC (rev 944) +++ trunk/skins/Foofaraw/Development Skin/Foofaraw/mypics.xml 2007-09-21 21:07:49 UTC (rev 945) @@ -57,36 +57,13 @@ <animation effect="fade" time="1000" end="60" delay="2000">WindowOpen</animation> <animation effect="slide" time="1000" delay="2000" start="-600,0" end="0,0" acceleration="-1">WindowOpen</animation> <animation effect="fade" time="500" start="50">WindowClose</animation> - </control> - <control> + </control> <control> <type>image</type> - <decription>mid_strip</decription> - <id>1</id> - <posX>-12</posX> - <posY>186</posY> - <width>1390</width> - <height>365</height> - <texture>mid_strip.png</texture> - - </control> - <control> - <type>image</type> - <decription>bottom_strip</decription> - <id>1</id> - <posX>-12</posX> - <posY>547</posY> - <width>1390</width> - <height>18</height> - <texture>bottom_strip.png</texture> - - </control> - <control> - <type>image</type> <decription>top-strip</decription> <id>1</id> - <posX>-12</posX> - <posY>155</posY> - <width>1390</width> + <posX>12</posX> + <posY>100</posY> + <width>1342</width> <height>36</height> <texture>top-strip.png</texture> @@ -101,7 +78,7 @@ <animation effect="fade" time="400">WindowClose</animation> <animation effect="fade" time="400">WindowOpen</animation> <posX>250</posX> - <posY>600</posY> + <posY>650</posY> <width>1000</width> <label>#selecteditem</label> <font>wipeout</font> @@ -117,7 +94,7 @@ <id>2</id> <animation effect="fade" time="400">WindowClose</animation> <animation effect="fade" time="400">WindowOpen</animation> - <posY>155</posY> + <posY>100</posY> <posX>12</posX> <label>100</label> <onleft>2</onleft> @@ -138,7 +115,7 @@ <id>3</id> <animation effect="fade" time="400">WindowClose</animation> <animation effect="fade" time="400">WindowOpen</animation> - <posY>155</posY> + <posY>100</posY> <posX>221</posX> <label>103</label> <width>209</width> @@ -163,7 +140,7 @@ <id>6</id> <animation effect="fade" time="400">WindowClose</animation> <animation effect="fade" time="400">WindowOpen</animation> - <posY>155</posY> + <posY>100</posY> <posX>430</posX> <label>108</label> <width>209</width> @@ -182,7 +159,7 @@ <id>7</id> <animation effect="fade" time="400">WindowClose</animation> <animation effect="fade" time="400">WindowOpen</animation> - <posY>155</posY> + <posY>100</posY> <posX>639</posX> <label>361</label> <width>209</width> @@ -202,7 +179,7 @@ <animation effect="fade" time="400">WindowClose</animation> <animation effect="fade" time="400">WindowOpen</animation> - <posY>155</posY> + <posY>100</posY> <posX>848</posX> <label>109</label> <width>209</width> @@ -217,6 +194,29 @@ </control> + <control> + <id>1</id> + <type>image</type> + <posX>138</posX> + <posY>170</posY> + <width>310</width> + <height>245</height> + <texture flipY="true" diffuse="Thumb_Mask.png">#selectedthumb</texture> + <visible>facadeview.list</visible> + <animation effect="fade" time="250">visiblechange</animation> + </control> + <control> + <type>image</type> + <id>1</id> + <posX>112</posX> + <posY>150</posY> + <width>360</width> + <height>264</height> + <texture>photo_frame.png</texture> + <texture flipY="true" diffuse="Thumb_Mask.png">photo_frame.png</texture> + <visible>facadeview.list</visible> + <animation effect="fade" time="250">visiblechange</animation> + </control> <control> <type>group</type> @@ -230,7 +230,7 @@ <description>composite control consisting of a list control and a thumbnail panel</description> <type>facadeview</type> <id>50</id> - <control> + <control> <description>listcontrol</description> <type>listcontrol</type> <id>50</id> @@ -238,14 +238,14 @@ <onright>2</onright> <onup>2</onup> <ondown>50</ondown> - <posX>30</posX> - <posY>200</posY> - <width>1306</width> - <height>330</height> + <posX>542</posX> + <posY>160</posY> + <width>800</width> + <height>520</height> <spinWidth>27</spinWidth> <spinHeight>27</spinHeight> <spinPosX>1240</spinPosX> - <spinPosY>515</spinPosY> + <spinPosY>650</spinPosY> <spinColor>ffffffff</spinColor> <textureUp>arrow_round_up_nofocus.png</textureUp> <textureDown>arrow_round_down_nofocus.png</textureDown> @@ -274,7 +274,8 @@ <IconXOff>24</IconXOff> <IconYOff>9</IconYOff> <suffix>|</suffix> - </control> + + </control> <control> <description>Thumbnail Panel</description> <type>thumbnailpanel</type> @@ -342,8 +343,8 @@ <onright>2</onright> <onup>2</onup> <ondown>50</ondown> - <posX>25</posX> - <posY>260</posY> + <posX>85</posX> + <posY>160</posY> <width>1360</width> <height>400</height> <spinWidth>27</spinWidth> @@ -357,12 +358,13 @@ <textureDownFocus>arrow_round_down_focus.png</textureDownFocus> <itemWidth>150</itemWidth> <itemHeight>100</itemHeight> - <textureWidth>220</textureWidth> - <textureHeight>100</textureHeight> - <thumbWidth>135</thumbWidth> - <thumbHeight>101</thumbHeight> - <thumbPosX>6</thumbPosX><!-- 10 --> - <thumbPosY>6</thumbPosY><!-- 10 --> + <itemWidth>300</itemWidth> + <textureWidth>440</textureWidth> + <textureHeight>200</textureHeight> + <thumbWidth>270</thumbWidth> + <thumbHeight>202</thumbHeight> + <thumbPosX>14</thumbPosX><!-- 10 --> + <thumbPosY>14</thumbPosY><!-- 10 --> <imageFolder>photo_frame.png</imageFolder> <imageFolderFocus>photo_frame.png</imageFolderFocus> <keepaspectratio>no</keepaspectratio> @@ -374,12 +376,12 @@ <remoteColor>ffFFA075</remoteColor> <downloadColor>ff80ff80</downloadColor> <suffix>|</suffix> - <textureWidthBig>100</textureWidthBig> - <textureHeightBig>100</textureHeightBig> + <textureWidthBig>200</textureWidthBig> + <textureHeightBig>200</textureHeightBig> <itemWidthBig>100</itemWidthBig> <itemHeightBig>84</itemHeightBig> - <thumbWidthBig>84</thumbWidthBig> - <thumbHeightBig>100</thumbHeightBig> + <thumbWidthBig>168</thumbWidthBig> + <thumbHeightBig>200</thumbHeightBig> <thumbPosXBig>0</thumbPosXBig> <thumbPosYBig>0</thumbPosYBig> <background>-</background> @@ -391,13 +393,13 @@ <InfoImage>-</InfoImage> <InfoImagex>920</InfoImagex> <InfoImagey>130</InfoImagey> - <InfoImagewidth>310</InfoImagewidth> - <InfoImageheight>455</InfoImageheight> + <InfoImagewidth>620</InfoImagewidth> + <InfoImageheight>910</InfoImageheight> <InfoImagediffuse>ffffffff</InfoImagediffuse> - <textureWidth>150</textureWidth> - <textureHeight>110</textureHeight> + <textureWidth>300</textureWidth> + <textureHeight>220</textureHeight> <showFolder>yes</showFolder> <showBackGround>no</showBackGround> Modified: trunk/skins/Foofaraw/Development Skin/Foofaraw/myplugins.xml =================================================================== --- trunk/skins/Foofaraw/Development Skin/Foofaraw/myplugins.xml 2007-09-21 13:12:32 UTC (rev 944) +++ trunk/skins/Foofaraw/Development Skin/Foofaraw/myplugins.xml 2007-09-21 21:07:49 UTC (rev 945) @@ -112,7 +112,7 @@ <decription>top-strip</decription> <id>1</id> <posX>12</posX> - <posY>155</posY> + <posY>100</posY> <width>1342</width> <height>36</height> <texture>top-strip.png</texture> Modified: trunk/skins/Foofaraw/Development Skin/Foofaraw/myradio.xml =================================================================== --- trunk/skins/Foofaraw/Development Skin/Foofaraw/myradio.xml 2007-09-21 13:12:32 UTC (rev 944) +++ trunk/skins/Foofaraw/Development Skin/Foofaraw/myradio.xml 2007-09-21 21:07:49 UTC (rev 945) @@ -76,14 +76,13 @@ <height>18</height> <texture>bottom_strip.png</texture> - </control> - <control> + </control> <control> <type>image</type> <decription>top-strip</decription> <id>1</id> - <posX>-12</posX> - <posY>155</posY> - <width>1390</width> + <posX>12</posX> + <posY>100</posY> + <width>1342</width> <height>36</height> <texture>top-strip.png</texture> @@ -110,7 +109,7 @@ <id>2</id> <animation effect="fade" time="400">WindowClose</animation> <animation effect="fade" time="400">WindowOpen</animation> - <posY>155</posY> + <posY>100</posY> <posX>12</posX> <label>100</label> <font>font14</font> <onleft>2</onleft> @@ -136,7 +135,7 @@ <id>3</id> <animation effect="fade" time="400">WindowClose</animation> <animation effect="fade" time="400">WindowOpen</animation> - <posY>155</posY> + <posY>100</posY> <posX>221</posX> <label>103</label> <font>font14</font> <width>209</width> @@ -167,7 +166,7 @@ <id>6</id> <animation effect="fade" time="400">WindowClose</animation> <animation effect="fade" time="400">WindowOpen</animation> - <posY>155</posY> + <posY>100</posY> <posX>430</posX> <font>font14</font> <label>210</label> <width>209</width> @@ -186,7 +185,7 @@ <id>7</id> <animation effect="fade" time="400">WindowClose</animation> <animation effect="fade" time="400">WindowOpen</animation> - <posY>155</posY> + <posY>100</posY> <posX>639</posX> <label>209</label> <font>font14</font> <width>209</width> @@ -206,7 +205,7 @@ <animation effect="fade" time="400">WindowClose</animation> <animation effect="fade" time="400">WindowOpen</animation> - <posY>155</posY> + <posY>100</posY> <posX>848</posX> <label>533</label> <font>font14</font> <width>209</width> @@ -225,7 +224,7 @@ <id>9</id> <animation effect="fade" time="400">WindowClose</animation> <animation effect="fade" time="400">WindowOpen</animation> - <posY>155</posY> + <posY>100</posY> <posX>1057</posX> <label>983</label> <font>font14</font> <ondown>99</ondown> Modified: trunk/skins/Foofaraw/Development Skin/Foofaraw/myradioguide.xml =================================================================== --- trunk/skins/Foofaraw/Development Skin/Foofaraw/myradioguide.xml 2007-09-21 13:12:32 UTC (rev 944) +++ trunk/skins/Foofaraw/Development Skin/Foofaraw/myradioguide.xml 2007-09-21 21:07:49 UTC (rev 945) @@ -34,7 +34,7 @@ <decription>top-strip</decription> <id>1</id> <posX>-12</posX> - <posY>155</posY> + <posY>100</posY> <width>1388</width> <height>36</height> <texture>top-strip.png</texture> @@ -110,7 +110,7 @@ <type>image</type> <id>90</id> <posX>200</posX> - <posY>155</posY> + <posY>100</posY> <width>209</width> <height>36</height> <texture>tab_up.png</texture> @@ -122,7 +122,7 @@ <type>label</type> <id>40</id> <posX>200</posX> - <posY>155</posY> + <posY>100</posY> <font>font13</font> <textcolor>FFB2D4F5</textcolor> <animation effect="fade" time="250">WindowOpen</animation> Modified: trunk/skins/Foofaraw/Development Skin/Foofaraw/mytvguide.xml =================================================================== --- trunk/skins/Foofaraw/Development Skin/Foofaraw/mytvguide.xml 2007-09-21 13:12:32 UTC (rev 944) +++ trunk/skins/Foofaraw/Development Skin/Foofaraw/mytvguide.xml 2007-09-21 21:07:49 UTC (rev 945) @@ -34,7 +34,7 @@ <decription>top-strip</decription> <id>1</id> <posX>-12</posX> - <posY>155</posY> + <posY>100</posY> <width>1388</width> <height>36</height> <texture>top-strip.png</texture> @@ -175,7 +175,7 @@ <type>image</type> <id>90</id> <posX>200</posX> - <posY>155</posY> + <posY>100</posY> <width>209</width> <height>36</height> <texture>tab_up.png</texture> @@ -187,7 +187,7 @@ <type>label</type> <id>40</id> <posX>200</posX> - <posY>155</posY> + <posY>100</posY> <font>font13</font> <textcolor>FFB2D4F5</textcolor> <animation effect="fade" time="250">WindowOpen</animation> Modified: trunk/skins/Foofaraw/Development Skin/Foofaraw/mytvhome.xml =================================================================== --- trunk/skins/Foofaraw/Development Skin/Foofaraw/mytvhome.xml 2007-09-21 13:12:32 UTC (rev 944) +++ trunk/skins/Foofaraw/Development Skin/Foofaraw/mytvhome.xml 2007-09-21 21:07:49 UTC (rev 945) @@ -41,14 +41,13 @@ <height>18</height> <texture>bottom_strip.png</texture> - </control> - <control> + </control> <control> <type>image</type> <decription>top-strip</decription> <id>1</id> - <posX>-12</posX> - <posY>155</posY> - <width>1390</width> + <posX>12</posX> + <posY>100</posY> + <width>1342</width> <height>36</height> <texture>top-strip.png</texture> @@ -61,7 +60,7 @@ <animation effect="fade" time="400">WindowClose</animation> <animation effect="slide" time="500" start="1000,0" end="0,0" delay="100" acceleration="-1">WindowOpen</animation> <animation effect="fade" time="400" delay="100">WindowOpen</animation> - <posY>155</posY> + <posY>100</posY> <posX>12</posX> <height>36</height> <width>209</width> @@ -84,7 +83,7 @@ <animation effect="fade" time="400">WindowClose</animation> <animation effect="slide" time="500" start="1000,0" end="0,0" delay="100" acceleration="-1">WindowOpen</animation> <animation effect="fade" time="400" delay="100">WindowOpen</animation> - <posY>155</posY> + <posY>100</posY> <posX>221</posX> <label>707</label> <font>font14</font> @@ -109,7 +108,7 @@ <animation effect="fade" time="400">WindowClose</animation> <animation effect="slide" time="500" start="1000,0" end="0,0" delay="100" acceleration="-1">WindowOpen</animation> <animation effect="fade" time="400" delay="100">WindowOpen</animation> - <posY>155</posY> + <posY>100</posY> <posX>430</posX> <hyperlink>600</hyperlink> <label>600</label> @@ -132,7 +131,7 @@ <animation effect="fade" time="400">WindowClose</animation> <animation effect="slide" time="500" start="1000,0" end="0,0" delay="100" acceleration="-1">WindowOpen</animation> <animation effect="fade" time="400" delay="100">WindowOpen</animation> - <posY>155</posY> + <posY>100</posY> <posX>639</posX> <label>602</label> <font>font14</font> Modified: trunk/skins/Foofaraw/Development Skin/Foofaraw/mytvhomeServer.xml =================================================================== --- trunk/skins/Foofaraw/Development Skin/Foofaraw/mytvhomeServer.xml 2007-09-21 13:12:32 UTC (rev 944) +++ trunk/skins/Foofaraw/Development Skin/Foofaraw/mytvhomeServer.xml 2007-09-21 21:07:49 UTC (rev 945) @@ -38,14 +38,13 @@ <height>18</height> <texture>bottom_strip.png</texture> - </control> - <control> + </control> <control> <type>image</type> <decription>top-strip</decription> <id>1</id> - <posX>-12</posX> - <posY>155</posY> - <width>1390</width> + <posX>12</posX> + <posY>100</posY> + <width>1342</width> <height>36</height> <texture>top-strip.png</texture> @@ -58,7 +57,7 @@ <animation effect="fade" time="400">WindowClose</animation> <animation effect="slide" time="500" start="1000,0" end="0,0" delay="100" acceleration="-1">WindowOpen</animation> <animation effect="fade" time="400" delay="100">WindowOpen</animation> - <posY>155</posY> + <posY>100</posY> <posX>12</posX> <height>36</height> <width>209</width> @@ -81,7 +80,7 @@ <animation effect="fade" time="400">WindowClose</animation> <animation effect="slide" time="500" start="1000,0" end="0,0" delay="100" acceleration="-1">WindowOpen</animation> <animation effect="fade" time="400" delay="100">WindowOpen</animation> - <posY>155</posY> + <posY>100</posY> <posX>221</posX> <label>707</label> <font>font14</font> @@ -106,7 +105,7 @@ <animation effect="fade" time="400">WindowClose</animation> <animation effect="slide" time="500" start="1000,0" end="0,0" delay="100" acceleration="-1">WindowOpen</animation> <animation effect="fade" time="400" delay="100">WindowOpen</animation> - <posY>155</posY> + <posY>100</posY> <posX>430</posX> <hyperlink>600</hyperlink> <label>600</label> @@ -129,7 +128,7 @@ <animation effect="fade" time="400">WindowClose</animation> <animation effect="slide" time="500" start="1000,0" end="0,0" delay="100" acceleration="-1">WindowOpen</animation> <animation effect="fade" time="400" delay="100">WindowOpen</animation> - <posY>155</posY> + <posY>100</posY> <posX>639</posX> <label>602</label> <font>font14</font> Modified: trunk/skins/Foofaraw/Development Skin/Foofaraw/mytvrecordedtv.xml =================================================================== --- trunk/skins/Foofaraw/Development Skin/Foofaraw/mytvrecordedtv.xml 2007-09-21 13:12:32 UTC (rev 944) +++ trunk/skins/Foofaraw/Development Skin/Foofaraw/mytvrecordedtv.xml 2007-09-21 21:07:49 UTC (rev 945) @@ -47,7 +47,7 @@ <decription>top-strip</decription> <id>1</id> <posX>-12</posX> - <posY>155</posY> + <posY>100</posY> <width>1388</width> <height>36</height> <texture>top-strip.png</texture> @@ -128,7 +128,7 @@ <animation effect="fade" time="400">WindowClose</animation> <animation effect="slide" time="500" start="1000,0" end="0,0" delay="100" acceleration="-1">WindowOpen</animation> <animation effect="fade" time="400" delay="100">WindowOpen</animation> - <posY>155</posY> + <posY>100</posY> <posX>12</posX> <label>100</label> <font>font14</font> @@ -151,7 +151,7 @@ <animation effect="fade" time="400">WindowClose</animation> <animation effect="slide" time="500" start="1000,0" end="0,0" delay="100" acceleration="-1">WindowOpen</animation> <animation effect="fade" time="400" delay="100">WindowOpen</animation> - <posY>155</posY> + <posY>100</posY> <posX>221</posX> <label>103</label> <font>font14</font> @@ -179,7 +179,7 @@ <animation effect="fade" time="400">WindowClose</animation> <animation effect="slide" time="500" start="1000,0" end="0,0" delay="100" acceleration="-1">WindowOpen</animation> <animation effect="fade" time="400" delay="100">WindowOpen</animation> - <posY>155</posY> + <posY>100</posY> <posX>430</posX> <label>457</label> <font>font14</font> @@ -200,7 +200,7 @@ <animation effect="fade" time="400">WindowClose</animation> <animation effect="slide" time="500" start="1000,0" end="0,0" delay="100" acceleration="-1">WindowOpen</animation> <animation effect="fade" time="400" delay="100">WindowOpen</animation> - <posY>155</posY> + <posY>100</posY> <posX>639</posX> <label>624</label> <font>font14</font> @@ -222,7 +222,7 @@ <animation effect="slide" time="500" start="1000,0" end="0,0" delay="100" acceleration="-1">WindowOpen</animation> <animation effect="fade" time="400" delay="100">WindowOpen</animation> - <posY>155</posY> + <posY>100</posY> <posX>848</posX> <label>896</label> <font>font14</font> Modified: trunk/skins/Foofaraw/Development Skin/Foofaraw/mytvrecordedtvchannel.xml =================================================================== --- trunk/skins/Foofaraw/Development Skin/Foofaraw/mytvrecordedtvchannel.xml 2007-09-21 13:12:32 UTC (rev 944) +++ trunk/skins/Foofaraw/Development Skin/Foofaraw/mytvrecordedtvchannel.xml 2007-09-21 21:07:49 UTC (rev 945) @@ -42,7 +42,7 @@ <decription>top-strip</decription> <id>1</id> <posX>-12</posX> - <posY>155</posY> + <posY>100</posY> <width>1388</width> <height>36</height> <texture>top-strip.png</texture> @@ -134,7 +134,7 @@ <animation effect="fade" time="400">WindowClose</animation> <animation effect="slide" time="500" start="1000,0" end="0,0" delay="100" acceleration="-1">WindowOpen</animation> <animation effect="fade" time="400" delay="100">WindowOpen</animation> - <posY>155</posY> + <posY>100</posY> <posX>12</posX> <label>100</label> <font>font10</font> @@ -157,7 +157,7 @@ <animation effect="fade" time="400">WindowClose</animation> <animation effect="slide" time="500" start="1000,0" end="0,0" delay="100" acceleration="-1">WindowOpen</animation> <animation effect="fade" time="400" delay="100">WindowOpen</animation> - <posY>155</posY> + <posY>100</posY> <posX>221</posX> <label>103</label> <font>font10</font> @@ -185,7 +185,7 @@ <animation effect="fade" time="400">WindowClose</animation> <animation effect="slide" time="500" start="1000,0" end="0,0" delay="100" acceleration="-1">WindowOpen</animation> <animation effect="fade" time="400" delay="100">WindowOpen</animation> - <posY>155</posY> + <posY>100</posY> <posX>430</posX> <label>457</label> <font>font10</font> @@ -206,7 +206,7 @@ <animation effect="fade" time="400">WindowClose</animation> <animation effect="slide" time="500" start="1000,0" end="0,0" delay="100" acceleration="-1">WindowOpen</animation> <animation effect="fade" time="400" delay="100">WindowOpen</animation> - <posY>155</posY> + <posY>100</posY> <posX>639</posX> <label>624</label> <font>font10</font> @@ -228,7 +228,7 @@ <animation effect="slide" time="500" start="1000,0" end="0,0" delay="100" acceleration="-1">WindowOpen</animation> <animation effect="fade" time="400" delay="100">WindowOpen</animation> - <posY>155</posY> + <posY>100</posY> <posX>848</posX> <label>896</label> <font>font10</font> Modified: trunk/skins/Foofaraw/Development Skin/Foofaraw/mytvrecordedtvgenre.xml =================================================================== --- trunk/skins/Foofaraw/Development Skin/Foofaraw/mytvrecordedtvgenre.xml 2007-09-21 13:12:32 UTC (rev 944) +++ trunk/skins/Foofaraw/Development Skin/Foofaraw/mytvrecordedtvgenre.xml 2007-09-21 21:07:49 UTC (rev 945) @@ -41,7 +41,7 @@ <decription>top-strip</decription> <id>1</id> <posX>-12</posX> - <posY>155</posY> + <posY>100</posY> <width>1388</width> <height>36</height> <texture>top-strip.png</texture> @@ -131,7 +131,7 @@ <animation effect="fade" time="400">WindowClose</animation> <animation effect="slide" time="500" start="1000,0" end="0,0" delay="100" acceleration="-1">WindowOpen</animation> <animation effect="fade" time="400" delay="100">WindowOpen</animation> - <posY>155</posY> + <posY>100</posY> <posX>12</posX> <label>100</label> <font>font10</font> @@ -154,7 +154,7 @@ <animation effect="fade" time="400">WindowClose</animation> <animation effect="slide" time="500" start="1000,0" end="0,0" delay="100" acceleration="-1">WindowOpen</animation> <animation effect="fade" time="400" delay="100">WindowOpen</animation> - <posY>155</posY> + <posY>100</posY> <posX>221</posX> <label>103</label> <font>font10</font> @@ -182,7 +182,7 @@ <animation effect="fade" time="400">WindowClose</animation> <animation effect="slide" time="500" start="1000,0" end="0,0" delay="100" acceleration="-1">WindowOpen</animation> <animation effect="fade" time="400" delay="100">WindowOpen</animation> - <posY>155</posY> + <posY>100</posY> <posX>430</posX> <label>457</label> <font>font10</font> @@ -203,7 +203,7 @@ <animation effect="fade" time="400">WindowClose</animation> <animation effect="slide" time="500" start="1000,0" end="0,0" delay="100" acceleration="-1">WindowOpen</animation> <animation effect="fade" time="400" delay="100">WindowOpen</animation> - <posY>155</posY> + <posY>100</posY> <posX>639</posX> <label>624</label> <font>font10</font> @@ -225,7 +225,7 @@ <animation effect="slide" time="500" start="1000,0" end="0,0" delay="100" acceleration="-1">WindowOpen</animation> <animation effect="fade" time="400" delay="100">WindowOpen</animation> - <posY>155</posY> + <posY>100</posY> <posX>848</posX> <label>896</label> <font>font10</font> Modified: trunk/skins/Foofaraw/Development Skin/Foofaraw/mytvsearch.xml =================================================================== --- trunk/skins/Foofaraw/Development Skin/Foofaraw/mytvsearch.xml 2007-09-21 13:12:32 UTC (rev 944) +++ trunk/skins/Foofaraw/Development Skin/Foofaraw/mytvsearch.xml 2007-09-21 21:07:49 UTC (rev 945) @@ -87,7 +87,7 @@ <decription>top-strip</decription> <id>1</id> <posX>-12</posX> - <posY>155</posY> + <posY>100</posY> <width>1388</width> <height>36</height> <texture>top-strip.png</texture> @@ -131,7 +131,7 @@ <animation effect="fade" time="400">WindowClose</animation> <animation effect="slide" time="500" start="1000,0" end="0,0" delay="100" acceleration="-1">WindowOpen</animation> <animation effect="fade" time="400" delay="100">WindowOpen</animation> - <posY>155</posY> + <posY>100</posY> <posX>12</posX> <font>font14</font> <onleft>8</onleft> <onright>4</onright> @@ -156,7 +156,7 @@ <animation effect="fade" time="400">WindowClose</animation> <animation effect="slide" time="500" start="1000,0" end="0,0" delay="100" acceleration="-1">WindowOpen</animation> <animation effect="fade" time="400" delay="100">WindowOpen</animation> - <posY>155</posY> + <posY>100</posY> <posX>221</posX> <label>725</label> <font>font14</font> <width>209</width> @@ -178,7 +178,7 @@ <animation effect="fade" time="400">WindowClose</animation> <animation effect="slide" time="500" start="1000,0" end="0,0" delay="100" acceleration="-1">WindowOpen</animation> <animation effect="fade" time="400" delay="100">WindowOpen</animation> - <posY>155</posY> + <posY>100</posY> <posX>430</posX> <label>726</label> <font>font14</font> <width>209</width> @@ -200,7 +200,7 @@ <animation effect="fade" time="400">WindowClose</animation> <animation effect="slide" time="500" start="1000,0" end="0,0" delay="100" acceleration="-1">WindowOpen</animation> <animation effect="fade" time="400" delay="100">WindowOpen</animation> - <posY>155</posY> + <posY>100</posY> <posX>639</posX> <label>922</label> <font>font14</font> <width>209</width> Modified: trunk/skins/Foofaraw/Development Skin/Foofaraw/myvideo.xml =================================================================== --- trunk/skins/Foofaraw/Development Skin/Foofaraw/myvideo.xml 2007-09-21 13:12:32 UTC (rev 944) +++ trunk/skins/Foofaraw/Development Skin/Foofaraw/myvideo.xml 2007-09-21 21:07:49 UTC (rev 945) @@ -9,39 +9,7 @@ <controls> <import>common.window.xml</import> <import>common.time.xml</import> - <control> - <type>image</type> - <decription>mid_strip</decription> - <id>1</id> - <posX>-12</posX> - <posY>186</posY> - <width>1390</width> - <height>365</height> - <texture>mid_strip.png</texture> - - </control> - <control> - <type>image</type> - <decription>bottom_strip</decription> - <id>1</id> - <posX>-12</posX> - <posY>547</posY> - <width>1390</width> - <height>18</height> - <texture>bottom_strip.png</texture> - - </control> - <control> - <type>image</type> - <decription>top-strip</decription> - <id>1</id> - <posX>-12</posX> - <posY>155</posY> - <width>1390</width> - <height>36</height> - <texture>top-strip.png</texture> - - </control> + @@ -112,14 +80,24 @@ <textcolor>ffffffff</textcolor> </control> - + <control> + <type>image</type> + <decription>top-strip</decription> + <id>1</id> + <posX>12</posX> + <posY>100</posY> + <width>1342</width> + <height>36</height> + <texture>top-strip.png</texture> + + </control> <control> <description>View-As button</description> <type>button</type> <id>2</id> <animation effect="fade" time="400">WindowClose</animation> <animation effect="fade" time="400">WindowOpen</animation> - <posY>155</posY> + <posY>100</posY> <posX>12</posX> <label>100</label> <font>font14</font> @@ -141,7 +119,7 @@ <id>3</id> <animation effect="fade" time="400">WindowClose</animation> <animation effect="fade" time="400">WindowOpen</animation> - <posY>155</posY> + <posY>100</posY> <posX>221</posX> <label>103</label> <font>font14</font> @@ -168,7 +146,7 @@ <id>5</id> <animation effect="fade" time="400">WindowClose</animation> <animation effect="fade" time="400">WindowOpen</animation> - <posY>155</posY> + <posY>100</posY> <posX>430</posX> <label>457</label> <font>font14</font> @@ -190,7 +168,7 @@ <label>5906</label> <animation effect="fade" time="400">WindowClose</animation> <animation effect="fade" time="400">WindowOpen</animation> - <posY>155</posY> + <posY>100</posY> <posX>639</posX> <font>font14</font> @@ -213,7 +191,7 @@ <animation effect="fade" time="400">WindowClose</animation> <animation effect="fade" time="400">WindowOpen</animation> - <posY>155</posY> + <posY>100</posY> <posX>848</posX> <label>341</label> <font>font14</font> @@ -237,7 +215,7 @@ <label>136</label> <animation effect="fade" time="400">WindowClose</animation> <animation effect="fade" time="400">WindowOpen</animation> - <posY>155</posY> + <posY>100</posY> <posX>1057</posX> <font>font14</font> @@ -254,7 +232,29 @@ </control> - + <control> + <id>1</id> + <type>image</type> + <posX>165</posX> + <posY>170</posY> + <width>280</width> + <height>280</height> + <texture flipY="true" diffuse="Thumb_Mask.png">#selectedthumb</texture> + <visible>facadeview.list</visible> + <animation effect="fade" time="250">visiblechange</animation> + </control> + <control> + <type>image</type> + <id>1</id> + <posX>112</posX> + <posY>150</posY> + <width>360</width> + <height>387</height> + <texture>dvd_box.png</texture> + <texture flipY="true" diffuse="Thumb_Mask.png">dvd_box.png</texture> + <visible>facadeview.list</visible> + <animation effect="fade" time="250">visiblechange</animation> + </control> @@ -278,14 +278,14 @@ <onright>2</onright> <onup>2</onup> <ondown>2</ondown> - <posX>30</posX> - <posY>200</posY> - <width>1306</width> - <height>330</height> + <posX>542</posX> + <posY>160</posY> + <width>800</width> + <height>520</height> <spinWidth>27</spinWidth> <spinHeight>27</spinHeight> <spinPosX>1240</spinPosX> - <spinPosY>515</spinPosY> + <spinPosY>650</spinPosY> <spinColor>ffffffff</spinColor> <textureUp>arrow_round_up_nofocus.png</textureUp> <textureDown>arrow_round_down_nofocus.png</textureDown> @@ -383,9 +383,9 @@ <onright>2</onright> <onup>2</onup> <ondown>50</ondown> - <posX>25</posX> - <posY>260</posY> - <width>1360</width> + <posX>180</posX> + <posY>200</posY> + <width>1300</width> <height>400</height> <spinWidth>27</spinWidth> <spinHeight>27</spinHeight> @@ -396,14 +396,14 @@ <textureDown>arrow_round_down_nofocus.png</textureDown> <textureUpFocus>arrow_round_up_focus.png</textureUpFocus> <textureDownFocus>arrow_round_down_focus.png</textureDownFocus> - <itemWidth>120</itemWidth> + <itemWidth>265</itemWidth> <itemHeight>100</itemHeight> - <textureWidth>220</textureWidth> - <textureHeight>100</textureHeight> - <thumbWidth>101</thumbWidth> - <thumbHeight>154</thumbHeight> - <thumbPosX>15</thumbPosX><!-- 10 --> - <thumbPosY>1</thumbPosY><!-- 10 --> + <textureWidth>310</textureWidth> + <textureHeight>210</textureHeight> + <thumbWidth>210</thumbWidth> + <thumbHeight>310</thumbHeight> + <thumbPosX>25</thumbPosX><!-- 10 --> + <thumbPosY>5</thumbPosY><!-- 10 --> <imageFolder>dvd_box.png</imageFolder> <imageFolderFocus>dvd_box.png</imageFolderFocus> <keepaspectratio>no</keepaspectratio> @@ -437,8 +437,8 @@ <InfoImagediffuse>ffffffff</InfoImagediffuse> - <textureWidth>120</textureWidth> - <textureHeight>159</textureHeight> + <textureWidth>240</textureWidth> + <textureHeight>320</textureHeight> <showFolder>yes</showFolder> <showBackGround>no</showBackGround> @@ -466,7 +466,7 @@ <id>584</id> <animation effect="fade" time="400">WindowClose</animation> <animation effect="fade" time="400">WindowOpen</animation> - <posY>194</posY> + <posY>136</posY> <posX>639</posX> <label>TV Series</label> <hyperlink>9811</hyperlink> @@ -490,7 +490,7 @@ <id>7</id> <animation effect="fade" time="400">WindowClose</animation> <animation effect="fade" time="400">WindowOpen</animation> - <posY>194</posY> + <posY>136</posY> <posX>848</posX> <label>654</label> <font>font14</font> @@ -513,7 +513,7 @@ <id>9</id> <animation effect="fade" time="400">WindowClose</animation> <animation effect="fade" time="400">WindowOpen</animation> - <posY>194</posY> + <posY>136</posY> <posX>1057</posX> <label>983</label> <font>font14</font> Modified: trunk/skins/Foofaraw/Development Skin/Foofaraw/myvideoTitle.xml =================================================================== --- trunk/skins/Foofaraw/Development Skin/Foofaraw/myvideoTitle.xml 2007-09-21 13:12:32 UTC (rev 944) +++ trunk/skins/Foofaraw/Development Skin/Foofaraw/myvideoTitle.xml 2007-09-21 21:07:49 UTC (rev 945) @@ -31,14 +31,13 @@ <height>18</height> <texture>bottom_strip.png</texture> - </control> - <control> + </control> <control> <type>image</type> <decription>top-strip</decription> <id>1</id> - <posX>-12</posX> - <posY>155</posY> - <width>1390</width> + <posX>12</posX> + <posY>100</posY> + <width>1342</width> <height>36</height> <texture>top-strip.png</texture> @@ -139,7 +138,7 @@ <id>2</id> <animation effect="fade" time="400">WindowClose</animation> <animation effect="fade" time="400">WindowOpen</animation> - <posY>155</posY> + <posY>100</posY> <posX>12</posX> <label>100</label> <font>font14</font> @@ -161,7 +160,7 @@ <id>3</id> <animation effect="fade" time="400">WindowClose</animation> <animation effect="fade" time="400">WindowOpen</animation> - <posY>155</posY> + <posY>100</posY> <posX>221</posX> <label>103</label> <font>font14</font> @@ -187,7 +186,7 @@ <id>5</id> <animation effect="fade" time="400">WindowClose</animation> <animation effect="fade" time="400">WindowOpen</animation> - <posY>155</posY> + <posY>100</posY> <posX>430</posX> <label>457</label> <font>font14</font> @@ -209,7 +208,7 @@ <label>5906</label> <animation effect="fade" time="400">WindowClose</animation> <animation effect="fade" time="400">WindowOpen</animation> - <posY>155</posY> + <posY>100</posY> <posX>639</posX> <font>font14</font> @@ -230,7 +229,7 @@ <animation effect="fade" time="400">WindowClose</animation> <animation effect="fade" time="400">WindowOpen</animation> - <posY>155</posY> + <posY>100</posY> <posX>848</posX> <label>341</label> <font>font14</font> @@ -254,7 +253,7 @@ <label>136</label> <animation effect="fade" time="400">WindowClose</animation> <animation effect="fade" time="400">WindowOpen</animation> - <posY>155</posY> + <posY>100</posY> <posX>1057</posX> <font>font14</font> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rs...@us...> - 2007-09-21 13:12:35
|
Revision: 944 http://mp-plugins.svn.sourceforge.net/mp-plugins/?rev=944&view=rev Author: rsparey Date: 2007-09-21 06:12:32 -0700 (Fri, 21 Sep 2007) Log Message: ----------- Updating views to try and please more people... ie list view made bigger... film strip more icons... mid strip only visible when needed.... Modified Paths: -------------- trunk/skins/Foofaraw/Development Skin/Foofaraw/mymusicsongs.xml Modified: trunk/skins/Foofaraw/Development Skin/Foofaraw/mymusicsongs.xml =================================================================== --- trunk/skins/Foofaraw/Development Skin/Foofaraw/mymusicsongs.xml 2007-09-20 13:05:37 UTC (rev 943) +++ trunk/skins/Foofaraw/Development Skin/Foofaraw/mymusicsongs.xml 2007-09-21 13:12:32 UTC (rev 944) @@ -64,40 +64,8 @@ <animation effect="slide" time="1000" delay="2000" start="-600,0" end="0,0" acceleration="-1">WindowOpen</animation> <animation effect="fade" time="500" start="50">WindowClose</animation> </control> - <control> - <type>image</type> - <decription>mid_strip</decription> - <id>1</id> - <posX>-12</posX> - <posY>186</posY> - <width>1390</width> - <height>365</height> - <texture>mid_strip.png</texture> - - </control> - <control> - <type>image</type> - <decription>bottom_strip</decription> - <id>1</id> - <posX>-12</posX> - <posY>547</posY> - <width>1390</width> - <height>18</height> - <texture>bottom_strip.png</texture> - - </control> - <control> - <type>image</type> - <decription>top-strip</decription> - <id>1</id> - <posX>-12</posX> - <posY>155</posY> - <width>1390</width> - <height>36</height> - <texture>top-strip.png</texture> - - </control> + <control> <description>Selected item Label</description> <type>fadelabel</type> @@ -112,7 +80,17 @@ <align>Left</align> <textcolor>ffffffff</textcolor> </control> - +<control> + <type>image</type> + <decription>top-strip</decription> + <id>1</id> + <posX>12</posX> + <posY>100</posY> + <width>1342</width> + <height>36</height> + <texture>top-strip.png</texture> + + </control> <control> @@ -121,7 +99,7 @@ <id>2</id> <animation effect="fade" time="400">WindowClose</animation> <animation effect="fade" time="400">WindowOpen</animation> - <posY>155</posY> + <posY>100</posY> <posX>12</posX> <label>100</label> <font>font14</font> @@ -143,7 +121,7 @@ <id>3</id> <animation effect="fade" time="400">WindowClose</animation> <animation effect="fade" time="400">WindowOpen</animation> - <posY>155</posY> + <posY>100</posY> <posX>221</posX> <label>103</label> <font>font14</font> @@ -170,7 +148,7 @@ <id>6</id> <animation effect="fade" time="400">WindowClose</animation> <animation effect="fade" time="400">WindowOpen</animation> - <posY>155</posY> + <posY>100</posY> <posX>430</posX> <label>457</label> <font>font14</font> @@ -190,7 +168,7 @@ <id>7</id> <animation effect="fade" time="400">WindowClose</animation> <animation effect="fade" time="400">WindowOpen</animation> - <posY>155</posY> + <posY>100</posY> <posX>639</posX> <label>137</label> <font>font14</font> @@ -212,7 +190,7 @@ <animation effect="fade" time="400">WindowOpen</animation> <hyperlink>510</hyperlink> <label>100510</label> - <posY>155</posY> + <posY>100</posY> <posX>848</posX> <font>font14</font> <width>209</width> @@ -232,7 +210,7 @@ <id>10</id> <animation effect="fade" time="400">WindowClose</animation> <animation effect="fade" time="400">WindowOpen</animation> - <posY>155</posY> + <posY>100</posY> <posX>1057</posX> <label>983</label> <font>font14</font> @@ -249,7 +227,27 @@ </control> - + <control> + <id>1</id> + <type>image</type> + <posX>120</posX> + <posY>250</posY> + <width>340</width> + <height>340</height> + <texture flipY="true" diffuse="Thumb_Mask.png">#selectedthumb</texture> + <visible>facadeview.list</visible> + </control> + <control> + <type>image</type> + <id>1</id> + <posX>112</posX> + <posY>240</posY> + <width>360</width> + <height>340</height> + <texture>cd_box.png</texture> + <visible>facadeview.list</visible> + <thumbs flipY="true" diffuse="Thumb_Mask.png"/> + </control> <control> <type>group</type> @@ -271,10 +269,10 @@ <onright>2</onright> <onup>2</onup> <ondown>50</ondown> - <posX>30</posX> - <posY>200</posY> - <width>1306</width> - <height>330</height> + <posX>542</posX> + <posY>140</posY> + <width>800</width> + <height>600</height> <spinWidth>27</spinWidth> <spinHeight>27</spinHeight> <spinPosX>1240</spinPosX> @@ -307,7 +305,10 @@ <IconXOff>24</IconXOff> <IconYOff>9</IconYOff> <suffix>|</suffix> - </control> + + </control> + + <control> <description>Thumbnail Panel</description> <type>thumbnailpanel</type> @@ -461,6 +462,7 @@ <animation effect="fade" time="200">WindowOpen</animation> <animation effect="fade" time="200">WindowClose</animation> </control> + <control> <description> playlist</description> @@ -468,7 +470,7 @@ <id>11</id> <animation effect="fade" time="400">WindowClose</animation> <animation effect="fade" time="400">WindowOpen</animation> - <posY>194</posY> + <posY>136</posY> <posX>1057</posX> <hyperlink>500</hyperlink> <label>136</label> @@ -492,7 +494,7 @@ <id>8</id> <animation effect="fade" time="400">WindowClose</animation> <animation effect="fade" time="400">WindowOpen</animation> - <posY>230</posY> + <posY>172</posY> <posX>1057</posX> <label>890</label> <font>font14</font> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rs...@us...> - 2007-09-20 13:05:40
|
Revision: 943 http://mp-plugins.svn.sourceforge.net/mp-plugins/?rev=943&view=rev Author: rsparey Date: 2007-09-20 06:05:37 -0700 (Thu, 20 Sep 2007) Log Message: ----------- updated cd case size and added shadow Modified Paths: -------------- trunk/skins/Foofaraw/Foofaraw Support Files/Skin Icons/icons/Backup_of_cd case.cdr trunk/skins/Foofaraw/Foofaraw Support Files/Skin Icons/icons/cd case.cdr Modified: trunk/skins/Foofaraw/Foofaraw Support Files/Skin Icons/icons/Backup_of_cd case.cdr =================================================================== (Binary files differ) Modified: trunk/skins/Foofaraw/Foofaraw Support Files/Skin Icons/icons/cd case.cdr =================================================================== (Binary files differ) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rs...@us...> - 2007-09-20 13:04:24
|
Revision: 942 http://mp-plugins.svn.sourceforge.net/mp-plugins/?rev=942&view=rev Author: rsparey Date: 2007-09-20 06:04:21 -0700 (Thu, 20 Sep 2007) Log Message: ----------- Updated my music film strip changed playing now button Modified Paths: -------------- trunk/skins/Foofaraw/Development Skin/Foofaraw/Media/cd_box.png trunk/skins/Foofaraw/Development Skin/Foofaraw/mymusicsongs.xml trunk/skins/Foofaraw/Development Skin/Foofaraw/mytvhome.xml trunk/skins/Foofaraw/Development Skin/Foofaraw/mytvhomeServer.xml Modified: trunk/skins/Foofaraw/Development Skin/Foofaraw/Media/cd_box.png =================================================================== (Binary files differ) Modified: trunk/skins/Foofaraw/Development Skin/Foofaraw/mymusicsongs.xml =================================================================== --- trunk/skins/Foofaraw/Development Skin/Foofaraw/mymusicsongs.xml 2007-09-19 14:51:51 UTC (rev 941) +++ trunk/skins/Foofaraw/Development Skin/Foofaraw/mymusicsongs.xml 2007-09-20 13:04:21 UTC (rev 942) @@ -205,15 +205,15 @@ <textcolor>white</textcolor> </control> <control> - <description>Play CD</description> + <description>Playingnow</description> <type>button</type> - <id>8</id> + <id>12</id> <animation effect="fade" time="400">WindowClose</animation> <animation effect="fade" time="400">WindowOpen</animation> - + <hyperlink>510</hyperlink> + <label>100510</label> <posY>155</posY> <posX>848</posX> - <label>890</label> <font>font14</font> <width>209</width> <height>36</height> @@ -374,9 +374,9 @@ <onright>2</onright> <onup>2</onup> <ondown>50</ondown> - <posX>25</posX> - <posY>260</posY> - <width>1360</width> + <posX>60</posX> + <posY>220</posY> + <width>1400</width> <height>400</height> <spinWidth>27</spinWidth> <spinHeight>27</spinHeight> @@ -387,14 +387,14 @@ <textureDown>arrow_round_down_nofocus.png</textureDown> <textureUpFocus>arrow_round_up_focus.png</textureUpFocus> <textureDownFocus>arrow_round_down_focus.png</textureDownFocus> - <itemWidth>120</itemWidth> - <itemHeight>100</itemHeight> - <textureWidth>220</textureWidth> - <textureHeight>100</textureHeight> - <thumbWidth>101</thumbWidth> - <thumbHeight>101</thumbHeight> - <thumbPosX>15</thumbPosX><!-- 10 --> - <thumbPosY>1</thumbPosY><!-- 10 --> + <itemWidth>240</itemWidth> + <itemHeight>200</itemHeight> + <textureWidth>440</textureWidth> + <textureHeight>200</textureHeight> + <thumbWidth>202</thumbWidth> + <thumbHeight>202</thumbHeight> + <thumbPosX>38</thumbPosX><!-- 10 --> + <thumbPosY>14</thumbPosY><!-- 10 --> <imageFolder>cd_box.png</imageFolder> <imageFolderFocus>cd_box.png</imageFolderFocus> <keepaspectratio>no</keepaspectratio> @@ -406,17 +406,17 @@ <remoteColor>ffFFA075</remoteColor> <downloadColor>ff80ff80</downloadColor> <suffix>|</suffix> - <textureWidthBig>100</textureWidthBig> - <textureHeightBig>100</textureHeightBig> - <itemWidthBig>100</itemWidthBig> - <itemHeightBig>84</itemHeightBig> - <thumbWidthBig>84</thumbWidthBig> - <thumbHeightBig>100</thumbHeightBig> + <textureWidthBig>200</textureWidthBig> + <textureHeightBig>200</textureHeightBig> + <itemWidthBig>200</itemWidthBig> + <itemHeightBig>168</itemHeightBig> + <thumbWidthBig>168</thumbWidthBig> + <thumbHeightBig>200</thumbHeightBig> <thumbPosXBig>0</thumbPosXBig> <thumbPosYBig>0</thumbPosYBig> <background>-</background> - <backgroundx>130</backgroundx> - <backgroundy>130</backgroundy> + <backgroundx>260</backgroundx> + <backgroundy>260</backgroundy> <backgroundwidth>320</backgroundwidth> <backgroundheight>320</backgroundheight> <backgrounddiffuse>60ffffff</backgrounddiffuse> @@ -428,8 +428,8 @@ <InfoImagediffuse>ffffffff</InfoImagediffuse> - <textureWidth>120</textureWidth> - <textureHeight>105</textureHeight> + <textureWidth>253</textureWidth> + <textureHeight>218</textureHeight> <showFolder>yes</showFolder> <showBackGround>no</showBackGround> @@ -481,7 +481,7 @@ <ondown>12</ondown> <textureFocus>tab_down.png</textureFocus> <textureNoFocus>tab_up.png</textureNoFocus> - <visible>Control.HasFocus(10)|Control.HasFocus(11)|Control.HasFocus(12)</visible> + <visible>Control.HasFocus(10)|Control.HasFocus(11)|Control.HasFocus(8)</visible> <animation effect="fade" time="250">visiblechange</animation> <animation effect="slide" start="0,-36" end="0,0" time="250">visiblechange</animation> </control> @@ -489,13 +489,12 @@ <description> playing now</description> <type>button</type> - <id>12</id> + <id>8</id> <animation effect="fade" time="400">WindowClose</animation> <animation effect="fade" time="400">WindowOpen</animation> <posY>230</posY> <posX>1057</posX> - <hyperlink>510</hyperlink> - <label>100510</label> + <label>890</label> <font>font14</font> <width>209</width> <height>36</height> @@ -505,7 +504,7 @@ <ondown>50</ondown> <textureFocus>tab_down.png</textureFocus> <textureNoFocus>tab_up.png</textureNoFocus> - <visible>Control.HasFocus(10)|Control.HasFocus(12)|Control.HasFocus(11)</visible> + <visible>Control.HasFocus(10)|Control.HasFocus(8)|Control.HasFocus(11)</visible> <animation effect="fade" time="250">visiblechange</animation> <animation effect="slide" start="0,-72" end="0,0" time="250">visiblechange</animation> </control> @@ -513,5 +512,4 @@ </window> - \ No newline at end of file Modified: trunk/skins/Foofaraw/Development Skin/Foofaraw/mytvhome.xml =================================================================== --- trunk/skins/Foofaraw/Development Skin/Foofaraw/mytvhome.xml 2007-09-19 14:51:51 UTC (rev 941) +++ trunk/skins/Foofaraw/Development Skin/Foofaraw/mytvhome.xml 2007-09-20 13:04:21 UTC (rev 942) @@ -181,7 +181,7 @@ <id>13</id> <posX>125</posX> <posY>220</posY> - <width>400</width> + <width>360</width> <label>#TV.View.channel</label> <font>font13</font> <align>Left</align> Modified: trunk/skins/Foofaraw/Development Skin/Foofaraw/mytvhomeServer.xml =================================================================== --- trunk/skins/Foofaraw/Development Skin/Foofaraw/mytvhomeServer.xml 2007-09-19 14:51:51 UTC (rev 941) +++ trunk/skins/Foofaraw/Development Skin/Foofaraw/mytvhomeServer.xml 2007-09-20 13:04:21 UTC (rev 942) @@ -69,8 +69,8 @@ <hyperlink>603</hyperlink> <font>font14</font> - <onup>11</onup> - <ondown>2</ondown> + <onup>41</onup> + <ondown>99</ondown> <onleft>22</onleft> <onright>8</onright> </control> @@ -138,7 +138,7 @@ <onleft>2</onleft> <onright>11</onright> <onup>21</onup> - <ondown>50</ondown> + <ondown>99</ondown> <textureFocus>tab_down.png</textureFocus> <textureNoFocus>tab_up.png</textureNoFocus> <textureAscending>arrow_round_up_nofocus.png</textureAscending> @@ -375,7 +375,7 @@ <onleft>11</onleft> <onright>2</onright> <onup>8</onup> - <ondown>50</ondown> + <ondown>99</ondown> <textureFocus>tab_down.png</textureFocus> <textureNoFocus>tab_up.png</textureNoFocus> <visible>Control.HasFocus(8)|Control.HasFocus(9)</visible> @@ -425,7 +425,7 @@ <onleft>8</onleft> <onright>7</onright> <onup>12</onup> - <ondown>50</ondown> + <ondown>99</ondown> <textureFocus>tab_down.png</textureFocus> <textureNoFocus>tab_up.png</textureNoFocus> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <an...@us...> - 2007-09-19 14:51:58
|
Revision: 941 http://mp-plugins.svn.sourceforge.net/mp-plugins/?rev=941&view=rev Author: and-81 Date: 2007-09-19 07:51:51 -0700 (Wed, 19 Sep 2007) Log Message: ----------- Modified Paths: -------------- trunk/plugins/IR Server Suite/Applications/IR Server/Program.cs trunk/plugins/IR Server Suite/IR Server Suite.sln trunk/plugins/IR Server Suite/Input Service/InputService.cs trunk/plugins/IR Server Suite/Input Service/InputServiceInstaller.cs trunk/plugins/IR Server Suite/Input Service/Program.cs Modified: trunk/plugins/IR Server Suite/Applications/IR Server/Program.cs =================================================================== --- trunk/plugins/IR Server Suite/Applications/IR Server/Program.cs 2007-09-19 14:07:27 UTC (rev 940) +++ trunk/plugins/IR Server Suite/Applications/IR Server/Program.cs 2007-09-19 14:51:51 UTC (rev 941) @@ -129,7 +129,7 @@ IRServerPlugin[] serverPlugins = AvailablePlugins(); if (serverPlugins == null) - throw new ApplicationException("No available plugins found."); + throw new FileNotFoundException("No available plugins found"); foreach (IRServerPlugin plugin in serverPlugins) if (plugin.Name.Equals(pluginName, StringComparison.InvariantCultureIgnoreCase)) Modified: trunk/plugins/IR Server Suite/IR Server Suite.sln =================================================================== --- trunk/plugins/IR Server Suite/IR Server Suite.sln 2007-09-19 14:07:27 UTC (rev 940) +++ trunk/plugins/IR Server Suite/IR Server Suite.sln 2007-09-19 14:51:51 UTC (rev 941) @@ -436,7 +436,8 @@ {BCAFDF45-70DD-46FD-8B98-880DDA585AD2}.Debug|x86.ActiveCfg = Debug|x86 {BCAFDF45-70DD-46FD-8B98-880DDA585AD2}.Debug|x86.Build.0 = Debug|x86 {BCAFDF45-70DD-46FD-8B98-880DDA585AD2}.Release|Any CPU.ActiveCfg = Release|Any CPU - {BCAFDF45-70DD-46FD-8B98-880DDA585AD2}.Release|x86.ActiveCfg = Release|Any CPU + {BCAFDF45-70DD-46FD-8B98-880DDA585AD2}.Release|x86.ActiveCfg = Release|x86 + {BCAFDF45-70DD-46FD-8B98-880DDA585AD2}.Release|x86.Build.0 = Release|x86 {905131F8-F8AC-4A65-A722-37783902D7B8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {905131F8-F8AC-4A65-A722-37783902D7B8}.Debug|Any CPU.Build.0 = Debug|Any CPU {905131F8-F8AC-4A65-A722-37783902D7B8}.Debug|x86.ActiveCfg = Debug|x86 @@ -491,14 +492,16 @@ {327F54E5-D1DC-4297-BF2F-4283EB30FFB1}.Debug|x86.Build.0 = Debug|x86 {327F54E5-D1DC-4297-BF2F-4283EB30FFB1}.Release|Any CPU.ActiveCfg = Release|Any CPU {327F54E5-D1DC-4297-BF2F-4283EB30FFB1}.Release|Any CPU.Build.0 = Release|Any CPU - {327F54E5-D1DC-4297-BF2F-4283EB30FFB1}.Release|x86.ActiveCfg = Release|Any CPU + {327F54E5-D1DC-4297-BF2F-4283EB30FFB1}.Release|x86.ActiveCfg = Release|x86 + {327F54E5-D1DC-4297-BF2F-4283EB30FFB1}.Release|x86.Build.0 = Release|x86 {DDB52A4D-A670-411A-8273-8B1707C67028}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {DDB52A4D-A670-411A-8273-8B1707C67028}.Debug|Any CPU.Build.0 = Debug|Any CPU {DDB52A4D-A670-411A-8273-8B1707C67028}.Debug|x86.ActiveCfg = Debug|x86 {DDB52A4D-A670-411A-8273-8B1707C67028}.Debug|x86.Build.0 = Debug|x86 {DDB52A4D-A670-411A-8273-8B1707C67028}.Release|Any CPU.ActiveCfg = Release|Any CPU {DDB52A4D-A670-411A-8273-8B1707C67028}.Release|Any CPU.Build.0 = Release|Any CPU - {DDB52A4D-A670-411A-8273-8B1707C67028}.Release|x86.ActiveCfg = Release|Any CPU + {DDB52A4D-A670-411A-8273-8B1707C67028}.Release|x86.ActiveCfg = Release|x86 + {DDB52A4D-A670-411A-8273-8B1707C67028}.Release|x86.Build.0 = Release|x86 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE Modified: trunk/plugins/IR Server Suite/Input Service/InputService.cs =================================================================== --- trunk/plugins/IR Server Suite/Input Service/InputService.cs 2007-09-19 14:07:27 UTC (rev 940) +++ trunk/plugins/IR Server Suite/Input Service/InputService.cs 2007-09-19 14:51:51 UTC (rev 941) @@ -96,14 +96,28 @@ #endregion Constructor - #region Dispose + #region IDisposable protected override void Dispose(bool disposing) { - base.Dispose(disposing); + try + { + if (disposing) + { + if (_server != null) + _server.Dispose(); + + if (_client != null) + _client.Dispose(); + } + } + finally + { + base.Dispose(disposing); + } } - #endregion Dispose + #endregion IDisposable #region Service Methods Modified: trunk/plugins/IR Server Suite/Input Service/InputServiceInstaller.cs =================================================================== --- trunk/plugins/IR Server Suite/Input Service/InputServiceInstaller.cs 2007-09-19 14:07:27 UTC (rev 940) +++ trunk/plugins/IR Server Suite/Input Service/InputServiceInstaller.cs 2007-09-19 14:51:51 UTC (rev 941) @@ -49,6 +49,7 @@ /// <summary> /// Used to set the "Allow service to interact with the desktop" setting. /// </summary> + /* void InputServiceInstaller_Committing(object sender, InstallEventArgs e) { ManagementBaseObject InParam = null; @@ -71,9 +72,9 @@ OutParam = wmiService.InvokeMethod("Change", InParam, null); } } - catch (Exception ex) + catch { - Trace.WriteLine(ex.ToString()); + throw; } finally { @@ -84,7 +85,7 @@ OutParam.Dispose(); } } - + */ } } Modified: trunk/plugins/IR Server Suite/Input Service/Program.cs =================================================================== --- trunk/plugins/IR Server Suite/Input Service/Program.cs 2007-09-19 14:07:27 UTC (rev 940) +++ trunk/plugins/IR Server Suite/Input Service/Program.cs 2007-09-19 14:51:51 UTC (rev 941) @@ -120,7 +120,7 @@ IRServerPlugin[] serverPlugins = AvailablePlugins(); if (serverPlugins == null) - throw new ApplicationException("No available plugins found."); + throw new FileNotFoundException("No available plugins found"); foreach (IRServerPlugin plugin in serverPlugins) if (plugin.Name.Equals(pluginName, StringComparison.InvariantCultureIgnoreCase)) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rs...@us...> - 2007-09-19 14:07:31
|
Revision: 940 http://mp-plugins.svn.sourceforge.net/mp-plugins/?rev=940&view=rev Author: rsparey Date: 2007-09-19 07:07:27 -0700 (Wed, 19 Sep 2007) Log Message: ----------- Updated layout artwork and topbar.. added help file documentation Modified Paths: -------------- trunk/skins/Foofaraw/Foofaraw Support Files/BACKGROUND CHANGER/FoofarawBackgroundChanger.exe trunk/skins/Foofaraw/Foofaraw Support Files/Skin Layout/Skin Layout.cdr Added Paths: ----------- trunk/skins/Foofaraw/Foofaraw Support Files/BACKGROUND CHANGER/User's Guide.pdf trunk/skins/Foofaraw/Foofaraw Support Files/Fonts/ trunk/skins/Foofaraw/Foofaraw Support Files/Fonts/WIPEL__.TTF trunk/skins/Foofaraw/Foofaraw Support Files/Fonts/WIPEOUTF.TTF trunk/skins/Foofaraw/Foofaraw Support Files/Fonts/wipeoutfusion Bold.TTF trunk/skins/Foofaraw/Foofaraw Support Files/Help Files/ trunk/skins/Foofaraw/Foofaraw Support Files/Help Files/Backup_of_version 1.cdr trunk/skins/Foofaraw/Foofaraw Support Files/Help Files/User's Guide - Rev A.pdf trunk/skins/Foofaraw/Foofaraw Support Files/Help Files/version 1.cdr trunk/skins/Foofaraw/Foofaraw Support Files/Skin Layout/Backup_of_Skin Layout.cdr trunk/skins/Foofaraw/Foofaraw Support Files/Skin Layout/Backup_of_backgrounds.cdr trunk/skins/Foofaraw/Foofaraw Support Files/Skin Layout/backgrounds.cdr trunk/skins/Foofaraw/Foofaraw Support Files/Skin Layout/topbar.cdr Removed Paths: ------------- trunk/skins/Foofaraw/Foofaraw Support Files/BACKGROUND CHANGER/FoofarawBackgroundChanger.pdb trunk/skins/Foofaraw/Foofaraw Support Files/BACKGROUND CHANGER/FoofarawBackgroundChanger.vshost.exe Modified: trunk/skins/Foofaraw/Foofaraw Support Files/BACKGROUND CHANGER/FoofarawBackgroundChanger.exe =================================================================== (Binary files differ) Deleted: trunk/skins/Foofaraw/Foofaraw Support Files/BACKGROUND CHANGER/FoofarawBackgroundChanger.pdb =================================================================== (Binary files differ) Deleted: trunk/skins/Foofaraw/Foofaraw Support Files/BACKGROUND CHANGER/FoofarawBackgroundChanger.vshost.exe =================================================================== (Binary files differ) Added: trunk/skins/Foofaraw/Foofaraw Support Files/BACKGROUND CHANGER/User's Guide.pdf =================================================================== (Binary files differ) Property changes on: trunk/skins/Foofaraw/Foofaraw Support Files/BACKGROUND CHANGER/User's Guide.pdf ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/skins/Foofaraw/Foofaraw Support Files/Fonts/WIPEL__.TTF =================================================================== (Binary files differ) Property changes on: trunk/skins/Foofaraw/Foofaraw Support Files/Fonts/WIPEL__.TTF ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/skins/Foofaraw/Foofaraw Support Files/Fonts/WIPEOUTF.TTF =================================================================== (Binary files differ) Property changes on: trunk/skins/Foofaraw/Foofaraw Support Files/Fonts/WIPEOUTF.TTF ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/skins/Foofaraw/Foofaraw Support Files/Fonts/wipeoutfusion Bold.TTF =================================================================== (Binary files differ) Property changes on: trunk/skins/Foofaraw/Foofaraw Support Files/Fonts/wipeoutfusion Bold.TTF ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/skins/Foofaraw/Foofaraw Support Files/Help Files/Backup_of_version 1.cdr =================================================================== (Binary files differ) Property changes on: trunk/skins/Foofaraw/Foofaraw Support Files/Help Files/Backup_of_version 1.cdr ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/skins/Foofaraw/Foofaraw Support Files/Help Files/User's Guide - Rev A.pdf =================================================================== --- trunk/skins/Foofaraw/Foofaraw Support Files/Help Files/User's Guide - Rev A.pdf (rev 0) +++ trunk/skins/Foofaraw/Foofaraw Support Files/Help Files/User's Guide - Rev A.pdf 2007-09-19 14:07:27 UTC (rev 940) @@ -0,0 +1,5775 @@ +%PDF-1.6 +%\xE2\xE3\xCF\xD3 +49 0 obj +<</PageMode/UseThumbs/Metadata 78 0 R/AcroForm 50 0 R/Pages 43 0 R/PageLayout/SinglePage/OpenAction 77 0 R/Type/Catalog>> +endobj +78 0 obj +<</Subtype/XML/Length 3664/Type/Metadata>>stream +<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?> +<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 4.0-c316 44.253921, Sun Oct 01 2006 17:14:39"> + <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> + <rdf:Description rdf:about="" + xmlns:xap="http://ns.adobe.com/xap/1.0/"> + <xap:ModifyDate>2007-09-14T14:12:09+01:00</xap:ModifyDate> + <xap:CreateDate>2007-09-14T13:58:58+01:00</xap:CreateDate> + <xap:MetadataDate>2007-09-14T14:12:09+01:00</xap:MetadataDate> + <xap:CreatorTool>Adobe Acrobat 8.0</xap:CreatorTool> + </rdf:Description> + <rdf:Description rdf:about="" + xmlns:dc="http://purl.org/dc/elements/1.1/"> + <dc:format>application/pdf</dc:format> + <dc:title> + <rdf:Alt> + <rdf:li xml:lang="x-default">Foofaraw User's Guide</rdf:li> + </rdf:Alt> + </dc:title> + <dc:creator> + <rdf:Bag> + <rdf:li>Foofaraw Team</rdf:li> + </rdf:Bag> + </dc:creator> + </rdf:Description> + <rdf:Description rdf:about="" + xmlns:xapMM="http://ns.adobe.com/xap/1.0/mm/"> + <xapMM:DocumentID>uuid:40f6f122-7a36-4964-a45a-e5a9ffcf3fed</xapMM:DocumentID> + <xapMM:InstanceID>uuid:6d25103b-ee02-4794-b467-6ebd64e08882</xapMM:InstanceID> + </rdf:Description> + <rdf:Description rdf:about="" + xmlns:pdf="http://ns.adobe.com/pdf/1.3/"> + <pdf:Producer>Adobe Acrobat 8.0 Image Conversion Plug-in</pdf:Producer> + </rdf:Description> + </rdf:RDF> +</x:xmpmeta> + + + + + + + + + + + + + + + + + + + + + +<?xpacket end="w"?> +endstream +endobj +50 0 obj +<</Fields[]/DA(/Helv 0 Tf 0 g )/DR<</Font<</Helv 41 0 R/ZaDb 42 0 R>>/Encoding<</PDFDocEncoding 40 0 R>>>>>> +endobj +43 0 obj +<</Count 14/Type/Pages/Kids[44 0 R 45 0 R]>> +endobj +77 0 obj +<</D[51 0 R/FitH -32768]/S/GoTo>> +endobj +51 0 obj +<</CropBox[0.0 0.0 354.24 354.24]/Parent 44 0 R/Contents 52 0 R/Rotate 0/MediaBox[0.0 0.0 354.24 354.24]/Resources<</XObject<</Im0 53 0 R>>/ProcSet[/PDF/ImageC]>>/Type/Page>> +endobj +44 0 obj +<</Parent 43 0 R/Count 5/Type/Pages/Kids[51 0 R 1 0 R 4 0 R 7 0 R 10 0 R]>> +endobj +52 0 obj +<</Length 42/Filter/FlateDecode>>stream +H\x89*\xE4265\xD13210005U0 |
From: <i-...@us...> - 2007-09-19 09:10:32
|
Revision: 939 http://mp-plugins.svn.sourceforge.net/mp-plugins/?rev=939&view=rev Author: i-loop Date: 2007-09-19 02:10:28 -0700 (Wed, 19 Sep 2007) Log Message: ----------- synced with latest BlueTwo svn Modified Paths: -------------- trunk/skins/BlueTwoBig/Development Version/dialogFileStacking.xml Modified: trunk/skins/BlueTwoBig/Development Version/dialogFileStacking.xml =================================================================== --- trunk/skins/BlueTwoBig/Development Version/dialogFileStacking.xml 2007-09-18 21:50:12 UTC (rev 938) +++ trunk/skins/BlueTwoBig/Development Version/dialogFileStacking.xml 2007-09-19 09:10:28 UTC (rev 939) @@ -4,323 +4,264 @@ <defaultcontrol>1</defaultcontrol> <allowoverlay>yes</allowoverlay> <controls> + <import>common.dialog.xml</import> <control> <description>CD1</description> <type>button</type> - <id>1</id> - <posX>660</posX> - <posY>30</posY> + <id>101</id> <width>64</width> <height>64</height> - <label>-</label> <textureFocus>button-cd-focus.png</textureFocus> <textureNoFocus>button-cd-nofocus.png</textureNoFocus> - <onleft>20</onleft> - <onright>2</onright> + <onleft>120</onleft> + <onright>102</onright> <animation effect="fade" time="200">WindowOpen</animation> <animation effect="fade" time="200">WindowClose</animation> </control> <control> <description>CD2</description> <type>button</type> - <id>2</id> - <posX>660</posX> - <posY>30</posY> + <id>102</id> <width>64</width> <height>64</height> - <label>-</label> <textureFocus>button-cd-focus.png</textureFocus> <textureNoFocus>button-cd-nofocus.png</textureNoFocus> - <onright>3</onright> - <onleft>1</onleft> + <onright>103</onright> + <onleft>101</onleft> <animation effect="fade" time="200">WindowOpen</animation> <animation effect="fade" time="200">WindowClose</animation> </control> <control> <description>CD3</description> <type>button</type> - <id>3</id> - <posX>660</posX> - <posY>30</posY> + <id>103</id> <width>64</width> <height>64</height> - <label>-</label> <textureFocus>button-cd-focus.png</textureFocus> <textureNoFocus>button-cd-nofocus.png</textureNoFocus> - <onright>4</onright> - <onleft>2</onleft> + <onright>104</onright> + <onleft>102</onleft> <animation effect="fade" time="200">WindowOpen</animation> <animation effect="fade" time="200">WindowClose</animation> </control> <control> <description>CD4</description> <type>button</type> - <id>4</id> - <posX>660</posX> - <posY>30</posY> + <id>104</id> <width>64</width> <height>64</height> - <label>-</label> <textureFocus>button-cd-focus.png</textureFocus> <textureNoFocus>button-cd-nofocus.png</textureNoFocus> - <onright>5</onright> - <onleft>3</onleft> + <onright>105</onright> + <onleft>103</onleft> <animation effect="fade" time="200">WindowOpen</animation> <animation effect="fade" time="200">WindowClose</animation> </control> <control> <description>CD5</description> <type>button</type> - <id>5</id> - <posX>660</posX> - <posY>30</posY> + <id>105</id> <width>64</width> <height>64</height> - <label>-</label> <textureFocus>button-cd-focus.png</textureFocus> <textureNoFocus>button-cd-nofocus.png</textureNoFocus> - <onright>6</onright> - <onleft>4</onleft> + <onright>106</onright> + <onleft>104</onleft> <animation effect="fade" time="200">WindowOpen</animation> <animation effect="fade" time="200">WindowClose</animation> </control> <control> <description>CD6</description> <type>button</type> - <id>6</id> - <posX>660</posX> - <posY>30</posY> + <id>106</id> <width>64</width> <height>64</height> - <label>-</label> <textureFocus>button-cd-focus.png</textureFocus> <textureNoFocus>button-cd-nofocus.png</textureNoFocus> - <onright>7</onright> - <onleft>5</onleft> + <onright>107</onright> + <onleft>105</onleft> <animation effect="fade" time="200">WindowOpen</animation> <animation effect="fade" time="200">WindowClose</animation> </control> <control> <description>CD7</description> <type>button</type> - <id>7</id> - <posX>660</posX> - <posY>30</posY> + <id>107</id> <width>64</width> <height>64</height> - <label>-</label> <textureFocus>button-cd-focus.png</textureFocus> <textureNoFocus>button-cd-nofocus.png</textureNoFocus> - <onright>8</onright> - <onleft>6</onleft> + <onright>108</onright> + <onleft>106</onleft> <animation effect="fade" time="200">WindowOpen</animation> <animation effect="fade" time="200">WindowClose</animation> </control> <control> <description>CD8</description> <type>button</type> - <id>8</id> - <posX>660</posX> - <posY>30</posY> + <id>108</id> <width>64</width> <height>64</height> - <label>-</label> <textureFocus>button-cd-focus.png</textureFocus> <textureNoFocus>button-cd-nofocus.png</textureNoFocus> - <onright>9</onright> - <onleft>7</onleft> + <onright>109</onright> + <onleft>107</onleft> <animation effect="fade" time="200">WindowOpen</animation> <animation effect="fade" time="200">WindowClose</animation> </control> <control> <description>CD9</description> <type>button</type> - <id>9</id> - <posX>660</posX> - <posY>30</posY> + <id>109</id> <width>64</width> <height>64</height> - <label>-</label> <textureFocus>button-cd-focus.png</textureFocus> <textureNoFocus>button-cd-nofocus.png</textureNoFocus> - <onright>10</onright> - <onleft>8</onleft> + <onright>110</onright> + <onleft>108</onleft> <animation effect="fade" time="200">WindowOpen</animation> <animation effect="fade" time="200">WindowClose</animation> </control> <control> <description>CD10</description> <type>button</type> - <id>10</id> - <posX>660</posX> - <posY>30</posY> + <id>110</id> <width>64</width> <height>64</height> - <label>-</label> <textureFocus>button-cd-focus.png</textureFocus> <textureNoFocus>button-cd-nofocus.png</textureNoFocus> - <onright>11</onright> - <onleft>9</onleft> + <onright>111</onright> + <onleft>109</onleft> <animation effect="fade" time="200">WindowOpen</animation> <animation effect="fade" time="200">WindowClose</animation> </control> <control> <description>CD11</description> <type>button</type> - <id>11</id> - <posX>660</posX> - <posY>30</posY> + <id>111</id> <width>64</width> <height>64</height> - <label>-</label> <textureFocus>button-cd-focus.png</textureFocus> <textureNoFocus>button-cd-nofocus.png</textureNoFocus> - <onright>12</onright> - <onleft>10</onleft> + <onright>112</onright> + <onleft>110</onleft> <animation effect="fade" time="200">WindowOpen</animation> <animation effect="fade" time="200">WindowClose</animation> </control> <control> <description>CD12</description> <type>button</type> - <id>12</id> - <posX>660</posX> - <posY>30</posY> + <id>112</id> <width>64</width> <height>64</height> - <label>-</label> <textureFocus>button-cd-focus.png</textureFocus> <textureNoFocus>button-cd-nofocus.png</textureNoFocus> - <onright>13</onright> - <onleft>11</onleft> + <onright>113</onright> + <onleft>111</onleft> <animation effect="fade" time="200">WindowOpen</animation> <animation effect="fade" time="200">WindowClose</animation> </control> <control> <description>CD13</description> <type>button</type> - <id>13</id> - <posX>660</posX> - <posY>30</posY> + <id>113</id> <width>64</width> <height>64</height> - <label>-</label> <textureFocus>button-cd-focus.png</textureFocus> <textureNoFocus>button-cd-nofocus.png</textureNoFocus> - <onright>14</onright> - <onleft>12</onleft> + <onright>114</onright> + <onleft>112</onleft> <animation effect="fade" time="200">WindowOpen</animation> <animation effect="fade" time="200">WindowClose</animation> </control> <control> <description>CD14</description> <type>button</type> - <id>14</id> - <posX>660</posX> - <posY>30</posY> + <id>114</id> <width>64</width> <height>64</height> - <label>-</label> <textureFocus>button-cd-focus.png</textureFocus> <textureNoFocus>button-cd-nofocus.png</textureNoFocus> - <onright>15</onright> - <onleft>13</onleft> + <onright>115</onright> + <onleft>113</onleft> <animation effect="fade" time="200">WindowOpen</animation> <animation effect="fade" time="200">WindowClose</animation> </control> <control> <description>CD15</description> <type>button</type> - <id>15</id> - <posX>660</posX> - <posY>30</posY> + <id>115</id> <width>64</width> <height>64</height> - <label>-</label> <textureFocus>button-cd-focus.png</textureFocus> <textureNoFocus>button-cd-nofocus.png</textureNoFocus> - <onright>16</onright> - <onleft>14</onleft> + <onright>116</onright> + <onleft>114</onleft> <animation effect="fade" time="200">WindowOpen</animation> <animation effect="fade" time="200">WindowClose</animation> </control> <control> <description>CD16</description> <type>button</type> - <id>16</id> - <posX>660</posX> - <posY>30</posY> + <id>116</id> <width>64</width> <height>64</height> - <label>-</label> <textureFocus>button-cd-focus.png</textureFocus> <textureNoFocus>button-cd-nofocus.png</textureNoFocus> - <onright>17</onright> - <onleft>15</onleft> + <onright>117</onright> + <onleft>115</onleft> <animation effect="fade" time="200">WindowOpen</animation> <animation effect="fade" time="200">WindowClose</animation> </control> <control> <description>CD17</description> <type>button</type> - <id>17</id> - <posX>660</posX> - <posY>30</posY> + <id>117</id> <width>64</width> <height>64</height> - <label>-</label> <textureFocus>button-cd-focus.png</textureFocus> <textureNoFocus>button-cd-nofocus.png</textureNoFocus> - <onright>18</onright> - <onleft>16</onleft> + <onright>118</onright> + <onleft>116</onleft> <animation effect="fade" time="200">WindowOpen</animation> <animation effect="fade" time="200">WindowClose</animation> </control> <control> <description>CD18</description> <type>button</type> - <id>18</id> - <posX>660</posX> - <posY>30</posY> + <id>118</id> <width>64</width> <height>64</height> - <label>-</label> <textureFocus>button-cd-focus.png</textureFocus> <textureNoFocus>button-cd-nofocus.png</textureNoFocus> - <onright>19</onright> - <onleft>17</onleft> + <onright>119</onright> + <onleft>117</onleft> <animation effect="fade" time="200">WindowOpen</animation> <animation effect="fade" time="200">WindowClose</animation> </control> <control> <description>CD19</description> <type>button</type> - <id>19</id> - <posX>660</posX> - <posY>30</posY> + <id>119</id> <width>64</width> <height>64</height> - <label>-</label> <textureFocus>button-cd-focus.png</textureFocus> <textureNoFocus>button-cd-nofocus.png</textureNoFocus> - <onright>20</onright> - <onleft>18</onleft> + <onright>120</onright> + <onleft>118</onleft> <animation effect="fade" time="200">WindowOpen</animation> <animation effect="fade" time="200">WindowClose</animation> </control> <control> <description>CD20</description> <type>button</type> - <id>20</id> - <posX>660</posX> - <posY>30</posY> + <id>120</id> <width>64</width> <height>64</height> - <label>-</label> <textureFocus>button-cd-focus.png</textureFocus> <textureNoFocus>button-cd-nofocus.png</textureNoFocus> - <onright>1</onright> - <onleft>19</onleft> + <onright>11</onright> + <onleft>119</onleft> <animation effect="fade" time="200">WindowOpen</animation> <animation effect="fade" time="200">WindowClose</animation> </control> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mis...@us...> - 2007-09-18 21:50:14
|
Revision: 938 http://mp-plugins.svn.sourceforge.net/mp-plugins/?rev=938&view=rev Author: misterd_sf Date: 2007-09-18 14:50:12 -0700 (Tue, 18 Sep 2007) Log Message: ----------- Step1 of Mplayer 0.8 - Refactored the external player plugin for further improvements - Added osd library (MP like) - NEEDS more cpu power than MPlayer OSD - BETA !! - Can be used by other plugins - Internal Plugin for MPI. Initial Configuration wizard - Bugfixes for several small issues (e.g. handling of pause, audio stream handling) - Improved seeking. Further improvements needed. Therefor seeking is disabled, when no length can be estimated. and ...... Modified Paths: -------------- trunk/plugins/My MPlayer/MPlayer_ExtPlayer/ConfigurationForm.Designer.cs trunk/plugins/My MPlayer/MPlayer_ExtPlayer/ConfigurationForm.cs trunk/plugins/My MPlayer/MPlayer_ExtPlayer/ConfigurationForm.resx trunk/plugins/My MPlayer/MPlayer_ExtPlayer/ConfigurationManager.cs trunk/plugins/My MPlayer/MPlayer_ExtPlayer/MPlayer_ExtPlayer.cs trunk/plugins/My MPlayer/MPlayer_ExtPlayer/MPlayer_ExtPlayer.csproj trunk/plugins/My MPlayer/MPlayer_ExtPlayer/Properties/AssemblyInfo.cs trunk/plugins/My MPlayer/MPlayer_GUIPlugin/ConfigurationForm.Designer.cs trunk/plugins/My MPlayer/MPlayer_GUIPlugin/ConfigurationForm.cs trunk/plugins/My MPlayer/MPlayer_GUIPlugin/ConfigurationForm.resx trunk/plugins/My MPlayer/MPlayer_GUIPlugin/MPlayer_GUIPlugin.cs trunk/plugins/My MPlayer/MPlayer_GUIPlugin/MPlayer_GUIPlugin.csproj trunk/plugins/My MPlayer/MPlayer_GUIPlugin/Properties/AssemblyInfo.cs trunk/plugins/My MPlayer/My Mplayer.sln Added Paths: ----------- trunk/plugins/My MPlayer/ExternalOSDLibrary/ trunk/plugins/My MPlayer/ExternalOSDLibrary/BaseWindow.cs trunk/plugins/My MPlayer/ExternalOSDLibrary/DialogWindow.cs trunk/plugins/My MPlayer/ExternalOSDLibrary/Elements/ trunk/plugins/My MPlayer/ExternalOSDLibrary/Elements/BaseElement.cs trunk/plugins/My MPlayer/ExternalOSDLibrary/Elements/ButtonElement.cs trunk/plugins/My MPlayer/ExternalOSDLibrary/Elements/CheckMarkElement.cs trunk/plugins/My MPlayer/ExternalOSDLibrary/Elements/FadeLabelElement.cs trunk/plugins/My MPlayer/ExternalOSDLibrary/Elements/ImageElement.cs trunk/plugins/My MPlayer/ExternalOSDLibrary/Elements/LabelElement.cs trunk/plugins/My MPlayer/ExternalOSDLibrary/Elements/ListElement.cs trunk/plugins/My MPlayer/ExternalOSDLibrary/Elements/ProgressControlElement.cs trunk/plugins/My MPlayer/ExternalOSDLibrary/Elements/SliderElement.cs trunk/plugins/My MPlayer/ExternalOSDLibrary/Elements/TextScrollUpElement.cs trunk/plugins/My MPlayer/ExternalOSDLibrary/Elements/ToggleButtonElement.cs trunk/plugins/My MPlayer/ExternalOSDLibrary/Elements/VerticalScrollbarElement.cs trunk/plugins/My MPlayer/ExternalOSDLibrary/Elements/VolumeBarElement.cs trunk/plugins/My MPlayer/ExternalOSDLibrary/ExternalOSDLibrary.csproj trunk/plugins/My MPlayer/ExternalOSDLibrary/FullscreenWindow.cs trunk/plugins/My MPlayer/ExternalOSDLibrary/OSDController.cs trunk/plugins/My MPlayer/ExternalOSDLibrary/OSDForm.cs trunk/plugins/My MPlayer/ExternalOSDLibrary/OSDWindow.cs trunk/plugins/My MPlayer/ExternalOSDLibrary/Properties/ trunk/plugins/My MPlayer/ExternalOSDLibrary/Properties/AssemblyInfo.cs trunk/plugins/My MPlayer/MPlayer-License.txt trunk/plugins/My MPlayer/MPlayer_ExtPlayer/AudioSubtitleHandler.cs trunk/plugins/My MPlayer/MPlayer_ExtPlayer/ConfigurationPanel/ trunk/plugins/My MPlayer/MPlayer_ExtPlayer/ConfigurationPanel/AudioSection.Designer.cs trunk/plugins/My MPlayer/MPlayer_ExtPlayer/ConfigurationPanel/AudioSection.cs trunk/plugins/My MPlayer/MPlayer_ExtPlayer/ConfigurationPanel/AudioSection.resx trunk/plugins/My MPlayer/MPlayer_ExtPlayer/ConfigurationPanel/ExtensionSettings.Designer.cs trunk/plugins/My MPlayer/MPlayer_ExtPlayer/ConfigurationPanel/ExtensionSettings.cs trunk/plugins/My MPlayer/MPlayer_ExtPlayer/ConfigurationPanel/ExtensionSettings.resx trunk/plugins/My MPlayer/MPlayer_ExtPlayer/ConfigurationPanel/GeneralSection.Designer.cs trunk/plugins/My MPlayer/MPlayer_ExtPlayer/ConfigurationPanel/GeneralSection.cs trunk/plugins/My MPlayer/MPlayer_ExtPlayer/ConfigurationPanel/GeneralSection.resx trunk/plugins/My MPlayer/MPlayer_ExtPlayer/ConfigurationPanel/StreamSection.Designer.cs trunk/plugins/My MPlayer/MPlayer_ExtPlayer/ConfigurationPanel/StreamSection.cs trunk/plugins/My MPlayer/MPlayer_ExtPlayer/ConfigurationPanel/StreamSection.resx trunk/plugins/My MPlayer/MPlayer_ExtPlayer/ConfigurationPanel/SubtitleSection.Designer.cs trunk/plugins/My MPlayer/MPlayer_ExtPlayer/ConfigurationPanel/SubtitleSection.cs trunk/plugins/My MPlayer/MPlayer_ExtPlayer/ConfigurationPanel/SubtitleSection.resx trunk/plugins/My MPlayer/MPlayer_ExtPlayer/ConfigurationPanel/VideoSection.Designer.cs trunk/plugins/My MPlayer/MPlayer_ExtPlayer/ConfigurationPanel/VideoSection.cs trunk/plugins/My MPlayer/MPlayer_ExtPlayer/ConfigurationPanel/VideoSection.resx trunk/plugins/My MPlayer/MPlayer_ExtPlayer/ExternalOSDLibrary.cs trunk/plugins/My MPlayer/MPlayer_ExtPlayer/IMessageHandler.cs trunk/plugins/My MPlayer/MPlayer_ExtPlayer/IOSDHandler.cs trunk/plugins/My MPlayer/MPlayer_ExtPlayer/InternalOSDHandler.cs trunk/plugins/My MPlayer/MPlayer_ExtPlayer/Properties/Resources.Designer.cs trunk/plugins/My MPlayer/MPlayer_ExtPlayer/Properties/Resources.resx trunk/plugins/My MPlayer/MPlayer_ExtPlayer/SeekingHandler.cs trunk/plugins/My MPlayer/MPlayer_ExtPlayer/VideoHandler.cs trunk/plugins/My MPlayer/MPlayer_GUIPlugin/ConfigurationPanel/ trunk/plugins/My MPlayer/MPlayer_GUIPlugin/ConfigurationPanel/GUIConfiguration.Designer.cs trunk/plugins/My MPlayer/MPlayer_GUIPlugin/ConfigurationPanel/GUIConfiguration.cs trunk/plugins/My MPlayer/MPlayer_GUIPlugin/ConfigurationPanel/GUIConfiguration.resx trunk/plugins/My MPlayer/MPlayer_Installer/ trunk/plugins/My MPlayer/MPlayer_Installer/ConfigurationWizard.Designer.cs trunk/plugins/My MPlayer/MPlayer_Installer/ConfigurationWizard.cs trunk/plugins/My MPlayer/MPlayer_Installer/ConfigurationWizard.resx trunk/plugins/My MPlayer/MPlayer_Installer/Installer.cs trunk/plugins/My MPlayer/MPlayer_Installer/MPlayer_Installer.csproj trunk/plugins/My MPlayer/MPlayer_Installer/Properties/ trunk/plugins/My MPlayer/MPlayer_Installer/Properties/AssemblyInfo.cs trunk/plugins/My MPlayer/MPlayer_Installer/config.ico Removed Paths: ------------- trunk/plugins/My MPlayer/License.txt trunk/plugins/My MPlayer/Liesmich.pdf trunk/plugins/My MPlayer/Readme.pdf Property Changed: ---------------- trunk/plugins/My MPlayer/MPlayer_ExtPlayer/ trunk/plugins/My MPlayer/MPlayer_GUIPlugin/ Property changes on: trunk/plugins/My MPlayer/ExternalOSDLibrary ___________________________________________________________________ Name: svn:ignore + bin obj Added: trunk/plugins/My MPlayer/ExternalOSDLibrary/BaseWindow.cs =================================================================== --- trunk/plugins/My MPlayer/ExternalOSDLibrary/BaseWindow.cs (rev 0) +++ trunk/plugins/My MPlayer/ExternalOSDLibrary/BaseWindow.cs 2007-09-18 21:50:12 UTC (rev 938) @@ -0,0 +1,136 @@ +#region Copyright (C) 2006-2007 MisterD + +/* + * Copyright (C) 2006-2007 MisterD + * + * This Program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This Program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with GNU Make; see the file COPYING. If not, write to + * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + * http://www.gnu.org/copyleft/gpl.html + * + */ + +#endregion + +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Drawing.Drawing2D; +using MediaPortal.GUI.Library; +using System.Windows; + +namespace ExternalOSDLibrary { + /// <summary> + /// Base class for all MP windows that can be handled by this library + /// </summary> + public abstract class BaseWindow { + #region variables + /// <summary> + /// List of all elements of the window + /// </summary> + protected List<BaseElement> _elementList; + #endregion + + #region protected methods + /// <summary> + /// Generates the elements of a window, which are stored in the UIElementCollection + /// </summary> + /// <param name="collection">Collection of all GUIControls</param> + protected void GenerateElements(UIElementCollection collection) { + _elementList = new List<BaseElement>(); + GUIControl temp; + BaseElement element; + foreach (UIElement uiElement in collection) { + temp = uiElement as GUIControl; + if (temp != null) { + element = GenerateElement(temp); + if(element!=null){ + _elementList.Add(element); + } + } + } + } + + /// <summary> + /// Generates a single element based on the type of the GUIControl + /// Supported Types: + /// - GUIListControl + /// - GUITextScrollUpControl + /// - GUICheckMarkControl + /// - GUISliderControl + /// - GUIToggleButtonControl + /// - GUIButtonControl + /// - GUIFadeLabel + /// - GUIProgressControl + /// - GUIVolumeBar + /// - GUILabelControl + /// - GUIImage + /// </summary> + /// <param name="control">Control</param> + /// <returns>Elmenet based on the GUIControl</returns> + protected BaseElement GenerateElement(GUIControl control) { + if (control.GetType() == typeof(GUIImage)) { + return new ImageElement(control); + } else if (control.GetType() == typeof(GUILabelControl)) { + return new LabelElement(control); + } else if (control.GetType() == typeof(GUIVolumeBar)) { + return new VolumeBarElement(control); + } else if (control.GetType() == typeof(GUIProgressControl)) { + return new ProgressControlElement(control); + } else if (control.GetType() == typeof(GUIFadeLabel)) { + return new FadeLabelElement(control); + } else if (control.GetType() == typeof(GUIButtonControl)) { + return new ButtonElement(control); + } else if (control.GetType() == typeof(GUIToggleButtonControl)) { + return new ToggleButtonElement(control); + } else if (control.GetType() == typeof(GUISliderControl)) { + return new SliderElement(control); + } else if (control.GetType() == typeof(GUICheckMarkControl)) { + return new CheckMarkElement(control); + } else if (control.GetType() == typeof(GUITextScrollUpControl)) { + return new TextScrollUpElement(control); + } else if (control.GetType() == typeof(GUIListControl)) { + return new ListElement(control); + } + Log.Debug("VIDEOPLAYER_OSD FOUND UNEXPECTED TYPE: " + control.GetType().ToString()); + return null; + } + #endregion + + #region public methods + /// <summary> + /// Draws the window on the given graphics + /// </summary> + /// <param name="graph">Graphics of the bitmap</param> + public void DrawWindow(Graphics graph) { + try { + if (IsWindowVisible()) { + foreach (BaseElement element in _elementList) { + element.DrawElement(graph); + } + } + } catch (Exception ex) { + Log.Error(ex); + } + } + #endregion + + #region abstract methods + /// <summary> + /// Indicates if the window is currently visible + /// </summary> + /// <returns>true, if window is visible; false otherwise</returns> + public abstract bool IsWindowVisible(); + #endregion + } +} Added: trunk/plugins/My MPlayer/ExternalOSDLibrary/DialogWindow.cs =================================================================== --- trunk/plugins/My MPlayer/ExternalOSDLibrary/DialogWindow.cs (rev 0) +++ trunk/plugins/My MPlayer/ExternalOSDLibrary/DialogWindow.cs 2007-09-18 21:50:12 UTC (rev 938) @@ -0,0 +1,68 @@ +#region Copyright (C) 2006-2007 MisterD + +/* + * Copyright (C) 2006-2007 MisterD + * + * This Program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This Program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with GNU Make; see the file COPYING. If not, write to + * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + * http://www.gnu.org/copyleft/gpl.html + * + */ + +#endregion + +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Drawing.Drawing2D; +using System.Text; +using System.Windows.Forms; +using MediaPortal.Dialogs; +using MediaPortal.GUI.Library; +using System.Windows; + +namespace ExternalOSDLibrary { + /// <summary> + /// This class handles all related tasks for the GUIDialogMenu (Context menu) window + /// </summary> + public class DialogWindow : BaseWindow { + #region variables + /// <summary> + /// Dialog Menu window + /// </summary> + private GUIDialogMenu _dialogWindow; + #endregion + + #region ctor + /// <summary> + /// Constructor, which creates all elements + /// </summary> + public DialogWindow() { + _dialogWindow = GUIWindowManager.GetWindow((int)GUIWindow.Window.WINDOW_DIALOG_MENU) as GUIDialogMenu; + UIElementCollection collection = _dialogWindow.controlList; + GenerateElements(collection); + } + #endregion + + #region implemented abstract methods + /// <summary> + /// Indicates if the window is currently visible + /// </summary> + /// <returns>true, if window is visible; false otherwise</returns> + public override bool IsWindowVisible() { + return GUIWindowManager.RoutedWindow == _dialogWindow.GetID; + } + #endregion + } +} Added: trunk/plugins/My MPlayer/ExternalOSDLibrary/Elements/BaseElement.cs =================================================================== --- trunk/plugins/My MPlayer/ExternalOSDLibrary/Elements/BaseElement.cs (rev 0) +++ trunk/plugins/My MPlayer/ExternalOSDLibrary/Elements/BaseElement.cs 2007-09-18 21:50:12 UTC (rev 938) @@ -0,0 +1,124 @@ +#region Copyright (C) 2006-2007 MisterD + +/* + * Copyright (C) 2006-2007 MisterD + * + * This Program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This Program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with GNU Make; see the file COPYING. If not, write to + * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + * http://www.gnu.org/copyleft/gpl.html + * + */ + +#endregion + +using System; +using System.Collections.Generic; +using System.Drawing; +using System.IO; +using System.Reflection; +using System.Text; +using MediaPortal.GUI.Library; + +namespace ExternalOSDLibrary { + /// <summary> + /// Base class for all gui elements + /// </summary> + public abstract class BaseElement { + #region abstract methods + /// <summary> + /// Draws the element on the given graphics + /// </summary> + /// <param name="graph">Graphics</param> + public abstract void DrawElement(Graphics graph); + #endregion + + #region protected methods + /// <summary> + /// Updates a bitmap. It converts the Color (0,0,0) and (1,1,1), so that they won't be drawn transparent + /// if the alpha value is more than 150 + /// </summary> + /// <param name="bitmap">Bitmap to update</param> + protected void updateBitmap(Bitmap bitmap) { + Color temp; + for (int i = 0; i < bitmap.Width; i++) { + for (int j = 0; j < bitmap.Height; j++) { + temp = bitmap.GetPixel(i, j); + if (temp.R == 0 && temp.G == 0 && temp.B == 0 && temp.A > 150) { + bitmap.SetPixel(i, j, Color.FromArgb(temp.A, 5, 5, 5)); + } + if (temp.R == 1 && temp.G == 1 && temp.B == 1 && temp.A > 150) { + bitmap.SetPixel(i, j, Color.FromArgb(temp.A, 5, 5, 5)); + } + } + } + } + + /// <summary> + /// Creates a color for the given value. And guarantees that it doesn't get transparent + /// </summary> + /// <param name="colorValue">Value of the color</param> + /// <returns>Color struct</returns> + protected Color GetColor(long colorValue) { + Color color = Color.FromArgb((int)colorValue); + if (color.R == 0 && color.G == 0 && color.B == 0) { + color = Color.FromArgb(5, 5, 5); + } + if (color.R == 1 && color.G == 1 && color.B == 1) { + color = Color.FromArgb(5, 5, 5); + } + return color; + } + + /// <summary> + /// Creates a font object based on the given name + /// </summary> + /// <param name="name">Name of the font</param> + /// <returns>Font </returns> + protected Font getFont(String name) { + GUIFont guiFont = GUIFontManager.GetFont(name); + Type guiFontType = typeof(GUIFont); + FieldInfo styleFieldInfo = guiFontType.GetField("_fontStyle", + BindingFlags.NonPublic | BindingFlags.Instance); + FontStyle style = (FontStyle)styleFieldInfo.GetValue(guiFont); + return new Font(guiFont.FileName, guiFont.FontSize, style); + } + + /// <summary> + /// Loads the bitmap with the given filename + /// </summary> + /// <param name="fileName">Filename of the bitmap</param> + /// <returns>Bitmap</returns> + protected Bitmap loadBitmap(String fileName) { + Bitmap result = null; + String realFileName = GUIPropertyManager.Parse(fileName); + String location = GUIGraphicsContext.Skin + @"\media\" + realFileName; + if (File.Exists(location)) { + result = new Bitmap(location); + updateBitmap(result); + } + return result; + } + #endregion + + #region public methods + /// <summary> + /// Draws the element for the cache status. Only implemented in some elements + /// </summary> + /// <param name="graph">Graphics</param> + /// <param name="cacheFill">Status of the cache</param> + public virtual void DrawCacheStatus(Graphics graph, float cacheFill) { + } + #endregion + } +} Added: trunk/plugins/My MPlayer/ExternalOSDLibrary/Elements/ButtonElement.cs =================================================================== --- trunk/plugins/My MPlayer/ExternalOSDLibrary/Elements/ButtonElement.cs (rev 0) +++ trunk/plugins/My MPlayer/ExternalOSDLibrary/Elements/ButtonElement.cs 2007-09-18 21:50:12 UTC (rev 938) @@ -0,0 +1,180 @@ +#region Copyright (C) 2006-2007 MisterD + +/* + * Copyright (C) 2006-2007 MisterD + * + * This Program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This Program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with GNU Make; see the file COPYING. If not, write to + * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + * http://www.gnu.org/copyleft/gpl.html + * + */ + +#endregion + +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Drawing.Drawing2D; +using System.Drawing.Imaging; +using System.Reflection; +using System.Text; +using MediaPortal.GUI.Library; + +namespace ExternalOSDLibrary { + /// <summary> + /// This class represents a GUIButtoncontrol + /// </summary> + public class ButtonElement : BaseElement { + #region variables + /// <summary> + /// GUIButtonControl + /// </summary> + private GUIButtonControl _button; + + /// <summary> + /// Focus image + /// </summary> + private Bitmap _focusBitmap; + + /// <summary> + /// Non focus image + /// </summary> + private Bitmap _noFocusBitmap; + + /// <summary> + /// Hover image + /// </summary> + private Bitmap _hoverBitmap; + + /// <summary> + /// Font + /// </summary> + private Font _font; + + /// <summary> + /// Text color + /// </summary> + private Color _textColor; + + /// <summary> + /// Text color non focus + /// </summary> + private Color _textColorNoFocus; + + /// <summary> + /// Disabled text color + /// </summary> + private Color _disabledColor; + + /// <summary> + /// X-coordinate of the hover image + /// </summary> + private int _hoverX; + + /// <summary> + /// Y-coordinate of the hover image + /// </summary> + private int _hoverY; + + /// <summary> + /// Width of the hover image + /// </summary> + private int _hoverWidth; + + /// <summary> + /// Height of the hover image + /// </summary> + private int _hoverHeight; + #endregion + + #region ctor + /// <summary> + /// Creates the element and retrieves all information from the control + /// </summary> + /// <param name="control">GUIControl</param> + public ButtonElement(GUIControl control) { + _button = control as GUIButtonControl; + _font = getFont(_button.FontName); + _focusBitmap = loadBitmap(_button.TexutureFocusName); + _noFocusBitmap = loadBitmap(_button.TexutureNoFocusName); + Type buttonType = typeof(GUIButtonControl); + FieldInfo hoverFileNameFieldInfo = buttonType.GetField("_hoverFilename", + BindingFlags.NonPublic | BindingFlags.Instance); + _hoverBitmap = loadBitmap(hoverFileNameFieldInfo.GetValue(_button).ToString()); + _textColor = GetColor(_button.TextColor); + FieldInfo textColorNoFocusFieldInfo = buttonType.GetField("_textColorNoFocus", + BindingFlags.NonPublic | BindingFlags.Instance); + _textColorNoFocus = GetColor(long.Parse(textColorNoFocusFieldInfo.GetValue(_button).ToString())); + _disabledColor = GetColor(_button.DisabledColor); + FieldInfo hoverXFieldInfo = buttonType.GetField("_hoverX", + BindingFlags.NonPublic | BindingFlags.Instance); + _hoverX = Int32.Parse(hoverXFieldInfo.GetValue(_button).ToString()); + FieldInfo hoverYFieldInfo = buttonType.GetField("_hoverY", + BindingFlags.NonPublic | BindingFlags.Instance); + _hoverY = Int32.Parse(hoverYFieldInfo.GetValue(_button).ToString()); + FieldInfo hoverWidthFieldInfo = buttonType.GetField("_hoverWidth", + BindingFlags.NonPublic | BindingFlags.Instance); + _hoverWidth = Int32.Parse(hoverWidthFieldInfo.GetValue(_button).ToString()); + FieldInfo hoverHeightFieldInfo = buttonType.GetField("_hoverHeight", + BindingFlags.NonPublic | BindingFlags.Instance); + _hoverHeight = Int32.Parse(hoverHeightFieldInfo.GetValue(_button).ToString()); + Log.Debug("VideoPlayerOSD: Found button element: " + _button.GetID); + } + #endregion + + #region implmenented abstract method + /// <summary> + /// Draws the element on the given graphics + /// </summary> + /// <param name="graph">Graphics</param> + public override void DrawElement(Graphics graph) { + if (_button.Visible) { + if (_button.Focus) { + if (_focusBitmap != null) { + graph.DrawImage(_focusBitmap, (float)_button.Location.X, (float)_button.Location.Y, (float)_button.Size.Width, (float)_button.Size.Height); + } + if (_hoverBitmap != null) { + graph.DrawImage(_hoverBitmap, _hoverX, _hoverY, _hoverWidth, _hoverHeight); + } + } else { + if (_noFocusBitmap != null) { + graph.DrawImage(_noFocusBitmap, (float)_button.Location.X, (float)_button.Location.Y, (float)_button.Size.Width, (float)_button.Size.Height); + } + } + int labelWidth = _button.Width - 2 * _button.TextOffsetX; + if (labelWidth <= 0) { + return; + } + SolidBrush brush = new SolidBrush(_button.Disabled ? _disabledColor : _button.Focus ? _textColor : _textColorNoFocus); + + // render the text on the button + int x = 0; + + switch (_button.TextAlignment) { + case GUIControl.Alignment.ALIGN_LEFT: + x = _button.TextOffsetX + _button.XPosition; + break; + + case GUIControl.Alignment.ALIGN_RIGHT: + x = _button.XPosition + _button.Width - _button.TextOffsetX; + break; + } + Rectangle rectangle = new Rectangle(x, _button.YPosition + _button.TextOffsetY, labelWidth, _button.Height); + String label = _button.Label; + graph.DrawString(GUIPropertyManager.Parse(label), _font, brush, rectangle, StringFormat.GenericTypographic); + } + } + #endregion + } +} Added: trunk/plugins/My MPlayer/ExternalOSDLibrary/Elements/CheckMarkElement.cs =================================================================== --- trunk/plugins/My MPlayer/ExternalOSDLibrary/Elements/CheckMarkElement.cs (rev 0) +++ trunk/plugins/My MPlayer/ExternalOSDLibrary/Elements/CheckMarkElement.cs 2007-09-18 21:50:12 UTC (rev 938) @@ -0,0 +1,153 @@ +#region Copyright (C) 2006-2007 MisterD + +/* + * Copyright (C) 2006-2007 MisterD + * + * This Program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This Program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with GNU Make; see the file COPYING. If not, write to + * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + * http://www.gnu.org/copyleft/gpl.html + * + */ + +#endregion + +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Drawing.Drawing2D; +using System.Drawing.Imaging; +using System.Reflection; +using System.Text; +using MediaPortal.GUI.Library; + +namespace ExternalOSDLibrary { + /// <summary> + /// This class represents a GUICheckMarkControl + /// </summary> + public class CheckMarkElement : BaseElement { + #region variables + /// <summary> + /// GUICheckMarkControl + /// </summary> + private GUICheckMarkControl _checkMark; + + /// <summary> + /// Check focus image + /// </summary> + private Bitmap _checkFocusBitmap; + + /// <summary> + /// Check non focus image + /// </summary> + private Bitmap _checkNoFocusBitmap; + + /// <summary> + /// Width of the checkMark + /// </summary> + private int _checkMarkWidth; + + /// <summary> + /// Height of the checkMark + /// </summary> + private int _checkMarkHeight; + + /// <summary> + /// Font + /// </summary> + private Font _font; + + /// <summary> + /// Disabled text color + /// </summary> + private Color _disabledColor; + + /// <summary> + /// Text color + /// </summary> + private Color _textColor; + #endregion + + #region ctor + /// <summary> + /// Creates the element and retrieves all information from the control + /// </summary> + /// <param name="control">GUIControl</param> + public CheckMarkElement(GUIControl control) { + _checkMark = control as GUICheckMarkControl; + Type buttonType = typeof(GUICheckMarkControl); + FieldInfo checkFocusFieldInfo = buttonType.GetField("_checkMarkFocusTextureName", + BindingFlags.NonPublic | BindingFlags.Instance); + _checkFocusBitmap = loadBitmap(checkFocusFieldInfo.GetValue(_checkMark).ToString()); + FieldInfo checkNoFocusFieldInfo = buttonType.GetField("_checkMarkNoFocusTextureName", + BindingFlags.NonPublic | BindingFlags.Instance); + _checkNoFocusBitmap = loadBitmap(checkNoFocusFieldInfo.GetValue(_checkMark).ToString()); + FieldInfo checkMarkWidthFieldInfo = buttonType.GetField("_checkMarkWidth", + BindingFlags.NonPublic | BindingFlags.Instance); + _checkMarkWidth = Int32.Parse(checkMarkWidthFieldInfo.GetValue(_checkMark).ToString()); + FieldInfo checkMarkHeightFieldInfo = buttonType.GetField("_checkMarkHeight", + BindingFlags.NonPublic | BindingFlags.Instance); + _checkMarkHeight = Int32.Parse(checkMarkHeightFieldInfo.GetValue(_checkMark).ToString()); + _font = getFont(_checkMark.FontName); + _disabledColor = GetColor(_checkMark.DisabledColor); + _textColor = GetColor(_checkMark.TextColor); + Log.Debug("VideoPlayerOSD: Found checkMark element: " + _checkMark.GetID); + } + #endregion + + #region implmenented abstract method + /// <summary> + /// Draws the element on the given graphics + /// </summary> + /// <param name="graph">Graphics</param> + public override void DrawElement(Graphics graph) { + if (_checkMark.Visible) { + int dwTextPosX = _checkMark.XPosition; + int dwCheckMarkPosX = _checkMark.XPosition; + Rectangle _rectangle = new Rectangle() ; + _rectangle.X = _checkMark.YPosition; + _rectangle.Y = _checkMark.YPosition; + _rectangle.Height = _checkFocusBitmap.Height; + if (null != _font) { + SizeF sizeF ; + if (_checkMark.TextAlignment == GUIControl.Alignment.ALIGN_LEFT) { + sizeF = graph.MeasureString(_checkMark.Label, _font); + dwCheckMarkPosX += ((int)(sizeF.Width) + 5); + } else { + dwTextPosX = (dwCheckMarkPosX + _checkFocusBitmap.Width + 5); + sizeF = graph.MeasureString(_checkMark.Label, _font); + } + if (_checkMark.Disabled) { + SolidBrush brush = new SolidBrush(_disabledColor); + graph.DrawString(_checkMark.Label, _font, brush, dwTextPosX, _checkMark.YPosition); + } else { + if (_checkMark.Focus) { + SolidBrush brush = new SolidBrush(_textColor); + graph.DrawString(_checkMark.Label, _font, brush, dwTextPosX, _checkMark.YPosition); + } + else { + SolidBrush brush = new SolidBrush(_disabledColor); + graph.DrawString(_checkMark.Label, _font, brush, dwTextPosX, _checkMark.YPosition); + } + } + } + if (_checkMark.Selected) { + graph.DrawImage(_checkFocusBitmap, dwCheckMarkPosX, _checkMark.YPosition); + } else { + graph.DrawImage(_checkNoFocusBitmap, dwCheckMarkPosX, _checkMark.YPosition); + } + } + } + #endregion + } +} Added: trunk/plugins/My MPlayer/ExternalOSDLibrary/Elements/FadeLabelElement.cs =================================================================== --- trunk/plugins/My MPlayer/ExternalOSDLibrary/Elements/FadeLabelElement.cs (rev 0) +++ trunk/plugins/My MPlayer/ExternalOSDLibrary/Elements/FadeLabelElement.cs 2007-09-18 21:50:12 UTC (rev 938) @@ -0,0 +1,89 @@ +#region Copyright (C) 2006-2007 MisterD + +/* + * Copyright (C) 2006-2007 MisterD + * + * This Program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This Program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with GNU Make; see the file COPYING. If not, write to + * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + * http://www.gnu.org/copyleft/gpl.html + * + */ + +#endregion + +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Text; +using MediaPortal.GUI.Library; + +namespace ExternalOSDLibrary { + /// <summary> + /// This class represents a GUIFadeLabel + /// </summary> + public class FadeLabelElement : BaseElement { + #region variables + /// <summary> + /// GUIFadeLabel + /// </summary> + private GUIFadeLabel _label; + + /// <summary> + /// Font + /// </summary> + private Font _font; + + /// <summary> + /// Brush + /// </summary> + private Brush _brush; + #endregion + + #region ctor + /// <summary> + /// Creates the element and retrieves all information from the control + /// </summary> + /// <param name="control">GUIControl</param> + public FadeLabelElement(GUIControl control) { + _label = control as GUIFadeLabel; + _font = getFont(_label.FontName); + _brush = new SolidBrush(GetColor(_label.TextColor)); + Log.Debug("VideoPlayerOSD: Found label element: " + _label.Name + "/" + _font.Name); + } + #endregion + + #region implmenented abstract method + /// <summary> + /// Draws the element on the given graphics + /// </summary> + /// <param name="graph">Graphics</param> + public override void DrawElement(Graphics graph) { + if (_label.Visible) { + GUIControl.Alignment alignment = _label.TextAlignment; + RectangleF rectangle; + String text = GUIPropertyManager.Parse(_label.Label); + SizeF sizeF = graph.MeasureString(text, _font); + if (alignment == GUIControl.Alignment.ALIGN_LEFT) { + rectangle = new RectangleF((float)_label.Location.X, (float)_label.Location.Y, _label.Width, _label.Height); + } else if (alignment == GUIControl.Alignment.ALIGN_RIGHT) { + rectangle = new RectangleF((float)_label.Location.X - sizeF.Width, (float)_label.Location.Y, _label.Width, _label.Height); + } else { + rectangle = new RectangleF((float)_label.Location.X - (sizeF.Width / 2), (float)_label.Location.Y - (sizeF.Height / 2), _label.Width, _label.Height); + } + graph.DrawString(text, _font, _brush, rectangle,StringFormat.GenericTypographic); + } + } + #endregion + } +} Added: trunk/plugins/My MPlayer/ExternalOSDLibrary/Elements/ImageElement.cs =================================================================== --- trunk/plugins/My MPlayer/ExternalOSDLibrary/Elements/ImageElement.cs (rev 0) +++ trunk/plugins/My MPlayer/ExternalOSDLibrary/Elements/ImageElement.cs 2007-09-18 21:50:12 UTC (rev 938) @@ -0,0 +1,106 @@ +#region Copyright (C) 2006-2007 MisterD + +/* + * Copyright (C) 2006-2007 MisterD + * + * This Program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This Program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with GNU Make; see the file COPYING. If not, write to + * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + * http://www.gnu.org/copyleft/gpl.html + * + */ + +#endregion + +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Drawing.Imaging; +using System.Runtime.InteropServices; +using System.Text; +using MediaPortal.GUI.Library; + +namespace ExternalOSDLibrary { + /// <summary> + /// This class represents a GUIImage + /// </summary> + public class ImageElement : BaseElement { + #region variables + /// <summary> + /// GUIImage + /// </summary> + private GUIImage _image; + + /// <summary> + /// Image of this element + /// </summary> + private Bitmap _bitmap; + #endregion + + #region ctor + /// <summary> + /// Creates the element and retrieves all information from the control + /// </summary> + /// <param name="control">GUIControl</param> + public ImageElement(GUIControl control) { + _image = control as GUIImage; + _bitmap = loadBitmap(_image.FileName); + Log.Debug("VideoPlayerOSD: Found image element: " + _image.FileName); + } + #endregion + + #region implmenented abstract method + /// <summary> + /// Draws the element on the given graphics + /// </summary> + /// <param name="graph">Graphics</param> + public override void DrawElement(Graphics graph) { + if (_image.Visible &&!_image.FileName.Equals("black.bmp")) { + DrawElementAlternative(graph,GetImageRectangle()); + } + } + #endregion + + #region public methods + /// <summary> + /// Gets the rectangle of the image + /// </summary> + /// <returns>Rectangle of the image</returns> + public RectangleF GetImageRectangle() { + return new RectangleF(_image.XPosition, _image.YPosition, _image.Width, _image.Height); + } + + /// <summary> + /// Draws the element for additional osd informations + /// </summary> + /// <param name="graph">Graphics</param> + /// <param name="rectangle">Rectangle of the image</param> + public void DrawElementAlternative(Graphics graph,RectangleF rectangle) { + if (_bitmap != null) { + graph.DrawImage(_bitmap, rectangle); + } + } + #endregion + + #region public overrides methods + /// <summary> + /// Draws the element for the cache status. + /// </summary> + /// <param name="graph">Graphics</param> + /// <param name="cacheFill">Status of the cache</param> + public override void DrawCacheStatus(Graphics graph, float cacheFill) { + DrawElementAlternative(graph,GetImageRectangle()); + } + #endregion + } +} Added: trunk/plugins/My MPlayer/ExternalOSDLibrary/Elements/LabelElement.cs =================================================================== --- trunk/plugins/My MPlayer/ExternalOSDLibrary/Elements/LabelElement.cs (rev 0) +++ trunk/plugins/My MPlayer/ExternalOSDLibrary/Elements/LabelElement.cs 2007-09-18 21:50:12 UTC (rev 938) @@ -0,0 +1,140 @@ +#region Copyright (C) 2006-2007 MisterD + +/* + * Copyright (C) 2006-2007 MisterD + * + * This Program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This Program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with GNU Make; see the file COPYING. If not, write to + * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + * http://www.gnu.org/copyleft/gpl.html + * + */ + +#endregion + +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Text; +using MediaPortal.GUI.Library; + +namespace ExternalOSDLibrary { + /// <summary> + /// This class represents a GUILabelControl + /// </summary> + public class LabelElement : BaseElement { + #region variables + /// <summary> + /// GUILabelControl + /// </summary> + private GUILabelControl _label; + + /// <summary> + /// Font + /// </summary> + private Font _font; + + /// <summary> + /// Brush + /// </summary> + private Brush _brush; + #endregion + + #region ctor + /// <summary> + /// Creates the element and retrieves all information from the control + /// </summary> + /// <param name="control">GUIControl</param> + public LabelElement(GUIControl control) { + _label = control as GUILabelControl; + _font = getFont(_label.FontName); + _brush = new SolidBrush(GetColor(_label.TextColor)); + Log.Debug("VideoPlayerOSD: Found label element: " + _label.Name + "/" + _font.Name); + } + #endregion + + #region implmenented abstract method + /// <summary> + /// Draws the element on the given graphics + /// </summary> + /// <param name="graph">Graphics</param> + public override void DrawElement(Graphics graph) { + if (_label.Visible) { + DrawStandard(graph, _label.Label); + } + } + #endregion + + #region public methods + /// <summary> + /// Draws the element for additional osd informations + /// </summary> + /// <param name="graph">Graphics</param> + /// <param name="label">Label content</param> + /// <param name="strikeout">Strikeout the label, when true</param> + /// <param name="rectangle">Rectangle for the label</param> + public void DrawElementAlternative(Graphics graph, String label, bool strikeout, RectangleF rectangle) { + Font temp = _font; + if (strikeout) { + FontStyle style = _font.Style | FontStyle.Strikeout; + temp = new Font(_font.FontFamily.Name, _font.Size, style); + } + graph.DrawString(GUIPropertyManager.Parse(label), temp, _brush, rectangle, StringFormat.GenericTypographic); + } + + /// <summary> + /// Returns the rectangle for the given label + /// </summary> + /// <param name="graph">Graphics</param> + /// <param name="label">Label</param> + /// <returns>Rectangle</returns> + public RectangleF GetStringRectangle(Graphics graph, String label) { + SizeF size = graph.MeasureString(label, _font); + return new RectangleF((float)_label.Location.X, (float)_label.Location.Y, size.Width, _label.Height); + } + #endregion + + #region public overrides methods + /// <summary> + /// Draws the element for the cache status. Only implemented in some elements + /// </summary> + /// <param name="graph">Graphics</param> + /// <param name="cacheFill">Status of the cache</param> + public override void DrawCacheStatus(Graphics graph, float cacheFill) { + if(_label.Label.Contains("#currentremaining")){ + DrawStandard(graph, String.Format("{0:00.00}", cacheFill) + " %"); + } + } + #endregion + + #region private methods + /// <summary> + /// Draws the element in its standard way + /// </summary> + /// <param name="graph">Graphics</param> + /// <param name="label">Label</param> + private void DrawStandard(Graphics graph, String label) { + GUIControl.Alignment alignment = _label.TextAlignment; + RectangleF rectangle; + if (alignment == GUIControl.Alignment.ALIGN_LEFT) { + rectangle = new RectangleF((float)_label.Location.X, (float)_label.Location.Y, _label.Width, _label.Height); + } else if (alignment == GUIControl.Alignment.ALIGN_RIGHT) { + rectangle = new RectangleF((float)_label.Location.X - _label.TextWidth, (float)_label.Location.Y, _label.Width, _label.Height); + } else { + rectangle = new RectangleF((float)_label.Location.X - (_label.TextWidth / 2), (float)_label.Location.Y - (_label.TextHeight / 2), _label.Width, _label.Height); + } + DrawElementAlternative(graph, label, false, rectangle); + } + #endregion + } +} Added: trunk/plugins/My MPlayer/ExternalOSDLibrary/Elements/ListElement.cs =================================================================== --- trunk/plugins/My MPlayer/ExternalOSDLibrary/Elements/ListElement.cs (rev 0) +++ trunk/plugins/My MPlayer/ExternalOSDLibrary/Elements/ListElement.cs 2007-09-18 21:50:12 UTC (rev 938) @@ -0,0 +1,870 @@ +#region Copyright (C) 2006-2007 MisterD + +/* + * Copyright (C) 2006-2007 MisterD + * + * This Program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This Program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with GNU Make; see the file COPYING. If not, write to + * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + * http://www.gnu.org/copyleft/gpl.html + * + */ + +#endregion + +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Reflection; +using System.Text; +using MediaPortal.GUI.Library; + +namespace ExternalOSDLibrary { + /// <summary> + /// This class represents a GUIListElement + /// </summary> + public class ListElement : BaseElement { + #region internal classes + /// <summary> + /// Internal class for ListButtons + /// </summary> + private class ListButtonElement : BaseElement { + #region variables + /// <summary> + /// Focus + /// </summary> + private bool _focus; + + /// <summary> + /// Image focus + /// </summary> + private Bitmap _imageFocus; + + /// <summary> + /// Image non focus + /// </summary> + private Bitmap _imageNonFocus; + + /// <summary> + /// X Position + /// </summary> + private int _positionX; + + /// <summary> + /// Y Position + /// </summary> + private int _positionY; + + /// <summary> + /// Width + /// </summary> + private float _width; + + /// <summary> + /// Height + /// </summary> + private float _height; + #endregion + + #region ctor + /// <summary> + /// Creates the listbutton element + /// </summary> + /// <param name="positionX">X Position</param> + /// <param name="positionY">Y Position</param> + /// <param name="width">Width</param> + /// <param name="height">Height</param> + /// <param name="buttonFocusName">FileName of the focus image</param> + /// <param name="buttonNonFocusName">FileName of the non focus image</param> + public ListButtonElement(int positionX, int positionY, float width, float height, String buttonFocusName, String buttonNonFocusName) { + _imageFocus = loadBitmap(buttonFocusName); + _imageNonFocus = loadBitmap(buttonNonFocusName); + _positionX = positionX; + _positionY = positionY; + _width = width; + _height = height; + _focus = false; + } + #endregion + + #region implmenented abstract method + /// <summary> + /// Draws the element on the given graphics + /// </summary> + /// <param name="graph">Graphics</param> + public override void DrawElement(Graphics graph) { + if (_focus) { + if (_imageFocus != null) { + graph.DrawImage(_imageFocus, _positionX, _positionY, _width, _height); + } + } else { + if (_imageNonFocus != null) { + graph.DrawImage(_imageNonFocus, _positionX, _positionY, _width, _height); + } + } + } + #endregion + + #region properties + /// <summary> + /// Gets/Sets the focus + /// </summary> + public bool Focus { + get { return _focus; } + set { _focus = value; } + } + #endregion + + #region public methods + /// <summary> + /// Sets the position + /// </summary> + /// <param name="x">X Position</param> + /// <param name="y">Y Position</param> + public void SetPosition(int x, int y) { + _positionX = x; + _positionY = y; + } + #endregion + + } + + /// <summary> + /// Internal class for ListLabels + /// </summary> + private class ListLabelElement : BaseElement { + #region variables + /// <summary> + /// Alignment + /// </summary> + private GUIControl.Alignment _alignment; + + /// <summary> + /// X Position + /// </summary> + private float _xPosition; + + /// <summary> + /// Y Position + /// </summary> + private float _yPosition; + + /// <summary> + /// Width + /// </summary> + private float _width; + + /// <summary> + /// Height + /// </summary> + private float _height; + + /// <summary> + /// Font + /// </summary> + private Font _font; + + /// <summary> + /// Brush + /// </summary> + private SolidBrush _brush; + + /// <summary> + /// Label + /// </summary> + private String _label; + #endregion + + #region ctor + /// <summary> + /// Creates the element + /// </summary> + public ListLabelElement() { + _xPosition = 0f; + _yPosition = 0f; + _width = 0f; + _height = 0f; + _label = String.Empty; + } + #endregion + + #region implmenented abstract method + /// <summary> + /// Draws the element on the given graphics + /// </summary> + /// <param name="graph">Graphics</param> + public override void DrawElement(Graphics graph) { + RectangleF rectangle; + SizeF stringSize = graph.MeasureString(_label, _font); + if (_alignment == GUIControl.Alignment.ALIGN_LEFT) { + rectangle = new RectangleF(_xPosition, _yPosition, _width, _height); + } else if (_alignment == GUIControl.Alignment.ALIGN_RIGHT) { + rectangle = new RectangleF(_xPosition - stringSize.Width, _yPosition, _width, _height); + } else { + rectangle = new RectangleF(_xPosition - (stringSize.Width / 2), _yPosition - (stringSize.Height / 2), _width, _height); + } + graph.DrawString(GUIPropertyManager.Parse(_label), _font, _brush, rectangle, StringFormat.GenericTypographic); + } + #endregion + + #region properties + /// <summary> + /// Gets/Sets the alignment + /// </summary> + public GUIControl.Alignment Alignment { + get { return _alignment; } + set { _alignment = value; } + } + + /// <summary> + /// Gets/Sets the x position + /// </summary> + public float XPosition { + get { return _xPosition; } + set { _xPosition = value; } + } + + /// <summary> + /// Gets/Sets the y position + /// </summary> + public float YPosition { + get { return _yPosition; } + set { _yPosition = value; } + } + + /// <summary> + /// Gets/Sets the width + /// </summary> + public float Width { + get { return _width; } + set { _width = value; } + } + + /// <summary> + /// Gets/Sets the height + /// </summary> + public float Height { + get { return _height; } + set { _height = value; } + } + + /// <summary> + /// Gets/Sets the label + /// </summary> + public String Label { + get { return _label; } + set { _label = value; } + } + + /// <summary> + /// Gets/Sets the font + /// </summary> + public Font Font { + get { return _font; } + set { _font = value; } + } + + /// <summary> + /// Gets/Sets the brush + /// </summary> + public SolidBrush Brush { + get { return _brush; } + set { _brush = value; } + } + #endregion + + #region public methods + /// <summary> + /// Returns the size of the string of this listlabel element + /// </summary> + /// <param name="graph">Graphics</param> + /// <returns>Size of the label</returns> + public SizeF GetStringSize(Graphics graph) { + return graph.MeasureString(_label, _font); + } + #endregion + } + #endregion + + #region variables + /// <summary> + /// GUIListControl + /// </summary> + private GUIListControl _list; + + /// <summary> + /// Items per page + /// </summary> + private int _itemsPerPage; + + /// <summary> + /// Offset + /// </summary> + private int _offset; + + /// <summary> + /// Cursor position + /// </summary> + private int _cursorX; + + /// <summary> + /// DrawFocus + /// </summary> + private bool _drawFocus; + + /// <summary> + /// ListType + /// </summary> + private GUIListControl.ListType _listType; + + /// <summary> + /// Alignment of the elements + /// </summary> + private GUIControl.Alignment _alignment; + + /// <summary> + /// List of the buttons + /// </summary> + private List<ListButtonElement> _listButtons; + + /// <summary> + /// List of the items + /// </summary> + private List<GUIListItem> _listItems; + + /// <summary> + /// List of the Label1's + /// </summary> + private List<ListLabelElement> _labelControls1; + + /// <summary> + /// List of the Label2's + /// </summary> + private List<ListLabelElement> _labelControls2; + + /// <summary> + /// List of the Label3's + /// </summary> + private List<ListLabelElement> _labelControls3; + + /// <summary> + /// Cached Images + /// </summary> + private Dictionary<String, Bitmap> _cachedBitmaps; + + /// <summary> + /// Reflection field info for listItems + /// </summary> + private FieldInfo _listItemsFieldInfo; + + /// <summary> + /// Reflection field info for the offset + /// </summary> + private FieldInfo _offsetFieldInfo; + + /// <summary> + /// Reflection field info for the cursor position + /// </summary> + private FieldInfo _cursorXFieldInfo; + + /// <summary> + /// Played Color + /// </summary> + private long _playedColor; + + /// <summary> + /// Remote Color + /// </summary> + private long _remoteColor; + + /// <summary> + /// Download Color + /// </summary> + private long _downloadColor; + + /// <summary> + /// Text line + /// </summary> + private String _textLine; + + /// <summary> + /// VerticalScrollbarElement + /// </summary> + private VerticalScrollBarElement _verticalScrollBarElement; + #endregion + + #region ctor + /// <summary> + /// Creates the element and retrieves all information from the control + /// </summary> + /// <param name="control">GUIControl</param> + public ListElement(GUIControl control) { + _list = control as GUIListControl; + Type listType = typeof(GUIListControl); + FieldInfo alignmentFieldInfo = listType.GetField("_textAlignment", + BindingFlags.NonPublic | BindingFlags.Instance); + _alignment = (GUIControl.Alignment)alignmentFieldInfo.GetValue(_list); + + FieldInfo listTypeFieldInfo = listType.GetField("_listType", + BindingFlags.NonPublic | BindingFlags.Instance); + _listType = (GUIListControl.ListType)listTypeFieldInfo.GetValue(_list); + + FieldInfo drawFocusFieldInfo = listType.GetField("_drawFocus", + BindingFlags.NonPublic | BindingFlags.Instance); + _drawFocus = (bool)drawFocusFieldInfo.GetValue(_list); + + _cursorXFieldInfo = listType.GetField("_cursorX", + BindingFlags.NonPublic | BindingFlags.Instance); + _cursorX = (int)_cursorXFieldInfo.GetValue(_list); + + _offsetFieldInfo = listType.GetField("_offset", + BindingFlags.NonPublic | BindingFlags.Instance); + _offset = (int)_offsetFieldInfo.GetValue(_list); + + FieldInfo itemsPerPageFieldInfo = listType.GetField("_itemsPerPage", + BindingFlags.NonPublic | BindingFlags.Instance); + _itemsPerPage = (int)itemsPerPageFieldInfo.GetValue(_list); + + FieldInfo playedColorFieldInfo = listType.GetField("_playedColor", + BindingFlags.NonPublic | BindingFlags.Instance); + _playedColor = (int)itemsPerPageFieldInfo.GetValue(_list); + + FieldInfo remoteColorFieldInfo = listType.GetField("_remoteColor", + BindingFlags.NonPublic | BindingFlags.Instance); + _remoteColor = (long)remoteColorFieldInfo.GetValue(_list); + + FieldInfo downloadColorFieldInfo = listType.GetField("_downloadColor", + BindingFlags.NonPublic | BindingFlags.Instance); + _downloadColor = (long)downloadColorFieldInfo.GetValue(_list); + + FieldInfo spinControlPositionXFieldInfo = listType.GetField("_spinControlPositionX", + BindingFlags.NonPublic | BindingFlags.Instance); + int spinControlPositionX = (int)spinControlPositionXFieldInfo.GetValue(_list); + FieldInfo spinControlPositionYFieldInfo = listType.GetField("_spinControlPositionY", + BindingFlags.NonPublic | BindingFlags.Instance); + int spinControlPositionY = (int)spinControlPositionYFieldInfo.GetValue(_list); + _listButtons = new List<ListButtonElement>(); + _labelControls1 = new List<ListLabelElement>(); + _labelControls2 = new List<ListLabelElement>(); + _labelControls3 = new List<ListLabelElement>(); + _cachedBitmaps = new Dictionary<String, Bitmap>(); + AllocButtons(spinControlPositionX, spinControlPositionY); + _listItemsFieldInfo = listType.GetField("_listItems", + BindingFlags.NonPublic | BindingFlags.Instance); + initializeLabels(); + _verticalScrollBarElement = new VerticalScrollBarElement(_list.Scrollbar); + Log.Debug("VideoPlayerOSD: Found list element: "); + } + #endregion + + #region implmenented abstract method + /// <summary> + /// Draws the element on the given graphics + /// </summary> + /// <param name="graph">Graphics</param> + public override void DrawElement(Graphics graph) { + if (_list.Visible) { + _listItems = _listItemsFieldInfo.GetValue(_list) as List<GUIListItem>; + _offset = (int)_offsetFieldInfo.GetValue(_list); + _cursorX = (int)_cursorXFieldInfo.GetValue(_list); + int dwPosY = _list.YPosition; + // Render the buttons first. + for (int i = 0; i < _itemsPerPage; i++) { + if (i + _offset < _listItems.Count) { + // render item + bool gotFocus = false; + if (_drawFocus && i == _cursorX && _list.IsFocused && _listType == GUIListControl.ListType.CONTROL_LIST) + gotFocus = true; + RenderButton(graph, i, _list.XPosition, dwPosY, gotFocus); + } + dwPosY += _list.ItemHeight + _list.Space; + } + + // Render new item list + dwPosY = _list.YPosition; + for (int i = 0; i < _itemsPerPage; i++) { + int dwPosX = _list.XPosition; + if (i + _offset < _listItems.Count) { + int iconX; + int labelX; + int pinX; + + int ten = 10; + GUIGraphicsContext.ScaleHorizontal(ref ten); + switch (_alignment) { + case GUIControl.Alignm... [truncated message content] |
From: <an...@us...> - 2007-09-18 14:18:32
|
Revision: 937 http://mp-plugins.svn.sourceforge.net/mp-plugins/?rev=937&view=rev Author: and-81 Date: 2007-09-18 07:00:39 -0700 (Tue, 18 Sep 2007) Log Message: ----------- Modified Paths: -------------- trunk/plugins/IR Server Suite/Common/IrssComms/Client.cs trunk/plugins/IR Server Suite/Common/IrssComms/IrssComms.csproj trunk/plugins/IR Server Suite/Common/IrssComms/Server.cs Added Paths: ----------- trunk/plugins/IR Server Suite/Common/IrssComms/GenericPCQueue.cs trunk/plugins/IR Server Suite/Input Service/ trunk/plugins/IR Server Suite/Input Service/Input Service.csproj trunk/plugins/IR Server Suite/Input Service/InputService.cs trunk/plugins/IR Server Suite/Input Service/InputServiceInstaller.cs trunk/plugins/IR Server Suite/Input Service/Program.cs trunk/plugins/IR Server Suite/Input Service/Properties/ trunk/plugins/IR Server Suite/Input Service/Properties/AssemblyInfo.cs Removed Paths: ------------- trunk/plugins/IR Server Suite/Common/IrssComms/GenericMessageQueue.cs Modified: trunk/plugins/IR Server Suite/Common/IrssComms/Client.cs =================================================================== --- trunk/plugins/IR Server Suite/Common/IrssComms/Client.cs 2007-09-18 12:40:31 UTC (rev 936) +++ trunk/plugins/IR Server Suite/Common/IrssComms/Client.cs 2007-09-18 14:00:39 UTC (rev 937) @@ -31,7 +31,7 @@ volatile bool _processConnectionThread = false; volatile bool _connected = false; - GenericMessageQueue<IrssMessage> _messageQueue; + GenericPCQueue<IrssMessage> _messageQueue; ClientMessageSink _messageSink; @@ -93,7 +93,7 @@ _messageSink = messageSink; - _messageQueue = new GenericMessageQueue<IrssMessage>(new GenericMessageQueueSink<IrssMessage>(QueueMessageSink)); + _messageQueue = new GenericPCQueue<IrssMessage>(new GenericPCQueueSink<IrssMessage>(QueueMessageSink)); } #endregion Constructor Deleted: trunk/plugins/IR Server Suite/Common/IrssComms/GenericMessageQueue.cs =================================================================== --- trunk/plugins/IR Server Suite/Common/IrssComms/GenericMessageQueue.cs 2007-09-18 12:40:31 UTC (rev 936) +++ trunk/plugins/IR Server Suite/Common/IrssComms/GenericMessageQueue.cs 2007-09-18 14:00:39 UTC (rev 937) @@ -1,200 +0,0 @@ -using System; -using System.Collections; -using System.Collections.Generic; -using System.Diagnostics; -using System.Threading; - -namespace IrssComms -{ - - #region Delegates - - /// <summary> - /// Delegate for MessageQueue sink. - /// </summary> - /// <param name="obj">Generic object to process.</param> - public delegate void GenericMessageQueueSink<T>(T obj); - - #endregion Delegates - - /// <summary> - /// Implements a thread-safe Producer/Consumer Queue for messages. - /// </summary> - public class GenericMessageQueue<T> : IDisposable - { - - #region Variables - - Thread _workerThread; - Queue<T> _queue; - object _queueLock; - EventWaitHandle _queueWaitHandle; - volatile bool _processQueue; - - GenericMessageQueueSink<T> _messageSink; - - #endregion Variables - - #region Constructor - - /// <summary> - /// Create a new MessageQueue. - /// </summary> - /// <param name="sink">Where to send dequeued messages.</param> - public GenericMessageQueue(GenericMessageQueueSink<T> sink) - { - if (sink == null) - throw new ArgumentNullException("sink"); - - _messageSink = sink; - - // Create locking and control mechanisms ... - _queueLock = new object(); - _queueWaitHandle = new AutoResetEvent(false); - - // Create FIFO message queue - _queue = new Queue<T>(); - } - - #endregion Constructor - - #region IDisposable - - public void Dispose() - { - Dispose(true); - GC.SuppressFinalize(this); - } - - protected virtual void Dispose(bool disposing) - { - if (disposing) - { - // Dispose managed resources ... - if (_processQueue) - Stop(); - - _workerThread = null; - - _queue.Clear(); - _queue = null; - - _queueLock = null; - - _queueWaitHandle.Close(); - } - - // Free native resources ... - - } - - #endregion IDisposable - - #region Implementation - - /// <summary> - /// Start processing the queue. - /// </summary> - public void Start() - { - if (_processQueue) - return; - - _processQueue = true; - - // Create the worker thread ... - _workerThread = new Thread(new ThreadStart(WorkerThread)); - _workerThread.IsBackground = true; - _workerThread.Name = "Message Queue"; - - _workerThread.Start(); - } - - /// <summary> - /// Stop processing the queue. - /// </summary> - public void Stop() - { - if (!_processQueue) - return; - - // Signal the worker thread to stop ... - _processQueue = false; - _queueWaitHandle.Set(); - - // Join the worker thread and wait for it to finish ... - if (_workerThread != null && _workerThread.IsAlive && !_workerThread.Join(1000)) - { - _workerThread.Abort(); - _workerThread.Join(); - } - - _workerThread = null; - } - - /// <summary> - /// Add a generic object to the queue. - /// </summary> - /// <param name="obj">Generic object to place in the queue.</param> - public void Enqueue(T obj) - { - if (obj == null) - throw new ArgumentNullException("obj"); - - lock (_queueLock) - _queue.Enqueue(obj); - - _queueWaitHandle.Set(); - } - - /// <summary> - /// Clears the queue of any messages. - /// </summary> - public void ClearQueue() - { - lock (_queueLock) - { - _queue.Clear(); - } - } - - /// <summary> - /// Queue processing worker thread. - /// </summary> - void WorkerThread() - { - try - { - T obj = default(T); - bool didDequeue; - - while (_processQueue) - { - didDequeue = false; - - lock (_queueLock) - { - if (_queue.Count > 0) - { - obj = _queue.Dequeue(); - didDequeue = true; - } - } - - if (didDequeue) - _messageSink(obj); - else - _queueWaitHandle.WaitOne(); - } - } - catch (ThreadAbortException threadAbortException) - { - Trace.WriteLine(threadAbortException.ToString()); - } - } - - #endregion Implementation - - } - -} Added: trunk/plugins/IR Server Suite/Common/IrssComms/GenericPCQueue.cs =================================================================== --- trunk/plugins/IR Server Suite/Common/IrssComms/GenericPCQueue.cs (rev 0) +++ trunk/plugins/IR Server Suite/Common/IrssComms/GenericPCQueue.cs 2007-09-18 14:00:39 UTC (rev 937) @@ -0,0 +1,200 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.Diagnostics; +using System.Threading; + +namespace IrssComms +{ + + #region Delegates + + /// <summary> + /// Delegate for GenericPCQueue sink. + /// </summary> + /// <param name="obj">Generic object to process.</param> + public delegate void GenericPCQueueSink<T>(T obj); + + #endregion Delegates + + /// <summary> + /// Implements a thread-safe Producer/Consumer Queue for generics. + /// </summary> + public class GenericPCQueue<T> : IDisposable + { + + #region Variables + + Thread _workerThread; + Queue<T> _queue; + object _queueLock; + EventWaitHandle _queueWaitHandle; + volatile bool _processQueue; + + GenericPCQueueSink<T> _sink; + + #endregion Variables + + #region Constructor + + /// <summary> + /// Create a new MessageQueue. + /// </summary> + /// <param name="sink">Where to send dequeued messages.</param> + public GenericPCQueue(GenericPCQueueSink<T> sink) + { + if (sink == null) + throw new ArgumentNullException("sink"); + + _sink = sink; + + // Create locking and control mechanisms ... + _queueLock = new object(); + _queueWaitHandle = new AutoResetEvent(false); + + // Create FIFO generic queue + _queue = new Queue<T>(); + } + + #endregion Constructor + + #region IDisposable + + public void Dispose() + { + Dispose(true); + GC.SuppressFinalize(this); + } + + protected virtual void Dispose(bool disposing) + { + if (disposing) + { + // Dispose managed resources ... + if (_processQueue) + Stop(); + + _workerThread = null; + + _queue.Clear(); + _queue = null; + + _queueLock = null; + + _queueWaitHandle.Close(); + } + + // Free native resources ... + + } + + #endregion IDisposable + + #region Implementation + + /// <summary> + /// Start processing the queue. + /// </summary> + public void Start() + { + if (_processQueue) + return; + + _processQueue = true; + + // Create the worker thread ... + _workerThread = new Thread(new ThreadStart(WorkerThread)); + _workerThread.IsBackground = true; + _workerThread.Name = "IrssComms.GenericPCQueue"; + + _workerThread.Start(); + } + + /// <summary> + /// Stop processing the queue. + /// </summary> + public void Stop() + { + if (!_processQueue) + return; + + // Signal the worker thread to stop ... + _processQueue = false; + _queueWaitHandle.Set(); + + // Join the worker thread and wait for it to finish ... + if (_workerThread != null && _workerThread.IsAlive && !_workerThread.Join(1000)) + { + _workerThread.Abort(); + _workerThread.Join(); + } + + _workerThread = null; + } + + /// <summary> + /// Add a generic object to the queue. + /// </summary> + /// <param name="obj">Generic object to place in the queue.</param> + public void Enqueue(T obj) + { + if (obj == null) + throw new ArgumentNullException("obj"); + + lock (_queueLock) + _queue.Enqueue(obj); + + _queueWaitHandle.Set(); + } + + /// <summary> + /// Clears the queue of any messages. + /// </summary> + public void ClearQueue() + { + lock (_queueLock) + { + _queue.Clear(); + } + } + + /// <summary> + /// Queue processing worker thread. + /// </summary> + void WorkerThread() + { + try + { + T obj = default(T); + bool didDequeue; + + while (_processQueue) + { + didDequeue = false; + + lock (_queueLock) + { + if (_queue.Count > 0) + { + obj = _queue.Dequeue(); + didDequeue = true; + } + } + + if (didDequeue) + _sink(obj); + else + _queueWaitHandle.WaitOne(); + } + } + catch (ThreadAbortException threadAbortException) + { + Trace.WriteLine(threadAbortException.ToString()); + } + } + + #endregion Implementation + + } + +} Modified: trunk/plugins/IR Server Suite/Common/IrssComms/IrssComms.csproj =================================================================== --- trunk/plugins/IR Server Suite/Common/IrssComms/IrssComms.csproj 2007-09-18 12:40:31 UTC (rev 936) +++ trunk/plugins/IR Server Suite/Common/IrssComms/IrssComms.csproj 2007-09-18 14:00:39 UTC (rev 937) @@ -59,7 +59,7 @@ <Compile Include="Client.cs" /> <Compile Include="ClientManager.cs" /> <Compile Include="IrssMessage.cs" /> - <Compile Include="GenericMessageQueue.cs" /> + <Compile Include="GenericPCQueue.cs" /> <Compile Include="MessageManagerCombo.cs" /> <Compile Include="Server.cs" /> <Compile Include="Properties\AssemblyInfo.cs" /> Modified: trunk/plugins/IR Server Suite/Common/IrssComms/Server.cs =================================================================== --- trunk/plugins/IR Server Suite/Common/IrssComms/Server.cs 2007-09-18 12:40:31 UTC (rev 936) +++ trunk/plugins/IR Server Suite/Common/IrssComms/Server.cs 2007-09-18 14:00:39 UTC (rev 937) @@ -46,7 +46,7 @@ List<ClientManager> _clientManagers; - GenericMessageQueue<MessageManagerCombo> _messageQueue; + GenericPCQueue<MessageManagerCombo> _messageQueue; #endregion Variables @@ -63,7 +63,7 @@ _messageSink = messageSink; - _messageQueue = new GenericMessageQueue<MessageManagerCombo>(new GenericMessageQueueSink<MessageManagerCombo>(QueueMessageSink)); + _messageQueue = new GenericPCQueue<MessageManagerCombo>(new GenericPCQueueSink<MessageManagerCombo>(QueueMessageSink)); } #endregion Constructor Added: trunk/plugins/IR Server Suite/Input Service/Input Service.csproj =================================================================== --- trunk/plugins/IR Server Suite/Input Service/Input Service.csproj (rev 0) +++ trunk/plugins/IR Server Suite/Input Service/Input Service.csproj 2007-09-18 14:00:39 UTC (rev 937) @@ -0,0 +1,94 @@ +<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <PropertyGroup> + <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> + <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> + <ProductVersion>8.0.50727</ProductVersion> + <SchemaVersion>2.0</SchemaVersion> + <ProjectGuid>{8ADDE1CB-2D23-4AB1-88B1-A241C60C16BA}</ProjectGuid> + <OutputType>WinExe</OutputType> + <AppDesignerFolder>Properties</AppDesignerFolder> + <RootNamespace>InputService</RootNamespace> + <AssemblyName>Input Service</AssemblyName> + <StartupObject>InputService.Program</StartupObject> + <RunPostBuildEvent>OnOutputUpdated</RunPostBuildEvent> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> + <DebugSymbols>true</DebugSymbols> + <DebugType>full</DebugType> + <Optimize>false</Optimize> + <OutputPath>bin\Debug\</OutputPath> + <DefineConstants>DEBUG;TRACE</DefineConstants> + <ErrorReport>prompt</ErrorReport> + <WarningLevel>4</WarningLevel> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> + <DebugType>pdbonly</DebugType> + <Optimize>false</Optimize> + <OutputPath>bin\Release\</OutputPath> + <DefineConstants>TRACE</DefineConstants> + <ErrorReport>prompt</ErrorReport> + <WarningLevel>4</WarningLevel> + <PlatformTarget>AnyCPU</PlatformTarget> + <UseVSHostingProcess>false</UseVSHostingProcess> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' "> + <DebugSymbols>true</DebugSymbols> + <OutputPath>bin\x86\Debug\</OutputPath> + <DefineConstants>DEBUG;TRACE</DefineConstants> + <DebugType>full</DebugType> + <PlatformTarget>x86</PlatformTarget> + <ErrorReport>prompt</ErrorReport> + <TreatWarningsAsErrors>true</TreatWarningsAsErrors> + <UseVSHostingProcess>false</UseVSHostingProcess> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' "> + <OutputPath>bin\x86\Release\</OutputPath> + <DefineConstants> + </DefineConstants> + <DebugType>pdbonly</DebugType> + <PlatformTarget>x86</PlatformTarget> + <UseVSHostingProcess>false</UseVSHostingProcess> + <ErrorReport>prompt</ErrorReport> + <TreatWarningsAsErrors>true</TreatWarningsAsErrors> + </PropertyGroup> + <ItemGroup> + <Reference Include="System" /> + <Reference Include="System.Configuration.Install" /> + <Reference Include="System.Data" /> + <Reference Include="System.Management" /> + <Reference Include="System.ServiceProcess" /> + <Reference Include="System.Xml" /> + </ItemGroup> + <ItemGroup> + <Compile Include="InputService.cs"> + <SubType>Component</SubType> + </Compile> + <Compile Include="InputServiceInstaller.cs"> + <SubType>Component</SubType> + </Compile> + <Compile Include="Program.cs" /> + <Compile Include="Properties\AssemblyInfo.cs" /> + </ItemGroup> + <ItemGroup> + <ProjectReference Include="..\Common\IrssComms\IrssComms.csproj"> + <Project>{BCAFDF45-70DD-46FD-8B98-880DDA585AD2}</Project> + <Name>IrssComms</Name> + </ProjectReference> + <ProjectReference Include="..\Common\IrssUtils\IrssUtils.csproj"> + <Project>{CA15769C-232E-4CA7-94FD-206A06CA3ABB}</Project> + <Name>IrssUtils</Name> + </ProjectReference> + <ProjectReference Include="..\IR Server Plugins\IR Server Plugin Interface\IR Server Plugin Interface.csproj"> + <Project>{D8B3D28F-62CE-4CA7-86CE-B7EAD614A94C}</Project> + <Name>IR Server Plugin Interface</Name> + </ProjectReference> + </ItemGroup> + <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" /> + <!-- To modify your build process, add your task inside one of the targets below and uncomment it. + Other similar extension points exist, see Microsoft.Common.targets. + <Target Name="BeforeBuild"> + </Target> + <Target Name="AfterBuild"> + </Target> + --> +</Project> \ No newline at end of file Added: trunk/plugins/IR Server Suite/Input Service/InputService.cs =================================================================== --- trunk/plugins/IR Server Suite/Input Service/InputService.cs (rev 0) +++ trunk/plugins/IR Server Suite/Input Service/InputService.cs 2007-09-18 14:00:39 UTC (rev 937) @@ -0,0 +1,1125 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Diagnostics; +using System.IO; +using System.Net; +using System.Net.Sockets; +using System.Reflection; +using System.ServiceProcess; +using System.Text; +using System.Threading; +using System.Xml; + +using Microsoft.Win32; +using Microsoft.Win32.SafeHandles; + +using IRServerPluginInterface; +using IrssComms; +using IrssUtils; + +namespace InputService +{ + + #region Enumerations + + /// <summary> + /// Describes the operation mode of the IR Server. + /// </summary> + public enum IRServerMode + { + /// <summary> + /// Acts as a standard IR Server (Default). + /// </summary> + ServerMode = 0, + /// <summary> + /// Relays button presses to another IR Server. + /// </summary> + RelayMode = 1, + /// <summary> + /// Acts as a repeater for another IR Server's IR blasting. + /// </summary> + RepeaterMode = 2, + } + + #endregion Enumerations + + public class InputService : ServiceBase + { + + #region Constants + + static readonly string ConfigurationFile = Common.FolderAppData + "Input Service\\Input Service.xml"; + + #endregion Constants + + #region Variables + + List<ClientManager> _registeredClients; + List<ClientManager> _registeredRepeaters; + + Server _server = null; + Client _client = null; + + int _serverPort = 24000; + + IRServerMode _mode; + string _hostComputer; + + bool _registered = false; // Used for relay and repeater modes. + + string _pluginNameReceive = String.Empty; + IRServerPlugin _pluginReceive = null; + + string _pluginNameTransmit = String.Empty; + IRServerPlugin _pluginTransmit = null; + + #endregion Variables + + #region Constructor + + public InputService() + { + this.ServiceName = Program.ServiceName; + + //this.EventLog.Log = "Application"; + //this.AutoLog = true; + + this.CanHandlePowerEvent = true; + this.CanHandleSessionChangeEvent = false; + this.CanPauseAndContinue = false; + this.CanShutdown = true; + this.CanStop = true; + } + + #endregion Constructor + + #region Dispose + + protected override void Dispose(bool disposing) + { + base.Dispose(disposing); + } + + #endregion Dispose + + #region Service Methods + + protected override void OnStart(string[] args) + { + // TODO: Change log level to info for release. + IrssLog.LogLevel = IrssLog.Level.Debug; + IrssLog.Open(Common.FolderIrssLogs + "Input Service.log"); + + try + { + IrssLog.Info("Starting IR Server ..."); + + LoadSettings(); + + // Load IR Plugins ... + _pluginReceive = null; + _pluginTransmit = null; + + if (String.IsNullOrEmpty(_pluginNameReceive) && String.IsNullOrEmpty(_pluginNameTransmit)) + { + IrssLog.Warn("No transmit or receive plugin loaded"); + } + else + { + if (String.IsNullOrEmpty(_pluginNameReceive)) + { + IrssLog.Warn("No receiver plugin loaded"); + } + else + { + _pluginReceive = Program.GetPlugin(_pluginNameReceive); + } + + if (_pluginNameTransmit.Equals(_pluginNameReceive, StringComparison.InvariantCultureIgnoreCase)) + { + _pluginTransmit = _pluginReceive; + IrssLog.Info("Using the same plugin for transmit and receive"); + } + else if (String.IsNullOrEmpty(_pluginNameTransmit)) + { + IrssLog.Warn("No transmit plugin loaded"); + } + else + { + _pluginTransmit = Program.GetPlugin(_pluginNameTransmit); + } + } + + switch (_mode) + { + case IRServerMode.ServerMode: + { + StartServer(); + + IrssLog.Info("Started in Server Mode"); + break; + } + + case IRServerMode.RelayMode: + { + if (StartRelay()) + IrssLog.Info("Started in Relay Mode"); + else + IrssLog.Error("Failed to start in Relay Mode"); + break; + } + + case IRServerMode.RepeaterMode: + { + if (StartRepeater()) + IrssLog.Info("Started in Repeater Mode"); + else + IrssLog.Error("Failed to start in Repeater Mode"); + break; + } + } + + // Start plugin(s) ... + if (_pluginReceive != null) + { + try + { + if (_pluginReceive.Start()) + IrssLog.Info("Receiver plugin started: \"{0}\"", _pluginNameReceive); + else + IrssLog.Error("Failed to start receive plugin: \"{0}\"", _pluginNameReceive); + } + catch (Exception ex) + { + IrssLog.Error("Failed to start receive plugin: \"{0}\"", _pluginNameReceive); + IrssLog.Error(ex.ToString()); + } + } + + if (!_pluginNameTransmit.Equals(_pluginNameReceive, StringComparison.InvariantCultureIgnoreCase)) + { + if (_pluginTransmit != null) + { + try + { + if (_pluginTransmit.Start()) + IrssLog.Info("Transmit plugin started: \"{0}\"", _pluginNameTransmit); + else + IrssLog.Error("Failed to start transmit plugin: \"{0}\"", _pluginNameTransmit); + } + catch (Exception ex) + { + IrssLog.Error("Failed to start transmit plugin: \"{0}\"", _pluginNameTransmit); + IrssLog.Error(ex.ToString()); + } + } + } + + if (_pluginReceive != null) + { + if (_pluginReceive is IRemoteReceiver) + (_pluginReceive as IRemoteReceiver).RemoteCallback += new RemoteHandler(RemoteHandlerCallback); + + if (_pluginReceive is IKeyboardReceiver) + (_pluginReceive as IKeyboardReceiver).KeyboardCallback += new KeyboardHandler(KeyboardHandlerCallback); + + if (_pluginReceive is IMouseReceiver) + (_pluginReceive as IMouseReceiver).MouseCallback += new MouseHandler(MouseHandlerCallback); + } + + IrssLog.Info("IR Server started"); + } + catch (Exception ex) + { + IrssLog.Error(ex.ToString()); + } + } + + protected override void OnStop() + { + IrssLog.Info("Stopping IR Server ..."); + + if (_mode == IRServerMode.ServerMode) + { + IrssMessage message = new IrssMessage(MessageType.ServerShutdown, MessageFlags.Notify); + SendToAll(message); + } + + if (_pluginReceive != null) + { + if (_pluginReceive is IRemoteReceiver) + (_pluginReceive as IRemoteReceiver).RemoteCallback -= new RemoteHandler(RemoteHandlerCallback); + + if (_pluginReceive is IKeyboardReceiver) + (_pluginReceive as IKeyboardReceiver).KeyboardCallback -= new KeyboardHandler(KeyboardHandlerCallback); + + if (_pluginReceive is IMouseReceiver) + (_pluginReceive as IMouseReceiver).MouseCallback -= new MouseHandler(MouseHandlerCallback); + } + + // Stop Plugin(s) + try + { + if (_pluginReceive != null) + _pluginReceive.Stop(); + } + catch (Exception ex) + { + IrssLog.Error(ex.ToString()); + } + try + { + if (_pluginTransmit != null && _pluginTransmit != _pluginReceive) + _pluginTransmit.Stop(); + } + catch (Exception ex) + { + IrssLog.Error(ex.ToString()); + } + + // Stop Server + try + { + switch (_mode) + { + case IRServerMode.ServerMode: + StopServer(); + break; + + case IRServerMode.RelayMode: + StopRelay(); + break; + + case IRServerMode.RepeaterMode: + StopRepeater(); + break; + } + } + catch (Exception ex) + { + IrssLog.Error(ex.ToString()); + } + + IrssLog.Close(); + } + + protected override void OnShutdown() + { + OnStop(); + } + + protected override bool OnPowerEvent(PowerBroadcastStatus powerStatus) + { + switch (powerStatus) + { + case PowerBroadcastStatus.Suspend: + IrssLog.Info("Entering standby ..."); + + if (_pluginReceive != null) + _pluginReceive.Suspend(); + + if (_pluginTransmit != null && _pluginTransmit != _pluginReceive) + _pluginTransmit.Suspend(); + + // Inform clients ... + if (_mode == IRServerMode.ServerMode) + { + IrssMessage message = new IrssMessage(MessageType.ServerShutdown, MessageFlags.Notify); + SendToAll(message); + } + break; + + case PowerBroadcastStatus.ResumeAutomatic: + case PowerBroadcastStatus.ResumeCritical: + case PowerBroadcastStatus.ResumeSuspend: + IrssLog.Info("Resume from standby ..."); + + if (_pluginReceive != null) + _pluginReceive.Resume(); + + if (_pluginTransmit != null && _pluginTransmit != _pluginReceive) + _pluginTransmit.Resume(); + + // TODO: Inform clients ? + break; + } + + return true; + } + + #region Unused + + protected override void OnPause() + { + } + + protected override void OnContinue() + { + } + + protected override void OnSessionChange(SessionChangeDescription changeDescription) + { + switch (changeDescription.Reason) + { + case SessionChangeReason.SessionLogon: + break; + + case SessionChangeReason.SessionLogoff: + break; + } + } + + protected override void OnCustomCommand(int command) + { + switch (command) + { + case 128: + break; + } + } + + #endregion Unused + + #endregion Service Methods + + void StartServer() + { + if (_server != null) + return; + + // Initialize registered client lists ... + _registeredClients = new List<ClientManager>(); + _registeredRepeaters = new List<ClientManager>(); + + ServerMessageSink sink = new ServerMessageSink(ServerReceivedMessage); + _server = new Server(_serverPort, sink); + + _server.Start(); + } + void StopServer() + { + if (_server == null) + return; + + _server.Stop(); + _server = null; + + _registeredClients.Clear(); + _registeredClients = null; + + _registeredRepeaters.Clear(); + _registeredRepeaters = null; + } + + void CommsFailure(object obj) + { + Exception ex = obj as Exception; + + if (ex != null) + IrssLog.Error("Communications failure: {0}", ex.Message); + else + IrssLog.Error("Communications failure"); + + StopClient(); + } + void Connected(object obj) + { + IrssLog.Info("Connected to another server"); + + if (_mode == IRServerMode.RepeaterMode) + { + IrssMessage message = new IrssMessage(MessageType.RegisterRepeater, MessageFlags.Request); + _client.Send(message); + } + } + void Disconnected(object obj) + { + IrssLog.Warn("Communications with other server has been lost"); + + Thread.Sleep(1000); + } + + bool StartClient() + { + if (_client != null) + return false; + + ClientMessageSink sink = new ClientMessageSink(ClientReceivedMessage); + + IPAddress serverAddress = Client.GetIPFromName(_hostComputer); + + _client = new Client(serverAddress, 24000, sink); + _client.CommsFailureCallback = new WaitCallback(CommsFailure); + _client.ConnectCallback = new WaitCallback(Connected); + _client.DisconnectCallback = new WaitCallback(Disconnected); + + if (_client.Start()) + { + return true; + } + else + { + _client = null; + return false; + } + } + void StopClient() + { + if (_client == null) + return; + + _client.Stop(); + _client = null; + } + + bool StartRelay() + { + try + { + StartServer(); + StartClient(); + + return true; + } + catch (Exception ex) + { + IrssLog.Error(ex.ToString()); + return false; + } + } + void StopRelay() + { + try + { + StopServer(); + StopClient(); + } + catch { } + } + + bool StartRepeater() + { + try + { + StartServer(); + StartClient(); + + return true; + } + catch (Exception ex) + { + IrssLog.Error(ex.ToString()); + return false; + } + } + void StopRepeater() + { + try + { + if (_registered) + { + _registered = false; + + IrssMessage message = new IrssMessage(MessageType.UnregisterRepeater, MessageFlags.Request); + _client.Send(message); + } + + StopServer(); + StopClient(); + } + catch { } + } + + void RemoteHandlerCallback(string keyCode) + { + IrssLog.Debug("Remote Event: {0}", keyCode); + + byte[] bytes = Encoding.ASCII.GetBytes(keyCode); + + switch (_mode) + { + case IRServerMode.ServerMode: + { + IrssMessage message = new IrssMessage(MessageType.RemoteEvent, MessageFlags.Notify, bytes); + SendToAll(message); + break; + } + + case IRServerMode.RelayMode: + { + IrssMessage message = new IrssMessage(MessageType.ForwardRemoteEvent, MessageFlags.Request, bytes); + _client.Send(message); + break; + } + + case IRServerMode.RepeaterMode: + { + IrssLog.Debug("Remote event ignored, IR Server is in Repeater Mode."); + break; + } + } + } + void KeyboardHandlerCallback(int vKey, bool keyUp) + { + IrssLog.Debug("Keyboard Event: {0}, keyUp: {1}", vKey, keyUp); + + byte[] bytes = new byte[8]; + BitConverter.GetBytes(vKey).CopyTo(bytes, 0); + BitConverter.GetBytes(keyUp).CopyTo(bytes, 4); + + switch (_mode) + { + case IRServerMode.ServerMode: + { + IrssMessage message = new IrssMessage(MessageType.KeyboardEvent, MessageFlags.Notify, bytes); + SendToAll(message); + break; + } + + case IRServerMode.RelayMode: + { + IrssMessage message = new IrssMessage(MessageType.ForwardKeyboardEvent, MessageFlags.Request, bytes); + _client.Send(message); + break; + } + + case IRServerMode.RepeaterMode: + { + IrssLog.Debug("Keyboard event ignored, IR Server is in Repeater Mode."); + break; + } + } + } + void MouseHandlerCallback(int deltaX, int deltaY, int buttons) + { + IrssLog.Debug("Mouse Event - deltaX: {0}, deltaY: {1}, buttons: {2}", deltaX, deltaY, buttons); + + byte[] bytes = new byte[12]; + BitConverter.GetBytes(deltaX).CopyTo(bytes, 0); + BitConverter.GetBytes(deltaY).CopyTo(bytes, 4); + BitConverter.GetBytes(buttons).CopyTo(bytes, 8); + + switch (_mode) + { + case IRServerMode.ServerMode: + { + IrssMessage message = new IrssMessage(MessageType.MouseEvent, MessageFlags.Notify, bytes); + SendToAll(message); + break; + } + + case IRServerMode.RelayMode: + { + IrssMessage message = new IrssMessage(MessageType.ForwardMouseEvent, MessageFlags.Request, bytes); + _client.Send(message); + break; + } + + case IRServerMode.RepeaterMode: + { + IrssLog.Debug("Mouse event ignored, IR Server is in Repeater Mode."); + break; + } + } + } + + void SendToAll(IrssMessage message) + { + IrssLog.Debug("SendToAll({0}, {1})", message.Type, message.Flags); + + List<ClientManager> unregister = new List<ClientManager>(); + + lock (_registeredClients) + { + foreach (ClientManager client in _registeredClients) + { + if (!_server.Send(client, message)) + { + IrssLog.Warn("Failed to send message to a client, unregistering client"); + + // If a message doesn't get through then unregister that client + unregister.Add(client); + } + } + + // Unregistering clients must be done as a two part process because otherwise the + // foreach statement above would fail if you modified the _registeredClients list + // while enumerating it. + foreach (ClientManager client in unregister) + { + UnregisterClient(client); + } + } + } + void SendToAllExcept(ClientManager exceptClient, IrssMessage message) + { + IrssLog.Debug("SendToAllExcept({0}, {1})", message.Type, message.Flags); + + List<ClientManager> unregister = new List<ClientManager>(); + + lock (_registeredClients) + { + foreach (ClientManager client in _registeredClients) + { + if (client == exceptClient) + continue; + + if (!_server.Send(client, message)) + { + IrssLog.Warn("Failed to send message to a client, unregistering client"); + + // If a message doesn't get through then unregister that client + unregister.Add(client); + } + } + + // Unregistering clients must be done as a two part process because otherwise the + // foreach statement above would fail if you modified the _registeredClients list + // while enumerating it. + foreach (ClientManager client in unregister) + { + UnregisterClient(client); + } + } + } + void SendTo(ClientManager receiver, IrssMessage message) + { + IrssLog.Debug("SendTo({0}, {1})", message.Type, message.Flags); + + if (!_server.Send(receiver, message)) + { + IrssLog.Warn("Failed to send message to a client, unregistering client"); + + // If a message doesn't get through then unregister that client + UnregisterClient(receiver); + } + } + void SendToRepeaters(IrssMessage message) + { + IrssLog.Debug("SendToRepeaters({0}, {1})", message.Type, message.Flags); + + List<ClientManager> unregister = new List<ClientManager>(); + + lock (_registeredRepeaters) + { + foreach (ClientManager client in _registeredRepeaters) + { + if (!_server.Send(client, message)) + { + IrssLog.Warn("Failed to send message to a repeater, unregistering repeater"); + + // If a message doesn't get through then unregister that repeater + unregister.Add(client); + } + } + + // Unregistering repeaters must be done as a two part process because otherwise the + // foreach statement above would fail if you modified the _registeredRepeaters list + // while enumerating it. + foreach (ClientManager repeater in unregister) + { + UnregisterRepeater(repeater); + } + } + } + + bool RegisterClient(ClientManager addClient) + { + lock (_registeredClients) + { + if (!_registeredClients.Contains(addClient)) + _registeredClients.Add(addClient); + } + + IrssLog.Info("Registered a client"); + return true; + } + bool UnregisterClient(ClientManager removeClient) + { + lock (_registeredClients) + { + if (!_registeredClients.Contains(removeClient)) + return false; + + _registeredClients.Remove(removeClient); + } + + IrssLog.Info("Unregistered a client"); + return true; + } + + bool RegisterRepeater(ClientManager addRepeater) + { + lock (_registeredRepeaters) + { + if (!_registeredRepeaters.Contains(addRepeater)) + _registeredRepeaters.Add(addRepeater); + } + + IrssLog.Info("Registered a repeater"); + return true; + } + bool UnregisterRepeater(ClientManager removeRepeater) + { + lock (_registeredRepeaters) + { + if (!_registeredRepeaters.Contains(removeRepeater)) + return false; + + _registeredRepeaters.Remove(removeRepeater); + } + + IrssLog.Info("Unregistered a repeater"); + return true; + } + + bool BlastIR(byte[] data) + { + try + { + IrssLog.Debug("Blast IR"); + + if (_pluginTransmit == null || !(_pluginTransmit is ITransmitIR)) + return false; + + string port = "Default"; + + int portLen = BitConverter.ToInt32(data, 0); + if (portLen > 0) + port = Encoding.ASCII.GetString(data, 4, portLen); + + byte[] codeData = new byte[data.Length - (4 + portLen)]; + Array.Copy(data, 4 + portLen, codeData, 0, codeData.Length); + + return (_pluginTransmit as ITransmitIR).Transmit(port, codeData); + } + catch (Exception ex) + { + IrssLog.Error(ex.ToString()); + return false; + } + } + LearnStatus LearnIR(out byte[] data) + { + IrssLog.Debug("Learn IR"); + + data = null; + + if (_pluginTransmit == null) + { + IrssLog.Debug("No transmit plugin loaded, can't learn"); + return LearnStatus.Failure; + } + else if (!(_pluginTransmit is ILearnIR)) + { + IrssLog.Debug("Active transmit plugin doesn't support learn"); + return LearnStatus.Failure; + } + + Thread.Sleep(250); + + LearnStatus status = LearnStatus.Failure; + + try + { + status = (_pluginTransmit as ILearnIR).Learn(out data); + switch (status) + { + case LearnStatus.Success: + IrssLog.Info("Learn IR success"); + break; + + case LearnStatus.Failure: + IrssLog.Error("Failed to learn IR Code"); + break; + + case LearnStatus.Timeout: + IrssLog.Warn("IR Code learn timed out"); + break; + } + } + catch (Exception ex) + { + IrssLog.Error(ex.ToString()); + } + + return status; + } + + void ServerReceivedMessage(MessageManagerCombo combo) + { + IrssLog.Debug("Server message received: {0}, {1}", combo.Message.Type, combo.Message.Flags); + + try + { + switch (combo.Message.Type) + { + case MessageType.ForwardRemoteEvent: + if (_mode == IRServerMode.RelayMode) + { + IrssMessage forward = new IrssMessage(MessageType.ForwardRemoteEvent, MessageFlags.Request, combo.Message.DataAsBytes); + _client.Send(forward); + } + else + { + IrssMessage forward = new IrssMessage(MessageType.RemoteEvent, MessageFlags.Notify, combo.Message.DataAsBytes); + SendToAllExcept(combo.Manager, forward); + } + break; + + case MessageType.ForwardKeyboardEvent: + if (_mode == IRServerMode.RelayMode) + { + IrssMessage forward = new IrssMessage(MessageType.ForwardKeyboardEvent, MessageFlags.Request, combo.Message.DataAsBytes); + _client.Send(forward); + } + else + { + IrssMessage forward = new IrssMessage(MessageType.KeyboardEvent, MessageFlags.Notify, combo.Message.DataAsBytes); + SendToAllExcept(combo.Manager, forward); + } + break; + + case MessageType.ForwardMouseEvent: + if (_mode == IRServerMode.RelayMode) + { + IrssMessage forward = new IrssMessage(MessageType.ForwardMouseEvent, MessageFlags.Request, combo.Message.DataAsBytes); + _client.Send(forward); + } + else + { + IrssMessage forward = new IrssMessage(MessageType.MouseEvent, MessageFlags.Notify, combo.Message.DataAsBytes); + SendToAllExcept(combo.Manager, forward); + } + break; + + case MessageType.BlastIR: + { + IrssMessage response = new IrssMessage(MessageType.BlastIR, MessageFlags.Response); + + if (_mode == IRServerMode.RelayMode) + { + response.Flags |= MessageFlags.Failure; + } + else + { + if (_registeredRepeaters.Count > 0) + SendToRepeaters(combo.Message); + + if (BlastIR(combo.Message.DataAsBytes)) + response.Flags |= MessageFlags.Success; + else + response.Flags |= MessageFlags.Failure; + } + + if ((combo.Message.Flags & MessageFlags.ForceNotRespond) != MessageFlags.ForceNotRespond) + SendTo(combo.Manager, response); + + break; + } + + case MessageType.LearnIR: + { + IrssMessage response = new IrssMessage(MessageType.LearnIR, MessageFlags.Response); + + if (_mode == IRServerMode.RelayMode) + { + response.Flags |= MessageFlags.Failure; + } + else + { + byte[] bytes = null; + + LearnStatus status = LearnIR(out bytes); + + switch (status) + { + case LearnStatus.Success: + response.Flags |= MessageFlags.Success; + response.DataAsBytes = bytes; + break; + + case LearnStatus.Failure: + response.Flags |= MessageFlags.Failure; + break; + + case LearnStatus.Timeout: + response.Flags |= MessageFlags.Timeout; + break; + } + } + + SendTo(combo.Manager, response); + break; + } + + case MessageType.ServerShutdown: + if ((combo.Message.Flags & MessageFlags.Request) == MessageFlags.Request) + { + IrssLog.Info("Shutdown command received"); + Stop(); + } + + break; + + case MessageType.Ping: + { + IrssMessage response = new IrssMessage(MessageType.Echo, MessageFlags.Response, combo.Message.DataAsBytes); + SendTo(combo.Manager, response); + break; + } + + case MessageType.RegisterClient: + { + IrssMessage response = new IrssMessage(MessageType.RegisterClient, MessageFlags.Response); + + if (RegisterClient(combo.Manager)) + { + IRServerInfo irServerInfo = new IRServerInfo(); + + if (_pluginReceive != null) + irServerInfo.CanReceive = true; + + if (_pluginTransmit != null) + { + irServerInfo.CanLearn = (_pluginTransmit is ILearnIR); + irServerInfo.CanTransmit = true; + irServerInfo.Ports = (_pluginTransmit as ITransmitIR).AvailablePorts; + } + + response.DataAsBytes = irServerInfo.ToBytes(); + response.Flags |= MessageFlags.Success; + } + else + { + response.Flags |= MessageFlags.Failure; + } + + SendTo(combo.Manager, response); + break; + } + + case MessageType.UnregisterClient: + UnregisterClient(combo.Manager); + break; + + case MessageType.RegisterRepeater: + { + IrssMessage response = new IrssMessage(MessageType.RegisterRepeater, MessageFlags.Response); + + if (RegisterRepeater(combo.Manager)) + response.Flags |= MessageFlags.Success; + else + response.Flags |= MessageFlags.Failure; + + SendTo(combo.Manager, response); + break; + } + + case MessageType.UnregisterRepeater: + UnregisterRepeater(combo.Manager); + break; + } + } + catch (Exception ex) + { + IrssLog.Error(ex.ToString()); + IrssMessage response = new IrssMessage(MessageType.Error, MessageFlags.Notify, ex.Message); + SendTo(combo.Manager, response); + } + } + void ClientReceivedMessage(IrssMessage received) + { + IrssLog.Debug("Client message received: {0}, {1}", received.Type, received.Flags); + + try + { + switch (received.Type) + { + case MessageType.RegisterClient: + if ((received.Flags & MessageFlags.Response) == MessageFlags.Response) + { + if ((received.Flags & MessageFlags.Success) == MessageFlags.Success) + { + IrssLog.Info("Registered with host server"); + _registered = true; + } + else + { + IrssLog.Warn("Host server refused registration"); + _registered = false; + } + } + break; + + case MessageType.ServerShutdown: + if ((received.Flags & MessageFlags.Notify) == MessageFlags.Notify) + { + IrssLog.Warn("Host server has shut down"); + _registered = false; + } + break; + } + } + catch (Exception ex) + { + IrssLog.Error(ex.ToString()); + IrssMessage response = new IrssMessage(MessageType.Error, MessageFlags.Notify, ex.Message); + _client.Send(response); + } + } + + void LoadSettings() + { + try + { + XmlDocument doc = new XmlDocument(); + doc.Load(ConfigurationFile); + + _mode = (IRServerMode)Enum.Parse(typeof(IRServerMode), doc.DocumentElement.Attributes["Mode"].Value, true); + _hostComputer = doc.DocumentElement.Attributes["HostComputer"].Value; + _pluginNameReceive = doc.DocumentElement.Attributes["PluginReceive"].Value; + _pluginNameTransmit = doc.DocumentElement.Attributes["PluginTransmit"].Value; + } + catch (Exception ex) + { + IrssLog.Error(ex.ToString()); + + _mode = IRServerMode.ServerMode; + _hostComputer = String.Empty; + _pluginNameReceive = String.Empty; + _pluginNameTransmit = String.Empty; + } + } + void SaveSettings() + { + try + { + XmlTextWriter writer = new XmlTextWriter(ConfigurationFile, System.Text.Encoding.UTF8); + writer.Formatting = Formatting.Indented; + writer.Indentation = 1; + writer.IndentChar = (char)9; + writer.WriteStartDocument(true); + writer.WriteStartElement("settings"); // <settings> + + writer.WriteAttributeString("Mode", Enum.GetName(typeof(IRServerMode), _mode)); + writer.WriteAttributeString("HostComputer", _hostComputer); + writer.WriteAttributeString("PluginReceive", _pluginNameReceive); + writer.WriteAttributeString("PluginTransmit", _pluginNameTransmit); + + writer.WriteEndElement(); // </settings> + writer.WriteEndDocument(); + writer.Close(); + } + catch (Exception ex) + { + IrssLog.Error(ex.ToString()); + } + } + + } + +} Added: trunk/plugins/IR Server Suite/Input Service/InputServiceInstaller.cs =================================================================== --- trunk/plugins/IR Server Suite/Input Service/InputServiceInstaller.cs (rev 0) +++ trunk/plugins/IR Server Suite/Input Service/InputServiceInstaller.cs 2007-09-18 14:00:39 UTC (rev 937) @@ -0,0 +1,90 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Configuration.Install; +using System.Diagnostics; +using System.Management; +using System.ServiceProcess; + +namespace InputService +{ + + [RunInstaller(true)] + public class InputServiceInstaller : Installer + { + + public InputServiceInstaller() + { + //this.Committing += new InstallEventHandler(InputServiceInstaller_Committing); + this.AfterInstall += new InstallEventHandler(InputServiceInstaller_AfterInstall); + + ServiceProcessInstaller serviceProcessInstaller = new ServiceProcessInstaller(); + ServiceInstaller serviceInstaller = new ServiceInstaller(); + + // Service Account Information + serviceProcessInstaller.Account = ServiceAccount.LocalSystem; + serviceProcessInstaller.Username = null; + serviceProcessInstaller.Password = null; + + // Service Information + serviceInstaller.ServiceName = Program.ServiceName; + serviceInstaller.DisplayName = Program.ServiceDisplayName; + serviceInstaller.Description = Program.ServiceDescription; + serviceInstaller.StartType = ServiceStartMode.Automatic; + + this.Installers.Add(serviceProcessInstaller); + this.Installers.Add(serviceInstaller); + } + + /// <summary> + /// Code to execute after the install has completed. + /// </summary> + void InputServiceInstaller_AfterInstall(object sender, InstallEventArgs e) + { + // Start the service ... + using (ServiceController serviceController = new ServiceController(Program.ServiceName)) + serviceController.Start(); + } + + /// <summary> + /// Used to set the "Allow service to interact with the desktop" setting. + /// </summary> + void InputServiceInstaller_Committing(object sender, InstallEventArgs e) + { + ManagementBaseObject InParam = null; + ManagementBaseObject OutParam = null; + + try + { + ConnectionOptions coOptions = new ConnectionOptions(); + coOptions.Impersonation = ImpersonationLevel.Impersonate; + + ManagementScope mgmtScope = new ManagementScope(@"root\CIMV2", coOptions); + mgmtScope.Connect(); + + string path = string.Format("Win32_Service.Name='{0}'", Program.ServiceName); + + using (ManagementObject wmiService = new ManagementObject(path)) + { + InParam = wmiService.GetMethodParameters("Change"); + InParam["DesktopInteract"] = true; + OutParam = wmiService.InvokeMethod("Change", InParam, null); + } + } + catch (Exception ex) + { + Trace.WriteLine(ex.ToString()); + } + finally + { + if (InParam != null) + InParam.Dispose(); + + if (OutParam != null) + OutParam.Dispose(); + } + } + + } + +} Added: trunk/plugins/IR Server Suite/Input Service/Program.cs =================================================================== --- trunk/plugins/IR Server Suite/Input Service/Program.cs (rev 0) +++ trunk/plugins/IR Server Suite/Input Service/Program.cs 2007-09-18 14:00:39 UTC (rev 937) @@ -0,0 +1,134 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.Configuration.Install; +using System.Diagnostics; +using System.IO; +using System.Reflection; +using System.ServiceProcess; +using System.Text; + +using Microsoft.Win32; + +using IrssUtils; +using IRServerPluginInterface; + +namespace InputService +{ + + static class Program + { + + #region Constants + + public const string ServiceName = "MPInputService"; + public const string ServiceDisplayName = "MediaPortal Input Service"; + public const string ServiceDescription = "Provides access to input devices"; + + #endregion Constants + + static void Main(string[] args) + { + if (args.Length >= 1) + { + TransactedInstaller transactedInstaller = new TransactedInstaller(); + InputServiceInstaller inputServiceInstaller = new InputServiceInstaller(); + transactedInstaller.Installers.Add(inputServiceInstaller); + + String path = String.Format("/assemblypath={0}", Assembly.GetExecutingAssembly().Location); + String[] cmdline = { path }; + + InstallContext installContext = new InstallContext(String.Empty, cmdline); + transactedInstaller.Context = installContext; + + if (args[0].Equals("/install", System.StringComparison.InvariantCultureIgnoreCase)) + transactedInstaller.Install(new Hashtable()); + else if (args[0].Equals("/uninstall", System.StringComparison.InvariantCultureIgnoreCase)) + transactedInstaller.Uninstall(null); + + return; + } + + InputService inputService = new InputService(); + ServiceBase.Run(inputService); + } + + /// <summary> + /// Retreives a list of available IR Server plugins. + /// </summary> + /// <returns>Array of plugin instances.</returns> + internal static IRServerPlugin[] AvailablePlugins() + { + try + { + List<IRServerPlugin> plugins = new List<IRServerPlugin>(); + + string installFolder = SystemRegistry.GetInstallFolder(); + if (String.IsNullOrEmpty(installFolder)) + return null; + + string[] files = Directory.GetFiles(installFolder + "\\IR Server Plugins\\", "*.dll", SearchOption.TopDirectoryOnly); + + foreach (string file in files) + { + try + { + Assembly assembly = Assembly.LoadFrom(file); + + Type[] types = assembly.GetExportedTypes(); + + foreach (Type type in types) + { + if (type.IsClass && !type.IsAbstract && type.IsSubclassOf(typeof(IRServerPlugin))) + { + IRServerPlugin plugin = (IRServerPlugin)Activator.CreateInstance(type); + if (plugin == null) + continue; + + plugins.Add(plugin); + } + } + } + catch (BadImageFormatException) + { + // Ignore Bad Image Format Exceptions, just keep checking for IR Server Plugins + } + catch (Exception ex) + { + Trace.WriteLine(ex.ToString()); + } + } + + return plugins.ToArray(); + } + catch (Exception ex) + { + Trace.WriteLine(ex.ToString()); + return null; + } + } + + /// <summary> + /// Retreives a plugin instance given the plugin name. + /// </summary> + /// <param name="pluginName">Name of plugin to instantiate.</param> + /// <returns>Plugin instance.</returns> + internal static IRServerPlugin GetPlugin(string pluginName) + { + if (String.IsNullOrEmpty(pluginName)) + throw new ArgumentNullException("pluginName"); + + IRServerPlugin[] serverPlugins = AvailablePlugins(); + if (serverPlugins == null) + throw new ApplicationException("No available plugins found."); + + foreach (IRServerPlugin plugin in serverPlugins) + if (plugin.Name.Equals(pluginName, StringComparison.InvariantCultureIgnoreCase)) + return plugin; + + return null; + } + + } + +} Added: trunk/plugins/IR Server Suite/Input Service/Properties/AssemblyInfo.cs =================================================================== --- trunk/plugins/IR Server Suite/Input Service/Properties/AssemblyInfo.cs (rev 0) +++ trunk/plugins/IR Server Suite/Input Service/Properties/AssemblyInfo.cs 2007-09-18 14:00:39 UTC (rev 937) @@ -0,0 +1,36 @@ +using System; +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("Input Service")] +[assembly: AssemblyDescription("MediaPortal Input Service")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("and-81")] +[assembly: AssemblyProduct("MediaPortal Input Service")] +[assembly: AssemblyCopyright("Aaron Dinnage")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("f32fa19c-ea93-408e-b438-6aa36862a20e")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +[assembly: AssemblyVersion("1.0.3.4")] +[assembly: AssemblyFileVersion("1.0.3.4")] + +[assembly: CLSCompliant(true)] This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rs...@us...> - 2007-09-18 12:40:35
|
Revision: 936 http://mp-plugins.svn.sourceforge.net/mp-plugins/?rev=936&view=rev Author: rsparey Date: 2007-09-18 05:40:31 -0700 (Tue, 18 Sep 2007) Log Message: ----------- 0.7 b)version Modified Paths: -------------- trunk/skins/Foofaraw/Development Skin/Foofaraw/TVSeries.xml trunk/skins/Foofaraw/Development Skin/Foofaraw/myHome.xml trunk/skins/Foofaraw/Development Skin/Foofaraw/mytvhome.xml trunk/skins/Foofaraw/Development Skin/Foofaraw/mytvrecordedtv.xml trunk/skins/Foofaraw/Development Skin/Foofaraw/release notes.xml trunk/skins/Foofaraw/Development Skin/Foofaraw/topbar.xml trunk/skins/Foofaraw/Development Skin/Foofaraw/videoFullScreen.xml trunk/skins/Foofaraw/Development Skin/Foofaraw/videoOSD.xml Added Paths: ----------- trunk/skins/Foofaraw/Development Skin/Foofaraw/User's Guide - Rev A.pdf Modified: trunk/skins/Foofaraw/Development Skin/Foofaraw/TVSeries.xml =================================================================== --- trunk/skins/Foofaraw/Development Skin/Foofaraw/TVSeries.xml 2007-09-18 06:38:59 UTC (rev 935) +++ trunk/skins/Foofaraw/Development Skin/Foofaraw/TVSeries.xml 2007-09-18 12:40:31 UTC (rev 936) @@ -1,16 +1,12 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<?xml version="1.0" standalone="yes"?> <window> - <id>9811</id> - <defaultcontrol>50</defaultcontrol> + <id>9811</id> + <defaultcontrol>50</defaultcontrol> <allowoverlay>no</allowoverlay> <!-- <define>#header.hover:hover_my tv series.png</define> --> <define>#header.location:134</define> - <controls> - -<!-- ***********************************DUMMY LABELS********************************************* --> - - + <!-- ***********************************DUMMY LABELS********************************************* --> <control> <type>label</type> <description>Dummy Label for Fanart triggers</description> @@ -22,10 +18,9 @@ <font>font14</font> <label></label> <visible>false</visible> - <!-- to make a control visible only when a light fanart is loaded do this: <visible>Control.IsVisible(1234)</visible> --> - <!-- to make a control invisible when a light fanart is loaded do this: <visible>!Control.IsVisible(1234)</visible> --> + <!-- to make a control visible only when a light fanart is loaded do this: <visible>Control.IsVisible(1234)</visible> --> + <!-- to make a control invisible when a light fanart is loaded do this: <visible>!Control.IsVisible(1234)</visible> --> </control> - <control> <type>label</type> <description>Dummy Label for dark Fanart triggers</description> @@ -37,10 +32,9 @@ <font>font14</font> <label></label> <visible>false</visible> - <!-- to make a control visible only when a light fanart is loaded do this: <visible>Control.IsVisible(1234)</visible> --> - <!-- to make a control invisible when a light fanart is loaded do this: <visible>!Control.IsVisible(1234)</visible> --> + <!-- to make a control visible only when a light fanart is loaded do this: <visible>Control.IsVisible(1234)</visible> --> + <!-- to make a control invisible when a light fanart is loaded do this: <visible>!Control.IsVisible(1234)</visible> --> </control> - <control> <type>label</type> <description>Dummy Label for light Fanart triggers</description> @@ -52,8 +46,8 @@ <font>font14</font> <label></label> <visible>false</visible> - <!-- to make a control visible only when a light fanart is loaded do this: <visible>Control.IsVisible(1234)</visible> --> - <!-- to make a control invisible when a light fanart is loaded do this: <visible>!Control.IsVisible(1234)</visible> --> + <!-- to make a control visible only when a light fanart is loaded do this: <visible>Control.IsVisible(1234)</visible> --> + <!-- to make a control invisible when a light fanart is loaded do this: <visible>!Control.IsVisible(1234)</visible> --> </control> <control> <type>label</type> @@ -66,17 +60,10 @@ <font>font14</font> <label></label> <visible>false</visible> - <!-- to make a control visible only when the facade is in list mode do this: <visible>Control.IsVisible(1235)</visible> --> - <!-- to make a control invisible when the facade is in list mode do this: <visible>!Control.IsVisible(1235)</visible> --> + <!-- to make a control visible only when the facade is in list mode do this: <visible>Control.IsVisible(1235)</visible> --> + <!-- to make a control invisible when the facade is in list mode do this: <visible>!Control.IsVisible(1235)</visible> --> </control> - - - -<!-- ********************** BACKGROUNDS************************************** --> - - - - + <!-- ********************** BACKGROUNDS************************************** --> <control> <description>BG</description> <type>image</type> @@ -89,63 +76,59 @@ <colordiffuse>ccffffff</colordiffuse> <animation effect="fade" time="1000" reversible="false">visiblechange</animation> </control> - <!-- TEXT TOP LEFT START (Only visible when there is no banner/fanart present) --> - <control> - <description>icon background</description> - <type>image</type> - <id>1</id> - <posX>0</posX> - <posY>0</posY> - <width>377</width> - <height>133</height> - <texture>Logo_background.png</texture> - <animation effect="fade" time="500" delay="1000">WindowOpen</animation> - <animation effect="fade" time="500">WindowClose</animation> + <description>icon background</description> + <type>image</type> + <id>1</id> + <posX>0</posX> + <posY>0</posY> + <width>377</width> + <height>133</height> + <texture>Logo_background.png</texture> + <animation effect="fade" time="500" delay="1000">WindowOpen</animation> + <animation effect="fade" time="500">WindowClose</animation> <visible>!Control.IsVisible(1235)</visible> - </control> - <control> - <type>image</type> - <id>1</id> - <posX>15</posX> - <posY>0</posY> - <width>61</width> - <height>122</height> - <texture>hover_my tv.png</texture> - <animation effect="fade" time="1000" delay="2000">WindowOpen</animation> - <animation effect="fade" time="500">WindowClose</animation> + </control> + <control> + <type>image</type> + <id>1</id> + <posX>15</posX> + <posY>0</posY> + <width>61</width> + <height>122</height> + <texture>hover_my tv.png</texture> + <animation effect="fade" time="1000" delay="2000">WindowOpen</animation> + <animation effect="fade" time="500">WindowClose</animation> <visible>!Control.IsVisible(1235)</visible> - </control> - <control> - <type>image</type> - <description>Television top left text logo</description> - <id>1</id> - <posX>90</posX> - <posY>23</posY> - <texture>tvseries_logo.png</texture> - <animation effect="fade" time="500" delay="1300">WindowOpen</animation> - <animation effect="fade" time="500">WindowClose</animation> + </control> + <control> + <type>image</type> + <description>Television top left text logo</description> + <id>1</id> + <posX>90</posX> + <posY>23</posY> + <texture>tvseries_logo.png</texture> + <animation effect="fade" time="500" delay="1300">WindowOpen</animation> + <animation effect="fade" time="500">WindowClose</animation> <visible>!Control.IsVisible(1235)</visible> - </control> - <control> - <type>label</type> - <description>Recorded TV Label</description> - <id>1</id> - <posX>251</posX> - <posY>68</posY> - <label>3019</label> - <font>wipeouts</font> - <align>center</align> - <textcolor>ffffffff</textcolor> - <animation effect="fade" time="1000" end="60" delay="2000">WindowOpen</animation> - <animation effect="slide" time="1000" delay="2000" start="-600,0" end="0,0" acceleration="-1">WindowOpen</animation> - <animation effect="fade" time="500" start="50">WindowClose</animation> + </control> + <control> + <type>label</type> + <description>Recorded TV Label</description> + <id>1</id> + <posX>251</posX> + <posY>68</posY> + <label>3019</label> + <font>wipeouts</font> + <align>center</align> + <textcolor>ffffffff</textcolor> + <animation effect="fade" time="1000" end="60" delay="2000">WindowOpen</animation> + <animation effect="slide" time="1000" delay="2000" start="-600,0" end="0,0" acceleration="-1">WindowOpen</animation> + <animation effect="fade" time="500" start="50">WindowClose</animation> <visible>!Control.IsVisible(1235)</visible> - </control> - + </control> <!-- TEXT TOP LEFT END --> - <control> <description>Fan Art Image</description> <type>image</type> @@ -159,78 +142,64 @@ <animation effect="fade" time="600" delay="200" reversible="false">hidden</animation> <animation effect="fade" time="1000" reversible="false">visible</animation> </control> - - - <control> <description>ListBackground (dark background)</description> <type>image</type> <id>3435</id> <animation effect="fade" time="400">WindowClose</animation> <animation effect="fade" time="400">WindowOpen</animation> - <animation effect="zoom" start="70,70" end="100,100" center="640,360" time="400" >WindowOpen</animation> - <animation effect="zoom" start="100,100" end="130,130" center="640,360" time="400" >WindowClose</animation> + <animation effect="zoom" start="70,70" end="100,100" center="640,360" time="400">WindowOpen</animation> + <animation effect="zoom" start="100,100" end="130,130" center="640,360" time="400">WindowClose</animation> <posX>650</posX> <posY>240</posY> <texture></texture> <colordiffuse>ff999999</colordiffuse> <visible>Control.IsVisible(1235)</visible> </control> - <control> <description>roof (dark background)</description> <type>image</type> <id>3435</id> <animation effect="fade" time="400">WindowClose</animation> <animation effect="fade" time="400">WindowOpen</animation> - <animation effect="zoom" start="70,70" end="100,100" center="640,360" time="400" >WindowOpen</animation> - <animation effect="zoom" start="100,100" end="130,130" center="640,360" time="400" >WindowClose</animation> + <animation effect="zoom" start="70,70" end="100,100" center="640,360" time="400">WindowOpen</animation> + <animation effect="zoom" start="100,100" end="130,130" center="640,360" time="400">WindowClose</animation> <posX>660</posX> <posY>165</posY> <texture></texture> <colordiffuse>ff999999</colordiffuse> <visible>Control.IsVisible(1235)</visible> </control> - - - - <control> <description>ListBackground (light background)</description> <type>image</type> <id>3435</id> <animation effect="fade" time="400">WindowClose</animation> <animation effect="fade" time="400">WindowOpen</animation> - <animation effect="zoom" start="70,70" end="100,100" center="640,360" time="400" >WindowOpen</animation> - <animation effect="zoom" start="100,100" end="130,130" center="640,360" time="400" >WindowClose</animation> + <animation effect="zoom" start="70,70" end="100,100" center="640,360" time="400">WindowOpen</animation> + <animation effect="zoom" start="100,100" end="130,130" center="640,360" time="400">WindowClose</animation> <posX>650</posX> <posY>240</posY> <texture></texture> <colordiffuse>ff333333</colordiffuse> <visible>Control.IsVisible(1235)+Control.IsVisible(1234)</visible> </control> - <control> <description>roof (light background)</description> <type>image</type> <id>3435</id> <animation effect="fade" time="400">WindowClose</animation> <animation effect="fade" time="400">WindowOpen</animation> - <animation effect="zoom" start="70,70" end="100,100" center="640,360" time="400" >WindowOpen</animation> - <animation effect="zoom" start="100,100" end="130,130" center="640,360" time="400" >WindowClose</animation> + <animation effect="zoom" start="70,70" end="100,100" center="640,360" time="400">WindowOpen</animation> + <animation effect="zoom" start="100,100" end="130,130" center="640,360" time="400">WindowClose</animation> <posX>660</posX> <posY>165</posY> <texture></texture> <colordiffuse>ff333333</colordiffuse> <visible>Control.IsVisible(1235)+Control.IsVisible(1234)</visible> </control> - - - - -<!-- ********************** IMPORT PROCESS *************************************** --> - -<!-- + <!-- ********************** IMPORT PROCESS *************************************** --> + <!-- <control> <description>Process label</description> <type>fadelabel</type> @@ -250,42 +219,32 @@ <visible>Control.IsVisible(51)</visible> </control> --> - - <control> <description>Import Animation</description> <type>animation</type> - <id>51</id> - <animation effect="fade" time="400">WindowClose</animation> - <animation effect="fade" time="400">WindowOpen</animation> - <animation effect="zoom" start="70,70" end="100,100" center="640,360" time="400" >WindowOpen</animation> - <animation effect="zoom" start="100,100" end="130,130" center="640,360" time="400" >WindowClose</animation> - <posX>720</posX> - <posY>675</posY> - <width>150</width> - <height>60</height> - <textures>common.waiting.1.png;common.waiting.2.png;common.waiting.3.png;common.waiting.4.png;common.waiting.5.png;common.waiting.6.png;common.waiting.7.png;common.waiting.8.png</textures> - <Duration>0:0:01.5</Duration> - <keepaspectratio>yes</keepaspectratio> - <colordiffuse>ccffffff</colordiffuse> + <id>51</id> + <animation effect="fade" time="400">WindowClose</animation> + <animation effect="fade" time="400">WindowOpen</animation> + <animation effect="zoom" start="70,70" end="100,100" center="640,360" time="400">WindowOpen</animation> + <animation effect="zoom" start="100,100" end="130,130" center="640,360" time="400">WindowClose</animation> + <posX>720</posX> + <posY>675</posY> + <width>150</width> + <height>60</height> + <textures>common.waiting.1.png;common.waiting.2.png;common.waiting.3.png;common.waiting.4.png;common.waiting.5.png;common.waiting.6.png;common.waiting.7.png;common.waiting.8.png</textures> + <Duration>0:0:01.5</Duration> + <keepaspectratio>yes</keepaspectratio> + <colordiffuse>ccffffff</colordiffuse> </control> - - - - - - -<!-- *****************************************INFORMATION IN LIST VIEW***************************************************************** --> - - + <!-- *****************************************INFORMATION IN LIST VIEW***************************************************************** --> <control> <type>label</type> <description>Information Text (no fanart)</description> <id>6353</id> <animation effect="fade" time="400">WindowClose</animation> <animation effect="fade" time="400">WindowOpen</animation> - <animation effect="zoom" start="70,70" end="100,100" center="640,360" time="400" >WindowOpen</animation> - <animation effect="zoom" start="100,100" end="130,130" center="640,360" time="400" >WindowClose</animation> + <animation effect="zoom" start="70,70" end="100,100" center="640,360" time="400">WindowOpen</animation> + <animation effect="zoom" start="100,100" end="130,130" center="640,360" time="400">WindowClose</animation> <posX>30</posX> <posY>190</posY> <width>620</width> @@ -295,30 +254,28 @@ <visible>!Control.IsVisible(1232)</visible> <animation effect="slide" end="0,300" time="600" acceleration="-0.9">hidden</animation> </control> - <control> - <description>Splittline ( no fanart )</description> - <type>image</type> - <id>6352</id> + <description>Splittline ( no fanart )</description> + <type>image</type> + <id>6352</id> <animation effect="fade" time="400">WindowClose</animation> <animation effect="fade" time="400">WindowOpen</animation> - <animation effect="zoom" start="70,70" end="100,100" center="640,360" time="400" >WindowOpen</animation> - <animation effect="zoom" start="100,100" end="130,130" center="640,360" time="400" >WindowClose</animation> + <animation effect="zoom" start="70,70" end="100,100" center="640,360" time="400">WindowOpen</animation> + <animation effect="zoom" start="100,100" end="130,130" center="640,360" time="400">WindowClose</animation> <posX>30</posX> <posY>220</posY> - <texture>tvseries\SplittLine.png</texture> + <texture>tvseries\SplittLine.png</texture> <visible>!Control.IsVisible(1232)</visible> <animation effect="slide" end="0,300" time="600" acceleration="-0.9">hidden</animation> </control> - <control> <type>fadelabel</type> <description>Title (no fanart)</description> <id>640</id> -<!-- <animation effect="fade" time="400">WindowClose</animation> --> + <!-- <animation effect="fade" time="400">WindowClose</animation> --> <animation effect="fade" time="400">WindowOpen</animation> - <animation effect="zoom" start="70,70" end="100,100" center="640,360" time="400" >WindowOpen</animation> -<!-- <animation effect="zoom" start="100,100" end="130,130" center="640,360" time="400" >WindowClose</animation> --> + <animation effect="zoom" start="70,70" end="100,100" center="640,360" time="400">WindowOpen</animation> + <!-- <animation effect="zoom" start="100,100" end="130,130" center="640,360" time="400" >WindowClose</animation> --> <posX>30</posX> <posY>230</posY> <width>620</width> @@ -327,16 +284,15 @@ <font>font16</font> <visible>!Control.IsVisible(1232)</visible> <animation effect="slide" end="0,300" time="600" acceleration="-0.9">hidden</animation> - </control> - + </control> <control> <type>fadelabel</type> <description>Subtitle</description> <id>33</id> <!-- <animation effect="fade" time="400" >WindowClose</animation> --> - <animation effect="fade" time="400" >WindowOpen</animation> - <animation effect="zoom" start="70,70" end="100,100" center="640,360" time="400" >WindowOpen</animation> -<!-- <animation effect="zoom" start="100,100" end="130,130" center="640,360" time="400" >WindowClose</animation> --> + <animation effect="fade" time="400">WindowOpen</animation> + <animation effect="zoom" start="70,70" end="100,100" center="640,360" time="400">WindowOpen</animation> + <!-- <animation effect="zoom" start="100,100" end="130,130" center="640,360" time="400" >WindowClose</animation> --> <posX>30</posX> <posY>265</posY> <width>620</width> @@ -345,15 +301,14 @@ <font>font13</font> <visible>!Control.IsVisible(1232)</visible> </control> - <control> <type>textboxscrollup</type> <description>Description (no fanart)</description> <id>631</id> - <animation effect="fade" time="400">WindowClose</animation> + <animation effect="fade" time="400">WindowClose</animation> <animation effect="fade" time="400">WindowOpen</animation> - <animation effect="zoom" start="70,70" end="100,100" center="640,360" time="400" >WindowOpen</animation> - <animation effect="zoom" start="100,100" end="130,130" center="640,360" time="400" >WindowClose</animation> + <animation effect="zoom" start="70,70" end="100,100" center="640,360" time="400">WindowOpen</animation> + <animation effect="zoom" start="100,100" end="130,130" center="640,360" time="400">WindowClose</animation> <posX>30</posX> <posY>300</posY> <width>570</width> @@ -366,29 +321,14 @@ <label>#TVSeries.Description</label> <animation effect="slide" end="0,280" time="600" acceleration="-0.9">hidden</animation> </control> - - - - - - - - - - - - - - - <control> <type>label</type> <description>Information Text (light background)</description> <id>6353</id> <animation effect="fade" time="400">WindowClose</animation> <animation effect="fade" time="400">WindowOpen</animation> - <animation effect="zoom" start="70,70" end="100,100" center="640,360" time="400" >WindowOpen</animation> - <animation effect="zoom" start="100,100" end="130,130" center="640,360" time="400" >WindowClose</animation> + <animation effect="zoom" start="70,70" end="100,100" center="640,360" time="400">WindowOpen</animation> + <animation effect="zoom" start="100,100" end="130,130" center="640,360" time="400">WindowClose</animation> <posX>25</posX> <posY>530</posY> <width>620</width> @@ -398,31 +338,29 @@ <visible>Control.IsVisible(1234)</visible> <animation effect="fade" delay="600" time="400">visible</animation> </control> - <control> - <description>Splittline ( light background )</description> - <type>image</type> - <id>6352</id> + <description>Splittline ( light background )</description> + <type>image</type> + <id>6352</id> <animation effect="fade" time="400">WindowClose</animation> <animation effect="fade" time="400">WindowOpen</animation> - <animation effect="zoom" start="70,70" end="100,100" center="640,360" time="400" >WindowOpen</animation> - <animation effect="zoom" start="100,100" end="130,130" center="640,360" time="400" >WindowClose</animation> + <animation effect="zoom" start="70,70" end="100,100" center="640,360" time="400">WindowOpen</animation> + <animation effect="zoom" start="100,100" end="130,130" center="640,360" time="400">WindowClose</animation> <posX>25</posX> <posY>560</posY> - <texture>tvseries\SplittLine.png</texture> + <texture>tvseries\SplittLine.png</texture> <colordiffuse>aa000000</colordiffuse> <visible>Control.IsVisible(1234)</visible> <animation effect="fade" delay="600" time="400">visible</animation> </control> - <control> <type>fadelabel</type> <description>Title (light background)</description> <id>640</id> - <animation effect="fade" time="400">WindowClose</animation> + <animation effect="fade" time="400">WindowClose</animation> <animation effect="fade" time="400">WindowOpen</animation> - <animation effect="zoom" start="70,70" end="100,100" center="640,360" time="400" >WindowOpen</animation> - <animation effect="zoom" start="100,100" end="130,130" center="640,360" time="400" >WindowClose</animation> + <animation effect="zoom" start="70,70" end="100,100" center="640,360" time="400">WindowOpen</animation> + <animation effect="zoom" start="100,100" end="130,130" center="640,360" time="400">WindowClose</animation> <posX>25</posX> <posY>575</posY> <width>620</width> @@ -431,16 +369,15 @@ <font>font16</font> <visible>Control.IsVisible(1234)</visible> <animation effect="fade" delay="600" time="400">visible</animation> - </control> - + </control> <control> <type>textboxscrollup</type> <description>Description (light background)</description> <id>631</id> - <animation effect="fade" time="400">WindowClose</animation> + <animation effect="fade" time="400">WindowClose</animation> <animation effect="fade" time="400">WindowOpen</animation> - <animation effect="zoom" start="70,70" end="100,100" center="640,360" time="400" >WindowOpen</animation> - <animation effect="zoom" start="100,100" end="130,130" center="640,360" time="400" >WindowClose</animation> + <animation effect="zoom" start="70,70" end="100,100" center="640,360" time="400">WindowOpen</animation> + <animation effect="zoom" start="100,100" end="130,130" center="640,360" time="400">WindowClose</animation> <posX>25</posX> <posY>615</posY> <width>570</width> @@ -453,26 +390,14 @@ <label>#TVSeries.Description</label> <animation effect="fade" delay="600" time="400">visible</animation> </control> - - - - - - - - - - - - <control> <type>label</type> <description>Information Text (dark background)</description> <id>4353</id> <animation effect="fade" time="400">WindowClose</animation> <animation effect="fade" time="400">WindowOpen</animation> - <animation effect="zoom" start="70,70" end="100,100" center="640,360" time="400" >WindowOpen</animation> - <animation effect="zoom" start="100,100" end="130,130" center="640,360" time="400" >WindowClose</animation> + <animation effect="zoom" start="70,70" end="100,100" center="640,360" time="400">WindowOpen</animation> + <animation effect="zoom" start="100,100" end="130,130" center="640,360" time="400">WindowClose</animation> <posX>25</posX> <posY>530</posY> <width>620</width> @@ -482,30 +407,28 @@ <visible>!Control.IsVisible(1234)+Control.IsVisible(1232)</visible> <animation effect="fade" delay="600" time="400">visible</animation> </control> - <control> - <description>Splittline ( dark background )</description> - <type>image</type> - <id>4352</id> + <description>Splittline ( dark background )</description> + <type>image</type> + <id>4352</id> <animation effect="fade" time="400">WindowClose</animation> <animation effect="fade" time="400">WindowOpen</animation> - <animation effect="zoom" start="70,70" end="100,100" center="640,360" time="400" >WindowOpen</animation> - <animation effect="zoom" start="100,100" end="130,130" center="640,360" time="400" >WindowClose</animation> + <animation effect="zoom" start="70,70" end="100,100" center="640,360" time="400">WindowOpen</animation> + <animation effect="zoom" start="100,100" end="130,130" center="640,360" time="400">WindowClose</animation> <posX>25</posX> <posY>560</posY> <texture>tvseries\SplittLine.png</texture> <visible>!Control.IsVisible(1234)+Control.IsVisible(1232)</visible> <animation effect="fade" delay="600" time="400">visible</animation> </control> - <control> <type>fadelabel</type> <description>Title (dark background)</description> <id>40</id> - <animation effect="fade" time="400">WindowClose</animation> + <animation effect="fade" time="400">WindowClose</animation> <animation effect="fade" time="400">WindowOpen</animation> - <animation effect="zoom" start="70,70" end="100,100" center="640,360" time="400" >WindowOpen</animation> - <animation effect="zoom" start="100,100" end="130,130" center="640,360" time="400" >WindowClose</animation> + <animation effect="zoom" start="70,70" end="100,100" center="640,360" time="400">WindowOpen</animation> + <animation effect="zoom" start="100,100" end="130,130" center="640,360" time="400">WindowClose</animation> <posX>25</posX> <posY>575</posY> <width>620</width> @@ -516,15 +439,14 @@ <visible>!Control.IsVisible(1234)+Control.IsVisible(1232)</visible> <animation effect="fade" delay="600" time="400">visible</animation> </control> - <control> <type>textboxscrollup</type> <description>Description (dark background)</description> <id>31</id> - <animation effect="fade" time="400">WindowClose</animation> + <animation effect="fade" time="400">WindowClose</animation> <animation effect="fade" time="400">WindowOpen</animation> - <animation effect="zoom" start="70,70" end="100,100" center="640,360" time="400" >WindowOpen</animation> - <animation effect="zoom" start="100,100" end="130,130" center="640,360" time="400" >WindowClose</animation> + <animation effect="zoom" start="70,70" end="100,100" center="640,360" time="400">WindowOpen</animation> + <animation effect="zoom" start="100,100" end="130,130" center="640,360" time="400">WindowClose</animation> <posX>25</posX> <posY>615</posY> <width>570</width> @@ -537,24 +459,15 @@ <visible>!Control.IsVisible(1234)+Control.IsVisible(1232)</visible> <animation effect="fade" delay="600" time="400">visible</animation> </control> - - - - - - - - -<!-- ***************************** LOGOS / BANNERS ******************************** --> - + <!-- ***************************** LOGOS / BANNERS ******************************** --> <control> <type>image</type> <description>Series Logo (Logo when series are selected)</description> <id>30</id> <animation effect="fade" time="400">WindowClose</animation> <animation effect="fade" time="400">WindowOpen</animation> - <animation effect="zoom" start="70,70" end="100,100" center="640,360" time="400" >WindowOpen</animation> - <animation effect="zoom" start="100,100" end="130,130" center="640,360" time="400" >WindowClose</animation> + <animation effect="zoom" start="70,70" end="100,100" center="640,360" time="400">WindowOpen</animation> + <animation effect="zoom" start="100,100" end="130,130" center="640,360" time="400">WindowClose</animation> <posX>30</posX> <posY>20</posY> <width>620</width> @@ -566,35 +479,34 @@ <!-- <animation effect="fade" delay="300" time="600">visible</animation> <animation effect="fade" delay="300" time="300">hidden</animation> --> </control> - <control> - <type>image</type> - <description>Season image ( season image background )</description> - <id>46</id> - <animation effect="fade" time="400">WindowClose</animation> - <animation effect="fade" time="400">WindowOpen</animation> - <animation effect="zoom" start="70,70" end="100,100" center="640,360" time="400" >WindowOpen</animation> - <animation effect="zoom" start="100,100" end="130,130" center="640,360" time="400" >WindowClose</animation> - <posX>1100</posX> - <posY>25</posY> - <width>270</width> - <height>150</height> - <centered>yes</centered> - <keepaspectratio>yes</keepaspectratio> - <colordiffuse>ffFFFFFF</colordiffuse> - <texture flipY="true" diffuse="Thumb_Mask.png">#TVSeries.SeasonBanner</texture> - <animation effect="fade" time="600">visible</animation> + <type>image</type> + <description>Season image ( season image background )</description> + <id>46</id> + <animation effect="fade" time="400">WindowClose</animation> + <animation effect="fade" time="400">WindowOpen</animation> + <animation effect="zoom" start="70,70" end="100,100" center="640,360" time="400">WindowOpen</animation> + <animation effect="zoom" start="100,100" end="130,130" center="640,360" time="400">WindowClose</animation> + <posX>1100</posX> + <posY>25</posY> + <width>270</width> + <height>150</height> + <centered>yes</centered> + <keepaspectratio>yes</keepaspectratio> + <colordiffuse>ffFFFFFF</colordiffuse> + <texture flipY="true" diffuse="Thumb_Mask.png">#TVSeries.SeasonBanner</texture> + <animation effect="fade" time="600">visible</animation> </control> - <control> <type>image</type> <description>Episode logo big</description> <id>67</id> <animation effect="fade" time="400">WindowClose</animation> <animation effect="fade" time="400">WindowOpen</animation> - <animation effect="zoom" start="70,70" end="100,100" center="640,360" time="400" >WindowOpen</animation> - <animation effect="zoom" start="100,100" end="130,130" center="640,360" time="400" >WindowClose</animation> - <posX>880</posX> <!-- 780 before --> + <animation effect="zoom" start="70,70" end="100,100" center="640,360" time="400">WindowOpen</animation> + <animation effect="zoom" start="100,100" end="130,130" center="640,360" time="400">WindowClose</animation> + <posX>800</posX> + <!-- 780 before --> <posY>40</posY> <width>240</width> <height>140</height> @@ -603,15 +515,14 @@ <texture flipY="true" diffuse="Thumb_Mask.png">#TVSeries.EpisodeImage</texture> <animation effect="fade" time="600">visible</animation> </control> - <control> <type>image</type> <description>thumb Logos ( in textlist )</description> <id>66</id> <animation effect="fade" time="400">WindowClose</animation> <animation effect="fade" time="400">WindowOpen</animation> - <animation effect="zoom" start="70,70" end="100,100" center="640,360" time="400" >WindowOpen</animation> - <animation effect="zoom" start="100,100" end="130,130" center="640,360" time="400" >WindowClose</animation> + <animation effect="zoom" start="70,70" end="100,100" center="640,360" time="400">WindowOpen</animation> + <animation effect="zoom" start="100,100" end="130,130" center="640,360" time="400">WindowClose</animation> <posX>920</posX> <posY>155</posY> <width>730</width> @@ -623,15 +534,14 @@ <animation effect="fade" time="600">visible</animation> <visible>Control.IsVisible(1235)</visible> </control> - <control> <type>image</type> <description>thumb Logos ( graphical listings )</description> <id>66</id> <animation effect="fade" time="400">WindowClose</animation> <animation effect="fade" time="400">WindowOpen</animation> - <animation effect="zoom" start="70,70" end="100,100" center="640,360" time="400" >WindowOpen</animation> - <animation effect="zoom" start="100,100" end="130,130" center="640,360" time="400" >WindowClose</animation> + <animation effect="zoom" start="70,70" end="100,100" center="640,360" time="400">WindowOpen</animation> + <animation effect="zoom" start="100,100" end="130,130" center="640,360" time="400">WindowClose</animation> <posX>260</posX> <posY>100</posY> <width>730</width> @@ -643,49 +553,44 @@ <animation effect="fade" time="600">visible</animation> <visible>!Control.IsVisible(1235)</visible> </control> - - - -<!-- ************************** VIEW SELECTION ***********************************--> - + <!-- ************************** VIEW SELECTION ***********************************--> <control> <type>label</type> <description>CURRENT VIEW + FAKE ARROWS</description> <id>77</id> <animation effect="fade" time="400">WindowClose</animation> <animation effect="fade" time="400">WindowOpen</animation> - <animation effect="zoom" start="70,70" end="100,100" center="640,360" time="400" >WindowOpen</animation> - <animation effect="zoom" start="100,100" end="130,130" center="640,360" time="400" >WindowClose</animation> - <posX>620</posX> - <posY>701</posY> + <animation effect="zoom" start="70,70" end="100,100" center="640,360" time="400">WindowOpen</animation> + <animation effect="zoom" start="100,100" end="130,130" center="640,360" time="400">WindowClose</animation> + <!-- <posX>620</posX> + <posY>701</posY> --> + <posX>885</posX> + <posY>666</posY> <width>255</width> - <height>58</height> + <height>38</height> <label>#TVSeries.CurrentView</label> <align>center</align> <textcolor>FFFFFF</textcolor> <font>font14</font> <shadow>10</shadow> </control> - - - - <control> <description>ViewBackGround</description> <type>image</type> <animation effect="fade" time="400">WindowClose</animation> <animation effect="fade" time="400">WindowOpen</animation> - <animation effect="zoom" start="70,70" end="100,100" center="640,360" time="400" >WindowOpen</animation> - <animation effect="zoom" start="100,100" end="130,130" center="640,360" time="400" >WindowClose</animation> + <animation effect="zoom" start="70,70" end="100,100" center="640,360" time="400">WindowOpen</animation> + <animation effect="zoom" start="100,100" end="130,130" center="640,360" time="400">WindowClose</animation> <id>515</id> - <posX>620</posX> - <posY>700</posY> + <!-- <posX>620</posX> + <posY>700</posY> --> + <posX>885</posX> + <posY>665</posY> <width>255</width> - <height>58</height> + <height>38</height> <texture>view_block.png</texture> </control> - -<!-- + <!-- <control> <type>label</type> <description>Last View (light background)</description> @@ -860,13 +765,8 @@ <texture>tvseries\ArrowRight.png</texture> <visible>!Control.IsVisible(1234)</visible> </control> --> - - - -<!-- *********************** LIST /GRAPHICAL VIEW*********************************** --> - - - <control> + <!-- *********************** LIST /GRAPHICAL VIEW*********************************** --> + <control> <type>group</type> <description>group element</description> <id>28</id> @@ -875,11 +775,10 @@ <description>composite control consisting of a list control and a thumbnail panel</description> <type>facadeview</type> <id>50</id> - <control> - <description>graphical list (series and seasons if set)</description> - <type>listcontrol</type> - <subtype>album</subtype> + <description>graphical list (series and seasons if set)</description> + <type>listcontrol</type> + <subtype>album</subtype> <id>50</id> <posX>756</posX> <posY>110</posY> @@ -890,35 +789,53 @@ <textureFocus>list_sub_focus_big.png</textureFocus> <textureNoFocus>list_sub_nofocus_big.png</textureNoFocus> <unfocusedAlpha>200</unfocusedAlpha> - <dimColor>ffffffff</dimColor> + <dimColor>ffffffff</dimColor> <spaceBetweenItems>2</spaceBetweenItems> - <remoteColor>FFa6c3e1</remoteColor> <!-- watched color --> - <downloadColor>FFFFFFFF</downloadColor> <!-- not watched color (normal) --> - <textcolor>FF78ace0</textcolor> <!-- local file not present color --> - <textcolor2>FF78ace0</textcolor2> <!-- local file not present color column 2--> - <textcolor3>FF78ace0</textcolor3> <!-- local file not present color column 3--> + <remoteColor>FFa6c3e1</remoteColor> + <!-- watched color --> + <downloadColor>FFFFFFFF</downloadColor> + <!-- not watched color (normal) --> + <textcolor>FF78ace0</textcolor> + <!-- local file not present color --> + <textcolor2>FF78ace0</textcolor2> + <!-- local file not present color column 2--> + <textcolor3>FF78ace0</textcolor3> + <!-- local file not present color column 3--> + <spinWidth>27</spinWidth> + <spinHeight>27</spinHeight> + <spinPosX>1260</spinPosX> + <spinPosY>666</spinPosY> + <spinColor>ffffffff</spinColor> </control> - <control> - <description>text list</description> - <type>listcontrol</type> + <description>text list</description> + <type>listcontrol</type> <id>50</id> <posX>756</posX> <posY>230</posY> <width>600</width> - <height>500</height> + <height>480</height> <textXOff2>590</textXOff2> <spaceBetweenItems>2</spaceBetweenItems> - <remoteColor>FFa6c3e1</remoteColor> <!-- watched color --> - <downloadColor>FFFFFFFF</downloadColor> <!-- not watched color (normal) --> - <textcolor>FF78ace0</textcolor> <!-- local file not present color --> - <textcolor2>FF78ace0</textcolor2> <!-- local file not present color column 2--> - <textcolor3>FF78ace0</textcolor3> <!-- local file not present color column 3--> + <remoteColor>FFa6c3e1</remoteColor> + <!-- watched color --> + <downloadColor>FFFFFFFF</downloadColor> + <!-- not watched color (normal) --> + <textcolor>FF78ace0</textcolor> + <!-- local file not present color --> + <textcolor2>FF78ace0</textcolor2> + <!-- local file not present color column 2--> + <textcolor3>FF78ace0</textcolor3> + <!-- local file not present color column 3--> + <spinWidth>27</spinWidth> + <spinHeight>27</spinHeight> + <spinPosX>1260</spinPosX> + <spinPosY>666</spinPosY> + <spinColor>ffffffff</spinColor> </control> </control> </control> <import>common.facade.xml</import> <import>common.time.xml</import> - </controls> </window> Added: trunk/skins/Foofaraw/Development Skin/Foofaraw/User's Guide - Rev A.pdf =================================================================== --- trunk/skins/Foofaraw/Development Skin/Foofaraw/User's Guide - Rev A.pdf (rev 0) +++ trunk/skins/Foofaraw/Development Skin/Foofaraw/User's Guide - Rev A.pdf 2007-09-18 12:40:31 UTC (rev 936) @@ -0,0 +1,5775 @@ +%PDF-1.6 +%\xE2\xE3\xCF\xD3 +49 0 obj +<</PageMode/UseThumbs/Metadata 78 0 R/AcroForm 50 0 R/Pages 43 0 R/PageLayout/SinglePage/OpenAction 77 0 R/Type/Catalog>> +endobj +78 0 obj +<</Subtype/XML/Length 3664/Type/Metadata>>stream +<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?> +<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 4.0-c316 44.253921, Sun Oct 01 2006 17:14:39"> + <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> + <rdf:Description rdf:about="" + xmlns:xap="http://ns.adobe.com/xap/1.0/"> + <xap:ModifyDate>2007-09-14T14:12:09+01:00</xap:ModifyDate> + <xap:CreateDate>2007-09-14T13:58:58+01:00</xap:CreateDate> + <xap:MetadataDate>2007-09-14T14:12:09+01:00</xap:MetadataDate> + <xap:CreatorTool>Adobe Acrobat 8.0</xap:CreatorTool> + </rdf:Description> + <rdf:Description rdf:about="" + xmlns:dc="http://purl.org/dc/elements/1.1/"> + <dc:format>application/pdf</dc:format> + <dc:title> + <rdf:Alt> + <rdf:li xml:lang="x-default">Foofaraw User's Guide</rdf:li> + </rdf:Alt> + </dc:title> + <dc:creator> + <rdf:Bag> + <rdf:li>Foofaraw Team</rdf:li> + </rdf:Bag> + </dc:creator> + </rdf:Description> + <rdf:Description rdf:about="" + xmlns:xapMM="http://ns.adobe.com/xap/1.0/mm/"> + <xapMM:DocumentID>uuid:40f6f122-7a36-4964-a45a-e5a9ffcf3fed</xapMM:DocumentID> + <xapMM:InstanceID>uuid:6d25103b-ee02-4794-b467-6ebd64e08882</xapMM:InstanceID> + </rdf:Description> + <rdf:Description rdf:about="" + xmlns:pdf="http://ns.adobe.com/pdf/1.3/"> + <pdf:Producer>Adobe Acrobat 8.0 Image Conversion Plug-in</pdf:Producer> + </rdf:Description> + </rdf:RDF> +</x:xmpmeta> + + + + + + + + + + + + + + + + + + + + + +<?xpacket end="w"?> +endstream +endobj +50 0 obj +<</Fields[]/DA(/Helv 0 Tf 0 g )/DR<</Font<</Helv 41 0 R/ZaDb 42 0 R>>/Encoding<</PDFDocEncoding 40 0 R>>>>>> +endobj +43 0 obj +<</Count 14/Type/Pages/Kids[44 0 R 45 0 R]>> +endobj +77 0 obj +<</D[51 0 R/FitH -32768]/S/GoTo>> +endobj +51 0 obj +<</CropBox[0.0 0.0 354.24 354.24]/Parent 44 0 R/Contents 52 0 R/Rotate 0/MediaBox[0.0 0.0 354.24 354.24]/Resources<</XObject<</Im0 53 0 R>>/ProcSet[/PDF/ImageC]>>/Type/Page>> +endobj +44 0 obj +<</Parent 43 0 R/Count 5/Type/Pages/Kids[51 0 R 1 0 R 4 0 R 7 0 R 10 0 R]>> +endobj +52 0 obj +<</Length 42/Filter/FlateDecode>>stream +H\x89*\xE4265\xD13210005U0 |
From: <an...@us...> - 2007-09-18 06:39:01
|
Revision: 935 http://mp-plugins.svn.sourceforge.net/mp-plugins/?rev=935&view=rev Author: and-81 Date: 2007-09-17 23:38:59 -0700 (Mon, 17 Sep 2007) Log Message: ----------- Modified Paths: -------------- trunk/plugins/IR Server Suite/Applications/Debug Client/Debug Client.csproj trunk/plugins/IR Server Suite/Applications/Debug Client/MainForm.cs trunk/plugins/IR Server Suite/Applications/IR Blast/IR Blast.csproj trunk/plugins/IR Server Suite/Applications/IR Blast/Program.cs trunk/plugins/IR Server Suite/Applications/IR Blast (No Window)/IR Blast (No Window).csproj trunk/plugins/IR Server Suite/Applications/IR Blast (No Window)/Program.cs trunk/plugins/IR Server Suite/Applications/IR Server/IR Server.csproj trunk/plugins/IR Server Suite/Applications/IR Server/IRServer.cs trunk/plugins/IR Server Suite/Applications/IR Server/Program.cs trunk/plugins/IR Server Suite/Applications/Translator/Forms/ButtonMappingForm.cs trunk/plugins/IR Server Suite/Applications/Translator/Forms/GetKeyCodeForm.cs trunk/plugins/IR Server Suite/Applications/Translator/Forms/LearnIR.cs trunk/plugins/IR Server Suite/Applications/Translator/Forms/MainForm.cs trunk/plugins/IR Server Suite/Applications/Translator/Program.cs trunk/plugins/IR Server Suite/Applications/Translator/Translator.csproj trunk/plugins/IR Server Suite/Applications/Tray Launcher/GetKeyCodeForm.cs trunk/plugins/IR Server Suite/Applications/Tray Launcher/Setup.cs trunk/plugins/IR Server Suite/Applications/Tray Launcher/Tray Launcher.csproj trunk/plugins/IR Server Suite/Applications/Tray Launcher/Tray.cs trunk/plugins/IR Server Suite/Applications/Virtual Remote/MainForm.Designer.cs trunk/plugins/IR Server Suite/Applications/Virtual Remote/MainForm.cs trunk/plugins/IR Server Suite/Applications/Virtual Remote/Program.cs trunk/plugins/IR Server Suite/Applications/Virtual Remote/Virtual Remote.csproj trunk/plugins/IR Server Suite/Applications/Virtual Remote Skin Editor/MainForm.cs trunk/plugins/IR Server Suite/Applications/Virtual Remote Skin Editor/Virtual Remote Skin Editor.csproj trunk/plugins/IR Server Suite/Common/IrssComms/Client.cs trunk/plugins/IR Server Suite/Common/IrssComms/ClientManager.cs trunk/plugins/IR Server Suite/Common/IrssComms/IrssComms.csproj trunk/plugins/IR Server Suite/Common/IrssComms/Properties/AssemblyInfo.cs trunk/plugins/IR Server Suite/Common/IrssComms/Server.cs trunk/plugins/IR Server Suite/Common/IrssUtils/Common.cs trunk/plugins/IR Server Suite/Common/IrssUtils/Win32.cs trunk/plugins/IR Server Suite/IR Server Plugins/Microsoft MCE Transceiver/Driver.cs trunk/plugins/IR Server Suite/IR Server Plugins/Microsoft MCE Transceiver/Pronto.cs trunk/plugins/IR Server Suite/IR Server Suite.sln trunk/plugins/IR Server Suite/MediaPortal Plugins/MP Blast Zone Plugin/Forms/LearnIR.cs trunk/plugins/IR Server Suite/MediaPortal Plugins/MP Blast Zone Plugin/Forms/SetupForm.cs trunk/plugins/IR Server Suite/MediaPortal Plugins/MP Blast Zone Plugin/MP Blast Zone Plugin.csproj trunk/plugins/IR Server Suite/MediaPortal Plugins/MP Blast Zone Plugin/MPBlastZonePlugin.cs trunk/plugins/IR Server Suite/MediaPortal Plugins/MP Control Plugin/Forms/LearnIR.cs trunk/plugins/IR Server Suite/MediaPortal Plugins/MP Control Plugin/Forms/SetupForm.cs trunk/plugins/IR Server Suite/MediaPortal Plugins/MP Control Plugin/MP Control Plugin.csproj trunk/plugins/IR Server Suite/MediaPortal Plugins/MP Control Plugin/MPControlPlugin.cs trunk/plugins/IR Server Suite/MediaPortal Plugins/TV2 Blaster Plugin/Forms/LearnIR.cs trunk/plugins/IR Server Suite/MediaPortal Plugins/TV2 Blaster Plugin/Forms/SetupForm.cs trunk/plugins/IR Server Suite/MediaPortal Plugins/TV2 Blaster Plugin/TV2 Blaster Plugin.csproj trunk/plugins/IR Server Suite/MediaPortal Plugins/TV2 Blaster Plugin/TV2BlasterPlugin.cs trunk/plugins/IR Server Suite/MediaPortal Plugins/TV3 Blaster Plugin/Forms/LearnIR.cs trunk/plugins/IR Server Suite/MediaPortal Plugins/TV3 Blaster Plugin/Forms/PluginSetup.cs trunk/plugins/IR Server Suite/MediaPortal Plugins/TV3 Blaster Plugin/TV3 Blaster Plugin.csproj trunk/plugins/IR Server Suite/MediaPortal Plugins/TV3 Blaster Plugin/TV3BlasterPlugin.cs Added Paths: ----------- trunk/plugins/IR Server Suite/Common/IrssComms/GenericMessageQueue.cs trunk/plugins/IR Server Suite/Common/IrssComms/IrssMessage.cs trunk/plugins/IR Server Suite/Common/IrssComms/MessageManagerCombo.cs Removed Paths: ------------- trunk/plugins/IR Server Suite/Applications/IR Server/Client.cs trunk/plugins/IR Server Suite/IPC/ Modified: trunk/plugins/IR Server Suite/Applications/Debug Client/Debug Client.csproj =================================================================== --- trunk/plugins/IR Server Suite/Applications/Debug Client/Debug Client.csproj 2007-09-16 18:08:48 UTC (rev 934) +++ trunk/plugins/IR Server Suite/Applications/Debug Client/Debug Client.csproj 2007-09-18 06:38:59 UTC (rev 935) @@ -77,22 +77,14 @@ <Content Include="Icon.ico" /> </ItemGroup> <ItemGroup> + <ProjectReference Include="..\..\Common\IrssComms\IrssComms.csproj"> + <Project>{BCAFDF45-70DD-46FD-8B98-880DDA585AD2}</Project> + <Name>IrssComms</Name> + </ProjectReference> <ProjectReference Include="..\..\Common\irssUtils\IrssUtils.csproj"> <Project>{CA15769C-232E-4CA7-94FD-206A06CA3ABB}</Project> <Name>IrssUtils</Name> </ProjectReference> - <ProjectReference Include="..\..\IPC\AppModule.InterProcessComm\AppModule.InterProcessComm.csproj"> - <Project>{E98F1F7E-40B6-44C8-AC66-EC867B141FA1}</Project> - <Name>AppModule.InterProcessComm</Name> - </ProjectReference> - <ProjectReference Include="..\..\IPC\AppModule.NamedPipes\AppModule.NamedPipes.csproj"> - <Project>{077B53BB-404A-4B2F-BA17-AAE98C5E9C66}</Project> - <Name>AppModule.NamedPipes</Name> - </ProjectReference> - <ProjectReference Include="..\..\IPC\Named Pipes\Named Pipes.csproj"> - <Project>{F4EA6055-7133-4F18-8971-E19ADEB482C1}</Project> - <Name>Named Pipes</Name> - </ProjectReference> </ItemGroup> <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" /> <!-- To modify your build process, add your task inside one of the targets below and uncomment it. Modified: trunk/plugins/IR Server Suite/Applications/Debug Client/MainForm.cs =================================================================== --- trunk/plugins/IR Server Suite/Applications/Debug Client/MainForm.cs 2007-09-16 18:08:48 UTC (rev 934) +++ trunk/plugins/IR Server Suite/Applications/Debug Client/MainForm.cs 2007-09-18 06:38:59 UTC (rev 935) @@ -6,13 +6,15 @@ using System.Diagnostics; using System.Drawing; using System.IO; +using System.Net; +using System.Net.Sockets; using System.Runtime.InteropServices; using System.Security; using System.Text; using System.Threading; using System.Windows.Forms; -using NamedPipes; +using IrssComms; using IrssUtils; namespace DebugClient @@ -91,8 +93,6 @@ public MainForm() { InitializeComponent(); - - _messageQueue = new MessageQueue(new MessageQueueSink(ReceivedMessage)); } #endregion @@ -105,23 +105,20 @@ #region Variables - MessageQueue _messageQueue; + Client _client = null; string _serverHost = Environment.MachineName; - string _localPipeName = null; string _learnIRFilename = null; bool _registered = false; - bool _keepAlive = true; int _echoID = -1; - Thread _keepAliveThread; IRServerInfo _irServerInfo = new IRServerInfo(); #endregion Variables delegate void DelegateAddStatusLine(string status); - DelegateAddStatusLine _AddStatusLine = null; + DelegateAddStatusLine _addStatusLine = null; void AddStatusLine(string status) { @@ -137,7 +134,7 @@ IrssLog.LogLevel = IrssLog.Level.Debug; IrssLog.Open(Common.FolderIrssLogs + "Debug Client.log"); - _AddStatusLine = new DelegateAddStatusLine(AddStatusLine); + _addStatusLine = new DelegateAddStatusLine(AddStatusLine); comboBoxRemoteButtons.Items.AddRange(Enum.GetNames(typeof(MceButton))); comboBoxRemoteButtons.SelectedIndex = 0; @@ -157,23 +154,22 @@ { buttonDisconnect_Click(null, null); - _AddStatusLine = null; + _addStatusLine = null; IrssLog.Close(); } - void ReceivedMessage(string message) + void ReceivedMessage(IrssMessage received) { - PipeMessage received = PipeMessage.FromString(message); - this.Invoke(_AddStatusLine, new Object[] { String.Format("Received Message: \"{0}, {1}\"", received.Type, received.Flags) }); + this.Invoke(_addStatusLine, new Object[] { String.Format("Received Message: \"{0}, {1}\"", received.Type, received.Flags) }); try { switch (received.Type) { - case PipeMessageType.RegisterClient: - if ((received.Flags & PipeMessageFlags.Success) == PipeMessageFlags.Success) + case MessageType.RegisterClient: + if ((received.Flags & MessageFlags.Success) == MessageFlags.Success) { _registered = true; _irServerInfo = IRServerInfo.FromBytes(received.DataAsBytes); @@ -181,18 +177,18 @@ comboBoxPort.Items.AddRange(_irServerInfo.Ports); comboBoxPort.SelectedIndex = 0; } - else if ((received.Flags & PipeMessageFlags.Failure) == PipeMessageFlags.Failure) + else if ((received.Flags & MessageFlags.Failure) == MessageFlags.Failure) { _registered = false; } return; - case PipeMessageType.RemoteEvent: + case MessageType.RemoteEvent: RemoteHandlerCallback(received.DataAsString); return; - case PipeMessageType.LearnIR: - if ((received.Flags & PipeMessageFlags.Success) == PipeMessageFlags.Success) + case MessageType.LearnIR: + if ((received.Flags & MessageFlags.Success) == MessageFlags.Success) { byte[] dataBytes = received.DataAsBytes; @@ -204,23 +200,23 @@ _learnIRFilename = null; break; - case PipeMessageType.ServerShutdown: + case MessageType.ServerShutdown: _registered = false; return; - case PipeMessageType.Echo: + case MessageType.Echo: _echoID = BitConverter.ToInt32(received.DataAsBytes, 0); return; - case PipeMessageType.Error: + case MessageType.Error: _learnIRFilename = null; - this.Invoke(_AddStatusLine, new Object[] { received.DataAsString }); + this.Invoke(_addStatusLine, new Object[] { received.DataAsString }); return; } } catch (Exception ex) { - this.Invoke(_AddStatusLine, new Object[] { ex.Message }); + this.Invoke(_addStatusLine, new Object[] { ex.Message }); } } @@ -232,14 +228,15 @@ return false; _learnIRFilename = fileName; - - PipeMessage message = new PipeMessage(Environment.MachineName, _localPipeName, PipeMessageType.LearnIR, PipeMessageFlags.Request); - PipeAccess.SendMessage(Common.ServerPipeName, _serverHost, message); + IrssMessage message = new IrssMessage(MessageType.LearnIR, MessageFlags.Request); + _client.Send(message); + AddStatusLine("Learning"); } catch (Exception ex) { + _learnIRFilename = null; AddStatusLine(ex.Message); return false; } @@ -253,7 +250,7 @@ if (!File.Exists(fileName)) return false; - FileStream file = new FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.Read); + FileStream file = new FileStream(fileName, FileMode.Open); byte[] outData = new byte[4 + port.Length + file.Length]; @@ -263,8 +260,8 @@ file.Read(outData, 4 + port.Length, (int)file.Length); file.Close(); - PipeMessage message = new PipeMessage(Environment.MachineName, _localPipeName, PipeMessageType.BlastIR, PipeMessageFlags.Request, outData); - PipeAccess.SendMessage(Common.ServerPipeName, _serverHost, message); + IrssMessage message = new IrssMessage(MessageType.BlastIR, MessageFlags.Request, outData); + _client.Send(message); } catch (Exception ex) { @@ -278,238 +275,67 @@ { string text = String.Format("Remote Event \"{0}\"", keyCode); - this.Invoke(_AddStatusLine, new Object[] { text }); + this.Invoke(_addStatusLine, new Object[] { text }); } - bool StartComms() + void CommsFailure(object obj) { - try - { - if (OpenLocalPipe()) - { - _messageQueue.Start(); + Exception ex = obj as Exception; + + if (ex != null) + this.Invoke(_addStatusLine, new Object[] { String.Format("Communications failure: {0}", ex.Message) }); + else + this.Invoke(_addStatusLine, new Object[] { "Communications failure" }); - _keepAliveThread = new Thread(new ThreadStart(KeepAliveThread)); - _keepAliveThread.Start(); - return true; - } - } - catch (Exception ex) - { - IrssLog.Error(ex.ToString()); - } + StopClient(); + } + void Connected(object obj) + { + IrssLog.Info("Connected to server"); - return false; + IrssMessage message = new IrssMessage(MessageType.RegisterClient, MessageFlags.Request); + _client.Send(message); } - void StopComms() + void Disconnected(object obj) { - _keepAlive = false; + IrssLog.Warn("Communications with server has been lost"); - try - { - if (_keepAliveThread != null && _keepAliveThread.IsAlive) - _keepAliveThread.Abort(); - } - catch { } - - try - { - if (_registered) - { - _registered = false; - - PipeMessage message = new PipeMessage(Environment.MachineName, _localPipeName, PipeMessageType.UnregisterClient, PipeMessageFlags.Request); - PipeAccess.SendMessage(Common.ServerPipeName, _serverHost, message); - } - } - catch { } - - _messageQueue.Stop(); - - try - { - if (PipeAccess.ServerRunning) - PipeAccess.StopServer(); - } - catch { } + Thread.Sleep(1000); } - bool OpenLocalPipe() + bool StartClient() { - try - { - int pipeNumber = 1; - bool retry = false; + if (_client != null) + return false; - do - { - string localPipeTest = String.Format("irserver\\debug{0:00}", pipeNumber); + ClientMessageSink sink = new ClientMessageSink(ReceivedMessage); - if (PipeAccess.PipeExists(Common.LocalPipePrefix + localPipeTest)) - { - if (++pipeNumber <= Common.MaximumLocalClientCount) - retry = true; - else - throw new Exception(String.Format("Maximum local client limit ({0}) reached", Common.MaximumLocalClientCount)); - } - else - { - if (!PipeAccess.StartServer(localPipeTest, new PipeMessageHandler(_messageQueue.Enqueue))) - throw new Exception(String.Format("Failed to start local pipe server \"{0}\"", localPipeTest)); + IPAddress serverAddress = Client.GetIPFromName(_serverHost); - _localPipeName = localPipeTest; - retry = false; - } - } - while (retry); - - return true; - } - catch (Exception ex) + _client = new Client(serverAddress, 24000, sink); + _client.CommsFailureCallback = new WaitCallback(CommsFailure); + _client.ConnectCallback = new WaitCallback(Connected); + _client.DisconnectCallback = new WaitCallback(Disconnected); + + if (_client.Start()) { - IrssLog.Error(ex.ToString()); - return false; - } - } - - bool ConnectToServer() - { - try - { - PipeMessage message = new PipeMessage(Environment.MachineName, _localPipeName, PipeMessageType.RegisterClient, PipeMessageFlags.Request); - PipeAccess.SendMessage(Common.ServerPipeName, _serverHost, message); return true; } - catch (AppModule.NamedPipes.NamedPipeIOException) + else { + _client = null; return false; } - catch (Exception ex) - { - IrssLog.Error(ex.ToString()); - return false; - } } - - void KeepAliveThread() + void StopClient() { - Random random = new Random((int)DateTime.Now.Ticks); - bool reconnect; - int attempt; + if (_client == null) + return; - _registered = false; - _keepAlive = true; - while (_keepAlive) - { - reconnect = true; - - #region Connect to server - - IrssLog.Info("Connecting ({0}) ...", _serverHost); - attempt = 0; - while (_keepAlive && reconnect) - { - if (ConnectToServer()) - { - reconnect = false; - } - else - { - int wait; - - if (attempt <= 50) - attempt++; - - if (attempt > 50) - wait = 30; // 30 seconds - else if (attempt > 20) - wait = 10; // 10 seconds - else if (attempt > 10) - wait = 5; // 5 seconds - else - wait = 1; // 1 second - - for (int sleeps = 0; sleeps < wait && _keepAlive; sleeps++) - Thread.Sleep(1000); - } - } - - #endregion Connect to server - - #region Wait for registered - - // Give up after 10 seconds ... - attempt = 0; - while (_keepAlive && !_registered && !reconnect) - { - if (++attempt >= 10) - reconnect = true; - else - Thread.Sleep(1000); - } - - #endregion Wait for registered - - #region Ping the server repeatedly - - while (_keepAlive && _registered && !reconnect) - { - int pingID = random.Next(); - long pingTime = DateTime.Now.Ticks; - - try - { - PipeMessage message = new PipeMessage(Environment.MachineName, _localPipeName, PipeMessageType.Ping, PipeMessageFlags.Request, BitConverter.GetBytes(pingID)); - PipeAccess.SendMessage(Common.ServerPipeName, _serverHost, message); - } - catch - { - // Failed to ping ... reconnect ... - IrssLog.Warn("Failed to ping, attempting to reconnect ..."); - _registered = false; - reconnect = true; - break; - } - - // Wait 10 seconds for a ping echo ... - bool receivedEcho = false; - while (_keepAlive && _registered && !reconnect && - !receivedEcho && DateTime.Now.Ticks - pingTime < 10 * 1000 * 10000) - { - if (_echoID == pingID) - { - receivedEcho = true; - } - else - { - Thread.Sleep(1000); - } - } - - if (receivedEcho) // Received ping echo ... - { - // Wait 60 seconds before re-pinging ... - for (int sleeps = 0; sleeps < 60 && _keepAlive && _registered; sleeps++) - Thread.Sleep(1000); - } - else // Didn't receive ping echo ... - { - IrssLog.Warn("No echo to ping, attempting to reconnect ..."); - - // Break out of pinging cycle ... - _registered = false; - reconnect = true; - } - } - - #endregion Ping the server repeatedly - - } - + _client.Stop(); + _client = null; } - - #region Controls private void buttonConnect_Click(object sender, EventArgs e) @@ -519,15 +345,15 @@ AddStatusLine("Connect"); listBoxStatus.Update(); - if (PipeAccess.ServerRunning) + if (_client != null) { - AddStatusLine("Already connected"); + AddStatusLine("Already connected/connecting"); return; } _serverHost = comboBoxComputer.Text; - StartComms(); + StartClient(); } catch (Exception ex) { @@ -540,13 +366,19 @@ try { - if (!PipeAccess.ServerRunning) + if (_client == null) { AddStatusLine(" - Not connected"); return; } - StopComms(); + if (_registered) + { + IrssMessage message = new IrssMessage(MessageType.UnregisterClient, MessageFlags.Request); + _client.Send(message); + } + + StopClient(); } catch (Exception ex) { @@ -555,56 +387,78 @@ } private void buttonBlast_Click(object sender, EventArgs e) { - if (!PipeAccess.ServerRunning) + AddStatusLine("Blast IR"); + + if (_client == null) { - AddStatusLine("Not connected"); + AddStatusLine(" - Not connected"); return; } + if (!_client.Connected) + { + AddStatusLine(" - Connecting..."); + return; + } + if (!_irServerInfo.CanTransmit) { - AddStatusLine("IR Server is not setup to blast"); + AddStatusLine(" - IR Server is not setup to blast"); return; } if (BlastIR(DebugIRFile, comboBoxPort.SelectedItem as string)) - AddStatusLine("Blasting"); + AddStatusLine(" - Blasting ..."); else - AddStatusLine("Can't Blast"); + AddStatusLine(" - Can't Blast"); } private void buttonLearnIR_Click(object sender, EventArgs e) { - if (!PipeAccess.ServerRunning) + AddStatusLine("Learn IR"); + + if (_client == null) { - AddStatusLine("Not connected"); + AddStatusLine(" - Not connected"); return; } + if (!_client.Connected) + { + AddStatusLine(" - Connecting..."); + return; + } + if (!_irServerInfo.CanLearn) { - AddStatusLine("IR Server is not setup to support learning"); + AddStatusLine(" - IR Server is not setup to support learning"); return; } if (LearnIR(DebugIRFile)) - AddStatusLine("Learning IR"); + AddStatusLine(" - Learning IR ..."); else - AddStatusLine("Learn IR Busy"); + AddStatusLine(" - Learn IR Busy"); } private void buttonShutdownServer_Click(object sender, EventArgs e) { AddStatusLine("Shutdown"); - if (!PipeAccess.ServerRunning) + if (_client == null) { AddStatusLine(" - Not connected"); return; } + if (!_client.Connected) + { + AddStatusLine(" - Connecting..."); + return; + } + try { - PipeMessage message = new PipeMessage(Environment.MachineName, _localPipeName, PipeMessageType.ServerShutdown, PipeMessageFlags.Request); - PipeAccess.SendMessage(Common.ServerPipeName, _serverHost, message); + IrssMessage message = new IrssMessage(MessageType.ServerShutdown, MessageFlags.Request); + _client.Send(message); } catch (Exception ex) { @@ -615,16 +469,22 @@ { AddStatusLine("Ping Server"); - if (!PipeAccess.ServerRunning) + if (_client == null) { AddStatusLine(" - Not connected"); return; } + if (!_client.Connected) + { + AddStatusLine(" - Connecting..."); + return; + } + try { - PipeMessage message = new PipeMessage(Environment.MachineName, _localPipeName, PipeMessageType.Ping, PipeMessageFlags.Request, BitConverter.GetBytes(24)); - PipeAccess.SendMessage(Common.ServerPipeName, _serverHost, message); + IrssMessage message = new IrssMessage(MessageType.Ping, MessageFlags.Request, BitConverter.GetBytes(24)); + _client.Send(message); } catch (Exception ex) { @@ -635,13 +495,9 @@ private void comboBoxRemoteButtons_SelectedIndexChanged(object sender, EventArgs e) { if (comboBoxRemoteButtons.SelectedItem.ToString() == "Custom") - { numericUpDownButton.Enabled = true; - } else - { numericUpDownButton.Enabled = false; - } } private void buttonSendRemoteButton_Click(object sender, EventArgs e) @@ -650,23 +506,24 @@ try { - if (!PipeAccess.ServerRunning) + if (_client == null) { AddStatusLine(" - Not connected"); return; } + if (!_client.Connected) + { + AddStatusLine(" - Connecting..."); + return; + } + int keyCode = (int)Enum.Parse(typeof(MceButton), comboBoxRemoteButtons.SelectedItem.ToString(), true); if (keyCode == -1) keyCode = Decimal.ToInt32(numericUpDownButton.Value); - byte[] data = new byte[8]; - - BitConverter.GetBytes(keyCode).CopyTo(data, 0); - BitConverter.GetBytes(0).CopyTo(data, 4); - - PipeMessage message = new PipeMessage(Environment.MachineName, _localPipeName, PipeMessageType.ForwardRemoteEvent, PipeMessageFlags.Notify, data); - PipeAccess.SendMessage(Common.ServerPipeName, _serverHost, message); + IrssMessage message = new IrssMessage(MessageType.ForwardRemoteEvent, MessageFlags.Notify, keyCode.ToString()); + _client.Send(message); } catch (Exception ex) { @@ -688,8 +545,6 @@ #endregion Controls - - Thread AutoTest; private void buttonAutoTest_Click(object sender, EventArgs e) @@ -713,7 +568,7 @@ { randomNumber = rand.Next(100000); - this.Invoke(_AddStatusLine, new Object[] { String.Format("AutoTest: {0}", randomNumber) }); + this.Invoke(_addStatusLine, new Object[] { String.Format("AutoTest: {0}", randomNumber) }); process.StartInfo.Arguments = "-host localhost -pad 4 -channel " + randomNumber.ToString(); Modified: trunk/plugins/IR Server Suite/Applications/IR Blast/IR Blast.csproj =================================================================== --- trunk/plugins/IR Server Suite/Applications/IR Blast/IR Blast.csproj 2007-09-16 18:08:48 UTC (rev 934) +++ trunk/plugins/IR Server Suite/Applications/IR Blast/IR Blast.csproj 2007-09-18 06:38:59 UTC (rev 935) @@ -63,22 +63,14 @@ <Compile Include="Properties\AssemblyInfo.cs" /> </ItemGroup> <ItemGroup> + <ProjectReference Include="..\..\Common\IrssComms\IrssComms.csproj"> + <Project>{BCAFDF45-70DD-46FD-8B98-880DDA585AD2}</Project> + <Name>IrssComms</Name> + </ProjectReference> <ProjectReference Include="..\..\Common\irssUtils\IrssUtils.csproj"> <Project>{CA15769C-232E-4CA7-94FD-206A06CA3ABB}</Project> <Name>IrssUtils</Name> </ProjectReference> - <ProjectReference Include="..\..\IPC\AppModule.InterProcessComm\AppModule.InterProcessComm.csproj"> - <Project>{E98F1F7E-40B6-44C8-AC66-EC867B141FA1}</Project> - <Name>AppModule.InterProcessComm</Name> - </ProjectReference> - <ProjectReference Include="..\..\IPC\AppModule.NamedPipes\AppModule.NamedPipes.csproj"> - <Project>{077B53BB-404A-4B2F-BA17-AAE98C5E9C66}</Project> - <Name>AppModule.NamedPipes</Name> - </ProjectReference> - <ProjectReference Include="..\..\IPC\Named Pipes\Named Pipes.csproj"> - <Project>{F4EA6055-7133-4F18-8971-E19ADEB482C1}</Project> - <Name>Named Pipes</Name> - </ProjectReference> </ItemGroup> <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" /> <!-- To modify your build process, add your task inside one of the targets below and uncomment it. Modified: trunk/plugins/IR Server Suite/Applications/IR Blast/Program.cs =================================================================== --- trunk/plugins/IR Server Suite/Applications/IR Blast/Program.cs 2007-09-16 18:08:48 UTC (rev 934) +++ trunk/plugins/IR Server Suite/Applications/IR Blast/Program.cs 2007-09-18 06:38:59 UTC (rev 935) @@ -4,11 +4,13 @@ using System.ComponentModel; using System.Data; using System.IO; +using System.Net; +using System.Net.Sockets; using System.Text; using System.Threading; using System.Xml; -using NamedPipes; +using IrssComms; using IrssUtils; namespace IRBlast @@ -19,17 +21,14 @@ #region Variables - static MessageQueue _messageQueue; + static Client _client = null; static bool _registered = false; - static bool _keepAlive = true; static int _echoID = -1; - static Thread _keepAliveThread; static string _serverHost = null; - static string _localPipeName; - static string _blastPort = "None"; + static string _blastPort = "Default"; static bool _treatAsChannelNumber = false; static int _padChannelNumber = 0; @@ -81,8 +80,6 @@ } } - _messageQueue = new MessageQueue(new MessageQueueSink(ReceivedMessage)); - if (String.IsNullOrEmpty(_serverHost) || irCommands.Count == 0) { Console.WriteLine("Malformed command line parameters ..."); @@ -90,7 +87,7 @@ ShowHelp(); } - else if (StartComms()) + else if (StartClient()) { Thread.Sleep(250); @@ -166,7 +163,7 @@ Error(ex); } - StopComms(); + StopClient(); IrssLog.Close(); } @@ -218,274 +215,103 @@ Console.WriteLine(""); } - static bool StartComms() + static void CommsFailure(object obj) { - try - { - if (OpenLocalPipe()) - { - _messageQueue.Start(); + Exception ex = obj as Exception; + + if (ex != null) + IrssLog.Error("Communications failure: {0}", ex.Message); + else + IrssLog.Error("Communications failure"); - _keepAliveThread = new Thread(new ThreadStart(KeepAliveThread)); - _keepAliveThread.Start(); - return true; - } - } - catch (Exception ex) - { - Error(ex); - } + StopClient(); + } + static void Connected(object obj) + { + IrssLog.Info("Connected to server"); - return false; + IrssMessage message = new IrssMessage(MessageType.RegisterClient, MessageFlags.Request); + _client.Send(message); } - static void StopComms() + static void Disconnected(object obj) { - _keepAlive = false; + IrssLog.Warn("Communications with server has been lost"); - try - { - if (_keepAliveThread != null && _keepAliveThread.IsAlive) - _keepAliveThread.Abort(); - } - catch { } - - try - { - if (_registered) - { - _registered = false; - - PipeMessage message = new PipeMessage(Environment.MachineName, _localPipeName, PipeMessageType.UnregisterClient, PipeMessageFlags.Request); - PipeAccess.SendMessage(Common.ServerPipeName, _serverHost, message); - } - } - catch { } - - _messageQueue.Stop(); - - try - { - if (PipeAccess.ServerRunning) - PipeAccess.StopServer(); - } - catch { } + Thread.Sleep(1000); } - static bool OpenLocalPipe() + static bool StartClient() { - try - { - int pipeNumber = 1; - bool retry = false; + if (_client != null) + return false; - do - { - string localPipeTest = String.Format("irserver\\blast{0:00}", pipeNumber); + ClientMessageSink sink = new ClientMessageSink(ReceivedMessage); - if (PipeAccess.PipeExists(Common.LocalPipePrefix + localPipeTest)) - { - if (++pipeNumber <= Common.MaximumLocalClientCount) - retry = true; - else - throw new Exception(String.Format("Maximum local client limit ({0}) reached", Common.MaximumLocalClientCount)); - } - else - { - if (!PipeAccess.StartServer(localPipeTest, new PipeMessageHandler(_messageQueue.Enqueue))) - throw new Exception(String.Format("Failed to start local pipe server \"{0}\"", localPipeTest)); + IPAddress serverAddress = Client.GetIPFromName(_serverHost); - _localPipeName = localPipeTest; - retry = false; - } - } - while (retry); - - return true; - } - catch (Exception ex) + _client = new Client(serverAddress, 24000, sink); + _client.CommsFailureCallback = new WaitCallback(CommsFailure); + _client.ConnectCallback = new WaitCallback(Connected); + _client.DisconnectCallback = new WaitCallback(Disconnected); + + if (_client.Start()) { - Error(ex); - return false; - } - } - - static bool ConnectToServer() - { - try - { - PipeMessage message = new PipeMessage(Environment.MachineName, _localPipeName, PipeMessageType.RegisterClient, PipeMessageFlags.Request); - PipeAccess.SendMessage(Common.ServerPipeName, _serverHost, message); return true; } - catch (AppModule.NamedPipes.NamedPipeIOException) + else { + _client = null; return false; } - catch (Exception ex) - { - Error(ex); - return false; - } } - - static void KeepAliveThread() + static void StopClient() { - Random random = new Random((int)DateTime.Now.Ticks); - bool reconnect; - int attempt; + if (_client == null) + return; - _registered = false; - _keepAlive = true; - while (_keepAlive) - { - reconnect = true; - - #region Connect to server - - Info("Connecting ({0}) ...", _serverHost); - attempt = 0; - while (_keepAlive && reconnect) - { - if (ConnectToServer()) - { - reconnect = false; - } - else - { - int wait; - - if (attempt <= 50) - attempt++; - - if (attempt > 50) - wait = 30; // 30 seconds - else if (attempt > 20) - wait = 10; // 10 seconds - else if (attempt > 10) - wait = 5; // 5 seconds - else - wait = 1; // 1 second - - for (int sleeps = 0; sleeps < wait && _keepAlive; sleeps++) - Thread.Sleep(1000); - } - } - - #endregion Connect to server - - #region Wait for registered - - // Give up after 10 seconds ... - attempt = 0; - while (_keepAlive && !_registered && !reconnect) - { - if (++attempt >= 10) - reconnect = true; - else - Thread.Sleep(1000); - } - - #endregion Wait for registered - - #region Ping the server repeatedly - - while (_keepAlive && _registered && !reconnect) - { - int pingID = random.Next(); - long pingTime = DateTime.Now.Ticks; - - try - { - PipeMessage message = new PipeMessage(Environment.MachineName, _localPipeName, PipeMessageType.Ping, PipeMessageFlags.Request, BitConverter.GetBytes(pingID)); - PipeAccess.SendMessage(Common.ServerPipeName, _serverHost, message); - } - catch - { - // Failed to ping ... reconnect ... - Warn("Failed to ping, attempting to reconnect ..."); - _registered = false; - reconnect = true; - break; - } - - // Wait 10 seconds for a ping echo ... - bool receivedEcho = false; - while (_keepAlive && _registered && !reconnect && - !receivedEcho && DateTime.Now.Ticks - pingTime < 10 * 1000 * 10000) - { - if (_echoID == pingID) - { - receivedEcho = true; - } - else - { - Thread.Sleep(1000); - } - } - - if (receivedEcho) // Received ping echo ... - { - // Wait 60 seconds before re-pinging ... - for (int sleeps = 0; sleeps < 60 && _keepAlive && _registered; sleeps++) - Thread.Sleep(1000); - } - else // Didn't receive ping echo ... - { - Warn("No echo to ping, attempting to reconnect ..."); - - // Break out of pinging cycle ... - _registered = false; - reconnect = true; - } - } - - #endregion Ping the server repeatedly - - } - + _client.Stop(); + _client = null; } - static void ReceivedMessage(string message) + static void ReceivedMessage(IrssMessage received) { - PipeMessage received = PipeMessage.FromString(message); - IrssLog.Debug("Received Message \"{0}\"", received.Type); try { switch (received.Type) { - case PipeMessageType.BlastIR: - if ((received.Flags & PipeMessageFlags.Success) == PipeMessageFlags.Success) + case MessageType.BlastIR: + if ((received.Flags & MessageFlags.Success) == MessageFlags.Success) Info("Blast Success"); - else if ((received.Flags & PipeMessageFlags.Failure) == PipeMessageFlags.Failure) + else if ((received.Flags & MessageFlags.Failure) == MessageFlags.Failure) Warn("Blast Failed!"); break; - case PipeMessageType.RegisterClient: - if ((received.Flags & PipeMessageFlags.Success) == PipeMessageFlags.Success) + case MessageType.RegisterClient: + if ((received.Flags & MessageFlags.Success) == MessageFlags.Success) { Info("Registered to IR Server"); _registered = true; //_irServerInfo = TransceiverInfo.FromString(received.Data); } - else if ((received.Flags & PipeMessageFlags.Failure) == PipeMessageFlags.Failure) + else if ((received.Flags & MessageFlags.Failure) == MessageFlags.Failure) { _registered = false; Warn("IR Server refused to register"); } break; - case PipeMessageType.ServerShutdown: + case MessageType.ServerShutdown: _registered = false; Warn("IR Server Shutdown - Blasting disabled until IR Server returns"); break; - case PipeMessageType.Echo: + case MessageType.Echo: _echoID = BitConverter.ToInt32(received.DataAsBytes, 0); break; - case PipeMessageType.Error: + case MessageType.Error: Warn(received.DataAsString); break; } @@ -498,7 +324,7 @@ static void BlastIR(string fileName, string port) { - FileStream file = new FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.Read); + FileStream file = new FileStream(fileName, FileMode.Open); byte[] outData = new byte[4 + port.Length + file.Length]; @@ -508,8 +334,8 @@ file.Read(outData, 4 + port.Length, (int)file.Length); file.Close(); - PipeMessage message = new PipeMessage(Environment.MachineName, _localPipeName, PipeMessageType.BlastIR, PipeMessageFlags.Request | PipeMessageFlags.ForceNotRespond, outData); - PipeAccess.SendMessage(Common.ServerPipeName, _serverHost, message); + IrssMessage message = new IrssMessage(MessageType.BlastIR, MessageFlags.Request | MessageFlags.ForceNotRespond, outData); + _client.Send(message); } #region Log Commands Modified: trunk/plugins/IR Server Suite/Applications/IR Blast (No Window)/IR Blast (No Window).csproj =================================================================== --- trunk/plugins/IR Server Suite/Applications/IR Blast (No Window)/IR Blast (No Window).csproj 2007-09-16 18:08:48 UTC (rev 934) +++ trunk/plugins/IR Server Suite/Applications/IR Blast (No Window)/IR Blast (No Window).csproj 2007-09-18 06:38:59 UTC (rev 935) @@ -64,22 +64,14 @@ <Compile Include="Properties\AssemblyInfo.cs" /> </ItemGroup> <ItemGroup> + <ProjectReference Include="..\..\Common\IrssComms\IrssComms.csproj"> + <Project>{BCAFDF45-70DD-46FD-8B98-880DDA585AD2}</Project> + <Name>IrssComms</Name> + </ProjectReference> <ProjectReference Include="..\..\Common\irssUtils\IrssUtils.csproj"> <Project>{CA15769C-232E-4CA7-94FD-206A06CA3ABB}</Project> <Name>IrssUtils</Name> </ProjectReference> - <ProjectReference Include="..\..\IPC\AppModule.InterProcessComm\AppModule.InterProcessComm.csproj"> - <Project>{E98F1F7E-40B6-44C8-AC66-EC867B141FA1}</Project> - <Name>AppModule.InterProcessComm</Name> - </ProjectReference> - <ProjectReference Include="..\..\IPC\AppModule.NamedPipes\AppModule.NamedPipes.csproj"> - <Project>{077B53BB-404A-4B2F-BA17-AAE98C5E9C66}</Project> - <Name>AppModule.NamedPipes</Name> - </ProjectReference> - <ProjectReference Include="..\..\IPC\Named Pipes\Named Pipes.csproj"> - <Project>{F4EA6055-7133-4F18-8971-E19ADEB482C1}</Project> - <Name>Named Pipes</Name> - </ProjectReference> </ItemGroup> <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" /> <!-- To modify your build process, add your task inside one of the targets below and uncomment it. Modified: trunk/plugins/IR Server Suite/Applications/IR Blast (No Window)/Program.cs =================================================================== --- trunk/plugins/IR Server Suite/Applications/IR Blast (No Window)/Program.cs 2007-09-16 18:08:48 UTC (rev 934) +++ trunk/plugins/IR Server Suite/Applications/IR Blast (No Window)/Program.cs 2007-09-18 06:38:59 UTC (rev 935) @@ -4,12 +4,14 @@ using System.ComponentModel; using System.Data; using System.IO; +using System.Net; +using System.Net.Sockets; using System.Text; using System.Threading; using System.Windows.Forms; using System.Xml; -using NamedPipes; +using IrssComms; using IrssUtils; namespace IRBlast @@ -20,17 +22,14 @@ #region Variables - static MessageQueue _messageQueue; + static Client _client = null; static bool _registered = false; - static bool _keepAlive = true; static int _echoID = -1; - static Thread _keepAliveThread; static string _serverHost = null; - static string _localPipeName; - static string _blastPort = "None"; + static string _blastPort = "Default"; static bool _treatAsChannelNumber = false; static int _padChannelNumber = 0; @@ -80,8 +79,6 @@ } } - _messageQueue = new MessageQueue(new MessageQueueSink(ReceivedMessage)); - if (String.IsNullOrEmpty(_serverHost) || irCommands.Count == 0) { Console.WriteLine("Malformed command line parameters ..."); @@ -89,7 +86,7 @@ ShowHelp(); } - else if (StartComms()) + else if (StartClient()) { Thread.Sleep(250); @@ -165,7 +162,7 @@ IrssLog.Error(ex.ToString()); } - StopComms(); + StopClient(); IrssLog.Close(); } @@ -180,274 +177,103 @@ "IR Blast (No Window)", MessageBoxButtons.OK, MessageBoxIcon.Error); } - static bool StartComms() + static void CommsFailure(object obj) { - try - { - if (OpenLocalPipe()) - { - _messageQueue.Start(); + Exception ex = obj as Exception; + + if (ex != null) + IrssLog.Error("Communications failure: {0}", ex.Message); + else + IrssLog.Error("Communications failure"); - _keepAliveThread = new Thread(new ThreadStart(KeepAliveThread)); - _keepAliveThread.Start(); - return true; - } - } - catch (Exception ex) - { - IrssLog.Error(ex.ToString()); - } + StopClient(); + } + static void Connected(object obj) + { + IrssLog.Info("Connected to server"); - return false; + IrssMessage message = new IrssMessage(MessageType.RegisterClient, MessageFlags.Request); + _client.Send(message); } - static void StopComms() + static void Disconnected(object obj) { - _keepAlive = false; + IrssLog.Warn("Communications with server has been lost"); - try - { - if (_keepAliveThread != null && _keepAliveThread.IsAlive) - _keepAliveThread.Abort(); - } - catch { } - - try - { - if (_registered) - { - _registered = false; - - PipeMessage message = new PipeMessage(Environment.MachineName, _localPipeName, PipeMessageType.UnregisterClient, PipeMessageFlags.Request); - PipeAccess.SendMessage(Common.ServerPipeName, _serverHost, message); - } - } - catch { } - - _messageQueue.Stop(); - - try - { - if (PipeAccess.ServerRunning) - PipeAccess.StopServer(); - } - catch { } + Thread.Sleep(1000); } - static bool OpenLocalPipe() + static bool StartClient() { - try - { - int pipeNumber = 1; - bool retry = false; + if (_client != null) + return false; - do - { - string localPipeTest = String.Format("irserver\\blast{0:00}", pipeNumber); + ClientMessageSink sink = new ClientMessageSink(ReceivedMessage); - if (PipeAccess.PipeExists(Common.LocalPipePrefix + localPipeTest)) - { - if (++pipeNumber <= Common.MaximumLocalClientCount) - retry = true; - else - throw new Exception(String.Format("Maximum local client limit ({0}) reached", Common.MaximumLocalClientCount)); - } - else - { - if (!PipeAccess.StartServer(localPipeTest, new PipeMessageHandler(_messageQueue.Enqueue))) - throw new Exception(String.Format("Failed to start local pipe server \"{0}\"", localPipeTest)); + IPAddress serverAddress = Client.GetIPFromName(_serverHost); - _localPipeName = localPipeTest; - retry = false; - } - } - while (retry); - - return true; - } - catch (Exception ex) + _client = new Client(serverAddress, 24000, sink); + _client.CommsFailureCallback = new WaitCallback(CommsFailure); + _client.ConnectCallback = new WaitCallback(Connected); + _client.DisconnectCallback = new WaitCallback(Disconnected); + + if (_client.Start()) { - IrssLog.Error(ex.ToString()); - return false; - } - } - - static bool ConnectToServer() - { - try - { - PipeMessage message = new PipeMessage(Environment.MachineName, _localPipeName, PipeMessageType.RegisterClient, PipeMessageFlags.Request); - PipeAccess.SendMessage(Common.ServerPipeName, _serverHost, message); return true; } - catch (AppModule.NamedPipes.NamedPipeIOException) + else { + _client = null; return false; } - catch (Exception ex) - { - IrssLog.Error(ex.ToString()); - return false; - } } - - static void KeepAliveThread() + static void StopClient() { - Random random = new Random((int)DateTime.Now.Ticks); - bool reconnect; - int attempt; + if (_client == null) + return; - _registered = false; - _keepAlive = true; - while (_keepAlive) - { - reconnect = true; - - #region Connect to server - - IrssLog.Info("Connecting ({0}) ...", _serverHost); - attempt = 0; - while (_keepAlive && reconnect) - { - if (ConnectToServer()) - { - reconnect = false; - } - else - { - int wait; - - if (attempt <= 50) - attempt++; - - if (attempt > 50) - wait = 30; // 30 seconds - else if (attempt > 20) - wait = 10; // 10 seconds - else if (attempt > 10) - wait = 5; // 5 seconds - else - wait = 1; // 1 second - - for (int sleeps = 0; sleeps < wait && _keepAlive; sleeps++) - Thread.Sleep(1000); - } - } - - #endregion Connect to server - - #region Wait for registered - - // Give up after 10 seconds ... - attempt = 0; - while (_keepAlive && !_registered && !reconnect) - { - if (++attempt >= 10) - reconnect = true; - else - Thread.Sleep(1000); - } - - #endregion Wait for registered - - #region Ping the server repeatedly - - while (_keepAlive && _registered && !reconnect) - { - int pingID = random.Next(); - long pingTime = DateTime.Now.Ticks; - - try - { - PipeMessage message = new PipeMessage(Environment.MachineName, _localPipeName, PipeMessageType.Ping, PipeMessageFlags.Request, BitConverter.GetBytes(pingID)); - PipeAccess.SendMessage(Common.ServerPipeName, _serverHost, message); - } - catch - { - // Failed to ping ... reconnect ... - IrssLog.Warn("Failed to ping, attempting to reconnect ..."); - _registered = false; - reconnect = true; - break; - } - - // Wait 10 seconds for a ping echo ... - bool receivedEcho = false; - while (_keepAlive && _registered && !reconnect && - !receivedEcho && DateTime.Now.Ticks - pingTime < 10 * 1000 * 10000) - { - if (_echoID == pingID) - { - receivedEcho = true; - } - else - { - Thread.Sleep(1000); - } - } - - if (receivedEcho) // Received ping echo ... - { - // Wait 60 seconds before re-pinging ... - for (int sleeps = 0; sleeps < 60 && _keepAlive && _registered; sleeps++) - Thread.Sleep(1000); - } - else // Didn't receive ping echo ... - { - IrssLog.Warn("No echo to ping, attempting to reconnect ..."); - - // Break out of pinging cycle ... - _registered = false; - reconnect = true; - } - } - - #endregion Ping the server repeatedly - - } - + _client.Stop(); + _client = null; } - static void ReceivedMessage(string message) + static void ReceivedMessage(IrssMessage received) { - PipeMessage received = PipeMessage.FromString(message); - IrssLog.Debug("Received Message \"{0}\"", received.Type); try { switch (received.Type) { - case PipeMessageType.BlastIR: - if ((received.Flags & PipeMessageFlags.Success) == PipeMessageFlags.Success) + case MessageType.BlastIR: + if ((received.Flags & MessageFlags.Success) == MessageFlags.Success) IrssLog.Info("Blast Success"); - else if ((received.Flags & PipeMessageFlags.Failure) == PipeMessageFlags.Failure) + else if ((received.Flags & MessageFlags.Failure) == MessageFlags.Failure) IrssLog.Warn("Blast Failed!"); break; - case PipeMessageType.RegisterClient: - if ((received.Flags & PipeMessageFlags.Success) == PipeMessageFlags.Success) + case MessageType.RegisterClient: + if ((received.Flags & MessageFlags.Success) == MessageFlags.Success) { IrssLog.Info("Registered to IR Server"); _registered = true; //_irServerInfo = TransceiverInfo.FromString(received.Data); } - else if ((received.Flags & PipeMessageFlags.Failure) == PipeMessageFlags.Failure) + else if ((received.Flags & MessageFlags.Failure) == MessageFlags.Failure) { _registered = false; IrssLog.Warn("IR Server refused to register"); } break; - case PipeMessageType.ServerShutdown: + case MessageType.ServerShutdown: _registered = false; IrssLog.Warn("IR Server Shutdown - Blasting disabled until IR Server returns"); break; - case PipeMessageType.Echo: + case MessageType.Echo: _echoID = BitConverter.ToInt32(received.DataAsBytes, 0); break; - case PipeMessageType.Error: + case MessageType.Error: IrssLog.Warn(received.DataAsString); break; } @@ -460,7 +286,7 @@ static void BlastIR(string fileName, string port) { - FileStream file = new FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.Read); + FileStream file = new FileStream(fileName, FileMode.Open); byte[] outData = new byte[4 + port.Length + file.Length]; @@ -470,8 +296,8 @@ file.Read(outData, 4 + port.Length, (int)file.Length); file.Close(); - PipeMessage message = new PipeMessage(Environment.MachineName, _localPipeName, PipeMessageType.BlastIR, PipeMessageFlags.Request | PipeMessageFlags.ForceNotRespond, outData); - PipeAccess.SendMessage(Common.ServerPipeName, _serverHost, message); + IrssMessage message = new IrssMessage(MessageType.BlastIR, MessageFlags.Request | MessageFlags.ForceNotRespond, outData); + _client.Send(message); } } Deleted: trunk/plugins/IR Server Suite/Applications/IR Server/Client.cs =================================================================== --- trunk/plugins/IR Server Suite/Applications/IR Server/Client.cs 2007-09-16 18:08:48 UTC (rev 934) +++ trunk/plugins/IR Server Suite/Applications/IR Server/Client.cs 2007-09-18 06:38:59 UTC (rev 935) @@ -1,25 +0,0 @@ -using System; - -namespace IRServer -{ - - struct Client - { - - public string Pipe; - public string Server; - - public Client(string pipe, string server) - { - Pipe = pipe; - Server = server; - } - - public override string ToString() - { - return String.Format("({0}, {1})", Server, Pipe); - } - - } - -} Modified: trunk/plugins/IR Server Suite/Applications/IR Server/IR Server.csproj =================================================================== --- trunk/plugins/IR Server Suite/Applications/IR Server/IR Server.csproj 2007-09-16 18:08:48 UTC (rev 934) +++ trunk/plugins/IR Server Suite/Applications/IR Server/IR Server.csproj 2007-09-18 06:38:59 UTC (rev 935) @@ -101,7 +101,6 @@ <Compile Include="Advanced.Designer.cs"> <DependentUpon>Advanced.cs</DependentUpon> </Compile> - <Compile Include="Client.cs" /> <Compile Include="Properties\Resources.Designer.cs"> <AutoGen>True</AutoGen> <DesignTime>True</DesignTime> @@ -145,14 +144,14 @@ </BootstrapperPackage> </ItemGroup> <ItemGroup> + <ProjectReference Include="..\..\Common\IrssComms\IrssComms.csproj"> + <Project>{BCAFDF45-70DD-46FD-8B98-880DDA585AD2}</Project> + <Name>IrssComms</Name> + </ProjectReference> <ProjectReference Include="..\..\Common\irssUtils\IrssUtils.csproj"> <Project>{CA15769C-232E-4CA7-94FD-206A06CA3ABB}</Project> <Name>IrssUtils</Name> </ProjectReference> - <ProjectReference Include="..\..\IPC\Named Pipes\Named Pipes.csproj"> - <Project>{F4EA6055-7133-4F18-8971-E19ADEB482C1}</Project> - <Name>Named Pipes</Name> - </ProjectReference> <ProjectReference Include="..\..\IR Server Plugins\IR Server Plugin Interface\IR Server Plugin Interface.csproj"> <Project>{D8B3D28F-62CE-4CA7-86CE-B7EAD614A94C}</Project> <Name>IR Server Plugin Interface</Name> Modified: trunk/plugins/IR Server Suite/Applications/IR Server/IRServer.cs =================================================================== --- trunk/plugins/IR Server Suite/Applications/IR Server/IRServer.cs 2007-09-16 18:08:48 UTC (rev 934) +++ trunk/plugins/IR Server Suite/Applications/IR Server/IRServer.cs 2007-09-18 06:38:59 UTC (rev 935) @@ -2,6 +2,8 @@ using System.Collections; using System.Collections.Generic; using System.IO; +using System.Net; +using System.Net.Sockets; using System.Reflection; using System.Text; using System.Threading; @@ -11,8 +13,8 @@ using Microsoft.Win32; using Microsoft.Win32.SafeHandles; -using NamedPipes; using IRServerPluginInterface; +using IrssComms; using IrssUtils; namespace IRServer @@ -54,15 +56,17 @@ NotifyIcon _notifyIcon; - List<Client> _registeredClients; - List<Client> _registeredRepeaters; + List<ClientManager> _registeredClients; + List<ClientManager> _registeredRepeaters; - MessageQueue _messageQueue; + Server _server = null; + Client _client = null; + int _serverPort = 24000; + IRServerMode _mode; string _hostComputer; - string _localPipeName = String.Empty; bool _registered = false; // Used for relay and repeater modes. string _pluginNameReceive = String.Empty; @@ -79,8 +83,6 @@ public IRServer() { - _messageQueue = new MessageQueue(new MessageQueueSink(ReceivedMessage)); - // Setup taskbar icon _notifyIcon = new NotifyIcon(); _notifyIcon.ContextMenuStrip = new ContextMenuStrip(); @@ -140,24 +142,16 @@ else { _pluginTransmit = Program.GetPlugin(_pluginNameTransmit); - } - + } } - _messageQueue.Start(); - switch (_mode) { case IRServerMode.ServerMode: { - // Initialize registered client lists ... - _registeredClients = new List<Client>(); - _registeredRepeaters = new List<Client>(); + StartServer(); - // Start server pipe - PipeAccess.StartServer(Common.ServerPipeName, new PipeMessageHandler(_messageQueue.Enqueue)); - - IrssLog.Info("Server Mode: \\\\" + Environment.MachineName + "\\pipe\\" + Common.ServerPipeName); + IrssLog.Info("Started in Server Mode"); break; } @@ -256,7 +250,7 @@ if (_mode == IRServerMode.ServerMode) { - PipeMessage message = new PipeMessage(Environment.MachineName, Common.ServerPipeName, PipeMessageType.ServerShutdown, PipeMessageFlags.Notify); + IrssMessage message = new IrssMessage(MessageType.ServerShutdown, MessageFlags.Notify); SendToAll(message); } @@ -292,16 +286,13 @@ IrssLog.Error(ex.ToString()); } - _messageQueue.Stop(); - // Stop Server try { switch (_mode) { case IRServerMode.ServerMode: - if (PipeAccess.ServerRunning) - PipeAccess.StopServer(); + StopServer(); break; case IRServerMode.RelayMode: @@ -360,117 +351,137 @@ _inConfiguration = false; } - bool StartRelay() + void StartServer() { - bool retry = false; - int pipeNumber = 1; - string localPipeTest; + if (_server != null) + return; - try + // Initialize registered client lists ... + _registeredClients = new List<ClientManager>(); + _registeredRepeaters = new List<ClientManager>(); + + ServerMessageSink sink = new ServerMessageSink(ServerReceivedMessage); + _server = new Server(_serverPort, sink); + + _server.Start(); + } + void StopServer() + { + if (_server == null) + return; + + _server.Stop(); + _server = null; + + _registeredClients.Clear(); + ... [truncated message content] |
From: <gib...@us...> - 2007-09-16 18:09:09
|
Revision: 934 http://mp-plugins.svn.sourceforge.net/mp-plugins/?rev=934&view=rev Author: gibman_dk Date: 2007-09-16 11:08:48 -0700 (Sun, 16 Sep 2007) Log Message: ----------- Modified Paths: -------------- trunk/plugins/SkinChanger/SkinChanger/SkinChanger.cs Modified: trunk/plugins/SkinChanger/SkinChanger/SkinChanger.cs =================================================================== --- trunk/plugins/SkinChanger/SkinChanger/SkinChanger.cs 2007-09-16 16:58:47 UTC (rev 933) +++ trunk/plugins/SkinChanger/SkinChanger/SkinChanger.cs 2007-09-16 18:08:48 UTC (rev 934) @@ -241,19 +241,40 @@ GUIFontManager.InitializeDeviceObjects(); GUIControlFactory.ClearReferences(); GUIControlFactory.LoadReferences(GUIGraphicsContext.Skin + @"\references.xml"); + bool startWithBasicHome = false; using (MediaPortal.Profile.Settings xmlreader = new MediaPortal.Profile.Settings(Config.GetFile(Config.Dir.Config, "MediaPortal.xml"))) { + startWithBasicHome = xmlreader.GetValueAsBool("general", "startbasichome", false); xmlreader.SetValue("general", "skinobsoletecount", 0); bool autosize = xmlreader.GetValueAsBool("general", "autosize", true); if (autosize && !GUIGraphicsContext.Fullscreen) Form.ActiveForm.Size = new System.Drawing.Size(GUIGraphicsContext.SkinSize.Width, GUIGraphicsContext.SkinSize.Height); } - GUIWindowManager.OnResize(); + // we need to refresh the current active screen, otherwise we will see some unwanted stuff. GUIMessage msg = new GUIMessage(GUIMessage.MessageType.GUI_MSG_WINDOW_INIT, GUIWindowManager.ActiveWindow, 0, 0, 0, 0, null); GUIWindowManager.SendThreadMessage(msg); + //we also need to refresh the home screen, if we change skin in another module and return to homescreen, the result is that the homescreen is still using the old skin + + if (GUIWindowManager.ActiveWindow != (int)GUIWindow.Window.WINDOW_HOME && GUIWindowManager.ActiveWindow != (int)GUIWindow.Window.WINDOW_SECOND_HOME) + { + GUIMessage homeMsg = null; + if (startWithBasicHome) + { + homeMsg = new GUIMessage(GUIMessage.MessageType.GUI_MSG_WINDOW_INIT, (int)GUIWindow.Window.WINDOW_HOME, 0, 0, 0, 0, null); + } + else + { + homeMsg = new GUIMessage(GUIMessage.MessageType.GUI_MSG_WINDOW_INIT, (int)GUIWindow.Window.WINDOW_SECOND_HOME, 0, 0, 0, 0, null); + } + + GUIWindowManager.SendThreadMessage(homeMsg); + } + + GUIWindowManager.OnResize(); + if (g_Player.Paused) { g_Player.Pause(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <an...@us...> - 2007-09-16 16:58:50
|
Revision: 933 http://mp-plugins.svn.sourceforge.net/mp-plugins/?rev=933&view=rev Author: and-81 Date: 2007-09-16 09:58:47 -0700 (Sun, 16 Sep 2007) Log Message: ----------- Added Paths: ----------- trunk/plugins/IR Server Suite/IPC/Program Code.txt Added: trunk/plugins/IR Server Suite/IPC/Program Code.txt =================================================================== --- trunk/plugins/IR Server Suite/IPC/Program Code.txt (rev 0) +++ trunk/plugins/IR Server Suite/IPC/Program Code.txt 2007-09-16 16:58:47 UTC (rev 933) @@ -0,0 +1,227 @@ + static bool StartComms() + { + try + { + if (OpenLocalPipe()) + { + _messageQueue.Start(); + + _keepAliveThread = new Thread(new ThreadStart(KeepAliveThread)); + _keepAliveThread.Start(); + return true; + } + } + catch (Exception ex) + { + Error(ex); + } + + return false; + } + static void StopComms() + { + _keepAlive = false; + + try + { + if (_keepAliveThread != null && _keepAliveThread.IsAlive) + _keepAliveThread.Abort(); + } + catch { } + + try + { + if (_registered) + { + _registered = false; + + IrssMessage message = new IrssMessage(MessageType.UnregisterClient, MessageFlags.Request); + _client.Send(message); + } + } + catch { } + + _messageQueue.Stop(); + + try + { + if (PipeAccess.ServerRunning) + PipeAccess.StopServer(); + } + catch { } + } + + static bool OpenLocalPipe() + { + try + { + int pipeNumber = 1; + bool retry = false; + + do + { + string localPipeTest = String.Format("irserver\\blast{0:00}", pipeNumber); + + if (PipeAccess.PipeExists(Common.LocalPipePrefix + localPipeTest)) + { + if (++pipeNumber <= Common.MaximumLocalClientCount) + retry = true; + else + throw new Exception(String.Format("Maximum local client limit ({0}) reached", Common.MaximumLocalClientCount)); + } + else + { + if (!PipeAccess.StartServer(localPipeTest, new PipeMessageHandler(_messageQueue.Enqueue))) + throw new Exception(String.Format("Failed to start local pipe server \"{0}\"", localPipeTest)); + + _localPipeName = localPipeTest; + retry = false; + } + } + while (retry); + + return true; + } + catch (Exception ex) + { + Error(ex); + return false; + } + } + + static bool ConnectToServer() + { + try + { + IrssMessage message = new IrssMessage(MessageType.RegisterClient, MessageFlags.Request); + _client.Send(message); + return true; + } + catch (AppModule.NamedPipes.NamedPipeIOException) + { + return false; + } + catch (Exception ex) + { + Error(ex); + return false; + } + } + + static void KeepAliveThread() + { + Random random = new Random((int)DateTime.Now.Ticks); + bool reconnect; + int attempt; + + _registered = false; + _keepAlive = true; + while (_keepAlive) + { + reconnect = true; + + #region Connect to server + + Info("Connecting ({0}) ...", _serverHost); + attempt = 0; + while (_keepAlive && reconnect) + { + if (ConnectToServer()) + { + reconnect = false; + } + else + { + int wait; + + if (attempt <= 50) + attempt++; + + if (attempt > 50) + wait = 30; // 30 seconds + else if (attempt > 20) + wait = 10; // 10 seconds + else if (attempt > 10) + wait = 5; // 5 seconds + else + wait = 1; // 1 second + + for (int sleeps = 0; sleeps < wait && _keepAlive; sleeps++) + Thread.Sleep(1000); + } + } + + #endregion Connect to server + + #region Wait for registered + + // Give up after 10 seconds ... + attempt = 0; + while (_keepAlive && !_registered && !reconnect) + { + if (++attempt >= 10) + reconnect = true; + else + Thread.Sleep(1000); + } + + #endregion Wait for registered + + #region Ping the server repeatedly + + while (_keepAlive && _registered && !reconnect) + { + int pingID = random.Next(); + long pingTime = DateTime.Now.Ticks; + + try + { + IrssMessage message = new IrssMessage(MessageType.Ping, MessageFlags.Request, BitConverter.GetBytes(pingID)); + _client.Send(message); + } + catch + { + // Failed to ping ... reconnect ... + Warn("Failed to ping, attempting to reconnect ..."); + _registered = false; + reconnect = true; + break; + } + + // Wait 10 seconds for a ping echo ... + bool receivedEcho = false; + while (_keepAlive && _registered && !reconnect && + !receivedEcho && DateTime.Now.Ticks - pingTime < 10 * 1000 * 10000) + { + if (_echoID == pingID) + { + receivedEcho = true; + } + else + { + Thread.Sleep(1000); + } + } + + if (receivedEcho) // Received ping echo ... + { + // Wait 60 seconds before re-pinging ... + for (int sleeps = 0; sleeps < 60 && _keepAlive && _registered; sleeps++) + Thread.Sleep(1000); + } + else // Didn't receive ping echo ... + { + Warn("No echo to ping, attempting to reconnect ..."); + + // Break out of pinging cycle ... + _registered = false; + reconnect = true; + } + } + + #endregion Ping the server repeatedly + + } + + } + This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <i-...@us...> - 2007-09-16 11:43:15
|
Revision: 932 http://mp-plugins.svn.sourceforge.net/mp-plugins/?rev=932&view=rev Author: i-loop Date: 2007-09-16 04:42:51 -0700 (Sun, 16 Sep 2007) Log Message: ----------- fixed an error caused by tortoisesvn merge/resolve Modified Paths: -------------- trunk/skins/BlueTwoBig/Development Version/myHome.xml Modified: trunk/skins/BlueTwoBig/Development Version/myHome.xml =================================================================== --- trunk/skins/BlueTwoBig/Development Version/myHome.xml 2007-09-16 10:45:58 UTC (rev 931) +++ trunk/skins/BlueTwoBig/Development Version/myHome.xml 2007-09-16 11:42:51 UTC (rev 932) @@ -40,12 +40,9 @@ <animation effect="fade" time="500">WindowClose</animation> <animation effect="zoom" start="20,20" end="100,100" center="384,288" time="500">WindowOpen</animation> <animation effect="zoom" start="100,100" end="20,20" center="384,288" time="500">WindowClose</animation> -<<<<<<< .mine <!-- 3d Tweening example --> <!-- <animation effect="rotatey" start="0" end="20" center="525,0" tween="back" ease="easeout" time="500">focus</animation> --> <!-- <animation effect="rotatey" start="20" end="0" center="525,0" tween="back" ease="easeout" time="500">unfocus</animation> --> -======= ->>>>>>> .r929 <id>50</id> <posX>370</posX> <posY>130</posY> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <nor...@us...> - 2007-09-16 10:46:01
|
Revision: 931 http://mp-plugins.svn.sourceforge.net/mp-plugins/?rev=931&view=rev Author: northern_sky Date: 2007-09-16 03:45:58 -0700 (Sun, 16 Sep 2007) Log Message: ----------- Bugfixes: importfixes, ValidateEntries fixes, etc Modified Paths: -------------- trunk/plugins/myGUIProgramsAlt/GUIProgramsAlt/Design/AppFilesImportProgress.cs trunk/plugins/myGUIProgramsAlt/GUIProgramsAlt/Design/AppFilesView.cs trunk/plugins/myGUIProgramsAlt/GUIProgramsAlt/Design/AppSettingsBase.Designer.cs trunk/plugins/myGUIProgramsAlt/GUIProgramsAlt/Design/AppSettingsDirCache.cs trunk/plugins/myGUIProgramsAlt/GUIProgramsAlt/Design/AppSettingsMame.cs trunk/plugins/myGUIProgramsAlt/GUIProgramsAlt/Design/SettingsRoot.Designer.cs trunk/plugins/myGUIProgramsAlt/GUIProgramsAlt/Design/SetupForm.Designer.cs trunk/plugins/myGUIProgramsAlt/GUIProgramsAlt/Design/SetupForm.cs trunk/plugins/myGUIProgramsAlt/GUIProgramsAlt/Imports/DirectoryImport.cs trunk/plugins/myGUIProgramsAlt/GUIProgramsAlt/Items/ApplicationItem.cs trunk/plugins/myGUIProgramsAlt/GUIProgramsAlt/MetaData/myProgramsAltPreconfiguration.xml Modified: trunk/plugins/myGUIProgramsAlt/GUIProgramsAlt/Design/AppFilesImportProgress.cs =================================================================== --- trunk/plugins/myGUIProgramsAlt/GUIProgramsAlt/Design/AppFilesImportProgress.cs 2007-09-16 07:51:59 UTC (rev 930) +++ trunk/plugins/myGUIProgramsAlt/GUIProgramsAlt/Design/AppFilesImportProgress.cs 2007-09-16 10:45:58 UTC (rev 931) @@ -107,7 +107,7 @@ } } - private void RefreshInfo(string informationMessage, int progressBarCtr) + public void RefreshInfo(string informationMessage, int progressBarCtr) { progressTextBox.Text = informationMessage; progressBar.Value = progressBarCtr; Modified: trunk/plugins/myGUIProgramsAlt/GUIProgramsAlt/Design/AppFilesView.cs =================================================================== --- trunk/plugins/myGUIProgramsAlt/GUIProgramsAlt/Design/AppFilesView.cs 2007-09-16 07:51:59 UTC (rev 930) +++ trunk/plugins/myGUIProgramsAlt/GUIProgramsAlt/Design/AppFilesView.cs 2007-09-16 10:45:58 UTC (rev 931) @@ -74,6 +74,7 @@ public AppSettingsFilesView() { + InitializeComponent(); } @@ -100,13 +101,18 @@ public void Refresh(ApplicationItem curApp) { if (curApp == null) return; + currentApplicationItem = curApp; - currentApplicationItem = curApp; + + if (!currentApplicationItem.filesAreLoaded) { currentApplicationItem.LoadFiles(); } SyncListView(); + SetupFileView(); + SyncListViewButtons(); + SetFileSettingsTextBoxes(); } private void SyncListView() @@ -147,9 +153,7 @@ { fileListView.EndUpdate(); } - SetupFileView(); - SyncListViewButtons(); - SetFileSettingsTextBoxes(); + } private void SyncListViewButtons() @@ -238,6 +242,9 @@ fileItem.Write(); currentApplicationItem.LoadFiles(); SyncListView(); + SetupFileView(); + SyncListViewButtons(); + SetFileSettingsTextBoxes(); } } @@ -258,6 +265,9 @@ fileItem.Write(); currentApplicationItem.LoadFiles(); SyncListView(); + SetupFileView(); + SyncListViewButtons(); + SetFileSettingsTextBoxes(); } } } @@ -311,6 +321,9 @@ } currentApplicationItem.LoadFiles(); SyncListView(); + SetupFileView(); + SyncListViewButtons(); + SetFileSettingsTextBoxes(); } private void SetEnabledComponents(bool enabled) @@ -466,6 +479,9 @@ frmScraper.Setup(); frmScraper.ShowDialog(this); SyncListView(); + SetupFileView(); + SyncListViewButtons(); + SetFileSettingsTextBoxes(); } else { @@ -478,15 +494,8 @@ if (this.OnRefreshClick != null) { updateDatabaseButton.Enabled = false; - try - { - OnRefreshClick(this, null); - } - finally - { - SyncListView(); - updateDatabaseButton.Enabled = true; - } + currentApplicationItem.ImportFinishedEvent += new ApplicationItem.ImportFinishedEventHandler(currentApplicationItem_ImportFinishedEvent); + OnRefreshClick(this, null); } } @@ -677,6 +686,8 @@ if (currentApplicationItem != null) { + + //fill import options if ((currentApplicationItem.ImportOptionList != null) && (currentApplicationItem.ImportOptionList.Count > 0)) { @@ -733,6 +744,15 @@ } } + void currentApplicationItem_ImportFinishedEvent(object sender, EventArgs e) + { + currentApplicationItem.LoadFiles(); + SyncListView(); + updateDatabaseButton.Enabled = true; + currentApplicationItem.ImportFinishedEvent -= new ApplicationItem.ImportFinishedEventHandler(currentApplicationItem_ImportFinishedEvent); + + } + private void SetUpFileSettingsBoxButtonEvents() { foreach (FileSettingsBox fileSettingBox in filesettingsPanel.Controls) Modified: trunk/plugins/myGUIProgramsAlt/GUIProgramsAlt/Design/AppSettingsBase.Designer.cs =================================================================== --- trunk/plugins/myGUIProgramsAlt/GUIProgramsAlt/Design/AppSettingsBase.Designer.cs 2007-09-16 07:51:59 UTC (rev 930) +++ trunk/plugins/myGUIProgramsAlt/GUIProgramsAlt/Design/AppSettingsBase.Designer.cs 2007-09-16 10:45:58 UTC (rev 931) @@ -239,7 +239,7 @@ // // informationLabel // - this.informationLabel.Font = new System.Drawing.Font("Microsoft Sans Serif", 26.25F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic))), System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.informationLabel.Font = new System.Drawing.Font("Microsoft Sans Serif", 19F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic))), System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.informationLabel.Location = new System.Drawing.Point(4, 6); this.informationLabel.Name = "informationLabel"; this.informationLabel.Size = new System.Drawing.Size(396, 57); Modified: trunk/plugins/myGUIProgramsAlt/GUIProgramsAlt/Design/AppSettingsDirCache.cs =================================================================== --- trunk/plugins/myGUIProgramsAlt/GUIProgramsAlt/Design/AppSettingsDirCache.cs 2007-09-16 07:51:59 UTC (rev 930) +++ trunk/plugins/myGUIProgramsAlt/GUIProgramsAlt/Design/AppSettingsDirCache.cs 2007-09-16 10:45:58 UTC (rev 931) @@ -31,6 +31,7 @@ using System.Drawing; using System.Text; using System.Windows.Forms; +using System.IO; using GUIProgramsAlt; using GUIProgramsAlt.Items; @@ -85,9 +86,9 @@ { conditionChecker.Clear(); conditionChecker.DoCheck(titleTextBox.Text != "", "No title entered!"); - if (applicationExeTextBox.Text == "") + if ((!File.Exists(applicationExeTextBox.Text) && (!this.shellexecuteCheckBox.Checked))) { - conditionChecker.DoCheck(shellexecuteCheckBox.Checked, "No launching filename entered!"); + conditionChecker.DoCheck(shellexecuteCheckBox.Checked, "No valid launching executable entered!"); } if (!conditionChecker.IsOk) @@ -104,14 +105,17 @@ public override void LoadFromAppItem(ApplicationItem applicationItem) { + informationLabel.Text = applicationItem.Title; titleTextBox.Text = applicationItem.Title; applicationExeTextBox.Text = applicationItem.Executable; - + + applicationArgumentsTextBox.Text = applicationItem.Arguments; startupDirComboBox.Text = applicationItem.StartupDir; shellexecuteCheckBox.Checked = applicationItem.UseShellExecute; quoteCheckBox.Checked = applicationItem.UseQuotes; waitExitCheckBox.Checked = applicationItem.WaitForExit; + platformComboBox.SelectedValue = applicationItem.PlatformId; } Modified: trunk/plugins/myGUIProgramsAlt/GUIProgramsAlt/Design/AppSettingsMame.cs =================================================================== --- trunk/plugins/myGUIProgramsAlt/GUIProgramsAlt/Design/AppSettingsMame.cs 2007-09-16 07:51:59 UTC (rev 930) +++ trunk/plugins/myGUIProgramsAlt/GUIProgramsAlt/Design/AppSettingsMame.cs 2007-09-16 10:45:58 UTC (rev 931) @@ -65,9 +65,9 @@ conditionChecker.DoCheck(titleTextBox.Text != "", "No title entered!"); - if (this.applicationExeTextBox.Text == "") + if (!File.Exists(applicationExeTextBox.Text)) { - conditionChecker.DoCheck(shellexecuteCheckBox.Checked, "No launching filename entered!"); + conditionChecker.DoCheck(shellexecuteCheckBox.Checked, "No valid mame.executable entered!"); } if (!conditionChecker.IsOk) Modified: trunk/plugins/myGUIProgramsAlt/GUIProgramsAlt/Design/SettingsRoot.Designer.cs =================================================================== --- trunk/plugins/myGUIProgramsAlt/GUIProgramsAlt/Design/SettingsRoot.Designer.cs 2007-09-16 07:51:59 UTC (rev 930) +++ trunk/plugins/myGUIProgramsAlt/GUIProgramsAlt/Design/SettingsRoot.Designer.cs 2007-09-16 10:45:58 UTC (rev 931) @@ -51,7 +51,7 @@ this.titleTextBox.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; this.titleTextBox.Location = new System.Drawing.Point(88, 23); this.titleTextBox.Name = "titleTextBox"; - this.titleTextBox.Size = new System.Drawing.Size(316, 21); + this.titleTextBox.Size = new System.Drawing.Size(316, 20); this.titleTextBox.TabIndex = 46; // // titleLabel @@ -59,7 +59,7 @@ this.titleLabel.AutoSize = true; this.titleLabel.Location = new System.Drawing.Point(6, 28); this.titleLabel.Name = "titleLabel"; - this.titleLabel.Size = new System.Drawing.Size(31, 13); + this.titleLabel.Size = new System.Drawing.Size(30, 13); this.titleLabel.TabIndex = 45; this.titleLabel.Text = "Title:"; this.titleLabel.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; @@ -69,9 +69,9 @@ this.checkBoxUseThumbsDir.AutoSize = true; this.checkBoxUseThumbsDir.Location = new System.Drawing.Point(9, 20); this.checkBoxUseThumbsDir.Name = "checkBoxUseThumbsDir"; - this.checkBoxUseThumbsDir.Size = new System.Drawing.Size(129, 17); + this.checkBoxUseThumbsDir.Size = new System.Drawing.Size(182, 17); this.checkBoxUseThumbsDir.TabIndex = 44; - this.checkBoxUseThumbsDir.Text = "usw thumbs directory"; + this.checkBoxUseThumbsDir.Text = "Only use default thumbs directory"; this.checkBoxUseThumbsDir.UseVisualStyleBackColor = true; // // titleGroupBox @@ -128,7 +128,7 @@ this.sleepTimeLabel.AutoSize = true; this.sleepTimeLabel.Location = new System.Drawing.Point(6, 25); this.sleepTimeLabel.Name = "sleepTimeLabel"; - this.sleepTimeLabel.Size = new System.Drawing.Size(68, 13); + this.sleepTimeLabel.Size = new System.Drawing.Size(66, 13); this.sleepTimeLabel.TabIndex = 2; this.sleepTimeLabel.Text = "Time (in ms):"; // @@ -159,7 +159,7 @@ 0, 0}); this.sleepTimeNumericUpDown.Name = "sleepTimeNumericUpDown"; - this.sleepTimeNumericUpDown.Size = new System.Drawing.Size(316, 21); + this.sleepTimeNumericUpDown.Size = new System.Drawing.Size(316, 20); this.sleepTimeNumericUpDown.TabIndex = 0; this.sleepTimeNumericUpDown.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; this.sleepTimeNumericUpDown.Value = new decimal(new int[] { Modified: trunk/plugins/myGUIProgramsAlt/GUIProgramsAlt/Design/SetupForm.Designer.cs =================================================================== --- trunk/plugins/myGUIProgramsAlt/GUIProgramsAlt/Design/SetupForm.Designer.cs 2007-09-16 07:51:59 UTC (rev 930) +++ trunk/plugins/myGUIProgramsAlt/GUIProgramsAlt/Design/SetupForm.Designer.cs 2007-09-16 10:45:58 UTC (rev 931) @@ -28,7 +28,7 @@ /// </summary> private void InitializeComponent() { - System.Windows.Forms.TreeNode treeNode1 = new System.Windows.Forms.TreeNode("Applications"); + System.Windows.Forms.TreeNode treeNode2 = new System.Windows.Forms.TreeNode("Applications"); this.menuStrip = new System.Windows.Forms.MenuStrip(); this.addDeleteApplicationsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.addApplicationToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); @@ -178,10 +178,10 @@ this.treeView.LabelEdit = true; this.treeView.Location = new System.Drawing.Point(0, 27); this.treeView.Name = "treeView"; - treeNode1.Name = "applicationNode"; - treeNode1.Text = "Applications"; + treeNode2.Name = "applicationNode"; + treeNode2.Text = "Applications"; this.treeView.Nodes.AddRange(new System.Windows.Forms.TreeNode[] { - treeNode1}); + treeNode2}); this.treeView.Size = new System.Drawing.Size(224, 586); this.treeView.TabIndex = 8; this.treeView.DragDrop += new System.Windows.Forms.DragEventHandler(this.treeView_DragDrop); @@ -206,9 +206,10 @@ this.tabControl.ShowToolTips = true; this.tabControl.Size = new System.Drawing.Size(517, 586); this.tabControl.TabIndex = 2; + this.tabControl.Click += new System.EventHandler(this.dbOptionsTabPage_Click); this.tabControl.Deselecting += new System.Windows.Forms.TabControlCancelEventHandler(this.tabControl_Deselecting); - // + // // detailsTabPage // this.detailsTabPage.BackColor = System.Drawing.SystemColors.Control; @@ -225,7 +226,7 @@ this.directoryTabPage.Location = new System.Drawing.Point(4, 22); this.directoryTabPage.Name = "directoryTabPage"; this.directoryTabPage.Padding = new System.Windows.Forms.Padding(3); - this.directoryTabPage.Size = new System.Drawing.Size(497, 551); + this.directoryTabPage.Size = new System.Drawing.Size(509, 560); this.directoryTabPage.TabIndex = 1; this.directoryTabPage.Text = "Files"; // @@ -235,7 +236,7 @@ this.viewTabPage.Location = new System.Drawing.Point(4, 22); this.viewTabPage.Name = "viewTabPage"; this.viewTabPage.Padding = new System.Windows.Forms.Padding(3); - this.viewTabPage.Size = new System.Drawing.Size(497, 551); + this.viewTabPage.Size = new System.Drawing.Size(509, 560); this.viewTabPage.TabIndex = 2; this.viewTabPage.Text = "Views"; // @@ -245,7 +246,7 @@ this.dbOptionsTabPage.Location = new System.Drawing.Point(4, 22); this.dbOptionsTabPage.Name = "dbOptionsTabPage"; this.dbOptionsTabPage.Padding = new System.Windows.Forms.Padding(3); - this.dbOptionsTabPage.Size = new System.Drawing.Size(497, 551); + this.dbOptionsTabPage.Size = new System.Drawing.Size(509, 560); this.dbOptionsTabPage.TabIndex = 3; this.dbOptionsTabPage.Text = "DB options"; this.dbOptionsTabPage.UseVisualStyleBackColor = true; Modified: trunk/plugins/myGUIProgramsAlt/GUIProgramsAlt/Design/SetupForm.cs =================================================================== --- trunk/plugins/myGUIProgramsAlt/GUIProgramsAlt/Design/SetupForm.cs 2007-09-16 07:51:59 UTC (rev 930) +++ trunk/plugins/myGUIProgramsAlt/GUIProgramsAlt/Design/SetupForm.cs 2007-09-16 10:45:58 UTC (rev 931) @@ -17,6 +17,7 @@ using GUIProgramsAlt.Database; using GUIProgramsAlt; using GUIProgramsAlt.Items; +using GUIProgramsAlt.Imports; #endregion @@ -59,6 +60,7 @@ appSettingsFileEditView.OnRefreshClick += new EventHandler(this.RefreshClick); //when imagefolder was clicked on filesview... appSettingsFileEditView.OnImageFolderSearch += new EventHandler(this.ImageSearchClick); + } #endregion @@ -335,6 +337,7 @@ { this.tabControl.TabPages["directoryTabPage"].Controls.Clear(); this.tabControl.TabPages["directoryTabPage"].Controls.Add(filesProgress); + } @@ -608,7 +611,7 @@ ApplicationItemDirectoryCache tempApp = new ApplicationItemDirectoryCache(); tempApp.LoadFromXmlProfile(node); appSettingsPage.LoadFromAppItem(tempApp); - // appSettingsFileEditView.FileExtensionsText = tempApp.ValidExtensions; + appSettingsFileEditView.FileExtensionsText = tempApp.ValidExtensions; } } @@ -923,6 +926,7 @@ { bool DoIt = false; ApplicationItem currentApplication = GetTreeNodeApplicationItem(treeView.SelectedNode); + if (currentApplication != null) { if (currentApplication.ItemList.Count > 0) @@ -937,23 +941,31 @@ if (DoIt) { - try - { + AttachImportRunningView(); BlockControls(); appSettingsFileEditView.FillApplicationItem(currentApplication); + currentApplication.RefreshInfoEvent += new ApplicationItem.RefreshInfoEventHandler(currentApplication_RefreshInfoEvent); + currentApplication.ImportFinishedEvent += new ApplicationItem.ImportFinishedEventHandler(currentApplication_ImportFinishedEvent); + filesProgress.CurApp = currentApplication; filesProgress.RunImport(); - } - finally - { - AttachFilesView(); - UnblockControls(); - } + } } } + void currentApplication_RefreshInfoEvent(object sender, FileReadEventArgs e) + { + filesProgress.RefreshInfo(e.message, e.ctr); + } + + void currentApplication_ImportFinishedEvent(object sender, EventArgs e) + { + AttachFilesView(); + UnblockControls(); + } + private void RefreshClick(object sender, EventArgs e) { DoRefresh(); Modified: trunk/plugins/myGUIProgramsAlt/GUIProgramsAlt/Imports/DirectoryImport.cs =================================================================== --- trunk/plugins/myGUIProgramsAlt/GUIProgramsAlt/Imports/DirectoryImport.cs 2007-09-16 07:51:59 UTC (rev 930) +++ trunk/plugins/myGUIProgramsAlt/GUIProgramsAlt/Imports/DirectoryImport.cs 2007-09-16 10:45:58 UTC (rev 931) @@ -66,6 +66,8 @@ private void ImportFile(string dirPath) { + + string[] validExtensionsArr = applicationItem.ValidExtensions.Split(';'); double total = 0; FileInfo fileInDir = null; if (Directory.Exists(dirPath)) @@ -81,30 +83,42 @@ if (allUnderLyingFiles[i] is FileInfo) { - Boolean FileExists = false; - + bool FileExists = false; + bool isValidExtension = false; fileInDir = (FileInfo)allUnderLyingFiles[i]; - for (int j = 0; j < applicationItem.ItemList.Count; j++) + + for (int z = 0; z < validExtensionsArr.Length;z++) { - FileItem fileItem = null; + if (validExtensionsArr[z].Equals(fileInDir.Extension)) + { + isValidExtension = true; + } + } + if (isValidExtension) + { + for (int j = 0; j < applicationItem.ItemList.Count; j++) + { + FileItem fileItem = null; - if (applicationItem.ItemList[j] is FileItem) + if (applicationItem.ItemList[j] is FileItem) + { + fileItem = (FileItem)applicationItem.ItemList[j]; + if (fileItem.Filename == fileInDir.FullName) + { + + FileExists = true; + break;//ugly + } + } + } + if (!FileExists) { - fileItem = (FileItem)applicationItem.ItemList[j]; - if(fileItem.Filename == fileInDir.FullName) - { - FileExists = true; - break;//ugly - } + ImportFileItem(fileInDir); + //UpdateProgressDialog(fileInDir, mpGuiMode); } } - if (!FileExists) - { - ImportFileItem(fileInDir); - //UpdateProgressDialog(fileInDir, mpGuiMode); - } }//if dir found,, recurse else if (allUnderLyingFiles[i] is DirectoryInfo) { Modified: trunk/plugins/myGUIProgramsAlt/GUIProgramsAlt/Items/ApplicationItem.cs =================================================================== --- trunk/plugins/myGUIProgramsAlt/GUIProgramsAlt/Items/ApplicationItem.cs 2007-09-16 07:51:59 UTC (rev 930) +++ trunk/plugins/myGUIProgramsAlt/GUIProgramsAlt/Items/ApplicationItem.cs 2007-09-16 10:45:58 UTC (rev 931) @@ -60,7 +60,7 @@ // event: read new file public delegate void RefreshInfoEventHandler(object sender ,FileReadEventArgs e) ; - public event RefreshInfoEventHandler OnRefreshInfoEvent = null; + public event RefreshInfoEventHandler RefreshInfoEvent = null; public delegate void ImportFinishedEventHandler(object sender,EventArgs e); @@ -72,6 +72,12 @@ protected void Import_ReadNewFileEvent(object sender, FileReadEventArgs e) { this.SetGUIProgressDialog(e.message, e.ctr); + + if (RefreshInfoEvent != null) + { + RefreshInfoEvent(this, e); + } + } public virtual void OnImportFinished(object sender, EventArgs e) @@ -94,7 +100,7 @@ { progressDialog.Close(); progressDialog.ShowWaitCursor = false; - + } } @@ -386,19 +392,26 @@ public void SetGUIProgressDialog(string informationMessage, int progressBarCtr) { - + //mpgui if (progressDialog != null) { - + progressDialog.ShowProgressBar(true); progressDialog.ShowWaitCursor = true; progressDialog.SetLine(2, String.Format("{0} {1}", GUILocalizeStrings.Get(13005), informationMessage)); // "last imported file {0}" progressDialog.SetPercentage(progressBarCtr); progressDialog.Progress(); - - + + } + else + { + + + + + } // SendRefreshInfo(String.Format("{0} {1}", GUILocalizeStrings.Get(13005), informationMessage), progressBarCtr); } @@ -470,11 +483,6 @@ protected virtual void Import(bool mpGUIMode) { - - - if (!File.Exists(this.Executable)) // no "mame.exe" - return; - importBase.ReadNewFileEvent += new ImportBase.ReadNewFileEventHandler(Import_ReadNewFileEvent); importDelegate = new ImportDelegate(importBase.StartImport); @@ -754,6 +762,18 @@ { this.ValidExtensions = fileExtensioneNode.InnerText; } + + XmlNode platformNode = node.SelectSingleNode("platform"); + if (platformNode != null) + { + this.PlatformId = dbHandlerInstance.LexiconDataExists("tblPlatform", "platform", platformNode.InnerText); + + } + else + { + PlatformId = 1; + + } } #endregion Public Methods Modified: trunk/plugins/myGUIProgramsAlt/GUIProgramsAlt/MetaData/myProgramsAltPreconfiguration.xml =================================================================== --- trunk/plugins/myGUIProgramsAlt/GUIProgramsAlt/MetaData/myProgramsAltPreconfiguration.xml 2007-09-16 07:51:59 UTC (rev 930) +++ trunk/plugins/myGUIProgramsAlt/GUIProgramsAlt/MetaData/myProgramsAltPreconfiguration.xml 2007-09-16 10:45:58 UTC (rev 931) @@ -79,7 +79,7 @@ </profile> <profile id="60"> <section>Emulator Profiles</section> - <title>Kega Fusion (for Sega Master System)</title> + <title>Kega Fusion (Sega Master System)</title> <launchingApplication>...yourKEGApathhere...\fusion.exe</launchingApplication> <useShellExecute>F</useShellExecute> <arguments>%FILE% -sms -fullscreen</arguments> @@ -87,6 +87,7 @@ <startupDir>%FILEDIR%</startupDir> <useQuotes>T</useQuotes> <fileextensions>.sms</fileextensions> + <platform>Sega Master System</platform> </profile> <profile id="170"> <section>Emulator Profiles</section> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <i-...@us...> - 2007-09-16 07:52:04
|
Revision: 930 http://mp-plugins.svn.sourceforge.net/mp-plugins/?rev=930&view=rev Author: i-loop Date: 2007-09-16 00:51:59 -0700 (Sun, 16 Sep 2007) Log Message: ----------- synched with BlueTwo svn Modified Paths: -------------- trunk/skins/BlueTwoBig/Development Version/myHome.xml trunk/skins/BlueTwoBig/Development Version/mymusicvideoplaylist.xml trunk/skins/BlueTwoBig/Development Version/mymusicvideos.xml Modified: trunk/skins/BlueTwoBig/Development Version/myHome.xml =================================================================== --- trunk/skins/BlueTwoBig/Development Version/myHome.xml 2007-09-15 16:49:50 UTC (rev 929) +++ trunk/skins/BlueTwoBig/Development Version/myHome.xml 2007-09-16 07:51:59 UTC (rev 930) @@ -40,6 +40,12 @@ <animation effect="fade" time="500">WindowClose</animation> <animation effect="zoom" start="20,20" end="100,100" center="384,288" time="500">WindowOpen</animation> <animation effect="zoom" start="100,100" end="20,20" center="384,288" time="500">WindowClose</animation> +<<<<<<< .mine + <!-- 3d Tweening example --> + <!-- <animation effect="rotatey" start="0" end="20" center="525,0" tween="back" ease="easeout" time="500">focus</animation> --> + <!-- <animation effect="rotatey" start="20" end="0" center="525,0" tween="back" ease="easeout" time="500">unfocus</animation> --> +======= +>>>>>>> .r929 <id>50</id> <posX>370</posX> <posY>130</posY> Modified: trunk/skins/BlueTwoBig/Development Version/mymusicvideoplaylist.xml =================================================================== --- trunk/skins/BlueTwoBig/Development Version/mymusicvideoplaylist.xml 2007-09-15 16:49:50 UTC (rev 929) +++ trunk/skins/BlueTwoBig/Development Version/mymusicvideoplaylist.xml 2007-09-16 07:51:59 UTC (rev 930) @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <window> <id>500</id> - <defaultcontrol>20</defaultcontrol> + <defaultcontrol>39</defaultcontrol> <allowoverlay>yes</allowoverlay> <define>#header.label:136</define> <define>#header.image:logo_music videos.png</define> @@ -24,7 +24,6 @@ <id>20</id> <label>191</label> <onright>50</onright> - <onup>17</onup> </control> <control> <description>Save button</description> Modified: trunk/skins/BlueTwoBig/Development Version/mymusicvideos.xml =================================================================== --- trunk/skins/BlueTwoBig/Development Version/mymusicvideos.xml 2007-09-15 16:49:50 UTC (rev 929) +++ trunk/skins/BlueTwoBig/Development Version/mymusicvideos.xml 2007-09-16 07:51:59 UTC (rev 930) @@ -24,7 +24,6 @@ <id>2</id> <label>30001</label> <onright>50</onright> - <onup>17</onup> </control> <control> <description>New Videos button</description> @@ -68,6 +67,7 @@ <label>136</label> <onright>50</onright> </control> + <control> <description>my playlist button</description> <type>button</type> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <an...@us...> - 2007-09-15 16:49:55
|
Revision: 929 http://mp-plugins.svn.sourceforge.net/mp-plugins/?rev=929&view=rev Author: and-81 Date: 2007-09-15 09:49:50 -0700 (Sat, 15 Sep 2007) Log Message: ----------- Removed Paths: ------------- trunk/plugins/IR Server Suite/Common/IrssComms/Message.cs Deleted: trunk/plugins/IR Server Suite/Common/IrssComms/Message.cs =================================================================== --- trunk/plugins/IR Server Suite/Common/IrssComms/Message.cs 2007-09-15 16:36:50 UTC (rev 928) +++ trunk/plugins/IR Server Suite/Common/IrssComms/Message.cs 2007-09-15 16:49:50 UTC (rev 929) @@ -1,213 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Text; - -namespace IrssComms -{ - - #region Enumerations - - public enum MessageType - { - Unknown, - - RegisterClient, - UnregisterClient, - - RegisterRepeater, - UnregisterRepeater, - - LearnIR, - BlastIR, - - Error, - - Ping, - Echo, - - ServerShutdown, - - RemoteEvent, - KeyboardEvent, - MouseEvent, - - ForwardRemoteEvent, - ForwardKeyboardEvent, - ForwardMouseEvent, - } - - [Flags] - public enum MessageFlags - { - None = 0x0000, - - Request = 0x0001, - Response = 0x0002, - Notify = 0x0004, - - Success = 0x0008, - Failure = 0x0010, - Timeout = 0x0020, - //Error = 0x0040, - - //DataString = 0x0080, - //DataBytes = 0x0100, - - //ForceRespond = 0x0200, - ForceNotRespond = 0x0400, - } - - #endregion Enumerations - - /// <summary> - /// Message class for passing through named pipes. - /// </summary> - public class Message - { - - #region Members - - MessageType _type; - MessageFlags _flags; - - byte[] _data; - - #endregion Members - - #region Properties - - /// <summary> - /// Type of message. - /// </summary> - public MessageType Type - { - get { return _type; } - set { _type = value; } - } - - /// <summary> - /// Message flags. - /// </summary> - public MessageFlags Flags - { - get { return _flags; } - set { _flags = value; } - } - - /// <summary> - /// Message data as bytes. - /// </summary> - public byte[] DataAsBytes - { - get { return _data; } - set { _data = value; } - } - - /// <summary> - /// Message data as string. - /// </summary> - public string DataAsString - { - get - { - if (_data == null) - return String.Empty; - else - return Encoding.ASCII.GetString(_data); - } - set - { - _data = Encoding.ASCII.GetBytes(value); - } - } - - #endregion Properties - - #region Constructors - - protected Message() - { - _type = MessageType.Unknown; - _flags = MessageFlags.None; - _data = null; - } - - public Message(MessageType type, MessageFlags flags) - : this() - { - _type = type; - _flags = flags; - } - - public Message(MessageType type, MessageFlags flags, byte[] data) - : this(type, flags) - { - _data = data; - } - - public Message(MessageType type, MessageFlags flags, string data) - : this(type, flags) - { - _data = Encoding.ASCII.GetBytes(data); - } - - #endregion Constructors - - #region Implementation - - /// <summary> - /// Turn this Message instance into a byte array. - /// </summary> - /// <returns>Byte array representation of this Message instance.</returns> - public byte[] ToBytes() - { - int dataLength = 0; - if (_data != null) - dataLength = _data.Length; - - byte[] byteArray = new byte[8 + dataLength]; - - BitConverter.GetBytes((int)_type).CopyTo(byteArray, 0); - BitConverter.GetBytes((int)_flags).CopyTo(byteArray, 4); - - if (_data != null) - _data.CopyTo(byteArray, 8); - - return byteArray; - } - - /// <summary> - /// Create a Pipe Message from the provided byte array. - /// </summary> - /// <param name="from">Byte array to generate message from.</param> - /// <returns>New Message.</returns> - public static Message FromBytes(byte[] from) - { - if (from == null) - throw new ArgumentNullException("from"); - - if (from.Length < 8) - throw new ArgumentException("Insufficient bytes to create message", "from"); - - MessageType type = (MessageType)BitConverter.ToInt32(from, 0); - MessageFlags flags = (MessageFlags)BitConverter.ToInt32(from, 4); - - if (from.Length == 8) - { - return new Message(type, flags); - } - else - { - byte[] data = new byte[from.Length - 8]; - - Array.Copy(from, 8, data, 0, data.Length); - - return new Message(type, flags, data); - } - } - - #endregion Implementation - - } - -} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <an...@us...> - 2007-09-15 16:36:51
|
Revision: 928 http://mp-plugins.svn.sourceforge.net/mp-plugins/?rev=928&view=rev Author: and-81 Date: 2007-09-15 09:36:50 -0700 (Sat, 15 Sep 2007) Log Message: ----------- Modified Paths: -------------- trunk/plugins/IR Server Suite/Applications/Debug Client/Debug Client.csproj trunk/plugins/IR Server Suite/Applications/Debug Client/MainForm.Designer.cs trunk/plugins/IR Server Suite/Applications/Debug Client/MainForm.cs trunk/plugins/IR Server Suite/Applications/IR Blast/Program.cs trunk/plugins/IR Server Suite/Applications/IR Blast (No Window)/Program.cs trunk/plugins/IR Server Suite/Applications/IR Server/Client.cs trunk/plugins/IR Server Suite/Applications/IR Server/Config.cs trunk/plugins/IR Server Suite/Applications/IR Server/IRServer.cs trunk/plugins/IR Server Suite/Applications/Translator/Program.cs trunk/plugins/IR Server Suite/Applications/Tray Launcher/Tray.cs trunk/plugins/IR Server Suite/Applications/Virtual Remote/MainForm.cs trunk/plugins/IR Server Suite/Applications/Virtual Remote/Program.cs trunk/plugins/IR Server Suite/Applications/Virtual Remote Skin Editor/MainForm.cs trunk/plugins/IR Server Suite/Applications/Virtual Remote Skin Editor/Virtual Remote Skin Editor.csproj trunk/plugins/IR Server Suite/Common/IrssUtils/Common.cs trunk/plugins/IR Server Suite/Common/IrssUtils/IrssUtils.csproj trunk/plugins/IR Server Suite/IR Server Suite.sln trunk/plugins/IR Server Suite/MediaPortal Plugins/MP Blast Zone Plugin/MPBlastZonePlugin.cs trunk/plugins/IR Server Suite/MediaPortal Plugins/MP Control Plugin/MPControlPlugin.cs trunk/plugins/IR Server Suite/MediaPortal Plugins/MP Control Plugin/MappedKeyCode.cs trunk/plugins/IR Server Suite/MediaPortal Plugins/TV2 Blaster Plugin/TV2BlasterPlugin.cs trunk/plugins/IR Server Suite/MediaPortal Plugins/TV3 Blaster Plugin/TV3BlasterPlugin.cs Added Paths: ----------- trunk/plugins/IR Server Suite/Common/IrssComms/ trunk/plugins/IR Server Suite/Common/IrssComms/Client.cs trunk/plugins/IR Server Suite/Common/IrssComms/ClientManager.cs trunk/plugins/IR Server Suite/Common/IrssComms/IrssComms.csproj trunk/plugins/IR Server Suite/Common/IrssComms/Message.cs trunk/plugins/IR Server Suite/Common/IrssComms/Properties/ trunk/plugins/IR Server Suite/Common/IrssComms/Properties/AssemblyInfo.cs trunk/plugins/IR Server Suite/Common/IrssComms/Server.cs Modified: trunk/plugins/IR Server Suite/Applications/Debug Client/Debug Client.csproj =================================================================== --- trunk/plugins/IR Server Suite/Applications/Debug Client/Debug Client.csproj 2007-09-15 16:30:02 UTC (rev 927) +++ trunk/plugins/IR Server Suite/Applications/Debug Client/Debug Client.csproj 2007-09-15 16:36:50 UTC (rev 928) @@ -81,6 +81,14 @@ <Project>{CA15769C-232E-4CA7-94FD-206A06CA3ABB}</Project> <Name>IrssUtils</Name> </ProjectReference> + <ProjectReference Include="..\..\IPC\AppModule.InterProcessComm\AppModule.InterProcessComm.csproj"> + <Project>{E98F1F7E-40B6-44C8-AC66-EC867B141FA1}</Project> + <Name>AppModule.InterProcessComm</Name> + </ProjectReference> + <ProjectReference Include="..\..\IPC\AppModule.NamedPipes\AppModule.NamedPipes.csproj"> + <Project>{077B53BB-404A-4B2F-BA17-AAE98C5E9C66}</Project> + <Name>AppModule.NamedPipes</Name> + </ProjectReference> <ProjectReference Include="..\..\IPC\Named Pipes\Named Pipes.csproj"> <Project>{F4EA6055-7133-4F18-8971-E19ADEB482C1}</Project> <Name>Named Pipes</Name> Modified: trunk/plugins/IR Server Suite/Applications/Debug Client/MainForm.Designer.cs =================================================================== --- trunk/plugins/IR Server Suite/Applications/Debug Client/MainForm.Designer.cs 2007-09-15 16:30:02 UTC (rev 927) +++ trunk/plugins/IR Server Suite/Applications/Debug Client/MainForm.Designer.cs 2007-09-15 16:36:50 UTC (rev 928) @@ -37,11 +37,7 @@ this.buttonDisconnect = new System.Windows.Forms.Button(); this.buttonShutdownServer = new System.Windows.Forms.Button(); this.listBoxStatus = new System.Windows.Forms.ListBox(); - this.buttonCrash = new System.Windows.Forms.Button(); this.buttonPing = new System.Windows.Forms.Button(); - this.groupBoxGenerateMessage = new System.Windows.Forms.GroupBox(); - this.textBoxCustom = new System.Windows.Forms.TextBox(); - this.buttonSendCustom = new System.Windows.Forms.Button(); this.groupBoxStatus = new System.Windows.Forms.GroupBox(); this.groupBoxRemoteButton = new System.Windows.Forms.GroupBox(); this.labelCustomButton = new System.Windows.Forms.Label(); @@ -55,7 +51,6 @@ this.toolTips = new System.Windows.Forms.ToolTip(this.components); this.buttonIRBlastAutoTest = new System.Windows.Forms.Button(); this.buttonHelp = new System.Windows.Forms.Button(); - this.groupBoxGenerateMessage.SuspendLayout(); this.groupBoxStatus.SuspendLayout(); this.groupBoxRemoteButton.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)(this.numericUpDownButton)).BeginInit(); @@ -65,7 +60,7 @@ // // buttonBlast // - this.buttonBlast.Location = new System.Drawing.Point(8, 48); + this.buttonBlast.Location = new System.Drawing.Point(80, 16); this.buttonBlast.Name = "buttonBlast"; this.buttonBlast.Size = new System.Drawing.Size(64, 24); this.buttonBlast.TabIndex = 1; @@ -122,12 +117,12 @@ // buttonShutdownServer // this.buttonShutdownServer.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.buttonShutdownServer.Location = new System.Drawing.Point(296, 48); + this.buttonShutdownServer.Location = new System.Drawing.Point(368, 16); this.buttonShutdownServer.Name = "buttonShutdownServer"; this.buttonShutdownServer.Size = new System.Drawing.Size(64, 24); this.buttonShutdownServer.TabIndex = 4; this.buttonShutdownServer.Text = "Shutdown"; - this.toolTips.SetToolTip(this.buttonShutdownServer, "Shutdown server"); + this.toolTips.SetToolTip(this.buttonShutdownServer, "Shutdown the server"); this.buttonShutdownServer.UseVisualStyleBackColor = true; this.buttonShutdownServer.Click += new System.EventHandler(this.buttonShutdownServer_Click); // @@ -142,26 +137,14 @@ this.listBoxStatus.Location = new System.Drawing.Point(8, 16); this.listBoxStatus.Name = "listBoxStatus"; this.listBoxStatus.ScrollAlwaysVisible = true; - this.listBoxStatus.Size = new System.Drawing.Size(424, 192); + this.listBoxStatus.Size = new System.Drawing.Size(424, 185); this.listBoxStatus.TabIndex = 0; this.toolTips.SetToolTip(this.listBoxStatus, "Status messages"); // - // buttonCrash - // - this.buttonCrash.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.buttonCrash.Location = new System.Drawing.Point(368, 48); - this.buttonCrash.Name = "buttonCrash"; - this.buttonCrash.Size = new System.Drawing.Size(64, 24); - this.buttonCrash.TabIndex = 5; - this.buttonCrash.Text = "Crash"; - this.toolTips.SetToolTip(this.buttonCrash, "Crash this program"); - this.buttonCrash.UseVisualStyleBackColor = true; - this.buttonCrash.Click += new System.EventHandler(this.buttonCrash_Click); - // // buttonPing // this.buttonPing.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.buttonPing.Location = new System.Drawing.Point(368, 16); + this.buttonPing.Location = new System.Drawing.Point(296, 16); this.buttonPing.Name = "buttonPing"; this.buttonPing.Size = new System.Drawing.Size(64, 24); this.buttonPing.TabIndex = 3; @@ -170,53 +153,16 @@ this.buttonPing.UseVisualStyleBackColor = true; this.buttonPing.Click += new System.EventHandler(this.buttonPing_Click); // - // groupBoxGenerateMessage - // - this.groupBoxGenerateMessage.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); - this.groupBoxGenerateMessage.Controls.Add(this.textBoxCustom); - this.groupBoxGenerateMessage.Controls.Add(this.buttonSendCustom); - this.groupBoxGenerateMessage.Location = new System.Drawing.Point(8, 224); - this.groupBoxGenerateMessage.Name = "groupBoxGenerateMessage"; - this.groupBoxGenerateMessage.Size = new System.Drawing.Size(440, 80); - this.groupBoxGenerateMessage.TabIndex = 3; - this.groupBoxGenerateMessage.TabStop = false; - this.groupBoxGenerateMessage.Text = "Generate message"; - // - // textBoxCustom - // - this.textBoxCustom.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) - | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); - this.textBoxCustom.Location = new System.Drawing.Point(8, 16); - this.textBoxCustom.Multiline = true; - this.textBoxCustom.Name = "textBoxCustom"; - this.textBoxCustom.Size = new System.Drawing.Size(352, 56); - this.textBoxCustom.TabIndex = 0; - this.toolTips.SetToolTip(this.textBoxCustom, "Create a custom message to send to the server"); - // - // buttonSendCustom - // - this.buttonSendCustom.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); - this.buttonSendCustom.Location = new System.Drawing.Point(376, 48); - this.buttonSendCustom.Name = "buttonSendCustom"; - this.buttonSendCustom.Size = new System.Drawing.Size(56, 24); - this.buttonSendCustom.TabIndex = 1; - this.buttonSendCustom.Text = "Send"; - this.toolTips.SetToolTip(this.buttonSendCustom, "Send custom message to server"); - this.buttonSendCustom.UseVisualStyleBackColor = true; - this.buttonSendCustom.Click += new System.EventHandler(this.buttonSendCustom_Click); - // // groupBoxStatus // this.groupBoxStatus.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); this.groupBoxStatus.Controls.Add(this.listBoxStatus); - this.groupBoxStatus.Location = new System.Drawing.Point(8, 312); + this.groupBoxStatus.Location = new System.Drawing.Point(8, 192); this.groupBoxStatus.Name = "groupBoxStatus"; this.groupBoxStatus.Size = new System.Drawing.Size(440, 216); - this.groupBoxStatus.TabIndex = 4; + this.groupBoxStatus.TabIndex = 3; this.groupBoxStatus.TabStop = false; this.groupBoxStatus.Text = "Status"; // @@ -228,7 +174,7 @@ this.groupBoxRemoteButton.Controls.Add(this.numericUpDownButton); this.groupBoxRemoteButton.Controls.Add(this.comboBoxRemoteButtons); this.groupBoxRemoteButton.Controls.Add(this.buttonSendRemoteButton); - this.groupBoxRemoteButton.Location = new System.Drawing.Point(8, 168); + this.groupBoxRemoteButton.Location = new System.Drawing.Point(8, 136); this.groupBoxRemoteButton.Name = "groupBoxRemoteButton"; this.groupBoxRemoteButton.Size = new System.Drawing.Size(440, 48); this.groupBoxRemoteButton.TabIndex = 2; @@ -310,21 +256,20 @@ this.comboBoxComputer.Location = new System.Drawing.Point(8, 32); this.comboBoxComputer.Name = "comboBoxComputer"; this.comboBoxComputer.Size = new System.Drawing.Size(240, 21); - this.comboBoxComputer.TabIndex = 5; + this.comboBoxComputer.TabIndex = 1; // // groupBoxCommands // this.groupBoxCommands.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); this.groupBoxCommands.Controls.Add(this.comboBoxPort); - this.groupBoxCommands.Controls.Add(this.buttonCrash); this.groupBoxCommands.Controls.Add(this.buttonBlast); this.groupBoxCommands.Controls.Add(this.buttonLearnIR); this.groupBoxCommands.Controls.Add(this.buttonShutdownServer); this.groupBoxCommands.Controls.Add(this.buttonPing); this.groupBoxCommands.Location = new System.Drawing.Point(8, 80); this.groupBoxCommands.Name = "groupBoxCommands"; - this.groupBoxCommands.Size = new System.Drawing.Size(440, 80); + this.groupBoxCommands.Size = new System.Drawing.Size(440, 48); this.groupBoxCommands.TabIndex = 1; this.groupBoxCommands.TabStop = false; this.groupBoxCommands.Text = "Commands"; @@ -333,7 +278,7 @@ // this.comboBoxPort.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; this.comboBoxPort.FormattingEnabled = true; - this.comboBoxPort.Location = new System.Drawing.Point(80, 50); + this.comboBoxPort.Location = new System.Drawing.Point(152, 18); this.comboBoxPort.Name = "comboBoxPort"; this.comboBoxPort.Size = new System.Drawing.Size(80, 21); this.comboBoxPort.TabIndex = 2; @@ -342,10 +287,10 @@ // buttonIRBlastAutoTest // this.buttonIRBlastAutoTest.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); - this.buttonIRBlastAutoTest.Location = new System.Drawing.Point(336, 536); + this.buttonIRBlastAutoTest.Location = new System.Drawing.Point(336, 416); this.buttonIRBlastAutoTest.Name = "buttonIRBlastAutoTest"; this.buttonIRBlastAutoTest.Size = new System.Drawing.Size(112, 24); - this.buttonIRBlastAutoTest.TabIndex = 8; + this.buttonIRBlastAutoTest.TabIndex = 5; this.buttonIRBlastAutoTest.Text = "IRBlast Auto-Test"; this.toolTips.SetToolTip(this.buttonIRBlastAutoTest, "Runs a random number blasting test"); this.buttonIRBlastAutoTest.UseVisualStyleBackColor = true; @@ -354,10 +299,10 @@ // buttonHelp // this.buttonHelp.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); - this.buttonHelp.Location = new System.Drawing.Point(8, 536); + this.buttonHelp.Location = new System.Drawing.Point(8, 416); this.buttonHelp.Name = "buttonHelp"; this.buttonHelp.Size = new System.Drawing.Size(56, 24); - this.buttonHelp.TabIndex = 5; + this.buttonHelp.TabIndex = 4; this.buttonHelp.Text = "Help"; this.buttonHelp.UseVisualStyleBackColor = true; this.buttonHelp.Click += new System.EventHandler(this.buttonHelp_Click); @@ -366,23 +311,20 @@ // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(456, 566); + this.ClientSize = new System.Drawing.Size(456, 446); this.Controls.Add(this.buttonIRBlastAutoTest); this.Controls.Add(this.buttonHelp); this.Controls.Add(this.groupBoxCommands); this.Controls.Add(this.groupBoxSetup); this.Controls.Add(this.groupBoxRemoteButton); this.Controls.Add(this.groupBoxStatus); - this.Controls.Add(this.groupBoxGenerateMessage); this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); - this.MinimumSize = new System.Drawing.Size(464, 600); + this.MinimumSize = new System.Drawing.Size(472, 482); this.Name = "MainForm"; this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; this.Text = "Debug Client"; this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.MainForm_FormClosing); this.Load += new System.EventHandler(this.MainForm_Load); - this.groupBoxGenerateMessage.ResumeLayout(false); - this.groupBoxGenerateMessage.PerformLayout(); this.groupBoxStatus.ResumeLayout(false); this.groupBoxRemoteButton.ResumeLayout(false); ((System.ComponentModel.ISupportInitialize)(this.numericUpDownButton)).EndInit(); @@ -401,11 +343,7 @@ private System.Windows.Forms.Button buttonDisconnect; private System.Windows.Forms.Button buttonShutdownServer; private System.Windows.Forms.ListBox listBoxStatus; - private System.Windows.Forms.Button buttonCrash; private System.Windows.Forms.Button buttonPing; - private System.Windows.Forms.GroupBox groupBoxGenerateMessage; - private System.Windows.Forms.TextBox textBoxCustom; - private System.Windows.Forms.Button buttonSendCustom; private System.Windows.Forms.GroupBox groupBoxStatus; private System.Windows.Forms.GroupBox groupBoxRemoteButton; private System.Windows.Forms.NumericUpDown numericUpDownButton; Modified: trunk/plugins/IR Server Suite/Applications/Debug Client/MainForm.cs =================================================================== --- trunk/plugins/IR Server Suite/Applications/Debug Client/MainForm.cs 2007-09-15 16:30:02 UTC (rev 927) +++ trunk/plugins/IR Server Suite/Applications/Debug Client/MainForm.cs 2007-09-15 16:36:50 UTC (rev 928) @@ -91,6 +91,8 @@ public MainForm() { InitializeComponent(); + + _messageQueue = new MessageQueue(new MessageQueueSink(ReceivedMessage)); } #endregion @@ -103,12 +105,16 @@ #region Variables - string _serverAddress = Environment.MachineName; + MessageQueue _messageQueue; + + string _serverHost = Environment.MachineName; string _localPipeName = null; string _learnIRFilename = null; - //static bool _keepAlive = true; - static int _echoID = -1; + bool _registered = false; + bool _keepAlive = true; + int _echoID = -1; + Thread _keepAliveThread; IRServerInfo _irServerInfo = new IRServerInfo(); @@ -131,9 +137,6 @@ IrssLog.LogLevel = IrssLog.Level.Debug; IrssLog.Open(Common.FolderIrssLogs + "Debug Client.log"); - string customTemp = String.Format(Common.LocalPipeFormat, 1); - textBoxCustom.Text = String.Format("{0},{1},Register,null", customTemp, Environment.MachineName); - _AddStatusLine = new DelegateAddStatusLine(AddStatusLine); comboBoxRemoteButtons.Items.AddRange(Enum.GetNames(typeof(MceButton))); @@ -147,7 +150,7 @@ if (networkPCs != null) { comboBoxComputer.Items.AddRange(networkPCs.ToArray()); - comboBoxComputer.Text = _serverAddress; + comboBoxComputer.Text = _serverHost; } } private void MainForm_FormClosing(object sender, FormClosingEventArgs e) @@ -172,6 +175,7 @@ case PipeMessageType.RegisterClient: if ((received.Flags & PipeMessageFlags.Success) == PipeMessageFlags.Success) { + _registered = true; _irServerInfo = IRServerInfo.FromBytes(received.DataAsBytes); comboBoxPort.Items.Clear(); comboBoxPort.Items.AddRange(_irServerInfo.Ports); @@ -179,8 +183,7 @@ } else if ((received.Flags & PipeMessageFlags.Failure) == PipeMessageFlags.Failure) { - if (PipeAccess.ServerRunning) - PipeAccess.StopServer(); + _registered = false; } return; @@ -202,8 +205,7 @@ break; case PipeMessageType.ServerShutdown: - if (PipeAccess.ServerRunning) - PipeAccess.StopServer(); + _registered = false; return; case PipeMessageType.Echo: @@ -222,48 +224,6 @@ } } - bool ConnectToServer(string server) - { - _serverAddress = server; - - bool retry = false; - int pipeNumber = 1; - string localPipeTest; - - do - { - localPipeTest = String.Format(Common.LocalPipeFormat, pipeNumber); - AddStatusLine("Trying pipe: " + localPipeTest); - listBoxStatus.Update(); - - if (PipeAccess.PipeExists(String.Format("\\\\.\\pipe\\{0}", localPipeTest))) - { - pipeNumber++; - if (pipeNumber <= Common.MaximumLocalClientCount) - { - retry = true; - } - else - { - AddStatusLine("Maximum local client limit reached"); - return false; - } - } - else - { - PipeAccess.StartServer(localPipeTest, new PipeMessageHandler(ReceivedMessage)); - _localPipeName = localPipeTest; - retry = false; - } - } - while (retry); - - PipeMessage message = new PipeMessage(Environment.MachineName, _localPipeName, PipeMessageType.RegisterClient, PipeMessageFlags.Request); - PipeAccess.SendMessage(Common.ServerPipeName, _serverAddress, message); - - return true; - } - bool LearnIR(string fileName) { try @@ -274,7 +234,7 @@ _learnIRFilename = fileName; PipeMessage message = new PipeMessage(Environment.MachineName, _localPipeName, PipeMessageType.LearnIR, PipeMessageFlags.Request); - PipeAccess.SendMessage(Common.ServerPipeName, _serverAddress, message); + PipeAccess.SendMessage(Common.ServerPipeName, _serverHost, message); AddStatusLine("Learning"); } @@ -304,7 +264,7 @@ file.Close(); PipeMessage message = new PipeMessage(Environment.MachineName, _localPipeName, PipeMessageType.BlastIR, PipeMessageFlags.Request, outData); - PipeAccess.SendMessage(Common.ServerPipeName, _serverAddress, message); + PipeAccess.SendMessage(Common.ServerPipeName, _serverHost, message); } catch (Exception ex) { @@ -321,55 +281,272 @@ this.Invoke(_AddStatusLine, new Object[] { text }); } - #region Controls + bool StartComms() + { + try + { + if (OpenLocalPipe()) + { + _messageQueue.Start(); - private void buttonConnect_Click(object sender, EventArgs e) + _keepAliveThread = new Thread(new ThreadStart(KeepAliveThread)); + _keepAliveThread.Start(); + return true; + } + } + catch (Exception ex) + { + IrssLog.Error(ex.ToString()); + } + + return false; + } + void StopComms() { + _keepAlive = false; + try { - AddStatusLine("Connect"); - listBoxStatus.Update(); + if (_keepAliveThread != null && _keepAliveThread.IsAlive) + _keepAliveThread.Abort(); + } + catch { } + try + { + if (_registered) + { + _registered = false; + + PipeMessage message = new PipeMessage(Environment.MachineName, _localPipeName, PipeMessageType.UnregisterClient, PipeMessageFlags.Request); + PipeAccess.SendMessage(Common.ServerPipeName, _serverHost, message); + } + } + catch { } + + _messageQueue.Stop(); + + try + { if (PipeAccess.ServerRunning) + PipeAccess.StopServer(); + } + catch { } + } + + bool OpenLocalPipe() + { + try + { + int pipeNumber = 1; + bool retry = false; + + do { - AddStatusLine("Already connected"); - return; + string localPipeTest = String.Format("irserver\\debug{0:00}", pipeNumber); + + if (PipeAccess.PipeExists(Common.LocalPipePrefix + localPipeTest)) + { + if (++pipeNumber <= Common.MaximumLocalClientCount) + retry = true; + else + throw new Exception(String.Format("Maximum local client limit ({0}) reached", Common.MaximumLocalClientCount)); + } + else + { + if (!PipeAccess.StartServer(localPipeTest, new PipeMessageHandler(_messageQueue.Enqueue))) + throw new Exception(String.Format("Failed to start local pipe server \"{0}\"", localPipeTest)); + + _localPipeName = localPipeTest; + retry = false; + } } + while (retry); - ConnectToServer(comboBoxComputer.Text); + return true; } catch (Exception ex) { - AddStatusLine(ex.Message); + IrssLog.Error(ex.ToString()); + return false; + } + } - if (PipeAccess.ServerRunning) - PipeAccess.StopServer(); + bool ConnectToServer() + { + try + { + PipeMessage message = new PipeMessage(Environment.MachineName, _localPipeName, PipeMessageType.RegisterClient, PipeMessageFlags.Request); + PipeAccess.SendMessage(Common.ServerPipeName, _serverHost, message); + return true; } + catch (AppModule.NamedPipes.NamedPipeIOException) + { + return false; + } + catch (Exception ex) + { + IrssLog.Error(ex.ToString()); + return false; + } } - private void buttonDisconnect_Click(object sender, EventArgs e) + + void KeepAliveThread() { - AddStatusLine("Disconnect"); + Random random = new Random((int)DateTime.Now.Ticks); + bool reconnect; + int attempt; - if (!PipeAccess.ServerRunning) + _registered = false; + _keepAlive = true; + while (_keepAlive) { - AddStatusLine(" - Not connected"); - return; + reconnect = true; + + #region Connect to server + + IrssLog.Info("Connecting ({0}) ...", _serverHost); + attempt = 0; + while (_keepAlive && reconnect) + { + if (ConnectToServer()) + { + reconnect = false; + } + else + { + int wait; + + if (attempt <= 50) + attempt++; + + if (attempt > 50) + wait = 30; // 30 seconds + else if (attempt > 20) + wait = 10; // 10 seconds + else if (attempt > 10) + wait = 5; // 5 seconds + else + wait = 1; // 1 second + + for (int sleeps = 0; sleeps < wait && _keepAlive; sleeps++) + Thread.Sleep(1000); + } + } + + #endregion Connect to server + + #region Wait for registered + + // Give up after 10 seconds ... + attempt = 0; + while (_keepAlive && !_registered && !reconnect) + { + if (++attempt >= 10) + reconnect = true; + else + Thread.Sleep(1000); + } + + #endregion Wait for registered + + #region Ping the server repeatedly + + while (_keepAlive && _registered && !reconnect) + { + int pingID = random.Next(); + long pingTime = DateTime.Now.Ticks; + + try + { + PipeMessage message = new PipeMessage(Environment.MachineName, _localPipeName, PipeMessageType.Ping, PipeMessageFlags.Request, BitConverter.GetBytes(pingID)); + PipeAccess.SendMessage(Common.ServerPipeName, _serverHost, message); + } + catch + { + // Failed to ping ... reconnect ... + IrssLog.Warn("Failed to ping, attempting to reconnect ..."); + _registered = false; + reconnect = true; + break; + } + + // Wait 10 seconds for a ping echo ... + bool receivedEcho = false; + while (_keepAlive && _registered && !reconnect && + !receivedEcho && DateTime.Now.Ticks - pingTime < 10 * 1000 * 10000) + { + if (_echoID == pingID) + { + receivedEcho = true; + } + else + { + Thread.Sleep(1000); + } + } + + if (receivedEcho) // Received ping echo ... + { + // Wait 60 seconds before re-pinging ... + for (int sleeps = 0; sleeps < 60 && _keepAlive && _registered; sleeps++) + Thread.Sleep(1000); + } + else // Didn't receive ping echo ... + { + IrssLog.Warn("No echo to ping, attempting to reconnect ..."); + + // Break out of pinging cycle ... + _registered = false; + reconnect = true; + } + } + + #endregion Ping the server repeatedly + } + } + + + + #region Controls + + private void buttonConnect_Click(object sender, EventArgs e) + { try { - PipeMessage message = new PipeMessage(Environment.MachineName, _localPipeName, PipeMessageType.UnregisterClient, PipeMessageFlags.Request); - PipeAccess.SendMessage(Common.ServerPipeName, _serverAddress, message); + AddStatusLine("Connect"); + listBoxStatus.Update(); + + if (PipeAccess.ServerRunning) + { + AddStatusLine("Already connected"); + return; + } + + _serverHost = comboBoxComputer.Text; + + StartComms(); } catch (Exception ex) { AddStatusLine(ex.Message); } + } + private void buttonDisconnect_Click(object sender, EventArgs e) + { + AddStatusLine("Disconnect"); try { - if (PipeAccess.ServerRunning) - PipeAccess.StopServer(); + if (!PipeAccess.ServerRunning) + { + AddStatusLine(" - Not connected"); + return; + } + + StopComms(); } catch (Exception ex) { @@ -427,17 +604,13 @@ try { PipeMessage message = new PipeMessage(Environment.MachineName, _localPipeName, PipeMessageType.ServerShutdown, PipeMessageFlags.Request); - PipeAccess.SendMessage(Common.ServerPipeName, _serverAddress, message); + PipeAccess.SendMessage(Common.ServerPipeName, _serverHost, message); } catch (Exception ex) { AddStatusLine(ex.Message); } } - private void buttonCrash_Click(object sender, EventArgs e) - { - throw new System.InvalidOperationException("User initiated exception thrown"); - } private void buttonPing_Click(object sender, EventArgs e) { AddStatusLine("Ping Server"); @@ -451,7 +624,7 @@ try { PipeMessage message = new PipeMessage(Environment.MachineName, _localPipeName, PipeMessageType.Ping, PipeMessageFlags.Request, BitConverter.GetBytes(24)); - PipeAccess.SendMessage(Common.ServerPipeName, _serverAddress, message); + PipeAccess.SendMessage(Common.ServerPipeName, _serverHost, message); } catch (Exception ex) { @@ -459,27 +632,6 @@ } } - private void buttonSendCustom_Click(object sender, EventArgs e) - { - try - { - AddStatusLine("Sending custom message to server ..."); - - if (PipeMessage.FromString(textBoxCustom.Text) == null) - AddStatusLine("Warning: The specified custom message is not a valid message structure"); - - PipeMessage customMessage = PipeMessage.FromString(textBoxCustom.Text); - - PipeAccess.SendMessage(Common.ServerPipeName, _serverAddress, customMessage); - - AddStatusLine("Custom message sent"); - } - catch (Exception ex) - { - AddStatusLine(ex.Message); - } - } - private void comboBoxRemoteButtons_SelectedIndexChanged(object sender, EventArgs e) { if (comboBoxRemoteButtons.SelectedItem.ToString() == "Custom") @@ -514,7 +666,7 @@ BitConverter.GetBytes(0).CopyTo(data, 4); PipeMessage message = new PipeMessage(Environment.MachineName, _localPipeName, PipeMessageType.ForwardRemoteEvent, PipeMessageFlags.Notify, data); - PipeAccess.SendMessage(Common.ServerPipeName, _serverAddress, message); + PipeAccess.SendMessage(Common.ServerPipeName, _serverHost, message); } catch (Exception ex) { @@ -536,6 +688,8 @@ #endregion Controls + + Thread AutoTest; private void buttonAutoTest_Click(object sender, EventArgs e) Modified: trunk/plugins/IR Server Suite/Applications/IR Blast/Program.cs =================================================================== --- trunk/plugins/IR Server Suite/Applications/IR Blast/Program.cs 2007-09-15 16:30:02 UTC (rev 927) +++ trunk/plugins/IR Server Suite/Applications/IR Blast/Program.cs 2007-09-15 16:36:50 UTC (rev 928) @@ -19,6 +19,8 @@ #region Variables + static MessageQueue _messageQueue; + static bool _registered = false; static bool _keepAlive = true; static int _echoID = -1; @@ -79,6 +81,8 @@ } } + _messageQueue = new MessageQueue(new MessageQueueSink(ReceivedMessage)); + if (String.IsNullOrEmpty(_serverHost) || irCommands.Count == 0) { Console.WriteLine("Malformed command line parameters ..."); @@ -220,6 +224,8 @@ { if (OpenLocalPipe()) { + _messageQueue.Start(); + _keepAliveThread = new Thread(new ThreadStart(KeepAliveThread)); _keepAliveThread.Start(); return true; @@ -255,6 +261,8 @@ } catch { } + _messageQueue.Stop(); + try { if (PipeAccess.ServerRunning) @@ -272,9 +280,9 @@ do { - string localPipeTest = String.Format(Common.LocalPipeFormat, pipeNumber); + string localPipeTest = String.Format("irserver\\blast{0:00}", pipeNumber); - if (PipeAccess.PipeExists(String.Format("\\\\.\\pipe\\{0}", localPipeTest))) + if (PipeAccess.PipeExists(Common.LocalPipePrefix + localPipeTest)) { if (++pipeNumber <= Common.MaximumLocalClientCount) retry = true; @@ -283,7 +291,7 @@ } else { - if (!PipeAccess.StartServer(localPipeTest, new PipeMessageHandler(ReceivedMessage))) + if (!PipeAccess.StartServer(localPipeTest, new PipeMessageHandler(_messageQueue.Enqueue))) throw new Exception(String.Format("Failed to start local pipe server \"{0}\"", localPipeTest)); _localPipeName = localPipeTest; Modified: trunk/plugins/IR Server Suite/Applications/IR Blast (No Window)/Program.cs =================================================================== --- trunk/plugins/IR Server Suite/Applications/IR Blast (No Window)/Program.cs 2007-09-15 16:30:02 UTC (rev 927) +++ trunk/plugins/IR Server Suite/Applications/IR Blast (No Window)/Program.cs 2007-09-15 16:36:50 UTC (rev 928) @@ -20,6 +20,8 @@ #region Variables + static MessageQueue _messageQueue; + static bool _registered = false; static bool _keepAlive = true; static int _echoID = -1; @@ -78,6 +80,8 @@ } } + _messageQueue = new MessageQueue(new MessageQueueSink(ReceivedMessage)); + if (String.IsNullOrEmpty(_serverHost) || irCommands.Count == 0) { Console.WriteLine("Malformed command line parameters ..."); @@ -182,6 +186,8 @@ { if (OpenLocalPipe()) { + _messageQueue.Start(); + _keepAliveThread = new Thread(new ThreadStart(KeepAliveThread)); _keepAliveThread.Start(); return true; @@ -217,6 +223,8 @@ } catch { } + _messageQueue.Stop(); + try { if (PipeAccess.ServerRunning) @@ -234,9 +242,9 @@ do { - string localPipeTest = String.Format(Common.LocalPipeFormat, pipeNumber); + string localPipeTest = String.Format("irserver\\blast{0:00}", pipeNumber); - if (PipeAccess.PipeExists(String.Format("\\\\.\\pipe\\{0}", localPipeTest))) + if (PipeAccess.PipeExists(Common.LocalPipePrefix + localPipeTest)) { if (++pipeNumber <= Common.MaximumLocalClientCount) retry = true; @@ -245,7 +253,7 @@ } else { - if (!PipeAccess.StartServer(localPipeTest, new PipeMessageHandler(ReceivedMessage))) + if (!PipeAccess.StartServer(localPipeTest, new PipeMessageHandler(_messageQueue.Enqueue))) throw new Exception(String.Format("Failed to start local pipe server \"{0}\"", localPipeTest)); _localPipeName = localPipeTest; Modified: trunk/plugins/IR Server Suite/Applications/IR Server/Client.cs =================================================================== --- trunk/plugins/IR Server Suite/Applications/IR Server/Client.cs 2007-09-15 16:30:02 UTC (rev 927) +++ trunk/plugins/IR Server Suite/Applications/IR Server/Client.cs 2007-09-15 16:36:50 UTC (rev 928) @@ -15,6 +15,11 @@ Server = server; } + public override string ToString() + { + return String.Format("({0}, {1})", Server, Pipe); + } + } } Modified: trunk/plugins/IR Server Suite/Applications/IR Server/Config.cs =================================================================== --- trunk/plugins/IR Server Suite/Applications/IR Server/Config.cs 2007-09-15 16:30:02 UTC (rev 927) +++ trunk/plugins/IR Server Suite/Applications/IR Server/Config.cs 2007-09-15 16:36:50 UTC (rev 928) @@ -336,7 +336,6 @@ #endregion Controls - } } Modified: trunk/plugins/IR Server Suite/Applications/IR Server/IRServer.cs =================================================================== --- trunk/plugins/IR Server Suite/Applications/IR Server/IRServer.cs 2007-09-15 16:30:02 UTC (rev 927) +++ trunk/plugins/IR Server Suite/Applications/IR Server/IRServer.cs 2007-09-15 16:36:50 UTC (rev 928) @@ -79,7 +79,7 @@ public IRServer() { - _messageQueue = new MessageQueue(new MessageQueueSink(HandlePipeMessage)); + _messageQueue = new MessageQueue(new MessageQueueSink(ReceivedMessage)); // Setup taskbar icon _notifyIcon = new NotifyIcon(); @@ -256,7 +256,7 @@ if (_mode == IRServerMode.ServerMode) { - PipeMessage message = new PipeMessage(Common.ServerPipeName, Environment.MachineName, PipeMessageType.ServerShutdown, PipeMessageFlags.Notify); + PipeMessage message = new PipeMessage(Environment.MachineName, Common.ServerPipeName, PipeMessageType.ServerShutdown, PipeMessageFlags.Notify); SendToAll(message); } @@ -370,9 +370,9 @@ { do { - localPipeTest = String.Format(Common.LocalPipeFormat, pipeNumber); + localPipeTest = String.Format("irserver\\relay{0:00}", pipeNumber); - if (PipeAccess.PipeExists(String.Format("\\\\.\\pipe\\{0}", localPipeTest))) + if (PipeAccess.PipeExists(Common.LocalPipePrefix + localPipeTest)) { pipeNumber++; if (pipeNumber <= Common.MaximumLocalClientCount) @@ -437,9 +437,9 @@ { do { - localPipeTest = String.Format(Common.LocalPipeFormat, pipeNumber); + localPipeTest = String.Format("irserver\\repeat{0:00}", pipeNumber); - if (PipeAccess.PipeExists(String.Format("\\\\.\\pipe\\{0}", localPipeTest))) + if (PipeAccess.PipeExists(Common.LocalPipePrefix + localPipeTest)) { pipeNumber++; if (pipeNumber <= Common.MaximumLocalClientCount) @@ -504,7 +504,7 @@ { case IRServerMode.ServerMode: { - PipeMessage message = new PipeMessage(Common.ServerPipeName, Environment.MachineName, PipeMessageType.RemoteEvent, PipeMessageFlags.Notify, bytes); + PipeMessage message = new PipeMessage(Environment.MachineName, Common.ServerPipeName, PipeMessageType.RemoteEvent, PipeMessageFlags.Notify, bytes); SendToAll(message); break; } @@ -512,7 +512,7 @@ case IRServerMode.RelayMode: { PipeMessage message = new PipeMessage(Environment.MachineName, _localPipeName, PipeMessageType.ForwardRemoteEvent, PipeMessageFlags.Request, bytes); - SendTo(Common.ServerPipeName, _hostComputer, message); + SendTo(new Client(Common.ServerPipeName, _hostComputer), message); break; } @@ -536,7 +536,7 @@ { case IRServerMode.ServerMode: { - PipeMessage message = new PipeMessage(Common.ServerPipeName, Environment.MachineName, PipeMessageType.KeyboardEvent, PipeMessageFlags.Notify, bytes); + PipeMessage message = new PipeMessage(Environment.MachineName, Common.ServerPipeName, PipeMessageType.KeyboardEvent, PipeMessageFlags.Notify, bytes); SendToAll(message); break; } @@ -544,7 +544,7 @@ case IRServerMode.RelayMode: { PipeMessage message = new PipeMessage(Environment.MachineName, _localPipeName, PipeMessageType.ForwardKeyboardEvent, PipeMessageFlags.Request, bytes); - SendTo(Common.ServerPipeName, _hostComputer, message); + SendTo(new Client(Common.ServerPipeName, _hostComputer), message); break; } @@ -569,7 +569,7 @@ { case IRServerMode.ServerMode: { - PipeMessage message = new PipeMessage(Common.ServerPipeName, Environment.MachineName, PipeMessageType.MouseEvent, PipeMessageFlags.Notify, bytes); + PipeMessage message = new PipeMessage(Environment.MachineName, Common.ServerPipeName, PipeMessageType.MouseEvent, PipeMessageFlags.Notify, bytes); SendToAll(message); break; } @@ -577,7 +577,7 @@ case IRServerMode.RelayMode: { PipeMessage message = new PipeMessage(Environment.MachineName, _localPipeName, PipeMessageType.ForwardMouseEvent, PipeMessageFlags.Request, bytes); - SendTo(Common.ServerPipeName, _hostComputer, message); + SendTo(new Client(Common.ServerPipeName, _hostComputer), message); break; } @@ -620,7 +620,7 @@ // Inform clients ... if (_mode == IRServerMode.ServerMode) { - PipeMessage message = new PipeMessage(Common.ServerPipeName, Environment.MachineName, PipeMessageType.ServerShutdown, PipeMessageFlags.Notify); + PipeMessage message = new PipeMessage(Environment.MachineName, Common.ServerPipeName, PipeMessageType.ServerShutdown, PipeMessageFlags.Notify); SendToAll(message); } break; @@ -656,13 +656,13 @@ // while enumerating it. foreach (Client client in unregister) { - UnregisterClient(client.Pipe, client.Server); + UnregisterClient(client); } } } - void SendToAllExcept(string exceptPipe, string exceptServer, PipeMessage message) + void SendToAllExcept(Client exceptClient, PipeMessage message) { - IrssLog.Debug("SendToAllExcept({0}, {1}, {2})", exceptPipe, exceptServer, message); + IrssLog.Debug("SendToAllExcept({0}, {1})", exceptClient.ToString(), message); List<Client> unregister = new List<Client>(); @@ -670,11 +670,11 @@ { foreach (Client client in _registeredClients) { + if (client.Server.Equals(exceptClient.Server, StringComparison.InvariantCultureIgnoreCase) && client.Pipe.Equals(exceptClient.Pipe, StringComparison.InvariantCultureIgnoreCase)) + continue; + try { - if (client.Pipe == exceptPipe && client.Server == exceptServer) - continue; - PipeAccess.SendMessage(client.Pipe, client.Server, message); } catch (Exception ex) @@ -691,24 +691,24 @@ // while enumerating it. foreach (Client client in unregister) { - UnregisterClient(client.Pipe, client.Server); + UnregisterClient(client); } } } - void SendTo(string pipe, string server, PipeMessage message) + void SendTo(Client receiver, PipeMessage message) { - IrssLog.Debug("SendTo({0}, {1}, {2})", pipe, server, message); + IrssLog.Debug("SendTo({0}, {1})", receiver.ToString(), message); try { - PipeAccess.SendMessage(pipe, server, message); + PipeAccess.SendMessage(receiver.Pipe, receiver.Server, message); } catch (Exception ex) { - IrssLog.Warn("Failed to send message to client ({0}\\{1}): {2}", server, pipe, ex.Message); + IrssLog.Warn("Failed to send message to client ({0}): {1}", receiver.ToString(), ex.Message); // If a message doesn't get through then unregister that client - UnregisterClient(pipe, server); + UnregisterClient(receiver); } } void SendToRepeaters(PipeMessage message) @@ -739,54 +739,34 @@ // while enumerating it. foreach (Client client in unregister) { - UnregisterRepeater(client.Pipe, client.Server); + UnregisterRepeater(client); } } } - bool RegisterClient(string pipe, string server) + bool RegisterClient(Client addClient) { - if (String.IsNullOrEmpty(pipe) || String.IsNullOrEmpty(server)) - return false; - if (_mode != IRServerMode.ServerMode) return false; - bool alreadyRegistered = false; - lock (_registeredClients) { - foreach (Client client in _registeredClients) - { - if (client.Pipe == pipe && client.Server == server) - { - alreadyRegistered = true; - break; - } - } + if (_registeredClients.Contains(addClient)) + return true; + else if (_registeredClients.Count >= Common.MaximumLocalClientCount) + return false; - if (!alreadyRegistered) - { - if (_registeredClients.Count >= Common.MaximumLocalClientCount) - return false; - else - _registeredClients.Add(new Client(pipe, server)); - } + _registeredClients.Add(addClient); } - IrssLog.Info("Registered: \\\\{0}\\pipe\\{1}", server, pipe); + IrssLog.Info("Registered: {0}", addClient.ToString()); return true; } - bool UnregisterClient(string pipe, string server) + bool UnregisterClient(Client removeClient) { - if (String.IsNullOrEmpty(pipe) || String.IsNullOrEmpty(server)) - return false; - if (_mode != IRServerMode.ServerMode) return false; - Client removeClient = new Client(pipe, server); - lock (_registeredClients) { if (!_registeredClients.Contains(removeClient)) @@ -795,62 +775,42 @@ _registeredClients.Remove(removeClient); } - IrssLog.Info("Unregistered: \\\\{0}\\pipe\\{1}", server, pipe); + IrssLog.Info("Unregistered: {0}", removeClient.ToString()); return true; } - bool RegisterRepeater(string pipe, string server) + bool RegisterRepeater(Client addRepeater) { - if (String.IsNullOrEmpty(pipe) || String.IsNullOrEmpty(server)) - return false; - if (_mode != IRServerMode.ServerMode) return false; - bool alreadyRegistered = false; - lock (_registeredRepeaters) { - foreach (Client client in _registeredRepeaters) - { - if (client.Pipe == pipe && client.Server == server) - { - alreadyRegistered = true; - break; - } - } + if (_registeredRepeaters.Contains(addRepeater)) + return true; + else if (_registeredRepeaters.Count >= Common.MaximumLocalClientCount) + return false; - if (!alreadyRegistered) - { - if (_registeredRepeaters.Count >= Common.MaximumLocalClientCount) - return false; - else - _registeredRepeaters.Add(new Client(pipe, server)); - } + _registeredRepeaters.Add(addRepeater); } - IrssLog.Info("Registered Repeater: \\\\{0}\\pipe\\{1}", server, pipe); + IrssLog.Info("Registered Repeater: {0}", addRepeater.ToString()); return true; } - bool UnregisterRepeater(string pipe, string server) + bool UnregisterRepeater(Client removeRepeater) { - if (String.IsNullOrEmpty(pipe) || String.IsNullOrEmpty(server)) - return false; - if (_mode != IRServerMode.RepeaterMode) return false; - Client removeClient = new Client(pipe, server); - lock (_registeredRepeaters) { - if (!_registeredRepeaters.Contains(removeClient)) + if (!_registeredRepeaters.Contains(removeRepeater)) return false; - _registeredRepeaters.Remove(removeClient); + _registeredRepeaters.Remove(removeRepeater); } - IrssLog.Info("Unregistered Repeater: \\\\{0}\\pipe\\{1}", server, pipe); + IrssLog.Info("Unregistered Repeater: {0}", removeRepeater.ToString()); return true; } @@ -927,17 +887,20 @@ return status; } - void HandlePipeMessage(string message) + void ReceivedMessage(string message) { PipeMessage received = PipeMessage.FromString(message); + if (received == null) { IrssLog.Warn("Invalid message received: {0}", message); return; } - IrssLog.Debug("Message received from client \\\\{0}\\pipe\\{1} = {2}", received.FromServer, received.FromPipe, message); + Client receivedFromClient = new Client(received.FromPipe, received.FromServer); + IrssLog.Debug("Message received from client {0} = {1}", receivedFromClient.ToString(), message); + try { switch (received.Type) @@ -945,45 +908,45 @@ case PipeMessageType.ForwardRemoteEvent: if (_mode == IRServerMode.RelayMode) { - PipeMessage forward = new PipeMessage(Common.ServerPipeName, Environment.MachineName, PipeMessageType.ForwardRemoteEvent, PipeMessageFlags.Request, received.DataAsBytes); - SendTo(Common.ServerPipeName, _hostComputer, forward); + PipeMessage forward = new PipeMessage(Environment.MachineName, Common.ServerPipeName, PipeMessageType.ForwardRemoteEvent, PipeMessageFlags.Request, received.DataAsBytes); + SendTo(new Client(Common.ServerPipeName, _hostComputer), forward); } else { - PipeMessage forward = new PipeMessage(Common.ServerPipeName, Environment.MachineName, PipeMessageType.RemoteEvent, PipeMessageFlags.Notify, received.DataAsBytes); - SendToAllExcept(received.FromPipe, received.FromServer, forward); + PipeMessage forward = new PipeMessage(Environment.MachineName, Common.ServerPipeName, PipeMessageType.RemoteEvent, PipeMessageFlags.Notify, received.DataAsBytes); + SendToAllExcept(receivedFromClient, forward); } break; case PipeMessageType.ForwardKeyboardEvent: if (_mode == IRServerMode.RelayMode) { - PipeMessage forward = new PipeMessage(Common.ServerPipeName, Environment.MachineName, PipeMessageType.ForwardKeyboardEvent, PipeMessageFlags.Request, received.DataAsBytes); - SendTo(Common.ServerPipeName, _hostComputer, forward); + PipeMessage forward = new PipeMessage(Environment.MachineName, Common.ServerPipeName, PipeMessageType.ForwardKeyboardEvent, PipeMessageFlags.Request, received.DataAsBytes); + SendTo(new Client(Common.ServerPipeName, _hostComputer), forward); } else { - PipeMessage forward = new PipeMessage(Common.ServerPipeName, Environment.MachineName, PipeMessageType.KeyboardEvent, PipeMessageFlags.Notify, received.DataAsBytes); - SendToAllExcept(received.FromPipe, received.FromServer, forward); + PipeMessage forward = new PipeMessage(Environment.MachineName, Common.ServerPipeName, PipeMessageType.KeyboardEvent, PipeMessageFlags.Notify, received.DataAsBytes); + SendToAllExcept(receivedFromClient, forward); } break; case PipeMessageType.ForwardMouseEvent: if (_mode == IRServerMode.RelayMode) { - PipeMessage forward = new PipeMessage(Common.ServerPipeName, Environment.MachineName, PipeMessageType.ForwardMouseEvent, PipeMessageFlags.Request, received.DataAsBytes); - SendTo(Common.ServerPipeName, _hostComputer, forward); + PipeMessage forward = new PipeMessage(Environment.MachineName, Common.ServerPipeName, PipeMessageType.ForwardMouseEvent, PipeMessageFlags.Request, received.DataAsBytes); + SendTo(new Client(Common.ServerPipeName, _hostComputer), forward); } else { - PipeMessage forward = new PipeMessage(Common.ServerPipeName, Environment.MachineName, PipeMessageType.MouseEvent, PipeMessageFlags.Notify, received.DataAsBytes); - SendToAllExcept(received.FromPipe, received.FromServer, forward); + PipeMessage forward = new PipeMessage(Environment.MachineName, Common.ServerPipeName, PipeMessageType.MouseEvent, PipeMessageFlags.Notify, received.DataAsBytes); + SendToAllExcept(receivedFromClient, forward); } break; case PipeMessageType.BlastIR: { - PipeMessage response = new PipeMessage(Common.ServerPipeName, Environment.MachineName, PipeMessageType.BlastIR, PipeMessageFlags.Response); + PipeMessage response = new PipeMessage(Environment.MachineName, Common.ServerPipeName, PipeMessageType.BlastIR, PipeMessageFlags.Response); if (_mode == IRServerMode.RelayMode) { @@ -1001,14 +964,14 @@ } if ((received.Flags & PipeMessageFlags.ForceNotRespond) != PipeMessageFlags.ForceNotRespond) - SendTo(received.FromPipe, received.FromServer, response); + SendTo(receivedFromClient, response); break; } case PipeMessageType.LearnIR: { - PipeMessage response = new PipeMessage(Common.ServerPipeName, Environment.MachineName, PipeMessageType.LearnIR, PipeMessageFlags.Response); + PipeMessage response = new PipeMessage(Environment.MachineName, Common.ServerPipeName, PipeMessageType.LearnIR, PipeMessageFlags.Response); if (_mode == IRServerMode.RelayMode) { @@ -1037,7 +1000,7 @@ } } - SendTo(received.FromPipe, received.FromServer, response); + SendTo(receivedFromClient, response); break; } @@ -1064,8 +1027,8 @@ case PipeMessageType.Ping: { - PipeMessage response = new PipeMessage(Common.ServerPipeName, Environment.MachineName, PipeMessageType.Echo, PipeMessageFlags.Response, received.DataAsBytes); - SendTo(received.FromPipe, received.FromServer, response); + PipeMessage response = new PipeMessage(Environment.MachineName, Common.ServerPipeName, PipeMessageType.Echo, PipeMessageFlags.Response, received.DataAsBytes); + SendTo(receivedFromClient, response); break; } @@ -1074,9 +1037,9 @@ { if ((received.Flags & PipeMessageFlags.Request) == PipeMessageFlags.Request) { - PipeMessage response = new PipeMessage(Common.ServerPipeName, Environment.MachineName, PipeMessageType.RegisterClient, PipeMessageFlags.Response); + PipeMessage response = new PipeMessage(Environment.MachineName, Common.ServerPipeName, PipeMessageType.RegisterClient, PipeMessageFlags.Response); - if (RegisterClient(received.FromPipe, received.FromServer)) + if (RegisterClient(receivedFromClient)) { IRServerInfo irServerInfo = new IRServerInfo(); @@ -1098,7 +1061,7 @@ response.Flags |= PipeMessageFlags.Failure; } - SendTo(received.FromPipe, received.FromServer, response); + SendTo(receivedFromClient, response); } } else if ((received.Flags & PipeMessageFlags.Response) == PipeMessageFlags.Response) @@ -1117,32 +1080,32 @@ break; case PipeMessageType.UnregisterClient: - UnregisterClient(received.FromPipe, received.FromServer); + UnregisterClient(receivedFromClient); break; case PipeMessageType.RegisterRepeater: { - PipeMessage response = new PipeMessage(Common.ServerPipeName, Environment.MachineName, PipeMessageType.RegisterRepeater, PipeMessageFlags.Response); - - if (RegisterRepeater(received.FromPipe, received.FromServer)) + PipeMessage response = new PipeMessage(Environment.MachineName, Common.ServerPipeName, PipeMessageType.RegisterRepeater, PipeMessageFlags.Response); + + if (RegisterRepeater(receivedFromClient)) response.Flags |= PipeMessageFlags.Success; else response.Flags |= PipeMessageFlags.Failure; - SendTo(received.FromPipe, received.FromServer, response); + SendTo(receivedFromClient, response); break; } case PipeMessageType.UnregisterRepeater: - UnregisterRepeater(received.FromPipe, received.FromServer); + UnregisterRepeater(receivedFromClient); break; } } catch (Exception ex) { IrssLog.Error(ex.ToString()); - PipeMessage response = new PipeMessage(Common.ServerPipeName, Environment.MachineName, PipeMessageType.Error, PipeMessageFlags.Notify, ex.Message); - SendTo(received.FromPipe, received.FromServer, response); + PipeMessage response = new PipeMessage(Environment.MachineName, Common.ServerPipeName, PipeMessageType.Error, PipeMessageFlags.Notify, ex.Message); + SendTo(receivedFromClient, response); } } Modified: trunk/plugins/IR Server Suite/Applications/Translator/Program.cs =================================================================== --- trunk/plugins/IR Server Suite/Applications/Translator/Program.cs 2007-09-15 16:30:02 UTC (rev 927) +++ trunk/plugins/IR Server Suite/Applications/Translator/Program.cs 2007-09-15 16:36:50 UTC (rev 928) @@ -31,6 +31,8 @@ #region Variables + static MessageQueue _messageQueue; + static Configuration _config; static string _localPipeName = String.Empty; @@ -141,6 +143,8 @@ _focusWatcher.Start(); */ + _messageQueue = new MessageQueue(new MessageQueueSink(ReceivedMessage)); + // Start server communications ... if (StartComms()) { @@ -660,6 +664,8 @@ { _notifyIcon.Visible = true; + _messageQueue.Start(); + _keepAliveThread = new Thread(new ThreadStart(KeepAliveThread)); _keepAliveThread.Start(); @@ -698,6 +704,8 @@ } catch { } + _messageQueue.Stop(); + try { if (PipeAccess.ServerRunning) @@ -715,9 +723,9 @@ do { - string localPipeTest = String.Format(Common.LocalPipeFormat, pipeNumber); + string localPipeTest = String.Format("irserver\\trans{0:00}", pipeNumber); - if (PipeAccess.PipeExists(String.Format("\\\\.\\pipe\\{0}", localPipeTest))) + if (PipeAccess.PipeExists(Common.LocalPipePrefix + localPipeTest)) { if (++pipeNumber <= Common.MaximumLocalClientCount) retry = true; @@ -726,7 +734,7 @@ } else { - if (!PipeAccess.StartServer(localPipeTest, new PipeMessageHandler(ReceivedMe... [truncated message content] |
From: <an...@us...> - 2007-09-15 16:30:05
|
Revision: 927 http://mp-plugins.svn.sourceforge.net/mp-plugins/?rev=927&view=rev Author: and-81 Date: 2007-09-15 09:30:02 -0700 (Sat, 15 Sep 2007) Log Message: ----------- Modified Paths: -------------- trunk/plugins/IR Server Suite/IPC/Named Pipes/PipeMessage.cs Added Paths: ----------- trunk/plugins/IR Server Suite/IPC/Named Pipes/MessageQueue.cs Added: trunk/plugins/IR Server Suite/IPC/Named Pipes/MessageQueue.cs =================================================================== --- trunk/plugins/IR Server Suite/IPC/Named Pipes/MessageQueue.cs (rev 0) +++ trunk/plugins/IR Server Suite/IPC/Named Pipes/MessageQueue.cs 2007-09-15 16:30:02 UTC (rev 927) @@ -0,0 +1,186 @@ +using System; +using System.Collections.Generic; +using System.Threading; + +namespace NamedPipes +{ + + #region Delegates + + /// <summary> + /// Delegate for MessageQueue sink. + /// </summary> + /// <param name="message">Message to process.</param> + public delegate void MessageQueueSink(string message); + + #endregion Delegates + + /// <summary> + /// Implements a thread-safe Producer/Consumer Queue for messages. + /// </summary> + public class MessageQueue : IDisposable + { + + #region Variables + + //bool disposed = false; + + Thread _workerThread; + Queue<string> _queue; + object _queueLock; + EventWaitHandle _queueWaitHandle; + volatile bool _processQueue; + + MessageQueueSink _messageSink; + + #endregion Variables + + #region Constructor + + /// <summary> + /// Create a new MessageQueue. + /// </summary> + /// <param name="sink">Where to send dequeued messages.</param> + public MessageQueue(MessageQueueSink sink) + { + if (sink == null) + throw new ArgumentNullException("sink"); + + _messageSink = sink; + + // Create locking and control mechanisms ... + _queueLock = new object(); + _queueWaitHandle = new AutoResetEvent(false); + + // Create FIFO message queue + _queue = new Queue<string>(); + } + + #endregion Constructor + + #region IDisposable Members + + /// <summary> + /// Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + /// </summary> + public void Dispose() + { + if (_processQueue) + Stop(); + + _workerThread = null; + + _queue.Clear(); + _queue = null; + + _queueLock = null; + + _queueWaitHandle.Close(); + } + + #endregion IDisposable Members + + #region Implementation + + /// <summary> + /// Start processing the queue. + /// </summary> + public void Start() + { + if (_processQueue) + return; + + _processQueue = true; + + // Create the worker thread ... + _workerThread = new Thread(new ThreadStart(WorkerThread)); + _workerThread.IsBackground = true; + _workerThread.Name = "Message Queue"; + + _workerThread.Start(); + } + + /// <summary> + /// Stop processing the queue. + /// </summary> + public void Stop() + { + if (!_processQueue) + return; + + // Signal the worker thread to stop ... + _processQueue = false; + _queueWaitHandle.Set(); + + // Join the worker thread and wait for it to finish ... + if (_workerThread.IsAlive && !_workerThread.Join(1000)) + { + _workerThread.Abort(); + _workerThread.Join(); + } + + _workerThread = null; + } + + /// <summary> + /// Add a message to the queue. + /// </summary> + /// <param name="message">Message to place in the queue.</param> + public void Enqueue(string message) + { + if (String.IsNullOrEmpty(message)) + return; + + lock (_queueLock) + _queue.Enqueue(message); + + _queueWaitHandle.Set(); + } + + /// <summary> + /// Clears the queue of any messages. + /// </summary> + public void ClearQueue() + { + lock (_queueLock) + { + _queue.Clear(); + } + } + + /// <summary> + /// Queue processing worker thread. + /// </summary> + void WorkerThread() + { + try + { + string message; + + while (_processQueue) + { + message = null; + + lock (_queueLock) + { + if (_queue.Count > 0) + message = _queue.Dequeue(); + } + + if (String.IsNullOrEmpty(message)) + _queueWaitHandle.WaitOne(); + else + _messageSink(message); + } + } + catch (ThreadAbortException) + { + + } + } + + #endregion Implementation + + } + +} Modified: trunk/plugins/IR Server Suite/IPC/Named Pipes/PipeMessage.cs =================================================================== --- trunk/plugins/IR Server Suite/IPC/Named Pipes/PipeMessage.cs 2007-09-15 04:54:41 UTC (rev 926) +++ trunk/plugins/IR Server Suite/IPC/Named Pipes/PipeMessage.cs 2007-09-15 16:30:02 UTC (rev 927) @@ -235,7 +235,7 @@ static string ByteArrayToByteString(byte[] data) { if (data == null || data.Length == 0) - throw new ArgumentException("Null or Empty byte array supplied", "data"); + throw new ArgumentNullException("data"); StringBuilder outputString = new StringBuilder(2 * data.Length); @@ -248,7 +248,7 @@ static byte[] ByteStringToByteArray(string data) { if (String.IsNullOrEmpty(data)) - throw new ArgumentException("Null or Empty data string supplied", "data"); + throw new ArgumentNullException("data"); List<byte> byteArray = new List<byte>(data.Length / 2); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <an...@us...> - 2007-09-15 04:54:49
|
Revision: 926 http://mp-plugins.svn.sourceforge.net/mp-plugins/?rev=926&view=rev Author: and-81 Date: 2007-09-14 21:54:41 -0700 (Fri, 14 Sep 2007) Log Message: ----------- Modified Paths: -------------- trunk/plugins/IR Server Suite/IPC/Named Pipes/PipeMessage.cs Modified: trunk/plugins/IR Server Suite/IPC/Named Pipes/PipeMessage.cs =================================================================== --- trunk/plugins/IR Server Suite/IPC/Named Pipes/PipeMessage.cs 2007-09-14 21:01:06 UTC (rev 925) +++ trunk/plugins/IR Server Suite/IPC/Named Pipes/PipeMessage.cs 2007-09-15 04:54:41 UTC (rev 926) @@ -137,7 +137,7 @@ #region Constructors - public PipeMessage() + PipeMessage() { _fromServer = String.Empty; _fromPipe = String.Empty; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rs...@us...> - 2007-09-14 21:01:10
|
Revision: 925 http://mp-plugins.svn.sourceforge.net/mp-plugins/?rev=925&view=rev Author: rsparey Date: 2007-09-14 14:01:06 -0700 (Fri, 14 Sep 2007) Log Message: ----------- Modified Paths: -------------- trunk/skins/Foofaraw/Development Skin/Foofaraw/Media/background.png Modified: trunk/skins/Foofaraw/Development Skin/Foofaraw/Media/background.png =================================================================== (Binary files differ) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rs...@us...> - 2007-09-14 19:56:31
|
Revision: 924 http://mp-plugins.svn.sourceforge.net/mp-plugins/?rev=924&view=rev Author: rsparey Date: 2007-09-14 12:56:26 -0700 (Fri, 14 Sep 2007) Log Message: ----------- Modified Paths: -------------- trunk/skins/Foofaraw/Development Skin/Foofaraw/Media/background.png trunk/skins/Foofaraw/Development Skin/Foofaraw/myHome.xml trunk/skins/Foofaraw/Development Skin/Foofaraw/myHomePlugIns.xml trunk/skins/Foofaraw/Development Skin/Foofaraw/mymusicplaylist.xml Added Paths: ----------- trunk/skins/Foofaraw/Development Skin/Foofaraw/Foofaraw Backgrounds/Black Aurura.jpg trunk/skins/Foofaraw/Development Skin/Foofaraw/Foofaraw Backgrounds/Black Holes.jpg trunk/skins/Foofaraw/Development Skin/Foofaraw/Foofaraw Backgrounds/Blue Aurura.jpg trunk/skins/Foofaraw/Development Skin/Foofaraw/Foofaraw Backgrounds/Blue Hole.jpg trunk/skins/Foofaraw/Development Skin/Foofaraw/Foofaraw Backgrounds/Dark Oxygen.jpg trunk/skins/Foofaraw/Development Skin/Foofaraw/Foofaraw Backgrounds/Foofaraw Classic.jpg trunk/skins/Foofaraw/Development Skin/Foofaraw/Foofaraw Backgrounds/Grass.jpg trunk/skins/Foofaraw/Development Skin/Foofaraw/Foofaraw Backgrounds/Green Blade.jpg trunk/skins/Foofaraw/Development Skin/Foofaraw/Foofaraw Backgrounds/Green_Aurura.jpg trunk/skins/Foofaraw/Development Skin/Foofaraw/Foofaraw Backgrounds/Motion Blur.jpg trunk/skins/Foofaraw/Development Skin/Foofaraw/Foofaraw Backgrounds/Silver Aurura.jpg trunk/skins/Foofaraw/Development Skin/Foofaraw/Foofaraw Backgrounds/Smoke.jpg trunk/skins/Foofaraw/Development Skin/Foofaraw/Foofaraw Backgrounds/Smoke2.jpg trunk/skins/Foofaraw/Development Skin/Foofaraw/Foofaraw Backgrounds/Stonned.jpg trunk/skins/Foofaraw/Development Skin/Foofaraw/Foofaraw Backgrounds/Vent.jpg Removed Paths: ------------- trunk/skins/Foofaraw/Development Skin/Foofaraw/Foofaraw Backgrounds/Aqua.png trunk/skins/Foofaraw/Development Skin/Foofaraw/Foofaraw Backgrounds/Black Aurora.png trunk/skins/Foofaraw/Development Skin/Foofaraw/Foofaraw Backgrounds/Blue Aurora.png trunk/skins/Foofaraw/Development Skin/Foofaraw/Foofaraw Backgrounds/Misted Night.png trunk/skins/Foofaraw/Development Skin/Foofaraw/Foofaraw Backgrounds/Underworld Green.png trunk/skins/Foofaraw/Development Skin/Foofaraw/Foofaraw Backgrounds/green blade.png Deleted: trunk/skins/Foofaraw/Development Skin/Foofaraw/Foofaraw Backgrounds/Aqua.png =================================================================== (Binary files differ) Deleted: trunk/skins/Foofaraw/Development Skin/Foofaraw/Foofaraw Backgrounds/Black Aurora.png =================================================================== (Binary files differ) Added: trunk/skins/Foofaraw/Development Skin/Foofaraw/Foofaraw Backgrounds/Black Aurura.jpg =================================================================== (Binary files differ) Property changes on: trunk/skins/Foofaraw/Development Skin/Foofaraw/Foofaraw Backgrounds/Black Aurura.jpg ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/skins/Foofaraw/Development Skin/Foofaraw/Foofaraw Backgrounds/Black Holes.jpg =================================================================== (Binary files differ) Property changes on: trunk/skins/Foofaraw/Development Skin/Foofaraw/Foofaraw Backgrounds/Black Holes.jpg ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Deleted: trunk/skins/Foofaraw/Development Skin/Foofaraw/Foofaraw Backgrounds/Blue Aurora.png =================================================================== (Binary files differ) Added: trunk/skins/Foofaraw/Development Skin/Foofaraw/Foofaraw Backgrounds/Blue Aurura.jpg =================================================================== (Binary files differ) Property changes on: trunk/skins/Foofaraw/Development Skin/Foofaraw/Foofaraw Backgrounds/Blue Aurura.jpg ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/skins/Foofaraw/Development Skin/Foofaraw/Foofaraw Backgrounds/Blue Hole.jpg =================================================================== (Binary files differ) Property changes on: trunk/skins/Foofaraw/Development Skin/Foofaraw/Foofaraw Backgrounds/Blue Hole.jpg ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/skins/Foofaraw/Development Skin/Foofaraw/Foofaraw Backgrounds/Dark Oxygen.jpg =================================================================== (Binary files differ) Property changes on: trunk/skins/Foofaraw/Development Skin/Foofaraw/Foofaraw Backgrounds/Dark Oxygen.jpg ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/skins/Foofaraw/Development Skin/Foofaraw/Foofaraw Backgrounds/Foofaraw Classic.jpg =================================================================== (Binary files differ) Property changes on: trunk/skins/Foofaraw/Development Skin/Foofaraw/Foofaraw Backgrounds/Foofaraw Classic.jpg ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/skins/Foofaraw/Development Skin/Foofaraw/Foofaraw Backgrounds/Grass.jpg =================================================================== (Binary files differ) Property changes on: trunk/skins/Foofaraw/Development Skin/Foofaraw/Foofaraw Backgrounds/Grass.jpg ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/skins/Foofaraw/Development Skin/Foofaraw/Foofaraw Backgrounds/Green Blade.jpg =================================================================== (Binary files differ) Property changes on: trunk/skins/Foofaraw/Development Skin/Foofaraw/Foofaraw Backgrounds/Green Blade.jpg ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/skins/Foofaraw/Development Skin/Foofaraw/Foofaraw Backgrounds/Green_Aurura.jpg =================================================================== (Binary files differ) Property changes on: trunk/skins/Foofaraw/Development Skin/Foofaraw/Foofaraw Backgrounds/Green_Aurura.jpg ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Deleted: trunk/skins/Foofaraw/Development Skin/Foofaraw/Foofaraw Backgrounds/Misted Night.png =================================================================== (Binary files differ) Added: trunk/skins/Foofaraw/Development Skin/Foofaraw/Foofaraw Backgrounds/Motion Blur.jpg =================================================================== (Binary files differ) Property changes on: trunk/skins/Foofaraw/Development Skin/Foofaraw/Foofaraw Backgrounds/Motion Blur.jpg ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/skins/Foofaraw/Development Skin/Foofaraw/Foofaraw Backgrounds/Silver Aurura.jpg =================================================================== (Binary files differ) Property changes on: trunk/skins/Foofaraw/Development Skin/Foofaraw/Foofaraw Backgrounds/Silver Aurura.jpg ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/skins/Foofaraw/Development Skin/Foofaraw/Foofaraw Backgrounds/Smoke.jpg =================================================================== (Binary files differ) Property changes on: trunk/skins/Foofaraw/Development Skin/Foofaraw/Foofaraw Backgrounds/Smoke.jpg ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/skins/Foofaraw/Development Skin/Foofaraw/Foofaraw Backgrounds/Smoke2.jpg =================================================================== (Binary files differ) Property changes on: trunk/skins/Foofaraw/Development Skin/Foofaraw/Foofaraw Backgrounds/Smoke2.jpg ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/skins/Foofaraw/Development Skin/Foofaraw/Foofaraw Backgrounds/Stonned.jpg =================================================================== (Binary files differ) Property changes on: trunk/skins/Foofaraw/Development Skin/Foofaraw/Foofaraw Backgrounds/Stonned.jpg ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Deleted: trunk/skins/Foofaraw/Development Skin/Foofaraw/Foofaraw Backgrounds/Underworld Green.png =================================================================== (Binary files differ) Added: trunk/skins/Foofaraw/Development Skin/Foofaraw/Foofaraw Backgrounds/Vent.jpg =================================================================== (Binary files differ) Property changes on: trunk/skins/Foofaraw/Development Skin/Foofaraw/Foofaraw Backgrounds/Vent.jpg ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Deleted: trunk/skins/Foofaraw/Development Skin/Foofaraw/Foofaraw Backgrounds/green blade.png =================================================================== (Binary files differ) Modified: trunk/skins/Foofaraw/Development Skin/Foofaraw/Media/background.png =================================================================== (Binary files differ) Modified: trunk/skins/Foofaraw/Development Skin/Foofaraw/myHome.xml =================================================================== --- trunk/skins/Foofaraw/Development Skin/Foofaraw/myHome.xml 2007-09-14 18:38:46 UTC (rev 923) +++ trunk/skins/Foofaraw/Development Skin/Foofaraw/myHome.xml 2007-09-14 19:56:26 UTC (rev 924) @@ -25,9 +25,9 @@ <type>image</type> <decription>mid_strip</decription> <id>1</id> - <posX>12</posX> + <posX>-12</posX> <posY>186</posY> - <width>1342</width> + <width>1390</width> <height>365</height> <texture>mid_strip.png</texture> <animation effect="zoom" start="100,100" end="100,115" center="12,186" time="1000" acceleration ="-1" >WindowOpen</animation> @@ -37,9 +37,9 @@ <type>image</type> <decription>bottom_strip</decription> <id>1</id> - <posX>12</posX> + <posX>-12</posX> <posY>547</posY> - <width>1342</width> + <width>1390</width> <height>18</height> <texture>bottom_strip.png</texture> <animation effect="slide" time="1000" start="0,0" end="0,50" acceleration="-1" >WindowOpen</animation> @@ -49,9 +49,9 @@ <type>image</type> <decription>top-strip</decription> <id>1</id> - <posX>12</posX> + <posX>-12</posX> <posY>155</posY> - <width>1342</width> + <width>1390</width> <height>36</height> <texture>top-strip.png</texture> @@ -395,8 +395,12 @@ <onright>2</onright> <action>18</action> <textureFocus>tv_green_border.png</textureFocus> + <visible>Player.HasMedia</visible> + <animation effect="fade" time="250">visiblechange</animation> + <animation effect="fade" time="250">WindowOpen</animation> <animation effect="fade" time="500">WindowClose</animation> + </control> </controls> </window> \ No newline at end of file Modified: trunk/skins/Foofaraw/Development Skin/Foofaraw/myHomePlugIns.xml =================================================================== --- trunk/skins/Foofaraw/Development Skin/Foofaraw/myHomePlugIns.xml 2007-09-14 18:38:46 UTC (rev 923) +++ trunk/skins/Foofaraw/Development Skin/Foofaraw/myHomePlugIns.xml 2007-09-14 19:56:26 UTC (rev 924) @@ -159,6 +159,9 @@ <onright>2</onright> <action>18</action> <textureFocus>tv_green_border.png</textureFocus> + <visible>Player.HasMedia</visible> + <animation effect="fade" time="250">visiblechange</animation> + <animation effect="fade" time="250">WindowOpen</animation> <animation effect="fade" time="500">WindowClose</animation> </control> Modified: trunk/skins/Foofaraw/Development Skin/Foofaraw/mymusicplaylist.xml =================================================================== --- trunk/skins/Foofaraw/Development Skin/Foofaraw/mymusicplaylist.xml 2007-09-14 18:38:46 UTC (rev 923) +++ trunk/skins/Foofaraw/Development Skin/Foofaraw/mymusicplaylist.xml 2007-09-14 19:56:26 UTC (rev 924) @@ -270,10 +270,9 @@ <onup>2</onup> <ondown>2</ondown> <posX>30</posX> - <posY>200 - </posY> + <posY>200</posY> <width>1190</width> - <height>475</height> + <height>320</height> <spinWidth>27</spinWidth> <spinHeight>27</spinHeight> <spinPosX>1270</spinPosX> @@ -415,12 +414,12 @@ <control> - <description>Save button</description> + <description>clear button</description> <type>button</type> <id>22</id> <animation effect="fade" time="400">WindowClose</animation> <animation effect="fade" time="400">WindowOpen</animation> - <posY>158</posY> + <posY>194</posY> <posX>430</posX> <label>192</label> <font>font14</font> @@ -435,7 +434,7 @@ <textcolor>white</textcolor> <visible>Control.HasFocus(21)|Control.HasFocus(22)</visible> <animation effect="fade" time="250">visiblechange</animation> - <animation effect="slide" end="0,36" time="250">visiblechange</animation> + <animation effect="slide" start="0,-36" end="0,0" time="250">visiblechange</animation> </control> <control> <description>Scrobble mode</description> @@ -443,7 +442,7 @@ <id>28</id> <animation effect="fade" time="400">WindowClose</animation> <animation effect="fade" time="400">WindowOpen</animation> - <posY>158</posY> + <posY>194</posY> <posX>639</posX> <label>33001</label> <font>font14</font> @@ -458,7 +457,7 @@ <textcolor>white</textcolor> <visible>Control.HasFocus(27)|Control.HasFocus(28)|Control.HasFocus(29)</visible> <animation effect="fade" time="250">visiblechange</animation> - <animation effect="slide" end="0,36" time="250">visiblechange</animation> + <animation effect="slide" start="0,-36" end="0,0" time="250">visiblechange</animation> </control> <control> @@ -467,7 +466,7 @@ <id>29</id> <animation effect="fade" time="400">WindowClose</animation> <animation effect="fade" time="400">WindowOpen</animation> - <posY>194</posY> + <posY>230</posY> <posX>639</posX> <label>Scrobbler: </label> <font>font14</font> @@ -482,7 +481,7 @@ <textcolor>white</textcolor> <visible>Control.HasFocus(27)|Control.HasFocus(29)|Control.HasFocus(28)</visible> <animation effect="fade" time="250">visiblechange</animation> - <animation effect="slide" end="0,36" time="250">visiblechange</animation> + <animation effect="slide" start="0,-36" end="0,0" time="250">visiblechange</animation> </control> </controls> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |