line arguments by typing 'vlc --help'.
It is also sometimes useful to display vlc's debug console. You can do so
by running 'vlc -v'.
-This feature is at the moment broken. To display vlc's debug messages,
-open the menu 'view', select 'messages'.
To store a debug log of the current vlc session, you can use
'vlc -vvv --stdout=debug.txt'.
If you want to play a DVD, run vlc and click on the Disc option in the
interface. You then have to type your drive letter in the 'Device name'
-box including the final '\' (eg. 'D:\' if your dvdrom drive is assigned the letter 'D').
+box (eg. 'D:' if your dvdrom drive is assigned the letter 'D').
( !Warning: you have to be in administrator mode (for now) on Win2k )
For example if you are cross-compiling from Debian, you can use something
along those lines:
- make distclean ; CC=i586-mingw32msvc-gcc CFLAGS=-I/usr/i586-mingw32msvc \
- RANLIB=i586-mingw32msvc-ranlib WINDRES=i586-mingw32msvc-windres \
+ make distclean ; CC=i586-mingw32msvc-gcc \
./configure --host=i586-mingw32msvc --target=i586-mingw32msvc \
--build=i386-linux --with-gtk-config-path=/usr/i586-mingw32msvc/bin \
--with-sdl-config-path=/usr/i586-mingw32msvc/bin
PATH=/usr/local/cross-tools/bin:/usr/local/cross-tools/i386-mingw32msvc/bin:$PATH \
make
+Building Win32 interface with bcc32 (Borland's compiler)
+========================================================
+
+[Steps 2 and 3 are temporary]
+
+1) Compile vlc as usual.
+include\defs.h should be generated.
+
+2) Edit include\defs.h, and add the following lines if necessary:
+#define WIN32
+#define MODULE_NAME win32
+#define MODULE_NAME_IS win32
+#define PLUGIN
+#define HAVE_DYNAMIC_PLUGINS
+
+3) Still in defs.h, comment the following line to avoid compilation warnings:
+#define PACKAGE "vlc"
+
+4) From the plugin\win32 directory, use Borland C++ command-line tools
+as follows:
+bpr2mak intfwin.bpr // Create a makefile from intfwin.bpr
+make -fintfwin // It's Borland's make utility !
+
+5) This should create a intfwin.so
+You can remove any other generated file.
+
Well done, now you're ready to use vlc!
* Collection of useful common types and macros definitions
*****************************************************************************
* Copyright (C) 1998, 1999, 2000 VideoLAN
- * $Id: common.h,v 1.88 2002/03/19 04:22:02 ipkiss Exp $
+ * $Id: common.h,v 1.89 2002/03/25 23:36:57 ipkiss Exp $
*
* Authors: Samuel Hocevar <sam@via.ecp.fr>
* Vincent Seguin <seguin@via.ecp.fr>
# if defined( __BORLANDC__ )
# undef off_t
-# define off_t __int64
+# define off_t unsigned __int64
# endif
# ifndef O_NONBLOCK
--- /dev/null
+/*****************************************************************************\r
+ * about.cpp: The "About" dialog box\r
+ *****************************************************************************\r
+ * Copyright (C) 2002 VideoLAN\r
+ *\r
+ * Authors: Olivier Teuliere <ipkiss@via.ecp.fr>\r
+ *\r
+ * This program is free software; you can redistribute it and/or modify\r
+ * it under the terms of the GNU General Public License as published by\r
+ * the Free Software Foundation; either version 2 of the License, or\r
+ * (at your option) any later version.\r
+ *\r
+ * This program is distributed in the hope that it will be useful,\r
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r
+ * GNU General Public License for more details.\r
+ *\r
+ * You should have received a copy of the GNU General Public License\r
+ * along with this program; if not, write to the Free Software\r
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA.\r
+ *****************************************************************************/\r
+\r
+#include <vcl.h>\r
+#pragma hdrstop\r
+\r
+#include <videolan/vlc.h>\r
+\r
+#include "interface.h"\r
+\r
+#include "about.h"\r
+#include "win32_common.h"\r
+\r
+//---------------------------------------------------------------------------\r
+//#pragma package(smart_init)\r
+#pragma resource "*.dfm"\r
+\r
+//---------------------------------------------------------------------------\r
+__fastcall TAboutDlg::TAboutDlg( TComponent* Owner )\r
+ : TForm( Owner )\r
+{\r
+}\r
+//---------------------------------------------------------------------------\r
+\r
+\r
--- /dev/null
+object AboutDlg: TAboutDlg\r
+ Left = 422\r
+ Top = 159\r
+ BorderStyle = bsDialog\r
+ Caption = 'About'\r
+ ClientHeight = 509\r
+ ClientWidth = 360\r
+ Color = clBtnFace\r
+ Font.Charset = DEFAULT_CHARSET\r
+ Font.Color = clWindowText\r
+ Font.Height = -11\r
+ Font.Name = 'MS Sans Serif'\r
+ Font.Style = []\r
+ Icon.Data = {\r
+ 0000010001003030000001001800A81C00001600000028000000300000006000\r
+ 00000100180000000000001B0000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000069375900000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000120E0A4011253E0F18000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000F0B\r
+ 084143CA08070016430F08040800000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 00000000000000003127291203174647E8464AE808010840E54039E6390B0C06\r
+ 0E0A1C0000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0070CD0079DD0079DD0070CD0000000000000000000C1008261D6E4647E54547\r
+ E64748E105040039E6393AE53939E63936D33308030100000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 000000000070CD0079DD0079DE007DE40088F9008CFF008CFF0088F9007CE302\r
+ 6EC70B09124641DC4444DF4546E34446E54847E003040040E6403AEA3A3EE33E\r
+ 3CE33C39E639080F010801050000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 00000000000000000070CD0079DD0077D90070CB0078D8007BDC007BDC007BDC\r
+ 007BDC007BDC007BDD007EE32E232D0804084553F14250F34252ED4449DB4844\r
+ DC4645E208010540E5401C78150D18053CE63C3AE63A39EA393CD83C241A2006\r
+ 0402000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000070CD0079DD007ADF007BDE007BDC0072\r
+ CC005188004877004876004876004876034976054A760B4D7731434221175B42\r
+ 54EC4253EE4252F60B05104250F44252EB4546DA08010539E6392BAA2B080105\r
+ 3CE63C39E7393AE63A39E93939E839081208181C080000000000000000000000\r
+ 000000000000000000000000000000000000000070CD0079DD0079DD007CE300\r
+ 88F90089F90075D2005188004877005188008CFF008CFF008CFF008CFF008CFF\r
+ 1092FF2099FF31A0FF1408294840DB4550E1464EEA0C060B0B05084654F64653\r
+ F64453EF080E033AE63A2BAA2B03030339E33939DF3939E639080F083DDB3D24\r
+ 9C24434B3B000000000000000000000000000000000000000000000000000000\r
+ 0063B60085F3008BFE0088F9007FE90088F90080E8005CA0008CFF008CFF008C\r
+ FF008CFF008CFF008CFF008CFF048DFF1594FF259BFF35A2FF0C04103F38C754\r
+ 5AF7505BF10C08100801084352F64652F44253F30813053AE63A39E639030403\r
+ 1C521826A1250812010807032454131558150000000000000000000000000000\r
+ 000000000000000000000000000000000000000070CD007CE30079DD00000000\r
+ 7CE30089FA008CFF0089FA008CFF008CFF008CFF008CFF008CFF008CFF098FFF\r
+ 1996FF2A9DFF3AA4FF0804103A2AA34E58F74E58F40B0B120803054652F34548\r
+ E64451F305130532CA323AE23A03070308070307040008040139E63939E43931\r
+ B42F5E1347000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000061B10000000079DD008CFF008CFF008CFF008CFF008C\r
+ FF008CFF008CFF008CFF008CFF0E91FF1E98FF2E9FFF3FA6FF040408382BAF4D\r
+ 5AEF555AF70F12250501050F04160804074250F3121A123AE93A39E239080803\r
+ 0D2F08010401268C2539E7393DE63D3FE23E0804100000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 79DD008CFF008CFF008CFF008CFF008CFF008CFF008CFF008CFF028CFF1293FF\r
+ 239AFF33A1FF43A8FF0802083A2AA3565BF7555AF71714330501050104000801\r
+ 07424FF12828203AEA3A39E639030703182F1008340801040139E7393DE83D39\r
+ E939080400000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000070CD0088F9008CFF008CFF008CFF008C\r
+ FF008CFF008CFF008CFF078EFF1795FF279CFF38A3FF48AAFF0808005151F155\r
+ 5AF30804030804000504050800082E358E0E0C1F1D192439E53940E640080400\r
+ 2AA12739E63908020708010539E8393BE93B0804080000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000007CE3008CFF008CFF008CFF058EFD1D96F92398F8269AFA31A0FC42A8FF\r
+ 4FAEFF5CB3FF65B7FF0C08084F5AF14E57F50B04080804043639A54647E81C13\r
+ 49363AA70804080F120835953439E7393EE63E39DF3939EA39081105308A2B3F\r
+ E73F080601000000000000000000000000000000000000000000000000000000\r
+ 000000000000000000000000000000000000047BDB1D96F92398F82498F83BA0\r
+ F399C1E1B1C9DDBCD4E7CBE0F3D9EDFFDCEEFFDEEFFFCDE8FF080808575BF750\r
+ 58F624125A5057F34845DF4A41E0150E30C55734E3723EC56E33A23D27050105\r
+ 39E43939E63939E6393CE63C14420C3BE03B192A090000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000004\r
+ 04042D88D399C1E1B1C9DDB1C9DCB7CBDBCFD3D7D5D5D6E2E2E3F0F0F1FEFEFF\r
+ FEFEFFFEFEFFF9FCFF0C08085D61F15B61EF555AF64A4FE13937BB0E0A12DE74\r
+ 39E1733CDE713CDF753AE67541C36B342C231F17141B3AE63A39E7393DE83D39\r
+ E93939DE39000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000001818186893B8C3CCD2D5D5D6D5D5D6D5D5\r
+ D6D6D6D6D6D6D6E3E3E3F1F1F1FFFFFFFFFFFFFFFFFFFFFFFF140C145C5EF668\r
+ 63F75555EA10061CC3673FDF713A0C1104080403080105080007070407D56F36\r
+ DE743EDE72401C200C29452939E63939E73939EA390000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000343434A2B4C2D5D5D6D6D6D6D6D6D6D6D6D6D5D5D6E2E2E3F0F0F1FEFEFF\r
+ FEFEFFFEFEFFFEFEFF20161C5C5EF6373EAE0E0413E2713DE1763CCD6A3C2A0D\r
+ 08A44B2CDE743EBD612F080401030403E1713CDE7239DE713AE1723C22201139\r
+ C13341E641000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000001B1B1B99AEBED5D5D6D5D5D6D5D5\r
+ D6CFD3D7B8CBDBBFD5E7CEE2F3DCEFFFDFF0FFE2F1FFE9F4FF10100C3639A46E\r
+ 4540DE7239DE713DE1713C07000784261CDE7639E3743E0812001F0407D86E36\r
+ E3753EE57540E57541DE763CDE733DD26637493C387E2F7B0000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 00001B1B1B99AEBFCED3D7B7CBDBB1C9DD99C1E140A2F339A2FA49AAFC59B2FF\r
+ 66B8FF74BEFF92CBFFD9ECFF0F0402C66531DE7139E2733D854B1E0A01084D11\r
+ 0DE3733EE1723CDF713ADF753AE1763C1D0A08290708E57140E1763CDE733DC7\r
+ 6B34080408000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000001818187FA5C399C1E13BA0F32498\r
+ F81D96F91091FD1C97FF2C9EFF3CA5FF4DACFF5DB3FF71BBFF8DC8FF9FD0FF08\r
+ 0400080406B95C2EDE7239070B070803014D1615DE723CDE7540E5714030090D\r
+ 0504003A120FE67541DE75390808044A0C290000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 00000707071778C81C92F3058EFD008CFF008CFF1092FF2099FF31A0FF41A7FF\r
+ 51AEFF62B5FF72BCFF7BBFFF7BBBF96E9FCD0808080806041D0508E571403E22\r
+ 0C200708080405070407070007080303B05F31DE723967301908010500000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 000000000000000000000000000000000000000000000000007CE3008CFF008C\r
+ FF048DFF1594FF259BFF35A2FF46A9FF56B0FF66B7FF77BEFF7BBFFF6DAAE300\r
+ 0000000000000000000000080401200C088D4024E17141E57140DF713ADE713E\r
+ DE76390801070000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 00000000000000000079DD008CFF008CFF098FFF1996FF2A9DFF3AA4FF4AABFF\r
+ 5BB2FF6BB9FF7BBFFF7BBFFF6AA5DD0000000000000000000000000000001D1A\r
+ 0C1A0F08110903441912E57140623B1E08020300000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000079DD008CFF008C\r
+ FF0E91FF1E98FF2E9FFF3FA6FF4FADFF5FB4FF70BBFF7BBFFF78BAF96299CD00\r
+ 00000000000000000000000000000000000000003914100000005A2411000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 00000000000000000070CD0088F9078EFD2C9CF940A3F850ACFA60B4FC70BCFF\r
+ 7DC2FF87C6FF7EC0FF6DAAE30000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000707071A85DD40A2\r
+ F3A0C3E1B7CBDDC6D8E7D4E5F3E2F1FFE5F2FFD9ECFF9FD0FF7AACDD05050500\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 00000000000000001818187FA5C3B8CBDBD0D4D7D5D5D6E2E2E3F0F0F1FEFEFF\r
+ FEFEFFFAFCFFE2EDF99FB7CD1C1C1C0000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000001B1B1B99AEBFD4D5\r
+ D6D6D6D6D6D6D6E3E3E3F1F1F1FFFFFFFFFFFFFEFEFFD1DAE33E3E3E00000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 00000000000000001D1D1D7B9BB4CACED1D6D6D6D5D5D6E2E2E3F0F0F1FEFEFF\r
+ FEFEFFFEFEFFC9D2DD2121210000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 000000000000000000000000000000000000000000000000000000343434A5B5\r
+ C2CFD3D7BFCEDBC9D9E7D7E6F3E6F3FFECF5FFF0F4F9AEBDCD23232300000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 000000000000000000000018181887A8C3A6C6E169B3F367B6FA77BEFC88C6FF\r
+ 9FD0FFB4CBE33939390000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 000000000000000000000000000000000000000000000000000000040404338C\r
+ D749A8F947A9FD54AFFF64B6FF74BDFF7EC0FF76ABDD05050500000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 00000000000000000000000000001F7DCD369FF948AAFF58B1FF69B8FF79BFFF\r
+ 78BAF96299CD0000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 003592E34DACFF5DB3FF6DBAFF7BBFFF6DAAE300000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 00000000000000000000000000000000003890DD51AEFF62B5FF72BCFF7BBFFF\r
+ 6AA5DD0000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 003B8FD84C9CE3589FDE69A9E375B6F46299CD00000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 00000000000000000000000000000000003376B00000000000000000005788B6\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 00000000006CC61A83DD247FCC00000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000006DC71A83DD2686D71F6EB1\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 000000000000000000000000000000000000000000000000000000000000FFFF\r
+ FFFFFFFF0000FFFFFFFFFFFF0000FFFFFE1FDFFF0000FFFFE0078FFF0000FFFE\r
+ 000007FF0000FFF0000001FF0000FF80000000FF0000FF000000003F0000FF00\r
+ 0000000F0000FE00000000070000F800000000070000F8000000000F0000FC00\r
+ 000000070000FE00000000070000FF80000000070000FFC0000000070000FFE0\r
+ 000000070000FFE0000000070000FFE0000000070000FFE0000000070000FFF0\r
+ 000000070000FFF0000000030000FFF0000000070000FFF00000000F0000FFF0\r
+ 0000003F0000FFF8000E00FF0000FFF8000F01FF0000FFF8000FD7FF0000FFF8\r
+ 001FFFFF0000FFFC001FFFFF0000FFFC001FFFFF0000FFFC003FFFFF0000FFFC\r
+ 003FFFFF0000FFFE003FFFFF0000FFFE007FFFFF0000FFFE007FFFFF0000FFFE\r
+ 007FFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF\r
+ 01FFFFFF0000FFFF01FFFFFF0000FFFF81FFFFFF0000FFFFC3FFFFFF0000FFFF\r
+ FFFFFFFF0000FFFFFFFFFFFF0000FFFFFFFFFFFF0000FFFFFFFFFFFF0000}\r
+ OldCreateOrder = False\r
+ PixelsPerInch = 96\r
+ TextHeight = 13\r
+ object Label1: TLabel\r
+ Left = 141\r
+ Top = 8\r
+ Width = 77\r
+ Height = 13\r
+ Caption = 'VideoLAN Client'\r
+ end\r
+ object Label2: TLabel\r
+ Left = 5\r
+ Top = 40\r
+ Width = 346\r
+ Height = 13\r
+ Caption = \r
+ '(C) Copyright 1996, 1997, 1998, 1999, 2000, 2001 - The VideoLAN ' +\r
+ 'Team'\r
+ end\r
+ object Label21: TLabel\r
+ Left = 52\r
+ Top = 424\r
+ Width = 255\r
+ Height = 39\r
+ Caption = \r
+ 'This is the VideoLAN Client, a DVD and MPEG player. It can play ' +\r
+ 'MPEG and MPEG 2 files from a file or from a network source.'\r
+ WordWrap = True\r
+ end\r
+ object GroupBoxAuthors: TGroupBox\r
+ Left = 6\r
+ Top = 64\r
+ Width = 345\r
+ Height = 353\r
+ Caption = 'Authors'\r
+ TabOrder = 0\r
+ object Label3: TLabel\r
+ Left = 24\r
+ Top = 14\r
+ Width = 171\r
+ Height = 13\r
+ Caption = 'Régis Duchesne <regis@via.ecp.fr>'\r
+ end\r
+ object Label4: TLabel\r
+ Left = 24\r
+ Top = 32\r
+ Width = 181\r
+ Height = 13\r
+ Caption = 'Michel Lespinasse <walken@zoy.org>'\r
+ end\r
+ object Label5: TLabel\r
+ Left = 24\r
+ Top = 51\r
+ Width = 159\r
+ Height = 13\r
+ Caption = 'Olivier Pomel <pomel@via.ecp.fr>'\r
+ end\r
+ object Label6: TLabel\r
+ Left = 24\r
+ Top = 69\r
+ Width = 133\r
+ Height = 13\r
+ Caption = 'Pierre Baillet <oct@zoy.org>'\r
+ end\r
+ object Label7: TLabel\r
+ Left = 24\r
+ Top = 87\r
+ Width = 207\r
+ Height = 13\r
+ Caption = 'Jean-Philippe Grimaldi <jeanphi@via.ecp.fr>'\r
+ end\r
+ object Label8: TLabel\r
+ Left = 24\r
+ Top = 106\r
+ Width = 149\r
+ Height = 13\r
+ Caption = 'Andres Krapf <dae@via.ecp.fr>'\r
+ end\r
+ object Label9: TLabel\r
+ Left = 24\r
+ Top = 124\r
+ Width = 194\r
+ Height = 13\r
+ Caption = 'Christophe Massiot <massiot@via.ecp.fr>'\r
+ end\r
+ object Label10: TLabel\r
+ Left = 24\r
+ Top = 142\r
+ Width = 173\r
+ Height = 13\r
+ Caption = 'Vincent Seguin <seguin@via.ecp.fr>'\r
+ end\r
+ object Label11: TLabel\r
+ Left = 24\r
+ Top = 161\r
+ Width = 165\r
+ Height = 13\r
+ Caption = 'Benoit Steiner <benny@via.ecp.fr>'\r
+ end\r
+ object Label12: TLabel\r
+ Left = 24\r
+ Top = 179\r
+ Width = 241\r
+ Height = 13\r
+ Caption = 'Arnaud de Bossoreille de Ribou <bozo@via.ecp.fr>'\r
+ end\r
+ object Label13: TLabel\r
+ Left = 24\r
+ Top = 198\r
+ Width = 186\r
+ Height = 13\r
+ Caption = 'Jean-Marc Dressler <polux@via.ecp.fr>'\r
+ end\r
+ object Label14: TLabel\r
+ Left = 24\r
+ Top = 216\r
+ Width = 171\r
+ Height = 13\r
+ Caption = 'Gaël Hendryckx <jimmy@via.ecp.fr>'\r
+ end\r
+ object Label15: TLabel\r
+ Left = 24\r
+ Top = 234\r
+ Width = 158\r
+ Height = 13\r
+ Caption = 'Samuel Hocevar <sam@zoy.org>'\r
+ end\r
+ object Label16: TLabel\r
+ Left = 24\r
+ Top = 253\r
+ Width = 178\r
+ Height = 13\r
+ Caption = 'Brieuc Jeunhomme <bbp@via.ecp.fr>'\r
+ end\r
+ object Label17: TLabel\r
+ Left = 24\r
+ Top = 271\r
+ Width = 164\r
+ Height = 13\r
+ Caption = 'Michel Kaempf <maxx@via.ecp.fr>'\r
+ end\r
+ object Label18: TLabel\r
+ Left = 24\r
+ Top = 289\r
+ Width = 160\r
+ Height = 13\r
+ Caption = 'Stéphane Borel <stef@via.ecp.fr>'\r
+ end\r
+ object Label19: TLabel\r
+ Left = 24\r
+ Top = 308\r
+ Width = 163\r
+ Height = 13\r
+ Caption = 'Renaud Dartus <reno@via.ecp.fr>'\r
+ end\r
+ object Label20: TLabel\r
+ Left = 24\r
+ Top = 326\r
+ Width = 149\r
+ Height = 13\r
+ Caption = 'Henri Fallon <henri@via.ecp.fr>'\r
+ end\r
+ end\r
+ object BitBtnOk: TBitBtn\r
+ Left = 7\r
+ Top = 471\r
+ Width = 345\r
+ Height = 25\r
+ Caption = 'OK'\r
+ Default = True\r
+ ModalResult = 1\r
+ TabOrder = 1\r
+ end\r
+end\r
--- /dev/null
+/*****************************************************************************\r
+ * about.h: The "About" dialog box\r
+ *****************************************************************************\r
+ * Copyright (C) 2002 VideoLAN\r
+ *\r
+ * Authors: Olivier Teuliere <ipkiss@via.ecp.fr>\r
+ *\r
+ * This program is free software; you can redistribute it and/or modify\r
+ * it under the terms of the GNU General Public License as published by\r
+ * the Free Software Foundation; either version 2 of the License, or\r
+ * (at your option) any later version.\r
+ *\r
+ * This program is distributed in the hope that it will be useful,\r
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r
+ * GNU General Public License for more details.\r
+ *\r
+ * You should have received a copy of the GNU General Public License\r
+ * along with this program; if not, write to the Free Software\r
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA.\r
+ *****************************************************************************/\r
+\r
+#ifndef aboutH\r
+#define aboutH\r
+//---------------------------------------------------------------------------\r
+#include <Classes.hpp>\r
+#include <Controls.hpp>\r
+#include <StdCtrls.hpp>\r
+#include <Forms.hpp>\r
+#include <Buttons.hpp>\r
+//---------------------------------------------------------------------------\r
+class TAboutDlg : public TForm\r
+{\r
+__published: // IDE-managed Components\r
+ TLabel *Label1;\r
+ TLabel *Label2;\r
+ TLabel *Label21;\r
+ TGroupBox *GroupBoxAuthors;\r
+ TLabel *Label3;\r
+ TLabel *Label4;\r
+ TLabel *Label5;\r
+ TLabel *Label6;\r
+ TLabel *Label7;\r
+ TLabel *Label8;\r
+ TLabel *Label9;\r
+ TLabel *Label10;\r
+ TLabel *Label11;\r
+ TLabel *Label12;\r
+ TLabel *Label13;\r
+ TLabel *Label14;\r
+ TLabel *Label15;\r
+ TLabel *Label16;\r
+ TLabel *Label17;\r
+ TLabel *Label18;\r
+ TLabel *Label19;\r
+ TLabel *Label20;\r
+ TBitBtn *BitBtnOk;\r
+private: // User declarations\r
+public: // User declarations\r
+ __fastcall TAboutDlg( TComponent* Owner );\r
+};\r
+//---------------------------------------------------------------------------\r
+#endif\r
--- /dev/null
+/*****************************************************************************\r
+ * control.cpp: functions to handle stream control buttons.\r
+ *****************************************************************************\r
+ * Copyright (C) 2002 VideoLAN\r
+ *\r
+ * Authors: Olivier Teuliere <ipkiss@via.ecp.fr>\r
+ *\r
+ * This program is free software; you can redistribute it and/or modify\r
+ * it under the terms of the GNU General Public License as published by\r
+ * the Free Software Foundation; either version 2 of the License, or\r
+ * (at your option) any later version.\r
+ *\r
+ * This program is distributed in the hope that it will be useful,\r
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r
+ * GNU General Public License for more details.\r
+ *\r
+ * You should have received a copy of the GNU General Public License\r
+ * along with this program; if not, write to the Free Software\r
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA.\r
+ *****************************************************************************/\r
+\r
+#include <vcl.h>\r
+\r
+#include <videolan/vlc.h>\r
+\r
+#include "stream_control.h"\r
+#include "input_ext-intf.h"\r
+\r
+#include "interface.h"\r
+#include "intf_playlist.h"\r
+\r
+#include "win32_common.h"\r
+\r
+extern struct intf_thread_s *p_intfGlobal;\r
+\r
+/****************************************************************************\r
+ * Control functions: this is where the functions are defined\r
+ ****************************************************************************\r
+ * These functions are used by toolbuttons callbacks\r
+ ****************************************************************************/\r
+bool ControlBack( TObject *Sender )\r
+{\r
+ /* FIXME: TODO */\r
+ \r
+ return false;\r
+}\r
+\r
+\r
+bool ControlStop( TObject *Sender )\r
+{\r
+ if( p_input_bank->pp_input[0] != NULL )\r
+ {\r
+ /* end playing item */\r
+ p_input_bank->pp_input[0]->b_eof = 1;\r
+\r
+ /* update playlist */\r
+ vlc_mutex_lock( &p_main->p_playlist->change_lock );\r
+\r
+ p_main->p_playlist->i_index--;\r
+ p_main->p_playlist->b_stopped = 1;\r
+\r
+ vlc_mutex_unlock( &p_main->p_playlist->change_lock );\r
+\r
+ }\r
+\r
+ return true;\r
+}\r
+\r
+\r
+bool ControlPlay( TObject *Sender )\r
+{\r
+ if( p_input_bank->pp_input[0] != NULL )\r
+ {\r
+ input_SetStatus( p_input_bank->pp_input[0], INPUT_STATUS_PLAY );\r
+ p_main->p_playlist->b_stopped = 0;\r
+ }\r
+ else\r
+ {\r
+ vlc_mutex_lock( &p_main->p_playlist->change_lock );\r
+\r
+ if( p_main->p_playlist->b_stopped )\r
+ {\r
+ if( p_main->p_playlist->i_size )\r
+ {\r
+ vlc_mutex_unlock( &p_main->p_playlist->change_lock );\r
+ intf_PlaylistJumpto( p_main->p_playlist,\r
+ p_main->p_playlist->i_index );\r
+ }\r
+ else\r
+ {\r
+ vlc_mutex_unlock( &p_main->p_playlist->change_lock );\r
+ p_intfGlobal->p_sys->p_window->MenuOpenFileClick( Sender );\r
+ }\r
+ }\r
+ else\r
+ {\r
+ vlc_mutex_unlock( &p_main->p_playlist->change_lock );\r
+ }\r
+\r
+ }\r
+\r
+ return true;\r
+}\r
+\r
+\r
+bool ControlPause( TObject *Sender )\r
+{\r
+ if( p_input_bank->pp_input[0] != NULL )\r
+ {\r
+ input_SetStatus( p_input_bank->pp_input[0], INPUT_STATUS_PAUSE );\r
+\r
+ vlc_mutex_lock( &p_main->p_playlist->change_lock );\r
+ p_main->p_playlist->b_stopped = 0;\r
+ vlc_mutex_unlock( &p_main->p_playlist->change_lock );\r
+ }\r
+\r
+ return true;\r
+}\r
+\r
+\r
+bool ControlSlow( TObject *Sender )\r
+{\r
+ if( p_input_bank->pp_input[0] != NULL )\r
+ {\r
+ input_SetStatus( p_input_bank->pp_input[0], INPUT_STATUS_SLOWER );\r
+\r
+ vlc_mutex_lock( &p_main->p_playlist->change_lock );\r
+ p_main->p_playlist->b_stopped = 0;\r
+ vlc_mutex_unlock( &p_main->p_playlist->change_lock );\r
+ }\r
+\r
+ return true;\r
+}\r
+\r
+\r
+bool ControlFast( TObject *Sender )\r
+{\r
+ if( p_input_bank->pp_input[0] != NULL )\r
+ {\r
+ input_SetStatus( p_input_bank->pp_input[0], INPUT_STATUS_FASTER );\r
+\r
+ vlc_mutex_lock( &p_main->p_playlist->change_lock );\r
+ p_main->p_playlist->b_stopped = 0;\r
+ vlc_mutex_unlock( &p_main->p_playlist->change_lock );\r
+ }\r
+\r
+ return true;\r
+}\r
+\r
--- /dev/null
+/*****************************************************************************\r
+ * control.h: prototypes for control functions.\r
+ *****************************************************************************\r
+ * Copyright (C) 2002 VideoLAN\r
+ *\r
+ * Authors: Olivier Teuliere <ipkiss@via.ecp.fr>\r
+ *\r
+ * This program is free software; you can redistribute it and/or modify\r
+ * it under the terms of the GNU General Public License as published by\r
+ * the Free Software Foundation; either version 2 of the License, or\r
+ * (at your option) any later version.\r
+ *\r
+ * This program is distributed in the hope that it will be useful,\r
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r
+ * GNU General Public License for more details.\r
+ *\r
+ * You should have received a copy of the GNU General Public License\r
+ * along with this program; if not, write to the Free Software\r
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA.\r
+ *****************************************************************************/\r
+\r
+bool ControlBack ( TObject *Sender );\r
+bool ControlStop ( TObject *Sender );\r
+bool ControlPlay ( TObject *Sender );\r
+bool ControlPause( TObject *Sender );\r
+bool ControlSlow ( TObject *Sender );\r
+bool ControlFast ( TObject *Sender );\r
+\r
--- /dev/null
+/*****************************************************************************\r
+ * disc.cpp: "Open disc" dialog box.\r
+ *****************************************************************************\r
+ * Copyright (C) 2002 VideoLAN\r
+ *\r
+ * Authors: Olivier Teuliere <ipkiss@via.ecp.fr>\r
+ *\r
+ * This program is free software; you can redistribute it and/or modify\r
+ * it under the terms of the GNU General Public License as published by\r
+ * the Free Software Foundation; either version 2 of the License, or\r
+ * (at your option) any later version.\r
+ * \r
+ * This program is distributed in the hope that it will be useful,\r
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r
+ * GNU General Public License for more details.\r
+ *\r
+ * You should have received a copy of the GNU General Public License\r
+ * along with this program; if not, write to the Free Software\r
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA.\r
+ *****************************************************************************/\r
+\r
+#include <vcl.h>\r
+#pragma hdrstop\r
+\r
+#include <videolan/vlc.h>\r
+\r
+#include "stream_control.h"\r
+#include "input_ext-intf.h"\r
+\r
+#include "interface.h"\r
+#include "intf_playlist.h"\r
+\r
+#include "win32_common.h"\r
+\r
+#include "disc.h"\r
+//---------------------------------------------------------------------------\r
+//#pragma package(smart_init)\r
+#pragma resource "*.dfm"\r
+\r
+extern struct intf_thread_s *p_intfGlobal;\r
+\r
+//---------------------------------------------------------------------------\r
+__fastcall TDiscDlg::TDiscDlg( TComponent* Owner )\r
+ : TForm( Owner )\r
+{\r
+ char *psz_dvd_device = config_GetPszVariable( "dvd_device" );\r
+ char *psz_vcd_device = config_GetPszVariable( "vcd_device" );\r
+\r
+ if( psz_dvd_device )\r
+ {\r
+ EditDevice->Text.sprintf( "%s", psz_dvd_device );\r
+ free( psz_dvd_device );\r
+ }\r
+\r
+ if( psz_vcd_device )\r
+ {\r
+ EditDevice->Text.sprintf( "%s", psz_vcd_device );\r
+ free( psz_vcd_device );\r
+ }\r
+}\r
+//---------------------------------------------------------------------------\r
+void __fastcall TDiscDlg::FormShow( TObject *Sender )\r
+{\r
+ p_intfGlobal->p_sys->p_window->MenuOpenDisc->Checked = true;\r
+ p_intfGlobal->p_sys->p_window->PopupOpenDisc->Checked = true;\r
+}\r
+//---------------------------------------------------------------------------\r
+void __fastcall TDiscDlg::FormHide( TObject *Sender )\r
+{\r
+ p_intfGlobal->p_sys->p_window->MenuOpenDisc->Checked = false;\r
+ p_intfGlobal->p_sys->p_window->PopupOpenDisc->Checked = false;\r
+}\r
+//---------------------------------------------------------------------------\r
+void __fastcall TDiscDlg::BitBtnCancelClick( TObject *Sender )\r
+{\r
+ Hide();\r
+}\r
+//---------------------------------------------------------------------------\r
+void __fastcall TDiscDlg::BitBtnOkClick( TObject *Sender )\r
+{\r
+ AnsiString Device, Source, Method, Title, Chapter;\r
+ int i_end = p_main->p_playlist->i_size;\r
+\r
+ Hide();\r
+\r
+ Device = EditDevice->Text;\r
+\r
+ /* Check which method was activated */\r
+ if( RadioGroupType->ItemIndex == 0 )\r
+ {\r
+ Method = "dvd";\r
+ }\r
+ else\r
+ {\r
+ Method = "vcd";\r
+ }\r
+ \r
+ /* Select title and chapter */\r
+ Title.sprintf( "%d", UpDownTitle->Position );\r
+ Chapter.sprintf( "%d", UpDownChapter->Position );\r
+\r
+ /* Build source name and add it to playlist */\r
+ Source = Method + ":" + Device + "@" + Title + "," + Chapter;\r
+ intf_PlaylistAdd( p_main->p_playlist, PLAYLIST_END, Source.c_str() );\r
+\r
+ /* update the display */\r
+ p_intfGlobal->p_sys->p_playlist->UpdateGrid( p_main->p_playlist );\r
+\r
+ /* stop current item, select added item */\r
+ if( p_input_bank->pp_input[0] != NULL )\r
+ {\r
+ p_input_bank->pp_input[0]->b_eof = 1;\r
+ }\r
+\r
+ intf_PlaylistJumpto( p_main->p_playlist, i_end - 1 );\r
+}\r
+//---------------------------------------------------------------------------\r
+\r
--- /dev/null
+object DiscDlg: TDiscDlg\r
+ Left = 503\r
+ Top = 366\r
+ BorderStyle = bsDialog\r
+ Caption = 'Open disc'\r
+ ClientHeight = 170\r
+ ClientWidth = 258\r
+ Color = clBtnFace\r
+ Font.Charset = DEFAULT_CHARSET\r
+ Font.Color = clWindowText\r
+ Font.Height = -11\r
+ Font.Name = 'MS Sans Serif'\r
+ Font.Style = []\r
+ Icon.Data = {\r
+ 0000010001003030000001001800A81C00001600000028000000300000006000\r
+ 00000100180000000000001B0000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000069375900000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000120E0A4011253E0F18000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000F0B\r
+ 084143CA08070016430F08040800000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 00000000000000003127291203174647E8464AE808010840E54039E6390B0C06\r
+ 0E0A1C0000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0070CD0079DD0079DD0070CD0000000000000000000C1008261D6E4647E54547\r
+ E64748E105040039E6393AE53939E63936D33308030100000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 000000000070CD0079DD0079DE007DE40088F9008CFF008CFF0088F9007CE302\r
+ 6EC70B09124641DC4444DF4546E34446E54847E003040040E6403AEA3A3EE33E\r
+ 3CE33C39E639080F010801050000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 00000000000000000070CD0079DD0077D90070CB0078D8007BDC007BDC007BDC\r
+ 007BDC007BDC007BDD007EE32E232D0804084553F14250F34252ED4449DB4844\r
+ DC4645E208010540E5401C78150D18053CE63C3AE63A39EA393CD83C241A2006\r
+ 0402000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000070CD0079DD007ADF007BDE007BDC0072\r
+ CC005188004877004876004876004876034976054A760B4D7731434221175B42\r
+ 54EC4253EE4252F60B05104250F44252EB4546DA08010539E6392BAA2B080105\r
+ 3CE63C39E7393AE63A39E93939E839081208181C080000000000000000000000\r
+ 000000000000000000000000000000000000000070CD0079DD0079DD007CE300\r
+ 88F90089F90075D2005188004877005188008CFF008CFF008CFF008CFF008CFF\r
+ 1092FF2099FF31A0FF1408294840DB4550E1464EEA0C060B0B05084654F64653\r
+ F64453EF080E033AE63A2BAA2B03030339E33939DF3939E639080F083DDB3D24\r
+ 9C24434B3B000000000000000000000000000000000000000000000000000000\r
+ 0063B60085F3008BFE0088F9007FE90088F90080E8005CA0008CFF008CFF008C\r
+ FF008CFF008CFF008CFF008CFF048DFF1594FF259BFF35A2FF0C04103F38C754\r
+ 5AF7505BF10C08100801084352F64652F44253F30813053AE63A39E639030403\r
+ 1C521826A1250812010807032454131558150000000000000000000000000000\r
+ 000000000000000000000000000000000000000070CD007CE30079DD00000000\r
+ 7CE30089FA008CFF0089FA008CFF008CFF008CFF008CFF008CFF008CFF098FFF\r
+ 1996FF2A9DFF3AA4FF0804103A2AA34E58F74E58F40B0B120803054652F34548\r
+ E64451F305130532CA323AE23A03070308070307040008040139E63939E43931\r
+ B42F5E1347000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000061B10000000079DD008CFF008CFF008CFF008CFF008C\r
+ FF008CFF008CFF008CFF008CFF0E91FF1E98FF2E9FFF3FA6FF040408382BAF4D\r
+ 5AEF555AF70F12250501050F04160804074250F3121A123AE93A39E239080803\r
+ 0D2F08010401268C2539E7393DE63D3FE23E0804100000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 79DD008CFF008CFF008CFF008CFF008CFF008CFF008CFF008CFF028CFF1293FF\r
+ 239AFF33A1FF43A8FF0802083A2AA3565BF7555AF71714330501050104000801\r
+ 07424FF12828203AEA3A39E639030703182F1008340801040139E7393DE83D39\r
+ E939080400000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000070CD0088F9008CFF008CFF008CFF008C\r
+ FF008CFF008CFF008CFF078EFF1795FF279CFF38A3FF48AAFF0808005151F155\r
+ 5AF30804030804000504050800082E358E0E0C1F1D192439E53940E640080400\r
+ 2AA12739E63908020708010539E8393BE93B0804080000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000007CE3008CFF008CFF008CFF058EFD1D96F92398F8269AFA31A0FC42A8FF\r
+ 4FAEFF5CB3FF65B7FF0C08084F5AF14E57F50B04080804043639A54647E81C13\r
+ 49363AA70804080F120835953439E7393EE63E39DF3939EA39081105308A2B3F\r
+ E73F080601000000000000000000000000000000000000000000000000000000\r
+ 000000000000000000000000000000000000047BDB1D96F92398F82498F83BA0\r
+ F399C1E1B1C9DDBCD4E7CBE0F3D9EDFFDCEEFFDEEFFFCDE8FF080808575BF750\r
+ 58F624125A5057F34845DF4A41E0150E30C55734E3723EC56E33A23D27050105\r
+ 39E43939E63939E6393CE63C14420C3BE03B192A090000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000004\r
+ 04042D88D399C1E1B1C9DDB1C9DCB7CBDBCFD3D7D5D5D6E2E2E3F0F0F1FEFEFF\r
+ FEFEFFFEFEFFF9FCFF0C08085D61F15B61EF555AF64A4FE13937BB0E0A12DE74\r
+ 39E1733CDE713CDF753AE67541C36B342C231F17141B3AE63A39E7393DE83D39\r
+ E93939DE39000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000001818186893B8C3CCD2D5D5D6D5D5D6D5D5\r
+ D6D6D6D6D6D6D6E3E3E3F1F1F1FFFFFFFFFFFFFFFFFFFFFFFF140C145C5EF668\r
+ 63F75555EA10061CC3673FDF713A0C1104080403080105080007070407D56F36\r
+ DE743EDE72401C200C29452939E63939E73939EA390000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000343434A2B4C2D5D5D6D6D6D6D6D6D6D6D6D6D5D5D6E2E2E3F0F0F1FEFEFF\r
+ FEFEFFFEFEFFFEFEFF20161C5C5EF6373EAE0E0413E2713DE1763CCD6A3C2A0D\r
+ 08A44B2CDE743EBD612F080401030403E1713CDE7239DE713AE1723C22201139\r
+ C13341E641000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000001B1B1B99AEBED5D5D6D5D5D6D5D5\r
+ D6CFD3D7B8CBDBBFD5E7CEE2F3DCEFFFDFF0FFE2F1FFE9F4FF10100C3639A46E\r
+ 4540DE7239DE713DE1713C07000784261CDE7639E3743E0812001F0407D86E36\r
+ E3753EE57540E57541DE763CDE733DD26637493C387E2F7B0000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 00001B1B1B99AEBFCED3D7B7CBDBB1C9DD99C1E140A2F339A2FA49AAFC59B2FF\r
+ 66B8FF74BEFF92CBFFD9ECFF0F0402C66531DE7139E2733D854B1E0A01084D11\r
+ 0DE3733EE1723CDF713ADF753AE1763C1D0A08290708E57140E1763CDE733DC7\r
+ 6B34080408000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000001818187FA5C399C1E13BA0F32498\r
+ F81D96F91091FD1C97FF2C9EFF3CA5FF4DACFF5DB3FF71BBFF8DC8FF9FD0FF08\r
+ 0400080406B95C2EDE7239070B070803014D1615DE723CDE7540E5714030090D\r
+ 0504003A120FE67541DE75390808044A0C290000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 00000707071778C81C92F3058EFD008CFF008CFF1092FF2099FF31A0FF41A7FF\r
+ 51AEFF62B5FF72BCFF7BBFFF7BBBF96E9FCD0808080806041D0508E571403E22\r
+ 0C200708080405070407070007080303B05F31DE723967301908010500000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 000000000000000000000000000000000000000000000000007CE3008CFF008C\r
+ FF048DFF1594FF259BFF35A2FF46A9FF56B0FF66B7FF77BEFF7BBFFF6DAAE300\r
+ 0000000000000000000000080401200C088D4024E17141E57140DF713ADE713E\r
+ DE76390801070000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 00000000000000000079DD008CFF008CFF098FFF1996FF2A9DFF3AA4FF4AABFF\r
+ 5BB2FF6BB9FF7BBFFF7BBFFF6AA5DD0000000000000000000000000000001D1A\r
+ 0C1A0F08110903441912E57140623B1E08020300000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000079DD008CFF008C\r
+ FF0E91FF1E98FF2E9FFF3FA6FF4FADFF5FB4FF70BBFF7BBFFF78BAF96299CD00\r
+ 00000000000000000000000000000000000000003914100000005A2411000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 00000000000000000070CD0088F9078EFD2C9CF940A3F850ACFA60B4FC70BCFF\r
+ 7DC2FF87C6FF7EC0FF6DAAE30000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000707071A85DD40A2\r
+ F3A0C3E1B7CBDDC6D8E7D4E5F3E2F1FFE5F2FFD9ECFF9FD0FF7AACDD05050500\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 00000000000000001818187FA5C3B8CBDBD0D4D7D5D5D6E2E2E3F0F0F1FEFEFF\r
+ FEFEFFFAFCFFE2EDF99FB7CD1C1C1C0000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000001B1B1B99AEBFD4D5\r
+ D6D6D6D6D6D6D6E3E3E3F1F1F1FFFFFFFFFFFFFEFEFFD1DAE33E3E3E00000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 00000000000000001D1D1D7B9BB4CACED1D6D6D6D5D5D6E2E2E3F0F0F1FEFEFF\r
+ FEFEFFFEFEFFC9D2DD2121210000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 000000000000000000000000000000000000000000000000000000343434A5B5\r
+ C2CFD3D7BFCEDBC9D9E7D7E6F3E6F3FFECF5FFF0F4F9AEBDCD23232300000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 000000000000000000000018181887A8C3A6C6E169B3F367B6FA77BEFC88C6FF\r
+ 9FD0FFB4CBE33939390000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 000000000000000000000000000000000000000000000000000000040404338C\r
+ D749A8F947A9FD54AFFF64B6FF74BDFF7EC0FF76ABDD05050500000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 00000000000000000000000000001F7DCD369FF948AAFF58B1FF69B8FF79BFFF\r
+ 78BAF96299CD0000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 003592E34DACFF5DB3FF6DBAFF7BBFFF6DAAE300000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 00000000000000000000000000000000003890DD51AEFF62B5FF72BCFF7BBFFF\r
+ 6AA5DD0000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 003B8FD84C9CE3589FDE69A9E375B6F46299CD00000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 00000000000000000000000000000000003376B00000000000000000005788B6\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 00000000006CC61A83DD247FCC00000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000006DC71A83DD2686D71F6EB1\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 000000000000000000000000000000000000000000000000000000000000FFFF\r
+ FFFFFFFF0000FFFFFFFFFFFF0000FFFFFE1FDFFF0000FFFFE0078FFF0000FFFE\r
+ 000007FF0000FFF0000001FF0000FF80000000FF0000FF000000003F0000FF00\r
+ 0000000F0000FE00000000070000F800000000070000F8000000000F0000FC00\r
+ 000000070000FE00000000070000FF80000000070000FFC0000000070000FFE0\r
+ 000000070000FFE0000000070000FFE0000000070000FFE0000000070000FFF0\r
+ 000000070000FFF0000000030000FFF0000000070000FFF00000000F0000FFF0\r
+ 0000003F0000FFF8000E00FF0000FFF8000F01FF0000FFF8000FD7FF0000FFF8\r
+ 001FFFFF0000FFFC001FFFFF0000FFFC001FFFFF0000FFFC003FFFFF0000FFFC\r
+ 003FFFFF0000FFFE003FFFFF0000FFFE007FFFFF0000FFFE007FFFFF0000FFFE\r
+ 007FFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF\r
+ 01FFFFFF0000FFFF01FFFFFF0000FFFF81FFFFFF0000FFFFC3FFFFFF0000FFFF\r
+ FFFFFFFF0000FFFFFFFFFFFF0000FFFFFFFFFFFF0000FFFFFFFFFFFF0000}\r
+ OldCreateOrder = False\r
+ OnHide = FormHide\r
+ OnShow = FormShow\r
+ PixelsPerInch = 96\r
+ TextHeight = 13\r
+ object LabelDevice: TLabel\r
+ Left = 8\r
+ Top = 105\r
+ Width = 63\r
+ Height = 13\r
+ Caption = 'Device name'\r
+ end\r
+ object GroupBoxPosition: TGroupBox\r
+ Left = 96\r
+ Top = 8\r
+ Width = 153\r
+ Height = 81\r
+ Caption = 'Starting position'\r
+ TabOrder = 1\r
+ object LabelTitle: TLabel\r
+ Left = 16\r
+ Top = 24\r
+ Width = 20\r
+ Height = 13\r
+ Caption = 'Title'\r
+ end\r
+ object LabelChapter: TLabel\r
+ Left = 16\r
+ Top = 52\r
+ Width = 37\r
+ Height = 13\r
+ Caption = 'Chapter'\r
+ end\r
+ object EditTitle: TEdit\r
+ Left = 64\r
+ Top = 20\r
+ Width = 57\r
+ Height = 21\r
+ TabOrder = 0\r
+ Text = '1'\r
+ end\r
+ object EditChapter: TEdit\r
+ Left = 64\r
+ Top = 48\r
+ Width = 57\r
+ Height = 21\r
+ TabOrder = 1\r
+ Text = '1'\r
+ end\r
+ object UpDownTitle: TUpDown\r
+ Left = 121\r
+ Top = 20\r
+ Width = 15\r
+ Height = 21\r
+ Associate = EditTitle\r
+ Min = 1\r
+ Max = 32767\r
+ Position = 1\r
+ TabOrder = 2\r
+ Thousands = False\r
+ Wrap = False\r
+ end\r
+ object UpDownChapter: TUpDown\r
+ Left = 121\r
+ Top = 48\r
+ Width = 15\r
+ Height = 21\r
+ Associate = EditChapter\r
+ Min = 1\r
+ Max = 32767\r
+ Position = 1\r
+ TabOrder = 3\r
+ Thousands = False\r
+ Wrap = False\r
+ end\r
+ end\r
+ object RadioGroupType: TRadioGroup\r
+ Left = 8\r
+ Top = 8\r
+ Width = 81\r
+ Height = 81\r
+ Caption = 'Disc type'\r
+ ItemIndex = 0\r
+ Items.Strings = (\r
+ 'DVD'\r
+ 'VCD')\r
+ TabOrder = 0\r
+ end\r
+ object BitBtnOk: TBitBtn\r
+ Left = 8\r
+ Top = 136\r
+ Width = 113\r
+ Height = 25\r
+ Caption = 'OK'\r
+ Default = True\r
+ ModalResult = 1\r
+ TabOrder = 3\r
+ OnClick = BitBtnOkClick\r
+ end\r
+ object BitBtnCancel: TBitBtn\r
+ Left = 136\r
+ Top = 136\r
+ Width = 113\r
+ Height = 25\r
+ Caption = 'Cancel'\r
+ ModalResult = 2\r
+ TabOrder = 4\r
+ OnClick = BitBtnCancelClick\r
+ end\r
+ object EditDevice: TEdit\r
+ Left = 88\r
+ Top = 101\r
+ Width = 161\r
+ Height = 21\r
+ TabOrder = 2\r
+ Text = 'F:\'\r
+ end\r
+end\r
--- /dev/null
+/*****************************************************************************\r
+ * disc.h: "Open disc" dialog box.\r
+ *****************************************************************************\r
+ * Copyright (C) 2002 VideoLAN\r
+ *\r
+ * Authors: Olivier Teuliere <ipkiss@via.ecp.fr>\r
+ *\r
+ * This program is free software; you can redistribute it and/or modify\r
+ * it under the terms of the GNU General Public License as published by\r
+ * the Free Software Foundation; either version 2 of the License, or\r
+ * (at your option) any later version.\r
+ * \r
+ * This program is distributed in the hope that it will be useful,\r
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r
+ * GNU General Public License for more details.\r
+ *\r
+ * You should have received a copy of the GNU General Public License\r
+ * along with this program; if not, write to the Free Software\r
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA.\r
+ *****************************************************************************/\r
+\r
+#ifndef discH\r
+#define discH\r
+//---------------------------------------------------------------------------\r
+#include <Classes.hpp>\r
+#include <Controls.hpp>\r
+#include <StdCtrls.hpp>\r
+#include <Forms.hpp>\r
+#include <Buttons.hpp>\r
+#include <ComCtrls.hpp>\r
+#include <ExtCtrls.hpp>\r
+//---------------------------------------------------------------------------\r
+class TDiscDlg : public TForm\r
+{\r
+__published: // IDE-managed Components\r
+ TLabel *LabelDevice;\r
+ TGroupBox *GroupBoxPosition;\r
+ TLabel *LabelTitle;\r
+ TLabel *LabelChapter;\r
+ TEdit *EditTitle;\r
+ TEdit *EditChapter;\r
+ TUpDown *UpDownTitle;\r
+ TUpDown *UpDownChapter;\r
+ TRadioGroup *RadioGroupType;\r
+ TBitBtn *BitBtnOk;\r
+ TBitBtn *BitBtnCancel;\r
+ TEdit *EditDevice;\r
+ void __fastcall FormShow(TObject *Sender);\r
+ void __fastcall FormHide(TObject *Sender);\r
+ void __fastcall BitBtnCancelClick(TObject *Sender);\r
+ void __fastcall BitBtnOkClick(TObject *Sender);\r
+private: // User declarations\r
+public: // User declarations\r
+ __fastcall TDiscDlg( TComponent* Owner );\r
+};\r
+//---------------------------------------------------------------------------\r
+#endif\r
--- /dev/null
+/*****************************************************************************\r
+ * intf_win32.cpp: Win32 interface plugin for vlc\r
+ *****************************************************************************\r
+ * Copyright (C) 2002 VideoLAN\r
+ *\r
+ * Authors: Olivier Teulière <ipkiss@via.ecp.fr>\r
+ *\r
+ * This program is free software; you can redistribute it and/or modify\r
+ * it under the terms of the GNU General Public License as published by\r
+ * the Free Software Foundation; either version 2 of the License, or\r
+ * (at your option) any later version.\r
+ *\r
+ * This program is distributed in the hope that it will be useful,\r
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r
+ * GNU General Public License for more details.\r
+ *\r
+ * You should have received a copy of the GNU General Public License\r
+ * along with this program; if not, write to the Free Software\r
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA.\r
+ *****************************************************************************/\r
+\r
+/*****************************************************************************\r
+ * Preamble\r
+ *****************************************************************************/\r
+#include <vcl.h>\r
+#include <stdlib.h> /* malloc(), free() */\r
+#include <errno.h> /* ENOMEM */\r
+#include <string.h> /* strerror() */\r
+\r
+#include <videolan/vlc.h>\r
+\r
+#include "stream_control.h"\r
+#include "input_ext-intf.h"\r
+\r
+#include "interface.h"\r
+\r
+#include "mainframe.h"\r
+#include "menu.h"\r
+#include "win32_common.h"\r
+\r
+struct intf_thread_s *p_intfGlobal;\r
+\r
+/*****************************************************************************\r
+ * Local prototypes.\r
+ *****************************************************************************/\r
+static int intf_Open ( intf_thread_t *p_intf );\r
+static void intf_Close ( intf_thread_t *p_intf );\r
+static void intf_Run ( intf_thread_t *p_intf );\r
+\r
+int Win32Manage( void *p_data );\r
+\r
+/*****************************************************************************\r
+ * Functions exported as capabilities. They are declared as static so that\r
+ * we don't pollute the namespace too much.\r
+ *****************************************************************************/\r
+void _M( intf_getfunctions )( function_list_t * p_function_list )\r
+{\r
+ p_function_list->functions.intf.pf_open = intf_Open;\r
+ p_function_list->functions.intf.pf_close = intf_Close;\r
+ p_function_list->functions.intf.pf_run = intf_Run;\r
+}\r
+\r
+/*****************************************************************************\r
+ * intf_Open: initialize interface\r
+ *****************************************************************************/\r
+static int intf_Open( intf_thread_t *p_intf )\r
+{\r
+ /* Allocate instance and initialize some members */\r
+ p_intf->p_sys = (intf_sys_s *) malloc( sizeof( intf_sys_t ) );\r
+ if( p_intf->p_sys == NULL )\r
+ {\r
+ intf_ErrMsg( "intf error: %s", strerror(ENOMEM) );\r
+ return( 1 );\r
+ };\r
+\r
+ p_intfGlobal = p_intf;\r
+\r
+ p_intf->p_sys->p_sub = intf_MsgSub();\r
+\r
+ /* Initialize Win32 thread */\r
+ p_intf->p_sys->b_playing = 0;\r
+ p_intf->p_sys->b_popup_changed = 0;\r
+ p_intf->p_sys->i_playing = -1;\r
+ p_intf->p_sys->b_slider_free = 1;\r
+\r
+ return( 0 );\r
+}\r
+\r
+/*****************************************************************************\r
+ * intf_Close: destroy interface\r
+ *****************************************************************************/\r
+static void intf_Close( intf_thread_t *p_intf )\r
+{\r
+ intf_MsgUnsub( p_intf->p_sys->p_sub );\r
+\r
+ /* Destroy structure */\r
+ free( p_intf->p_sys );\r
+}\r
+\r
+/*****************************************************************************\r
+ * intf_Run: main loop\r
+ *****************************************************************************/\r
+static void intf_Run( intf_thread_t *p_intf )\r
+{\r
+ p_intf->p_sys->p_window = new TMainFrameDlg( NULL );\r
+ p_intf->p_sys->p_playlist = new TPlaylistDlg( NULL );\r
+ p_intf->p_sys->p_messages = new TMessagesDlg( NULL );\r
+ p_intf->p_sys->p_window->ShowModal();\r
+ if( p_intf->p_sys->p_disc ) delete p_intf->p_sys->p_disc;\r
+ if( p_intf->p_sys->p_network ) delete p_intf->p_sys->p_network;\r
+ if( p_intf->p_sys->p_preferences ) delete p_intf->p_sys->p_preferences;\r
+ delete p_intf->p_sys->p_messages;\r
+ delete p_intf->p_sys->p_playlist;\r
+}\r
+\r
+/*****************************************************************************\r
+ * Win32Manage: manage main thread messages\r
+ *****************************************************************************\r
+ * In this function, called approx. 10 times a second, we check what the\r
+ * main program wanted to tell us.\r
+ *****************************************************************************/\r
+int Win32Manage( intf_thread_t *p_intf )\r
+{\r
+ vlc_mutex_lock( &p_intf->change_lock );\r
+\r
+ /* If the "display popup" flag has changed */\r
+ if( p_intf->b_menu_change )\r
+ {\r
+ /* FIXME: It would be nice to close the popup when the user left-clicks\r
+ elsewhere, or to actualize the position when he right-clicks again,\r
+ but i couldn't find a way to close it :-( */\r
+ TPoint MousePos = Mouse->CursorPos;\r
+ p_intf->p_sys->p_window->PopupMenuMain->Popup( MousePos.x, MousePos.y );\r
+ p_intf->b_menu_change = 0;\r
+ }\r
+\r
+ /* Update the log window */\r
+ p_intf->p_sys->p_messages->UpdateLog();\r
+\r
+ /* Update the playlist */\r
+ p_intf->p_sys->p_playlist->Manage( p_intf );\r
+\r
+ if( p_input_bank->pp_input[0] != NULL )\r
+ {\r
+ vlc_mutex_lock( &p_input_bank->pp_input[0]->stream.stream_lock );\r
+\r
+ if( !p_input_bank->pp_input[0]->b_die )\r
+ {\r
+ /* New input or stream map change */\r
+ if( p_input_bank->pp_input[0]->stream.b_changed )\r
+ {\r
+ p_intf->p_sys->p_window->ModeManage();\r
+ SetupMenus( p_intf );\r
+ p_intf->p_sys->b_playing = 1;\r
+ }\r
+\r
+ /* Manage the slider */\r
+ if( p_input_bank->pp_input[0]->stream.b_seekable &&\r
+ p_intf->p_sys->b_playing )\r
+ {\r
+ TTrackBar * TrackBar = p_intf->p_sys->p_window->TrackBar;\r
+ off_t NewValue = TrackBar->Position;\r
+\r
+#define p_area p_input_bank->pp_input[0]->stream.p_selected_area\r
+ /* If the user hasn't touched the slider since the last time,\r
+ * then the input can safely change it */\r
+ if( NewValue == p_intf->p_sys->OldValue )\r
+ {\r
+ /* Update the value */\r
+ TrackBar->Position = p_intf->p_sys->OldValue =\r
+ ( (off_t)SLIDER_MAX_VALUE * p_area->i_tell ) /\r
+ p_area->i_size;\r
+ }\r
+ /* Otherwise, send message to the input if the user has\r
+ * finished dragging the slider */\r
+ else if( p_intf->p_sys->b_slider_free )\r
+ {\r
+ off_t i_seek = ( NewValue * p_area->i_size ) /\r
+ (off_t)SLIDER_MAX_VALUE;\r
+\r
+ /* release the lock to be able to seek */\r
+ vlc_mutex_unlock( &p_input_bank->pp_input[0]->stream.stream_lock );\r
+ input_Seek( p_input_bank->pp_input[0], i_seek );\r
+ vlc_mutex_lock( &p_input_bank->pp_input[0]->stream.stream_lock );\r
+\r
+ /* Update the old value */\r
+ p_intf->p_sys->OldValue = NewValue;\r
+ }\r
+\r
+ /* Update the display */\r
+// TrackBar->Invalidate();\r
+ \r
+# undef p_area\r
+ }\r
+\r
+ if( p_intf->p_sys->i_part !=\r
+ p_input_bank->pp_input[0]->stream.p_selected_area->i_part )\r
+ {\r
+// p_intf->p_sys->b_chapter_update = 1;\r
+ SetupMenus( p_intf );\r
+ }\r
+ }\r
+\r
+ vlc_mutex_unlock( &p_input_bank->pp_input[0]->stream.stream_lock );\r
+ }\r
+ else if( p_intf->p_sys->b_playing && !p_intf->b_die )\r
+ {\r
+ p_intf->p_sys->p_window->ModeManage();\r
+ p_intf->p_sys->b_playing = 0;\r
+ }\r
+\r
+ /* Manage core vlc functions through the callback */\r
+ p_intf->pf_manage( p_intf );\r
+\r
+ if( p_intf->b_die )\r
+ {\r
+ vlc_mutex_unlock( &p_intf->change_lock );\r
+\r
+ /* Prepare to die, young Skywalker */\r
+ p_intf->p_sys->p_window->ModalResult = mrOk;\r
+ delete p_intf->p_sys->p_window;\r
+\r
+ /* Just in case */\r
+ return( FALSE );\r
+ }\r
+ \r
+ vlc_mutex_unlock( &p_intf->change_lock );\r
+\r
+ return( TRUE );\r
+}\r
+\r
--- /dev/null
+USEUNIT("win32.cpp");\r
+USEUNIT("intf_win32.cpp");\r
+USEFORM("mainframe.cpp", MainFrameDlg);\r
+USEFORM("network.cpp", NetworkDlg);\r
+USEFORM("playlist.cpp", PlaylistDlg);\r
+USEFORM("preferences.cpp", PreferencesDlg);\r
+USEFORM("about.cpp", AboutDlg);\r
+USEFORM("disc.cpp", DiscDlg);\r
+USEUNIT("control.cpp");\r
+USE("win32_common.h", File);\r
+USEUNIT("menu.cpp");\r
+USEFORM("messages.cpp", MessagesDlg);\r
+//---------------------------------------------------------------------------\r
+This file is used by the project manager only and should be treated like the project file\r
+
+\rDllEntryPoint
\ No newline at end of file
--- /dev/null
+<?xml version='1.0' encoding='utf-8' ?>\r
+<!-- C++Builder XML Project -->\r
+<PROJECT>\r
+ <MACROS>\r
+ <VERSION value="BCB.05.03"/>\r
+ <PROJECT value="intfwin.so"/>\r
+ <OBJFILES value="win32.obj intf_win32.obj mainframe.obj network.obj playlist.obj \r
+ preferences.obj about.obj disc.obj control.obj menu.obj messages.obj"/>\r
+ <RESFILES value=""/>\r
+ <DEFFILE value=""/>\r
+ <RESDEPEN value="$(RESFILES) mainframe.dfm network.dfm playlist.dfm preferences.dfm \r
+ about.dfm disc.dfm messages.dfm"/>\r
+ <LIBFILES value=""/>\r
+ <LIBRARIES value="VCL50.lib"/>\r
+ <SPARELIBS value="VCL50.lib"/>\r
+ <PACKAGES value="VCL50.bpi VCLX50.bpi bcbsmp50.bpi QRPT50.bpi VCLDB50.bpi VCLBDE50.bpi \r
+ ibsmp50.bpi VCLDBX50.bpi TEEUI50.bpi TEEDB50.bpi TEE50.bpi TEEQR50.bpi \r
+ VCLIB50.bpi bcbie50.bpi VCLIE50.bpi INETDB50.bpi INET50.bpi NMFAST50.bpi"/>\r
+ <PATHCPP value=".;"/>\r
+ <PATHPAS value=".;"/>\r
+ <PATHRC value=".;"/>\r
+ <PATHASM value=".;"/>\r
+ <DEBUGLIBPATH value="$(BCB)\lib\debug"/>\r
+ <RELEASELIBPATH value="$(BCB)\lib\release"/>\r
+ <LINKER value="tlink32"/>\r
+ <USERDEFINES value="_DEBUG"/>\r
+ <SYSDEFINES value="NO_STRICT"/>\r
+ <MAINSOURCE value="intfwin.bpf"/>\r
+ <INCLUDEPATH value="..\..\win32;$(BCB)\include;$(BCB)\include\vcl;..\..\include;..\..\src\misc"/>\r
+ <LIBPATH value="..\..\win32;$(BCB)\lib\obj;$(BCB)\lib"/>\r
+ <WARNINGS value="-w-par"/>\r
+ </MACROS>\r
+ <OPTIONS>\r
+ <CFLAG1 value="-WD -Od -H=$(BCB)\lib\vcl50.csm -Hc -Vx -Ve -X- -r- -a8 -b- -k -y -v -vi- \r
+ -tWD -tWM -c"/>\r
+ <PFLAGS value="-$Y+ -$W -$O- -v -JPHNE -M"/>\r
+ <RFLAGS value=""/>\r
+ <AFLAGS value="/mx /w2 /zi"/>\r
+ <LFLAGS value="-D"" -aa -Tpd -x -Gn -Gi -v"/>\r
+ </OPTIONS>\r
+ <LINKER>\r
+ <ALLOBJ value="c0d32.obj sysinit.obj $(OBJFILES)"/>\r
+ <ALLRES value="$(RESFILES)"/>\r
+ <ALLLIB value="$(LIBFILES) $(LIBRARIES) import32.lib cp32mt.lib"/>\r
+ </LINKER>\r
+ <IDEOPTIONS>\r
+[Version Info]\r
+IncludeVerInfo=0\r
+AutoIncBuild=0\r
+MajorVer=1\r
+MinorVer=0\r
+Release=0\r
+Build=0\r
+Debug=0\r
+PreRelease=0\r
+Special=0\r
+Private=0\r
+DLL=0\r
+Locale=1036\r
+CodePage=1252\r
+\r
+[Version Info Keys]\r
+CompanyName=\r
+FileDescription=\r
+FileVersion=1.0.0.0\r
+InternalName=\r
+LegalCopyright=\r
+LegalTrademarks=\r
+OriginalFilename=\r
+ProductName=\r
+ProductVersion=1.0.0.0\r
+Comments=\r
+\r
+[HistoryLists\hlIncludePath]\r
+Count1=\r
+Item0=..\win32;..\..\win32;$(BCB)\include;$(BCB)\include\vcl;..\..\include;..\..\src\misc\r
+\r
+[HistoryLists\hlLibraryPath]\r
+Count=1\r
+Item0=..\win32;..\..\win32;$(BCB)\lib\obj;$(BCB)\lib\r
+\r
+[HistoryLists\hlDebugSourcePath]\r
+Count=1\r
+Item0=$(BCB)\source\vcl\r
+\r
+[HistoryLists\hlConditionals]\r
+Count=1\r
+Item0=_DEBUG\r
+\r
+[Debugging]\r
+DebugSourceDirs=$(BCB)\source\vcl\r
+\r
+[Parameters]\r
+RunParams=\r
+HostApplication=\r
+RemoteHost=\r
+RemotePath=\r
+RemoteDebug=0\r
+\r
+[Compiler]\r
+ShowInfoMsgs=0\r
+LinkDebugVcl=0\r
+LinkCGLIB=0\r
+\r
+[Language]\r
+ActiveLang=\r
+ProjectLang=\r
+RootDir=\r
+ </IDEOPTIONS>\r
+</PROJECT>\r
--- /dev/null
+/*****************************************************************************\r
+ * mainframe.cpp: Win32 interface plugin for vlc\r
+ *****************************************************************************\r
+ * Copyright (C) 2002 VideoLAN\r
+ *\r
+ * Authors: Olivier Teulière <ipkiss@via.ecp.fr>\r
+ *\r
+ * This program is free software; you can redistribute it and/or modify\r
+ * it under the terms of the GNU General Public License as published by\r
+ * the Free Software Foundation; either version 2 of the License, or\r
+ * (at your option) any later version.\r
+ *\r
+ * This program is distributed in the hope that it will be useful,\r
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r
+ * GNU General Public License for more details.\r
+ *\r
+ * You should have received a copy of the GNU General Public License\r
+ * along with this program; if not, write to the Free Software\r
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA.\r
+ *****************************************************************************/\r
+\r
+#include <vcl.h>\r
+#pragma hdrstop\r
+\r
+#include <videolan/vlc.h>\r
+\r
+#include "stream_control.h"\r
+#include "input_ext-intf.h"\r
+\r
+#include "video.h"\r
+#include "video_output.h"\r
+\r
+#include "interface.h"\r
+#include "intf_playlist.h"\r
+#include "intf_eject.h"\r
+\r
+#include "mainframe.h"\r
+#include "menu.h"\r
+#include "control.h"\r
+#include "disc.h"\r
+#include "network.h"\r
+#include "about.h"\r
+#include "preferences.h"\r
+#include "messages.h"\r
+#include "playlist.h"\r
+#include "win32_common.h"\r
+\r
+#include "netutils.h"\r
+\r
+//---------------------------------------------------------------------------\r
+//#pragma package(smart_init)\r
+#pragma resource "*.dfm"\r
+\r
+extern struct intf_thread_s *p_intfGlobal;\r
+extern int Win32Manage( intf_thread_t *p_intf );\r
+\r
+//---------------------------------------------------------------------------\r
+__fastcall TMainFrameDlg::TMainFrameDlg( TComponent* Owner )\r
+ : TForm( Owner )\r
+{\r
+ Application->ShowHint = true;\r
+ Application->OnHint = DisplayHint;\r
+\r
+ TimerManage->Interval = INTF_IDLE_SLEEP / 1000;\r
+\r
+ TrackBar->Max = SLIDER_MAX_VALUE;\r
+\r
+ /* default height */\r
+ ClientHeight = 65;\r
+}\r
+//---------------------------------------------------------------------------\r
+\r
+\r
+/*****************************************************************************\r
+ * Event handlers\r
+ ****************************************************************************/\r
+void __fastcall TMainFrameDlg::TimerManageTimer( TObject *Sender )\r
+{\r
+ Win32Manage( p_intfGlobal );\r
+}\r
+//---------------------------------------------------------------------------\r
+void __fastcall TMainFrameDlg::DisplayHint( TObject *Sender )\r
+{\r
+ StatusBar->SimpleText = GetLongHint( Application->Hint );\r
+}\r
+//---------------------------------------------------------------------------\r
+void __fastcall TMainFrameDlg::TrackBarChange( TObject *Sender )\r
+{\r
+ /* This function displays the current date related to the position in\r
+ * the stream. It is called whenever the slider changes its value.\r
+ * The lock has to be taken before the function is called */\r
+\r
+// vlc_mutex_lock( &p_input_bank->pp_input[0]->stream.stream_lock );\r
+\r
+ if( p_input_bank->pp_input[0] != NULL )\r
+ {\r
+#define p_area p_input_bank->pp_input[0]->stream.p_selected_area\r
+ char psz_time[ OFFSETTOTIME_MAX_SIZE ];\r
+ off_t Value = TrackBar->Position;\r
+\r
+ GroupBoxSlider->Caption =\r
+ input_OffsetToTime( p_input_bank->pp_input[0], psz_time,\r
+ ( p_area->i_size * Value ) / (off_t)SLIDER_MAX_VALUE );\r
+#undef p_area\r
+ }\r
+\r
+// vlc_mutex_unlock( &p_input_bank->pp_input[0]->stream.stream_lock );\r
+}\r
+//---------------------------------------------------------------------------\r
+void __fastcall TMainFrameDlg::FormClose( TObject *Sender,\r
+ TCloseAction &Action )\r
+{\r
+ intf_thread_t *p_intf = p_intfGlobal;\r
+\r
+ vlc_mutex_lock( &p_intf->change_lock );\r
+ p_intf->b_die = 1;\r
+ vlc_mutex_unlock( &p_intf->change_lock );\r
+\r
+ /* we don't destroy the form immediatly */\r
+ Action = caHide;\r
+}\r
+//---------------------------------------------------------------------------\r
+\r
+\r
+/*****************************************************************************\r
+ * Menu callbacks\r
+ ****************************************************************************/\r
+void __fastcall TMainFrameDlg::MenuOpenFileClick( TObject *Sender )\r
+{\r
+ int i_end = p_main->p_playlist->i_size;\r
+ AnsiString FileName;\r
+ if( OpenDialog1->Execute() )\r
+ {\r
+ /* add the new file to the interface playlist */\r
+ FileName = OpenDialog1->FileName;\r
+ intf_PlaylistAdd( p_main->p_playlist, PLAYLIST_END,\r
+ (char*)FileName.c_str() );\r
+\r
+ /* update the plugin display */\r
+ p_intfGlobal->p_sys->p_playlist->UpdateGrid( p_main->p_playlist );\r
+\r
+ /* end current item, select added item */\r
+ if( p_input_bank->pp_input[0] != NULL )\r
+ {\r
+ p_input_bank->pp_input[0]->b_eof = 1;\r
+ }\r
+\r
+ intf_PlaylistJumpto( p_main->p_playlist, i_end - 1 );\r
+ };\r
+}\r
+//---------------------------------------------------------------------------\r
+void __fastcall TMainFrameDlg::MenuOpenDiscClick( TObject *Sender )\r
+{\r
+ TDiscDlg *p_disc = p_intfGlobal->p_sys->p_disc;\r
+ if( p_disc == NULL )\r
+ {\r
+ p_disc = new TDiscDlg( this );\r
+ p_intfGlobal->p_sys->p_disc = p_disc;\r
+ }\r
+ p_disc->Show();\r
+}\r
+//---------------------------------------------------------------------------\r
+void __fastcall TMainFrameDlg::MenuNetworkStreamClick( TObject *Sender )\r
+{\r
+ TNetworkDlg *p_network = p_intfGlobal->p_sys->p_network;\r
+ if( p_network == NULL )\r
+ {\r
+ p_network = new TNetworkDlg( this );\r
+ p_intfGlobal->p_sys->p_network = p_network;\r
+ }\r
+ p_network->Show();\r
+}\r
+//---------------------------------------------------------------------------\r
+void __fastcall TMainFrameDlg::MenuExitClick( TObject *Sender )\r
+{\r
+ Close();\r
+}\r
+//---------------------------------------------------------------------------\r
+void __fastcall TMainFrameDlg::MenuFullscreenClick( TObject *Sender )\r
+{\r
+ if( p_vout_bank->i_count )\r
+ {\r
+ vlc_mutex_lock( &p_vout_bank->pp_vout[0]->change_lock );\r
+\r
+ p_vout_bank->pp_vout[0]->i_changes |= VOUT_FULLSCREEN_CHANGE;\r
+\r
+ vlc_mutex_unlock( &p_vout_bank->pp_vout[0]->change_lock );\r
+ }\r
+}\r
+//---------------------------------------------------------------------------\r
+void __fastcall TMainFrameDlg::MenuPlaylistClick( TObject *Sender )\r
+{\r
+ TPlaylistDlg *p_playlist = p_intfGlobal->p_sys->p_playlist;\r
+ if( p_playlist->Visible )\r
+ {\r
+ p_playlist->Hide();\r
+ }\r
+ else\r
+ {\r
+ p_playlist->UpdateGrid( p_main->p_playlist );\r
+ p_playlist->Show();\r
+ }\r
+}\r
+//---------------------------------------------------------------------------\r
+void __fastcall TMainFrameDlg::MenuMessagesClick( TObject *Sender )\r
+{\r
+ p_intfGlobal->p_sys->p_messages->Show();\r
+}\r
+//---------------------------------------------------------------------------\r
+void __fastcall TMainFrameDlg::MenuPreferencesClick( TObject *Sender )\r
+{\r
+ TPreferencesDlg *p_preferences = p_intfGlobal->p_sys->p_preferences;\r
+ if( p_preferences == NULL )\r
+ {\r
+ p_preferences = new TPreferencesDlg( this );\r
+ p_preferences->CreateConfigDialog( "main" );\r
+ p_intfGlobal->p_sys->p_preferences = p_preferences;\r
+ }\r
+ else\r
+ {\r
+ p_preferences->Show();\r
+ }\r
+}\r
+//---------------------------------------------------------------------------\r
+void __fastcall TMainFrameDlg::MenuAboutClick( TObject *Sender )\r
+{\r
+ p_intfGlobal->p_sys->p_about = new TAboutDlg( this );\r
+ p_intfGlobal->p_sys->p_about->ShowModal();\r
+ delete p_intfGlobal->p_sys->p_about;\r
+}\r
+//---------------------------------------------------------------------------\r
+\r
+\r
+/*****************************************************************************\r
+ * Toolbar callbacks\r
+ ****************************************************************************/\r
+void __fastcall TMainFrameDlg::ToolButtonFileClick( TObject *Sender )\r
+{\r
+ MenuOpenFileClick( Sender );\r
+}\r
+//---------------------------------------------------------------------------\r
+void __fastcall TMainFrameDlg::ToolButtonDiscClick( TObject *Sender )\r
+{\r
+ MenuOpenDiscClick( Sender );\r
+}\r
+//---------------------------------------------------------------------------\r
+void __fastcall TMainFrameDlg::ToolButtonNetClick( TObject *Sender )\r
+{\r
+ MenuNetworkStreamClick( Sender );\r
+}\r
+//---------------------------------------------------------------------------\r
+void __fastcall TMainFrameDlg::ToolButtonPlaylistClick( TObject *Sender )\r
+{\r
+ MenuPlaylistClick( Sender );\r
+}\r
+//---------------------------------------------------------------------------\r
+void __fastcall TMainFrameDlg::ToolButtonBackClick( TObject *Sender )\r
+{\r
+ ControlBack( Sender );\r
+}\r
+//---------------------------------------------------------------------------\r
+void __fastcall TMainFrameDlg::ToolButtonStopClick( TObject *Sender )\r
+{\r
+ ControlStop( Sender );\r
+}\r
+//---------------------------------------------------------------------------\r
+void __fastcall TMainFrameDlg::ToolButtonPlayClick( TObject *Sender )\r
+{\r
+ ControlPlay( Sender );\r
+}\r
+//---------------------------------------------------------------------------\r
+void __fastcall TMainFrameDlg::ToolButtonPauseClick( TObject *Sender )\r
+{\r
+ ControlPause( Sender );\r
+}\r
+//---------------------------------------------------------------------------\r
+void __fastcall TMainFrameDlg::ToolButtonSlowClick( TObject *Sender )\r
+{\r
+ ControlSlow( Sender );\r
+}\r
+//---------------------------------------------------------------------------\r
+void __fastcall TMainFrameDlg::ToolButtonFastClick( TObject *Sender )\r
+{\r
+ ControlFast( Sender );\r
+}\r
+//---------------------------------------------------------------------------\r
+void __fastcall TMainFrameDlg::ToolButtonPrevClick( TObject *Sender )\r
+{\r
+ p_intfGlobal->p_sys->p_playlist->Previous();\r
+}\r
+//---------------------------------------------------------------------------\r
+void __fastcall TMainFrameDlg::ToolButtonNextClick( TObject *Sender )\r
+{\r
+ p_intfGlobal->p_sys->p_playlist->Next();\r
+}\r
+//---------------------------------------------------------------------------\r
+void __fastcall TMainFrameDlg::ToolButtonEjectClick( TObject *Sender )\r
+{\r
+ AnsiString Device = "";\r
+\r
+ /*\r
+ * Get the active input\r
+ * Determine whether we can eject a media, ie it's a VCD or DVD\r
+ * If it's neither a VCD nor a DVD, then return\r
+ */\r
+\r
+ if( p_main->p_playlist->current.psz_name != NULL )\r
+ {\r
+ if( strncmp( p_main->p_playlist->current.psz_name, "dvd", 3 )\r
+ || strncmp( p_main->p_playlist->current.psz_name, "vcd", 3 ) )\r
+ {\r
+ /* Determine the device name by omitting the first 4 characters\r
+ * and keeping 3 characters */\r
+ Device = strdup( ( p_main->p_playlist->current.psz_name + 4 ) );\r
+ Device = Device.SubString( 1, 2 );\r
+ }\r
+ }\r
+\r
+ if( Device == "" )\r
+ {\r
+ return;\r
+ }\r
+\r
+ /* If there's a stream playing, we aren't allowed to eject ! */\r
+ if( p_input_bank->pp_input[0] == NULL )\r
+ {\r
+ intf_WarnMsg( 4, "intf: ejecting %s", Device.c_str() );\r
+\r
+ intf_Eject( Device.c_str() );\r
+ }\r
+}\r
+//--------------------------------------------------------------------------\r
+\r
+\r
+/*****************************************************************************\r
+ * Popup callbacks\r
+ ****************************************************************************/\r
+void __fastcall TMainFrameDlg::PopupCloseClick( TObject *Sender )\r
+{\r
+ /* We do nothing, we just need a click on a menu item\r
+ * to close the popup. Don't ask me why... */\r
+ return;\r
+}\r
+//---------------------------------------------------------------------------\r
+void __fastcall TMainFrameDlg::PopupPlayClick( TObject *Sender )\r
+{\r
+ ToolButtonPlayClick( Sender );\r
+}\r
+//---------------------------------------------------------------------------\r
+void __fastcall TMainFrameDlg::PopupPauseClick( TObject *Sender )\r
+{\r
+ ToolButtonPauseClick( Sender );\r
+}\r
+//---------------------------------------------------------------------------\r
+void __fastcall TMainFrameDlg::PopupStopClick( TObject *Sender )\r
+{\r
+ ToolButtonStopClick( Sender );\r
+}\r
+//---------------------------------------------------------------------------\r
+void __fastcall TMainFrameDlg::PopupBackClick( TObject *Sender )\r
+{\r
+ ToolButtonBackClick( Sender );\r
+}\r
+//---------------------------------------------------------------------------\r
+void __fastcall TMainFrameDlg::PopupSlowClick( TObject *Sender )\r
+{\r
+ ToolButtonSlowClick( Sender );\r
+}\r
+//---------------------------------------------------------------------------\r
+void __fastcall TMainFrameDlg::PopupFastClick( TObject *Sender )\r
+{\r
+ ToolButtonFastClick( Sender );\r
+}\r
+//---------------------------------------------------------------------------\r
+void __fastcall TMainFrameDlg::PopupToggleInterfaceClick( TObject *Sender )\r
+{\r
+ this->BringToFront();\r
+}\r
+//---------------------------------------------------------------------------\r
+void __fastcall TMainFrameDlg::PopupFullscreenClick( TObject *Sender )\r
+{\r
+ MenuFullscreenClick( Sender );\r
+}\r
+//---------------------------------------------------------------------------\r
+void __fastcall TMainFrameDlg::PopupNextClick( TObject *Sender )\r
+{\r
+ ToolButtonNextClick( Sender );\r
+}\r
+//---------------------------------------------------------------------------\r
+void __fastcall TMainFrameDlg::PopupPrevClick( TObject *Sender )\r
+{\r
+ ToolButtonPrevClick( Sender );\r
+}\r
+//---------------------------------------------------------------------------\r
+void __fastcall TMainFrameDlg::PopupJumpClick( TObject *Sender )\r
+{\r
+ // TODO\r
+}\r
+//---------------------------------------------------------------------------\r
+void __fastcall TMainFrameDlg::PopupPlaylistClick( TObject *Sender )\r
+{\r
+ MenuPlaylistClick( Sender );\r
+}\r
+//---------------------------------------------------------------------------\r
+void __fastcall TMainFrameDlg::PopupPreferencesClick( TObject *Sender )\r
+{\r
+ MenuPreferencesClick( Sender );\r
+}\r
+//---------------------------------------------------------------------------\r
+void __fastcall TMainFrameDlg::PopupExitClick( TObject *Sender )\r
+{\r
+ MenuExitClick( Sender );\r
+}\r
+//---------------------------------------------------------------------------\r
+void __fastcall TMainFrameDlg::PopupOpenFileClick( TObject *Sender )\r
+{\r
+ MenuOpenFileClick( Sender );\r
+}\r
+//---------------------------------------------------------------------------\r
+void __fastcall TMainFrameDlg::PopupOpenDiscClick( TObject *Sender )\r
+{\r
+ MenuOpenDiscClick( Sender );\r
+}\r
+//---------------------------------------------------------------------------\r
+void __fastcall TMainFrameDlg::PopupNetworkStreamClick( TObject *Sender )\r
+{\r
+ MenuNetworkStreamClick( Sender );\r
+}\r
+//---------------------------------------------------------------------------\r
+\r
+\r
+/*****************************************************************************\r
+ * Callbacks for DVD/VCD navigation\r
+ ****************************************************************************/\r
+void __fastcall TMainFrameDlg::ButtonTitlePrevClick( TObject *Sender )\r
+{\r
+ intf_thread_t * p_intf;\r
+ input_area_t * p_area;\r
+ int i_id;\r
+\r
+ p_intf = p_intfGlobal;\r
+ i_id = p_input_bank->pp_input[0]->stream.p_selected_area->i_id - 1;\r
+\r
+ /* Disallow area 0 since it is used for video_ts.vob */\r
+ if( i_id > 0 )\r
+ {\r
+ p_area = p_input_bank->pp_input[0]->stream.pp_areas[i_id];\r
+ input_ChangeArea( p_input_bank->pp_input[0], (input_area_t*)p_area );\r
+\r
+ input_SetStatus( p_input_bank->pp_input[0], INPUT_STATUS_PLAY );\r
+\r
+ p_intf->p_sys->b_title_update = 1;\r
+ vlc_mutex_lock( &p_input_bank->pp_input[0]->stream.stream_lock );\r
+ SetupMenus( p_intf );\r
+ vlc_mutex_unlock( &p_input_bank->pp_input[0]->stream.stream_lock );\r
+ }\r
+}\r
+//---------------------------------------------------------------------------\r
+void __fastcall TMainFrameDlg::ButtonTitleNextClick( TObject *Sender )\r
+{\r
+ intf_thread_t * p_intf;\r
+ input_area_t * p_area;\r
+ int i_id;\r
+\r
+ p_intf = p_intfGlobal;\r
+ i_id = p_input_bank->pp_input[0]->stream.p_selected_area->i_id + 1;\r
+\r
+ if( i_id < p_input_bank->pp_input[0]->stream.i_area_nb )\r
+ {\r
+ p_area = p_input_bank->pp_input[0]->stream.pp_areas[i_id]; \r
+ input_ChangeArea( p_input_bank->pp_input[0], (input_area_t*)p_area );\r
+ \r
+ input_SetStatus( p_input_bank->pp_input[0], INPUT_STATUS_PLAY );\r
+\r
+ p_intf->p_sys->b_title_update = 1;\r
+ vlc_mutex_lock( &p_input_bank->pp_input[0]->stream.stream_lock );\r
+ SetupMenus( p_intf );\r
+ vlc_mutex_unlock( &p_input_bank->pp_input[0]->stream.stream_lock );\r
+ }\r
+}\r
+//---------------------------------------------------------------------------\r
+void __fastcall TMainFrameDlg::ButtonChapterPrevClick( TObject *Sender )\r
+{\r
+ intf_thread_t * p_intf = p_intfGlobal;\r
+ input_area_t * p_area;\r
+\r
+ p_area = p_input_bank->pp_input[0]->stream.p_selected_area;\r
+\r
+ if( p_area->i_part > 0 )\r
+ {\r
+ p_area->i_part--;\r
+ input_ChangeArea( p_input_bank->pp_input[0], (input_area_t*)p_area );\r
+\r
+ input_SetStatus( p_input_bank->pp_input[0], INPUT_STATUS_PLAY );\r
+\r
+ p_intf->p_sys->b_chapter_update = 1;\r
+ vlc_mutex_lock( &p_input_bank->pp_input[0]->stream.stream_lock );\r
+ SetupMenus( p_intf );\r
+ vlc_mutex_unlock( &p_input_bank->pp_input[0]->stream.stream_lock );\r
+ }\r
+}\r
+//---------------------------------------------------------------------------\r
+void __fastcall TMainFrameDlg::ButtonChapterNextClick( TObject *Sender )\r
+{\r
+ intf_thread_t * p_intf = p_intfGlobal;\r
+ input_area_t * p_area;\r
+\r
+ p_area = p_input_bank->pp_input[0]->stream.p_selected_area;\r
+ \r
+ if( p_area->i_part < p_area->i_part_nb )\r
+ {\r
+ p_area->i_part++;\r
+ input_ChangeArea( p_input_bank->pp_input[0], (input_area_t*)p_area );\r
+\r
+ input_SetStatus( p_input_bank->pp_input[0], INPUT_STATUS_PLAY );\r
+\r
+ p_intf->p_sys->b_chapter_update = 1;\r
+ vlc_mutex_lock( &p_input_bank->pp_input[0]->stream.stream_lock );\r
+ SetupMenus( p_intf );\r
+ vlc_mutex_unlock( &p_input_bank->pp_input[0]->stream.stream_lock );\r
+ }\r
+}\r
+//---------------------------------------------------------------------------\r
+\r
+\r
+/*****************************************************************************\r
+ * Callback for the 'go!' button\r
+ ****************************************************************************/\r
+void __fastcall TMainFrameDlg::ButtonGoClick( TObject *Sender )\r
+{\r
+ intf_thread_t *p_intf = p_intfGlobal;\r
+ int i_channel;\r
+\r
+ i_channel = UpDownChannel->Position;\r
+ intf_WarnMsg( 3, "intf info: joining channel %d", i_channel );\r
+\r
+ vlc_mutex_lock( &p_intf->change_lock );\r
+ if( p_input_bank->pp_input[0] != NULL )\r
+ {\r
+ /* end playing item */\r
+ p_input_bank->pp_input[0]->b_eof = 1;\r
+\r
+ /* update playlist */\r
+ vlc_mutex_lock( &p_main->p_playlist->change_lock );\r
+\r
+ p_main->p_playlist->i_index--;\r
+ p_main->p_playlist->b_stopped = 1;\r
+\r
+ vlc_mutex_unlock( &p_main->p_playlist->change_lock );\r
+\r
+ /* FIXME: ugly hack to close input and outputs */\r
+ p_intf->pf_manage( p_intf );\r
+ }\r
+\r
+ network_ChannelJoin( i_channel );\r
+\r
+ /* FIXME 2 */\r
+ p_main->p_playlist->b_stopped = 0;\r
+ p_intf->pf_manage( p_intf );\r
+\r
+ vlc_mutex_unlock( &p_intf->change_lock );\r
+\r
+// input_SetStatus( p_input_bank->pp_input[0], INPUT_STATUS_PLAY );\r
+}\r
+//---------------------------------------------------------------------------\r
+\r
+\r
+/*****************************************************************************\r
+ * ModeManage: actualise the aspect of the interface whenever the input\r
+ * changes.\r
+ *****************************************************************************\r
+ * The lock has to be taken before you call the function.\r
+ *****************************************************************************/\r
+void __fastcall TMainFrameDlg::ModeManage()\r
+{\r
+ intf_thread_t * p_intf = p_intfGlobal;\r
+ TGroupBox * ActiveGB;\r
+ int i_Height;\r
+ bool b_control;\r
+\r
+ /* hide all boxes */\r
+ GroupBoxFile->Visible = false;\r
+ GroupBoxNetwork->Visible = false;\r
+ GroupBoxDisc->Visible = false;\r
+\r
+ /* hide slider */\r
+ GroupBoxSlider->Hide();\r
+\r
+ /* controls unavailable */\r
+ b_control = 0;\r
+\r
+ /* show the box related to current input mode */\r
+ if( p_input_bank->pp_input[0] != NULL )\r
+ {\r
+ switch( p_input_bank->pp_input[0]->stream.i_method & 0xf0 )\r
+ { \r
+ case INPUT_METHOD_FILE:\r
+ GroupBoxFile->Visible = true;\r
+ ActiveGB = GroupBoxFile;\r
+ LabelFileName->Caption = p_input_bank->pp_input[0]->psz_source;\r
+ break;\r
+ case INPUT_METHOD_DISC:\r
+ GroupBoxDisc->Visible = true;\r
+ ActiveGB = GroupBoxDisc;\r
+ break;\r
+ case INPUT_METHOD_NETWORK:\r
+ GroupBoxNetwork->Visible = true;\r
+ ActiveGB = GroupBoxNetwork;\r
+ LabelServer->Caption = p_input_bank->pp_input[0]->psz_source;\r
+ if( config_GetIntVariable( "network_channel" ) )\r
+ {\r
+ LabelChannel->Visible = true;\r
+ }\r
+ else\r
+ {\r
+ LabelChannel->Visible = false;\r
+ }\r
+ break;\r
+ default:\r
+ intf_WarnMsg( 3, "intf: can't determine input method" );\r
+ GroupBoxFile->Visible = true;\r
+ ActiveGB = GroupBoxFile;\r
+ LabelFileName->Caption = p_input_bank->pp_input[0]->psz_source;\r
+ break;\r
+ }\r
+ \r
+ i_Height = StatusBar->Height + ActiveGB->Height + 72;\r
+\r
+ /* initialize and show slider for seekable streams */\r
+ if( p_input_bank->pp_input[0]->stream.b_seekable )\r
+ {\r
+ TrackBar->Position = p_intf->p_sys->OldValue = 0;\r
+ GroupBoxSlider->Show();\r
+ i_Height += GroupBoxSlider->Height;\r
+ }\r
+\r
+ /* resize main window */\r
+ this->Height = i_Height;\r
+\r
+ /* control buttons for free pace streams */\r
+ b_control = p_input_bank->pp_input[0]->stream.b_pace_control;\r
+\r
+ /* get ready for menu regeneration */\r
+ p_intf->p_sys->b_program_update = 1;\r
+ p_intf->p_sys->b_title_update = 1;\r
+ p_intf->p_sys->b_chapter_update = 1;\r
+ p_intf->p_sys->b_audio_update = 1;\r
+ p_intf->p_sys->b_spu_update = 1;\r
+ p_intf->p_sys->i_part = 0;\r
+ \r
+ p_input_bank->pp_input[0]->stream.b_changed = 0;\r
+ intf_WarnMsg( 3, "intf: stream has changed, refreshing interface" );\r
+ }\r
+ else\r
+ {\r
+ if( config_GetIntVariable( "network_channel" ) )\r
+ {\r
+ GroupBoxNetwork->Visible = true;\r
+ LabelChannel->Visible = true;\r
+ }\r
+ else\r
+ {\r
+ /* default mode */\r
+ ClientHeight = 65;\r
+\r
+ /* unsensitize menus */\r
+ MenuProgram->Enabled = false;\r
+ MenuTitle->Enabled = false;\r
+ MenuChapter->Enabled = false;\r
+ MenuAudio->Enabled = false;\r
+ MenuSubtitles->Enabled = false;\r
+ PopupNavigation->Enabled = false;\r
+ PopupAudio->Enabled = false;\r
+ PopupSubtitles->Enabled = false;\r
+ }\r
+ }\r
+\r
+ /* set control items */\r
+ ToolButtonBack->Enabled = false;\r
+ ToolButtonStop->Enabled = true;\r
+ ToolButtonEject->Enabled = !b_control;\r
+ ToolButtonPause->Enabled = b_control;\r
+ ToolButtonSlow->Enabled = b_control;\r
+ ToolButtonFast->Enabled = b_control;\r
+ PopupBack->Enabled = false;\r
+ PopupPause->Enabled = b_control;\r
+ PopupSlow->Enabled = b_control;\r
+ PopupFast->Enabled = b_control;\r
+}\r
+\r
--- /dev/null
+object MainFrameDlg: TMainFrameDlg\r
+ Left = 304\r
+ Top = 278\r
+ Width = 535\r
+ Height = 272\r
+ Caption = 'VideoLAN Client (win32 interface)'\r
+ Color = clBtnFace\r
+ Font.Charset = DEFAULT_CHARSET\r
+ Font.Color = clWindowText\r
+ Font.Height = -11\r
+ Font.Name = 'MS Sans Serif'\r
+ Font.Style = []\r
+ Icon.Data = {\r
+ 0000010001003030000001000800A80E00001600000028000000300000006000\r
+ 00000100080000000000800A0000000000000000000000010000000000000402\r
+ 04002486D4009CC2E4007CA6C400E4E2E40004528C003CA2F4001C82DC0054B2\r
+ FC003C8EDC00B4CADC00046EC4001C92F40034363400D4D6D400FFFFFF006CAA\r
+ E4006CB2F4000476DC0044AAFC009CD2FC00A4B6C4001C6EB4001C9AFC00548A\r
+ B4007CC2FC000486F400B4CAE4001416140034A2FC00CCD2D400147ACC006CBA\r
+ FC006CA6DC00CCE2F400045EA400349EFC00044A7400FCFEFC0064BAFC005C9E\r
+ DC00C4CED4000C92FC00BCD6E400F4F2F4007C9AB4008CCAFC0044A2FC007CBA\r
+ FC00CCEAFC001C5E8C000482EC0064B6FC000472D400047EEC002C9EFC00048E\r
+ FC001C1E1C001C96FC00CCDAE4000C0A0C00348ED400A4C6E4009CAEBC00248A\r
+ E4005CB6FC003492E400BCCEDC003C3E3C00047EE4004CAEFC00ACBECC00447A\r
+ A400249EFC008CC6FC003CA6FC00247ECC0074BEFC007CAEDC001C5674001496\r
+ FC00ECF6FC00649ACC00DCEEFC00040604002C8AD400A4C2E40084AAC400145A\r
+ 8C0044A2F4001C86DC005CB2FC003C92DC00BCCADC000472CC003C3A3C00E4F2\r
+ FC0054AEFC0074B6F400047ADC004CAAFC009CB6CC00249AFC006C92BC0084C6\r
+ FC00048AFC001C1A1C003CA2FC00CCD2DC001C7ECC0074BAFC0074AADC00D4E6\r
+ F4000462B4000C4E74004C9EE400CCCED4001492FC00C4DAE40094CAFC0044A6\r
+ FC007CBEFC002C628C000476D4000C8EFC0024222400D4DAE4003476B400F4F6\r
+ FC006C9ECC00E4EEFC0000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000008383\r
+ 8383838383838383838383838383838383838383838383838383838383838383\r
+ 8383838383838383838383838383838383838383838383838383838383838383\r
+ 8383838383838383838383838383838383838383838383838383838383838383\r
+ 8383838383838383838383838383838383838383838383838383838383838383\r
+ 8383838383838383838383838383838383838383838383838383838383838383\r
+ 8383838383838383838383838383838383838383838383838383838383838383\r
+ 8383838383838383838383838383838383838383838383838383838383838383\r
+ 8383838383838383838383838383838383838383838383838383838383838383\r
+ 838383831C1C1C1C838383838383838383838383838383838383838383838383\r
+ 838383838383838383838383838383831C1C1C1C5E12635E1C1C1C8383838383\r
+ 838383838383838383838383838383838383838383838383838383831C1C1C1C\r
+ 5E6312456969691A455E1C1C1C83838383838383838383838383838383838383\r
+ 8383838383838383831C1C1C5E127B5E7B63636363636345691A45125E1C1C83\r
+ 8383838383838383838383838383838383838383831C1C1C1C5E126363635E05\r
+ 25252525252572585E6345691A455E1C1C838383838383838383838383838383\r
+ 8383831C1C5E1263451A697B05250569696969692A17244B584F7A5E69696963\r
+ 5E1C83838383838383838383838383838383831C711A69694525252369696969\r
+ 3869383875661D785B344D4825694569695E1C1C838383838383838383838383\r
+ 838383831C5E45121C45696969383869386938383A376B645B206E795B250045\r
+ 691A711C83838383838383838383838383838383831C1C231C63696938696938\r
+ 6938692A17374B46412079796E520012455E1C83838383838383838383838383\r
+ 838383838383831C1C1238386938386938693875661D1361344D7919101C230B\r
+ 1C1C838383838383838383838383838383838383838383831C5E696938693869\r
+ 38693850666B135B20797979211C1C1C83838383838383838383838383838383\r
+ 83838383838383831C1C45693869383A17662413465B34342079796E521C8383\r
+ 838383838383838383838383838383838383838383838383831C633A663A0602\r
+ 0A2B22535382312E684A19101C83838383838383838383838383838383838383\r
+ 8383838383838383831C01020A0A0A1E1E042C26262626606053146F54838383\r
+ 838383838383838383838383838383838383838383838383831C67290E1E0E0E\r
+ 0E042C2626262626262682656A83838383838383838383838383838383838383\r
+ 8383838383838383831C0D3F0E0E0E0E0E042C262626262626267E4483838383\r
+ 83838383838383838383838383838383838383838383838383836A3F0E0E0E6C\r
+ 5D2B22538260602626266C7D8383838383838383838383838383838383838383\r
+ 838383838383838383836A3F6C5D1B025924645B274D77536080477D83838383\r
+ 83838383838383838383838383838383838383838383838383831C0302590C3A\r
+ 753A376B465B6E4A141B0D838383838383838383838383838383838383838383\r
+ 83838383838383838383541F0C3838382A661D4B61344D7930813C8383838383\r
+ 8383838383838383838383838383838383838383838383838383831C45386938\r
+ 75661D1308344D7910101C838383838383838383838383838383838383838383\r
+ 83838383838383838383831C126938383A376B645B207979211C838383838383\r
+ 8383838383838383838383838383838383838383838383838383831C6338692A\r
+ 17374B463420796E521C83838383838383838383838383838383838383838383\r
+ 83838383838383838383831C5E6938662F615B4D19681910101C838383838383\r
+ 838383838383838383838383838383838383838383838383838383835407593E\r
+ 5D2B70608253144E1C8383838383838383838383838383838383838383838383\r
+ 8383838383838383838383831C030A1E0E042C26262682656A83838383838383\r
+ 838383838383838383838383838383838383838383838383838383836A3F0E0E\r
+ 0E042C2626267E446A8383838383838383838383838383838383838383838383\r
+ 838383838383838383838383392D740E0E042C2626266C7D8383838383838383\r
+ 838383838383838383838383838383838383838383838383838383831C0D156C\r
+ 433B70606080477D838383838383838383838383838383838383838383838383\r
+ 838383838383838383838383831C573E1134794A141B5F6A8383838383838383\r
+ 83838383838383838383838383838383838383838383838383838383831C3D78\r
+ 6461344D796F1C83838383838383838383838383838383838383838383838383\r
+ 838383838383838383838383831C4C24645B347930521C838383838383838383\r
+ 8383838383838383838383838383838383838383838383838383838383831C42\r
+ 465B2079101C8383838383838383838383838383838383838383838383838383\r
+ 83838383838383838383838383831C0946344D79211C83838383838383838383\r
+ 8383838383838383838383838383838383838383838383838383838383831C3D\r
+ 73731062521C8383838383838383838383838383838383838383838383838383\r
+ 83838383838383838383838383831C7F0000001C1C8383838383838383838383\r
+ 838383838383838383838383838383838383838383838383838383838383831C\r
+ 0B074C4C1C838383838383838383838383838383838383838383838383838383\r
+ 8383838383838383838383838383831C0B0701161C8383838383838383838383\r
+ 8383838383838383838383838383838383838383838383838383838383838383\r
+ 1C1C1C1C83838383838383838383838383838383838383838383838383838383\r
+ 8383838383838383838383838383838383838383838383838383838383838383\r
+ 8383838383838383838383838383838383838383838383838383838383838383\r
+ 8383838383838383838383838383838383838383838383838383838383838383\r
+ 8383838383838383838383838383838383838383838383838383838383838383\r
+ 8383838383838383838383838383838383838383838383838383838383838383\r
+ 838383838383838383838383838383838383838383838383838383838383FFFF\r
+ FFFFFFFF0000FFFFFFFFFFFF0000FFFFFFFFFFFF0000FFFFFFFFFFFF0000FFFF\r
+ FFFFFFFF0000FFFFFC3FFFFF0000FFFFC007FFFF0000FFFC0001FFFF0000FFE0\r
+ 00007FFF0000FE0000001FFF0000F80000000FFF0000F800000003FF0000FC00\r
+ 000003FF0000FE00000007FF0000FF8000000FFF0000FFC000003FFF0000FFC0\r
+ 0000FFFF0000FFE00001FFFF0000FFE00001FFFF0000FFE00001FFFF0000FFE0\r
+ 0003FFFF0000FFF00003FFFF0000FFF00003FFFF0000FFF00007FFFF0000FFF0\r
+ 0007FFFF0000FFF80007FFFF0000FFF8000FFFFF0000FFF8000FFFFF0000FFF8\r
+ 000FFFFF0000FFFC001FFFFF0000FFFC001FFFFF0000FFFC001FFFFF0000FFFC\r
+ 003FFFFF0000FFFC003FFFFF0000FFFE003FFFFF0000FFFE007FFFFF0000FFFE\r
+ 007FFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF\r
+ 01FFFFFF0000FFFF81FFFFFF0000FFFF81FFFFFF0000FFFFC3FFFFFF0000FFFF\r
+ FFFFFFFF0000FFFFFFFFFFFF0000FFFFFFFFFFFF0000FFFFFFFFFFFF0000}\r
+ Menu = MainMenu1\r
+ OldCreateOrder = False\r
+ PopupMenu = PopupMenuMain\r
+ ShowHint = True\r
+ OnClose = FormClose\r
+ PixelsPerInch = 96\r
+ TextHeight = 13\r
+ object ToolBar1: TToolBar\r
+ Left = 0\r
+ Top = 0\r
+ Width = 527\r
+ Height = 25\r
+ ButtonHeight = 21\r
+ ButtonWidth = 39\r
+ Caption = 'ToolBar1'\r
+ ShowCaptions = True\r
+ TabOrder = 0\r
+ object ToolButtonFile: TToolButton\r
+ Left = 0\r
+ Top = 2\r
+ Hint = 'Open a file'\r
+ Caption = 'File'\r
+ ImageIndex = 0\r
+ OnClick = ToolButtonFileClick\r
+ end\r
+ object ToolButtonDisc: TToolButton\r
+ Left = 39\r
+ Top = 2\r
+ Hint = 'Open a DVD or VCD'\r
+ Caption = 'Disc'\r
+ ImageIndex = 1\r
+ OnClick = ToolButtonDiscClick\r
+ end\r
+ object ToolButtonNet: TToolButton\r
+ Left = 78\r
+ Top = 2\r
+ Hint = 'Open a network stream'\r
+ Caption = 'Net'\r
+ ImageIndex = 2\r
+ OnClick = ToolButtonNetClick\r
+ end\r
+ object ToolButtonSep1: TToolButton\r
+ Left = 117\r
+ Top = 2\r
+ Width = 8\r
+ Caption = 'ToolButtonSep1'\r
+ ImageIndex = 3\r
+ Style = tbsSeparator\r
+ end\r
+ object ToolButtonBack: TToolButton\r
+ Left = 125\r
+ Top = 2\r
+ Caption = 'Back'\r
+ Enabled = False\r
+ ImageIndex = 3\r
+ OnClick = ToolButtonBackClick\r
+ end\r
+ object ToolButtonStop: TToolButton\r
+ Left = 164\r
+ Top = 2\r
+ Hint = 'Stop stream'\r
+ Caption = 'Stop'\r
+ Enabled = False\r
+ ImageIndex = 4\r
+ OnClick = ToolButtonStopClick\r
+ end\r
+ object ToolButtonEject: TToolButton\r
+ Left = 203\r
+ Top = 2\r
+ Hint = 'Eject disc'\r
+ Caption = 'Eject'\r
+ ImageIndex = 12\r
+ OnClick = ToolButtonEjectClick\r
+ end\r
+ object ToolButtonPlay: TToolButton\r
+ Left = 242\r
+ Top = 2\r
+ Hint = 'Play stream'\r
+ Caption = 'Play'\r
+ ImageIndex = 5\r
+ OnClick = ToolButtonPlayClick\r
+ end\r
+ object ToolButtonPause: TToolButton\r
+ Left = 281\r
+ Top = 2\r
+ Hint = 'Pause stream'\r
+ Caption = 'Pause'\r
+ Enabled = False\r
+ ImageIndex = 6\r
+ OnClick = ToolButtonPauseClick\r
+ end\r
+ object ToolButtonSlow: TToolButton\r
+ Left = 320\r
+ Top = 2\r
+ Hint = 'Play slower'\r
+ Caption = 'Slow'\r
+ Enabled = False\r
+ ImageIndex = 7\r
+ OnClick = ToolButtonSlowClick\r
+ end\r
+ object ToolButtonFast: TToolButton\r
+ Left = 359\r
+ Top = 2\r
+ Hint = 'Play faster'\r
+ Caption = 'Fast'\r
+ Enabled = False\r
+ ImageIndex = 8\r
+ OnClick = ToolButtonFastClick\r
+ end\r
+ object ToolButtonSep2: TToolButton\r
+ Left = 398\r
+ Top = 2\r
+ Width = 8\r
+ Caption = 'ToolButtonSep2'\r
+ ImageIndex = 9\r
+ Style = tbsSeparator\r
+ end\r
+ object ToolButtonPlaylist: TToolButton\r
+ Left = 406\r
+ Top = 2\r
+ Hint = 'Open playlist'\r
+ Caption = 'Playlist'\r
+ ImageIndex = 9\r
+ OnClick = ToolButtonPlaylistClick\r
+ end\r
+ object ToolButtonPrev: TToolButton\r
+ Left = 445\r
+ Top = 2\r
+ Hint = 'Previous file'\r
+ Caption = 'Prev'\r
+ ImageIndex = 10\r
+ OnClick = ToolButtonPrevClick\r
+ end\r
+ object ToolButtonNext: TToolButton\r
+ Left = 484\r
+ Top = 2\r
+ Hint = 'Next file'\r
+ Caption = 'Next'\r
+ ImageIndex = 11\r
+ OnClick = ToolButtonNextClick\r
+ end\r
+ end\r
+ object StatusBar: TStatusBar\r
+ Left = 0\r
+ Top = 207\r
+ Width = 527\r
+ Height = 19\r
+ Panels = <>\r
+ ParentShowHint = False\r
+ ShowHint = False\r
+ SimplePanel = True\r
+ end\r
+ object GroupBoxFile: TGroupBox\r
+ Left = 0\r
+ Top = 65\r
+ Width = 527\r
+ Height = 32\r
+ Align = alTop\r
+ TabOrder = 2\r
+ Visible = False\r
+ object LabelFileName: TLabel\r
+ Left = 2\r
+ Top = 15\r
+ Width = 523\r
+ Height = 15\r
+ Align = alClient\r
+ Alignment = taCenter\r
+ Caption = 'File read'\r
+ end\r
+ end\r
+ object GroupBoxNetwork: TGroupBox\r
+ Left = 0\r
+ Top = 129\r
+ Width = 527\r
+ Height = 40\r
+ Align = alTop\r
+ TabOrder = 3\r
+ Visible = False\r
+ object LabelChannel: TLabel\r
+ Left = 288\r
+ Top = 16\r
+ Width = 42\r
+ Height = 13\r
+ Caption = 'Channel:'\r
+ end\r
+ object LabelServer: TLabel\r
+ Left = 64\r
+ Top = 16\r
+ Width = 52\r
+ Height = 13\r
+ Caption = 'No server !'\r
+ end\r
+ object EditChannel: TEdit\r
+ Left = 336\r
+ Top = 12\r
+ Width = 17\r
+ Height = 21\r
+ TabOrder = 0\r
+ Text = '0'\r
+ end\r
+ object UpDownChannel: TUpDown\r
+ Left = 353\r
+ Top = 12\r
+ Width = 15\r
+ Height = 21\r
+ Associate = EditChannel\r
+ Min = 0\r
+ Position = 0\r
+ TabOrder = 1\r
+ Thousands = False\r
+ Wrap = False\r
+ end\r
+ object ButtonGo: TButton\r
+ Left = 376\r
+ Top = 10\r
+ Width = 25\r
+ Height = 25\r
+ Caption = 'Go!'\r
+ TabOrder = 2\r
+ OnClick = ButtonGoClick\r
+ end\r
+ end\r
+ object GroupBoxDisc: TGroupBox\r
+ Left = 0\r
+ Top = 97\r
+ Width = 527\r
+ Height = 32\r
+ Align = alTop\r
+ TabOrder = 4\r
+ Visible = False\r
+ object LabelDisc: TLabel\r
+ Left = 32\r
+ Top = 11\r
+ Width = 21\r
+ Height = 13\r
+ Caption = 'Disc'\r
+ end\r
+ object LabelTitle: TLabel\r
+ Left = 96\r
+ Top = 11\r
+ Width = 23\r
+ Height = 13\r
+ Caption = 'Title:'\r
+ end\r
+ object LabelChapter: TLabel\r
+ Left = 296\r
+ Top = 11\r
+ Width = 40\r
+ Height = 13\r
+ Caption = 'Chapter:'\r
+ end\r
+ object LabelTitleCurrent: TLabel\r
+ Left = 126\r
+ Top = 11\r
+ Width = 9\r
+ Height = 13\r
+ Caption = '---'\r
+ end\r
+ object LabelChapterCurrent: TLabel\r
+ Left = 342\r
+ Top = 11\r
+ Width = 9\r
+ Height = 13\r
+ Caption = '---'\r
+ end\r
+ object ButtonTitlePrev: TButton\r
+ Left = 152\r
+ Top = 8\r
+ Width = 33\r
+ Height = 19\r
+ Hint = 'Jump to previous title'\r
+ Caption = 'Prev'\r
+ TabOrder = 0\r
+ OnClick = ButtonTitlePrevClick\r
+ end\r
+ object ButtonTitleNext: TButton\r
+ Left = 184\r
+ Top = 8\r
+ Width = 33\r
+ Height = 19\r
+ Hint = 'Jump to next title'\r
+ Caption = 'Next'\r
+ TabOrder = 1\r
+ OnClick = ButtonTitleNextClick\r
+ end\r
+ object ButtonChapterPrev: TButton\r
+ Left = 368\r
+ Top = 8\r
+ Width = 33\r
+ Height = 19\r
+ Hint = 'Jump to previous chapter'\r
+ Caption = 'Prev'\r
+ TabOrder = 2\r
+ OnClick = ButtonChapterPrevClick\r
+ end\r
+ object ButtonChapterNext: TButton\r
+ Left = 400\r
+ Top = 8\r
+ Width = 33\r
+ Height = 19\r
+ Hint = 'Jump to next chapter'\r
+ Caption = 'Next'\r
+ TabOrder = 3\r
+ OnClick = ButtonChapterNextClick\r
+ end\r
+ end\r
+ object GroupBoxSlider: TGroupBox\r
+ Left = 0\r
+ Top = 25\r
+ Width = 527\r
+ Height = 40\r
+ Align = alTop\r
+ Caption = '0:00:00'\r
+ TabOrder = 5\r
+ Visible = False\r
+ object TrackBar: TTrackBar\r
+ Left = 2\r
+ Top = 15\r
+ Width = 523\r
+ Height = 21\r
+ Align = alTop\r
+ Orientation = trHorizontal\r
+ Frequency = 1\r
+ Position = 0\r
+ SelEnd = 0\r
+ SelStart = 0\r
+ TabOrder = 0\r
+ TickMarks = tmBottomRight\r
+ TickStyle = tsNone\r
+ OnChange = TrackBarChange\r
+ end\r
+ end\r
+ object MainMenu1: TMainMenu\r
+ Left = 40\r
+ Top = 176\r
+ object MenuFile: TMenuItem\r
+ Caption = '&File'\r
+ object MenuOpenFile: TMenuItem\r
+ Caption = '&Open file...'\r
+ Hint = 'Open a file'\r
+ ShortCut = 114\r
+ OnClick = MenuOpenFileClick\r
+ end\r
+ object MenuOpenDisc: TMenuItem\r
+ Caption = 'Open &disc...'\r
+ Hint = 'Open a DVD or VCD'\r
+ ShortCut = 115\r
+ OnClick = MenuOpenDiscClick\r
+ end\r
+ object MenuNetworkStream: TMenuItem\r
+ Caption = '&Network stream...'\r
+ Hint = 'Select a network stream'\r
+ ShortCut = 116\r
+ OnClick = MenuNetworkStreamClick\r
+ end\r
+ object N8: TMenuItem\r
+ Caption = '-'\r
+ Visible = False\r
+ end\r
+ object MenuEjectDisc: TMenuItem\r
+ Caption = '&Eject Disc'\r
+ Hint = 'Eject disc'\r
+ Visible = False\r
+ end\r
+ object N1: TMenuItem\r
+ Caption = '-'\r
+ end\r
+ object MenuExit: TMenuItem\r
+ Caption = 'E&xit'\r
+ Hint = 'Exit the program'\r
+ ShortCut = 16465\r
+ OnClick = MenuExitClick\r
+ end\r
+ end\r
+ object MenuView: TMenuItem\r
+ Caption = '&View'\r
+ object MenuHideinterface: TMenuItem\r
+ Caption = '&Hide interface'\r
+ Hint = 'Hide the main interface window'\r
+ end\r
+ object MenuFullscreen: TMenuItem\r
+ Caption = '&Fullscreen'\r
+ Hint = 'Toggle fullscreen'\r
+ OnClick = MenuFullscreenClick\r
+ end\r
+ object N2: TMenuItem\r
+ Caption = '-'\r
+ end\r
+ object MenuProgram: TMenuItem\r
+ Caption = 'Progr&am'\r
+ Enabled = False\r
+ Hint = 'Select program'\r
+ end\r
+ object MenuTitle: TMenuItem\r
+ Caption = '&Title'\r
+ Enabled = False\r
+ Hint = 'Select title'\r
+ end\r
+ object MenuChapter: TMenuItem\r
+ Caption = '&Chapter'\r
+ Enabled = False\r
+ Hint = 'Select chapter'\r
+ end\r
+ object MenuAngle: TMenuItem\r
+ Caption = 'An&gle'\r
+ Enabled = False\r
+ Hint = 'Select angle'\r
+ end\r
+ object N3: TMenuItem\r
+ Caption = '-'\r
+ end\r
+ object MenuPlaylist: TMenuItem\r
+ Caption = '&Playlist...'\r
+ Hint = 'Open the playlist window'\r
+ OnClick = MenuPlaylistClick\r
+ end\r
+ object MenuModules: TMenuItem\r
+ Caption = '&Modules...'\r
+ Enabled = False\r
+ Hint = 'Open the modules window'\r
+ end\r
+ object MenuMessages: TMenuItem\r
+ Caption = 'Me&ssages...'\r
+ Hint = 'Open the messages window'\r
+ OnClick = MenuMessagesClick\r
+ end\r
+ end\r
+ object MenuSettings: TMenuItem\r
+ Caption = '&Settings'\r
+ object MenuAudio: TMenuItem\r
+ Caption = '&Audio'\r
+ Enabled = False\r
+ Hint = 'Select audio language'\r
+ end\r
+ object MenuSubtitles: TMenuItem\r
+ Caption = '&Subtitles'\r
+ Enabled = False\r
+ Hint = 'Select subtitles language'\r
+ end\r
+ object N4: TMenuItem\r
+ Caption = '-'\r
+ end\r
+ object MenuPreferences: TMenuItem\r
+ Caption = '&Preferences...'\r
+ Hint = 'Configure the application'\r
+ OnClick = MenuPreferencesClick\r
+ end\r
+ end\r
+ object MenuHelp: TMenuItem\r
+ Caption = '&Help'\r
+ object MenuAbout: TMenuItem\r
+ Caption = '&About...'\r
+ Hint = 'About this application'\r
+ OnClick = MenuAboutClick\r
+ end\r
+ end\r
+ end\r
+ object OpenDialog1: TOpenDialog\r
+ Filter = 'All Files (*.*)|*.*'\r
+ Left = 8\r
+ Top = 176\r
+ end\r
+ object ImageListToolbar: TImageList\r
+ Height = 32\r
+ Width = 32\r
+ Left = 104\r
+ Top = 176\r
+ Bitmap = {\r
+ 494C010102000400040020002000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600\r
+ 0000000000003600000028000000800000002000000001002000000000000040\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 000000000000000000000000000000000000000000000000E7000000E700FF00\r
+ 00008400000084000000840000000000000000000000FF00E700FF00E700FF00\r
+ E700FF00E7000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000FF00E700FF00\r
+ E70000000000000000000000000000000000000000000000000000000000FF00\r
+ 0000FF00E700FF00E70000000000000000000000000000000000000000000000\r
+ 000000000000000000000000000000000000FF00E700FF00E700FF00E700FF00\r
+ E700FF00E700FF00E700FF00E700FF00E7000000000000000000000000008400\r
+ 0000000000008400000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 000000000000000000000000000000000000000000000000E70084000000FF00\r
+ 0000840000008400000000000000FF00E700FF00E700FF00E700FF00E7000000\r
+ E7000000E7000000000000000000000000000000000000000000000000000000\r
+ 00000000000000000000000000000000000000000000FF00E700FF00E7000000\r
+ 0000FF00E7000000000000000000000000000000000000000000FF000000FF00\r
+ E700FF00E7000000E700FF00E700000000000000000000000000000000000000\r
+ 000000000000000000000000000000000000FF00E700FF00E700FF00E700FF00\r
+ E700FF00E700FF00E700FF00E700FF00E7000000000000000000840000000000\r
+ 0000840000000000000084000000840000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 000000000000000000000000000000000000000000000000E700FF0000008400\r
+ 0000840000000000000000000000FF00E7000000E7000000E7000000E7000000\r
+ E7000000E7000000E70000000000000000000000000000000000000000000000\r
+ 000000000000000000000000000000000000FF00E700FF00E70000000000FF00\r
+ E700000000000000000000000000000000000000000000000000FF000000FF00\r
+ E7000000E7000000E7000000E700FF00E7000000000000000000000000000000\r
+ 000000000000000000000000000000000000FF00E700FF00E700FF00E700FF00\r
+ E700FF00E700FF00E700FF00E700FF00E7000000000000000000000000008400\r
+ 0000000000008400000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000008400000084000000FF0000008400\r
+ 000000000000FF00E7000000E7000000E7000000E7000000E7000000E7000000\r
+ E7000000E7000000E70000000000000000000000000000000000000000000000\r
+ 000000000000000000000000000000000000FF00E70000000000FF00E7000000\r
+ 0000FF00E70000000000FF00E700FF00E700FF00E700FF00E700FF00E7000000\r
+ E7000000E7000000E70000000000FF00E7000000000000000000000000000000\r
+ 000000000000000000000000000000000000FF00E700FF00E70042004200AD00\r
+ 2100EF006300FF008400C60021004200A5000000000000000000840000000000\r
+ 0000840000000000000084000000840000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000840000008400\r
+ 00000000E7000000E7000000E7000000E7000000E7000000E700000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000FF00E7000000000000000000000000000000\r
+ 000000000000FF00E700840000000000000000000000840000000000E7000000\r
+ E70000000000000000000000000000000000FF00E70000000000000000000000\r
+ 000000000000000000000000000000000000C6000000C6000000C6000000C600\r
+ 0000C6000000C6000000C6000000C60000000000000000000000840000008400\r
+ 0000840000008400000084000000840000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000940042000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 00000000000000000000310063000000000000000000D600C60000000000D600\r
+ C6004200C6000800210021002100000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 000000000000FF00E700FF00E700FF00E700FF00E700FF00E700FF00E7000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 00000000000000000000000000000000000000000000DE00E700DE00E700DE00\r
+ E7007B00420008008400DE00E700DE00E7007B004200B5008400DE00E700A500\r
+ 21007B00420018008400000000000000000000000000DE00E700000000000000\r
+ 0000000063000000000018004200100084008400420039002100180063006300\r
+ 8400000000000000000021008400DE0084000000000000000000000000000000\r
+ 000000000000210000000000000052006300000000008400420073000000F700\r
+ 8400000000000000000000000000FF00E700000000007B004200290000000000\r
+ 0000FF00E700000000008400420073000000E70042007300E7006300C6000000\r
+ E700000084007300E700080084002100C6000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 000000000000000000000000000000000000000000000000000000000000FF00\r
+ E700FF00E7000000000000000000000000000000000000000000FF000000FF00\r
+ E700FF00E7000000000000000000000000000000000000000000000000000000\r
+ 000000000000000000000000000000000000FF00E700FF00E700FF00E700FF00\r
+ E700FF00E700FF00E700FF00E700FF00E700FF00E700FF00E700FF00E700FF00\r
+ E700FF00E700FF00E700FF00E700FF00E700CE00A5000000000000000000F700\r
+ E700FF00E700D600E7005A0063000000000000000000DE00E700390063000000\r
+ 0000D600E70000000000000000004200E7004A00210052004200630084007300\r
+ 63007300A500E700A500BD0084008C000000FF00E7005A0021000000C600E700\r
+ 00009C00840042000000080000000000000000000000000000005200E700B500\r
+ 42000000C600BD008400BD008400CE00E70008000000000000009C00E700C600\r
+ E700000000006300E700000000008C00E7000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000FF00E700FF00\r
+ E70000000000000000000000000000000000000000000000000000000000FF00\r
+ 0000FF00E700FF00E70000000000000000000000000000000000000000000000\r
+ 000000000000000000000000000000000000FF00E700FF00E700FF00E700FF00\r
+ E700FF00E700FF00E700FF00E700FF00E700FF00E700FF00E700FF00E700FF00\r
+ E700FF00E700FF00E700FF00E700FF00E700FF00E700FF00E700FF00E700FF00\r
+ E700FF00E700FF00E700FF00E700FF00E700FF00E700FF00E700FF00E700FF00\r
+ E700FF00E700FF00E700FF00E700FF00E700FF00E700FF00E700FF00E700FF00\r
+ E700FF00E700FF00E700FF00E700FF00E700FF00E700FF00E700FF00E700FF00\r
+ E700FF00E700FF00E700FF00E700FF00E700FF00E700FF00E700FF00E700FF00\r
+ E700FF00E700FF00E700FF00E700FF00E700FF00E700FF00E700FF00E700FF00\r
+ E700FF00E700FF00E700FF00E700FF00E7000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 00000000000000000000000000000000000000000000FF00E700FF00E7000000\r
+ 0000FF00E7000000000000000000000000000000000000000000FF000000FF00\r
+ E700FF00E7000000E700FF00E700000000000000000000000000000000000000\r
+ 000000000000000000000000000000000000FF00E700FF00E700FF000000FF00\r
+ E700FF00E7000000000000000000FF00E700FF00E700FF00E700FF00E700FF00\r
+ E700FF00E700FF00E700FF00E700FF00E700FF00E700FF00E700FF00E700FF00\r
+ E700FF00E700FF00E700FF00E700FF00E700FF00E700FF00E700FF00E7000000\r
+ 000000000000FF00E700FF00E700FF00E700FF00E700FF00E700FF00E7000000\r
+ 000000000000FF00E700FF00E700FF00E700FF00E700FF00E700FF00E700FF00\r
+ E700FF00E700FF00E700FF00E700FF00E700FF00E700FF00E700FF00E700FF00\r
+ E700FF00E700FF00E700FF00E700FF00E700FF00E700FF00E700FF00E700FF00\r
+ E700FF00E7000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 000000000000000000000000000000000000FF00E700FF00E70000000000FF00\r
+ E700000000000000000000000000000000000000000000000000FF000000FF00\r
+ E7000000E7000000E7000000E700FF00E7000000000000000000000000000000\r
+ 000000000000000000000000000000000000FF00E700FF00E700FF00E7000000\r
+ E7000000E7000000E70000000000FF00E70000000000FF00E700FF00E700FF00\r
+ E700FF00E700FF00E700FF00E700FF00E700FF00E700FF00E700FF00E700FF00\r
+ E700FF00E700FF00E700FF00E70000000000FF00E700FF00E700FF00E700FF00\r
+ E700FF00E700FF00E700FF00E700FF00E700FF00E700FF00E700FF000000FF00\r
+ E7000000E7000000E7000000E700FF00E70000000000FF00E700FF00E700FF00\r
+ E700FF00E700FF00E700FF00E700FF00E700FF00E700FF00E700FF00E700FF00\r
+ E700FF00E700FF00E700FF00E700FF00E70000000000FF00E700FF00E700FF00\r
+ E700FF00E700FF00E700FF00E700FF00E7000000000000000000000000000000\r
+ 000000000000000000000000000000000000000000000000E700000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 000000000000000000000000000000000000FF00E70000000000FF00E7000000\r
+ 0000FF00E70000000000FF00E700FF00E700FF00E700FF00E700FF00E7000000\r
+ E7000000E7000000E70000000000FF00E7000000000000000000000000000000\r
+ 000000000000000000000000000000000000FF00E700FF00E70000000000FF00\r
+ E700FF00E700FF00E700FF00E700FF00E700FF00E70000000000FF00E700FF00\r
+ E700FF00E700FF00E700FF00E700FF00E700FF00E700FF00E700FF00E700FF00\r
+ E700FF00E700FF00E70000000000FF00E700FF00E700FF00E700FF00E700FF00\r
+ E700FF00E70000000000FF00E700FF00E700FF00E700FF00E70000000000FF00\r
+ E700FF00E700FF00E700FF00E700FF00E700FF00E70000000000FF00E700FF00\r
+ E700FF00E700FF00E700FF00E700FF00E700FF00E700FF00E700FF00E700FF00\r
+ E700FF00E700FF00E70000000000FF00E700FF00E700FF00E700FF00E700FF00\r
+ E700FF00E7008400000000000000FF00E7000000000000000000000000000000\r
+ 00000000000000000000000000000000000000000000FF00E7000000E700FF00\r
+ E700000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000FF00E7000000000000000000000000000000\r
+ 000000000000FF00E700840000000000000000000000840000000000E7000000\r
+ E70000000000000000000000000000000000FF00E70000000000000000000000\r
+ 000000000000000000000000000000000000840000000000000000000000FF00\r
+ E700FF00E700FF00E700FF00E700000000008400000000000000840000000000\r
+ 0000840000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000FF00E700FF00\r
+ E700FF0000000000000000000000000000000000000000000000000000000000\r
+ 0000FF00E700FF00E70000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000FF00E700FF00\r
+ C600FF000000FF00C600FF00C600FF0042000000000000000000000000000000\r
+ 0000000000000000000000000000840000000000000000000000000000000000\r
+ 000000000000000000000000000000000000000000000000E700FF00E7000000\r
+ E700000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000FF00E7000000000000000000000000000000\r
+ 0000FF00E7008400000000000000FF00E700FF00E7000000000084000000FF00\r
+ E70000000000000000000000000000000000FF00E70000000000000000000000\r
+ 0000000000000000000000000000000000008400000000000000000000000000\r
+ 0000FF00E700FF00E700FF00E700000000000000000084000000000000008400\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 000000000000000000000000000000000000000000000000000000000000FF00\r
+ E700FF00E700FF0000000000000000000000000000000000000000000000FF00\r
+ E700FF00E7000000000000000000000000000000000000000000000000000000\r
+ 00000000000000000000000000000000000000000000FF00E700FF00E700FF00\r
+ E700FF00E700FF00E700FF00E700840000000000000000000000000000000000\r
+ 0000000000000000000084000000840000000000000000000000000000000000\r
+ 00000000000000000000000000000000000000000000FF00E7000000E700FF00\r
+ E7000000E7000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000FF00E7000000000000000000000000000000\r
+ 0000FF00E70000000000FF00E7000000000000000000FF00E70000000000FF00\r
+ E70000000000000000000000000000000000FF00E70000000000000000000000\r
+ 0000000000000000000000000000000000008400000000000000000000000000\r
+ 0000FF00E70000000000FF00E700FF00E700FF00E70000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 000000000000FF00E700FF00E700FF00E700FF00E700FF00E700FF00E7000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 000000000000000000000000000000000000FF00E700FF00E700FF00E700FF00\r
+ E700FF00E700FF00E700FF00E700840000000000000000000000000000000000\r
+ 0000000000000000000000000000840000000000000000000000000000000000\r
+ 000000000000000000000000000000000000000000000000E700FF00E7000000\r
+ E700FF00E7000000E700FF00E7000000E700FF00E7000000E700000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000FF00E7000000000000000000000000000000\r
+ 0000FF00E70000000000FF00E7000000000000000000FF00E70000000000FF00\r
+ E70000000000000000000000000000000000FF00E70000000000000000000000\r
+ 0000000000000000000000000000000000008400000000000000000000000000\r
+ 000000000000FF00E700FF00E700FF00E700FF00E700FF00E700000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 00000000000000000000000000000000000084000000FF00E700FF00E700FF00\r
+ E700FF00E700FF00E700FF00E700840000000000000000000000000000000000\r
+ 0000000000000000000000000000840000000000000000000000000000000000\r
+ 00000000000000000000000000000000000000000000FF00E7000000E700FF00\r
+ E7000000E700FF00E7000000E700FF00E7000000E700FF00E700000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000FF00E7000000000000000000000000000000\r
+ 0000FF00E7008400000000000000FF00E700FF00E7000000000084000000FF00\r
+ E70000000000000000000000000000000000FF00E70000000000000000000000\r
+ 0000000000000000000000000000000000008400000000000000000000000000\r
+ 0000FF00E70000000000FF00E700FF00E700FF00E70000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000008400000084000000840000008400\r
+ 00008400000000000000FF00E700FF00E7000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 000000000000000000000000000000000000000000000000E700FF00E7000000\r
+ E700000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000FF00E7000000000000000000000000000000\r
+ 00000000E7000000E70084000000000000000000000084000000FF00E7000000\r
+ 000000000000000000000000000000000000FF00E70000000000000000000000\r
+ 0000000000000000000000000000000000008400000000000000000000000000\r
+ 000000000000FF00E70000000000FF00E7000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000E7000000E700FF00E700FF00\r
+ E70084000000FF00000084000000840000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 000000000000000000000000000000000000FF00E700000000000000E7000000\r
+ E7000000E700FF00E700FF00E700FF00E700FF00E700FF00E70000000000FF00\r
+ E70000000000FF00E70000000000FF00E7000000000000000000000000000000\r
+ 0000000000000000000000000000000000008400000000000000000000000000\r
+ 0000FF00E7000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 000000000000000000000000000000000000840000008400000084000000FF00\r
+ 0000840000000000E7000000E700000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 000000000000000000000000000000000000FF00E7000000E7000000E7000000\r
+ E700FF00E700FF00000000000000000000000000000000000000000000000000\r
+ 0000FF00E70000000000FF00E700FF00E7000000000000000000000000000000\r
+ 0000000000000000000000000000000000008400000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000B50000000000\r
+ 0000000000000000E70000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 00000000000000000000000000000000000000000000FF00E7000000E700FF00\r
+ E700FF00E700FF0000000000000000000000000000000000000000000000FF00\r
+ E70000000000FF00E700FF00E700000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000084000000000000008400\r
+ 00000000000000000000000000000000000000000000FF000000FF000000FF00\r
+ 0000FF000000FF00000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000FF00E7000000000000000000000000000000\r
+ 0000FF00E7008400000000000000FF00E700FF00E7000000000084000000FF00\r
+ E70000000000000000000000000000000000FF00E70000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 000000000000000000000000000000000000000000000000000084000000FF00\r
+ 000084000000FF00000084000000840000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000FF00E700FF00\r
+ E700FF0000000000000000000000000000000000000000000000000000000000\r
+ 0000FF00E700FF00E70000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000008400\r
+ 000084000000FF0000008400000084000000FF00000084000000FF0000008400\r
+ 0000FF0000008400000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000FF00E7000000000000000000000000000000\r
+ 0000FF00E70000000000FF00E7000000000000000000FF00E70000000000FF00\r
+ E70000000000000000000000000000000000FF00E70000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000FF000000FF00\r
+ 0000FF000000FF000000FF000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 000000000000000000000000000000000000000000000000000000000000FF00\r
+ E700FF00E700FF0000000000000000000000000000000000000000000000FF00\r
+ E700FF00E7000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000008400\r
+ 0000840000008400000084000000840000008400000084000000840000008400\r
+ 0000840000008400000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000FF00E7000000000000000000000000000000\r
+ 0000FF00E70000000000FF00E7000000000000000000FF00E70000000000FF00\r
+ E70000000000000000000000000000000000FF00E70000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 000000000000000000000000E7000000E7000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 000000000000FF00E700FF00E700FF00E700FF00E700FF00E700FF00E7000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000084000000000000008400\r
+ 0000840000000000000084000000840000000000000084000000000000008400\r
+ 0000000000008400000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000FF00E7000000000000000000000000000000\r
+ 0000FF00E7008400000000000000FF00E700FF00E7000000000084000000FF00\r
+ E70000000000000000000000000000000000FF00E70000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 00000000000000000000000000000000000000000000000000000000E7000000\r
+ E7000000E7000000E7000000E7000000E7000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000840000008400\r
+ 0000000000008400000000000000000000008400000000000000840000000000\r
+ 0000840000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000FF00E7000000000000000000000000000000\r
+ 00000000E7000000E70084000000000000000000000084000000FF00E7000000\r
+ 000000000000000000000000000000000000FF00E70000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 00000000000000000000000000000000000000000000000000000000E7000000\r
+ E7000000E7000000E7000000E700FF00E7000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 000000000000000000000000000000000000840000008400000084000000FF00\r
+ E700000000000000000084000000840000000000000084000000000000008400\r
+ 0000000000008400000000000000000000000000000000000000000000000000\r
+ 000000000000000000000000000000000000FF00E700000000000000E7000000\r
+ E7000000E700FF00E700FF00E700FF00E700FF00E700FF00E70000000000FF00\r
+ E70000000000FF00E70000000000FF00E7000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ E7000000E700FF00E700FF00E700FF00E7000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 000000000000000000000000000000000000840000000000000000000000FF00\r
+ E700FF00E7000000000000000000000000008400000000000000840000000000\r
+ 0000840000000000000000000000000000000000000000000000000000000000\r
+ 000000000000000000000000000000000000FF00E7000000E7000000E7000000\r
+ E700FF00E700FF00000000000000000000000000000000000000000000000000\r
+ 0000FF00E70000000000FF00E700FF00E7000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 000000000000000000000000000000000000000000000000000000000000FF00\r
+ E700FF00E700FF00E700FF00E700000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000008400000000000000FF00E7000000\r
+ 0000FF00E700FF00E70000000000840000000000000084000000000000008400\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 00000000000000000000000000000000000000000000FF00E7000000E700FF00\r
+ E700FF00E700FF0000000000000000000000000000000000000000000000FF00\r
+ E70000000000FF00E700FF00E700000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000FF00E7000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 000000000000000000000000000000000000FF00E7000000000084000000FF00\r
+ E700FF00E700FF00E700FF00E700FF00E700FF00E70000000000FF00E700FF00\r
+ E700FF00E700FF00E700FF00E700FF00E700FF00E700FF00E700FF00E700FF00\r
+ E700FF00E700FF00E70000000000FF00E700FF00E700FF00E700FF00E700FF00\r
+ E700FF00E70000000000FF00E700FF00E700FF00E700FF00E70000000000FF00\r
+ E700FF00E700FF00E700FF00E700FF00E700FF00E70000000000FF00E700FF00\r
+ E700FF00E700FF00E700FF00E700FF00E700FF00E700FF00E700FF00E700FF00\r
+ E700FF00E700FF00E70000000000FF00E700FF00E700FF00E700FF00E700FF00\r
+ E700FF00E70000000000FF00E700FF00E7000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 000000000000000000000000000000000000FF00E700FF00E700FF00E700FF00\r
+ E700FF00E700FF00E700FF00E70000000000FF00E700FF00E700FF00E700FF00\r
+ E700FF00E700FF00E700FF00E700FF00E700FF00E700FF00E700FF00E700FF00\r
+ E700FF00E700FF00E700FF00E70000000000FF00E7000000E7000000E7000000\r
+ E700FF00E700FF000000FF00E700FF00E700FF00E700FF00E700FF00E700FF00\r
+ E700FF00E700FF00E700FF00E700FF00E70000000000FF00E700FF00E700FF00\r
+ E700FF00E700FF00E700FF00E700FF00E700FF00E700FF00E700FF00E700FF00\r
+ E700FF00E700FF00E700FF00E70000000000FF00E700000000000000E7000000\r
+ E7000000E700FF00E700FF00E700FF00E7000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 000000000000000000000000000000000000000000000000000000000000FF00\r
+ E700FF00E700FF00E700FF00E700FF00E700FF00E700FF00E700FF00E700FF00\r
+ E700FF00E700FF00E700FF00E700FF00E700FF00E700FF00E700FF00E700FF00\r
+ E700FF00E700FF00E700FF00E700FF00E700FF00E700FF00E700FF00E7000000\r
+ 000000000000FF00E700FF00E700FF00E700FF00E700FF00E700FF00E7000000\r
+ 000000000000FF00E700FF00E700FF00E700FF00E700FF00E700FF00E700FF00\r
+ E700FF00E700FF00E700FF00E700FF00E700FF00E700FF00E700FF00E700FF00\r
+ E700FF00E700FF00E700FF00E700FF00E700FF00E7000000000000000000FF00\r
+ E700FF00E700FF000000FF00E700FF00E700424D3E000000000000003E000000\r
+ 2800000080000000200000000100010000000000000200000000000000000000\r
+ 000000000000000000000000FFFFFF00FFFFFFFFFFFFFFFFFFFFFF00FFFFFF00\r
+ FFFFFFFFFFFFFFFFFFFFFF00FFFFFF00FFFFFFFFFFFFFFFFFFFFFF00FFFFFF00\r
+ FFFFFFFFFFFFFFFFFFFFFF00FFFFFF00FFFFFFFFFFFFFFFFFFFFFF00FFFFFF00\r
+ FFFFFFFFFFFFFFFFFFFFFF00FFFFFF00FFFFFFFFFFF81FFFFFFFFF00FFFFFF00\r
+ FFFFFFFFFFE007FFFFFFFF00FFFFFF00FFFFFFFFFF87C1FFFFFFFF00FFFFFF00\r
+ FFFFFFFFFF4FE2FFFFFFFF00FFFFFF00FF001FFFFF17C0FFFFFFFF00FFFFFF00\r
+ FF000FFFFE2FC07FFFFFFF00FFFFFF00FF0007FFFE54007FFFFFFF00FFFFFF00\r
+ FF0003FFFCF8023FFFFFFF00FFFFFF00FF0001FFFCF00F3FFFFFFF00FFFFFF00\r
+ FF0000FFFCF18F3FFFFFFF00FFFFFF00FF001FFFFCF18F3FFFFFFF00FFFFFF00\r
+ FF001FFFFCF00F3FFFFFFF00FFFFFF00FF001FFFFC401F3FFFFFFF00FFFFFF00\r
+ FF8FF1FFFE002A7FFFFFFF00FFFFFF00FFFFF9FFFE03F47FFFFFFF00FFFFFF00\r
+ FFFF75FFFF03E8FFFFFFFF00FFFFFF00FFFF8FFFFF47F2FFFFFFFF00FFFFFF00\r
+ FFFFFFFFFF83E1FFFFFFFF00FFFFFF00FFFFFFFFFFE007FFFFFFFF00FFFFFF00\r
+ FFFFFFFFFFF81FFFFFFFFF00FFFFFF00FFFFFFFFFFFFFFFFFFFFFF00FFFFFF00\r
+ FFFFFFFFFFFFFFFFFFFFFF00FFFFFF00FFFFFFFFFFFFFFFFFFFFFF00FFFFFF00\r
+ FFFFFFFFFFFFFFFFFFFFFF00FFFFFF00FFFFFFFFFFFFFFFFFFFFFF00FFFFFF00\r
+ FFFFFFFFFFFFFFFF00000000FFFFFF0000000000000000000000000000000000\r
+ 000000000000}\r
+ end\r
+ object PopupMenuMain: TPopupMenu\r
+ AutoPopup = False\r
+ Left = 72\r
+ Top = 176\r
+ object PopupClose: TMenuItem\r
+ Caption = '&Close this popup'\r
+ OnClick = PopupCloseClick\r
+ end\r
+ object N9: TMenuItem\r
+ Caption = '-'\r
+ end\r
+ object PopupPlay: TMenuItem\r
+ Caption = '&Play'\r
+ OnClick = PopupPlayClick\r
+ end\r
+ object PopupPause: TMenuItem\r
+ Caption = 'Pause'\r
+ OnClick = PopupPauseClick\r
+ end\r
+ object PopupStop: TMenuItem\r
+ Caption = 'Stop'\r
+ OnClick = PopupStopClick\r
+ end\r
+ object PopupBack: TMenuItem\r
+ Caption = 'Back'\r
+ OnClick = PopupBackClick\r
+ end\r
+ object PopupSlow: TMenuItem\r
+ Caption = 'Slow'\r
+ OnClick = PopupSlowClick\r
+ end\r
+ object PopupFast: TMenuItem\r
+ Caption = 'Fast'\r
+ OnClick = PopupFastClick\r
+ end\r
+ object N5: TMenuItem\r
+ Caption = '-'\r
+ end\r
+ object PopupToggleInterface: TMenuItem\r
+ Caption = 'Toggle &Interface'\r
+ OnClick = PopupToggleInterfaceClick\r
+ end\r
+ object PopupFullscreen: TMenuItem\r
+ Caption = '&Fullscreen'\r
+ OnClick = PopupFullscreenClick\r
+ end\r
+ object N6: TMenuItem\r
+ Caption = '-'\r
+ end\r
+ object PopupNext: TMenuItem\r
+ Caption = 'Next'\r
+ OnClick = PopupNextClick\r
+ end\r
+ object PopupPrev: TMenuItem\r
+ Caption = 'Prev'\r
+ OnClick = PopupPrevClick\r
+ end\r
+ object PopupJump: TMenuItem\r
+ Caption = '&Jump...'\r
+ OnClick = PopupJumpClick\r
+ end\r
+ object PopupProgram: TMenuItem\r
+ Caption = 'Program'\r
+ end\r
+ object PopupNavigation: TMenuItem\r
+ Caption = 'Navigation'\r
+ end\r
+ object PopupAudio: TMenuItem\r
+ Caption = 'Audio'\r
+ end\r
+ object PopupSubtitles: TMenuItem\r
+ Caption = 'Subtitles'\r
+ end\r
+ object PopupFile: TMenuItem\r
+ Caption = 'File'\r
+ object PopupOpenFile: TMenuItem\r
+ Caption = 'Open file...'\r
+ OnClick = PopupOpenFileClick\r
+ end\r
+ object PopupOpenDisc: TMenuItem\r
+ Caption = 'Open disc...'\r
+ OnClick = PopupOpenDiscClick\r
+ end\r
+ object PopupNetworkStream: TMenuItem\r
+ Caption = 'Network stream...'\r
+ OnClick = PopupNetworkStreamClick\r
+ end\r
+ end\r
+ object PopupPlaylist: TMenuItem\r
+ Caption = 'Playlist...'\r
+ OnClick = PopupPlaylistClick\r
+ end\r
+ object PopupPreferences: TMenuItem\r
+ Caption = 'Preferences...'\r
+ OnClick = PopupPreferencesClick\r
+ end\r
+ object N7: TMenuItem\r
+ Caption = '-'\r
+ end\r
+ object PopupExit: TMenuItem\r
+ Caption = 'E&xit'\r
+ OnClick = PopupExitClick\r
+ end\r
+ end\r
+ object TimerManage: TTimer\r
+ OnTimer = TimerManageTimer\r
+ Left = 136\r
+ Top = 176\r
+ end\r
+end\r
--- /dev/null
+/*****************************************************************************\r
+ * mainframe.h: Prototype for main window\r
+ *****************************************************************************\r
+ * Copyright (C) 2002 VideoLAN\r
+ *\r
+ * Authors: Olivier Teuliere <ipkiss@via.ecp.fr>\r
+ *\r
+ * This program is free software; you can redistribute it and/or modify\r
+ * it under the terms of the GNU General Public License as published by\r
+ * the Free Software Foundation; either version 2 of the License, or\r
+ * (at your option) any later version.\r
+ * \r
+ * This program is distributed in the hope that it will be useful,\r
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r
+ * GNU General Public License for more details.\r
+ *\r
+ * You should have received a copy of the GNU General Public License\r
+ * along with this program; if not, write to the Free Software\r
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA.\r
+ *****************************************************************************/\r
+\r
+\r
+#ifndef mainframeH\r
+#define mainframeH\r
+//---------------------------------------------------------------------------\r
+#include <Classes.hpp>\r
+#include <Controls.hpp>\r
+#include <StdCtrls.hpp>\r
+#include <Forms.hpp>\r
+#include <ComCtrls.hpp>\r
+#include <Dialogs.hpp>\r
+#include <ImgList.hpp>\r
+#include <Menus.hpp>\r
+#include <ToolWin.hpp>\r
+#include <AppEvnts.hpp>\r
+#include <ExtCtrls.hpp>\r
+//---------------------------------------------------------------------------\r
+class TMainFrameDlg : public TForm\r
+{\r
+__published: // IDE-managed Components\r
+ TToolBar *ToolBar1;\r
+ TToolButton *ToolButtonFile;\r
+ TToolButton *ToolButtonDisc;\r
+ TToolButton *ToolButtonNet;\r
+ TToolButton *ToolButtonSep1;\r
+ TToolButton *ToolButtonBack;\r
+ TToolButton *ToolButtonStop;\r
+ TToolButton *ToolButtonPlay;\r
+ TToolButton *ToolButtonPause;\r
+ TToolButton *ToolButtonSlow;\r
+ TToolButton *ToolButtonFast;\r
+ TToolButton *ToolButtonSep2;\r
+ TToolButton *ToolButtonPlaylist;\r
+ TToolButton *ToolButtonPrev;\r
+ TToolButton *ToolButtonNext;\r
+ TMainMenu *MainMenu1;\r
+ TMenuItem *MenuFile;\r
+ TMenuItem *MenuOpenFile;\r
+ TMenuItem *MenuOpenDisc;\r
+ TMenuItem *MenuNetworkStream;\r
+ TMenuItem *N1;\r
+ TMenuItem *MenuExit;\r
+ TMenuItem *MenuView;\r
+ TMenuItem *MenuHideinterface;\r
+ TMenuItem *MenuFullscreen;\r
+ TMenuItem *N2;\r
+ TMenuItem *MenuTitle;\r
+ TMenuItem *MenuChapter;\r
+ TMenuItem *MenuAngle;\r
+ TMenuItem *N3;\r
+ TMenuItem *MenuPlaylist;\r
+ TMenuItem *MenuModules;\r
+ TMenuItem *MenuMessages;\r
+ TMenuItem *MenuSettings;\r
+ TMenuItem *MenuAudio;\r
+ TMenuItem *MenuSubtitles;\r
+ TMenuItem *N4;\r
+ TMenuItem *MenuPreferences;\r
+ TMenuItem *MenuHelp;\r
+ TMenuItem *MenuAbout;\r
+ TOpenDialog *OpenDialog1;\r
+ TImageList *ImageListToolbar;\r
+ TPopupMenu *PopupMenuMain;\r
+ TMenuItem *PopupPlay;\r
+ TMenuItem *PopupPause;\r
+ TMenuItem *PopupStop;\r
+ TMenuItem *PopupBack;\r
+ TMenuItem *PopupSlow;\r
+ TMenuItem *PopupFast;\r
+ TMenuItem *N5;\r
+ TMenuItem *PopupToggleInterface;\r
+ TMenuItem *PopupFullscreen;\r
+ TMenuItem *N6;\r
+ TMenuItem *PopupNext;\r
+ TMenuItem *PopupPrev;\r
+ TMenuItem *PopupJump;\r
+ TMenuItem *PopupNavigation;\r
+ TMenuItem *PopupProgram;\r
+ TMenuItem *PopupAudio;\r
+ TMenuItem *PopupSubtitles;\r
+ TMenuItem *PopupFile;\r
+ TMenuItem *PopupPlaylist;\r
+ TMenuItem *PopupPreferences;\r
+ TMenuItem *N7;\r
+ TMenuItem *PopupExit;\r
+ TToolButton *ToolButtonEject;\r
+ TStatusBar *StatusBar;\r
+ TGroupBox *GroupBoxFile;\r
+ TLabel *LabelFileName;\r
+ TGroupBox *GroupBoxNetwork;\r
+ TEdit *EditChannel;\r
+ TUpDown *UpDownChannel;\r
+ TLabel *LabelChannel;\r
+ TLabel *LabelServer;\r
+ TGroupBox *GroupBoxDisc;\r
+ TMenuItem *N8;\r
+ TMenuItem *MenuEjectDisc;\r
+ TMenuItem *MenuProgram;\r
+ TLabel *LabelDisc;\r
+ TLabel *LabelTitle;\r
+ TButton *ButtonTitlePrev;\r
+ TButton *ButtonTitleNext;\r
+ TButton *ButtonChapterPrev;\r
+ TButton *ButtonChapterNext;\r
+ TLabel *LabelChapter;\r
+ TLabel *LabelTitleCurrent;\r
+ TLabel *LabelChapterCurrent;\r
+ TButton *ButtonGo;\r
+ TGroupBox *GroupBoxSlider;\r
+ TTrackBar *TrackBar;\r
+ TTimer *TimerManage;\r
+ TMenuItem *PopupOpenFile;\r
+ TMenuItem *PopupOpenDisc;\r
+ TMenuItem *PopupNetworkStream;\r
+ TMenuItem *PopupClose;\r
+ TMenuItem *N9;\r
+ void __fastcall TimerManageTimer( TObject *Sender );\r
+ void __fastcall TrackBarChange( TObject *Sender );\r
+ void __fastcall FormClose( TObject *Sender, TCloseAction &Action );\r
+ void __fastcall MenuOpenFileClick( TObject *Sender );\r
+ void __fastcall MenuOpenDiscClick( TObject *Sender );\r
+ void __fastcall MenuNetworkStreamClick( TObject *Sender );\r
+ void __fastcall MenuExitClick( TObject *Sender );\r
+ void __fastcall MenuFullscreenClick( TObject *Sender );\r
+ void __fastcall MenuPlaylistClick( TObject *Sender );\r
+ void __fastcall MenuMessagesClick( TObject *Sender );\r
+ void __fastcall MenuPreferencesClick( TObject *Sender );\r
+ void __fastcall MenuAboutClick( TObject *Sender );\r
+ void __fastcall ToolButtonFileClick( TObject *Sender );\r
+ void __fastcall ToolButtonDiscClick( TObject *Sender );\r
+ void __fastcall ToolButtonNetClick( TObject *Sender );\r
+ void __fastcall ToolButtonPlaylistClick( TObject *Sender );\r
+ void __fastcall ToolButtonBackClick( TObject *Sender );\r
+ void __fastcall ToolButtonStopClick( TObject *Sender );\r
+ void __fastcall ToolButtonPlayClick( TObject *Sender );\r
+ void __fastcall ToolButtonPauseClick( TObject *Sender );\r
+ void __fastcall ToolButtonSlowClick( TObject *Sender );\r
+ void __fastcall ToolButtonFastClick( TObject *Sender );\r
+ void __fastcall ToolButtonPrevClick( TObject *Sender );\r
+ void __fastcall ToolButtonNextClick( TObject *Sender );\r
+ void __fastcall ToolButtonEjectClick( TObject *Sender );\r
+ void __fastcall PopupCloseClick( TObject *Sender );\r
+ void __fastcall PopupPlayClick( TObject *Sender );\r
+ void __fastcall PopupPauseClick( TObject *Sender );\r
+ void __fastcall PopupStopClick( TObject *Sender );\r
+ void __fastcall PopupBackClick( TObject *Sender );\r
+ void __fastcall PopupSlowClick( TObject *Sender );\r
+ void __fastcall PopupFastClick( TObject *Sender );\r
+ void __fastcall PopupToggleInterfaceClick( TObject *Sender );\r
+ void __fastcall PopupFullscreenClick( TObject *Sender );\r
+ void __fastcall PopupNextClick( TObject *Sender );\r
+ void __fastcall PopupPrevClick( TObject *Sender );\r
+ void __fastcall PopupJumpClick( TObject *Sender );\r
+ void __fastcall PopupPlaylistClick( TObject *Sender );\r
+ void __fastcall PopupPreferencesClick( TObject *Sender );\r
+ void __fastcall PopupExitClick( TObject *Sender );\r
+ void __fastcall PopupOpenFileClick( TObject *Sender );\r
+ void __fastcall PopupOpenDiscClick( TObject *Sender );\r
+ void __fastcall PopupNetworkStreamClick( TObject *Sender );\r
+ void __fastcall ButtonTitlePrevClick( TObject *Sender );\r
+ void __fastcall ButtonTitleNextClick( TObject *Sender );\r
+ void __fastcall ButtonChapterPrevClick( TObject *Sender );\r
+ void __fastcall ButtonChapterNextClick( TObject *Sender );\r
+ void __fastcall ButtonGoClick( TObject *Sender );\r
+private: // User declarations\r
+public: // User declarations\r
+ __fastcall TMainFrameDlg( TComponent* Owner );\r
+ void __fastcall DisplayHint( TObject *Sender );\r
+ void __fastcall ModeManage();\r
+ void __fastcall MenuProgramClick( TObject *Sender );\r
+ void __fastcall MenuAudioClick( TObject *Sender );\r
+ void __fastcall MenuSubtitleClick( TObject *Sender );\r
+ void __fastcall MenuTitleClick( TObject *Sender );\r
+ void __fastcall MenuChapterClick( TObject *Sender );\r
+ void __fastcall PopupProgramClick( TObject *Sender );\r
+ void __fastcall PopupAudioClick( TObject *Sender );\r
+ void __fastcall PopupSubtitleClick( TObject *Sender );\r
+ void __fastcall PopupNavigationClick( TObject *Sender );\r
+};\r
+//---------------------------------------------------------------------------\r
+#endif\r
--- /dev/null
+/*****************************************************************************\r
+ * menu.cpp: functions to handle menu items\r
+ *****************************************************************************\r
+ * Copyright (C) 2002 VideoLAN\r
+ *\r
+ * Authors: Olivier Teuliere <ipkiss@via.ecp.fr>\r
+ *\r
+ * This program is free software; you can redistribute it and/or modify\r
+ * it under the terms of the GNU General Public License as published by\r
+ * the Free Software Foundation; either version 2 of the License, or\r
+ * (at your option) any later version.\r
+ * \r
+ * This program is distributed in the hope that it will be useful,\r
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r
+ * GNU General Public License for more details.\r
+ *\r
+ * You should have received a copy of the GNU General Public License\r
+ * along with this program; if not, write to the Free Software\r
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA.\r
+ *****************************************************************************/\r
+\r
+#include <vcl.h>\r
+//#pragma hdrstop\r
+\r
+#include <videolan/vlc.h>\r
+\r
+#include "stream_control.h"\r
+#include "input_ext-intf.h"\r
+\r
+#include "interface.h"\r
+#include "intf_playlist.h"\r
+\r
+#include "menu.h"\r
+#include "win32_common.h"\r
+\r
+\r
+/****************************************************************************\r
+ * Local Prototypes\r
+ ****************************************************************************/\r
+extern struct intf_thread_s *p_intfGlobal;\r
+\r
+static TMenuItem *Index2Item( TMenuItem *, int, bool );\r
+static int Item2Index( TMenuItem *, TMenuItem * );\r
+static void __fastcall LangChange( TMenuItem *, TMenuItem *, TMenuItem *, int );\r
+static void __fastcall ProgramChange( TMenuItem *, TMenuItem * );\r
+\r
+static void __fastcall RadioMenu( TMenuItem *, AnsiString,\r
+ int, int, TNotifyEvent );\r
+static void __fastcall ProgramMenu( TMenuItem *, pgrm_descriptor_t *,\r
+ TNotifyEvent );\r
+static void __fastcall LanguageMenu( TMenuItem *t, es_descriptor_t *,\r
+ int, TNotifyEvent );\r
+static void __fastcall NavigationMenu( TMenuItem *, TNotifyEvent );\r
+\r
+\r
+static TMenuItem *Index2Item( TMenuItem *Root, int i_index, bool SingleColumn )\r
+{\r
+ if( SingleColumn || ( i_index < 20 ) )\r
+ {\r
+ return Root->Items[i_index];\r
+ }\r
+ else\r
+ {\r
+ return Root->Items[i_index / 10]->Items[i_index % 10];\r
+ }\r
+}\r
+\r
+static int Item2Index( TMenuItem *Root, TMenuItem *Item )\r
+{\r
+ if( Item->Parent == Root )\r
+ {\r
+ return Item->MenuIndex;\r
+ }\r
+ else\r
+ {\r
+ return( 10 * Item->Parent->MenuIndex + Item->MenuIndex );\r
+ }\r
+}\r
+\r
+\r
+/****************************************************************************\r
+ * LangChange: change audio or subtitles languages\r
+ ****************************************************************************\r
+ * Toggle the language, and update the selected menuitems.\r
+ ****************************************************************************/\r
+static void __fastcall LangChange( TMenuItem *RootCurrent, TMenuItem *Item,\r
+ TMenuItem *RootOther, int i_cat )\r
+{\r
+ intf_thread_t * p_intf = p_intfGlobal;\r
+ es_descriptor_t * p_es;\r
+ es_descriptor_t * p_es_old;\r
+ int i_index;\r
+\r
+ /* find the selected ES */\r
+ i_index = Item2Index( RootCurrent, Item ) - 1;\r
+ if( i_index < 0 )\r
+ {\r
+ /* 'None' was selected */\r
+ p_es = NULL;\r
+ }\r
+ else\r
+ {\r
+ vlc_mutex_lock( &p_input_bank->pp_input[0]->stream.stream_lock );\r
+ p_es = p_input_bank->pp_input[0]->stream.pp_es[i_index];\r
+ vlc_mutex_unlock( &p_input_bank->pp_input[0]->stream.stream_lock );\r
+ }\r
+\r
+ /* find the current ES */\r
+ if( i_cat == AUDIO_ES )\r
+ {\r
+ p_es_old = p_intf->p_sys->p_audio_es_old;\r
+ p_intf->p_sys->p_audio_es_old = p_es;\r
+ }\r
+ else\r
+ {\r
+ p_es_old = p_intf->p_sys->p_spu_es_old;\r
+ p_intf->p_sys->p_spu_es_old = p_es;\r
+ }\r
+\r
+ /* exchange them */\r
+ input_ToggleES( p_input_bank->pp_input[0], p_es_old, false );\r
+ input_ToggleES( p_input_bank->pp_input[0], p_es, true );\r
+\r
+ Item->Checked = true;\r
+ Index2Item( RootOther, i_index + 1, true )->Checked = true;\r
+}\r
+\r
+\r
+/****************************************************************************\r
+ * ProgramChange: change the program\r
+ ****************************************************************************\r
+ * Toggle the program, and update the selected menuitems.\r
+ ****************************************************************************/\r
+static void __fastcall ProgramChange( TMenuItem *Item, TMenuItem *RootOther )\r
+{\r
+ intf_thread_t * p_intf = p_intfGlobal;\r
+ int i_program = Item->Tag;\r
+\r
+ /* toggle the program */\r
+ input_ChangeProgram( p_input_bank->pp_input[0], (u16)i_program );\r
+\r
+ /* check selected menu items */\r
+ Item->Checked = true;\r
+ Index2Item( RootOther, i_program - 1, true )->Checked = true;\r
+\r
+ /* update audio/subtitles menus */\r
+ p_intf->p_sys->b_audio_update = 1;\r
+ p_intf->p_sys->b_spu_update = 1;\r
+ vlc_mutex_lock( &p_input_bank->pp_input[0]->stream.stream_lock );\r
+ SetupMenus( p_intf );\r
+ vlc_mutex_unlock( &p_input_bank->pp_input[0]->stream.stream_lock );\r
+ p_intf->p_sys->b_audio_update = 0;\r
+ p_intf->p_sys->b_spu_update = 0;\r
+\r
+ input_SetStatus( p_input_bank->pp_input[0], INPUT_STATUS_PLAY );\r
+}\r
+\r
+\r
+/****************************************************************************\r
+ * TMainFrameDlg::*Click: callbacks for the menuitems\r
+ ****************************************************************************\r
+ * These functions need to be in a class, or we won't be able to pass them\r
+ * as arguments (since TNotifyEvent uses __closure)\r
+ ****************************************************************************/\r
+\r
+ /*\r
+ * Audio\r
+ */\r
+\r
+void __fastcall TMainFrameDlg::MenuAudioClick( TObject *Sender )\r
+{\r
+ LangChange( MenuAudio, (TMenuItem *)Sender, PopupAudio, AUDIO_ES );\r
+}\r
+\r
+void __fastcall TMainFrameDlg::PopupAudioClick( TObject *Sender )\r
+{\r
+ LangChange( PopupAudio, (TMenuItem *)Sender, MenuAudio, AUDIO_ES );\r
+}\r
+\r
+/*\r
+ * Subtitles\r
+ */\r
+\r
+void __fastcall TMainFrameDlg::MenuSubtitleClick( TObject *Sender )\r
+{\r
+ LangChange( MenuSubtitles, (TMenuItem *)Sender, PopupSubtitles, SPU_ES );\r
+}\r
+\r
+void __fastcall TMainFrameDlg::PopupSubtitleClick( TObject *Sender )\r
+{\r
+ LangChange( PopupSubtitles, (TMenuItem *)Sender, MenuSubtitles, SPU_ES );\r
+}\r
+\r
+/*\r
+ * Program\r
+ */\r
+\r
+void __fastcall TMainFrameDlg::MenuProgramClick( TObject *Sender )\r
+{\r
+ ProgramChange( (TMenuItem *)Sender, PopupProgram );\r
+}\r
+\r
+void __fastcall TMainFrameDlg::PopupProgramClick( TObject *Sender )\r
+{\r
+ ProgramChange( (TMenuItem *)Sender, MenuProgram );\r
+}\r
+\r
+/*\r
+ * Navigation\r
+ */\r
+\r
+void __fastcall TMainFrameDlg::PopupNavigationClick( TObject *Sender )\r
+{\r
+ TMenuItem * Item = (TMenuItem *)Sender;\r
+ TMenuItem * ItemTitle;\r
+ input_area_t * p_area;\r
+ int i_title = DATA2TITLE( Item->Tag );\r
+ int i_chapter = DATA2CHAPTER( Item->Tag );\r
+\r
+ p_area = p_input_bank->pp_input[0]->stream.pp_areas[i_title];\r
+ p_area->i_part = i_chapter;\r
+\r
+ input_ChangeArea( p_input_bank->pp_input[0], (input_area_t*)p_area );\r
+\r
+ Item->Checked = true;\r
+ ItemTitle = Index2Item( MenuTitle, i_title - 1, false );\r
+ if( ItemTitle->Checked )\r
+ {\r
+ /* same title, new chapter */\r
+ Index2Item( MenuChapter, i_chapter - 1, false )->Checked = true;\r
+ }\r
+ else\r
+ {\r
+ /* new title => we must rebuild the chapter menu */\r
+ vlc_mutex_lock( &p_input_bank->pp_input[0]->stream.stream_lock );\r
+ RadioMenu( MenuChapter, "Chapter",\r
+ p_input_bank->pp_input[0]->stream.p_selected_area->i_part_nb,\r
+ i_chapter, MenuChapterClick );\r
+ vlc_mutex_unlock( &p_input_bank->pp_input[0]->stream.stream_lock );\r
+ }\r
+\r
+ input_SetStatus( p_input_bank->pp_input[0], INPUT_STATUS_PLAY );\r
+}\r
+\r
+/*\r
+ * Title\r
+ */\r
+\r
+void __fastcall TMainFrameDlg::MenuTitleClick( TObject *Sender )\r
+{\r
+ TMenuItem * Item = (TMenuItem *)Sender;\r
+ TMenuItem * ItemTitle;\r
+ int i_title = Item->Tag;\r
+\r
+ input_ChangeArea( p_input_bank->pp_input[0],\r
+ p_input_bank->pp_input[0]->stream.pp_areas[i_title] );\r
+ Item->Checked = true;\r
+ ItemTitle = Index2Item( PopupNavigation, i_title - 1, false );\r
+ Index2Item( ItemTitle, 0, false )->Checked = true;\r
+\r
+ input_SetStatus( p_input_bank->pp_input[0], INPUT_STATUS_PLAY );\r
+}\r
+\r
+/*\r
+ * Chapter\r
+ */\r
+\r
+void __fastcall TMainFrameDlg::MenuChapterClick( TObject *Sender )\r
+{\r
+ TMenuItem * Item = (TMenuItem *)Sender;\r
+ TMenuItem * ItemTitle;\r
+ input_area_t * p_area;\r
+ int i_title;\r
+ int i_chapter = Item->Tag;\r
+\r
+ p_area = p_input_bank->pp_input[0]->stream.p_selected_area;\r
+ p_area->i_part = i_chapter;\r
+\r
+ input_ChangeArea( p_input_bank->pp_input[0], (input_area_t*)p_area );\r
+\r
+ i_title = p_input_bank->pp_input[0]->stream.p_selected_area->i_id;\r
+ ItemTitle = Index2Item( PopupNavigation, i_title - 1, false );\r
+ Index2Item( ItemTitle, i_chapter - 1, false )->Checked = true;\r
+\r
+ input_SetStatus( p_input_bank->pp_input[0], INPUT_STATUS_PLAY );\r
+}\r
+\r
+\r
+/****************************************************************************\r
+ * Functions to generate menus\r
+ ****************************************************************************/\r
+\r
+/*****************************************************************************\r
+ * RadioMenu: update interactive menus of the interface\r
+ *****************************************************************************\r
+ * Sets up menus with information from input\r
+ * Warning: since this function is designed to be called by management\r
+ * function, the interface lock has to be taken\r
+ *****************************************************************************/\r
+static void __fastcall RadioMenu( TMenuItem * Root, AnsiString ItemName,\r
+ int i_nb, int i_selected,\r
+ TNotifyEvent MenuItemClick )\r
+{\r
+ TMenuItem * ItemGroup;\r
+ TMenuItem * Item;\r
+ TMenuItem * ItemActive;\r
+ AnsiString Name;\r
+ int i_item;\r
+\r
+ /* remove previous menu */\r
+ Root->Enabled = false;\r
+ Root->Clear();\r
+\r
+ ItemActive = NULL;\r
+\r
+ for( i_item = 0; i_item < i_nb; i_item++ )\r
+ {\r
+ /* we group titles/chapters in packets of ten for small screens */\r
+ if( ( i_item % 10 == 0 ) && ( i_nb > 20 ) )\r
+ {\r
+ if( i_item != 0 )\r
+ {\r
+ Root->Add( ItemGroup );\r
+ }\r
+\r
+ Name.sprintf( "%ss %d to %d", ItemName, i_item + 1, i_item + 10 );\r
+ ItemGroup = new TMenuItem( Root );\r
+ ItemGroup->Hint = Name;\r
+\r
+ /* set the accelerator character */\r
+ Name.Insert( "&", Name.Length() - 1 );\r
+ ItemGroup->Caption = Name;\r
+ }\r
+\r
+ Name.sprintf( "%s %d", ItemName, i_item + 1 );\r
+ Item = new TMenuItem( Root );\r
+ Item->RadioItem = true;\r
+ Item->Hint = Name;\r
+\r
+ /* set the accelerator character */\r
+ Name.Insert( "&", Name.Length() );\r
+ Item->Caption = Name;\r
+\r
+ /* FIXME: temporary hack to save i_item with the Item\r
+ * It will be used in the callback. */\r
+ Item->Tag = i_item + 1;\r
+\r
+ if( i_selected == i_item + 1 )\r
+ {\r
+ ItemActive = Item;\r
+ }\r
+ \r
+ /* setup signal handling */\r
+ Item->OnClick = MenuItemClick;\r
+\r
+ if( i_nb > 20 )\r
+ {\r
+ ItemGroup->Add( Item );\r
+ }\r
+ else\r
+ {\r
+ Root->Add( Item );\r
+ }\r
+ }\r
+\r
+// if( ( i_nb > 20 ) && ( i_item % 10 ) ) ?\r
+ if( i_nb > 20 )\r
+ {\r
+ Root->Add( ItemGroup );\r
+ }\r
+\r
+ /* check currently selected chapter */\r
+ if( ItemActive != NULL )\r
+ {\r
+ ItemActive->Checked = true;\r
+ }\r
+\r
+ /* be sure that menu is enabled, if there are several items */\r
+ if( i_nb > 1 )\r
+ {\r
+ Root->Enabled = true;\r
+ }\r
+}\r
+\r
+\r
+/*****************************************************************************\r
+ * ProgramMenu: update the programs menu of the interface\r
+ *****************************************************************************\r
+ * Builds the program menu according to what have been found in the PAT \r
+ * by the input. Useful for multi-programs streams such as DVB ones.\r
+ *****************************************************************************/\r
+static void __fastcall ProgramMenu( TMenuItem * Root,\r
+ pgrm_descriptor_t * p_pgrm,\r
+ TNotifyEvent MenuItemClick )\r
+{\r
+ TMenuItem * Item;\r
+ TMenuItem * ItemActive;\r
+ AnsiString Name;\r
+ int i;\r
+\r
+ /* remove previous menu */\r
+ Root->Clear();\r
+ Root->Enabled = false;\r
+\r
+ ItemActive = NULL;\r
+\r
+ /* create a set of program buttons and append them to the container */\r
+ for( i = 0; i < p_input_bank->pp_input[0]->stream.i_pgrm_number; i++ )\r
+ {\r
+ Name.sprintf( "id %d",\r
+ p_input_bank->pp_input[0]->stream.pp_programs[i]->i_number );\r
+\r
+ Item = new TMenuItem( Root );\r
+ Item->Caption = Name;\r
+ Item->Hint = Name;\r
+ Item->RadioItem = true;\r
+ Item->OnClick = MenuItemClick;\r
+\r
+ /* FIXME: temporary hack to save the program id with the Item\r
+ * It will be used in the callback. */\r
+ Item->Tag = i + 1;\r
+\r
+ if( p_pgrm == p_input_bank->pp_input[0]->stream.pp_programs[i] )\r
+ {\r
+ /* don't lose Item when we append into menu */\r
+ ItemActive = Item;\r
+ }\r
+\r
+ /* Add the item to the submenu */\r
+ Root->Add( Item );\r
+ }\r
+\r
+ /* check currently selected program */\r
+ if( ItemActive != NULL )\r
+ {\r
+ ItemActive->Checked = true;\r
+ }\r
+\r
+ /* be sure that menu is enabled if more than 1 program */\r
+ if( p_input_bank->pp_input[0]->stream.i_pgrm_number > 1 )\r
+ {\r
+ Root->Enabled = true;\r
+ }\r
+}\r
+\r
+\r
+/*****************************************************************************\r
+ * LanguageMenus: update interactive menus of the interface\r
+ *****************************************************************************\r
+ * Sets up menus with information from input:\r
+ * - languages\r
+ * - sub-pictures\r
+ * Warning: since this function is designed to be called by management\r
+ * function, the interface lock has to be taken\r
+ *****************************************************************************/\r
+static void __fastcall LanguageMenu( TMenuItem * Root, es_descriptor_t * p_es,\r
+ int i_cat, TNotifyEvent MenuItemClick )\r
+{\r
+ TMenuItem * Separator;\r
+ TMenuItem * Item;\r
+ TMenuItem * ItemActive;\r
+ AnsiString Name;\r
+ int i_item;\r
+ int i;\r
+\r
+ /* remove previous menu */\r
+ Root->Clear();\r
+ Root->Enabled = false;\r
+\r
+ /* special case for "off" item */\r
+ Name = "None";\r
+ Item = new TMenuItem( Root );\r
+ Item->RadioItem = true;\r
+ Item->Hint = Name;\r
+ Item->Caption = Name;\r
+ Item->OnClick = MenuItemClick;\r
+ Root->Add( Item );\r
+\r
+ /* separator item */\r
+ Separator = new TMenuItem( Root );\r
+ Separator->Caption = "-";\r
+ Root->Add( Separator );\r
+\r
+ ItemActive = NULL;\r
+ i_item = 0;\r
+\r
+ vlc_mutex_lock( &p_input_bank->pp_input[0]->stream.stream_lock );\r
+\r
+#define ES p_input_bank->pp_input[0]->stream.pp_es[i]\r
+ /* create a set of language buttons and append them to the Root */\r
+ for( i = 0; i < p_input_bank->pp_input[0]->stream.i_es_number; i++ )\r
+ {\r
+ if( ( ES->i_cat == i_cat ) &&\r
+ ( !ES->p_pgrm ||\r
+ ES->p_pgrm ==\r
+ p_input_bank->pp_input[0]->stream.p_selected_program ) )\r
+ {\r
+ i_item++;\r
+ Name = p_input_bank->pp_input[0]->stream.pp_es[i]->psz_desc;\r
+ if( Name.IsEmpty() )\r
+ {\r
+ Name.sprintf( "Language %d", i_item );\r
+ }\r
+\r
+ Item = new TMenuItem( Root );\r
+ Item->RadioItem = true;\r
+ Item->Hint = Name;\r
+ Item->Caption = Name;\r
+\r
+ if( p_es == p_input_bank->pp_input[0]->stream.pp_es[i] )\r
+ {\r
+ /* don't lose Item when we append into menu */\r
+ ItemActive = Item;\r
+ }\r
+\r
+ /* setup signal hanling */\r
+ Item->OnClick = MenuItemClick;\r
+ Root->Add( Item );\r
+ }\r
+ }\r
+#undef ES\r
+\r
+ vlc_mutex_unlock( &p_input_bank->pp_input[0]->stream.stream_lock );\r
+\r
+ /* check currently selected item */\r
+ if( ItemActive != NULL )\r
+ {\r
+ ItemActive->Checked = true;\r
+ }\r
+\r
+ /* be sure that menu is enabled if non empty */\r
+ if( i_item > 0 )\r
+ {\r
+ Root->Enabled = true;\r
+ }\r
+}\r
+\r
+\r
+/*****************************************************************************\r
+ * NavigationMenu: sets menus for titles and chapters selection\r
+ *****************************************************************************\r
+ * Generates two types of menus:\r
+ * -simple list of titles\r
+ * -cascaded lists of chapters for each title\r
+ *****************************************************************************/\r
+static void __fastcall NavigationMenu( TMenuItem * Root,\r
+ TNotifyEvent MenuItemClick )\r
+{\r
+ TMenuItem * TitleGroup;\r
+ TMenuItem * TitleItem;\r
+ TMenuItem * ItemActive;\r
+ TMenuItem * ChapterGroup;\r
+ TMenuItem * ChapterItem;\r
+ AnsiString Name;\r
+ int i_title;\r
+ int i_chapter;\r
+ int i_title_nb;\r
+ int i_chapter_nb;\r
+\r
+\r
+ /* remove previous menu */\r
+ Root->Enabled = false;\r
+ Root->Clear();\r
+\r
+ ItemActive = NULL;\r
+ i_title_nb = p_input_bank->pp_input[0]->stream.i_area_nb;\r
+ \r
+ /* loop on titles */\r
+ for( i_title = 1; i_title < i_title_nb; i_title++ )\r
+ {\r
+ /* we group titles in packets of ten for small screens */\r
+ if( ( i_title % 10 == 1 ) && ( i_title_nb > 20 ) )\r
+ {\r
+ if( i_title != 1 )\r
+ {\r
+ Root->Add( TitleGroup );\r
+ }\r
+\r
+ Name.sprintf( "%d - %d", i_title, i_title + 9 );\r
+ TitleGroup = new TMenuItem( Root );\r
+ TitleGroup->RadioItem = true;\r
+ TitleGroup->Hint = Name;\r
+ TitleGroup->Caption = Name;\r
+ }\r
+\r
+ Name.sprintf( "Title %d (%d)", i_title,\r
+ p_input_bank->pp_input[0]->stream.pp_areas[i_title]->i_part_nb );\r
+\r
+ {\r
+ TitleItem = new TMenuItem( Root );\r
+ TitleItem->RadioItem = true;\r
+ TitleItem->Hint = Name;\r
+ TitleItem->Caption = Name;\r
+\r
+ i_chapter_nb =\r
+ p_input_bank->pp_input[0]->stream.pp_areas[i_title]->i_part_nb;\r
+\r
+ /* loop on chapters */\r
+ for( i_chapter = 0; i_chapter < i_chapter_nb; i_chapter++ )\r
+ {\r
+ /* we group chapters in packets of ten for small screens */\r
+ if( ( i_chapter % 10 == 0 ) && ( i_chapter_nb > 20 ) )\r
+ {\r
+ if( i_chapter != 0 )\r
+ {\r
+ TitleItem->Add( ChapterGroup );\r
+ }\r
+\r
+ Name.sprintf( "%d - %d", i_chapter + 1, i_chapter + 10 );\r
+ ChapterGroup = new TMenuItem( TitleItem );\r
+ ChapterGroup->RadioItem = true;\r
+ ChapterGroup->Hint = Name;\r
+ ChapterGroup->Caption = Name;\r
+ }\r
+\r
+ Name.sprintf( "Chapter %d", i_chapter + 1 );\r
+\r
+ ChapterItem = new TMenuItem( TitleItem );\r
+ ChapterItem->RadioItem = true;\r
+ ChapterItem->Hint = Name;\r
+ ChapterItem->Caption = Name;\r
+\r
+ /* FIXME: temporary hack to save i_title and i_chapter with\r
+ * ChapterItem, since we will need them in the callback */\r
+ ChapterItem->Tag = (int)POS2DATA( i_title, i_chapter + 1 );\r
+\r
+#define p_area p_input_bank->pp_input[0]->stream.pp_areas[i_title]\r
+ if( ( p_area ==\r
+ p_input_bank->pp_input[0]->stream.p_selected_area ) &&\r
+ ( p_area->i_part == i_chapter + 1 ) )\r
+ {\r
+ ItemActive = ChapterItem;\r
+ }\r
+#undef p_area\r
+\r
+ /* setup signal hanling */\r
+ ChapterItem->OnClick = MenuItemClick;\r
+\r
+ if( i_chapter_nb > 20 )\r
+ {\r
+ ChapterGroup->Add( ChapterItem );\r
+ }\r
+ else\r
+ {\r
+ TitleItem->Add( ChapterItem );\r
+ }\r
+ }\r
+\r
+ if( i_chapter_nb > 20 )\r
+ {\r
+ TitleItem->Add( ChapterGroup );\r
+ }\r
+\r
+ if( p_input_bank->pp_input[0]->stream.pp_areas[i_title]->i_part_nb\r
+ > 1 )\r
+ {\r
+ /* be sure that menu is sensitive */\r
+ Root->Enabled = true;\r
+ }\r
+ }\r
+\r
+ if( i_title_nb > 20 )\r
+ {\r
+ TitleGroup->Add( TitleItem );\r
+ }\r
+ else\r
+ {\r
+ Root->Add( TitleItem );\r
+ }\r
+ }\r
+\r
+ if( i_title_nb > 20 )\r
+ {\r
+ Root->Add( TitleGroup );\r
+ }\r
+\r
+ /* Default selected chapter */\r
+ if( ItemActive != NULL )\r
+ {\r
+ ItemActive->Checked = true;\r
+ }\r
+\r
+ /* be sure that menu is sensitive */\r
+ Root->Enabled = true;\r
+}\r
+\r
+\r
+/*****************************************************************************\r
+ * SetupMenus: function that generates title/chapter/audio/subpic\r
+ * menus with help from preceding functions\r
+ *****************************************************************************/\r
+int __fastcall SetupMenus( intf_thread_t * p_intf )\r
+{\r
+ TMainFrameDlg * p_window = p_intf->p_sys->p_window;\r
+ es_descriptor_t * p_audio_es;\r
+ es_descriptor_t * p_spu_es;\r
+ int i;\r
+\r
+ p_intf->p_sys->b_chapter_update |= p_intf->p_sys->b_title_update;\r
+ p_intf->p_sys->b_audio_update |= p_intf->p_sys->b_title_update |\r
+ p_intf->p_sys->b_program_update;\r
+ p_intf->p_sys->b_spu_update |= p_intf->p_sys->b_title_update |\r
+ p_intf->p_sys->b_program_update;\r
+\r
+ if( p_intf->p_sys->b_program_update )\r
+ { \r
+ pgrm_descriptor_t * p_pgrm;\r
+\r
+ if( p_input_bank->pp_input[0]->stream.p_new_program )\r
+ {\r
+ p_pgrm = p_input_bank->pp_input[0]->stream.p_new_program;\r
+ }\r
+ else\r
+ {\r
+ p_pgrm = p_input_bank->pp_input[0]->stream.p_selected_program;\r
+ }\r
+\r
+ ProgramMenu( p_window->MenuProgram, p_pgrm,\r
+ p_window->MenuProgramClick );\r
+ ProgramMenu( p_window->PopupProgram, p_pgrm,\r
+ p_window->PopupProgramClick );\r
+\r
+ p_intf->p_sys->b_program_update = 0;\r
+ }\r
+\r
+ if( p_intf->p_sys->b_title_update )\r
+ {\r
+ RadioMenu( p_window->MenuTitle, "Title",\r
+//why "-1" ?\r
+ p_input_bank->pp_input[0]->stream.i_area_nb - 1,\r
+ p_input_bank->pp_input[0]->stream.p_selected_area->i_id,\r
+ p_window->MenuTitleClick );\r
+\r
+ AnsiString CurrentTitle;\r
+ CurrentTitle.sprintf( "%d",\r
+ p_input_bank->pp_input[0]->stream.p_selected_area->i_id );\r
+ p_window->LabelTitleCurrent->Caption = CurrentTitle;\r
+\r
+ p_intf->p_sys->b_title_update = 0;\r
+ }\r
+\r
+ if( p_intf->p_sys->b_chapter_update )\r
+ {\r
+ RadioMenu( p_window->MenuChapter, "Chapter",\r
+ p_input_bank->pp_input[0]->stream.p_selected_area->i_part_nb,\r
+ p_input_bank->pp_input[0]->stream.p_selected_area->i_part,\r
+ p_window->MenuChapterClick );\r
+\r
+ NavigationMenu( p_window->PopupNavigation,\r
+ p_window->PopupNavigationClick );\r
+\r
+ AnsiString CurrentChapter;\r
+ CurrentChapter.sprintf( "%d",\r
+ p_input_bank->pp_input[0]->stream.p_selected_area->i_part );\r
+ p_window->LabelChapterCurrent->Caption = CurrentChapter;\r
+\r
+ p_intf->p_sys->i_part =\r
+ p_input_bank->pp_input[0]->stream.p_selected_area->i_part;\r
+\r
+ p_intf->p_sys->b_chapter_update = 0;\r
+ }\r
+\r
+ /* look for selected ES */\r
+ p_audio_es = NULL;\r
+ p_spu_es = NULL;\r
+\r
+ for( i = 0; i < p_input_bank->pp_input[0]->stream.i_selected_es_number; i++ )\r
+ {\r
+ if( p_input_bank->pp_input[0]->stream.pp_selected_es[i]->i_cat\r
+ == AUDIO_ES )\r
+ {\r
+ p_audio_es = p_input_bank->pp_input[0]->stream.pp_selected_es[i];\r
+ p_intfGlobal->p_sys->p_audio_es_old = p_audio_es;\r
+ }\r
+\r
+ if( p_input_bank->pp_input[0]->stream.pp_selected_es[i]->i_cat\r
+ == SPU_ES )\r
+ {\r
+ p_spu_es = p_input_bank->pp_input[0]->stream.pp_selected_es[i];\r
+ p_intfGlobal->p_sys->p_spu_es_old = p_spu_es;\r
+ }\r
+ }\r
+\r
+ vlc_mutex_unlock( &p_input_bank->pp_input[0]->stream.stream_lock );\r
+\r
+ /* audio menus */\r
+ if( p_intf->p_sys->b_audio_update )\r
+ {\r
+ LanguageMenu( p_window->MenuAudio, p_audio_es, AUDIO_ES,\r
+ p_window->MenuAudioClick );\r
+ LanguageMenu( p_window->PopupAudio, p_audio_es, AUDIO_ES,\r
+ p_window->PopupAudioClick );\r
+\r
+ p_intf->p_sys->b_audio_update = 0;\r
+ }\r
+\r
+ /* sub picture menus */\r
+ if( p_intf->p_sys->b_spu_update )\r
+ {\r
+ LanguageMenu( p_window->PopupSubtitles, p_spu_es, SPU_ES,\r
+ p_window->PopupSubtitleClick );\r
+ LanguageMenu( p_window->MenuSubtitles, p_spu_es, SPU_ES,\r
+ p_window->MenuSubtitleClick );\r
+\r
+ p_intf->p_sys->b_spu_update = 0;\r
+ }\r
+\r
+ vlc_mutex_lock( &p_input_bank->pp_input[0]->stream.stream_lock );\r
+\r
+ return true;\r
+}\r
+\r
+\r
+\r
--- /dev/null
+/*****************************************************************************\r
+ * menu.h: prototypes for menu functions\r
+ *****************************************************************************\r
+ * Copyright (C) 2002 VideoLAN\r
+ *\r
+ * Authors: Olivier Teuliere <ipkiss@via.ecp.fr>\r
+ *\r
+ * This program is free software; you can redistribute it and/or modify\r
+ * it under the terms of the GNU General Public License as published by\r
+ * the Free Software Foundation; either version 2 of the License, or\r
+ * (at your option) any later version.\r
+ * \r
+ * This program is distributed in the hope that it will be useful,\r
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r
+ * GNU General Public License for more details.\r
+ *\r
+ * You should have received a copy of the GNU General Public License\r
+ * along with this program; if not, write to the Free Software\r
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA.\r
+ *****************************************************************************/\r
+\r
+struct intf_thread_s;\r
+\r
+int __fastcall SetupMenus( struct intf_thread_s * );\r
+\r
+/*****************************************************************************\r
+ * Convert user_data structures to title and chapter information\r
+ *****************************************************************************/\r
+#define DATA2TITLE( data ) ( (int)((long)(data)) >> 16 )\r
+#define DATA2CHAPTER( data ) ( (int)((long)(data)) & 0xffff )\r
+#define POS2DATA( title, chapter ) ( NULL + ( ((title) << 16) \\r
+ | ((chapter) & 0xffff)) )\r
+\r
--- /dev/null
+/*****************************************************************************\r
+ * messages.cpp: log window.\r
+ *****************************************************************************\r
+ * Copyright (C) 2002 VideoLAN\r
+ *\r
+ * Authors: Olivier Teuliere <ipkiss@via.ecp.fr>\r
+ *\r
+ * This program is free software; you can redistribute it and/or modify\r
+ * it under the terms of the GNU General Public License as published by\r
+ * the Free Software Foundation; either version 2 of the License, or\r
+ * (at your option) any later version.\r
+ * \r
+ * This program is distributed in the hope that it will be useful,\r
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r
+ * GNU General Public License for more details.\r
+ *\r
+ * You should have received a copy of the GNU General Public License\r
+ * along with this program; if not, write to the Free Software\r
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA.\r
+ *****************************************************************************/\r
+\r
+#include <vcl.h>\r
+#pragma hdrstop\r
+\r
+#include <videolan/vlc.h>\r
+\r
+#include "interface.h"\r
+\r
+#include "win32_common.h"\r
+#include "messages.h"\r
+\r
+//---------------------------------------------------------------------------\r
+#pragma package(smart_init)\r
+#pragma resource "*.dfm"\r
+\r
+extern struct intf_thread_s *p_intfGlobal;\r
+\r
+//---------------------------------------------------------------------------\r
+__fastcall TMessagesDlg::TMessagesDlg( TComponent* Owner )\r
+ : TForm( Owner )\r
+{\r
+ Icon = p_intfGlobal->p_sys->p_window->Icon;\r
+}\r
+//---------------------------------------------------------------------------\r
+void __fastcall TMessagesDlg::ButtonOKClick( TObject *Sender )\r
+{\r
+ Hide();\r
+}\r
+//---------------------------------------------------------------------------\r
+void __fastcall TMessagesDlg::FormHide( TObject *Sender )\r
+{\r
+ p_intfGlobal->p_sys->p_window->MenuMessages->Checked = false;\r
+}\r
+//---------------------------------------------------------------------------\r
+void __fastcall TMessagesDlg::FormShow( TObject *Sender )\r
+{\r
+ p_intfGlobal->p_sys->p_window->MenuMessages->Checked = true;\r
+}\r
+//---------------------------------------------------------------------------\r
+void __fastcall TMessagesDlg::UpdateLog()\r
+{\r
+ intf_subscription_t *p_sub = p_intfGlobal->p_sys->p_sub;\r
+ int i_start;\r
+ int i_stop;\r
+\r
+ vlc_mutex_lock( p_sub->p_lock );\r
+ i_stop = *p_sub->pi_stop;\r
+ vlc_mutex_unlock( p_sub->p_lock );\r
+\r
+ if( p_sub->i_start != i_stop )\r
+ {\r
+ for( i_start = p_sub->i_start;\r
+ i_start != i_stop;\r
+ i_start = (i_start+1) % INTF_MSG_QSIZE )\r
+ {\r
+ /* Append all messages to log window */\r
+ switch( p_sub->p_msg[i_start].i_type )\r
+ {\r
+ case INTF_MSG_ERR:\r
+ RichEditMessages->SelAttributes->Color = clRed;\r
+ break;\r
+ case INTF_MSG_WARN:\r
+ RichEditMessages->SelAttributes->Color = clBlack;\r
+ break;\r
+ default:\r
+ RichEditMessages->SelAttributes->Color = clBlue;\r
+ break;\r
+ }\r
+\r
+ RichEditMessages->Lines->Add( p_sub->p_msg[i_start].psz_msg );\r
+ }\r
+\r
+ vlc_mutex_lock( p_sub->p_lock );\r
+ p_sub->i_start = i_start;\r
+ vlc_mutex_unlock( p_sub->p_lock );\r
+ } \r
+}\r
+//---------------------------------------------------------------------------\r
--- /dev/null
+object MessagesDlg: TMessagesDlg\r
+ Left = 325\r
+ Top = 160\r
+ Width = 440\r
+ Height = 502\r
+ Caption = 'Messages'\r
+ Color = clBtnFace\r
+ Font.Charset = DEFAULT_CHARSET\r
+ Font.Color = clPurple\r
+ Font.Height = -11\r
+ Font.Name = 'MS Sans Serif'\r
+ Font.Style = []\r
+ OldCreateOrder = False\r
+ OnHide = FormHide\r
+ OnShow = FormShow\r
+ PixelsPerInch = 96\r
+ TextHeight = 13\r
+ object RichEditMessages: TRichEdit\r
+ Left = 0\r
+ Top = 0\r
+ Width = 432\r
+ Height = 424\r
+ Align = alTop\r
+ Anchors = [akLeft, akTop, akRight, akBottom]\r
+ ReadOnly = True\r
+ ScrollBars = ssBoth\r
+ TabOrder = 0\r
+ WantReturns = False\r
+ end\r
+ object ButtonOK: TButton\r
+ Left = 144\r
+ Top = 437\r
+ Width = 145\r
+ Height = 25\r
+ Anchors = [akBottom]\r
+ Caption = 'OK'\r
+ TabOrder = 1\r
+ OnClick = ButtonOKClick\r
+ end\r
+end\r
--- /dev/null
+/*****************************************************************************\r
+ * messages.h: log window\r
+ *****************************************************************************\r
+ * Copyright (C) 2002 VideoLAN\r
+ *\r
+ * Authors: Olivier Teuliere <ipkiss@via.ecp.fr>\r
+ *\r
+ * This program is free software; you can redistribute it and/or modify\r
+ * it under the terms of the GNU General Public License as published by\r
+ * the Free Software Foundation; either version 2 of the License, or\r
+ * (at your option) any later version.\r
+ * \r
+ * This program is distributed in the hope that it will be useful,\r
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r
+ * GNU General Public License for more details.\r
+ *\r
+ * You should have received a copy of the GNU General Public License\r
+ * along with this program; if not, write to the Free Software\r
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA.\r
+ *****************************************************************************/\r
+\r
+#ifndef messagesH\r
+#define messagesH\r
+//---------------------------------------------------------------------------\r
+#include <Classes.hpp>\r
+#include <Controls.hpp>\r
+#include <StdCtrls.hpp>\r
+#include <Forms.hpp>\r
+#include <ComCtrls.hpp>\r
+//---------------------------------------------------------------------------\r
+class TMessagesDlg : public TForm\r
+{\r
+__published: // IDE-managed Components\r
+ TRichEdit *RichEditMessages;\r
+ TButton *ButtonOK;\r
+ void __fastcall ButtonOKClick( TObject *Sender );\r
+ void __fastcall FormHide( TObject *Sender );\r
+ void __fastcall FormShow( TObject *Sender );\r
+private: // User declarations\r
+public: // User declarations\r
+ __fastcall TMessagesDlg( TComponent* Owner );\r
+ void __fastcall UpdateLog();\r
+};\r
+//---------------------------------------------------------------------------\r
+#endif\r
--- /dev/null
+/*****************************************************************************\r
+ * network.cpp: the "network" dialog box\r
+ *****************************************************************************\r
+ * Copyright (C) 2002 VideoLAN\r
+ *\r
+ * Authors: Olivier Teuliere <ipkiss@via.ecp.fr>\r
+ *\r
+ * This program is free software; you can redistribute it and/or modify\r
+ * it under the terms of the GNU General Public License as published by\r
+ * the Free Software Foundation; either version 2 of the License, or\r
+ * (at your option) any later version.\r
+ * \r
+ * This program is distributed in the hope that it will be useful,\r
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r
+ * GNU General Public License for more details.\r
+ *\r
+ * You should have received a copy of the GNU General Public License\r
+ * along with this program; if not, write to the Free Software\r
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA.\r
+ *****************************************************************************/\r
+\r
+#include <vcl.h>\r
+#pragma hdrstop\r
+\r
+#include <videolan/vlc.h>\r
+\r
+#include "stream_control.h"\r
+#include "input_ext-intf.h"\r
+\r
+#include "interface.h"\r
+#include "intf_playlist.h"\r
+\r
+#include "network.h"\r
+#include "win32_common.h"\r
+\r
+#include "netutils.h"\r
+\r
+//---------------------------------------------------------------------------\r
+//#pragma package(smart_init)\r
+#pragma resource "*.dfm"\r
+\r
+extern struct intf_thread_s *p_intfGlobal;\r
+\r
+//---------------------------------------------------------------------------\r
+__fastcall TNetworkDlg::TNetworkDlg( TComponent* Owner )\r
+ : TForm( Owner )\r
+{\r
+}\r
+//---------------------------------------------------------------------------\r
+void __fastcall TNetworkDlg::FormShow( TObject *Sender )\r
+{\r
+ p_intfGlobal->p_sys->p_window->MenuNetworkStream->Checked = true;\r
+ p_intfGlobal->p_sys->p_window->PopupNetworkStream->Checked = true;\r
+}\r
+//---------------------------------------------------------------------------\r
+void __fastcall TNetworkDlg::FormHide( TObject *Sender )\r
+{\r
+ p_intfGlobal->p_sys->p_window->MenuNetworkStream->Checked = false;\r
+ p_intfGlobal->p_sys->p_window->PopupNetworkStream->Checked = false;\r
+}\r
+//---------------------------------------------------------------------------\r
+void __fastcall TNetworkDlg::BitBtnCancelClick( TObject *Sender )\r
+{\r
+ Hide();\r
+}\r
+//---------------------------------------------------------------------------\r
+void __fastcall TNetworkDlg::CheckBoxBroadcastClick( TObject *Sender )\r
+{\r
+ ComboBoxBroadcast->Enabled = NOT( ComboBoxBroadcast->Enabled );\r
+}\r
+//---------------------------------------------------------------------------\r
+void __fastcall TNetworkDlg::CheckBoxChannelClick( TObject *Sender )\r
+{\r
+ LabelAddress->Enabled = NOT( LabelAddress->Enabled );\r
+ ComboBoxAddress->Enabled = NOT( ComboBoxAddress->Enabled );\r
+ LabelPort->Enabled = NOT( LabelPort->Enabled );\r
+ EditPort->Enabled = NOT( EditPort->Enabled );\r
+ UpDownPort->Enabled = NOT( UpDownPort->Enabled );\r
+ CheckBoxBroadcast->Enabled = NOT( CheckBoxBroadcast->Enabled );\r
+ ComboBoxBroadcast->Enabled = ( NOT( ComboBoxBroadcast->Enabled ) &&\r
+ CheckBoxBroadcast->Checked );\r
+ ComboBoxChannel->Enabled = NOT( ComboBoxChannel->Enabled );\r
+ LabelPortCS->Enabled = NOT( LabelPortCS->Enabled );\r
+ EditPortCS->Enabled = NOT( EditPortCS->Enabled );\r
+ UpDownPortCS->Enabled = NOT( UpDownPortCS->Enabled );\r
+}\r
+//---------------------------------------------------------------------------\r
+void __fastcall TNetworkDlg::BitBtnOkClick( TObject *Sender )\r
+{\r
+ AnsiString Source, Protocol, Server;\r
+ boolean_t b_channel;\r
+ boolean_t b_broadcast;\r
+ unsigned int i_port;\r
+ int i_end = p_main->p_playlist->i_size;\r
+\r
+ Hide();\r
+ Server = ComboBoxAddress->Text;\r
+\r
+ /* select added item */\r
+ if( p_input_bank->pp_input[0] != NULL )\r
+ {\r
+ p_input_bank->pp_input[0]->b_eof = 1;\r
+ }\r
+\r
+ /* Check which protocol was activated */\r
+ switch( RadioGroupProtocol->ItemIndex )\r
+ {\r
+ case 0:\r
+ Protocol = "udp";\r
+ break;\r
+ case 1:\r
+ intf_ErrMsg( "intf error: rtp protocol not yet implemented" );\r
+ return;\r
+ case 2:\r
+ Protocol = "http";\r
+ break;\r
+ }\r
+\r
+ /* Manage channel server */\r
+ b_channel = CheckBoxChannel->Checked ? TRUE : FALSE;\r
+ config_PutIntVariable( "network_channel", b_channel );\r
+ if( b_channel )\r
+ {\r
+ AnsiString Channel = ComboBoxChannel->Text;\r
+ unsigned int i_channel_port = UpDownPortCS->Position;\r
+\r
+ if( p_main->p_channel == NULL )\r
+ {\r
+ network_ChannelCreate();\r
+ }\r
+\r
+ config_PutPszVariable( "channel_server", Channel.c_str() );\r
+ if( i_channel_port < 65536 )\r
+ {\r
+ config_PutIntVariable( "channel_port", i_channel_port );\r
+ }\r
+\r
+ p_intfGlobal->p_sys->b_playing = 1;\r
+ }\r
+ else\r
+ {\r
+ /* Get the port number and make sure it will not\r
+ * overflow 5 characters */\r
+ i_port = UpDownPort->Position;\r
+ if( i_port > 65535 )\r
+ {\r
+ intf_ErrMsg( "intf error: invalid port %i", i_port );\r
+ }\r
+\r
+ /* do we have a broadcast address */\r
+ b_broadcast = CheckBoxBroadcast->Checked ? TRUE : FALSE;\r
+ if( b_broadcast )\r
+ {\r
+ AnsiString Broadcast = ComboBoxBroadcast->Text;\r
+\r
+ /* Build source name */\r
+ Source = Protocol + "://" + Server + "@:" + IntToStr( i_port )\r
+ + "/" + Broadcast;\r
+ }\r
+ else\r
+ {\r
+ /* Build source name */\r
+ Source = Protocol + "://" + Server + "@:" + IntToStr( i_port );\r
+ }\r
+\r
+ intf_PlaylistAdd( p_main->p_playlist, PLAYLIST_END, Source.c_str() );\r
+ \r
+ /* update the display */\r
+ p_intfGlobal->p_sys->p_playlist->UpdateGrid( p_main->p_playlist );\r
+\r
+ intf_PlaylistJumpto( p_main->p_playlist, i_end - 1 );\r
+ }\r
+}\r
+//---------------------------------------------------------------------------\r
+\r
--- /dev/null
+object NetworkDlg: TNetworkDlg\r
+ Left = 368\r
+ Top = 266\r
+ BorderStyle = bsDialog\r
+ Caption = 'Open network'\r
+ ClientHeight = 209\r
+ ClientWidth = 386\r
+ Color = clBtnFace\r
+ Font.Charset = DEFAULT_CHARSET\r
+ Font.Color = clWindowText\r
+ Font.Height = -11\r
+ Font.Name = 'MS Sans Serif'\r
+ Font.Style = []\r
+ Icon.Data = {\r
+ 0000010001003030000001001800A81C00001600000028000000300000006000\r
+ 00000100180000000000001B0000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000069375900000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000120E0A4011253E0F18000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000F0B\r
+ 084143CA08070016430F08040800000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 00000000000000003127291203174647E8464AE808010840E54039E6390B0C06\r
+ 0E0A1C0000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0070CD0079DD0079DD0070CD0000000000000000000C1008261D6E4647E54547\r
+ E64748E105040039E6393AE53939E63936D33308030100000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 000000000070CD0079DD0079DE007DE40088F9008CFF008CFF0088F9007CE302\r
+ 6EC70B09124641DC4444DF4546E34446E54847E003040040E6403AEA3A3EE33E\r
+ 3CE33C39E639080F010801050000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 00000000000000000070CD0079DD0077D90070CB0078D8007BDC007BDC007BDC\r
+ 007BDC007BDC007BDD007EE32E232D0804084553F14250F34252ED4449DB4844\r
+ DC4645E208010540E5401C78150D18053CE63C3AE63A39EA393CD83C241A2006\r
+ 0402000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000070CD0079DD007ADF007BDE007BDC0072\r
+ CC005188004877004876004876004876034976054A760B4D7731434221175B42\r
+ 54EC4253EE4252F60B05104250F44252EB4546DA08010539E6392BAA2B080105\r
+ 3CE63C39E7393AE63A39E93939E839081208181C080000000000000000000000\r
+ 000000000000000000000000000000000000000070CD0079DD0079DD007CE300\r
+ 88F90089F90075D2005188004877005188008CFF008CFF008CFF008CFF008CFF\r
+ 1092FF2099FF31A0FF1408294840DB4550E1464EEA0C060B0B05084654F64653\r
+ F64453EF080E033AE63A2BAA2B03030339E33939DF3939E639080F083DDB3D24\r
+ 9C24434B3B000000000000000000000000000000000000000000000000000000\r
+ 0063B60085F3008BFE0088F9007FE90088F90080E8005CA0008CFF008CFF008C\r
+ FF008CFF008CFF008CFF008CFF048DFF1594FF259BFF35A2FF0C04103F38C754\r
+ 5AF7505BF10C08100801084352F64652F44253F30813053AE63A39E639030403\r
+ 1C521826A1250812010807032454131558150000000000000000000000000000\r
+ 000000000000000000000000000000000000000070CD007CE30079DD00000000\r
+ 7CE30089FA008CFF0089FA008CFF008CFF008CFF008CFF008CFF008CFF098FFF\r
+ 1996FF2A9DFF3AA4FF0804103A2AA34E58F74E58F40B0B120803054652F34548\r
+ E64451F305130532CA323AE23A03070308070307040008040139E63939E43931\r
+ B42F5E1347000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000061B10000000079DD008CFF008CFF008CFF008CFF008C\r
+ FF008CFF008CFF008CFF008CFF0E91FF1E98FF2E9FFF3FA6FF040408382BAF4D\r
+ 5AEF555AF70F12250501050F04160804074250F3121A123AE93A39E239080803\r
+ 0D2F08010401268C2539E7393DE63D3FE23E0804100000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 79DD008CFF008CFF008CFF008CFF008CFF008CFF008CFF008CFF028CFF1293FF\r
+ 239AFF33A1FF43A8FF0802083A2AA3565BF7555AF71714330501050104000801\r
+ 07424FF12828203AEA3A39E639030703182F1008340801040139E7393DE83D39\r
+ E939080400000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000070CD0088F9008CFF008CFF008CFF008C\r
+ FF008CFF008CFF008CFF078EFF1795FF279CFF38A3FF48AAFF0808005151F155\r
+ 5AF30804030804000504050800082E358E0E0C1F1D192439E53940E640080400\r
+ 2AA12739E63908020708010539E8393BE93B0804080000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000007CE3008CFF008CFF008CFF058EFD1D96F92398F8269AFA31A0FC42A8FF\r
+ 4FAEFF5CB3FF65B7FF0C08084F5AF14E57F50B04080804043639A54647E81C13\r
+ 49363AA70804080F120835953439E7393EE63E39DF3939EA39081105308A2B3F\r
+ E73F080601000000000000000000000000000000000000000000000000000000\r
+ 000000000000000000000000000000000000047BDB1D96F92398F82498F83BA0\r
+ F399C1E1B1C9DDBCD4E7CBE0F3D9EDFFDCEEFFDEEFFFCDE8FF080808575BF750\r
+ 58F624125A5057F34845DF4A41E0150E30C55734E3723EC56E33A23D27050105\r
+ 39E43939E63939E6393CE63C14420C3BE03B192A090000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000004\r
+ 04042D88D399C1E1B1C9DDB1C9DCB7CBDBCFD3D7D5D5D6E2E2E3F0F0F1FEFEFF\r
+ FEFEFFFEFEFFF9FCFF0C08085D61F15B61EF555AF64A4FE13937BB0E0A12DE74\r
+ 39E1733CDE713CDF753AE67541C36B342C231F17141B3AE63A39E7393DE83D39\r
+ E93939DE39000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000001818186893B8C3CCD2D5D5D6D5D5D6D5D5\r
+ D6D6D6D6D6D6D6E3E3E3F1F1F1FFFFFFFFFFFFFFFFFFFFFFFF140C145C5EF668\r
+ 63F75555EA10061CC3673FDF713A0C1104080403080105080007070407D56F36\r
+ DE743EDE72401C200C29452939E63939E73939EA390000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000343434A2B4C2D5D5D6D6D6D6D6D6D6D6D6D6D5D5D6E2E2E3F0F0F1FEFEFF\r
+ FEFEFFFEFEFFFEFEFF20161C5C5EF6373EAE0E0413E2713DE1763CCD6A3C2A0D\r
+ 08A44B2CDE743EBD612F080401030403E1713CDE7239DE713AE1723C22201139\r
+ C13341E641000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000001B1B1B99AEBED5D5D6D5D5D6D5D5\r
+ D6CFD3D7B8CBDBBFD5E7CEE2F3DCEFFFDFF0FFE2F1FFE9F4FF10100C3639A46E\r
+ 4540DE7239DE713DE1713C07000784261CDE7639E3743E0812001F0407D86E36\r
+ E3753EE57540E57541DE763CDE733DD26637493C387E2F7B0000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 00001B1B1B99AEBFCED3D7B7CBDBB1C9DD99C1E140A2F339A2FA49AAFC59B2FF\r
+ 66B8FF74BEFF92CBFFD9ECFF0F0402C66531DE7139E2733D854B1E0A01084D11\r
+ 0DE3733EE1723CDF713ADF753AE1763C1D0A08290708E57140E1763CDE733DC7\r
+ 6B34080408000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000001818187FA5C399C1E13BA0F32498\r
+ F81D96F91091FD1C97FF2C9EFF3CA5FF4DACFF5DB3FF71BBFF8DC8FF9FD0FF08\r
+ 0400080406B95C2EDE7239070B070803014D1615DE723CDE7540E5714030090D\r
+ 0504003A120FE67541DE75390808044A0C290000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 00000707071778C81C92F3058EFD008CFF008CFF1092FF2099FF31A0FF41A7FF\r
+ 51AEFF62B5FF72BCFF7BBFFF7BBBF96E9FCD0808080806041D0508E571403E22\r
+ 0C200708080405070407070007080303B05F31DE723967301908010500000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 000000000000000000000000000000000000000000000000007CE3008CFF008C\r
+ FF048DFF1594FF259BFF35A2FF46A9FF56B0FF66B7FF77BEFF7BBFFF6DAAE300\r
+ 0000000000000000000000080401200C088D4024E17141E57140DF713ADE713E\r
+ DE76390801070000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 00000000000000000079DD008CFF008CFF098FFF1996FF2A9DFF3AA4FF4AABFF\r
+ 5BB2FF6BB9FF7BBFFF7BBFFF6AA5DD0000000000000000000000000000001D1A\r
+ 0C1A0F08110903441912E57140623B1E08020300000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000079DD008CFF008C\r
+ FF0E91FF1E98FF2E9FFF3FA6FF4FADFF5FB4FF70BBFF7BBFFF78BAF96299CD00\r
+ 00000000000000000000000000000000000000003914100000005A2411000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 00000000000000000070CD0088F9078EFD2C9CF940A3F850ACFA60B4FC70BCFF\r
+ 7DC2FF87C6FF7EC0FF6DAAE30000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000707071A85DD40A2\r
+ F3A0C3E1B7CBDDC6D8E7D4E5F3E2F1FFE5F2FFD9ECFF9FD0FF7AACDD05050500\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 00000000000000001818187FA5C3B8CBDBD0D4D7D5D5D6E2E2E3F0F0F1FEFEFF\r
+ FEFEFFFAFCFFE2EDF99FB7CD1C1C1C0000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000001B1B1B99AEBFD4D5\r
+ D6D6D6D6D6D6D6E3E3E3F1F1F1FFFFFFFFFFFFFEFEFFD1DAE33E3E3E00000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 00000000000000001D1D1D7B9BB4CACED1D6D6D6D5D5D6E2E2E3F0F0F1FEFEFF\r
+ FEFEFFFEFEFFC9D2DD2121210000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 000000000000000000000000000000000000000000000000000000343434A5B5\r
+ C2CFD3D7BFCEDBC9D9E7D7E6F3E6F3FFECF5FFF0F4F9AEBDCD23232300000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 000000000000000000000018181887A8C3A6C6E169B3F367B6FA77BEFC88C6FF\r
+ 9FD0FFB4CBE33939390000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 000000000000000000000000000000000000000000000000000000040404338C\r
+ D749A8F947A9FD54AFFF64B6FF74BDFF7EC0FF76ABDD05050500000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 00000000000000000000000000001F7DCD369FF948AAFF58B1FF69B8FF79BFFF\r
+ 78BAF96299CD0000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 003592E34DACFF5DB3FF6DBAFF7BBFFF6DAAE300000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 00000000000000000000000000000000003890DD51AEFF62B5FF72BCFF7BBFFF\r
+ 6AA5DD0000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 003B8FD84C9CE3589FDE69A9E375B6F46299CD00000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 00000000000000000000000000000000003376B00000000000000000005788B6\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 00000000006CC61A83DD247FCC00000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000006DC71A83DD2686D71F6EB1\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 000000000000000000000000000000000000000000000000000000000000FFFF\r
+ FFFFFFFF0000FFFFFFFFFFFF0000FFFFFE1FDFFF0000FFFFE0078FFF0000FFFE\r
+ 000007FF0000FFF0000001FF0000FF80000000FF0000FF000000003F0000FF00\r
+ 0000000F0000FE00000000070000F800000000070000F8000000000F0000FC00\r
+ 000000070000FE00000000070000FF80000000070000FFC0000000070000FFE0\r
+ 000000070000FFE0000000070000FFE0000000070000FFE0000000070000FFF0\r
+ 000000070000FFF0000000030000FFF0000000070000FFF00000000F0000FFF0\r
+ 0000003F0000FFF8000E00FF0000FFF8000F01FF0000FFF8000FD7FF0000FFF8\r
+ 001FFFFF0000FFFC001FFFFF0000FFFC001FFFFF0000FFFC003FFFFF0000FFFC\r
+ 003FFFFF0000FFFE003FFFFF0000FFFE007FFFFF0000FFFE007FFFFF0000FFFE\r
+ 007FFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF\r
+ 01FFFFFF0000FFFF01FFFFFF0000FFFF81FFFFFF0000FFFFC3FFFFFF0000FFFF\r
+ FFFFFFFF0000FFFFFFFFFFFF0000FFFFFFFFFFFF0000FFFFFFFFFFFF0000}\r
+ OldCreateOrder = False\r
+ OnHide = FormHide\r
+ OnShow = FormShow\r
+ PixelsPerInch = 96\r
+ TextHeight = 13\r
+ object RadioGroupProtocol: TRadioGroup\r
+ Left = 8\r
+ Top = 8\r
+ Width = 89\r
+ Height = 97\r
+ Caption = 'Protocol'\r
+ ItemIndex = 0\r
+ Items.Strings = (\r
+ 'TS'\r
+ 'RTP'\r
+ 'HTTP')\r
+ TabOrder = 0\r
+ end\r
+ object GroupBoxServer: TGroupBox\r
+ Left = 104\r
+ Top = 8\r
+ Width = 273\r
+ Height = 97\r
+ Caption = 'Server'\r
+ TabOrder = 1\r
+ object LabelAddress: TLabel\r
+ Left = 16\r
+ Top = 20\r
+ Width = 38\r
+ Height = 13\r
+ Caption = 'Address'\r
+ end\r
+ object LabelPort: TLabel\r
+ Left = 16\r
+ Top = 46\r
+ Width = 19\r
+ Height = 13\r
+ Caption = 'Port'\r
+ end\r
+ object CheckBoxBroadcast: TCheckBox\r
+ Left = 16\r
+ Top = 72\r
+ Width = 73\r
+ Height = 17\r
+ Caption = 'Broadcast'\r
+ TabOrder = 0\r
+ OnClick = CheckBoxBroadcastClick\r
+ end\r
+ object EditPort: TEdit\r
+ Left = 96\r
+ Top = 42\r
+ Width = 145\r
+ Height = 21\r
+ TabOrder = 1\r
+ Text = '1234'\r
+ end\r
+ object ComboBoxAddress: TComboBox\r
+ Left = 96\r
+ Top = 16\r
+ Width = 161\r
+ Height = 21\r
+ ItemHeight = 13\r
+ TabOrder = 2\r
+ Text = '138.195.131.10'\r
+ end\r
+ object ComboBoxBroadcast: TComboBox\r
+ Left = 96\r
+ Top = 70\r
+ Width = 161\r
+ Height = 21\r
+ Enabled = False\r
+ ItemHeight = 13\r
+ TabOrder = 3\r
+ Text = '138.195.143.255'\r
+ end\r
+ object UpDownPort: TUpDown\r
+ Left = 241\r
+ Top = 42\r
+ Width = 15\r
+ Height = 21\r
+ Associate = EditPort\r
+ Min = 0\r
+ Max = 32767\r
+ Position = 1234\r
+ TabOrder = 4\r
+ Thousands = False\r
+ Wrap = False\r
+ end\r
+ end\r
+ object GroupBoxChannels: TGroupBox\r
+ Left = 8\r
+ Top = 112\r
+ Width = 369\r
+ Height = 57\r
+ Caption = 'Channels'\r
+ TabOrder = 2\r
+ object LabelPortCS: TLabel\r
+ Left = 268\r
+ Top = 26\r
+ Width = 19\r
+ Height = 13\r
+ Caption = 'Port'\r
+ Enabled = False\r
+ end\r
+ object CheckBoxChannel: TCheckBox\r
+ Left = 8\r
+ Top = 24\r
+ Width = 97\r
+ Height = 17\r
+ Caption = 'Channel server'\r
+ TabOrder = 0\r
+ OnClick = CheckBoxChannelClick\r
+ end\r
+ object ComboBoxChannel: TComboBox\r
+ Left = 112\r
+ Top = 22\r
+ Width = 137\r
+ Height = 21\r
+ Enabled = False\r
+ ItemHeight = 13\r
+ TabOrder = 1\r
+ Text = '138.195.156.232'\r
+ end\r
+ object EditPortCS: TEdit\r
+ Left = 296\r
+ Top = 22\r
+ Width = 41\r
+ Height = 21\r
+ Enabled = False\r
+ TabOrder = 2\r
+ Text = '6 010'\r
+ end\r
+ object UpDownPortCS: TUpDown\r
+ Left = 337\r
+ Top = 22\r
+ Width = 15\r
+ Height = 21\r
+ Associate = EditPortCS\r
+ Enabled = False\r
+ Min = 0\r
+ Max = 32767\r
+ Position = 6010\r
+ TabOrder = 3\r
+ Wrap = False\r
+ end\r
+ end\r
+ object BitBtnOk: TBitBtn\r
+ Left = 8\r
+ Top = 176\r
+ Width = 177\r
+ Height = 25\r
+ Caption = 'OK'\r
+ Default = True\r
+ ModalResult = 1\r
+ TabOrder = 3\r
+ OnClick = BitBtnOkClick\r
+ end\r
+ object BitBtnCancel: TBitBtn\r
+ Left = 200\r
+ Top = 176\r
+ Width = 177\r
+ Height = 25\r
+ Caption = 'Cancel'\r
+ ModalResult = 2\r
+ TabOrder = 4\r
+ OnClick = BitBtnCancelClick\r
+ end\r
+end\r
--- /dev/null
+/*****************************************************************************\r
+ * network.h: the "network" dialog box\r
+ *****************************************************************************\r
+ * Copyright (C) 2002 VideoLAN\r
+ *\r
+ * Authors: Olivier Teuliere <ipkiss@via.ecp.fr>\r
+ *\r
+ * This program is free software; you can redistribute it and/or modify\r
+ * it under the terms of the GNU General Public License as published by\r
+ * the Free Software Foundation; either version 2 of the License, or\r
+ * (at your option) any later version.\r
+ * \r
+ * This program is distributed in the hope that it will be useful,\r
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r
+ * GNU General Public License for more details.\r
+ *\r
+ * You should have received a copy of the GNU General Public License\r
+ * along with this program; if not, write to the Free Software\r
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA.\r
+ *****************************************************************************/\r
+\r
+#ifndef networkH\r
+#define networkH\r
+//---------------------------------------------------------------------------\r
+#include <Classes.hpp>\r
+#include <Controls.hpp>\r
+#include <StdCtrls.hpp>\r
+#include <Forms.hpp>\r
+#include <Buttons.hpp>\r
+#include <ComCtrls.hpp>\r
+#include <ExtCtrls.hpp>\r
+//---------------------------------------------------------------------------\r
+\r
+#define NOT( var ) ( (var) ? false : true )\r
+\r
+class TNetworkDlg : public TForm\r
+{\r
+__published: // IDE-managed Components\r
+ TRadioGroup *RadioGroupProtocol;\r
+ TGroupBox *GroupBoxServer;\r
+ TLabel *LabelAddress;\r
+ TLabel *LabelPort;\r
+ TCheckBox *CheckBoxBroadcast;\r
+ TEdit *EditPort;\r
+ TComboBox *ComboBoxAddress;\r
+ TComboBox *ComboBoxBroadcast;\r
+ TUpDown *UpDownPort;\r
+ TGroupBox *GroupBoxChannels;\r
+ TLabel *LabelPortCS;\r
+ TCheckBox *CheckBoxChannel;\r
+ TComboBox *ComboBoxChannel;\r
+ TEdit *EditPortCS;\r
+ TUpDown *UpDownPortCS;\r
+ TBitBtn *BitBtnOk;\r
+ TBitBtn *BitBtnCancel;\r
+ void __fastcall FormShow( TObject *Sender );\r
+ void __fastcall FormHide( TObject *Sender );\r
+ void __fastcall BitBtnCancelClick(TObject *Sender);\r
+ void __fastcall CheckBoxBroadcastClick( TObject *Sender );\r
+ void __fastcall CheckBoxChannelClick( TObject *Sender );\r
+ void __fastcall BitBtnOkClick(TObject *Sender);\r
+private: // User declarations\r
+public: // User declarations\r
+ __fastcall TNetworkDlg( TComponent* Owner );\r
+};\r
+//---------------------------------------------------------------------------\r
+#endif\r
--- /dev/null
+/*****************************************************************************\r
+ * playlist.cpp: Interface for the playlist dialog\r
+ *****************************************************************************\r
+ * Copyright (C) 2002 VideoLAN\r
+ *\r
+ * Authors: Olivier Teuliere <ipkiss@via.ecp.fr>\r
+ *\r
+ * This program is free software; you can redistribute it and/or modify\r
+ * it under the terms of the GNU General Public License as published by\r
+ * the Free Software Foundation; either version 2 of the License, or\r
+ * (at your option) any later version.\r
+ * \r
+ * This program is distributed in the hope that it will be useful,\r
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r
+ * GNU General Public License for more details.\r
+ *\r
+ * You should have received a copy of the GNU General Public License\r
+ * along with this program; if not, write to the Free Software\r
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA.\r
+ *****************************************************************************/\r
+\r
+#include <vcl.h>\r
+#pragma hdrstop\r
+\r
+#include <videolan/vlc.h>\r
+\r
+#include "stream_control.h"\r
+#include "input_ext-intf.h"\r
+\r
+#include "interface.h"\r
+#include "intf_playlist.h"\r
+#include "win32_common.h"\r
+\r
+#include "playlist.h"\r
+//---------------------------------------------------------------------------\r
+//#pragma package(smart_init)\r
+#pragma resource "*.dfm"\r
+\r
+extern struct intf_thread_s *p_intfGlobal;\r
+\r
+//---------------------------------------------------------------------------\r
+__fastcall TPlaylistDlg::TPlaylistDlg( TComponent* Owner )\r
+ : TForm( Owner )\r
+{\r
+ Icon = p_intfGlobal->p_sys->p_window->Icon;\r
+}\r
+//---------------------------------------------------------------------------\r
+char * __fastcall TPlaylistDlg::rindex( char *s, char c )\r
+{\r
+ char *ref = s;\r
+\r
+ s = s + strlen( s ) - 2;\r
+ while( ( s > ref ) && ( *s != c ) )\r
+ {\r
+ s--;\r
+ }\r
+ if( *s == c )\r
+ {\r
+ return( s );\r
+ }\r
+ else\r
+ {\r
+ return( NULL );\r
+ }\r
+}\r
+//---------------------------------------------------------------------------\r
+\r
+\r
+/*****************************************************************************\r
+ * Event handlers\r
+ ****************************************************************************/\r
+void __fastcall TPlaylistDlg::FormShow( TObject *Sender )\r
+{\r
+ p_intfGlobal->p_sys->p_window->MenuPlaylist->Checked = true;\r
+ p_intfGlobal->p_sys->p_window->PopupPlaylist->Checked = true;\r
+}\r
+//---------------------------------------------------------------------------\r
+void __fastcall TPlaylistDlg::FormHide( TObject *Sender )\r
+{\r
+ p_intfGlobal->p_sys->p_window->MenuPlaylist->Checked = false;\r
+ p_intfGlobal->p_sys->p_window->PopupPlaylist->Checked = false;\r
+}\r
+//---------------------------------------------------------------------------\r
+void __fastcall TPlaylistDlg::BitBtnOkClick( TObject *Sender )\r
+{\r
+ Hide();\r
+}\r
+//---------------------------------------------------------------------------\r
+void __fastcall TPlaylistDlg::ListViewPlaylistDblClick( TObject *Sender )\r
+{\r
+ TListItem *Item;\r
+ TListItem *ItemStart;\r
+ TItemStates Focused;\r
+\r
+ /* search the selected item */\r
+ if( ListViewPlaylist->SelCount > 0 )\r
+ {\r
+ if( ListViewPlaylist->SelCount == 1 )\r
+ {\r
+ Item = ListViewPlaylist->Selected;\r
+ }\r
+ else\r
+ {\r
+ Focused << isFocused;\r
+ ItemStart = ListViewPlaylist->Items->Item[0];\r
+\r
+ Item = ListViewPlaylist->GetNextItem( ItemStart, sdAll, Focused );\r
+ }\r
+\r
+ /* stop current item, select the good one */\r
+ if( ( p_input_bank->pp_input[0] != NULL ) &&\r
+ ( Item->Index != p_intfGlobal->p_sys->i_playing ) )\r
+ {\r
+ /* FIXME: temporary hack */\r
+ p_input_bank->pp_input[0]->b_eof = 1;\r
+ }\r
+ intf_PlaylistJumpto( p_main->p_playlist, Item->Index - 1 );\r
+ }\r
+}\r
+//---------------------------------------------------------------------------\r
+void __fastcall TPlaylistDlg::ListViewPlaylistKeyDown( TObject *Sender,\r
+ WORD &Key, TShiftState Shift )\r
+{\r
+ /* 'suppr' or 'backspace' */\r
+ if( ( Key == VK_DELETE ) || ( Key == VK_BACK ) )\r
+ {\r
+ MenuDeleteSelectedClick( Sender );\r
+ }\r
+\r
+ /* 'enter' */\r
+ if( Key == VK_RETURN )\r
+ {\r
+ PopupPlayClick( Sender );\r
+ }\r
+}\r
+//---------------------------------------------------------------------------\r
+void __fastcall TPlaylistDlg::ListViewPlaylistCustomDrawItem(\r
+ TCustomListView *Sender, TListItem *Item, TCustomDrawState State,\r
+ bool &DefaultDraw)\r
+{\r
+ TRect Rect = Item->DisplayRect( drBounds );\r
+\r
+ /* set the background color */\r
+ if( Item->Index == p_intfGlobal->p_sys->i_playing )\r
+ {\r
+ Sender->Canvas->Brush->Color = clRed;\r
+ }\r
+ else\r
+ {\r
+ Sender->Canvas->Brush->Color = clWhite;\r
+ }\r
+\r
+ Sender->Canvas->FillRect( Rect );\r
+}\r
+//---------------------------------------------------------------------------\r
+\r
+\r
+/*****************************************************************************\r
+ * Menu callbacks\r
+ ****************************************************************************/\r
+void __fastcall TPlaylistDlg::MenuAddFileClick( TObject *Sender )\r
+{\r
+ p_intfGlobal->p_sys->p_window->MenuOpenFileClick( Sender );\r
+}\r
+//---------------------------------------------------------------------------\r
+void __fastcall TPlaylistDlg::MenuAddDiscClick( TObject *Sender )\r
+{\r
+ p_intfGlobal->p_sys->p_window->MenuOpenDiscClick( Sender );\r
+}\r
+//---------------------------------------------------------------------------\r
+void __fastcall TPlaylistDlg::MenuAddNetClick( TObject *Sender )\r
+{\r
+ p_intfGlobal->p_sys->p_window->MenuNetworkStreamClick( Sender );\r
+}\r
+//---------------------------------------------------------------------------\r
+void __fastcall TPlaylistDlg::MenuAddUrlClick( TObject *Sender )\r
+{\r
+ /* TODO */\r
+}\r
+//---------------------------------------------------------------------------\r
+void __fastcall TPlaylistDlg::MenuDeleteSelectedClick( TObject *Sender )\r
+{\r
+ /* user wants to delete a file in the queue */\r
+ int i_pos;\r
+ playlist_t *p_playlist = p_main->p_playlist;\r
+\r
+ /* lock the struct */\r
+ vlc_mutex_lock( &p_intfGlobal->change_lock );\r
+\r
+ /* delete the items from the last to the first */\r
+ for( i_pos = p_playlist->i_size - 1; i_pos >= 0; i_pos-- )\r
+ {\r
+ if( ListViewPlaylist->Items->Item[i_pos]->Selected )\r
+ {\r
+ DeleteItem( i_pos );\r
+ }\r
+ }\r
+\r
+ /* Rebuild the ListView */\r
+ UpdateGrid( p_playlist );\r
+\r
+ vlc_mutex_unlock( &p_intfGlobal->change_lock );\r
+}\r
+//---------------------------------------------------------------------------\r
+void __fastcall TPlaylistDlg::MenuDeleteAllClick( TObject *Sender )\r
+{\r
+ int i_pos;\r
+ playlist_t *p_playlist = p_main->p_playlist;\r
+\r
+ /* lock the struct */\r
+ vlc_mutex_lock( &p_intfGlobal->change_lock );\r
+\r
+ /* delete the items from the last to the first */\r
+ for( i_pos = p_playlist->i_size - 1; i_pos >= 0; i_pos-- )\r
+ {\r
+ DeleteItem( i_pos );\r
+ }\r
+\r
+ /* Rebuild the ListView */\r
+ UpdateGrid( p_playlist );\r
+\r
+ vlc_mutex_unlock( &p_intfGlobal->change_lock );\r
+}\r
+//---------------------------------------------------------------------------\r
+void __fastcall TPlaylistDlg::MenuSelectionInvertClick( TObject *Sender )\r
+{\r
+#define NOT( var ) ( (var) ? false : true )\r
+ int i_pos;\r
+ playlist_t *p_playlist = p_main->p_playlist;\r
+ TListItems *Items = ListViewPlaylist->Items;\r
+\r
+ /* delete the items from the last to the first */\r
+ for( i_pos = p_playlist->i_size - 1; i_pos >= 0; i_pos-- )\r
+ {\r
+ Items->Item[i_pos]->Selected = NOT( Items->Item[i_pos]->Selected );\r
+ }\r
+#undef NOT\r
+}\r
+//---------------------------------------------------------------------------\r
+void __fastcall TPlaylistDlg::MenuSelectionCropClick( TObject *Sender )\r
+{\r
+ MenuSelectionInvertClick( Sender );\r
+ MenuDeleteSelectedClick( Sender );\r
+}\r
+//---------------------------------------------------------------------------\r
+\r
+\r
+/*****************************************************************************\r
+ * Popup callbacks\r
+ ****************************************************************************/\r
+void __fastcall TPlaylistDlg::PopupPlayClick( TObject *Sender )\r
+{\r
+ ListViewPlaylistDblClick( Sender );\r
+}\r
+//---------------------------------------------------------------------------\r
+void __fastcall TPlaylistDlg::PopupInvertSelectionClick( TObject *Sender )\r
+{\r
+ MenuSelectionInvertClick( Sender );\r
+}\r
+//---------------------------------------------------------------------------\r
+void __fastcall TPlaylistDlg::PopupCropSelectionClick( TObject *Sender )\r
+{\r
+ MenuSelectionCropClick( Sender );\r
+}\r
+//---------------------------------------------------------------------------\r
+void __fastcall TPlaylistDlg::PopupDeleteSelectedClick( TObject *Sender )\r
+{\r
+ MenuDeleteSelectedClick( Sender );\r
+}\r
+//---------------------------------------------------------------------------\r
+void __fastcall TPlaylistDlg::PopupDeleteAllClick( TObject *Sender )\r
+{\r
+ MenuDeleteAllClick( Sender );\r
+}\r
+//---------------------------------------------------------------------------\r
+\r
+\r
+/*****************************************************************************\r
+ * Useful functions, needed by the event handlers\r
+ ****************************************************************************/\r
+void __fastcall TPlaylistDlg::UpdateGrid( playlist_t * p_playlist )\r
+{\r
+ int i_dummy;\r
+ char *FileName;\r
+ TListItem *Item;\r
+\r
+ ListViewPlaylist->Items->BeginUpdate();\r
+\r
+ /* Clear the list... */\r
+ ListViewPlaylist->Items->Clear();\r
+\r
+ /* ...and rebuild it */\r
+ for( i_dummy = 0; i_dummy < p_playlist->i_size; i_dummy++ )\r
+ {\r
+#ifdef WIN32\r
+ /* Position of the last '\' in the string */\r
+ FileName = rindex( p_playlist->p_item[i_dummy].psz_name, '\\' );\r
+#else\r
+ /* Position of the last '/' in the string */\r
+ FileName = rindex( p_playlist->p_item[i_dummy].psz_name, '/' );\r
+#endif\r
+ if( ( FileName == NULL ) || ( *(FileName + 1) == '\0' ) )\r
+ {\r
+ FileName = p_playlist->p_item[i_dummy].psz_name;\r
+ }\r
+ else\r
+ {\r
+ /* Skip leading '\' or '/' */\r
+ FileName++;\r
+ }\r
+\r
+ Item = ListViewPlaylist->Items->Add();\r
+ Item->Caption = FileName;\r
+ Item->SubItems->Add( "no info" );\r
+ }\r
+ /* TODO: Set background color ? */\r
+\r
+ ListViewPlaylist->Items->EndUpdate();\r
+}\r
+//---------------------------------------------------------------------------\r
+void __fastcall TPlaylistDlg::Manage( intf_thread_t * p_intf )\r
+{\r
+ playlist_t *p_playlist = p_main->p_playlist ;\r
+\r
+ vlc_mutex_lock( &p_playlist->change_lock );\r
+\r
+ if( p_intf->p_sys->i_playing != p_playlist->i_index )\r
+ {\r
+ p_intf->p_sys->i_playing = p_playlist->i_index;\r
+\r
+ /* update the background color */\r
+ UpdateGrid( p_playlist );\r
+ }\r
+\r
+ vlc_mutex_unlock( &p_playlist->change_lock );\r
+}\r
+//---------------------------------------------------------------------------\r
+void __fastcall TPlaylistDlg::DeleteItem( int i_pos )\r
+{\r
+ intf_PlaylistDelete( p_main->p_playlist, i_pos );\r
+\r
+ /* are we deleting the current played stream */\r
+ if( p_intfGlobal->p_sys->i_playing == i_pos )\r
+ {\r
+ /* next ! */\r
+ p_input_bank->pp_input[0]->b_eof = 1;\r
+ /* this has to set the slider to 0 */\r
+ \r
+ /* step minus one */\r
+ p_intfGlobal->p_sys->i_playing-- ;\r
+\r
+ vlc_mutex_lock( &p_main->p_playlist->change_lock );\r
+ p_main->p_playlist->i_index-- ;\r
+ vlc_mutex_unlock( &p_main->p_playlist->change_lock );\r
+ }\r
+}\r
+//---------------------------------------------------------------------------\r
+void __fastcall TPlaylistDlg::Previous()\r
+{\r
+ if( p_input_bank->pp_input[0] != NULL )\r
+ {\r
+ /* FIXME: temporary hack */\r
+ intf_PlaylistPrev( p_main->p_playlist );\r
+ intf_PlaylistPrev( p_main->p_playlist );\r
+ p_input_bank->pp_input[0]->b_eof = 1;\r
+ }\r
+}\r
+//---------------------------------------------------------------------------\r
+void __fastcall TPlaylistDlg::Next()\r
+{\r
+ if( p_input_bank->pp_input[0] != NULL )\r
+ {\r
+ /* FIXME: temporary hack */\r
+ p_input_bank->pp_input[0]->b_eof = 1;\r
+ }\r
+}\r
+//---------------------------------------------------------------------------\r
+\r
--- /dev/null
+object PlaylistDlg: TPlaylistDlg\r
+ Left = 447\r
+ Top = 197\r
+ Width = 335\r
+ Height = 436\r
+ Caption = 'Playlist'\r
+ Color = clBtnFace\r
+ Font.Charset = DEFAULT_CHARSET\r
+ Font.Color = clWindowText\r
+ Font.Height = -11\r
+ Font.Name = 'MS Sans Serif'\r
+ Font.Style = []\r
+ Menu = MainMenuPlaylist\r
+ OldCreateOrder = False\r
+ OnHide = FormHide\r
+ OnShow = FormShow\r
+ PixelsPerInch = 96\r
+ TextHeight = 13\r
+ object BitBtnOk: TBitBtn\r
+ Left = 76\r
+ Top = 356\r
+ Width = 176\r
+ Height = 25\r
+ Anchors = [akBottom]\r
+ Caption = 'OK'\r
+ ModalResult = 1\r
+ TabOrder = 0\r
+ OnClick = BitBtnOkClick\r
+ end\r
+ object ListViewPlaylist: TListView\r
+ Left = 11\r
+ Top = 10\r
+ Width = 305\r
+ Height = 331\r
+ Anchors = [akTop, akBottom]\r
+ Columns = <\r
+ item\r
+ Caption = 'Filename'\r
+ Width = 200\r
+ end\r
+ item\r
+ Alignment = taCenter\r
+ Caption = 'Duration'\r
+ Width = 100\r
+ end>\r
+ HideSelection = False\r
+ MultiSelect = True\r
+ ReadOnly = True\r
+ RowSelect = True\r
+ PopupMenu = PopupMenuPlaylist\r
+ TabOrder = 1\r
+ ViewStyle = vsReport\r
+ OnCustomDrawItem = ListViewPlaylistCustomDrawItem\r
+ OnDblClick = ListViewPlaylistDblClick\r
+ OnKeyDown = ListViewPlaylistKeyDown\r
+ end\r
+ object MainMenuPlaylist: TMainMenu\r
+ Left = 24\r
+ Top = 352\r
+ object MenuAdd: TMenuItem\r
+ Caption = '&Add'\r
+ object MenuAddFile: TMenuItem\r
+ Caption = '&File'\r
+ OnClick = MenuAddFileClick\r
+ end\r
+ object MenuAddDisc: TMenuItem\r
+ Caption = '&Disc'\r
+ OnClick = MenuAddDiscClick\r
+ end\r
+ object MenuAddNet: TMenuItem\r
+ Caption = '&Network'\r
+ OnClick = MenuAddNetClick\r
+ end\r
+ object MenuAddUrl: TMenuItem\r
+ Caption = '&Url'\r
+ Enabled = False\r
+ OnClick = MenuAddUrlClick\r
+ end\r
+ end\r
+ object MenuDelete: TMenuItem\r
+ Caption = '&Delete'\r
+ object MenuDeleteAll: TMenuItem\r
+ Caption = '&All'\r
+ OnClick = MenuDeleteAllClick\r
+ end\r
+ object MenuDeleteSelected: TMenuItem\r
+ Caption = '&Selected'\r
+ OnClick = MenuDeleteSelectedClick\r
+ end\r
+ end\r
+ object MenuSelection: TMenuItem\r
+ Caption = '&Selection'\r
+ object MenuSelectionCrop: TMenuItem\r
+ Caption = '&Crop'\r
+ OnClick = MenuSelectionCropClick\r
+ end\r
+ object MenuSelectionInvert: TMenuItem\r
+ Caption = '&Invert'\r
+ OnClick = MenuSelectionInvertClick\r
+ end\r
+ end\r
+ end\r
+ object PopupMenuPlaylist: TPopupMenu\r
+ Left = 272\r
+ Top = 352\r
+ object PopupPlay: TMenuItem\r
+ Caption = '&Play'\r
+ OnClick = PopupPlayClick\r
+ end\r
+ object N1: TMenuItem\r
+ Caption = '-'\r
+ end\r
+ object PopupInvertSelection: TMenuItem\r
+ Caption = '&Invert selection'\r
+ OnClick = PopupInvertSelectionClick\r
+ end\r
+ object PopupCropSelection: TMenuItem\r
+ Caption = '&Crop selection'\r
+ OnClick = PopupCropSelectionClick\r
+ end\r
+ object N2: TMenuItem\r
+ Caption = '-'\r
+ end\r
+ object PopupDeleteSelected: TMenuItem\r
+ Caption = '&Delete selected'\r
+ OnClick = PopupDeleteSelectedClick\r
+ end\r
+ object PopupDeleteAll: TMenuItem\r
+ Caption = 'Delete &all'\r
+ OnClick = PopupDeleteAllClick\r
+ end\r
+ end\r
+end\r
--- /dev/null
+/*****************************************************************************\r
+ * playlist.h: Interface for the playlist dialog\r
+ *****************************************************************************\r
+ * Copyright (C) 2002 VideoLAN\r
+ *\r
+ * Authors: Olivier Teuliere <ipkiss@via.ecp.fr>\r
+ *\r
+ * This program is free software; you can redistribute it and/or modify\r
+ * it under the terms of the GNU General Public License as published by\r
+ * the Free Software Foundation; either version 2 of the License, or\r
+ * (at your option) any later version.\r
+ * \r
+ * This program is distributed in the hope that it will be useful,\r
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r
+ * GNU General Public License for more details.\r
+ *\r
+ * You should have received a copy of the GNU General Public License\r
+ * along with this program; if not, write to the Free Software\r
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA.\r
+ *****************************************************************************/\r
+\r
+#ifndef playlistH\r
+#define playlistH\r
+//---------------------------------------------------------------------------\r
+#include <Classes.hpp>\r
+#include <Controls.hpp>\r
+#include <StdCtrls.hpp>\r
+#include <Forms.hpp>\r
+#include <Buttons.hpp>\r
+#include <Menus.hpp>\r
+#include <Grids.hpp>\r
+#include <ComCtrls.hpp>\r
+\r
+struct playlist_s;\r
+struct intf_thread_s;\r
+\r
+//---------------------------------------------------------------------------\r
+class TPlaylistDlg : public TForm\r
+{\r
+__published: // IDE-managed Components\r
+ TBitBtn *BitBtnOk;\r
+ TMainMenu *MainMenuPlaylist;\r
+ TMenuItem *MenuAdd;\r
+ TMenuItem *MenuAddFile;\r
+ TMenuItem *MenuAddDisc;\r
+ TMenuItem *MenuAddNet;\r
+ TMenuItem *MenuAddUrl;\r
+ TMenuItem *MenuDelete;\r
+ TMenuItem *MenuDeleteAll;\r
+ TMenuItem *MenuDeleteSelected;\r
+ TMenuItem *MenuSelection;\r
+ TMenuItem *MenuSelectionCrop;\r
+ TMenuItem *MenuSelectionInvert;\r
+ TListView *ListViewPlaylist;\r
+ TPopupMenu *PopupMenuPlaylist;\r
+ TMenuItem *PopupPlay;\r
+ TMenuItem *N1;\r
+ TMenuItem *PopupDeleteAll;\r
+ TMenuItem *PopupDeleteSelected;\r
+ TMenuItem *N2;\r
+ TMenuItem *PopupInvertSelection;\r
+ TMenuItem *PopupCropSelection;\r
+ void __fastcall FormShow( TObject *Sender );\r
+ void __fastcall FormHide( TObject *Sender );\r
+ void __fastcall BitBtnOkClick( TObject *Sender );\r
+ void __fastcall ListViewPlaylistDblClick( TObject *Sender );\r
+ void __fastcall ListViewPlaylistKeyDown( TObject *Sender, WORD &Key,\r
+ TShiftState Shift );\r
+ void __fastcall ListViewPlaylistCustomDrawItem( TCustomListView *Sender,\r
+ TListItem *Item, TCustomDrawState State, bool &DefaultDraw );\r
+ void __fastcall MenuAddFileClick( TObject *Sender );\r
+ void __fastcall MenuAddDiscClick( TObject *Sender );\r
+ void __fastcall MenuAddNetClick( TObject *Sender );\r
+ void __fastcall MenuAddUrlClick( TObject *Sender );\r
+ void __fastcall MenuDeleteSelectedClick( TObject *Sender );\r
+ void __fastcall MenuDeleteAllClick( TObject *Sender );\r
+ void __fastcall MenuSelectionInvertClick( TObject *Sender );\r
+ void __fastcall MenuSelectionCropClick( TObject *Sender );\r
+ void __fastcall PopupPlayClick( TObject *Sender );\r
+ void __fastcall PopupInvertSelectionClick( TObject *Sender );\r
+ void __fastcall PopupCropSelectionClick( TObject *Sender );\r
+ void __fastcall PopupDeleteSelectedClick( TObject *Sender );\r
+ void __fastcall PopupDeleteAllClick( TObject *Sender );\r
+private: // User declarations\r
+ char * __fastcall rindex( char *s, char c );\r
+public: // User declarations\r
+ __fastcall TPlaylistDlg( TComponent* Owner );\r
+ void __fastcall UpdateGrid( struct playlist_s * p_playlist );\r
+ void __fastcall Manage( struct intf_thread_s * p_intf );\r
+ void __fastcall DeleteItem( int i_pos );\r
+ void __fastcall Previous();\r
+ void __fastcall Next();\r
+};\r
+//---------------------------------------------------------------------------\r
+#endif\r
--- /dev/null
+/*****************************************************************************\r
+ * preferences.h: the "Preferences" dialog box\r
+ *****************************************************************************\r
+ * Copyright (C) 2002 VideoLAN\r
+ *\r
+ * Authors: Olivier Teuliere <ipkiss@via.ecp.fr>\r
+ *\r
+ * This program is free software; you can redistribute it and/or modify\r
+ * it under the terms of the GNU General Public License as published by\r
+ * the Free Software Foundation; either version 2 of the License, or\r
+ * (at your option) any later version.\r
+ *\r
+ * This program is distributed in the hope that it will be useful,\r
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r
+ * GNU General Public License for more details.\r
+ *\r
+ * You should have received a copy of the GNU General Public License\r
+ * along with this program; if not, write to the Free Software\r
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA.\r
+ *****************************************************************************/\r
+\r
+#include <vcl.h>\r
+#pragma hdrstop\r
+\r
+#include <videolan/vlc.h>\r
+\r
+#include "interface.h"\r
+\r
+#include "preferences.h"\r
+#include "win32_common.h"\r
+\r
+//---------------------------------------------------------------------------\r
+//#pragma package(smart_init)\r
+#pragma resource "*.dfm"\r
+\r
+extern struct intf_thread_s *p_intfGlobal;\r
+\r
+/****************************************************************************\r
+ * Functions to help components creation\r
+ ****************************************************************************/\r
+__fastcall TGroupBoxPref::TGroupBoxPref( TComponent* Owner,\r
+ module_config_t *p_config_arg ) : TGroupBox( Owner )\r
+{\r
+ p_config = p_config_arg;\r
+ Caption = p_config->psz_text;\r
+}\r
+//---------------------------------------------------------------------------\r
+TListView * __fastcall TGroupBoxPref::CreateListView( TWinControl *Parent,\r
+ int Left, int Width, int Top, int Height, TViewStyle ViewStyle )\r
+{\r
+ TListView *ListView = new TListView( Parent );\r
+ ListView->Parent = Parent;\r
+ ListView->ViewStyle = ViewStyle;\r
+ ListView->Left = Left;\r
+ ListView->Width = Width;\r
+ ListView->Top = Top;\r
+ ListView->Height = Height;\r
+ return ListView;\r
+}\r
+//---------------------------------------------------------------------------\r
+TButton * __fastcall TGroupBoxPref::CreateButton( TWinControl *Parent,\r
+ int Left, int Width, int Top, int Height, AnsiString Caption )\r
+{\r
+ TButton *Button = new TButton( Parent );\r
+ Button->Parent = Parent;\r
+ Button->Left = Left;\r
+ Button->Width = Width;\r
+ Button->Top = Top;\r
+ Button->Height = Height;\r
+ Button->Caption = Caption;\r
+ return Button;\r
+}\r
+//---------------------------------------------------------------------------\r
+TCheckBox * __fastcall TGroupBoxPref::CreateCheckBox( TWinControl *Parent,\r
+ int Left, int Width, int Top, int Height, AnsiString Caption )\r
+{\r
+ TCheckBox *CheckBox = new TCheckBox( Parent );\r
+ CheckBox->Parent = Parent;\r
+ CheckBox->Left = Left;\r
+ CheckBox->Width = Width;\r
+ CheckBox->Top = Top;\r
+ CheckBox->Height = Height;\r
+ CheckBox->Caption = Caption;\r
+ return CheckBox;\r
+}\r
+//---------------------------------------------------------------------------\r
+TLabel * __fastcall TGroupBoxPref::CreateLabel( TWinControl *Parent,\r
+ int Left, int Width, int Top, int Height, AnsiString Caption,\r
+ bool WordWrap )\r
+{\r
+ TLabel *Label = new TLabel( Parent );\r
+ Label->Parent = Parent;\r
+ Label->Caption = Caption;\r
+ Label->Left = Left;\r
+ Label->Width = Width;\r
+ Label->Top = Top;\r
+ Label->Height = Height;\r
+ Label->WordWrap = WordWrap;\r
+ return Label;\r
+}\r
+//---------------------------------------------------------------------------\r
+TEdit * __fastcall TGroupBoxPref::CreateEdit( TWinControl *Parent,\r
+ int Left, int Width, int Top, int Height, AnsiString Text )\r
+{\r
+ TEdit *Edit = new TEdit( Parent );\r
+ Edit->Parent = Parent;\r
+ Edit->Left = Left;\r
+ Edit->Width = Width;\r
+ Edit->Top = Top;\r
+ Edit->Height = Height;\r
+ Edit->Text = Text;\r
+ return Edit;\r
+}\r
+//---------------------------------------------------------------------------\r
+TUpDown * __fastcall TGroupBoxPref::CreateUpDown( TWinControl *Parent,\r
+ int Min, int Max, int Position, bool Thousands )\r
+{\r
+ TUpDown *UpDown = new TUpDown( Parent );\r
+ UpDown->Parent = Parent;\r
+ UpDown->Min = Min;\r
+ UpDown->Max = Max;\r
+ UpDown->Position = Position;\r
+ UpDown->Thousands = Thousands;\r
+ return UpDown;\r
+}\r
+\r
+\r
+/****************************************************************************\r
+ * GroupBox for plugin management\r
+ ****************************************************************************/\r
+__fastcall TGroupBoxPlugin::TGroupBoxPlugin( TComponent* Owner,\r
+ module_config_t *p_config ) : TGroupBoxPref( Owner, p_config )\r
+{\r
+ /* init listview */\r
+ ListView = CreateListView( this, 16, 164, 24, 160, vsReport );\r
+ ListView->Columns->Add();\r
+ ListView->Columns->Items[0]->Width = 160;\r
+ ListView->Columns->Items[0]->Caption = "Name";//p_config->psz_text;\r
+ ListView->OnSelectItem = ListViewSelectItem;\r
+\r
+ /* init description label */\r
+ LabelDesc = CreateLabel( this, 230, 225, 50, 52,\r
+ p_config->psz_longtext, true );\r
+\r
+ /* init hint label */\r
+ LabelHint = CreateLabel( this, 230, 225, 135, 13, "", false );\r
+\r
+ /* init configure button */\r
+ ButtonConfig = CreateButton( this, 16, 70, 192, 25, "Configure" );\r
+ ButtonConfig->Enabled = false;\r
+\r
+ /* init select button */\r
+ ButtonSelect = CreateButton( this, 110, 70, 192, 25, "Select" );\r
+ ButtonSelect->OnClick = ButtonSelectClick;\r
+\r
+ /* init 'Selected' label */\r
+ LabelSelected = CreateLabel( this, 230, 45, 198, 13, "Selected", false );\r
+\r
+ /* init 'Selected' edit */\r
+ Edit = CreateEdit( this, 280, 164, 194, 21, "" );\r
+ vlc_mutex_lock( p_config->p_lock );\r
+ Edit->Text = p_config->psz_value ? p_config->psz_value : "";\r
+ vlc_mutex_unlock( p_config->p_lock );\r
+ Edit->OnChange = EditChange;\r
+\r
+ Height = 233;\r
+};\r
+//---------------------------------------------------------------------------\r
+void __fastcall TGroupBoxPlugin::ListViewSelectItem( TObject *Sender,\r
+ TListItem *Item, bool Selected )\r
+{\r
+ module_t *p_module;\r
+ AnsiString Name;\r
+\r
+ Name = Item->Caption;\r
+ if( Name != "" )\r
+ {\r
+ /* look for plugin 'Name' */\r
+ for( p_module = p_module_bank->first ;\r
+ p_module != NULL ;\r
+ p_module = p_module->next )\r
+ {\r
+ if( !strcmp( p_module->psz_name, Name.c_str() ) )\r
+ {\r
+ ModuleSelected = p_module;\r
+ LabelHint->Caption = p_module->psz_longname ?\r
+ p_module->psz_longname : "";\r
+ ButtonConfig->Enabled = p_module->i_config_items ? true : false;\r
+\r
+ break;\r
+ }\r
+ }\r
+ }\r
+}\r
+//---------------------------------------------------------------------------\r
+void __fastcall TGroupBoxPlugin::ButtonSelectClick( TObject *Sender )\r
+{\r
+ if( !ModuleSelected ) return;\r
+ Edit->Text = ModuleSelected->psz_name;\r
+}\r
+//---------------------------------------------------------------------------\r
+void __fastcall TGroupBoxPlugin::ButtonConfigClick( TObject *Sender )\r
+{\r
+ /* FIWME: TODO */\r
+}\r
+//---------------------------------------------------------------------------\r
+void __fastcall TGroupBoxPlugin::EditChange( TObject *Sender )\r
+{\r
+ TEdit *Edit = (TEdit *)Sender;\r
+ p_config->psz_value = Edit->Text.c_str();\r
+}\r
+\r
+\r
+/****************************************************************************\r
+ * GroupBox for string management\r
+ ****************************************************************************/\r
+__fastcall TGroupBoxString::TGroupBoxString( TComponent* Owner,\r
+ module_config_t *p_config ) : TGroupBoxPref( Owner, p_config )\r
+{\r
+ /* init description label */\r
+ LabelDesc = CreateLabel( this, 230, 225, 24, 26,\r
+ p_config->psz_longtext, true );\r
+\r
+ /* init edit */\r
+ Edit = CreateEdit( this, 16, 164, 24, 21, "" );\r
+ vlc_mutex_lock( p_config->p_lock );\r
+ Edit->Text = p_config->psz_value ? p_config->psz_value : "";\r
+ vlc_mutex_unlock( p_config->p_lock );\r
+ Edit->OnChange = EditChange;\r
+\r
+ /* vertical alignment */\r
+ Height = LabelDesc->Height + 24;\r
+ LabelDesc->Top = Top + ( Height - LabelDesc->Height ) / 2 + 4;\r
+ Edit->Top = Top + ( Height - Edit->Height ) / 2 + 4;\r
+};\r
+//---------------------------------------------------------------------------\r
+void __fastcall TGroupBoxString::EditChange( TObject *Sender )\r
+{\r
+ TEdit *Edit = (TEdit *)Sender;\r
+ p_config->psz_value = Edit->Text.c_str();\r
+}\r
+\r
+\r
+/****************************************************************************\r
+ * GroupBox for integer management\r
+ ****************************************************************************/\r
+__fastcall TGroupBoxInteger::TGroupBoxInteger( TComponent* Owner,\r
+ module_config_t *p_config ) : TGroupBoxPref( Owner, p_config )\r
+{\r
+ /* init description label */\r
+ LabelDesc = CreateLabel( this, 230, 225, 19, 26,\r
+ p_config->psz_longtext, true );\r
+\r
+ /* init edit */\r
+ Edit = CreateEdit( this, 16, 148, 24, 21, "" );\r
+ Edit->OnChange = EditChange;\r
+\r
+ /* init updown */\r
+ UpDown = CreateUpDown( this, -1, 32767, p_config->i_value, false );\r
+ UpDown->Associate = Edit;\r
+\r
+ /* vertical alignment */\r
+ Height = LabelDesc->Height + 24;\r
+ LabelDesc->Top = Top + ( Height - LabelDesc->Height ) / 2 + 4;\r
+ Edit->Top = Top + ( Height - Edit->Height ) / 2 + 4;\r
+};\r
+//---------------------------------------------------------------------------\r
+void __fastcall TGroupBoxInteger::EditChange( TObject *Sender )\r
+{\r
+ TEdit *Edit = (TEdit *)Sender;\r
+ p_config->i_value = StrToInt( Edit->Text );\r
+}\r
+\r
+\r
+/****************************************************************************\r
+ * GroupBox for boolean management\r
+ ****************************************************************************/\r
+__fastcall TGroupBoxBool::TGroupBoxBool( TComponent* Owner,\r
+ module_config_t *p_config ) : TGroupBoxPref( Owner, p_config )\r
+{\r
+ /* init description label */\r
+ LabelDesc = CreateLabel( this, 230, 225, 19, 26,\r
+ p_config->psz_longtext, true );\r
+\r
+ /* init checkbox */\r
+ CheckBox = CreateCheckBox( this, 16, 184, 28, 17, p_config->psz_text );\r
+ CheckBox->Checked = p_config->i_value;\r
+ CheckBox->OnClick = CheckBoxClick;\r
+\r
+ /* vertical alignment */\r
+ Height = LabelDesc->Height + 24;\r
+ LabelDesc->Top = Top + ( Height - LabelDesc->Height ) / 2 + 4;\r
+ CheckBox->Top = Top + ( Height - CheckBox->Height ) / 2 + 4;\r
+};\r
+//---------------------------------------------------------------------------\r
+void __fastcall TGroupBoxBool::CheckBoxClick( TObject *Sender )\r
+{\r
+ TCheckBox *CheckBox = (TCheckBox *)Sender;\r
+ p_config->i_value = CheckBox->Checked ? 1 : 0;\r
+}\r
+\r
+\r
+/****************************************************************************\r
+ * Callbacks for the dialog\r
+ ****************************************************************************/\r
+//---------------------------------------------------------------------------\r
+__fastcall TPreferencesDlg::TPreferencesDlg( TComponent* Owner )\r
+ : TForm( Owner )\r
+{\r
+ Icon = p_intfGlobal->p_sys->p_window->Icon;\r
+}\r
+//---------------------------------------------------------------------------\r
+void __fastcall TPreferencesDlg::FormClose( TObject *Sender,\r
+ TCloseAction &Action )\r
+{\r
+ Action = caHide;\r
+}\r
+//---------------------------------------------------------------------------\r
+void __fastcall TPreferencesDlg::FormShow( TObject *Sender )\r
+{\r
+ p_intfGlobal->p_sys->p_window->MenuPreferences->Checked = true;\r
+ p_intfGlobal->p_sys->p_window->PopupPreferences->Checked = true;\r
+}\r
+//---------------------------------------------------------------------------\r
+void __fastcall TPreferencesDlg::FormHide( TObject *Sender )\r
+{\r
+ p_intfGlobal->p_sys->p_window->MenuPreferences->Checked = false;\r
+ p_intfGlobal->p_sys->p_window->PopupPreferences->Checked = false;\r
+}\r
+\r
+\r
+/****************************************************************************\r
+ * CreateConfigDialog: dynamically creates the configuration dialog\r
+ * box from all the configuration data provided by the selected module.\r
+ ****************************************************************************/\r
+#define ADD_PANEL \\r
+{ \\r
+ Panel = new TPanel( this ); \\r
+ Panel->Parent = ScrollBox; \\r
+ Panel->Caption = ""; \\r
+ Panel->BevelOuter = bvNone; \\r
+ Panel->Height = 12; \\r
+}\r
+\r
+void __fastcall TPreferencesDlg::CreateConfigDialog( char *psz_module_name )\r
+{\r
+ bool config_dialog;\r
+ module_t *p_module;\r
+ module_t *p_module_plugins;\r
+ int i, j;\r
+\r
+ TTabSheet *TabSheet;\r
+ TScrollBox *ScrollBox;\r
+ TPanel *Panel;\r
+ TGroupBoxPlugin *GroupBoxPlugin;\r
+ TGroupBoxString *GroupBoxString;\r
+ TGroupBoxInteger *GroupBoxInteger;\r
+ TGroupBoxBool *GroupBoxBool;\r
+ TListItem *ListItem;\r
+\r
+ /* Check if the dialog box is already opened, if so this will save us\r
+ * quite a bit of work. (the interface will be destroyed when you actually\r
+ * close the main window, but remember that it is only hidden if you\r
+ * clicked on the action buttons). This trick also allows us not to\r
+ * duplicate identical dialog windows. */\r
+\r
+ /* FIXME: we must find a way of really checking whether the dialog\r
+ * box is already opened */\r
+ config_dialog = false;\r
+\r
+ if( config_dialog )\r
+ {\r
+ /* Yeah it was open */\r
+ Show();\r
+ return;\r
+ }\r
+\r
+ /* Look for the selected module */\r
+ for( p_module = p_module_bank->first ; p_module != NULL ;\r
+ p_module = p_module->next )\r
+ {\r
+\r
+ if( psz_module_name && !strcmp( psz_module_name, p_module->psz_name ) )\r
+ break;\r
+ }\r
+ if( !p_module ) return;\r
+\r
+ /*\r
+ * We found it, now we can start building its configuration interface\r
+ */\r
+\r
+ /* Enumerate config options and add corresponding config boxes */\r
+ for( i = 0; i < p_module->i_config_lines; i++ )\r
+ {\r
+ switch( p_module->p_config[i].i_type )\r
+ {\r
+ case MODULE_CONFIG_HINT_CATEGORY:\r
+\r
+ /* create a new tabsheet. */\r
+ TabSheet = new TTabSheet( this );\r
+ TabSheet->PageControl = PageControlPref;\r
+ TabSheet->Caption = p_module->p_config[i].psz_text;\r
+ TabSheet->Visible = true;\r
+\r
+ /* pack a scrollbox into the tabsheet */\r
+ ScrollBox = new TScrollBox( this );\r
+ ScrollBox->Parent = TabSheet;\r
+ ScrollBox->Align = alClient;\r
+ ScrollBox->BorderStyle = bsNone;\r
+ ScrollBox->HorzScrollBar->Tracking = true;\r
+ ScrollBox->VertScrollBar->Tracking = true;\r
+\r
+ break;\r
+\r
+ case MODULE_CONFIG_ITEM_PLUGIN:\r
+\r
+ /* add new groupbox for the config option */\r
+ GroupBoxPlugin = new TGroupBoxPlugin( this, &p_module->p_config[i] );\r
+ GroupBoxPlugin->Parent = ScrollBox;\r
+\r
+ /* add panel as separator */\r
+ ADD_PANEL;\r
+\r
+ /* build a list of available plugins */\r
+ for( p_module_plugins = p_module_bank->first ;\r
+ p_module_plugins != NULL ;\r
+ p_module_plugins = p_module_plugins->next )\r
+ {\r
+ if( p_module_plugins->i_capabilities &\r
+ ( 1 << p_module->p_config[i].i_value ) )\r
+ {\r
+ ListItem = GroupBoxPlugin->ListView->Items->Add();\r
+ ListItem->Caption = p_module_plugins->psz_name;\r
+ }\r
+ }\r
+\r
+ break;\r
+\r
+ case MODULE_CONFIG_ITEM_FILE:\r
+\r
+ case MODULE_CONFIG_ITEM_STRING:\r
+\r
+ /* add new groupbox for the config option */\r
+ GroupBoxString = new TGroupBoxString( this, &p_module->p_config[i] );\r
+ GroupBoxString->Parent = ScrollBox;\r
+\r
+ /* add panel as separator */\r
+ ADD_PANEL;\r
+\r
+ break;\r
+\r
+ case MODULE_CONFIG_ITEM_INTEGER:\r
+\r
+ /* add new groupbox for the config option */\r
+ GroupBoxInteger = new TGroupBoxInteger( this, &p_module->p_config[i] );\r
+ GroupBoxInteger->Parent = ScrollBox;\r
+\r
+ /* add panel as separator */\r
+ ADD_PANEL;\r
+\r
+ break;\r
+\r
+ case MODULE_CONFIG_ITEM_BOOL:\r
+\r
+ /* add new groupbox for the config option */\r
+ GroupBoxBool = new TGroupBoxBool( this, &p_module->p_config[i] );\r
+ GroupBoxBool->Parent = ScrollBox;\r
+\r
+ /* add panel as separator */\r
+ ADD_PANEL;\r
+\r
+ break;\r
+ }\r
+ }\r
+\r
+ /* Reorder groupboxes inside the tabsheets */\r
+ for( i = 0; i < PageControlPref->PageCount; i++ )\r
+ {\r
+ /* get scrollbox from the tabsheet */\r
+ ScrollBox = (TScrollBox *)PageControlPref->Pages[i]->Controls[0];\r
+\r
+ for( j = ScrollBox->ControlCount - 1; j >= 0 ; j-- )\r
+ {\r
+ ScrollBox->Controls[j]->Align = alTop;\r
+ }\r
+ }\r
+\r
+ /* set active tabsheet\r
+ * FIXME: i don't know why, but both lines are necessary */\r
+ PageControlPref->ActivePageIndex = 1;\r
+ PageControlPref->ActivePageIndex = 0;\r
+\r
+ /* Ok, job done successfully. Let's keep a reference to the dialog box*/\r
+ /* FIXME: TODO */\r
+\r
+ /* we want this ref to be destroyed if the object is destroyed */\r
+ /* FIXME: TODO */\r
+ \r
+ Show();\r
+}\r
+#undef ADD_PANEL\r
+//---------------------------------------------------------------------------\r
+void __fastcall TPreferencesDlg::ButtonOkClick( TObject *Sender )\r
+{\r
+ ButtonApplyClick( Sender );\r
+ Hide();\r
+}\r
+//---------------------------------------------------------------------------\r
+void __fastcall TPreferencesDlg::ButtonApplyClick( TObject *Sender )\r
+{\r
+ TScrollBox *ScrollBox;\r
+ TGroupBoxPref *GroupBox;\r
+ int i, j;\r
+\r
+ for( i = 0; i < PageControlPref->PageCount; i++ )\r
+ {\r
+ /* get scrollbox from the tabsheet */\r
+ ScrollBox = (TScrollBox *)PageControlPref->Pages[i]->Controls[0];\r
+\r
+ for( j = 0; j < ScrollBox->ControlCount ; j++ )\r
+ {\r
+ /* skip the panels */\r
+ if( ScrollBox->Controls[j]->InheritsFrom( __classid( TGroupBoxPref ) ) )\r
+ {\r
+ GroupBox = (TGroupBoxPref *)ScrollBox->Controls[j];\r
+ SaveValue( GroupBox->p_config );\r
+ }\r
+ }\r
+ }\r
+}\r
+//---------------------------------------------------------------------------\r
+void __fastcall TPreferencesDlg::ButtonSaveClick( TObject *Sender )\r
+{\r
+ ButtonApplyClick( Sender );\r
+ config_SaveConfigFile( NULL );\r
+}\r
+//---------------------------------------------------------------------------\r
+void __fastcall TPreferencesDlg::ButtonCancelClick( TObject *Sender )\r
+{\r
+ Hide();\r
+}\r
+//---------------------------------------------------------------------------\r
+void __fastcall TPreferencesDlg::SaveValue( module_config_t *p_config )\r
+{\r
+ switch( p_config->i_type )\r
+ {\r
+ case MODULE_CONFIG_ITEM_STRING:\r
+ case MODULE_CONFIG_ITEM_FILE:\r
+ case MODULE_CONFIG_ITEM_PLUGIN:\r
+ config_PutPszVariable( p_config->psz_name, p_config->psz_value );\r
+ break;\r
+ case MODULE_CONFIG_ITEM_INTEGER:\r
+ case MODULE_CONFIG_ITEM_BOOL:\r
+ config_PutIntVariable( p_config->psz_name, p_config->i_value );\r
+ break;\r
+ }\r
+}\r
+//---------------------------------------------------------------------------\r
+\r
--- /dev/null
+object PreferencesDlg: TPreferencesDlg\r
+ Left = 309\r
+ Top = 124\r
+ Width = 522\r
+ Height = 582\r
+ Caption = 'Preferences'\r
+ Color = clBtnFace\r
+ Font.Charset = DEFAULT_CHARSET\r
+ Font.Color = clWindowText\r
+ Font.Height = -11\r
+ Font.Name = 'MS Sans Serif'\r
+ Font.Style = []\r
+ Icon.Data = {\r
+ 0000010001003030000001001800A81C00001600000028000000300000006000\r
+ 00000100180000000000001B0000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000069375900000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000120E0A4011253E0F18000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000F0B\r
+ 084143CA08070016430F08040800000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 00000000000000003127291203174647E8464AE808010840E54039E6390B0C06\r
+ 0E0A1C0000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0070CD0079DD0079DD0070CD0000000000000000000C1008261D6E4647E54547\r
+ E64748E105040039E6393AE53939E63936D33308030100000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 000000000070CD0079DD0079DE007DE40088F9008CFF008CFF0088F9007CE302\r
+ 6EC70B09124641DC4444DF4546E34446E54847E003040040E6403AEA3A3EE33E\r
+ 3CE33C39E639080F010801050000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 00000000000000000070CD0079DD0077D90070CB0078D8007BDC007BDC007BDC\r
+ 007BDC007BDC007BDD007EE32E232D0804084553F14250F34252ED4449DB4844\r
+ DC4645E208010540E5401C78150D18053CE63C3AE63A39EA393CD83C241A2006\r
+ 0402000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000070CD0079DD007ADF007BDE007BDC0072\r
+ CC005188004877004876004876004876034976054A760B4D7731434221175B42\r
+ 54EC4253EE4252F60B05104250F44252EB4546DA08010539E6392BAA2B080105\r
+ 3CE63C39E7393AE63A39E93939E839081208181C080000000000000000000000\r
+ 000000000000000000000000000000000000000070CD0079DD0079DD007CE300\r
+ 88F90089F90075D2005188004877005188008CFF008CFF008CFF008CFF008CFF\r
+ 1092FF2099FF31A0FF1408294840DB4550E1464EEA0C060B0B05084654F64653\r
+ F64453EF080E033AE63A2BAA2B03030339E33939DF3939E639080F083DDB3D24\r
+ 9C24434B3B000000000000000000000000000000000000000000000000000000\r
+ 0063B60085F3008BFE0088F9007FE90088F90080E8005CA0008CFF008CFF008C\r
+ FF008CFF008CFF008CFF008CFF048DFF1594FF259BFF35A2FF0C04103F38C754\r
+ 5AF7505BF10C08100801084352F64652F44253F30813053AE63A39E639030403\r
+ 1C521826A1250812010807032454131558150000000000000000000000000000\r
+ 000000000000000000000000000000000000000070CD007CE30079DD00000000\r
+ 7CE30089FA008CFF0089FA008CFF008CFF008CFF008CFF008CFF008CFF098FFF\r
+ 1996FF2A9DFF3AA4FF0804103A2AA34E58F74E58F40B0B120803054652F34548\r
+ E64451F305130532CA323AE23A03070308070307040008040139E63939E43931\r
+ B42F5E1347000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000061B10000000079DD008CFF008CFF008CFF008CFF008C\r
+ FF008CFF008CFF008CFF008CFF0E91FF1E98FF2E9FFF3FA6FF040408382BAF4D\r
+ 5AEF555AF70F12250501050F04160804074250F3121A123AE93A39E239080803\r
+ 0D2F08010401268C2539E7393DE63D3FE23E0804100000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 79DD008CFF008CFF008CFF008CFF008CFF008CFF008CFF008CFF028CFF1293FF\r
+ 239AFF33A1FF43A8FF0802083A2AA3565BF7555AF71714330501050104000801\r
+ 07424FF12828203AEA3A39E639030703182F1008340801040139E7393DE83D39\r
+ E939080400000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000070CD0088F9008CFF008CFF008CFF008C\r
+ FF008CFF008CFF008CFF078EFF1795FF279CFF38A3FF48AAFF0808005151F155\r
+ 5AF30804030804000504050800082E358E0E0C1F1D192439E53940E640080400\r
+ 2AA12739E63908020708010539E8393BE93B0804080000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000007CE3008CFF008CFF008CFF058EFD1D96F92398F8269AFA31A0FC42A8FF\r
+ 4FAEFF5CB3FF65B7FF0C08084F5AF14E57F50B04080804043639A54647E81C13\r
+ 49363AA70804080F120835953439E7393EE63E39DF3939EA39081105308A2B3F\r
+ E73F080601000000000000000000000000000000000000000000000000000000\r
+ 000000000000000000000000000000000000047BDB1D96F92398F82498F83BA0\r
+ F399C1E1B1C9DDBCD4E7CBE0F3D9EDFFDCEEFFDEEFFFCDE8FF080808575BF750\r
+ 58F624125A5057F34845DF4A41E0150E30C55734E3723EC56E33A23D27050105\r
+ 39E43939E63939E6393CE63C14420C3BE03B192A090000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000004\r
+ 04042D88D399C1E1B1C9DDB1C9DCB7CBDBCFD3D7D5D5D6E2E2E3F0F0F1FEFEFF\r
+ FEFEFFFEFEFFF9FCFF0C08085D61F15B61EF555AF64A4FE13937BB0E0A12DE74\r
+ 39E1733CDE713CDF753AE67541C36B342C231F17141B3AE63A39E7393DE83D39\r
+ E93939DE39000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000001818186893B8C3CCD2D5D5D6D5D5D6D5D5\r
+ D6D6D6D6D6D6D6E3E3E3F1F1F1FFFFFFFFFFFFFFFFFFFFFFFF140C145C5EF668\r
+ 63F75555EA10061CC3673FDF713A0C1104080403080105080007070407D56F36\r
+ DE743EDE72401C200C29452939E63939E73939EA390000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000343434A2B4C2D5D5D6D6D6D6D6D6D6D6D6D6D5D5D6E2E2E3F0F0F1FEFEFF\r
+ FEFEFFFEFEFFFEFEFF20161C5C5EF6373EAE0E0413E2713DE1763CCD6A3C2A0D\r
+ 08A44B2CDE743EBD612F080401030403E1713CDE7239DE713AE1723C22201139\r
+ C13341E641000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000001B1B1B99AEBED5D5D6D5D5D6D5D5\r
+ D6CFD3D7B8CBDBBFD5E7CEE2F3DCEFFFDFF0FFE2F1FFE9F4FF10100C3639A46E\r
+ 4540DE7239DE713DE1713C07000784261CDE7639E3743E0812001F0407D86E36\r
+ E3753EE57540E57541DE763CDE733DD26637493C387E2F7B0000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 00001B1B1B99AEBFCED3D7B7CBDBB1C9DD99C1E140A2F339A2FA49AAFC59B2FF\r
+ 66B8FF74BEFF92CBFFD9ECFF0F0402C66531DE7139E2733D854B1E0A01084D11\r
+ 0DE3733EE1723CDF713ADF753AE1763C1D0A08290708E57140E1763CDE733DC7\r
+ 6B34080408000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000001818187FA5C399C1E13BA0F32498\r
+ F81D96F91091FD1C97FF2C9EFF3CA5FF4DACFF5DB3FF71BBFF8DC8FF9FD0FF08\r
+ 0400080406B95C2EDE7239070B070803014D1615DE723CDE7540E5714030090D\r
+ 0504003A120FE67541DE75390808044A0C290000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 00000707071778C81C92F3058EFD008CFF008CFF1092FF2099FF31A0FF41A7FF\r
+ 51AEFF62B5FF72BCFF7BBFFF7BBBF96E9FCD0808080806041D0508E571403E22\r
+ 0C200708080405070407070007080303B05F31DE723967301908010500000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 000000000000000000000000000000000000000000000000007CE3008CFF008C\r
+ FF048DFF1594FF259BFF35A2FF46A9FF56B0FF66B7FF77BEFF7BBFFF6DAAE300\r
+ 0000000000000000000000080401200C088D4024E17141E57140DF713ADE713E\r
+ DE76390801070000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 00000000000000000079DD008CFF008CFF098FFF1996FF2A9DFF3AA4FF4AABFF\r
+ 5BB2FF6BB9FF7BBFFF7BBFFF6AA5DD0000000000000000000000000000001D1A\r
+ 0C1A0F08110903441912E57140623B1E08020300000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000079DD008CFF008C\r
+ FF0E91FF1E98FF2E9FFF3FA6FF4FADFF5FB4FF70BBFF7BBFFF78BAF96299CD00\r
+ 00000000000000000000000000000000000000003914100000005A2411000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 00000000000000000070CD0088F9078EFD2C9CF940A3F850ACFA60B4FC70BCFF\r
+ 7DC2FF87C6FF7EC0FF6DAAE30000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000707071A85DD40A2\r
+ F3A0C3E1B7CBDDC6D8E7D4E5F3E2F1FFE5F2FFD9ECFF9FD0FF7AACDD05050500\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 00000000000000001818187FA5C3B8CBDBD0D4D7D5D5D6E2E2E3F0F0F1FEFEFF\r
+ FEFEFFFAFCFFE2EDF99FB7CD1C1C1C0000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000001B1B1B99AEBFD4D5\r
+ D6D6D6D6D6D6D6E3E3E3F1F1F1FFFFFFFFFFFFFEFEFFD1DAE33E3E3E00000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 00000000000000001D1D1D7B9BB4CACED1D6D6D6D5D5D6E2E2E3F0F0F1FEFEFF\r
+ FEFEFFFEFEFFC9D2DD2121210000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 000000000000000000000000000000000000000000000000000000343434A5B5\r
+ C2CFD3D7BFCEDBC9D9E7D7E6F3E6F3FFECF5FFF0F4F9AEBDCD23232300000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 000000000000000000000018181887A8C3A6C6E169B3F367B6FA77BEFC88C6FF\r
+ 9FD0FFB4CBE33939390000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 000000000000000000000000000000000000000000000000000000040404338C\r
+ D749A8F947A9FD54AFFF64B6FF74BDFF7EC0FF76ABDD05050500000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 00000000000000000000000000001F7DCD369FF948AAFF58B1FF69B8FF79BFFF\r
+ 78BAF96299CD0000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 003592E34DACFF5DB3FF6DBAFF7BBFFF6DAAE300000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 00000000000000000000000000000000003890DD51AEFF62B5FF72BCFF7BBFFF\r
+ 6AA5DD0000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 003B8FD84C9CE3589FDE69A9E375B6F46299CD00000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 00000000000000000000000000000000003376B00000000000000000005788B6\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 00000000006CC61A83DD247FCC00000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000006DC71A83DD2686D71F6EB1\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 0000000000000000000000000000000000000000000000000000000000000000\r
+ 000000000000000000000000000000000000000000000000000000000000FFFF\r
+ FFFFFFFF0000FFFFFFFFFFFF0000FFFFFE1FDFFF0000FFFFE0078FFF0000FFFE\r
+ 000007FF0000FFF0000001FF0000FF80000000FF0000FF000000003F0000FF00\r
+ 0000000F0000FE00000000070000F800000000070000F8000000000F0000FC00\r
+ 000000070000FE00000000070000FF80000000070000FFC0000000070000FFE0\r
+ 000000070000FFE0000000070000FFE0000000070000FFE0000000070000FFF0\r
+ 000000070000FFF0000000030000FFF0000000070000FFF00000000F0000FFF0\r
+ 0000003F0000FFF8000E00FF0000FFF8000F01FF0000FFF8000FD7FF0000FFF8\r
+ 001FFFFF0000FFFC001FFFFF0000FFFC001FFFFF0000FFFC003FFFFF0000FFFC\r
+ 003FFFFF0000FFFE003FFFFF0000FFFE007FFFFF0000FFFE007FFFFF0000FFFE\r
+ 007FFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF\r
+ 01FFFFFF0000FFFF01FFFFFF0000FFFF81FFFFFF0000FFFFC3FFFFFF0000FFFF\r
+ FFFFFFFF0000FFFFFFFFFFFF0000FFFFFFFFFFFF0000FFFFFFFFFFFF0000}\r
+ OldCreateOrder = False\r
+ OnClose = FormClose\r
+ OnHide = FormHide\r
+ OnShow = FormShow\r
+ PixelsPerInch = 96\r
+ TextHeight = 13\r
+ object PageControlPref: TPageControl\r
+ Left = 8\r
+ Top = 8\r
+ Width = 497\r
+ Height = 497\r
+ TabOrder = 1\r
+ end\r
+ object ButtonApply: TButton\r
+ Left = 146\r
+ Top = 520\r
+ Width = 105\r
+ Height = 25\r
+ Caption = 'Apply'\r
+ TabOrder = 0\r
+ OnClick = ButtonApplyClick\r
+ end\r
+ object ButtonSave: TButton\r
+ Left = 265\r
+ Top = 520\r
+ Width = 105\r
+ Height = 25\r
+ Caption = 'Save'\r
+ TabOrder = 2\r
+ OnClick = ButtonSaveClick\r
+ end\r
+ object ButtonOK: TButton\r
+ Left = 26\r
+ Top = 520\r
+ Width = 105\r
+ Height = 25\r
+ Caption = 'OK'\r
+ TabOrder = 3\r
+ OnClick = ButtonOkClick\r
+ end\r
+ object ButtonCancel: TButton\r
+ Left = 386\r
+ Top = 520\r
+ Width = 105\r
+ Height = 25\r
+ Caption = 'Cancel'\r
+ TabOrder = 4\r
+ OnClick = ButtonCancelClick\r
+ end\r
+end\r
--- /dev/null
+/*****************************************************************************\r
+ * preferences.h: the "Preferences" dialog box\r
+ *****************************************************************************\r
+ * Copyright (C) 2002 VideoLAN\r
+ *\r
+ * Authors: Olivier Teuliere <ipkiss@via.ecp.fr>\r
+ *\r
+ * This program is free software; you can redistribute it and/or modify\r
+ * it under the terms of the GNU General Public License as published by\r
+ * the Free Software Foundation; either version 2 of the License, or\r
+ * (at your option) any later version.\r
+ *\r
+ * This program is distributed in the hope that it will be useful,\r
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r
+ * GNU General Public License for more details.\r
+ *\r
+ * You should have received a copy of the GNU General Public License\r
+ * along with this program; if not, write to the Free Software\r
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA.\r
+ *****************************************************************************/\r
+\r
+#ifndef preferencesH\r
+#define preferencesH\r
+//---------------------------------------------------------------------------\r
+#include <Classes.hpp>\r
+#include <Controls.hpp>\r
+#include <StdCtrls.hpp>\r
+#include <Forms.hpp>\r
+#include <Buttons.hpp>\r
+#include <ComCtrls.hpp>\r
+#include <ExtCtrls.hpp>\r
+//---------------------------------------------------------------------------\r
+class TGroupBoxPref : public TGroupBox\r
+{\r
+public:\r
+ __fastcall TGroupBoxPref( TComponent* Owner, module_config_t *p_config_arg );\r
+ module_config_t *p_config;\r
+ TListView * __fastcall CreateListView( TWinControl *Parent,\r
+ int Left, int Width, int Top, int Height, TViewStyle ViewStyle );\r
+ TButton * __fastcall CreateButton( TWinControl *Parent,\r
+ int Left, int Width, int Top, int Height, AnsiString Caption );\r
+ TCheckBox * __fastcall CreateCheckBox( TWinControl *Parent,\r
+ int Left, int Width, int Top, int Height, AnsiString Caption );\r
+ TLabel * __fastcall CreateLabel( TWinControl *Parent,\r
+ int Left, int Width, int Top, int Height, AnsiString Caption,\r
+ bool WordWrap );\r
+ TEdit * __fastcall CreateEdit( TWinControl *Parent,\r
+ int Left, int Width, int Top, int Height, AnsiString Text );\r
+ TUpDown * __fastcall CreateUpDown( TWinControl *Parent,\r
+ int Min, int Max, int Position, bool Thousands );\r
+};\r
+//---------------------------------------------------------------------------\r
+class TGroupBoxPlugin : public TGroupBoxPref\r
+{\r
+public:\r
+ __fastcall TGroupBoxPlugin( TComponent* Owner, module_config_t *p_config );\r
+ TListView *ListView;\r
+ TButton *ButtonConfig;\r
+ TButton *ButtonSelect;\r
+ TLabel *LabelDesc;\r
+ TLabel *LabelHint;\r
+ TLabel *LabelSelected;\r
+ TEdit *Edit;\r
+ module_t *ModuleSelected;\r
+ void __fastcall ListViewSelectItem( TObject *Sender, TListItem *Item,\r
+ bool Selected );\r
+ void __fastcall ButtonSelectClick( TObject *Sender );\r
+ void __fastcall ButtonConfigClick( TObject *Sender );\r
+ void __fastcall EditChange( TObject *Sender );\r
+};\r
+//---------------------------------------------------------------------------\r
+class TGroupBoxString : public TGroupBoxPref\r
+{\r
+public:\r
+ __fastcall TGroupBoxString( TComponent* Owner, module_config_t *p_config );\r
+ TLabel *LabelDesc;\r
+ TEdit *Edit;\r
+ void __fastcall EditChange( TObject *Sender );\r
+};\r
+//---------------------------------------------------------------------------\r
+class TGroupBoxInteger : public TGroupBoxPref\r
+{\r
+public:\r
+ __fastcall TGroupBoxInteger( TComponent* Owner, module_config_t *p_config );\r
+ TLabel *LabelDesc;\r
+ TEdit *Edit;\r
+ TUpDown *UpDown;\r
+ void __fastcall EditChange( TObject *Sender );\r
+};\r
+//---------------------------------------------------------------------------\r
+class TGroupBoxBool : public TGroupBoxPref\r
+{\r
+public:\r
+ __fastcall TGroupBoxBool( TComponent* Owner, module_config_t *p_config );\r
+ TLabel *LabelDesc;\r
+ TCheckBox *CheckBox;\r
+ void __fastcall CheckBoxClick( TObject *Sender );\r
+};\r
+//---------------------------------------------------------------------------\r
+class TPreferencesDlg : public TForm\r
+{\r
+__published: // IDE-managed Components\r
+ TPageControl *PageControlPref;\r
+ TButton *ButtonApply;\r
+ TButton *ButtonSave;\r
+ TButton *ButtonOK;\r
+ TButton *ButtonCancel;\r
+ void __fastcall FormShow( TObject *Sender );\r
+ void __fastcall FormHide( TObject *Sender );\r
+ void __fastcall ButtonOkClick( TObject *Sender );\r
+ void __fastcall ButtonApplyClick( TObject *Sender );\r
+ void __fastcall ButtonSaveClick( TObject *Sender );\r
+ void __fastcall ButtonCancelClick( TObject *Sender );\r
+ void __fastcall FormClose( TObject *Sender, TCloseAction &Action );\r
+private: // User declarations\r
+public: // User declarations\r
+ __fastcall TPreferencesDlg( TComponent* Owner );\r
+ void __fastcall CreateConfigDialog( char *psz_module_name );\r
+ void __fastcall SaveValue( module_config_t *p_config );\r
+};\r
+//---------------------------------------------------------------------------\r
+#endif\r
* win32.cpp : Win32 interface plugin for vlc
*****************************************************************************
* Copyright (C) 2002 VideoLAN
- * $Id: win32.cpp,v 1.1 2002/01/21 00:52:07 sam Exp $
*
- * Authors:
+ * Authors: Olivier Teulière <ipkiss@via.ecp.fr>
*
* 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
#include <stdlib.h> /* malloc(), free() */
#include <string.h>
-extern "C"
-{
#include <videolan/vlc.h>
+#include "win32.h" /* Borland specific */
+
/*****************************************************************************
* Capabilities defined in the other files.
*****************************************************************************/
-void _M( intf_getfunctions )( function_list_t * p_function_list );
+void _M( intf_getfunctions ) ( function_list_t * p_function_list );
/*****************************************************************************
* Build configuration tree.
MODULE_CONFIG_STOP
MODULE_INIT_START
- SET_DESCRIPTION( "Win32 interface" )
+ SET_DESCRIPTION( "Win32 interface module" )
ADD_CAPABILITY( INTF, 100 )
ADD_SHORTCUT( "win32" )
MODULE_INIT_STOP
MODULE_DEACTIVATE_START
MODULE_DEACTIVATE_STOP
-} /* extern "C" */
--- /dev/null
+/*****************************************************************************\r
+ * win32.h : Win32 interface plugin for vlc
+ *****************************************************************************
+ * Copyright (C) 2002 VideoLAN
+ *
+ * Authors: Olivier Teulière <ipkiss@via.ecp.fr>
+ *
+ * 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 of the License, 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 this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA.
+ *****************************************************************************/
+\r
+/*****************************************************************************\r
+ * Exported interface functions.
+ *****************************************************************************/
+extern "C" __declspec(dllexport)\r
+ int __VLC_SYMBOL( InitModule ) ( module_t *p_module );\r
+extern "C" __declspec(dllexport)\r
+ int __VLC_SYMBOL( ActivateModule ) ( module_t *p_module );\r
+extern "C" __declspec(dllexport)\r
+ int __VLC_SYMBOL( DeactivateModule ) ( module_t *p_module );\r
--- /dev/null
+/*****************************************************************************\r
+ * win32_common.h: private win32 interface description\r
+ *****************************************************************************\r
+ * Copyright (C) 2002 VideoLAN\r
+ *\r
+ * Authors: Olivier Teuliere <ipkiss@via.ecp.fr>\r
+ *\r
+ * This program is free software; you can redistribute it and/or modify\r
+ * it under the terms of the GNU General Public License as published by\r
+ * the Free Software Foundation; either version 2 of the License, or\r
+ * (at your option) any later version.\r
+ * \r
+ * This program is distributed in the hope that it will be useful,\r
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r
+ * GNU General Public License for more details.\r
+ *\r
+ * You should have received a copy of the GNU General Public License\r
+ * along with this program; if not, write to the Free Software\r
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA.\r
+ *****************************************************************************/\r
+\r
+#include "about.h"\r
+#include "disc.h"\r
+#include "mainframe.h"\r
+#include "menu.h"\r
+#include "messages.h"\r
+#include "network.h"\r
+#include "playlist.h"\r
+#include "preferences.h"\r
+\r
+typedef struct es_descriptor_s es_descriptor_t;\r
+\r
+/*****************************************************************************\r
+ * The TrackBar is graduated from 0 to SLIDER_MAX_VALUE.\r
+ * SLIDER_MAX_VALUE is set to the higher acceptable value (2^31 - 1), in order\r
+ * to obtain the best precision in date calculation\r
+ *****************************************************************************/\r
+#define SLIDER_MAX_VALUE 2147483647\r
+\r
+/*****************************************************************************\r
+ * intf_sys_t: description and status of Win32 interface\r
+ *****************************************************************************/\r
+typedef struct intf_sys_s\r
+{\r
+ /* special actions */\r
+ boolean_t b_playing;\r
+ boolean_t b_popup_changed; /* display popup menu ? */\r
+ boolean_t b_slider_free; /* slider status */\r
+\r
+ /* menus handlers */\r
+ boolean_t b_program_update; /* do we need to update programs \r
+ menu */\r
+ boolean_t b_title_update; /* do we need to update title menus */\r
+ boolean_t b_chapter_update; /* do we need to update chapter\r
+ menus */\r
+ boolean_t b_audio_update; /* do we need to update audio menus */\r
+ boolean_t b_spu_update; /* do we need to update spu menus */\r
+\r
+ /* windows and widgets */\r
+ TMainFrameDlg * p_window; /* main window */\r
+ TPlaylistDlg * p_playlist; /* playlist */\r
+ TPopupMenu * p_popup; /* popup menu */\r
+ TAboutDlg * p_about; /* about window */\r
+ TDiscDlg * p_disc; /* disc selection window */\r
+ TNetworkDlg * p_network; /* network stream window */\r
+ TPreferencesDlg * p_preferences; /* preferences window */\r
+\r
+ /* The slider */\r
+ off_t OldValue; /* previous value */\r
+\r
+ /* The messages window */\r
+ TMessagesDlg * p_messages; /* messages window */\r
+ intf_subscription_t*p_sub; /* interface subscription */\r
+\r
+ /* Playlist management */\r
+ int i_playing; /* playlist selected item */\r
+\r
+ /* The window labels for DVD mode */\r
+ TLabel * p_label_title;\r
+ TLabel * p_label_chapter;\r
+ int i_part; /* current chapter */\r
+\r
+ /* Language information */\r
+ es_descriptor_t * p_audio_es_old;\r
+ es_descriptor_t * p_spu_es_old;\r
+\r
+} intf_sys_t;\r
+\r