]> git.mxchange.org Git - flightgear.git/blobdiff - src/GUI/dialog.cxx
Merge branch 'tat/configure' into next
[flightgear.git] / src / GUI / dialog.cxx
index e72275f91f15fed091f6f053df49793599628cd6..449979e7ede5775f2cb92dd3a0f428ec4fb5b8fe 100644 (file)
@@ -4,7 +4,7 @@
 #  include "config.h"
 #endif
 
-#include <Input/input.hxx>
+#include <simgear/structure/SGBinding.hxx>
 #include <Scripting/NasalSys.hxx>
 #include <Main/fg_os.hxx>
 
@@ -17,6 +17,8 @@
 
 enum format_type { f_INVALID, f_INT, f_LONG, f_FLOAT, f_DOUBLE, f_STRING };
 static const int FORMAT_BUFSIZE = 255;
+static const int RESIZE_MARGIN = 7;
+
 
 /**
  * Makes sure the format matches '%[ -+#]?\d*(\.\d*)?(l?[df]|s)', with
@@ -235,8 +237,8 @@ int fgPopup::checkHit(int button, int updown, int x, int y)
 
         _resizing = 0;
         if (!global_drag && _resizable) {
-            int hmargin = global_resize ? _dlgW / 3 : 10;
-            int vmargin = global_resize ? _dlgH / 3 : 10;
+            int hmargin = global_resize ? _dlgW / 3 : RESIZE_MARGIN;
+            int vmargin = global_resize ? _dlgH / 3 : RESIZE_MARGIN;
 
             if (y - _dlgY < vmargin)
                 _resizing |= BOTTOM;
@@ -388,6 +390,7 @@ action_callback (puObject *object)
 static void
 copy_to_pui (SGPropertyNode *node, puObject *object)
 {
+    using namespace simgear;
     GUIInfo *info = (GUIInfo *)object->getUserData();
     if (!info) {
         SG_LOG(SG_GENERAL, SG_ALERT, "dialog: widget without GUIInfo!");
@@ -407,13 +410,13 @@ copy_to_pui (SGPropertyNode *node, puObject *object)
     }
 
     switch (node->getType()) {
-    case SGPropertyNode::BOOL:
-    case SGPropertyNode::INT:
-    case SGPropertyNode::LONG:
+    case props::BOOL:
+    case props::INT:
+    case props::LONG:
         object->setValue(node->getIntValue());
         break;
-    case SGPropertyNode::FLOAT:
-    case SGPropertyNode::DOUBLE:
+    case props::FLOAT:
+    case props::DOUBLE:
         object->setValue(node->getFloatValue());
         break;
     default:
@@ -427,18 +430,19 @@ copy_to_pui (SGPropertyNode *node, puObject *object)
 static void
 copy_from_pui (puObject *object, SGPropertyNode *node)
 {
+    using namespace simgear;
     // puText objects are immutable, so should not be copied out
     if (object->getType() & PUCLASS_TEXT)
         return;
 
     switch (node->getType()) {
-    case SGPropertyNode::BOOL:
-    case SGPropertyNode::INT:
-    case SGPropertyNode::LONG:
+    case props::BOOL:
+    case props::INT:
+    case props::LONG:
         node->setIntValue(object->getIntegerValue());
         break;
-    case SGPropertyNode::FLOAT:
-    case SGPropertyNode::DOUBLE:
+    case props::FLOAT:
+    case props::DOUBLE:
         node->setFloatValue(object->getFloatValue());
         break;
     default:
@@ -468,7 +472,8 @@ FGDialog::FGDialog (SGPropertyNode *props) :
         if (open) {
             const char *s = open->getStringValue();
             FGNasalSys *nas = (FGNasalSys *)globals->get_subsystem("nasal");
-            nas->createModule(_module.c_str(), _module.c_str(), s, strlen(s), props);
+            if (nas)
+                nas->createModule(_module.c_str(), _module.c_str(), s, strlen(s), props);
         }
     }
     display(props);
@@ -482,11 +487,13 @@ FGDialog::~FGDialog ()
     _props->setIntValue("lasty", y);
 
     FGNasalSys *nas = (FGNasalSys *)globals->get_subsystem("nasal");
-    if (_nasal_close) {
-        const char *s = _nasal_close->getStringValue();
-        nas->createModule(_module.c_str(), _module.c_str(), s, strlen(s), _props);
+    if (nas) {
+        if (_nasal_close) {
+            const char *s = _nasal_close->getStringValue();
+            nas->createModule(_module.c_str(), _module.c_str(), s, strlen(s), _props);
+        }
+        nas->deleteModule(_module.c_str());
     }
-    nas->deleteModule(_module.c_str());
 
     puDeleteObject(_object);
 
@@ -1048,8 +1055,9 @@ FGDialog::getKeyCode(const char *str)
             key = toupper(key);
         if (mod & CTRL)
             key = toupper(key) - '@';
-        if (mod & ALT)
+        /* if (mod & ALT)
             ;   // Alt not propagated to the gui
+        */
     } else {
         for (char *t = s; *t; t++)
             *t = tolower(*t);