static void on_document_filetype_set(GObject *geany_object, GeanyDocument *doc, GeanyFiletype *filetype_old, SignalManager *man) { PyObject *py_doc, *py_ft; py_doc = (PyObject *) Document_create_new_from_geany_document(doc); py_ft = (PyObject *) Filetype_create_new_from_geany_filetype(filetype_old); g_signal_emit_by_name(man->obj, "document-filetype-set", py_doc, py_ft); Py_XDECREF(py_doc); Py_XDECREF(py_ft); }
static PyObject * Filetype_lookup_by_name(PyObject *self, PyObject *args, PyObject *kwargs) { GeanyFiletype *ft; gchar *filetype = NULL; static gchar *kwlist[] = { "name", NULL }; if (PyArg_ParseTupleAndKeywords(args, kwargs, "s", kwlist, &filetype)) { if (filetype && (ft = filetypes_lookup_by_name(filetype))) return (PyObject *) Filetype_create_new_from_geany_filetype(ft); } Py_RETURN_NONE; }
static PyObject * Filetype_index(PyObject *self, PyObject *args, PyObject *kwargs) { GeanyFiletype *ft; gint idx = -1; static gchar *kwlist[] = { "index", NULL }; if (PyArg_ParseTupleAndKeywords(args, kwargs, "i", kwlist, &idx)) { if ((ft = filetypes_index(idx))) return (PyObject *) Filetype_create_new_from_geany_filetype(ft); } Py_RETURN_NONE; }
static PyObject * Filetype_get_sorted_by_title(PyObject *self, PyObject *args) { const GSList *iter; PyObject *list; list = PyList_New(0); for (iter = geany_data->filetypes_by_title; iter != NULL; iter = g_slist_next(iter)) { if (!iter->data) continue; PyList_Append(list, (PyObject *) Filetype_create_new_from_geany_filetype((GeanyFiletype *) iter->data)); } return list; }
static PyObject * Filetype_get_sorted_by_name(PyObject *self) { const GSList *glist, *iter; PyObject *list; glist = filetypes_get_sorted_by_name(); list = PyList_New(0); for (iter = glist; iter != NULL; iter = g_slist_next(iter)) { if (!iter->data) continue; PyList_Append(list, (PyObject *) Filetype_create_new_from_geany_filetype((GeanyFiletype *) iter->data)); } return list; }
static PyObject * Filetype_get_property(Filetype *self, const gchar *prop_name) { g_return_val_if_fail(self != NULL, NULL); g_return_val_if_fail(prop_name != NULL, NULL); if (!self->ft) { PyErr_SetString(PyExc_RuntimeError, "Filetype instance not initialized properly"); return NULL; } if (g_str_equal(prop_name, "display_name")) GEANYPY_RETURN_STRING(filetypes_get_display_name(self->ft)) else if (g_str_equal(prop_name, "extension")) GEANYPY_RETURN_STRING(self->ft->extension) else if (g_str_equal(prop_name, "id")) return PyInt_FromLong((glong) self->ft->id); else if (g_str_equal(prop_name, "lang")) return PyInt_FromLong((glong) self->ft->lang); else if (g_str_equal(prop_name, "name")) GEANYPY_RETURN_STRING(self->ft->name) else if (g_str_equal(prop_name, "pattern")) { gint i, len; PyObject *list = PyList_New(0); if (self->ft->pattern) { len = g_strv_length(self->ft->pattern); for (i = 0; i < len; i++) PyList_Append(list, PyString_FromString(self->ft->pattern[i])); } return list; } else if (g_str_equal(prop_name, "title")) GEANYPY_RETURN_STRING(self->ft->title) #ifdef ENABLE_PRIVATE else if (g_str_equal(prop_name, "context_action_cmd")) GEANYPY_RETURN_STRING(self->ft->context_action_cmd) else if (g_str_equal(prop_name, "comment_open")) GEANYPY_RETURN_STRING(self->ft->comment_open) else if (g_str_equal(prop_name, "comment_use_indent")) { if (self->ft->comment_use_indent) Py_RETURN_TRUE; else Py_RETURN_FALSE; } else if (g_str_equal(prop_name, "group")) return PyInt_FromLong((glong) self->ft->group); else if (g_str_equal(prop_name, "error_regex_string")) return PyString_FromString(self->ft->error_regex_string); else if (g_str_equal(prop_name, "lexer_filetype")) { if (self->ft->lexer_filetype) return Filetype_create_new_from_geany_filetype(self->ft->lexer_filetype); } else if (g_str_equal(prop_name, "mime_type")) GEANYPY_RETURN_STRING(self->ft->lexer_filetype) else if (g_str_equal(prop_name, "icon")) { if (self->ft->icon) return (PyObject *) pygobject_new(G_OBJECT(self->ft->icon)); } else if (g_str_equal(prop_name, "comment_single")) GEANYPY_RETURN_STRING(self->ft->comment_single) else if (g_str_equal(prop_name, "indent_type")) return PyInt_FromLong((glong) self->ft->indent_type); else if (g_str_equal(prop_name, "indent_width")) return PyInt_FromLong((glong) self->ft->indent_width); #endif Py_RETURN_NONE; }
static PyObject * Document_get_property(Document *self, const gchar *prop_name) { g_return_val_if_fail(self != NULL, NULL); g_return_val_if_fail(prop_name != NULL, NULL); if (!self->doc) { PyErr_SetString(PyExc_RuntimeError, "Document instance not initialized properly"); return NULL; } if (!DOC_VALID(self->doc)) { PyErr_SetString(PyExc_RuntimeError, "Document is invalid"); return NULL; } if (g_str_equal(prop_name, "basename_for_display")) { PyObject *py_str = NULL; gchar *res_string; res_string = document_get_basename_for_display(self->doc, -1); if (!res_string) { PyErr_SetString(PyExc_RuntimeError, "Geany API failed to return a string"); Py_RETURN_NONE; } py_str = PyString_FromString(res_string); g_free(res_string); return py_str; } else if (g_str_equal(prop_name, "notebook_page")) return Py_BuildValue("i", document_get_notebook_page(self->doc)); else if (g_str_equal(prop_name, "status_color")) { const GdkColor *color = document_get_status_color(self->doc); if (!color) Py_RETURN_NONE; return Py_BuildValue("iii", color->red, color->green, color->blue); } else if (g_str_equal(prop_name, "editor") && self->doc->editor) { Editor *editor; if (self->doc->editor != NULL) { editor = Editor_create_new_from_geany_editor(self->doc->editor); return (PyObject *) editor; } Py_RETURN_NONE; } else if (g_str_equal(prop_name, "encoding") && self->doc->encoding) return PyString_FromString(self->doc->encoding); else if (g_str_equal(prop_name, "file_name") && self->doc->file_name) return PyString_FromString(self->doc->file_name); else if (g_str_equal(prop_name, "file_type") && self->doc->file_type) return (PyObject *) Filetype_create_new_from_geany_filetype(self->doc->file_type); else if (g_str_equal(prop_name, "has_bom")) { if (self->doc->has_bom) Py_RETURN_TRUE; else Py_RETURN_FALSE; } else if (g_str_equal(prop_name, "has_tags")) { if (self->doc->has_tags) Py_RETURN_TRUE; else Py_RETURN_FALSE; } else if (g_str_equal(prop_name, "index")) return Py_BuildValue("i", self->doc->index); else if (g_str_equal(prop_name, "is_valid")) { if (self->doc->is_valid) Py_RETURN_TRUE; else Py_RETURN_FALSE; } else if (g_str_equal(prop_name, "readonly")) { if (self->doc->readonly) Py_RETURN_TRUE; else Py_RETURN_FALSE; } else if (g_str_equal(prop_name, "real_path")) { if (self->doc->real_path) return PyString_FromString(self->doc->real_path); Py_RETURN_NONE; } else if (g_str_equal(prop_name, "text_changed")) { if (self->doc->changed) Py_RETURN_NONE; else Py_RETURN_NONE; } }