Revision: 6655
          http://playerstage.svn.sourceforge.net/playerstage/?rev=6655&view=rev
Author:   jeremy_asher
Date:     2008-06-20 12:20:15 -0700 (Fri, 20 Jun 2008)

Log Message:
-----------
More options dlg changes

Modified Paths:
--------------
    code/stage/trunk/libstage/options_dlg.cc
    code/stage/trunk/libstage/options_dlg.hh
    code/stage/trunk/libstage/stage.hh
    code/stage/trunk/libstage/worldgui.cc

Modified: code/stage/trunk/libstage/options_dlg.cc
===================================================================
--- code/stage/trunk/libstage/options_dlg.cc    2008-06-20 07:21:47 UTC (rev 
6654)
+++ code/stage/trunk/libstage/options_dlg.cc    2008-06-20 19:20:15 UTC (rev 
6655)
@@ -2,10 +2,9 @@
 #include <FL/Fl.H>
 
 
-OptionsDlg::OptionsDlg( const std::vector<Option>& opts, Fl_Callback* cb, int 
w, int h ) :
-Fl_Window( w, h, "Options" ),
-options( opts ),
-changedCb( cb ) {
+OptionsDlg::OptionsDlg( const std::vector<Option>& opts, int w, int h ) :
+Fl_Window( w, h, "Model Options" ),
+options( opts ) {
        const int hm = w/6;
        const int vm = 2;
        const int btnH = 25;
@@ -45,12 +44,25 @@
        int item = oDlg->scroll->find( check );
        oDlg->options[ item ].set( check->value() );
        oDlg->changedItem = oDlg->options[ item ];
-       oDlg->changedCb( oDlg, NULL );
+       oDlg->do_callback();
 }
 
 void OptionsDlg::applyAllPress( Fl_Widget* w, void* p ) {
        OptionsDlg* oDlg = static_cast<OptionsDlg*>( p );
        
        oDlg->changedItem = Option( -1, "", false );
-       oDlg->changedCb( oDlg, NULL );
+       oDlg->do_callback();
 }
+
+int OptionsDlg::handle( int event ) {
+       switch ( event ) {
+               case FL_SHORTCUT:
+                       if ( Fl::event_key() == FL_Escape ) {
+                               hide();
+                               return 1;
+                       }
+                       break;
+       }
+       
+       return Fl_Window::handle( event );
+}
\ No newline at end of file

Modified: code/stage/trunk/libstage/options_dlg.hh
===================================================================
--- code/stage/trunk/libstage/options_dlg.hh    2008-06-20 07:21:47 UTC (rev 
6654)
+++ code/stage/trunk/libstage/options_dlg.hh    2008-06-20 19:20:15 UTC (rev 
6655)
@@ -12,9 +12,9 @@
 
 class Option {
 private:
+       int index;
        std::string optName;
        bool value;
-       int index;
 public:
        Option() { }
        Option( int i, std::string n, bool v ) : index( i ), optName( n ), 
value( v ) { }
@@ -31,17 +31,18 @@
        std::vector<Option> options;
        Fl_Scroll* scroll;
        Fl_Button* button;
-       Fl_Callback* changedCb;
+       virtual int OptionsDlg::handle( int event );
        static void checkChanged( Fl_Widget* w, void* p );
        static void applyAllPress( Fl_Widget* w, void* p );
        Option changedItem;
 public:
-       OptionsDlg( const std::vector<Option>& opts, Fl_Callback* cb, int w, 
int h );
-       //void setChangeCb( Fl_Callback* cb ) { changedCb=cb; }
+       OptionsDlg( const std::vector<Option>& opts, int w, int h );
        virtual ~OptionsDlg();
        void display(); 
-
+       void callback( Fl_Callback* cb, void* p ) { Fl_Window::callback( cb, p 
); }
+       //void setChangeCb( Fl_Callback* cb, void* p );
        const Option changed() const { return changedItem; }
+       void hide() { Fl_Window::hide(); }
 };
 
 #endif

Modified: code/stage/trunk/libstage/stage.hh
===================================================================
--- code/stage/trunk/libstage/stage.hh  2008-06-20 07:21:47 UTC (rev 6654)
+++ code/stage/trunk/libstage/stage.hh  2008-06-20 19:20:15 UTC (rev 6655)
@@ -2038,8 +2038,8 @@
   static void HelpAboutCallback( Fl_Widget* wid );
   static void view_toggle_cb( Fl_Menu_Bar* menubar, StgCanvas* canvas );
   static void WindowCallback( Fl_Widget* wid, StgWorldGui* world );
-  static void optionsDlgCb( Fl_Widget* w, StgCanvas* canvas );
-  static void optionChangeCb( Fl_Widget* w, void* p );
+  static void openOptionsCb( Fl_Widget* w, void* p );
+  static void optionsDlgCb( Fl_Widget* w, void* p );
   
        bool SaveAsDialog();
        bool CloseWindowQuery();

Modified: code/stage/trunk/libstage/worldgui.cc
===================================================================
--- code/stage/trunk/libstage/worldgui.cc       2008-06-20 07:21:47 UTC (rev 
6654)
+++ code/stage/trunk/libstage/worldgui.cc       2008-06-20 19:20:15 UTC (rev 
6655)
@@ -185,7 +185,7 @@
        mbar->add( MITEM_VIEW_BLOCKSRISING,    FL_CTRL+'t', 
(Fl_Callback*)view_toggle_cb, (void*)canvas, 
                        FL_MENU_TOGGLE| (canvas->showflags & STG_SHOW_TRAILRISE 
? FL_MENU_VALUE : 0 ));
        
-       mbar->add( "View/&Options", FL_CTRL + 'o', (Fl_Callback *)optionsDlgCb, 
canvas );
+       mbar->add( "View/&Options", FL_CTRL + 'o', (Fl_Callback 
*)openOptionsCb, canvas );
 
        mbar->add( "&Help", 0, 0, 0, FL_SUBMENU );
        mbar->add( "Help/&About Stage...", 0, (Fl_Callback *)About_cb, this );
@@ -504,23 +504,34 @@
        //printf( "value: %d\n", item->value() );
 }
 
