1 #if defined(HAVE_CONFIG_H) && !defined(GEANYPY_WINDOWS)
2 # include "config.h"
3 #endif
4
5 #include "geanypy.h"
6
7
8 static PyObject *
Msgwin_clear_tab(PyObject * module,PyObject * args,PyObject * kwargs)9 Msgwin_clear_tab(PyObject *module, PyObject *args, PyObject *kwargs)
10 {
11 gint tab_num = 0;
12 static gchar *kwlist[] = { "tabnum", NULL };
13
14 if (PyArg_ParseTupleAndKeywords(args, kwargs, "i", kwlist, &tab_num))
15 msgwin_clear_tab(tab_num);
16
17 Py_RETURN_NONE;
18 }
19
20
21 static PyObject *
Msgwin_compiler_add(PyObject * module,PyObject * args,PyObject * kwargs)22 Msgwin_compiler_add(PyObject *module, PyObject *args, PyObject *kwargs)
23 {
24 gint msg_color = COLOR_BLACK;
25 gchar *msg = NULL;
26 static gchar *kwlist[] = { "msg", "msg_color", NULL };
27
28 if (PyArg_ParseTupleAndKeywords(args, kwargs, "s|i", kwlist, &msg, &msg_color))
29 msgwin_compiler_add(msg_color, "%s", msg);
30
31 Py_RETURN_NONE;
32 }
33
34
35 static PyObject *
Msgwin_msg_add(PyObject * module,PyObject * args,PyObject * kwargs)36 Msgwin_msg_add(PyObject *module, PyObject *args, PyObject *kwargs)
37 {
38 gint msg_color = COLOR_BLACK, line = -1;
39 PyObject *obj = NULL;
40 Document *py_doc = NULL;
41 GeanyDocument *doc = NULL;
42 gchar *msg = NULL;
43 static gchar *kwlist[] = { "msg", "msg_color", "line", "doc", NULL };
44
45 if (PyArg_ParseTupleAndKeywords(args, kwargs, "s|iiO", kwlist, &msg,
46 &msg_color, &line, &obj))
47 {
48 if (obj == NULL || obj == Py_None)
49 doc = NULL;
50 else
51 {
52 py_doc = (Document *) obj;
53 doc = py_doc->doc;
54 }
55 msgwin_msg_add(msg_color, line, doc, "%s", msg);
56 }
57
58 Py_RETURN_NONE;
59 }
60
61
62 static PyObject *
Msgwin_set_messages_dir(PyObject * module,PyObject * args,PyObject * kwargs)63 Msgwin_set_messages_dir(PyObject *module, PyObject *args, PyObject *kwargs)
64 {
65 gchar *msgdir = NULL;
66 static gchar *kwlist[] = { "messages_dir", NULL };
67
68 if (PyArg_ParseTupleAndKeywords(args, kwargs, "s", kwlist, &msgdir))
69 {
70 if (msgdir != NULL)
71 msgwin_set_messages_dir(msgdir);
72 }
73
74 Py_RETURN_NONE;
75 }
76
77
78 static PyObject *
Msgwin_status_add(PyObject * module,PyObject * args,PyObject * kwargs)79 Msgwin_status_add(PyObject *module, PyObject *args, PyObject *kwargs)
80 {
81 gchar *msg = NULL;
82 static gchar *kwlist[] = { "msg", NULL };
83
84 if (PyArg_ParseTupleAndKeywords(args, kwargs, "s", kwlist, &msg))
85 {
86 if (msg != NULL)
87 msgwin_status_add("%s", msg);
88 }
89
90 Py_RETURN_NONE;
91 }
92
93
94 static PyObject *
Msgwin_switch_tab(PyObject * module,PyObject * args,PyObject * kwargs)95 Msgwin_switch_tab(PyObject *module, PyObject *args, PyObject *kwargs)
96 {
97 gint tabnum = 0, show = 0;
98 static gchar *kwlist[] = { "tabnum", "show", NULL };
99
100 if (PyArg_ParseTupleAndKeywords(args, kwargs, "i|i", kwlist, &tabnum, &show))
101 msgwin_switch_tab(tabnum, show);
102
103 Py_RETURN_NONE;
104 }
105
106
107 static
108 PyMethodDef MsgwinModule_methods[] = {
109 { "clear_tab", (PyCFunction) Msgwin_clear_tab, METH_KEYWORDS },
110 { "compiler_add", (PyCFunction) Msgwin_compiler_add, METH_KEYWORDS },
111 { "msg_add", (PyCFunction) Msgwin_msg_add, METH_KEYWORDS },
112 { "set_messages_dir", (PyCFunction) Msgwin_set_messages_dir, METH_KEYWORDS },
113 { "status_add", (PyCFunction) Msgwin_status_add, METH_KEYWORDS },
114 { "switch_tab", (PyCFunction) Msgwin_switch_tab, METH_KEYWORDS },
115 { NULL }
116 };
117
118
119 PyMODINIT_FUNC
initmsgwin(void)120 initmsgwin(void)
121 {
122 PyObject *m;
123
124 m = Py_InitModule3("msgwindow", MsgwinModule_methods,
125 "Message windows information and management.");
126
127 PyModule_AddIntConstant(m, "COLOR_RED", COLOR_RED);
128 PyModule_AddIntConstant(m, "COLOR_DARK_RED", COLOR_DARK_RED);
129 PyModule_AddIntConstant(m, "COLOR_BLACK", COLOR_BLACK);
130 PyModule_AddIntConstant(m, "COLOR_BLUE", COLOR_BLUE);
131
132 PyModule_AddIntConstant(m, "TAB_STATUS", MSG_STATUS);
133 PyModule_AddIntConstant(m, "TAB_COMPILER", MSG_COMPILER);
134 PyModule_AddIntConstant(m, "TAB_MESSAGE", MSG_MESSAGE);
135 PyModule_AddIntConstant(m, "TAB_SCRIBBLE", MSG_SCRATCH);
136 PyModule_AddIntConstant(m, "TAB_TERMINAL", MSG_VTE);
137 }
138