Page 1 of 4 1234 LastLast
Results 1 to 10 of 37

Thread: *** New RideRunner Dynamic Menus ****

  1. #1
    MySQL Error
    Auto Apps:loading...

    Join Date
    Oct 2004
    Posts
    5,248

    *** New RideRunner Dynamic Menus ****

    ALL New for Ride Runner is the Dynamic Menus

    I've had this idea for over a year... just takes something to get me to do it...
    So... I spent a good 2 days coding this... its available NOW for testers (ftp)


    Q What is Dynamic Menus?
    A. A menu system that RideRunner manages, based on skin designer options and automatic plugin subscription.

    Q. Whats a menu system?
    A. Generally the buttons on menu.skin, menu1.skin.... menu9.skin

    Q. What is plugin subscription?
    A. When a plugin is instantiated, RR will ask the plugin for a property, and this is added to Dynamic Menu Selector.


    Pros:
    • No more lines and lines of cryptic code in Exectbl.ini.
    • Fast, no more long delay at skin load for all the commands to build the menus to run.
    • No more reloading skin just to change the menu.
    • Standardized, now all skins can use this method.
    • Plugin Subscription, plugins can subscribe to the Dynamic Menu to provide easy end user integration.
    • Menu skins are easily expandable, a new menu can be added at any time.
    • Skin object code for menu navigation simplified.


    Cons:
    • None



    I prob can use some help documenting this new feature.
    Attached Images Attached Images  
    Last edited by mitchjs; 03-08-2012 at 07:32 PM.
    -Thanks
    Mitch
    www.rush2112.net

    "Did you test it in carwings??"

    Sun, Come shine my way
    May healing waters bury all my pain
    Wind, Carry me home
    The fabric of reality is tearing apart
    The piece of me that died
    Will return To live again

  2. #2
    MySQL Error
    Auto Apps:loading...

    Join Date
    Oct 2004
    Posts
    5,248
    Lets talk Commands, specifically the Dynamic Menu Navigation commands.

    Starting with:

    "RRMenuNext" & "RRMenuPrev"

    Referring to the Image in POST #1

    I have in this example, "RRMenuNext" on the button circled in Green on menu.skin
    B00,76,509,138,29,"RRMenuNext"

    I also have the SAME command on the same button, in menu2.skin,
    infact MENU.skin and Menu2.skin are basicaly identical (only the top right button different)

    now what the commands do

    "RRMenuNext" will load the next menu in the sequence up to menu9, and loop around.
    example; if you have "menu.skin" and "menu2.skin" (yes you can have "menu1.skin")
    and you are on "menu.skin" it will go "menu2.skin" the same command on "menu2.skin" goes to "menu.skin".
    (since you dont have 3-9)

    "RRMenuPrev" will load the previous menu, and loop around.
    example; if you have "menu.skin" and "menu1.skin" and "menu3.skin" and "menu4.skin", and you are
    on "menu3.skin" it will go to "menu2.skin", the same command on "menu.skin" goes to "menu4.skin".
    Last edited by mitchjs; 03-08-2012 at 07:33 PM.
    -Thanks
    Mitch
    www.rush2112.net

    "Did you test it in carwings??"

    Sun, Come shine my way
    May healing waters bury all my pain
    Wind, Carry me home
    The fabric of reality is tearing apart
    The piece of me that died
    Will return To live again

  3. #3
    MySQL Error
    Auto Apps:loading...

    Join Date
    Oct 2004
    Posts
    5,248
    Next lets talk about Dynamic Menu Item; Commands, Labels, and Indicators, and that one variable

    Commands:

    "RRMenuItem;x" - where "x" is 1-n
    "RRMenuItem;x;Set" - where "x" is 1-n
    "RRMenuItemSave;key;(menuitem)" - where "key" is the MenuItemKey, "menuitem" is the MenuItemValue

    Labels:
    "RRMenuItem;x" - where "x" is 1-n

    Indicators:
    "RRMenuItem;x" - where "x" is 1-n


    Important, USER Variable:
    "RRMenuItemKey" - contains the current MenuItemKey when "Set" is used.


    Referring to the Image in POST #1

    looking at the item in the RED circle, actually its two obects there, a Button Object and a Label Object
    The Button:

    lets look at the Skin Object Code on that:
    B02,53,079,352,57,"RRMenuItem;1",@RRMenuItem;1;set @

    We got a click command of "RRMenuItem;1", and a HOLD command of "RRMenuItem;1;set", where 1 is the 1st button on the menu.skin, so on this menu.skin, we have 6 menu buttons
    they would be (1-6):

    B02,53,079,352,57,"RRMenuItem;1",@RRMenuItem;1;set @
    B03,62,152,370,52,"RRMenuItem;2",@RRMenuItem;2;set @
    B04,66,222,370,54,"RRMenuItem;3",@RRMenuItem;3;set @
    B05,72,296,356,53,"RRMenuItem;4",@RRMenuItem;4;set @
    B06,65,368,361,53,"RRMenuItem;5",@RRMenuItem;5;set @
    B07,53,438,358,50,"RRMenuItem;6",@RRMenuItem;6;set @


    Simple enough

    Now the Label:

    L05,107,081,277,31,255,255,255,28,"Arial:B","RRMen uItem;1","LEFT",,"DS=3,3,0,0,0"
    L06,122,153,294,34,255,255,255,28,"Arial:B","RRMen uItem;2","LEFT",,"DS=3,3,0,0,0"
    L07,134,225,293,38,255,255,255,28,"Arial:B","RRMen uItem;3","LEFT",,"DS=3,3,0,0,0"
    L08,139,298,279,36,255,255,255,28,"Arial:B","RRMen uItem;4","LEFT",,"DS=3,3,0,0,0"
    L09,133,371,283,35,255,255,255,28,"Arial:B","RRMen uItem;5","LEFT",,"DS=3,3,0,0,0"
    L10,119,440,279,37,255,255,255,28,"Arial:B","RRMen uItem;6","LEFT",,"DS=3,3,0,0,0"


    simple enough

    now the Indicator images, the violet circle (ok they all ovals, but thats not important )

    The Indicators:

    I,355,080,56,56,"RRMenuItem;1"
    I,376,151,56,56,"RRMenuItem;2"
    I,387,223,56,56,"RRMenuItem;3"
    I,388,294,56,56,"RRMenuItem;4"
    I,384,366,56,56,"RRMenuItem;5"
    I,369,435,56,56,"RRMenuItem;6"


    simple enough


    thats it, no more skin code is needed to create a menu... and yes Menu2.skin or Menu3.skin, is IDENTICAL!!
    Last edited by mitchjs; 03-08-2012 at 07:43 PM.
    -Thanks
    Mitch
    www.rush2112.net

    "Did you test it in carwings??"

    Sun, Come shine my way
    May healing waters bury all my pain
    Wind, Carry me home
    The fabric of reality is tearing apart
    The piece of me that died
    Will return To live again

  4. #4
    MySQL Error
    Auto Apps:loading...

    Join Date
    Oct 2004
    Posts
    5,248
    Now we talk about Data...where is the data coming from...

    There is a new "menu.ini" file with that keeps the Dynamics of the menu.
    This file is not ment to ever be hand edited (you can) but you dont need to...realy! (even the 1st time without one)
    this file is with the skin, just like "general.ini" and "skin.ini"

    using say button #1

    now what lets detail "RRMenuItem;1;set" the set is the trigger, rr will now show a menu popup (Reserved skin name) of "MenuItemSet.skin".
    This is a required skin if you are going to have user changable menus.
    Its content is up to the skinner... here is a quick one put together for Carwings
    There is nothing that special here, its just a CustomList, and in this case with ICONS
    RR will populate it for you. No code is required, the skin name is how rr knows what to do

    While on this skin, an Indicator "RRMenuItemSelIcon" is active, with the icon of the selected list item. (more this later, im not even using it)

    lets look at the SELECT button code:
    B,67,370,109,55,"RRMenuItemSave;$RRMenuItemKey$;($ ListText$)||EXIT"

    "RRMenuItemSave" is the command, with 2 arguments, 1 is the KEY and 2 is the Value
    note the ( ), they are required! as they define the value start/end.

    The Key is the Dynamic Menu Key, as soon as you go into this popup, from a menu.skin, the key is set in User Var: "RRMenuItemKey"
    Example, if on menu.skin, the key is "RRMenuItem1"
    Example, if on menu2.skin the key is "RRMenu2Item1"
    (remember we are talking about the 1st button, hense the 1, the 6th button would be "RRMenuItem6")

    The Value is the metadata for the menu item, which is, the COMMAND rr is to exec when pressed, the LABEL of the button, and the INDICATOR image.
    Ill show you what that looks like... lets do Radio

    "RADIO",RADIO,Icons\Radio.png

    the format is

    "COMMAND",LABEL,Iconpath,,discription

    Command is in qoutes

    Iconpath is path to the indicator image relative the SKINPATH

    4th argument is blank
    description is a textual description available in LABEL "RRMenuItemSelDesc"


    simple still hu?

    the USER never touches this stuff (unless he wants to tweak/add MenuItems)
    Attached Images Attached Images  
    Last edited by mitchjs; 04-18-2012 at 10:17 PM.
    -Thanks
    Mitch
    www.rush2112.net

    "Did you test it in carwings??"

    Sun, Come shine my way
    May healing waters bury all my pain
    Wind, Carry me home
    The fabric of reality is tearing apart
    The piece of me that died
    Will return To live again

  5. #5
    MySQL Error
    Auto Apps:loading...

    Join Date
    Oct 2004
    Posts
    5,248
    Metadata

    This is the Skin Designers job, to create the Metadata list
    of course a User may add to it.. tweak it too, if one wants to change the text

    the list is in a file called "menu.lst"

    its a Key Value Pair text file

    KEY=VALUE

    (yea, like just a ini file)

    lets look at the one in CARWINGS, at least the one i created so far...
    (spaces are trimmed)

    Code:
    [ Available Menu Items]
    # LISTITEM = "COMMAND",LABEL,[ICON_PATH][,,[DESCRIPTION]]
    ################################################
    CLEAR BUTTON	= "",,,,Clear the Buttons functionality
    AUDIO(mp3s)     = "AUDIO",MUSIC,Icons\MUSIC.png,,This is the Audio Player
    RADIO           = "RADIO",RADIO,Icons\RADIO.png
    XM              = "XM",XM RADIO,Icons\XM RADIO.png
    SIRIUS          = "SIRIUS",SIRIUS,Icons\SIRIUS.png
    VIDEO           = "VIDEO",VIDEO,Icons\VIDEO.png
    DVD             = "DVD",DVD,Icons\DVD.png
    NAVIGATION      = "GPS",NAVIGATION,Icons\GPS.png
    WEATHER         = "HOMEWEATHER",WEATHER,Icons\Weather.png
    PICTURES        = "PICS",PICTURES,Icons\PICTURES.png
    WEB BROWSER     = "WEB",BROWSER,Icons\INTERNET.png
    APPS            = "LAUNCH",LAUNCH,Icons\LAUNCH.png
    DIMMER          = "menu;dimmer.skin",DIMMER,Icons\DIMMER.png
    CAMERA          = "CAMERA",CAMERA,Icons\CAMERA.png
    PLUGIN MANAGER  = "RRPLUGINMGR",PLUGIN MGR,Icons\PLUGINMGR.png
    #
    #
    # Other Navigation
    IGUIDANCE       = "IGUIDANCE",iGUIDANCE,Icons\GPS.png
    GMPC            = "GMPC||GMPCOVERLAY||GMPCRUN",GMPC,Icons\GPS.png
    the KEY (left side of the equals) is what is SHOWN in the LIST on the "MenuItemSet.skin"
    the VALUE is the MenuItem Data, that RR uses to create the menu

    so.. if you want an option for say some Fuel plugin... ill make it up

    add to the file:

    Fuel Finder = "RR_FUEL",FUEL,Icons\Fuel.png

    oh, by the way, if you dont have the icon, no biggy, its not required, it just shows nothing in the list and on the indicator...

    Well, thats the Dynamic Menu System in Ride Runner (build 3/8/2012 onward)

    I might tweak a thing or two, but thats why we testing... its avail on my FTP now
    Last edited by mitchjs; 04-18-2012 at 10:18 PM.
    -Thanks
    Mitch
    www.rush2112.net

    "Did you test it in carwings??"

    Sun, Come shine my way
    May healing waters bury all my pain
    Wind, Carry me home
    The fabric of reality is tearing apart
    The piece of me that died
    Will return To live again

  6. #6
    MySQL Error
    Auto Apps:loading...

    Join Date
    Oct 2004
    Posts
    5,248
    RECAP:


    New reserved files:

    Menu.ini
    Menu.lst


    New reserved skin files:

    MenuItemSet.skin

    Standard RR Reserved skin files:

    Menu.skin, Menu1.skin... Menu9.skin

    New Commands, Indicators, labels:

    Skin Command: "RRMenuItem;x;[set]"
    Skin Label: "RRMenuItem;x"
    Skin Indicator: "RRMenuItem;x"
    Skin Command: "RRMenuItemSave;key;(menuitem)"
    Skin Indicator: "RRMenuItemSelIcon" shows icon(if any) of selected item in the MenuItemSet.Skin List
    User Variable: "RRMenuItemKey"

    Skin Command: "RRMenuNext" goes to next menuX.skin (looping)
    Skin Command: "RRMenuPrev" goes to previous menuX.skin (looping)
    Last edited by mitchjs; 03-08-2012 at 08:37 PM.
    -Thanks
    Mitch
    www.rush2112.net

    "Did you test it in carwings??"

    Sun, Come shine my way
    May healing waters bury all my pain
    Wind, Carry me home
    The fabric of reality is tearing apart
    The piece of me that died
    Will return To live again

  7. #7
    MySQL Error
    Auto Apps:loading...

    Join Date
    Oct 2004
    Posts
    5,248
    Plugins,

    Plugins that support Property : "menuitem" will be subscribed to the Dynamic Menu Item list

    c# (in the properties method)
    Code:
    // Dynamic Menu
    case "menuitem":
        properties = "\"WEBRADIO\",WEB RADIO,Icons\\WebRadio.png,Web Radio (Internet)";
        break;
    note a 4th item (Web Radio (Internet)), its the text that shows in the "MenuItemSet.skin" list

    vb6:
    Code:
    Case "menuitem"
        Properties = Chr(34) + "MAPPOINT" + Chr(34) + ",MAPPOINT,Icons\GPS.png,Mappoint by Microsoft as Navigation"
    note the 4th item, the text in the list will be the PLUGIN Assembly Name, in this case "Mappoint"

    note the 5th item, is a textual description, which is available in the label "RRMenuItemSelDesc" on the "MenuItemSet.skin"

    Plugins start with PI-
    as you can see

    All these plugins, now support this property

    My plugins are on my DropBox, Web Browser, and Web Radio already updated
    Attached Images Attached Images  
    Last edited by mitchjs; 04-18-2012 at 10:11 PM.
    -Thanks
    Mitch
    www.rush2112.net

    "Did you test it in carwings??"

    Sun, Come shine my way
    May healing waters bury all my pain
    Wind, Carry me home
    The fabric of reality is tearing apart
    The piece of me that died
    Will return To live again

  8. #8
    Mo' Programming Mo' Problems
    Auto Apps:loading...
    Sonicxtacy02's Avatar
    Join Date
    Sep 2004
    Location
    Woodbridge, VA
    Posts
    8,161
    Blog Entries
    51
    Been working with mitch on this and its simply awesome. Noone will ever have to edit a exectbl.ini or menu.skin file again to customize their setup. It's a simple hold of the command and replace with an alternative from the list. THIS is the simplicity that RR has been missing... outside of DFX and a few other skins lol
    mp3Car.com Senior Tech Blogger (Want a product reviewed? Contact me.)
    Find my plugins on the MP3Car App Store!
    Follow Me on Twitter or Facebook
    Live mp3Car Facebook Chat

  9. #9
    The Curator
    Auto Apps:loading...
    Blue ZX3's Avatar
    Join Date
    Aug 2004
    Location
    Chicago area,IL
    Posts
    5,079
    This is funny actually...I did tinker in the RR Code awhile ago (~6 months) to make an attempt at making the that whole process easier and better then doing it through one of the old methods...skin plugin/exectbl/skin.ini/ect... Good thing that my attempt never made it into the svn...would have been "re-written"....
    RideRunner...The #1 FE, PERIOD.

    Current Project: DFXVoice [v1.0 Released]
    Next in line: RRMedia v2.0

    DFX 5.1.1 Skin
    Appstore Link

    My RideRunner Plugins
    RRMedia
    RRExtended
    DFXVoice

    "There are no bugs - only undocumented features."

  10. #10
    Raw Wave pierrotm777's Avatar
    Join Date
    May 2008
    Location
    Bordeaux, France
    Posts
    2,839
    This is a great feature for RR.
    Greats thanks

Page 1 of 4 1234 LastLast

Similar Threads

  1. dynamic transitions possible???
    By dlane2155 in forum Road Runner
    Replies: 29
    Last Post: 11-14-2011, 04:21 PM
  2. Dynamic buttons and XM...
    By Custommx3 in forum RR Skins
    Replies: 20
    Last Post: 03-14-2011, 04:47 PM
  3. Dynamic Menus/images help (nGen Skin)
    By Deric in forum RR Skins
    Replies: 2
    Last Post: 08-16-2009, 12:16 AM
  4. Help with dynamic commands ???
    By tolisn in forum Road Runner
    Replies: 4
    Last Post: 01-29-2005, 02:29 AM
  5. Dynamic Skins???
    By hd54321 in forum FrodoPlayer
    Replies: 9
    Last Post: 11-01-2004, 04:57 PM

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •