diff options
author | louis <louis.braun@gmx.de> | 2015-03-12 17:28:35 +0100 |
---|---|---|
committer | louis <louis.braun@gmx.de> | 2015-03-12 17:28:35 +0100 |
commit | 44680b6ce80221e91cb14dca9ca7fad7015f1297 (patch) | |
tree | 8af805db50568ba41ebb461309d5724320295441 /skindesclient-0.0.1 | |
parent | 45cb6c1663d66ebc22bed8dbc8cdbacdc82ad4a8 (diff) | |
download | vdr-plugin-skindesigner-0.3.0.tar.gz vdr-plugin-skindesigner-0.3.0.tar.bz2 |
version 0.3.00.3.0
Diffstat (limited to 'skindesclient-0.0.1')
-rw-r--r-- | skindesclient-0.0.1/COPYING | 340 | ||||
-rw-r--r-- | skindesclient-0.0.1/Makefile | 123 | ||||
-rw-r--r-- | skindesclient-0.0.1/README | 16 | ||||
-rw-r--r-- | skindesclient-0.0.1/libskindesigner/services.h | 52 | ||||
-rw-r--r-- | skindesclient-0.0.1/libskindesigner/skindesignerosdbase.c | 172 | ||||
-rw-r--r-- | skindesclient-0.0.1/libskindesigner/skindesignerosdbase.h | 62 | ||||
-rw-r--r-- | skindesclient-0.0.1/osdmenu.c | 148 | ||||
-rw-r--r-- | skindesclient-0.0.1/skindesclient.c | 147 | ||||
-rw-r--r-- | skindesclient-0.0.1/templates-metrixhd/plug-skindesclient-menudetail.xml | 80 | ||||
-rw-r--r-- | skindesclient-0.0.1/templates-metrixhd/plug-skindesclient-menulistmain.xml | 67 | ||||
-rw-r--r-- | skindesclient-0.0.1/templates-metrixhd/plug-skindesclient-menulistsub.xml | 67 |
11 files changed, 0 insertions, 1274 deletions
diff --git a/skindesclient-0.0.1/COPYING b/skindesclient-0.0.1/COPYING deleted file mode 100644 index f90922e..0000000 --- a/skindesclient-0.0.1/COPYING +++ /dev/null @@ -1,340 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc. - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Lesser General Public License instead.) You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - <one line to give the program's name and a brief idea of what it does.> - Copyright (C) <year> <name of author> - - 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - - Gnomovision version 69, Copyright (C) year name of author - Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, the commands you use may -be called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the program - `Gnomovision' (which makes passes at compilers) written by James Hacker. - - <signature of Ty Coon>, 1 April 1989 - Ty Coon, President of Vice - -This General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may -consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Lesser General -Public License instead of this License. diff --git a/skindesclient-0.0.1/Makefile b/skindesclient-0.0.1/Makefile deleted file mode 100644 index 7e19d59..0000000 --- a/skindesclient-0.0.1/Makefile +++ /dev/null @@ -1,123 +0,0 @@ -# -# Makefile for a Video Disk Recorder plugin -# -# $Id$ - -# The official name of this plugin. -# This name will be used in the '-P...' option of VDR to load the plugin. -# By default the main source file also carries this name. - -PLUGIN = skindesclient - -### The version number of this plugin (taken from the main source file): - -VERSION = $(shell grep 'static const char \*VERSION *=' $(PLUGIN).c | awk '{ print $$6 }' | sed -e 's/[";]//g') - -### The directory environment: - -# Use package data if installed...otherwise assume we're under the VDR source directory: -PKGCFG = $(if $(VDRDIR),$(shell pkg-config --variable=$(1) $(VDRDIR)/vdr.pc),$(shell pkg-config --variable=$(1) vdr || pkg-config --variable=$(1) ../../../vdr.pc)) -LIBDIR = $(call PKGCFG,libdir) -LOCDIR = $(call PKGCFG,locdir) -PLGCFG = $(call PKGCFG,plgcfg) -# -TMPDIR ?= /tmp - -### The compiler options: - -export CFLAGS = $(call PKGCFG,cflags) -export CXXFLAGS = $(call PKGCFG,cxxflags) - -### The version number of VDR's plugin API: - -APIVERSION = $(call PKGCFG,apiversion) - -### Allow user defined options to overwrite defaults: - --include $(PLGCFG) - -### The name of the distribution archive: - -ARCHIVE = $(PLUGIN)-$(VERSION) -PACKAGE = vdr-$(ARCHIVE) - -### The name of the shared object file: - -SOFILE = libvdr-$(PLUGIN).so - -### Includes and Defines (add further entries here): - -INCLUDES += - -DEFINES += -DPLUGIN_NAME_I18N='"$(PLUGIN)"' - -### The object files (add further files here): - -OBJS = $(PLUGIN).o \ - libskindesigner/skindesignerosdbase.o - -### The main target: - -all: $(SOFILE) i18n - -### Implicit rules: - -%.o: %.c - $(CXX) $(CXXFLAGS) -c $(DEFINES) $(INCLUDES) -o $@ $< - -### Dependencies: - -MAKEDEP = $(CXX) -MM -MG -DEPFILE = .dependencies -$(DEPFILE): Makefile - @$(MAKEDEP) $(CXXFLAGS) $(DEFINES) $(INCLUDES) $(OBJS:%.o=%.c) > $@ - --include $(DEPFILE) - -### Internationalization (I18N): - -PODIR = po -I18Npo = $(wildcard $(PODIR)/*.po) -I18Nmo = $(addsuffix .mo, $(foreach file, $(I18Npo), $(basename $(file)))) -I18Nmsgs = $(addprefix $(DESTDIR)$(LOCDIR)/, $(addsuffix /LC_MESSAGES/vdr-$(PLUGIN).mo, $(notdir $(foreach file, $(I18Npo), $(basename $(file)))))) -I18Npot = $(PODIR)/$(PLUGIN).pot - -%.mo: %.po - msgfmt -c -o $@ $< - -$(I18Npot): $(wildcard *.c) - xgettext -C -cTRANSLATORS --no-wrap --no-location -k -ktr -ktrNOOP --package-name=vdr-$(PLUGIN) --package-version=$(VERSION) --msgid-bugs-address='<see README>' -o $@ `ls $^` - -%.po: $(I18Npot) - msgmerge -U --no-wrap --no-location --backup=none -q -N $@ $< - @touch $@ - -$(I18Nmsgs): $(DESTDIR)$(LOCDIR)/%/LC_MESSAGES/vdr-$(PLUGIN).mo: $(PODIR)/%.mo - install -D -m644 $< $@ - -.PHONY: i18n -i18n: $(I18Nmo) $(I18Npot) - -install-i18n: $(I18Nmsgs) - -### Targets: - -$(SOFILE): $(OBJS) - $(CXX) $(CXXFLAGS) $(LDFLAGS) -shared $(OBJS) -o $@ - -install-lib: $(SOFILE) - install -D $^ $(DESTDIR)$(LIBDIR)/$^.$(APIVERSION) - -install: install-lib install-i18n - -dist: $(I18Npo) clean - @-rm -rf $(TMPDIR)/$(ARCHIVE) - @mkdir $(TMPDIR)/$(ARCHIVE) - @cp -a * $(TMPDIR)/$(ARCHIVE) - @tar czf $(PACKAGE).tgz -C $(TMPDIR) $(ARCHIVE) - @-rm -rf $(TMPDIR)/$(ARCHIVE) - @echo Distribution package created as $(PACKAGE).tgz - -clean: - @-rm -f $(PODIR)/*.mo $(PODIR)/*.pot - @-rm -f $(OBJS) $(DEPFILE) *.so *.tgz core* *~ diff --git a/skindesclient-0.0.1/README b/skindesclient-0.0.1/README deleted file mode 100644 index 3b270ac..0000000 --- a/skindesclient-0.0.1/README +++ /dev/null @@ -1,16 +0,0 @@ -This is a "plugin" for the Video Disk Recorder (VDR). - -Written by: Louis Braun <louis.braun@gmx.de> - -Project's homepage: --- - -Latest version available at: --- - -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. -See the file COPYING for more information. - -Description: This is just an example how to use the skindesigner -template engine with a VDR plugin diff --git a/skindesclient-0.0.1/libskindesigner/services.h b/skindesclient-0.0.1/libskindesigner/services.h deleted file mode 100644 index 0a016fa..0000000 --- a/skindesclient-0.0.1/libskindesigner/services.h +++ /dev/null @@ -1,52 +0,0 @@ -#ifndef __SKINDESIGNERSERVICES_H -#define __SKINDESIGNERSERVICES_H - -using namespace std; - -#include <string> -#include <vector> -#include <map> - -enum eMenuType { - mtList, - mtText -}; - -class cSDDisplayMenu : public cSkinDisplayMenu { -public: - virtual void SetTitle(const char *Title); - virtual void SetPluginMenu(string name, int menu, int type, bool init); - virtual bool SetItemPlugin(map<string,string> *stringTokens, map<string,int> *intTokens, map<string,vector<map<string,string> > > *loopTokens, int Index, bool Current, bool Selectable); - virtual bool SetPluginText(map<string,string> *stringTokens, map<string,int> *intTokens, map<string,vector<map<string,string> > > *loopTokens); -}; - -/********************************************************************* -* Data Structures for Service Calls -*********************************************************************/ - -// Data structure for service "RegisterPlugin" -class RegisterPlugin { -public: - RegisterPlugin(void) { - name = ""; - }; - void SetMenu(int key, string templateName) { - menus.insert(pair<int, string>(key, templateName)); - } -// in - string name; //name of plugin - map< int, string > menus; //menus as key -> templatename hashmap -//out -}; - -// Data structure for service "GetDisplayMenu" -class GetDisplayMenu { -public: - GetDisplayMenu(void) { - displayMenu = NULL; - }; -// in -//out - cSDDisplayMenu *displayMenu; -}; -#endif //__SKINDESIGNERSERVICES_H
\ No newline at end of file diff --git a/skindesclient-0.0.1/libskindesigner/skindesignerosdbase.c b/skindesclient-0.0.1/libskindesigner/skindesignerosdbase.c deleted file mode 100644 index 821efdc..0000000 --- a/skindesclient-0.0.1/libskindesigner/skindesignerosdbase.c +++ /dev/null @@ -1,172 +0,0 @@ -#include "skindesignerosdbase.h" - -/********************************************************************** -* cSkindesignerOsdItem -**********************************************************************/ -cSkindesignerOsdItem::cSkindesignerOsdItem(eOSState State) : cOsdItem(State) { - sdDisplayMenu = NULL; -} - -cSkindesignerOsdItem::cSkindesignerOsdItem(const char *Text, eOSState State, bool Selectable) : cOsdItem(Text, State, Selectable) { - sdDisplayMenu = NULL; -} - -cSkindesignerOsdItem::~cSkindesignerOsdItem() { - -} - -void cSkindesignerOsdItem::SetMenuItem(cSkinDisplayMenu *DisplayMenu, int Index, bool Current, bool Selectable) { - if (sdDisplayMenu) { - if (!sdDisplayMenu->SetItemPlugin(&stringTokens, &intTokens, &loopTokens, Index, Current, Selectable)) { - DisplayMenu->SetItem(Text(), Index, Current, Selectable); - } - } else { - DisplayMenu->SetItem(Text(), Index, Current, Selectable); - } -} - -void cSkindesignerOsdItem::AddStringToken(string key, string value) { - stringTokens.insert(pair<string,string>(key, value)); -} - -void cSkindesignerOsdItem::AddIntToken(string key, int value) { - intTokens.insert(pair<string,int>(key, value)); -} - -void cSkindesignerOsdItem::AddLoopToken(string loopName, map<string, string> &tokens) { - map<string, vector<map<string, string> > >::iterator hitLoop = loopTokens.find(loopName); - if (hitLoop == loopTokens.end()) { - vector<map<string, string> > tokenVector; - tokenVector.push_back(tokens); - loopTokens.insert(pair<string, vector<map<string, string> > >(loopName, tokenVector)); - } else { - vector<map<string, string> > *tokenVector = &hitLoop->second; - tokenVector->push_back(tokens); - } -} - - -/********************************************************************** -* cSkindesignerOsdMenu -**********************************************************************/ -cSkindesignerOsdMenu::cSkindesignerOsdMenu(const char *Title, int c0, int c1, int c2, int c3, int c4) : cOsdMenu(Title, c0, c1, c2, c3, c4) { - init = true; - displayText = false; - sdDisplayMenu = NULL; - pluginName = ""; - SetMenuCategory(mcPlugin); - SetSkinDesignerDisplayMenu(); -} - -cSkindesignerOsdMenu::~cSkindesignerOsdMenu() { - -} - -void cSkindesignerOsdMenu::SetPluginMenu(int menu, eMenuType type) { - if (type == mtList) - displayText = false; - else if (type == mtText) - displayText = true; - - if (sdDisplayMenu) { - sdDisplayMenu->SetPluginMenu(pluginName, menu, type, init); - } - init = false; -} - -bool cSkindesignerOsdMenu::SetSkinDesignerDisplayMenu(void) { - static cPlugin *pSkinDesigner = cPluginManager::GetPlugin("skindesigner"); - if (!pSkinDesigner) { - return false; - } - GetDisplayMenu call; - bool ok = pSkinDesigner->Service("GetDisplayMenu", &call); - if (ok && call.displayMenu) { - sdDisplayMenu = call.displayMenu; - return true; - } - return false; -} - -void cSkindesignerOsdMenu::ClearTokens(void) { - text = ""; - stringTokens.clear(); - intTokens.clear(); - loopTokens.clear(); -} - -void cSkindesignerOsdMenu::AddStringToken(string key, string value) { - stringTokens.insert(pair<string,string>(key, value)); -} - -void cSkindesignerOsdMenu::AddIntToken(string key, int value) { - intTokens.insert(pair<string,int>(key, value)); -} - -void cSkindesignerOsdMenu::AddLoopToken(string loopName, map<string, string> &tokens) { - map<string, vector<map<string, string> > >::iterator hitLoop = loopTokens.find(loopName); - if (hitLoop == loopTokens.end()) { - vector<map<string, string> > tokenVector; - tokenVector.push_back(tokens); - loopTokens.insert(pair<string, vector<map<string, string> > >(loopName, tokenVector)); - } else { - vector<map<string, string> > *tokenVector = &hitLoop->second; - tokenVector->push_back(tokens); - } -} - -void cSkindesignerOsdMenu::TextKeyLeft(void) { - if (!displayText) - return; - DisplayMenu()->Scroll(true, true); -} - -void cSkindesignerOsdMenu::TextKeyRight(void) { - if (!displayText) - return; - DisplayMenu()->Scroll(false, true); -} - -void cSkindesignerOsdMenu::TextKeyUp(void) { - if (!displayText) - return; - DisplayMenu()->Scroll(true, false); -} - -void cSkindesignerOsdMenu::TextKeyDown(void) { - if (!displayText) - return; - DisplayMenu()->Scroll(false, false); -} - -void cSkindesignerOsdMenu::Display(void) { - if (displayText) { - if (sdDisplayMenu) { - sdDisplayMenu->SetTitle(Title()); - if (sdDisplayMenu->SetPluginText(&stringTokens, &intTokens, &loopTokens)) { - sdDisplayMenu->Flush(); - } else { - DisplayMenu()->Clear(); - DisplayMenu()->SetTitle(Title()); - DisplayMenu()->SetText(text.c_str(), false); - DisplayMenu()->Flush(); - } - } else { - DisplayMenu()->Clear(); - DisplayMenu()->SetTitle(Title()); - DisplayMenu()->SetText(text.c_str(), false); - DisplayMenu()->Flush(); - } - return; - } - if (sdDisplayMenu) { - sdDisplayMenu->SetTitle(Title()); - for (cOsdItem *item = First(); item; item = Next(item)) { - cSkindesignerOsdItem *sdItem = dynamic_cast<cSkindesignerOsdItem*>(item); - if (sdItem) { - sdItem->SetDisplayMenu(sdDisplayMenu); - } - } - } - cOsdMenu::Display(); -} diff --git a/skindesclient-0.0.1/libskindesigner/skindesignerosdbase.h b/skindesclient-0.0.1/libskindesigner/skindesignerosdbase.h deleted file mode 100644 index 88068af..0000000 --- a/skindesclient-0.0.1/libskindesigner/skindesignerosdbase.h +++ /dev/null @@ -1,62 +0,0 @@ -#ifndef __SKINDESIGNEROSDBASE_H -#define __SKINDESIGNEROSDBASE_H - -#include <string> -#include <vector> -#include <map> -#include <set> -#include <sstream> -#include <vdr/osdbase.h> -#include <vdr/plugin.h> -#include "services.h" - -class cSkindesignerOsdItem : public cOsdItem { -private: - cSDDisplayMenu *sdDisplayMenu; - map < string, string > stringTokens; - map < string, int > intTokens; - map < string, vector< map< string, string > > > loopTokens; -protected: -public: - cSkindesignerOsdItem(eOSState State = osUnknown); - cSkindesignerOsdItem(const char *Text, eOSState State = osUnknown, bool Selectable = true); - virtual ~cSkindesignerOsdItem(); - virtual void SetMenuItem(cSkinDisplayMenu *DisplayMenu, int Index, bool Current, bool Selectable); - void SetDisplayMenu(cSDDisplayMenu *sdDisplayMenu) { this->sdDisplayMenu = sdDisplayMenu; }; - void AddStringToken(string key, string value); - void AddIntToken(string key, int value); - void AddLoopToken(string loopName, map<string, string> &tokens); -}; - - -class cSkindesignerOsdMenu : public cOsdMenu { -private: - bool init; - bool displayText; - string pluginName; - cSDDisplayMenu *sdDisplayMenu; - string text; - map < string, string > stringTokens; - map < string, int > intTokens; - map < string, vector< map< string, string > > > loopTokens; - bool SetSkinDesignerDisplayMenu(void); -protected: - void ClearTokens(void); - void SetPluginName(string name) {pluginName = name; }; - void SetPluginMenu(int menu, eMenuType type); - void SetText(string text) { this->text = text; }; - void AddStringToken(string key, string value); - void AddIntToken(string key, int value); - void AddLoopToken(string loopName, map<string, string> &tokens); - void TextKeyLeft(void); - void TextKeyRight(void); - void TextKeyUp(void); - void TextKeyDown(void); -public: - cSkindesignerOsdMenu(const char *Title, int c0 = 0, int c1 = 0, int c2 = 0, int c3 = 0, int c4 = 0); - virtual ~cSkindesignerOsdMenu(); - virtual void Display(void); -}; - -#endif // __SKINDESIGNEROSDBASE_H - diff --git a/skindesclient-0.0.1/osdmenu.c b/skindesclient-0.0.1/osdmenu.c deleted file mode 100644 index e32b2d1..0000000 --- a/skindesclient-0.0.1/osdmenu.c +++ /dev/null @@ -1,148 +0,0 @@ -#include <vdr/osdbase.h> -#include <string> -#include <vector> -#include <map> -#include <set> -#include <sstream> -#include "libskindesigner/skindesignerosdbase.h" - -enum eMenus { - meListMain, - meListSub, - meDetail -}; - -class cPlugOsdMenu : public cSkindesignerOsdMenu { -private: - void SetMenu(int numItems, bool subfolder = false); - void SetDetailView(int element); -public: - cPlugOsdMenu(void); - virtual ~cPlugOsdMenu(); - virtual eOSState ProcessKey(eKeys key); -}; - - -//*************************************************************************** -// Public Functions -//*************************************************************************** - -cPlugOsdMenu::cPlugOsdMenu(void) : cSkindesignerOsdMenu("Skindesigner Client") { - SetPluginName("skindesclient"); - SetMenu(10); -} - -cPlugOsdMenu::~cPlugOsdMenu(void) { - -} - -eOSState cPlugOsdMenu::ProcessKey(eKeys key) { - eOSState state = cOsdMenu::ProcessKey(key); - switch (key) { - case kOk: { - int element = Current(); - if (element%2) - SetDetailView(element); - else - SetMenu(25, true); - state = osContinue; - break; - } case kLeft: { - TextKeyLeft(); - state = osContinue; - break; - } case kRight: { - TextKeyRight(); - state = osContinue; - break; - } case kUp: { - TextKeyUp(); - state = osContinue; - break; - } case kDown: { - TextKeyDown(); - state = osContinue; - break; - } - default: - break; - } - return state; -} - -//*************************************************************************** -// Private Functions -//*************************************************************************** - -void cPlugOsdMenu::SetMenu(int numItems, bool subfolder) { - eMenus menu = subfolder ? meListSub : meListMain; - SetPluginMenu(menu, mtList); - Clear(); - - for (int i=0; i < numItems; i++) { - cSkindesignerOsdItem *item = new cSkindesignerOsdItem(); - //add some tokens to the menu item - stringstream text; - if (i%2) - text << "DetailItem" << (i+1); - else - text << "FolderItem" << (i+1); - item->SetText(text.str().c_str()); - item->AddIntToken("itemnumber", i); - item->AddStringToken("menuitemtext", text.str().c_str()); - - stringstream text2; - text2 << "CurrentItemText" << (i+1) << "\n"; - text2 << "CurrentItemText" << (i+1) << "\n"; - text2 << "CurrentItemText" << (i+1) << "\n"; - text2 << "CurrentItemText" << (i+1) << "\n"; - text2 << "CurrentItemText" << (i+1) << "\n"; - text2 << "CurrentItemText" << (i+1) << "\n"; - item->AddStringToken("currentitemtext", text2.str().c_str()); - - //Loop Token Example - for (int row=0; row<20; row++) { - map<string, string> tokens; - for (int col=0; col<3; col++) { - stringstream key; - stringstream value; - key << "loop1[" << "col" << col << "]"; - value << "menuitem" << i << "-" << row << "x" << col; - tokens.insert(pair<string,string>(key.str(), value.str())); - } - item->AddLoopToken("loop1", tokens); - } - //Add item - bool current = (i==0)?true:false; - Add(item, current); - } - SetHelp("Red", "Green", "Yellow", "Blue"); - Display(); -} - -void cPlugOsdMenu::SetDetailView(int element) { - SetPluginMenu(meDetail, mtText); - Clear(); - ClearTokens(); - - SetText("Text to be displayed if skindesigner templates are not available"); - - AddIntToken("menuitem", element); - AddStringToken("tabtext", "String Token to be displayed if skindesigner template is available"); - - //Loop Token Example - for (int row=0; row<25; row++) { - map<string, string> tokens; - for (int col=0; col<10; col++) { - stringstream key; - stringstream value; - key << "loop1[" << "col" << col << "]"; - value << "row" << row << "-" << "col" << "-" << col; - tokens.insert(pair<string,string>(key.str(), value.str())); - } - AddLoopToken("loop1", tokens); - } - - SetHelp("Red", "Green", "Yellow", "Blue"); - Display(); -} diff --git a/skindesclient-0.0.1/skindesclient.c b/skindesclient-0.0.1/skindesclient.c deleted file mode 100644 index 01bff96..0000000 --- a/skindesclient-0.0.1/skindesclient.c +++ /dev/null @@ -1,147 +0,0 @@ -/* - * skindesclient.c: A plugin for the Video Disk Recorder - * - * See the README file for copyright information and how to reach the author. - * - * $Id$ - */ - -#include <vdr/plugin.h> -#include "osdmenu.c" -#include "libskindesigner/services.h" - -static const char *VERSION = "0.0.1"; -static const char *DESCRIPTION = "SkinDesigner Test Client"; -static const char *MAINMENUENTRY = "Skindesclient"; - -class cPluginSkindesclient : public cPlugin { -private: - // Add any member variables or functions you may need here. -public: - cPluginSkindesclient(void); - virtual ~cPluginSkindesclient(); - virtual const char *Version(void) { return VERSION; } - virtual const char *Description(void) { return DESCRIPTION; } - virtual const char *CommandLineHelp(void); - virtual bool ProcessArgs(int argc, char *argv[]); - virtual bool Initialize(void); - virtual bool Start(void); - virtual void Stop(void); - virtual void Housekeeping(void); - virtual void MainThreadHook(void); - virtual cString Active(void); - virtual time_t WakeupTime(void); - virtual const char *MainMenuEntry(void) { return MAINMENUENTRY; } - virtual cOsdObject *MainMenuAction(void); - virtual cMenuSetupPage *SetupMenu(void); - virtual bool SetupParse(const char *Name, const char *Value); - virtual bool Service(const char *Id, void *Data = NULL); - virtual const char **SVDRPHelpPages(void); - virtual cString SVDRPCommand(const char *Command, const char *Option, int &ReplyCode); - }; - -cPluginSkindesclient::cPluginSkindesclient(void) -{ - -} - -cPluginSkindesclient::~cPluginSkindesclient() -{ -} - -const char *cPluginSkindesclient::CommandLineHelp(void) -{ - return NULL; -} - -bool cPluginSkindesclient::ProcessArgs(int argc, char *argv[]) -{ - return true; -} - -bool cPluginSkindesclient::Initialize(void) -{ - return true; -} - -bool cPluginSkindesclient::Start(void) -{ - RegisterPlugin reg; - reg.name = "skindesclient"; - reg.SetMenu(meListMain, "menulistmain.xml"); - reg.SetMenu(meListSub, "menulistsub.xml"); - reg.SetMenu(meDetail, "menudetail.xml"); - static cPlugin *pSkinDesigner = cPluginManager::GetPlugin("skindesigner"); - if (pSkinDesigner) { - bool ok = pSkinDesigner->Service("RegisterPlugin", ®); - } else { - esyslog("skindesclient: skindesigner not available"); - } - return true; -} - -void cPluginSkindesclient::Stop(void) -{ - // Stop any background activities the plugin is performing. -} - -void cPluginSkindesclient::Housekeeping(void) -{ - // Perform any cleanup or other regular tasks. -} - -void cPluginSkindesclient::MainThreadHook(void) -{ - // Perform actions in the context of the main program thread. - // WARNING: Use with great care - see PLUGINS.html! -} - -cString cPluginSkindesclient::Active(void) -{ - // Return a message string if shutdown should be postponed - return NULL; -} - -time_t cPluginSkindesclient::WakeupTime(void) -{ - // Return custom wakeup time for shutdown script - return 0; -} - -cOsdObject *cPluginSkindesclient::MainMenuAction(void) -{ - cOsdObject *menu = new cPlugOsdMenu(); - return menu; -} - -cMenuSetupPage *cPluginSkindesclient::SetupMenu(void) -{ - // Return a setup menu in case the plugin supports one. - return NULL; -} - -bool cPluginSkindesclient::SetupParse(const char *Name, const char *Value) -{ - // Parse your own setup parameters and store their values. - return false; -} - -bool cPluginSkindesclient::Service(const char *Id, void *Data) -{ - // Handle custom service requests from other plugins - return false; -} - -const char **cPluginSkindesclient::SVDRPHelpPages(void) -{ - // Return help text for SVDRP commands this plugin implements - return NULL; -} - -cString cPluginSkindesclient::SVDRPCommand(const char *Command, const char *Option, int &ReplyCode) -{ - // Process SVDRP commands this plugin implements - return NULL; -} - -VDRPLUGINCREATOR(cPluginSkindesclient); // Don't touch this! diff --git a/skindesclient-0.0.1/templates-metrixhd/plug-skindesclient-menudetail.xml b/skindesclient-0.0.1/templates-metrixhd/plug-skindesclient-menudetail.xml deleted file mode 100644 index 82f13ab..0000000 --- a/skindesclient-0.0.1/templates-metrixhd/plug-skindesclient-menudetail.xml +++ /dev/null @@ -1,80 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!DOCTYPE menuplugin SYSTEM "../../../dtd/displaymenuplugin.dtd"> - -<menuplugin x="0" y="0" width="100%" height="100%" fadetime="0"> - <background> - <area x="0" y="0" width="100%" height="100%" layer="1"> - <fill color="{clrTransBlack}" /> - </area> - </background> - <!-- dummyheader --> - <header> - <area x="0" y="0" width="1" height="1" layer="1"> - <fill color="{clrTransparent}" /> - </area> - </header> - <datetime> - <area x="0" y="0" width="1" height="1" layer="1"> - <fill color="{clrTransparent}" /> - </area> - </datetime> - <colorbuttons> - </colorbuttons> - <!-- Available Variables in detail header: - {menuitem} Number of menu item element from list - {tabtext} Text for Tab - --> - <detailheader> - <area x="0" y="0" width="100%" height="20%" layer="2"> - <fill color="{clrTransBlueLight}" /> - </area> - <area x="0" y="0" width="100%" height="20%" layer="3"> - <drawtext x="20" valign="center" font="{light}" fontsize="40%" color="{clrWhite}" text="Header for menuitem {menuitem} detailed information" /> - </area> - </detailheader> - <!-- Available Variables scrollbar: - {height} height in one-tenth of a percent of total height - {offset} offset from top in one-tenth of a percent of total height - --> - <scrollbar> - <area x="98%" y="20%" width="2%" height="65%" layer="3"> - <fill color="{clrWhite}" /> - <drawrectangle x="2" y="2" width="{areawidth} - 4" height="{areaheight} - 4" color="{clrTransparent}" /> - <drawrectangle x="4" y="4 + {areaheight} * {offset} / 1000" width="{areawidth} - 8" height="{areaheight} * {height} / 1000 - 8" color="{clrWhite}" /> - </area> - </scrollbar> - <!-- Available Variables in tab elements: - {menuitem} Number of menu item element from list - {tabtext} Text for Tab - {loop1[]} test array - {loop1[col0]} test array first col - ... - {loop1[col3]} test array fourth col - --> - <!-- TAB TEST1 --> - <tab name="Test1" x="2%" y="20%" width="94%" height="65%" layer="2" scrollheight="{areaheight}/4"> - <drawtextbox x="0" y="0" width="96%" font="{light}" fontsize="8%" color="{clrWhite}" text="{tabtext}" /> - </tab> - <!-- TAB TEST2 --> - <tab name="Test2" x="2%" y="20%" width="94%" height="65%" layer="2" scrollheight="{areaheight}/4"> - <drawtext x="10" y="0" width="96%" font="{light}" fontsize="8%" color="{clrWhite}" text="{tabtext}" /> - <loop name="loop1" x="0" y="9%" width="{areawidth} - 40" orientation="vertical"> - <drawtext x="20" y="0" width="{areawidth} - 20" font="{light}" fontsize="8%" color="{clrWhite}" text="{loop1[col0]} {loop1[col1]} {loop1[col2]} {loop1[col3]}" /> - </loop> - </tab> - <!-- Available Variables tablabels: - {tabs[]} array with available tab labels - {tabs[title]} title of tab - {tabs[current]} true if tab is displayed currently - --> - <tablabels> - <area x="0" y="85%" width="98%" height="5%" layer="3"> - <loop name="tabs" x="0" y="0" orientation="horizontal"> - <drawrectangle condition="{tabs[current]}" x="0" y="0" width="{width(label)}" height="100%" color="{clrTransBlueLight}" /> - <drawrectangle condition="not{tabs[current]}" x="0" y="0" width="{width(label)}" height="100%" color="{clrTransBlueLight}" /> - <drawrectangle condition="not{tabs[current]}" x="2" y="2" width="{width(label)} - 4" height="{areaheight}-4" color="{clrTransparent}" /> - <drawtext name="label" x="0" valign="center" font="{light}" fontsize="95%" color="{clrWhite}" text=" {tabs[title]} " /> - </loop> - </area> - </tablabels> -</menuplugin>
\ No newline at end of file diff --git a/skindesclient-0.0.1/templates-metrixhd/plug-skindesclient-menulistmain.xml b/skindesclient-0.0.1/templates-metrixhd/plug-skindesclient-menulistmain.xml deleted file mode 100644 index 2d88c32..0000000 --- a/skindesclient-0.0.1/templates-metrixhd/plug-skindesclient-menulistmain.xml +++ /dev/null @@ -1,67 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!DOCTYPE menuplugin SYSTEM "../../../dtd/displaymenuplugin.dtd"> - -<menuplugin x="0" y="0" width="100%" height="100%" fadetime="0"> - <!-- Available Variables header: - {title} title of current menu - {vdrversion} running VDR Version - {hasicon} true if a menu icon is available - {icon} path of menu icon - --> - <header> - </header> - - <menuitems x="0" y="10%" orientation="vertical" width="100%" height="82%" align="center" numlistelements="6"> - <!-- Available Variables schedules menu listelement: - {nummenuitem} number of item in list, starts with 1 - {current} - {separator} - {itemnumber} - {menuitemtext} - {currentitemtext} - --> - <listelement> - <!-- Background --> - <area x="1%" width="58%" layer="2"> - <fill condition="not{current}" color="{clrTransparent}" /> - <fill condition="{current}" color="{clrTransBlueLight}" /> - </area> - <area x="1%" width="58%" layer="3"> - <drawtext x="10" valign="center" font="{light}" fontsize="95%" color="{clrWhite}" text="{itemnumber} {menuitemtext}" /> - </area> - </listelement> - <!-- additional element which is drawn for current element --> - <!-- Available Variables schedules menu currentelement: - {itemnumber} - {menuitemtext} - {currentitemtext} - {loop1[]} test array - {loop1[col0]} test array first col - ... - {loop1[col2]} test array third col - --> - <currentelement delay="500" fadetime="0"> - <area x="63%" y="0" width="36%" height="85%" layer="3"> - <drawtext align="center" y="0" font="{semibold}" width="{areawidth}-20" fontsize="15%" color="{clrWhite}" text="{itemnumber}" /> - <drawtext align="center" y="15%" font="{semibold}" width="{areawidth}-20" fontsize="8%" color="{clrWhite}" text="{menuitemtext}" /> - <drawtextbox x="10" y="{areaheight}/3" width="{areawidth}-20" font="{light}" fontsize="{areaheight}/15" color="{clrWhite}" text="{currentitemtext}" /> - </area> - <areascroll mode="carriagereturn" orientation="vertical" delay="1000" scrollspeed="medium" x="63%" y="85%" width="36%" height="15%" layer="3"> - <loop name="loop1" x="0" y="0" orientation="vertical"> - <drawtext x="10" font="{light}" width="{areawidth}-20" fontsize="20%" color="{clrWhite}" text="{loop1[col0]} {loop1[col1]} {loop1[col2]}" /> - </loop> - </areascroll> - </currentelement> - </menuitems> - <!-- Available Variables scrollbar: - {height} height in one-tenth of a percent of total height - {offset} offset from top in one-tenth of a percent of total height - --> - <scrollbar> - <area x="60%" y="10%" width="2%" height="82%" layer="3"> - <fill color="{clrWhite}" /> - <drawrectangle x="2" y="2" width="{areawidth} - 4" height="{areaheight} - 4" color="{clrTransparent}" /> - <drawrectangle x="4" y="4 + {areaheight} * {offset} / 1000" width="{areawidth} - 8" height="{areaheight} * {height} / 1000 - 8" color="{clrWhite}" /> - </area> - </scrollbar> -</menuplugin>
\ No newline at end of file diff --git a/skindesclient-0.0.1/templates-metrixhd/plug-skindesclient-menulistsub.xml b/skindesclient-0.0.1/templates-metrixhd/plug-skindesclient-menulistsub.xml deleted file mode 100644 index acc3341..0000000 --- a/skindesclient-0.0.1/templates-metrixhd/plug-skindesclient-menulistsub.xml +++ /dev/null @@ -1,67 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!DOCTYPE menuplugin SYSTEM "../../../dtd/displaymenuplugin.dtd"> - -<menuplugin x="0" y="0" width="100%" height="100%" fadetime="0"> - <!-- Available Variables header: - {title} title of current menu - {vdrversion} running VDR Version - {hasicon} true if a menu icon is available - {icon} path of menu icon - --> - <header> - </header> - - <menuitems x="0" y="10%" orientation="vertical" width="100%" height="82%" align="center" numlistelements="12"> - <!-- Available Variables schedules menu listelement: - {nummenuitem} number of item in list, starts with 1 - {current} - {separator} - {itemnumber} - {menuitemtext} - {currentitemtext} - --> - <listelement> - <!-- Background --> - <area x="1%" width="58%" layer="2"> - <fill condition="not{current}" color="{clrTransparent}" /> - <fill condition="{current}" color="{clrTransBlueLight}" /> - </area> - <area x="1%" width="58%" layer="3"> - <drawtext x="10" valign="center" font="{light}" fontsize="95%" color="{clrWhite}" text="{itemnumber} {menuitemtext}" /> - </area> - </listelement> - <!-- additional element which is drawn for current element --> - <!-- Available Variables schedules menu currentelement: - {itemnumber} - {menuitemtext} - {currentitemtext} - {loop1[]} test array - {loop1[col0]} test array first col - ... - {loop1[col2]} test array third col - --> - <currentelement delay="500" fadetime="0"> - <area x="63%" y="0" width="36%" height="85%" layer="3"> - <drawtext align="center" y="0" font="{semibold}" width="{areawidth}-20" fontsize="15%" color="{clrWhite}" text="{itemnumber}" /> - <drawtext align="center" y="15%" font="{semibold}" width="{areawidth}-20" fontsize="8%" color="{clrWhite}" text="{menuitemtext}" /> - <drawtextbox x="10" y="{areaheight}/3" width="{areawidth}-20" font="{light}" fontsize="{areaheight}/15" color="{clrWhite}" text="{currentitemtext}" /> - </area> - <areascroll mode="carriagereturn" orientation="vertical" delay="1000" scrollspeed="medium" x="63%" y="85%" width="36%" height="15%" layer="3"> - <loop name="loop1" x="0" y="0" orientation="vertical"> - <drawtext x="10" font="{light}" width="{areawidth}-20" fontsize="20%" color="{clrWhite}" text="{loop1[col0]} {loop1[col1]} {loop1[col2]}" /> - </loop> - </areascroll> - </currentelement> - </menuitems> - <!-- Available Variables scrollbar: - {height} height in one-tenth of a percent of total height - {offset} offset from top in one-tenth of a percent of total height - --> - <scrollbar> - <area x="60%" y="10%" width="2%" height="82%" layer="3"> - <fill color="{clrWhite}" /> - <drawrectangle x="2" y="2" width="{areawidth} - 4" height="{areaheight} - 4" color="{clrTransparent}" /> - <drawrectangle x="4" y="4 + {areaheight} * {offset} / 1000" width="{areawidth} - 8" height="{areaheight} * {height} / 1000 - 8" color="{clrWhite}" /> - </area> - </scrollbar> -</menuplugin>
\ No newline at end of file |