[tepl] AmtkFactory: add functions to create GtkCheckMenuItem's
- From: Sébastien Wilmet <swilmet src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [tepl] AmtkFactory: add functions to create GtkCheckMenuItem's
- Date: Thu, 10 Aug 2017 16:15:09 +0000 (UTC)
commit 0b6a5bde1e5708bcbddda3e5e678c0b8680e6dce
Author: Sébastien Wilmet <swilmet gnome org>
Date: Thu Aug 10 17:44:22 2017 +0200
AmtkFactory: add functions to create GtkCheckMenuItem's
amtk/amtk-factory.c | 149 +++++++++++++++++++++++++---------
amtk/amtk-factory.h | 7 ++
docs/reference/tepl-3.0-sections.txt | 2 +
3 files changed, 118 insertions(+), 40 deletions(-)
---
diff --git a/amtk/amtk-factory.c b/amtk/amtk-factory.c
index 2b1b9dd..cc9caa9 100644
--- a/amtk/amtk-factory.c
+++ b/amtk/amtk-factory.c
@@ -441,6 +441,60 @@ common_create (AmtkFactory *factory,
}
static AmtkActionInfo *
+common_create_menu_item (AmtkFactory *factory,
+ const gchar *action_name,
+ AmtkFactoryFlags flags,
+ GtkMenuItem **menu_item)
+{
+ AmtkActionInfo *action_info;
+ const gchar * const *accels;
+ const gchar *tooltip;
+
+ action_info = common_create (factory, action_name, flags, (GtkWidget **)menu_item);
+ if (action_info == NULL)
+ {
+ return NULL;
+ }
+
+ if ((flags & AMTK_FACTORY_IGNORE_LABEL) == 0)
+ {
+ gtk_menu_item_set_use_underline (*menu_item, TRUE);
+ gtk_menu_item_set_label (*menu_item, amtk_action_info_get_label (action_info));
+ }
+
+ accels = amtk_action_info_get_accels (action_info);
+ if ((flags & AMTK_FACTORY_IGNORE_ACCELS) == 0 &&
+ (flags & AMTK_FACTORY_IGNORE_ACCELS_FOR_DOC) == 0 &&
+ accels != NULL && accels[0] != NULL)
+ {
+ guint accel_key;
+ GdkModifierType accel_mods;
+
+ gtk_accelerator_parse (accels[0], &accel_key, &accel_mods);
+
+ if (accel_key != 0 || accel_mods != 0)
+ {
+ GtkWidget *child;
+
+ child = gtk_bin_get_child (GTK_BIN (*menu_item));
+
+ gtk_accel_label_set_accel (GTK_ACCEL_LABEL (child),
+ accel_key,
+ accel_mods);
+ }
+ }
+
+ tooltip = amtk_action_info_get_tooltip (action_info);
+ if ((flags & AMTK_FACTORY_IGNORE_TOOLTIP) == 0 &&
+ tooltip != NULL)
+ {
+ amtk_menu_item_set_long_description (*menu_item, tooltip);
+ }
+
+ return action_info;
+}
+
+static AmtkActionInfo *
common_create_tool_button (AmtkFactory *factory,
const gchar *action_name,
AmtkFactoryFlags flags,
@@ -519,71 +573,86 @@ amtk_factory_create_menu_item_full (AmtkFactory *factory,
const gchar *action_name,
AmtkFactoryFlags flags)
{
- GtkWidget *widget;
GtkMenuItem *menu_item;
AmtkActionInfo *action_info;
- const gchar * const *accels;
const gchar *icon_name;
- const gchar *tooltip;
g_return_val_if_fail (AMTK_IS_FACTORY (factory), NULL);
g_return_val_if_fail (action_name != NULL, NULL);
- widget = gtk_menu_item_new ();
- menu_item = GTK_MENU_ITEM (widget);
+ menu_item = GTK_MENU_ITEM (gtk_menu_item_new ());
- action_info = common_create (factory, action_name, flags, &widget);
+ action_info = common_create_menu_item (factory, action_name, flags, &menu_item);
if (action_info == NULL)
{
return NULL;
}
- if ((flags & AMTK_FACTORY_IGNORE_LABEL) == 0)
+ icon_name = amtk_action_info_get_icon_name (action_info);
+ if ((flags & AMTK_FACTORY_IGNORE_ICON) == 0 &&
+ icon_name != NULL)
{
- gtk_menu_item_set_use_underline (menu_item, TRUE);
- gtk_menu_item_set_label (menu_item, amtk_action_info_get_label (action_info));
+ amtk_menu_item_set_icon_name (menu_item, icon_name);
}
- /* Set accel before setting icon, because
- * amtk_menu_item_set_icon_name() adds a GtkBox.
- */
- accels = amtk_action_info_get_accels (action_info);
- if ((flags & AMTK_FACTORY_IGNORE_ACCELS) == 0 &&
- (flags & AMTK_FACTORY_IGNORE_ACCELS_FOR_DOC) == 0 &&
- accels != NULL && accels[0] != NULL)
- {
- guint accel_key;
- GdkModifierType accel_mods;
+ return GTK_WIDGET (menu_item);
+}
- gtk_accelerator_parse (accels[0], &accel_key, &accel_mods);
+/**
+ * amtk_factory_create_check_menu_item:
+ * @factory: an #AmtkFactory.
+ * @action_name: an action name.
+ *
+ * Creates a new #GtkCheckMenuItem for @action_name with the
+ * #AmtkFactory:default-flags.
+ *
+ * Returns: (transfer floating): a new #GtkCheckMenuItem for @action_name.
+ * Since: 3.0
+ */
+GtkWidget *
+amtk_factory_create_check_menu_item (AmtkFactory *factory,
+ const gchar *action_name)
+{
+ g_return_val_if_fail (AMTK_IS_FACTORY (factory), NULL);
+ g_return_val_if_fail (action_name != NULL, NULL);
- if (accel_key != 0 || accel_mods != 0)
- {
- GtkWidget *child;
+ return amtk_factory_create_check_menu_item_full (factory,
+ action_name,
+ factory->priv->default_flags);
+}
- child = gtk_bin_get_child (GTK_BIN (menu_item));
+/**
+ * amtk_factory_create_check_menu_item_full:
+ * @factory: an #AmtkFactory.
+ * @action_name: an action name.
+ * @flags: #AmtkFactoryFlags.
+ *
+ * This function ignores the #AmtkFactory:default-flags property and takes the
+ * @flags argument instead.
+ *
+ * Returns: (transfer floating): a new #GtkCheckMenuItem for @action_name.
+ * Since: 3.0
+ */
+GtkWidget *
+amtk_factory_create_check_menu_item_full (AmtkFactory *factory,
+ const gchar *action_name,
+ AmtkFactoryFlags flags)
+{
+ GtkMenuItem *check_menu_item;
+ AmtkActionInfo *action_info;
- gtk_accel_label_set_accel (GTK_ACCEL_LABEL (child),
- accel_key,
- accel_mods);
- }
- }
+ g_return_val_if_fail (AMTK_IS_FACTORY (factory), NULL);
+ g_return_val_if_fail (action_name != NULL, NULL);
- icon_name = amtk_action_info_get_icon_name (action_info);
- if ((flags & AMTK_FACTORY_IGNORE_ICON) == 0 &&
- icon_name != NULL)
- {
- amtk_menu_item_set_icon_name (menu_item, icon_name);
- }
+ check_menu_item = GTK_MENU_ITEM (gtk_check_menu_item_new ());
- tooltip = amtk_action_info_get_tooltip (action_info);
- if ((flags & AMTK_FACTORY_IGNORE_TOOLTIP) == 0 &&
- tooltip != NULL)
+ action_info = common_create_menu_item (factory, action_name, flags, &check_menu_item);
+ if (action_info == NULL)
{
- amtk_menu_item_set_long_description (menu_item, tooltip);
+ return NULL;
}
- return widget;
+ return GTK_WIDGET (check_menu_item);
}
/**
diff --git a/amtk/amtk-factory.h b/amtk/amtk-factory.h
index b2494b8..bf2c4a8 100644
--- a/amtk/amtk-factory.h
+++ b/amtk/amtk-factory.h
@@ -104,6 +104,13 @@ GtkWidget * amtk_factory_create_menu_item_full (AmtkFactory
*factory,
const gchar *action_name,
AmtkFactoryFlags flags);
+GtkWidget * amtk_factory_create_check_menu_item (AmtkFactory *factory,
+ const gchar *action_name);
+
+GtkWidget * amtk_factory_create_check_menu_item_full (AmtkFactory *factory,
+ const gchar *action_name,
+ AmtkFactoryFlags flags);
+
GtkToolItem * amtk_factory_create_tool_button (AmtkFactory *factory,
const gchar *action_name);
diff --git a/docs/reference/tepl-3.0-sections.txt b/docs/reference/tepl-3.0-sections.txt
index 91ae96e..c446504 100644
--- a/docs/reference/tepl-3.0-sections.txt
+++ b/docs/reference/tepl-3.0-sections.txt
@@ -109,6 +109,8 @@ amtk_factory_get_default_flags
amtk_factory_set_default_flags
amtk_factory_create_menu_item
amtk_factory_create_menu_item_full
+amtk_factory_create_check_menu_item
+amtk_factory_create_check_menu_item_full
amtk_factory_create_tool_button
amtk_factory_create_tool_button_full
amtk_factory_create_menu_tool_button
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]