[Gambas-user] Emulating wizard Back/Next navigation

Dominique SIMONART simonart.dominique at ...11...
Fri Dec 12 04:11:24 CET 2008


M0E Lnx a écrit :
> I just can't seem to completely wrap my mind around this one.
>
> It really doesn't matter if i return to the same state or not... as
> long as I return there.
>
> it gets complicated when for instance, you go in a sequence from 1, 2,
> 3 then you back up to 2... change something in 2 that now makes you
> skip 3 and jump to 4 or 5.
>
> On Thu, Dec 11, 2008 at 3:40 PM, Simonart Dominique
> <simonart.dominique at ...11...> wrote:
>   
>> M0E Lnx a écrit :
>>     
>>> Exactly.
>>>
>>> The forward navigation depends on the user input, so it could jump
>>> from Form1 to Form3 and then to Form2 ans do on...
>>>
>>> So if we leave a footprint in the array, I think it *should* be easy
>>> to reverse the process indeed sort of like an "undo" process.
>>>
>>> But I'm not sure exactly what the best way to do the reverse is...
>>> should I index the array? or try to find the current form in the array
>>> and then just use the current forms.index in the array - 1 ?
>>>
>>> I've been fidling with this for a while... and it works perfecly in my
>>> mind... but can't really make it work on the IDE :(
>>>
>>> On Thu, Dec 11, 2008 at 2:23 PM, Simonart Dominique
>>> <simonart.dominique at ...11...> wrote:
>>>       
>>>> M0E Lnx a écrit :
>>>>         
>>>>> I have to say, the array idea makes more sense to me, simply because
>>>>> otherwise, it'll be hard to tell the next and back buttons which sub
>>>>> to run.
>>>>>
>>>>> I have tried an array, but object array rather than string array.
>>>>>
>>>>> The idea is that every form that gets opened leaves a footprint in
>>>>> this object array
>>>>> for instance, the form's open() event would have something like this
>>>>>
>>>>> IF ArrNav.find(me) = -1 THEN ArrNav.Add(me)
>>>>>
>>>>> this makes reverse navigation possible by indexing the array or a
>>>>> similar method. However, I am not able to work out all the bugs
>>>>> resulting from this because it gets crazy when you try to move back,
>>>>> then forward... then back... ends up in a crash almost every time
>>>>>
>>>>> Can someone work out a sample I can use?
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> On Thu, Dec 11, 2008 at 6:20 PM, nando <nando_f at ...951...> wrote:
>>>>>           
>>>>>> Perhaps the following ideas...
>>>>>> Every step in the wizard has an associated form for whatever it does for that step.
>>>>>> Every form has a SUB for 'backwards' and 'forwards so that
>>>>>> when NEXT is clicked, the forwards code runs, which is whatever
>>>>>> is required for moving to the next form (ie: perform work, verify info,
>>>>>> hide form, the activate 'next' form)
>>>>>> when BACK is clicked, the backwards code runs, which is whatever to
>>>>>> undo this step (if needed), hide form, activate 'back' form.
>>>>>> Each form knows how to go back one step, and go forward one step.
>>>>>> You would have to tell the Next and BAck buttons which forwards and backwards
>>>>>> sub to run...you could place in NEXT.tag and BACK.tag the form or info required
>>>>>> to properly run the correct code.  This would be modular so each form takes
>>>>>> care of things.
>>>>>> Or, the list of wizard steps could be in a global string array with the name
>>>>>> of the form and simply step through the index.
>>>>>> -Fernando
>>>>>>
>>>>>>
>>>>>> ---------- Original Message -----------
>>>>>> From: "M0E Lnx" <m0e.lnx at ...626...>
>>>>>> To: "mailing list for gambas users" <gambas-user at ...66...et>
>>>>>> Sent: Wed, 10 Dec 2008 20:39:45 +0000
>>>>>> Subject: [Gambas-user] Emulating wizard Back/Next navigation
>>>>>>
>>>>>>             
>>>>>>> So I set myself to create a program that acts like a wizard, but chose
>>>>>>> not to use the wizard object because well, there is just too many
>>>>>>> variables here, and there is more than one way to get to the end,
>>>>>>> Depending on user input.
>>>>>>>
>>>>>>> So what I did was create a navigation tool bar at the bottom of FMain
>>>>>>> this toolbar has a BACK, EXIT, and a NEXT button.
>>>>>>>
>>>>>>> I have a workspace object above it which will host other forms via
>>>>>>> each forms .Reparent method.
>>>>>>>
>>>>>>> Can anyone suggest a way to make reverse and forward navigation on such a setup?
>>>>>>>
>>>>>>> I have created a small project what I'm trying to do... See attachment
>>>>>>>
>>>>>>> Any help is appreciated
>>>>>>>
>>>>>>> Thanks
>>>>>>>               
>>>>>> ------- End of Original Message -------
>>>>>>
>>>>>>
>>>>>> ------------------------------------------------------------------------------
>>>>>> SF.Net email is Sponsored by MIX09, March 18-20, 2009 in Las Vegas, Nevada.
>>>>>> The future of the web can't happen without you.  Join us at MIX09 to help
>>>>>> pave the way to the Next Web now. Learn more and register at
>>>>>> http://ad.doubleclick.net/clk;208669438;13503038;i?http://2009.visitmix.com/
>>>>>> _______________________________________________
>>>>>> Gambas-user mailing list
>>>>>> Gambas-user at lists.sourceforge.net
>>>>>> https://lists.sourceforge.net/lists/listinfo/gambas-user
>>>>>>
>>>>>>             
>>>>> ------------------------------------------------------------------------------
>>>>> SF.Net email is Sponsored by MIX09, March 18-20, 2009 in Las Vegas, Nevada.
>>>>> The future of the web can't happen without you.  Join us at MIX09 to help
>>>>> pave the way to the Next Web now. Learn more and register at
>>>>> http://ad.doubleclick.net/clk;208669438;13503038;i?http://2009.visitmix.com/
>>>>> _______________________________________________
>>>>> Gambas-user mailing list
>>>>> Gambas-user at lists.sourceforge.net
>>>>> https://lists.sourceforge.net/lists/listinfo/gambas-user
>>>>>
>>>>>
>>>>>           
>>>> I think BACK has to be only an "undo" process, and NEXT is
>>>> the logical next state depending on the datas already
>>>> collected. If 2 forms could result from an actual status,
>>>> then you have to review the logical chain.
>>>>
>>>> my two cents :)
>>>> Dominique Simonart
>>>>
>>>>
>>>> ------------------------------------------------------------------------------
>>>> SF.Net email is Sponsored by MIX09, March 18-20, 2009 in Las Vegas, Nevada.
>>>> The future of the web can't happen without you.  Join us at MIX09 to help
>>>> pave the way to the Next Web now. Learn more and register at
>>>> http://ad.doubleclick.net/clk;208669438;13503038;i?http://2009.visitmix.com/
>>>> _______________________________________________
>>>> Gambas-user mailing list
>>>> Gambas-user at lists.sourceforge.net
>>>> https://lists.sourceforge.net/lists/listinfo/gambas-user
>>>>
>>>>         
>>> ------------------------------------------------------------------------------
>>> SF.Net email is Sponsored by MIX09, March 18-20, 2009 in Las Vegas, Nevada.
>>> The future of the web can't happen without you.  Join us at MIX09 to help
>>> pave the way to the Next Web now. Learn more and register at
>>> http://ad.doubleclick.net/clk;208669438;13503038;i?http://2009.visitmix.com/
>>> _______________________________________________
>>> Gambas-user mailing list
>>> Gambas-user at lists.sourceforge.net
>>> https://lists.sourceforge.net/lists/listinfo/gambas-user
>>>
>>>
>>>       
>> The simpler is often the better :) May be you could write
>> two procedures sort of PUSH and POP routines. Since the
>> datas to keep should be limited enough, the better is to
>> store all of them at each step with the last Object/form
>> name. Since all data are implicitly correct (they passed
>> correctly the preceeding step!) this is just a matter of
>> display the form and to restore all the variables with the
>> POPed values without control. This suppose of course the
>> BACK could only reverse step by step. If you add something
>> else in the BACK process, you could not be sure to return on
>> the same initial state.
>>
>> Dominique Simonart
>>
>>
>> ------------------------------------------------------------------------------
>> SF.Net email is Sponsored by MIX09, March 18-20, 2009 in Las Vegas, Nevada.
>> The future of the web can't happen without you.  Join us at MIX09 to help
>> pave the way to the Next Web now. Learn more and register at
>> http://ad.doubleclick.net/clk;208669438;13503038;i?http://2009.visitmix.com/
>> _______________________________________________
>> Gambas-user mailing list
>> Gambas-user at lists.sourceforge.net
>> https://lists.sourceforge.net/lists/listinfo/gambas-user
>>
>>     
>
> ------------------------------------------------------------------------------
> SF.Net email is Sponsored by MIX09, March 18-20, 2009 in Las Vegas, Nevada.
> The future of the web can't happen without you.  Join us at MIX09 to help
> pave the way to the Next Web now. Learn more and register at
> http://ad.doubleclick.net/clk;208669438;13503038;i?http://2009.visitmix.com/
> _______________________________________________
> Gambas-user mailing list
> Gambas-user at lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/gambas-user
>
>
>   
Well, here is a very dirty tentative to show what could be done.
I don't really tested all the cases and it is surely not robust too!

I take 5 forms, each of one with a checkbox to simulate different user
input and 3 buttons, Back, Next and Cancel
the chaining is not totally linear as I understand your wizard is
The "stack" is a Gridview (sort of static array bidimensional) wich I
display on the main form after all the steps
the first column is the tag of the active form, and the others give the
status of the 5 checkboxes

hope this help
Dominique Simonart

-------------- next part --------------
A non-text attachment was scrubbed...
Name: TestWizard-0.0.1.tar.gz
Type: application/x-gzip
Size: 8956 bytes
Desc: not available
URL: <http://lists.gambas-basic.org/pipermail/user/attachments/20081212/e98e2360/attachment.bin>


More information about the User mailing list