[claws-mail-cvs-commit] clawsmailmodule.c

Holger Berndt <[email protected]> Wed, 19 Aug 2009 17:11:30 +0000
Newsgroups gmane.mail.sylpheed.claws.cvs
Message-ID <[email protected]>
Update of /srv/cvs/claws-mail/plugins/python/src
In directory ran:/tmp/cvs-serv23871/src

Modified Files:
      Tag: gtk2
	clawsmailmodule.c nodetype.c 
Log Message:
2009-08-19 [holger]	0.1cvs8

	* src/clawsmailmodule.c
	* src/nodetype.c
		Add basic interface to quicksearch 

Index: clawsmailmodule.c
===================================================================
RCS file: /srv/cvs/claws-mail/plugins/python/src/Attic/clawsmailmodule.c,v
retrieving revision 1.1.2.2
retrieving revision 1.1.2.3
diff -u -d -r1.1.2.2 -r1.1.2.3
--- clawsmailmodule.c	19 Aug 2009 16:49:25 -0000	1.1.2.2
+++ clawsmailmodule.c	19 Aug 2009 17:11:28 -0000	1.1.2.3
@@ -30,7 +30,10 @@
 #include <pygtk/pygtk.h>
 
 #include "mainwindow.h"
+#include "summaryview.h"
+#include "quicksearch.h"
 #include "toolbar.h"
+#include "prefs_common.h"
 
 #include <glib.h>
 
@@ -263,6 +266,48 @@
   return result;
 }
 
+static PyObject* quicksearch_search(PyObject *self, PyObject *args)
+{
+  const char *string;
+  int searchtype;
+  QuickSearch *qs;
+  MainWindow *mainwin;
+
+  /* must be given exactly one argument, which is a string */
+  searchtype = prefs_common.summary_quicksearch_type;
+  if(!PyArg_ParseTuple(args, "s|i", &string, &searchtype))
+    return NULL;
+
+  mainwin = mainwindow_get_mainwindow();
+  if(!mainwin || !mainwin->summaryview || !mainwin->summaryview->quicksearch) {
+    PyErr_SetString(PyExc_LookupError, "Quicksearch not found");
+    return NULL;
+  }
+
+  qs = mainwin->summaryview->quicksearch;
+  quicksearch_set(qs, searchtype, string);
+
+  Py_INCREF(Py_None);
+  return Py_None;
+}
+
+static PyObject* quicksearch_clear(PyObject *self, PyObject *args)
+{
+  QuickSearch *qs;
+  MainWindow *mainwin;
+
+  mainwin = mainwindow_get_mainwindow();
+  if(!mainwin || !mainwin->summaryview || !mainwin->summaryview->quicksearch) {
+    PyErr_SetString(PyExc_LookupError, "Quicksearch not found");
+    return NULL;
+  }
+
+  qs = mainwin->summaryview->quicksearch;
+  quicksearch_set(qs, prefs_common.summary_quicksearch_type, "");
+
+  Py_INCREF(Py_None);
+  return Py_None;
+}
 
 static PyMethodDef ClawsMailMethods[] = {
     /* public */
@@ -270,6 +315,8 @@
     {"get_folder_tree",  get_folder_tree, METH_VARARGS, "Get folder tree."},
     {"get_folderview_selected_folder",  get_folderview_selected_folder, METH_NOARGS, "Get selected folder in folderview."},
     {"folderview_select_folder",  folderview_select_folder, METH_VARARGS, "Select folder in folderview. Takes an argument of type Folder."},
+    {"quicksearch_search", quicksearch_search, METH_VARARGS, "Perform a quicksearch."},
+    {"quicksearch_clear", quicksearch_clear, METH_NOARGS, "Clear the quicksearch."},
 
      /* private */
      {"__gobj", private_wrap_gobj, METH_VARARGS, "Wraps a C GObject"},
@@ -277,6 +324,23 @@
     {NULL, NULL, 0, NULL}
 };
 
+static void initmiscstuff(PyObject *module)
+{
+  PyObject *dict;
+  PyObject *res;
+  const char *cmd =
+      "QUICK_SEARCH_SUBJECT = 0\n"
+      "QUICK_SEARCH_FROM = 1\n"
+      "QUICK_SEARCH_TO = 2\n"
+      "QUICK_SEARCH_EXTENDED = 3\n"
+      "QUICK_SEARCH_MIXED = 4\n"
+      "QUICK_SEARCH_TAG = 5\n"
+      "\n";
+  dict = PyModule_GetDict(module);
+  res = PyRun_String(cmd, Py_file_input, dict, dict);
+  Py_XDECREF(res);
+}
+
 void claws_mail_python_init(void)
 {
   if (!Py_IsInitialized())
@@ -290,5 +354,8 @@
   initcomposewindow(cm_module);
   initfolder(cm_module);
 
+  /* initialize misc things */
+  initmiscstuff(cm_module);
+
   PyRun_SimpleString("import clawsmail\n");
 }

Index: nodetype.c
===================================================================
RCS file: /srv/cvs/claws-mail/plugins/python/src/Attic/nodetype.c,v
retrieving revision 1.1.2.1
retrieving revision 1.1.2.2
diff -u -d -r1.1.2.1 -r1.1.2.2
--- nodetype.c	19 Aug 2009 16:49:26 -0000	1.1.2.1
+++ nodetype.c	19 Aug 2009 17:11:28 -0000	1.1.2.2
@@ -47,6 +47,12 @@
       "        for child in self.children:\n"
       "            str.extend(child.get_str_list(level+1))\n"
       "        return str\n"
+      "\n"
+      "    def traverse(self, callback):\n"
+      "        if self.data:\n"
+      "            callback(self.data)\n"
+      "        for child in self.children:\n"
+      "            child.traverse(callback)\n"
       "\n";
 
   dict = PyModule_GetDict(module);