Action entries del menú de formularios pasados a VnMod y aceleradores quitados de la definicion del modulo
This commit is contained in:
parent
2805237c3c
commit
15948e9158
|
@ -11,8 +11,7 @@
|
|||
translatable="yes"
|
||||
name="consulter"
|
||||
icon="system-run"
|
||||
action-name="open-consulter"
|
||||
accel="F1">Consulter</form>
|
||||
action-name="open-consulter">Consulter</form>
|
||||
</form-group>
|
||||
</module>
|
||||
|
||||
|
|
|
@ -18,5 +18,4 @@
|
|||
name CDATA #REQUIRED
|
||||
icon CDATA #IMPLIED
|
||||
action-name CDATA #IMPLIED
|
||||
accel CDATA #IMPLIED
|
||||
>
|
||||
|
|
25
vn/vn-gui.c
25
vn/vn-gui.c
|
@ -359,7 +359,7 @@ static void vn_gui_load_module (VnGui * obj, const gchar * dir, const gchar * fi
|
|||
g_hash_table_replace (obj->forms, g_strdup (name->str), iter);
|
||||
|
||||
if (g_strcmp0 ("", action_name->str))
|
||||
{//TODO Free this somewhere!
|
||||
{
|
||||
mod_actions[n].name = g_strdup (action_name->str);
|
||||
mod_actions[n].activate = vn_gui_on_open_form_activated;
|
||||
mod_actions[n].state = g_strconcat ("\"", name->str, "\"", NULL);
|
||||
|
@ -380,8 +380,8 @@ static void vn_gui_load_module (VnGui * obj, const gchar * dir, const gchar * fi
|
|||
gdome_str_unref (title);
|
||||
}
|
||||
|
||||
obj->mod_actions = g_slist_prepend (obj->mod_actions, mod_actions);
|
||||
obj->modules = g_slist_prepend (obj->modules, g_object_ref (mod));
|
||||
vn_mod_set_action_entries (mod, mod_actions);
|
||||
obj->modules = g_slist_prepend (obj->modules, mod);
|
||||
|
||||
gdome_str_unref (icon_str);
|
||||
gdome_str_unref (action_name_str);
|
||||
|
@ -392,7 +392,6 @@ static void vn_gui_load_module (VnGui * obj, const gchar * dir, const gchar * fi
|
|||
gdome_str_unref (name_str);
|
||||
gdome_str_unref (mod_title);
|
||||
gdome_nl_unref (nl, &e);
|
||||
// gdome_nl_unref (action_nl, &e);
|
||||
}
|
||||
|
||||
static VnWindow * vn_gui_add_window (VnGui * obj, GtkWindow * widget, GtkNotebook * notebook)
|
||||
|
@ -419,8 +418,7 @@ static VnWindow * vn_gui_add_window (VnGui * obj, GtkWindow * widget, GtkNoteboo
|
|||
,"has-subtitle", TRUE
|
||||
,"title", gtk_window_get_title (widget)
|
||||
,NULL);
|
||||
gtk_window_set_titlebar (widget,
|
||||
GTK_WIDGET (window->header));
|
||||
gtk_window_set_titlebar (widget, GTK_WIDGET (window->header));
|
||||
|
||||
button = gtk_menu_button_new ();
|
||||
g_action_map_add_action_entries (G_ACTION_MAP (window->widget),
|
||||
|
@ -438,12 +436,9 @@ static VnWindow * vn_gui_add_window (VnGui * obj, GtkWindow * widget, GtkNoteboo
|
|||
|
||||
// Loading the modules actions
|
||||
|
||||
for (n = obj->mod_actions; n; n = n->next)
|
||||
{
|
||||
GActionEntry * entries = n->data;
|
||||
for (n = obj->modules; n; n = n->next)
|
||||
g_action_map_add_action_entries (G_ACTION_MAP (window->widget),
|
||||
entries, -1, window);
|
||||
}
|
||||
vn_mod_get_action_entries (VN_MOD (n->data)), -1, window);
|
||||
|
||||
gtk_widget_show_all (GTK_WIDGET (widget));
|
||||
return window;
|
||||
|
@ -857,8 +852,6 @@ void vn_gui_open (VnGui * obj)
|
|||
obj->main_menu = gtk_builder_get (builder, "win-menu");
|
||||
section = gtk_builder_get (builder, "modules");
|
||||
|
||||
obj->modules = g_slist_reverse (obj->modules);
|
||||
|
||||
for (n = obj->modules; n; n = n->next)
|
||||
{
|
||||
VnMod * mod = VN_MOD (n->data);
|
||||
|
@ -1317,6 +1310,8 @@ static void vn_gui_set_property (VnGui * obj, guint id,
|
|||
}
|
||||
}
|
||||
|
||||
obj->modules = g_slist_reverse (obj->modules);
|
||||
|
||||
break;
|
||||
}
|
||||
default:
|
||||
|
@ -1355,7 +1350,7 @@ static void vn_gui_init (VnGui * obj)
|
|||
obj->data_dirs = NULL;
|
||||
obj->config_file = NULL;
|
||||
obj->main_menu = NULL;
|
||||
obj->mod_actions = NULL;
|
||||
// obj->mod_actions = NULL;
|
||||
obj->modules = NULL;
|
||||
|
||||
obj->forms = g_hash_table_new_full (
|
||||
|
@ -1379,7 +1374,7 @@ static void vn_gui_finalize (VnGui * obj)
|
|||
db_conn_close (obj->conn, FALSE);
|
||||
|
||||
g_hash_table_unref (obj->forms);
|
||||
g_slist_free_full (obj->mod_actions, g_free);
|
||||
// g_slist_free_full (obj->mod_actions, g_free);
|
||||
g_slist_free_full (obj->modules, g_object_unref);
|
||||
g_clear_object (&obj->conn);
|
||||
g_clear_object (&obj->tree);
|
||||
|
|
47
vn/vn-mod.c
47
vn/vn-mod.c
|
@ -23,6 +23,7 @@ struct _VnModPrivate
|
|||
gchar * data_dir;
|
||||
gchar * text_domain;
|
||||
GModule * module;
|
||||
GActionEntry * actions;
|
||||
};
|
||||
|
||||
G_DEFINE_TYPE (VnMod, vn_mod, G_TYPE_OBJECT);
|
||||
|
@ -95,6 +96,50 @@ GMenuModel * vn_mod_get_menu_model (VnMod * obj)
|
|||
return menu;
|
||||
}
|
||||
|
||||
/**
|
||||
* vn_mod_set_action_entries:
|
||||
* @obj: a #VnMod
|
||||
* @actions: a #GActionEntry array
|
||||
*
|
||||
* Sets the actions for the menu displayed for @obj.
|
||||
**/
|
||||
void vn_mod_set_action_entries (VnMod * obj, GActionEntry * actions)
|
||||
{
|
||||
g_return_if_fail (VN_IS_MOD (obj));
|
||||
|
||||
obj->priv->actions = actions;
|
||||
}
|
||||
|
||||
/**
|
||||
* vn_mod_get_action_entries:
|
||||
* @obj: a #VnMod
|
||||
*
|
||||
* Returns the actions for the menu displayed for @obj.
|
||||
*
|
||||
* Return value:(transfer none): a #GActionEntry
|
||||
**/
|
||||
const GActionEntry * vn_mod_get_action_entries (VnMod * obj)
|
||||
{
|
||||
g_return_if_fail (VN_IS_MOD (obj));
|
||||
|
||||
return obj->priv->actions;
|
||||
}
|
||||
|
||||
static void vn_mod_free_action_entry (VnMod * obj)
|
||||
{
|
||||
gint i;
|
||||
GActionEntry * actions = obj->priv->actions;
|
||||
|
||||
if (actions)
|
||||
for (i = 0; actions[i].name != NULL; i++)
|
||||
{
|
||||
g_free ((gchar *) actions[i].name);
|
||||
g_free ((gchar *) actions[i].state);
|
||||
}
|
||||
|
||||
g_free (actions);
|
||||
}
|
||||
|
||||
//+++++++++++++++++++++++++++++++++++++++++++++++++++ Properties
|
||||
|
||||
enum
|
||||
|
@ -163,6 +208,7 @@ static void vn_mod_init (VnMod * obj)
|
|||
obj->priv->data_dir = NULL;
|
||||
obj->priv->module = NULL;
|
||||
obj->priv->text_domain = NULL;
|
||||
obj->priv->actions = NULL;
|
||||
}
|
||||
|
||||
static void vn_mod_finalize (VnMod * obj)
|
||||
|
@ -170,6 +216,7 @@ static void vn_mod_finalize (VnMod * obj)
|
|||
g_free (obj->priv->name);
|
||||
g_free (obj->priv->data_dir);
|
||||
g_free (obj->priv->text_domain);
|
||||
vn_mod_free_action_entry (obj);
|
||||
G_OBJECT_CLASS (vn_mod_parent_class)->finalize (G_OBJECT (obj));
|
||||
}
|
||||
|
||||
|
|
14
vn/vn-mod.h
14
vn/vn-mod.h
|
@ -47,11 +47,13 @@ struct _VnModClass
|
|||
void (* activate) (VnMod * obj);
|
||||
};
|
||||
|
||||
GType vn_mod_get_type ();
|
||||
void vn_mod_activate (VnMod * obj);
|
||||
const gchar * vn_mod_get_name (VnMod * obj);
|
||||
const gchar * vn_mod_get_text_domain (VnMod * obj);
|
||||
const gchar * vn_mod_get_data_dir (VnMod * obj);
|
||||
GMenuModel * vn_mod_get_menu_model (VnMod * obj);
|
||||
GType vn_mod_get_type ();
|
||||
void vn_mod_activate (VnMod * obj);
|
||||
const gchar * vn_mod_get_name (VnMod * obj);
|
||||
const gchar * vn_mod_get_text_domain (VnMod * obj);
|
||||
const gchar * vn_mod_get_data_dir (VnMod * obj);
|
||||
GMenuModel * vn_mod_get_menu_model (VnMod * obj);
|
||||
void vn_mod_set_action_entries (VnMod * obj, GActionEntry * actions);
|
||||
const GActionEntry * vn_mod_get_action_entries (VnMod * obj);
|
||||
|
||||
#endif
|
Reference in New Issue