-void StgWorldGui::optionsDlgCb( Fl_Widget* w, StgCanvas* canvas ) {
+void StgWorldGui::openOptionsCb( Fl_Widget* w, void* p ) {
+       StgWorldGui* worldGui = static_cast<StgWorldGui*>( p );
+       
        std::vector<Option> options;
        for (int i=0; i<10; i++) {
                Option o( i, "Option", i%2*true );
-               options.push_back(o);
+               options.push_back( o );
        }
        
+       OptionsDlg oDlg( options, 180, 250 );
+       oDlg.callback( optionsDlgCb, worldGui );
+       oDlg.display();
        
-       OptionsDlg oDlg( options, optionChangeCb, 180, 250 );
-       oDlg.display();
+       printf("Dialog callback ended\n");
 }
 
-void StgWorldGui::optionChangeCb( Fl_Widget* w, void* p ) {
+void StgWorldGui::optionsDlgCb( Fl_Widget* w, void* p ) {
        OptionsDlg* oDlg = static_cast<OptionsDlg*>( w );
-       Option o = oDlg->changed();
-       printf( "\"%s\"[%d] changed to %d!\n", o.name().c_str(), o.id(), 
o.val() );
-       // update flag(s)
+       StgWorldGui* worldGui = static_cast<StgWorldGui*>( p );
+       switch ( Fl::event() ) {
+               case FL_CLOSE: // clicked close button
+                       oDlg->hide();
+                       return;
+               default:
+                       Option o = oDlg->changed();
+                       printf( "\"%s\"[%d] changed to %d!\n", 
o.name().c_str(), o.id(), o.val() );                     
+                       // update flag(s)
+       }
 }
 
 void StgWorldGui::About_cb( Fl_Widget*, StgWorldGui* world ) 


This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.

-------------------------------------------------------------------------
Check out the new SourceForge.net Marketplace.
It's the best place to buy or sell services for
just about anything Open Source.
http://sourceforge.net/services/buy/index.php
_______________________________________________
Playerstage-commit mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/playerstage-commit

Reply via email to