LCDInfo.com
http://forum.lcdinfo.com/

Development planning - Flags and sequences
http://forum.lcdinfo.com/viewtopic.php?f=17&t=999
Page 1 of 1

Author:  Syridian [ Thu Jan 20, 2005 4:22 ]
Post subject: 

The easiest way would be some sort of priority system with screens given priority values, which the core checks when a flag gets changed.

Is there an interupt system in place for that <requireflag>? or is it only checked on changing to that screen?

To properly implement a sequencing function, I think it should all be done in the screens.xml. Even to the point of removing the current <action> tag in the screens files themselves and moving that function to the screens.xml. This would make the individual screens autonomous, and independant of each other. Where as the current system allows for one screen to call another that isn't actually in the screens.xml file.

Anyway, just tossing some idea's around. Fell free to add, flame, think and reinvent. ;)

Hopefully with some well defined features that need adding, we might get some more programmers interested in volunteering a few hours to implement them. :)

Author:  hd196 [ Thu Jan 20, 2005 16:21 ]
Post subject: 

Syridian wrote:
Fell free to add, flame, think and reinvent. ;)


What about something like this:
(already thinking about future buttonsupport, variables, list ...)
Code:
  <screen>
    <name>Menu</name>
    <layout>128x64\menu.xml</layout>
    <var>                     //idea: use variables in layout file ?? (multiple menu's, 1 layout)
      <name>Caption</name>    //in layout file: %(Caption)
      <value>Main menu</value>//is replaced by this value
    </var>
    <list>
      <listitem>              //maybe future support for lists in layout file????
        <name>CPU</name>
        <text>CPU info</text>
      </listitem>
      <listitem>
        <name>Memory</name>
        <text>Mem info</text>
      </listitem>
      <defaultitem>CPU</defaultitem>
      <visible>true</visible> // support popup menu's ?? first Up/down -> visible
    </list>
    <actions>
       <action button=1>
          <showscreen>Menu</showscreen>
       </action>
       <action button=2>
          <listaction>Up</listaction>
       </action>
       <action button=3>
          <listaction>Down</listaction>
       </action>
       <action button=4>
          <showscreen>%(list.selected)</showscreen>
       </action>
    </actions>
  </screen>
  <screen>
    <name>CPU</name>
    <layout>128x64\cpu.xml</layout>
     ...
</screens>

and ofcourse also something like <action flag=Winamp.playing>

Author:  Syridian [ Thu Jan 20, 2005 23:44 ]
Post subject:  More wood?

I like your thinking...

I would still prefer to use a seperate screens.xml file with all of the screen interaction like you have discribed above, but referancing seperate screen files, like it corrently does. This way each screen file would be a seperate entity and screens could be traded on the forum. You screens file would determin how those screens change and interact.

At the moment the screens.xml file is really just a list of files, with there directories, just to point LCDinfo to where the file is. But expanding this with what you have described above would greatly increase the functionality as well as make it easier for users to trade and offer premade screens for others to download and use.

Anyway... more wood for the fire.... Burn baby burn. ;) Lets stoke this fire until it cannot be ignored. ;)

Author:  Henri [ Fri Jan 21, 2005 10:06 ]
Post subject: 

I like your ideas there.

Button support and menus, etc. have been in my mind for future expansion. When the action / event system will be little more complete button support should be easy. Reading buttons shouldn't be a problem even now but there isn't that much that could be attached to the button presses except screen changes.

hd196:
I can already see what you mean with the lists but I can't be sure of everything you thought how it should work. If you'd like to make a little more complete description of your ideas we should be able to line up our minds better and try to figure out possible problems and how to avoid them.

Also that layout system interests me as I think I get the basic idea but most likely I don't understand all details (I know you probably don't either ;) ) of how you thought everything should interact.

Author:  hd196 [ Fri Jan 21, 2005 19:34 ]
Post subject:  screens.xml

@Syridian
Hmm, it seems part of my xml has disappeared. At the beginning of it a <screens> tag is missing, that xml should go in the screens.xml file. So, i agree the action tags should be in screens.xml
Another action could be <action timeout=1000> to wait 1 second (f.e. for a intro, i also described that, but i think I forgot to paste that part).

@Henri
What i mean with the layout tag is just a reference to a screen xml file. Could(should?) have used a <screenfile> tag.
My idea of using lists:
- put the list items in the screens.xml file (static list like i described before) or use a list which gets it's data from a plugin(reads xml/database/playlist/unread mail/etc).
- use something like this in the layout xml-file:
Code:
<item type="list"  x=10 y=20 w=50 h=40>
<listid>userlist</listid>
</item>

or

<item type="list" x=10 y=20 w=50 h=40>
<listid>winamp2.playlist</listid>
</item>


and then use the action tags in the screens.xml file to define button/keyboard actions to scroll through and select from the list.

Quote:
Reading buttons shouldn't be a problem even now but there isn't that much that could be attached to the button presses except screen changes.

Not now, but maybe later execute external program's? (f.e. start winamp.exe). Browse playlists? Select a file from a playlist?

And what about:
Code:
<item type="uservariable" x=3 y=5>
<varid>Caption</var>
</item>

for referencing user-defined variables? Or use %(varid)? I prefer the last one, because then
Code:
<item type="image"...><imagebitmap>images/%(mylogonamevar).bmp</...>

could be possible. But i think the first one is more non-programmer friendly.

All actions/variables/lists should in my opinion be defined in screens.xml. The other xml files just describe the screen layout, referencing lists, images and variables (and contain static text tags).

