diff options
Diffstat (limited to 'plugins/pychrysalide/gui/panel.c')
-rw-r--r-- | plugins/pychrysalide/gui/panel.c | 623 |
1 files changed, 560 insertions, 63 deletions
diff --git a/plugins/pychrysalide/gui/panel.c b/plugins/pychrysalide/gui/panel.c index d9a2bc5..160a7a3 100644 --- a/plugins/pychrysalide/gui/panel.c +++ b/plugins/pychrysalide/gui/panel.c @@ -50,9 +50,24 @@ /* Accompagne la création d'une instance dérivée en Python. */ static PyObject *py_panel_item_new(PyTypeObject *, PyObject *, PyObject *); -/* Initialise la classe des panneaux pour l'interface graphique. */ +/* Initialise la classe des panneaux graphiques de l'éditeur. */ static void py_panel_item_init_gclass(GPanelItemClass *, gpointer); +/* Fournit une indication sur la personnalité du panneau. */ +static PanelItemPersonality py_panel_item_class_get_personality_wrapper(const GPanelItemClass *); + +/* Fournit une indication d'accroche du panneau au démarrage. */ +static bool py_panel_item_class_dock_at_startup_wrapper(const GPanelItemClass *); + +/* Détermine si un panneau peut être filtré. */ +static bool py_panel_item_class_can_search_wrapper(const GPanelItemClass *); + +/* Indique le chemin initial de la localisation d'un panneau. */ +static char *py_panel_item_class_get_path_wrapper(const GPanelItemClass *); + +/* Indique la définition d'un éventuel raccourci clavier. */ +static char *py_panel_item_class_get_key_bindings_wrapper(const GPanelItemClass *); + /* Initialise une instance sur la base du dérivé de GObject. */ static int py_panel_item_init(PyObject *self, PyObject *args, PyObject *kwds); @@ -67,18 +82,30 @@ static PyObject *py_panel_item_dock(PyObject *, PyObject *); /* Supprime un panneau de l'ensemble affiché. */ static PyObject *py_panel_item_undock(PyObject *, PyObject *); -/* Fournit le chemin d'accès à utiliser pour les encapsulations. */ -static PyObject *py_panel_item_get_named_widget(PyObject *, void *); - /* Fournit une indication sur la personnalité du panneau. */ static PyObject *py_panel_item_get_personality(PyObject *, void *); +/* Fournit une indication d'accroche du panneau au démarrage. */ +static PyObject *py_panel_item_get_dock_at_startup(PyObject *, void *); + +/* Définit si le composant repose sur un support de l'éditeur. */ +static int py_panel_item_set_dock_at_startup(PyObject *, PyObject *, void *); + +/* Détermine si un panneau peut être filtré. */ +static PyObject *py_panel_item_can_search(PyObject *, void *); + /* Fournit le chemin d'accès à utiliser pour les encapsulations. */ static PyObject *py_panel_item_get_path(PyObject *, void *); /* Définit le chemin d'accès à utiliser pour les encapsulations. */ static int py_panel_item_set_path(PyObject *, PyObject *, void *); +/* Indique la définition d'un éventuel raccourci clavier. */ +static PyObject *py_panel_item_get_key_bindings(PyObject *, void *); + +/* Fournit le chemin d'accès à utiliser pour les encapsulations. */ +static PyObject *py_panel_item_get_named_widget(PyObject *, void *); + /* Indique si le composant repose sur un support de l'éditeur. */ static PyObject *py_panel_item_get_docked(PyObject *, void *); @@ -157,7 +184,7 @@ static PyObject *py_panel_item_new(PyTypeObject *type, PyObject *args, PyObject * Paramètres : class = classe à initialiser. * * unused = données non utilisées ici. * * * -* Description : Initialise la classe des panneaux pour l'interface graphique.* +* Description : Initialise la classe des panneaux graphiques de l'éditeur. * * * * Retour : - * * * @@ -169,6 +196,317 @@ static void py_panel_item_init_gclass(GPanelItemClass *class, gpointer unused) { py_editor_item_init_gclass(G_EDITOR_ITEM_CLASS(class), NULL); + class->get_personality = py_panel_item_class_get_personality_wrapper; + class->dock_at_startup = py_panel_item_class_dock_at_startup_wrapper; + class->can_search = py_panel_item_class_can_search_wrapper; + class->get_path = py_panel_item_class_get_path_wrapper; + class->get_bindings = py_panel_item_class_get_key_bindings_wrapper; + +} + + +/****************************************************************************** +* * +* Paramètres : class = classe à consulter. * +* * +* Description : Fournit une indication sur la personnalité du panneau. * +* * +* Retour : Identifiant lié à la nature du panneau. * +* * +* Remarques : - * +* * +******************************************************************************/ + +static PanelItemPersonality py_panel_item_class_get_personality_wrapper(const GPanelItemClass *class) +{ + PanelItemPersonality result; /* Personnalité à retourner */ + PyGILState_STATE gstate; /* Sauvegarde d'environnement */ + PyTypeObject *pytype; /* Classe Python concernée */ + PyObject *value; /* Valeur d'attribut en Python */ + int ret; /* Bilan d'une conversion */ + +#define PANEL_ITEM_PERSONALITY_ATTRIB_WRAPPER PYTHON_GETTER_WRAPPER_DEF \ +( \ + _personality, \ + "Abstract attribute defining the initial rule for handling panel" \ + " creation.\n" \ + "\n" \ + "The result has to be a pychrysalide.gui.PanelItem.PanelItemPersonality"\ + " value.\n" \ + "\n" \ + "The default value is *PanelItem.PanelItemPersonality.SINGLETON*." \ +) + + result = PIP_SINGLETON; + + gstate = PyGILState_Ensure(); + + pytype = pygobject_lookup_class(G_TYPE_FROM_CLASS(class)); + + if (PyObject_HasAttrString((PyObject *)pytype, "_personality")) + { + value = PyObject_GetAttrString((PyObject *)pytype, "_personality"); + + if (value != NULL) + { + ret = convert_to_panel_item_personality(value, &result); + + if (ret != 1) + { + PyErr_Clear(); + result = PIP_OTHER; + } + + Py_DECREF(value); + + } + + } + + PyGILState_Release(gstate); + + return result; + +} + + +/****************************************************************************** +* * +* Paramètres : class = classe à consulter. * +* * +* Description : Fournit une indication d'accroche du panneau au démarrage. * +* * +* Retour : true si le panneau doit être affiché de prime abord. * +* * +* Remarques : - * +* * +******************************************************************************/ + +static bool py_panel_item_class_dock_at_startup_wrapper(const GPanelItemClass *class) +{ + bool result; /* Statut à retourner */ + PyGILState_STATE gstate; /* Sauvegarde d'environnement */ + PyTypeObject *pytype; /* Classe Python concernée */ + PyObject *value; /* Valeur d'attribut en Python */ + int ret; /* Bilan d'une conversion */ + +#define PANEL_ITEM_DOCK_AT_STARTUP_ATTRIB_WRAPPER PYTHON_GETTER_WRAPPER_DEF \ +( \ + _dock_at_startup, \ + "Abstract attribute defining if the panel should get docked" \ + " automatically at startup.\n" \ + "\n" \ + "The value has to be a boolean value: *True* or *False*.\n" \ + "\n" \ + "The default value is *True*." \ +) + + result = true; + + gstate = PyGILState_Ensure(); + + pytype = pygobject_lookup_class(G_TYPE_FROM_CLASS(class)); + + if (PyObject_HasAttrString((PyObject *)pytype, "_dock_at_startup")) + { + value = PyObject_GetAttrString((PyObject *)pytype, "_dock_at_startup"); + + if (value != NULL) + { + ret = PyBool_Check(value); + + if (ret) + result = (value == Py_True); + + Py_DECREF(value); + + } + + } + + PyGILState_Release(gstate); + + return result; + +} + + +/****************************************************************************** +* * +* Paramètres : class = classe à consulter. * +* * +* Description : Détermine si un panneau peut être filtré. * +* * +* Retour : Bilan de la consultation. * +* * +* Remarques : - * +* * +******************************************************************************/ + +static bool py_panel_item_class_can_search_wrapper(const GPanelItemClass *class) +{ + bool result; /* Statut à retourner */ + PyGILState_STATE gstate; /* Sauvegarde d'environnement */ + PyTypeObject *pytype; /* Classe Python concernée */ + PyObject *value; /* Valeur d'attribut en Python */ + int ret; /* Bilan d'une conversion */ + +#define PANEL_ITEM_CAN_SEARCH_ATTRIB_WRAPPER PYTHON_GETTER_WRAPPER_DEF \ +( \ + _can_search, \ + "Abstract attribute defining if the panel contains content which" \ + " can get searched.\n" \ + "\n" \ + "The value has to be a boolean value: *True* or *False*.\n" \ + "\n" \ + "The default value is *False*." \ +) + + result = false; + + gstate = PyGILState_Ensure(); + + pytype = pygobject_lookup_class(G_TYPE_FROM_CLASS(class)); + + if (PyObject_HasAttrString((PyObject *)pytype, "_can_search")) + { + value = PyObject_GetAttrString((PyObject *)pytype, "_can_search"); + + if (value != NULL) + { + ret = PyBool_Check(value); + + if (ret) + result = (value == Py_True); + + Py_DECREF(value); + + } + + } + + PyGILState_Release(gstate); + + return result; + +} + + +/****************************************************************************** +* * +* Paramètres : class = classe à consulter. * +* * +* Description : Indique le chemin initial de la localisation d'un panneau. * +* * +* Retour : Chemin fixé associé à la position initiale. * +* * +* Remarques : - * +* * +******************************************************************************/ + +static char *py_panel_item_class_get_path_wrapper(const GPanelItemClass *class) +{ + char *result; /* Désignation à retourner */ + PyGILState_STATE gstate; /* Sauvegarde d'environnement */ + PyTypeObject *pytype; /* Classe Python concernée */ + PyObject *value; /* Valeur d'attribut en Python */ + int ret; /* Bilan d'une conversion */ + +#define PANEL_ITEM_PATH_ATTRIB_WRAPPER PYTHON_GETTER_WRAPPER_DEF \ +( \ + _path, \ + "Abstract attribute used to provide the path to the initial" \ + " location of the panel item.\n" \ + "\n" \ + "The value has to be a string." \ +) + + result = NULL; + + gstate = PyGILState_Ensure(); + + pytype = pygobject_lookup_class(G_TYPE_FROM_CLASS(class)); + + if (PyObject_HasAttrString((PyObject *)pytype, "_path")) + { + value = PyObject_GetAttrString((PyObject *)pytype, "_path"); + + if (value != NULL) + { + ret = PyUnicode_Check(value); + + if (ret) + result = strdup(PyUnicode_AsUTF8(value)); + + Py_DECREF(value); + + } + + } + + PyGILState_Release(gstate); + + return result; + +} + + +/****************************************************************************** +* * +* Paramètres : class = classe à consulter. * +* * +* Description : Indique la définition d'un éventuel raccourci clavier. * +* * +* Retour : Description d'un raccourci ou NULL si aucun de défini. * +* * +* Remarques : - * +* * +******************************************************************************/ + +static char *py_panel_item_class_get_key_bindings_wrapper(const GPanelItemClass *class) +{ + char *result; /* Désignation à retourner */ + PyGILState_STATE gstate; /* Sauvegarde d'environnement */ + PyTypeObject *pytype; /* Classe Python concernée */ + PyObject *value; /* Valeur d'attribut en Python */ + int ret; /* Bilan d'une conversion */ + +#define PANEL_ITEM_BINDINGS_ATTRIB_WRAPPER PYTHON_GETTER_WRAPPER_DEF \ +( \ + _key_bindings, \ + "Abstract attribute used to provide an optional key bindings as" \ + " shortcuts for the panel item.\n" \ + "\n" \ + "The value has to be a string." \ +) + + result = NULL; + + gstate = PyGILState_Ensure(); + + pytype = pygobject_lookup_class(G_TYPE_FROM_CLASS(class)); + + if (PyObject_HasAttrString((PyObject *)pytype, "_key_bindings")) + { + value = PyObject_GetAttrString((PyObject *)pytype, "_key_bindings"); + + if (value != NULL) + { + ret = PyUnicode_Check(value); + + if (ret) + result = strdup(PyUnicode_AsUTF8(value)); + + Py_DECREF(value); + + } + + } + + PyGILState_Release(gstate); + + return result; + } @@ -188,55 +526,50 @@ static void py_panel_item_init_gclass(GPanelItemClass *class, gpointer unused) static int py_panel_item_init(PyObject *self, PyObject *args, PyObject *kwds) { - PanelItemPersonality personality; /* Nature du panneau */ GNamedWidget *widget; /* Composant visuel du panneau */ - int startup; /* Recommandation au démarrage */ - const char *path; /* Placement à l'affichage */ int ret; /* Bilan de lecture des args. */ GPanelItem *panel; /* Panneau à manipuler */ - static char *kwlist[] = { "personality", "widget", "dock", "path", NULL }; - #define PANEL_ITEM_DOC \ "PanelItem is an abstract class for panels available in the main GUI" \ " interface.\n" \ "\n" \ "Instances can be created using the following constructor:\n" \ "\n" \ - " PanelItem(personality, widget, dock, path)" \ + " PanelItem(widget)" \ "\n" \ "Where:\n" \ - "* personality defines how many instances of the panels can be created" \ - " at the same time.\n" \ "* widget is an implementation of the pychrysalide.glibext.NamedWidget" \ " interface (see pychrysalide.gtkext.BuiltNamedWidget for a ready-to-use" \ " helper).\n" \ - "* dock defines if the panel is docked by default.\n" \ - "* path states the location of the panel inside the main GUI.\n" \ - "\n" \ - "The easiest way to pass all this information is probably to use a" \ - " transitional dictionary inside the panel *__init__()* constructor:\n" \ - "\n" \ - " params = {\n" \ - " 'personality' : PanelItemPersonality.PIP_SINGLETON,\n" \ - " 'widget' : my_named_widget_instance,\n" \ - " 'dock' : True,\n" \ - " 'path' : 'MES'\n" \ - " }\n" \ - " super(MyPanel, self).__init__(**params)\n" \ "\n" \ "The PanelItem definition handles internally the supply of the *_widget*" \ " attribute for pychrysalide.gui.EditorItem.\n" \ "\n" \ + "Several items have to be defined as class attribute in the final class:\n" \ + "* pychrysalide.gui.PanelItem._path: path to the initial location of the" \ + " panel item;\n" \ + "* pychrysalide.gui.PanelItem._key_bindings: optional shortcut to show the" \ + " relative panel.\n" \ + "\n" \ + "Some extra items offer default values and thus may be defined as class" \ + " attribute in the final class:\n" \ + "* pychrysalide.gui.PanelItem._personality: rule for the panel creation;\n" \ + "* pychrysalide.gui.PanelItem._dock_at_startup: *True* if the panel should" \ + " get docked automatically at startup;\n" \ + "* pychrysalide.gui.PanelItem._can_search: True if the panel contains" \ + " content which can get searched.\n" \ + "\n" \ "For more details about the panel path, please refer to" \ - " pychrysalide.gtkext.GtkDockable." + " pychrysalide.gtkext.GtkDockable.\n" \ + "\n" \ + "Because panels aim to be created on demand by the Chrysalide core, calls" \ + " to the *__init__* constructor of this abstract object must expect no" \ + " particular argument." /* Récupération des paramètres */ - ret = PyArg_ParseTupleAndKeywords(args, kwds, "O&O&ps", kwlist, - convert_to_panel_item_personality, &personality, - convert_to_named_widget, &widget, - &startup, &path); + ret = PyArg_ParseTuple(args, "O&", convert_to_named_widget, &widget); if (!ret) return -1; /* Initialisation d'un objet GLib */ @@ -248,8 +581,6 @@ static int py_panel_item_init(PyObject *self, PyObject *args, PyObject *kwds) panel = G_PANEL_ITEM(pygobject_get(self)); - panel->personality = personality; - /** * Si Python ne voit plus la variable représentant le panneau utilisée, * il va la supprimer, ce qui va supprimer le composant GTK. @@ -260,9 +591,6 @@ static int py_panel_item_init(PyObject *self, PyObject *args, PyObject *kwds) panel->widget = widget; g_object_ref(G_OBJECT(widget)); - panel->dock_at_startup = startup; - panel->path = strdup(path); - return 0; } @@ -345,32 +673,31 @@ static PyObject *py_panel_item_undock(PyObject *self, PyObject *args) * Paramètres : self = objet Python concerné par l'appel. * * closure = non utilisé ici. * * * -* Description : Fournit le chemin d'accès à utiliser pour les encapsulations.* +* Description : Fournit une indication sur la personnalité du panneau. * * * -* Retour : Chemin d'accès défini. * +* Retour : Identifiant lié à la nature du panneau. * * * * Remarques : - * * * ******************************************************************************/ -static PyObject *py_panel_item_get_named_widget(PyObject *self, void *closure) +static PyObject *py_panel_item_get_personality(PyObject *self, void *closure) { PyObject *result; /* Valeur à retourner */ GPanelItem *item; /* Panneau à consulter */ - GNamedWidget *widget; /* Composant nommé à transférer*/ + PanelItemPersonality personality; /* Valeur native à convertir */ -#define PANEL_ITEM_NAMED_WIDGET_ATTRIB PYTHON_GET_DEF_FULL \ -( \ - named_widget, py_panel_item, \ - "Named widget as core component of the panel item." \ +#define PANEL_ITEM_PERSONALITY_ATTRIB PYTHON_GET_DEF_FULL \ +( \ + personality, py_panel_item, \ + "Rule for handling panel creations, as a" \ + " pychrysalide.gui.PanelItem.PanelItemPersonality value." \ ) item = G_PANEL_ITEM(pygobject_get(self)); - widget = gtk_panel_item_get_named_widget(item); - - result = pygobject_new(G_OBJECT(widget)); + personality = gtk_panel_item_class_get_personality(G_PANEL_ITEM_GET_CLASS(item)); - g_object_unref(G_OBJECT(widget)); + result = cast_with_constants_group_from_type(get_python_panel_item_type(), "PanelItemPersonality", personality); return result; @@ -382,31 +709,102 @@ static PyObject *py_panel_item_get_named_widget(PyObject *self, void *closure) * Paramètres : self = objet Python concerné par l'appel. * * closure = non utilisé ici. * * * -* Description : Fournit une indication sur la personnalité du panneau. * +* Description : Fournit une indication d'accroche du panneau au démarrage. * * * -* Retour : Identifiant lié à la nature du panneau. * +* Retour : True si le panneau doit être affiché de prime abord. * * * * Remarques : - * * * ******************************************************************************/ -static PyObject *py_panel_item_get_personality(PyObject *self, void *closure) +static PyObject *py_panel_item_get_dock_at_startup(PyObject *self, void *closure) { PyObject *result; /* Valeur à retourner */ GPanelItem *item; /* Panneau à consulter */ - PanelItemPersonality personality; /* Valeur native à convertir */ + bool state; /* Indication d'ancrage */ + +#define PANEL_ITEM_DOCK_AT_STARTUP_ATTRIB PYTHON_GETSET_DEF_FULL \ +( \ + dock_at_startup, py_panel_item, \ + "Tell or define if the panel should get docked automatically at" \ + " startup.\n" \ + "\n" \ + "This state is a boolean value: *True* or *False*." \ +) -#define PANEL_ITEM_PERSONALITY_ATTRIB PYTHON_GET_DEF_FULL \ -( \ - personality, py_panel_item, \ - "Rule for handling panel creations, as a" \ - " pychrysalide.gui.PanelItem.PanelItemPersonality value." \ + item = G_PANEL_ITEM(pygobject_get(self)); + state = gtk_panel_item_class_dock_at_startup(G_PANEL_ITEM_GET_CLASS(item)); + + result = state ? Py_True : Py_False; + Py_INCREF(result); + + return result; + +} + + +/****************************************************************************** +* * +* Paramètres : self = objet Python concerné par l'appel. * +* value = valeur fournie à intégrer ou prendre en compte. * +* closure = adresse non utilisée ici. * +* * +* Description : Définit si le composant repose sur un support de l'éditeur. * +* * +* Retour : Bilan de l'opération. * +* * +* Remarques : - * +* * +******************************************************************************/ + +static int py_panel_item_set_dock_at_startup(PyObject *self, PyObject *value, void *closure) +{ + GPanelItem *item; /* Panneau à manipuler */ + + if (!PyBool_Check(value)) + return -1; + + item = G_PANEL_ITEM(pygobject_get(self)); + + g_panel_item_set_dock_at_startup(item, value == Py_True); + + return 0; + +} + + +/****************************************************************************** +* * +* Paramètres : self = objet Python concerné par l'appel. * +* closure = non utilisé ici. * +* * +* Description : Détermine si un panneau peut être filtré. * +* * +* Retour : Bilan de la consultation. * +* * +* Remarques : - * +* * +******************************************************************************/ + +static PyObject *py_panel_item_can_search(PyObject *self, void *closure) +{ + PyObject *result; /* Valeur à retourner */ + GPanelItem *item; /* Panneau à consulter */ + bool status; /* Capacité de recherche */ + +#define PANEL_ITEM_CAN_SEARCH_ATTRIB PYTHON_CAN_DEF_FULL \ +( \ + search, py_panel_item, \ + "Define if the panel contains content which can get searched.\n" \ + "\n" \ + "The result is a boolean value: *True* or *False*.\n" \ ) item = G_PANEL_ITEM(pygobject_get(self)); - personality = gtk_panel_item_get_personality(item); + status = gtk_panel_item_class_can_search(G_PANEL_ITEM_GET_CLASS(item)); - result = cast_with_constants_group_from_type(get_python_panel_item_type(), "PanelItemPersonality", personality); + result = status ? Py_True : Py_False; + Py_INCREF(result); return result; @@ -430,19 +828,23 @@ static PyObject *py_panel_item_get_path(PyObject *self, void *closure) { PyObject *result; /* Valeur à retourner */ GPanelItem *item; /* Panneau à consulter */ - const char *path; /* Chemin d'accès courant */ + char *path; /* Chemin d'accès courant */ #define PANEL_ITEM_PATH_ATTRIB PYTHON_GETSET_DEF_FULL \ ( \ path, py_panel_item, \ "Get or define the current path of the panel item." \ + "\n" \ + "The path is defined as a string." \ ) item = G_PANEL_ITEM(pygobject_get(self)); - path = gtk_panel_item_get_path(item); + path = gtk_panel_item_class_get_path(G_PANEL_ITEM_GET_CLASS(item)); result = PyUnicode_FromString(path); + free(path); + return result; } @@ -486,6 +888,91 @@ static int py_panel_item_set_path(PyObject *self, PyObject *value, void *closure * Paramètres : self = objet Python concerné par l'appel. * * closure = non utilisé ici. * * * +* Description : Indique la définition d'un éventuel raccourci clavier. * +* * +* Retour : Description d'un raccourci ou None si aucun de défini. * +* * +* Remarques : - * +* * +******************************************************************************/ + +static PyObject *py_panel_item_get_key_bindings(PyObject *self, void *closure) +{ + PyObject *result; /* Valeur à retourner */ + GPanelItem *item; /* Panneau à consulter */ + char *bindings; /* Raccourci clavier éventuel */ + +#define PANEL_ITEM_KEY_BINDINGS_ATTRIB PYTHON_GET_DEF_FULL \ +( \ + key_bindings, py_panel_item, \ + "Shortcuts for displaying the panel, as a string, or *None* if" \ + " no binding is defined." \ +) + + item = G_PANEL_ITEM(pygobject_get(self)); + bindings = gtk_panel_item_class_get_key_bindings(G_PANEL_ITEM_GET_CLASS(item)); + + if (bindings != NULL) + { + result = PyUnicode_FromString(bindings); + free(bindings); + } + else + { + result = Py_None; + Py_INCREF(result); + } + + return result; + +} + + +/****************************************************************************** +* * +* Paramètres : self = objet Python concerné par l'appel. * +* closure = non utilisé ici. * +* * +* Description : Fournit le chemin d'accès à utiliser pour les encapsulations.* +* * +* Retour : Chemin d'accès défini. * +* * +* Remarques : - * +* * +******************************************************************************/ + +static PyObject *py_panel_item_get_named_widget(PyObject *self, void *closure) +{ + PyObject *result; /* Valeur à retourner */ + GPanelItem *item; /* Panneau à consulter */ + GNamedWidget *widget; /* Composant nommé à transférer*/ + +#define PANEL_ITEM_NAMED_WIDGET_ATTRIB PYTHON_GET_DEF_FULL \ +( \ + named_widget, py_panel_item, \ + "Named widget as core component of the panel item.\n" \ + "\n" \ + "The result is an implementation of the" \ + " pychrysalide.glibext.NamedWidget interface." \ +) + + item = G_PANEL_ITEM(pygobject_get(self)); + widget = gtk_panel_item_get_named_widget(item); + + result = pygobject_new(G_OBJECT(widget)); + + g_object_unref(G_OBJECT(widget)); + + return result; + +} + + +/****************************************************************************** +* * +* Paramètres : self = objet Python concerné par l'appel. * +* closure = non utilisé ici. * +* * * Description : Indique si le composant repose sur un support de l'éditeur. * * * * Retour : True si le composant est bien incrusté quelque part. * @@ -503,7 +990,9 @@ static PyObject *py_panel_item_get_docked(PyObject *self, void *closure) #define PANEL_ITEM_DOCKED_ATTRIB PYTHON_GET_DEF_FULL \ ( \ docked, py_panel_item, \ - "Dock status of the panel item." \ + "Dock status of the panel item.\n" \ + "\n" \ + "The result is a boolean value: *True* or *False*." \ ) item = G_PANEL_ITEM(pygobject_get(self)); @@ -538,9 +1027,17 @@ PyTypeObject *get_python_panel_item_type(void) }; static PyGetSetDef py_panel_item_getseters[] = { - PANEL_ITEM_NAMED_WIDGET_ATTRIB, + PANEL_ITEM_PERSONALITY_ATTRIB_WRAPPER, + PANEL_ITEM_DOCK_AT_STARTUP_ATTRIB_WRAPPER, + PANEL_ITEM_CAN_SEARCH_ATTRIB_WRAPPER, + PANEL_ITEM_PATH_ATTRIB_WRAPPER, + PANEL_ITEM_BINDINGS_ATTRIB_WRAPPER, PANEL_ITEM_PERSONALITY_ATTRIB, + PANEL_ITEM_DOCK_AT_STARTUP_ATTRIB, + PANEL_ITEM_CAN_SEARCH_ATTRIB, PANEL_ITEM_PATH_ATTRIB, + PANEL_ITEM_KEY_BINDINGS_ATTRIB, + PANEL_ITEM_NAMED_WIDGET_ATTRIB, PANEL_ITEM_DOCKED_ATTRIB, { NULL } }; |