Revision: 4421
          http://tigervnc.svn.sourceforge.net/tigervnc/?rev=4421&view=rev
Author:   ossman_
Date:     2011-05-17 09:36:04 +0000 (Tue, 17 May 2011)

Log Message:
-----------
Add a callback mechanism to the options dialog so that other parts of vncviewer
can pick up on changes.

Modified Paths:
--------------
    trunk/vncviewer/OptionsDialog.cxx
    trunk/vncviewer/OptionsDialog.h

Modified: trunk/vncviewer/OptionsDialog.cxx
===================================================================
--- trunk/vncviewer/OptionsDialog.cxx   2011-05-17 03:06:24 UTC (rev 4420)
+++ trunk/vncviewer/OptionsDialog.cxx   2011-05-17 09:36:04 UTC (rev 4421)
@@ -42,6 +42,8 @@
 using namespace rdr;
 using namespace rfb;
 
+std::map<OptionsCallback*, void*> OptionsDialog::callbacks;
+
 OptionsDialog::OptionsDialog()
   : Fl_Window(450, 450, _("VNC Viewer: Connection Options"))
 {
@@ -101,6 +103,18 @@
 }
 
 
+void OptionsDialog::addCallback(OptionsCallback *cb, void *data)
+{
+  callbacks[cb] = data;
+}
+
+
+void OptionsDialog::removeCallback(OptionsCallback *cb)
+{
+  callbacks.erase(cb);
+}
+
+
 void OptionsDialog::show(void)
 {
   loadOptions();
@@ -333,6 +347,11 @@
   fullScreen.setParam(fullScreenCheckbox->value());
   useLocalCursor.setParam(localCursorCheckbox->value());
   dotWhenNoCursor.setParam(dotCursorCheckbox->value());
+
+  std::map<OptionsCallback*, void*>::const_iterator iter;
+
+  for (iter = callbacks.begin();iter != callbacks.end();++iter)
+    iter->first(iter->second);
 }
 
 

Modified: trunk/vncviewer/OptionsDialog.h
===================================================================
--- trunk/vncviewer/OptionsDialog.h     2011-05-17 03:06:24 UTC (rev 4420)
+++ trunk/vncviewer/OptionsDialog.h     2011-05-17 09:36:04 UTC (rev 4421)
@@ -19,12 +19,16 @@
 #ifndef __OPTIONSDIALOG_H__
 #define __OPTIONSDIALOG_H__
 
+#include <map>
+
 #include <FL/Fl_Window.H>
 #include <FL/Fl_Group.H>
 #include <FL/Fl_Check_Button.H>
 #include <FL/Fl_Round_Button.H>
 #include <FL/Fl_Int_Input.H>
 
+typedef void (OptionsCallback)(void*);
+
 class OptionsDialog : public Fl_Window {
 protected:
   OptionsDialog();
@@ -33,6 +37,9 @@
 public:
   static void showDialog(void);
 
+  static void addCallback(OptionsCallback *cb, void *data = NULL);
+  static void removeCallback(OptionsCallback *cb);
+
   void show(void);
 
 protected:
@@ -55,6 +62,8 @@
   static void handleOK(Fl_Widget *widget, void *data);
 
 protected:
+  static std::map<OptionsCallback*, void*> callbacks;
+
   /* Compression */
   Fl_Check_Button *autoselectCheckbox;
 


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

------------------------------------------------------------------------------
Achieve unprecedented app performance and reliability
What every C/C++ and Fortran developer should know.
Learn how Intel has extended the reach of its next-generation tools
to help boost performance applications - inlcuding clusters.
http://p.sf.net/sfu/intel-dev2devmay
_______________________________________________
Tigervnc-commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/tigervnc-commits

Reply via email to