I'm just sharing my :idea:'s. Feel free to do with them what you want.
To clarify things, I'll try to make some more detailed examples.

Now, if I only got my Nokia 3310 lcd to work...

Author:  hd196 [ Fri Jan 21, 2005 20:11 ]
Post subject:  screens.xml proposal

This one (screens.xml) explains itself I hope.

Code:
// button 1 = left/escape
// button 2 = Up
// button 3 = Down
// button 4 = right/ok

<screens>

// Introduction screen
  <screen>
    <id>Intro</id>
    <layout>128x64\intro.xml</layout>
    <actions>
      <action timeout=2000>
        <showscreen>MainMenu</showscreen>
      </action>
      <action button=1>
        <showscreen>MainMenu</showscreen>
      </action>
    </actions>
  </screen>

// Main menu
// menu.xml contains a <item type="list"> with a <listid>userlist</listid> tag
// and a <item type="var"> tag with <varid>Caption</varid>
  <screen>
    <id>MainMenu</id>
    <layout>128x64\menu.xml</layout>
    <var>
      <name>Caption</name>
      <value>Main menu</value>
    </var>
    <list>
      <listitem>
        <id>Sysinfomenu</id>
        <text>System info</text>
      </listitem>
      <listitem>
        <id>WinampStatus</id>
        <text>Winamp status</text>
      </listitem>
      <listitem>
        <id>WinampPlaylist</id>
        <text>Select track</text>
      </listitem>
      <defaultitem>Sysinfomenu</defaultitem>
    </list>
    <actions>
       <action button=2>
          <listaction>Up</listaction>
       </action>
       <action button=3>
          <listaction>Down</listaction>
       </action>
       <action button=4>
          <showscreen>%(list.selected)</showscreen>
       </action>
    </actions>
  </screen>


// System info menu
// uses the same menu.xml layout as in MainMenu
  <screen>
    <id>Sysinfomenu</id>
    <layout>128x64\menu.xml</layout>
    <var>
      <name>Caption</name>
      <value>System info</value>
    </var>
    <list>
      <listitem>
        <id>CPU</id>
        <text>CPU info</text>
      </listitem>
      <listitem>
        <id>Memory</id>
        <text>Mem info</text>
      </listitem>
      <defaultitem>CPU</defaultitem>
    </list>
    <actions>
       <action button=1>
          <showscreen>MainMenu</showscreen>
       </action>
       <action button=2>
          <listaction>Up</listaction>
       </action>
       <action button=3>
          <listaction>Down</listaction>
       </action>
       <action button=4>
          <showscreen>%(list.selected)</showscreen>
       </action>
    </actions>
  </screen>

// CPU Info
  <screen>
    <id>CPU</id>
    <layout>128x64\cpuinfo.xml</layout>
    <actions>
       <action button=1>
          <showscreen>MainMenu</showscreen>
       </action>
    </actions>
  <screen>

// Memory info
  <screen>
    <id>Memory</id>
    <layout>128x64\meminfo.xml</layout>
    <actions>
       <action button=1>
          <showscreen>MainMenu</showscreen>
       </action>
    </actions>
  <screen>


// Winamp status screen
  <screen>
    <id>WinampStatus</id>
    <layout>128x64\winamp_status.xml</layout>
    <actions>
       <action button=1>
          <showscreen>MainMenu</showscreen>
       </action>
    </actions>
  </screen>

// Winamp playlist browser
// winamp_playlist.xml contains a <item type="list"> with a <listid
>Winamp2.Playlist</listid> tag

  <screen>
    <id>WinampPlaylist</id>
    <layout>128x64\winamp_playlist.xml</layout>
    <actions>
       <action button=1>
          <showscreen>MainMenu</showscreen>
       </action>
       <action button=2>
          <listaction>Up</listaction>
       </action>
       <action button=3>
          <listaction>Down</listaction>
       </action>
       <action button=4>
// TODO, actually I don't like this referencing a plugin from screens.xml ...
          <pluginaction>Winamp.Play</pluginaction>
          <pluginactiondata>%(list.selected)</pluginactiondata>
       </action>
    </actions>
  </screen>

</screens>

Author:  Syridian [ Sat Jan 22, 2005 2:17 ]
Post subject: 

hd196,

Pretty impressive thinking going on there... I like it. Are you a programmer by any chance? :)

The list item is a great idea, however my non-programming mind tells me that you will need to have Plugins supporting that function for it to work properly, and that therefor requires alot of redevelopment of plugins (however I could be wrong... Henri?).

Maybe we should concentrate more on getting the current 'flags' system working, as Henri suggested, as the natural progression would require this to be functional before your menu system (which I would LOVE) could be implemented. <--- Voice of reason, now back to reality.. ;)

With a menu system in place like the one you have described, the possibilities are greatly expanded. And this would take LCDinfo out of the realm of Hobby/Modders into the whole new realm of serious product development. If in the distant future, it is possible to map buttons out of LCDinfo and control other programs, LCDinfo could become the engine to drive small LCD/button only PCs, allowing configurable network devices and all sorts of other things... But I digress.... Exciting though.. ;)

Author:  Henri [ Sat Jan 22, 2005 13:16 ]
Post subject: 

Thanks for the additional example, I think I get it better now as there were few things I wasn't so sure about after your first post. Looking good I think and if there are some problems they probably can be seen when thinking how it exactly should be implemented in the code.


Depending of how the list feature would be implemented there might not need to be changes to the plugins. But might be better if the plugins were aware of this too.

Page 1 of 1 All times are UTC + 2 hours
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/