1 #if defined(HAVE_CONFIG_H) && !defined(GEANYPY_WINDOWS)
2 # include "config.h"
3 #endif
4
5 #include "geanypy.h"
6
7 /* TODO: see if the TemplatePrefs members are safe to modify. */
8
9 typedef struct
10 {
11 PyObject_HEAD
12 GeanyTemplatePrefs *template_prefs;
13 } TemplatePrefs;
14
15
16 static void
TemplatePrefs_dealloc(TemplatePrefs * self)17 TemplatePrefs_dealloc(TemplatePrefs *self)
18 {
19 g_return_if_fail(self != NULL);
20 self->ob_type->tp_free((PyObject *) self);
21 }
22
23
24 static int
TemplatePrefs_init(TemplatePrefs * self)25 TemplatePrefs_init(TemplatePrefs *self)
26 {
27 g_return_val_if_fail(self != NULL, -1);
28 self->template_prefs = geany_data->template_prefs;
29 return 0;
30 }
31
32
33 static PyObject *
TemplatePrefs_get_property(TemplatePrefs * self,const gchar * prop_name)34 TemplatePrefs_get_property(TemplatePrefs *self, const gchar *prop_name)
35 {
36 g_return_val_if_fail(self != NULL, NULL);
37 g_return_val_if_fail(prop_name != NULL, NULL);
38
39 if (!self->template_prefs)
40 {
41 PyErr_SetString(PyExc_RuntimeError,
42 "TemplatePrefs instance not initialized properly");
43 return NULL;
44 }
45
46 if (g_str_equal(prop_name, "company"))
47 return PyString_FromString(self->template_prefs->company);
48 else if (g_str_equal(prop_name, "developer"))
49 return PyString_FromString(self->template_prefs->developer);
50 else if (g_str_equal(prop_name, "initials"))
51 return PyString_FromString(self->template_prefs->initials);
52 else if (g_str_equal(prop_name, "mail"))
53 return PyString_FromString(self->template_prefs->mail);
54 else if (g_str_equal(prop_name, "version"))
55 return PyString_FromString(self->template_prefs->version);
56
57 Py_RETURN_NONE;
58 }
59 GEANYPY_PROPS_READONLY(TemplatePrefs);
60
61
62 static PyGetSetDef TemplatePrefs_getseters[] = {
63 GEANYPY_GETSETDEF(TemplatePrefs, "company", ""),
64 GEANYPY_GETSETDEF(TemplatePrefs, "developer", ""),
65 GEANYPY_GETSETDEF(TemplatePrefs, "initials", ""),
66 GEANYPY_GETSETDEF(TemplatePrefs, "mail", "Email address"),
67 GEANYPY_GETSETDEF(TemplatePrefs, "version", "Initial version"),
68 { NULL }
69 };
70
71
72 static PyTypeObject TemplatePrefsType = {
73 PyObject_HEAD_INIT(NULL)
74 0, /* ob_size */
75 "geany.templates.TemplatePrefs", /* tp_name */
76 sizeof(TemplatePrefs), /* tp_basicsize */
77 0, /* tp_itemsize */
78 (destructor) TemplatePrefs_dealloc, /* tp_dealloc */
79 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* tp_print - tp_as_buffer */
80 Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, /* tp_flags */
81 "Wrapper around a GeanyTemplatePrefs structure.", /* tp_doc */
82 0, 0, 0, 0, 0, 0, 0, 0, /* tp_traverse - tp_members */
83 TemplatePrefs_getseters, /* tp_getset */
84 0, 0, 0, 0, 0, /* tp_base - tp_dictoffset */
85 (initproc) TemplatePrefs_init, /* tp_init */
86 0, 0, /* tp_alloc - tp_new */
87 };
88
89
90 static PyMethodDef TemplatePrefsModule_methods[] = { { NULL } };
91
92
inittemplates(void)93 PyMODINIT_FUNC inittemplates(void)
94 {
95 PyObject *m;
96
97 TemplatePrefsType.tp_new = PyType_GenericNew;
98 if (PyType_Ready(&TemplatePrefsType) < 0)
99 return;
100
101 m = Py_InitModule3("templates", TemplatePrefsModule_methods,
102 "Template information and management.");
103
104 Py_INCREF(&TemplatePrefsType);
105 PyModule_AddObject(m, "TemplatePrefs", (PyObject *) &TemplatePrefsType);
106 }
107