]> Dogcows Code - chaz/openbox/blobdiff - src/config.cc
import the config module properly.
[chaz/openbox] / src / config.cc
index 6feb94b20520cbf2e53af745bf5a144aeb274d3e..b1495dc85a7d3b5f067755347c42fcf51f552b01 100644 (file)
@@ -6,8 +6,13 @@
 
 extern "C" {
 #include <Python.h>
+
+#include "gettext.h"
+#define _(str) gettext(str)
 }
 
+#include <cstring>
+
 namespace ob {
 
 static PyObject *obdict = NULL;
@@ -25,8 +30,9 @@ bool python_get_string(const char *name, otk::ustring *value)
 {
   PyObject *val = PyDict_GetItemString(obdict, const_cast<char*>(name));
   if (!(val && PyString_Check(val))) return false;
-  
-  *value = PyString_AsString(val);
+
+  std::string temp(PyString_AsString(val), PyString_Size(val));
+  *value = temp;
   return true;
 }
 
@@ -47,26 +53,36 @@ bool python_get_stringlist(const char *name, std::vector<otk::ustring> *value)
 
 Config::Config()
 {
-  PyRun_SimpleString("import config;");
   // set up access to the python global variables
-  PyObject *obmodule = PyImport_AddModule("config");
+  PyObject *obmodule = PyImport_ImportModule("config");
   obdict = PyModule_GetDict(obmodule);
+  Py_DECREF(obmodule);
 
-  std::vector<otk::ustring> names;
-  python_get_stringlist("DESKTOP_NAMES", &names);
+  python_get_stringlist("DESKTOP_NAMES", &desktop_names);
 
   python_get_string("THEME", &theme);
 
-  if (!python_get_string("TITLEBAR_LAYOUT", &titlebar_layout))
-    titlebar_layout = "NTIMC";
-  printf("LAYOUT %s\n", titlebar_layout.c_str());
+  if (!python_get_string("TITLEBAR_LAYOUT", &titlebar_layout)) {
+    fprintf(stderr, _("Unable to load config.%s\n"), "TITLEBAR_LAYOUT");
+    ::exit(1);
+  }
 
-  if (!python_get_long("DOUBLE_CLICK_DELAY", &double_click_delay))
-    double_click_delay = 300;
-  if (!python_get_long("DRAG_THRESHOLD", &drag_threshold))
-    drag_threshold = 3;
-  if (!python_get_long("NUMBER_OF_DESKTOPS", (long*)&num_desktops))
-    num_desktops = 1;
+  if (!python_get_long("DOUBLE_CLICK_DELAY", &double_click_delay)) {
+    fprintf(stderr, _("Unable to load config.%s\n"), "DOUBLE_CLICK_DELAY");
+    ::exit(1);
+  }
+  if (!python_get_long("DRAG_THRESHOLD", &drag_threshold)) {
+    fprintf(stderr, _("Unable to load config.%s\n"), "DRAG_THRESHOLD");
+    ::exit(1);
+  }
+  if (!python_get_long("NUMBER_OF_DESKTOPS", (long*)&num_desktops)) {
+    fprintf(stderr, _("Unable to load config.%s\n"), "NUMBER_OF_DESKTOPS");
+    ::exit(1);
+  }
+}
+
+Config::~Config()
+{
 }
 
 }
This page took 0.021406 seconds and 4 git commands to generate.