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