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