示例#1
0
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);
}
示例#2
0
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;
}
示例#3
0
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;
}
示例#4
0
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;
}
示例#5
0
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;
}
示例#6
0
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;
}
示例#7
0
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;
	}
}