[gedit/wip/redesign] Make the language combo a button
- From: Ignacio Casal Quinteiro <icq src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gedit/wip/redesign] Make the language combo a button
- Date: Fri, 10 May 2013 10:31:46 +0000 (UTC)
commit dff04b065c3533ab21b92c17d247bfd7637ecb94
Author: Ignacio Casal Quinteiro <icq gnome org>
Date: Fri May 10 08:39:50 2013 +0200
Make the language combo a button
gedit/gedit-window-private.h | 4 +-
gedit/gedit-window.c | 100 ++++++++++++-----------------------------
2 files changed, 31 insertions(+), 73 deletions(-)
---
diff --git a/gedit/gedit-window-private.h b/gedit/gedit-window-private.h
index 49f07b2..164bfed 100644
--- a/gedit/gedit-window-private.h
+++ b/gedit/gedit-window-private.h
@@ -73,8 +73,8 @@ struct _GeditWindowPrivate
GtkWidget *statusbar;
GtkWidget *tab_width_combo;
GtkWidget *tab_width_combo_menu;
- GtkWidget *language_combo;
- GtkWidget *language_combo_menu;
+ GtkWidget *language_button;
+ GtkWidget *language_button_label;
guint generic_message_cid;
guint tip_message_cid;
guint bracket_match_message_cid;
diff --git a/gedit/gedit-window.c b/gedit/gedit-window.c
index 997bea7..0cb3515 100644
--- a/gedit/gedit-window.c
+++ b/gedit/gedit-window.c
@@ -61,10 +61,9 @@
#include "gedit-status-menu-button.h"
#include "gedit-settings.h"
#include "gedit-marshal.h"
+#include "gedit-close-button.h"
-#define LANGUAGE_NONE (const gchar *)"LangNone"
#define TAB_WIDTH_DATA "GeditWindowTabWidthData"
-#define LANGUAGE_DATA "GeditWindowLanguageData"
#define FULLSCREEN_ANIMATION_SPEED 4
#define GEDIT_WINDOW_GET_PRIVATE(object)(G_TYPE_INSTANCE_GET_PRIVATE ((object),\
@@ -1180,82 +1179,41 @@ create_tab_width_combo (GeditWindow *window)
}
static void
-language_combo_item_activated (GtkMenuItem *item,
- GeditWindow *window)
+on_language_button_clicked (GtkButton *button,
+ GeditWindow *window)
{
- GeditDocument *doc;
- GtkSourceLanguage *language;
-
- doc = gedit_window_get_active_document (window);
-
- if (!doc)
- return;
-
- language = GTK_SOURCE_LANGUAGE (g_object_get_data (G_OBJECT (item), LANGUAGE_DATA));
- gedit_document_set_language (doc, language);
+ _gedit_cmd_view_highlight_mode (NULL, NULL, window);
}
static void
-create_language_combo (GeditWindow *window)
+create_language_button (GeditWindow *window)
{
- GtkSourceLanguageManager *lm;
- const gchar * const *ids;
- const gchar *name;
- GtkWidget *item;
- gint i;
+ GtkWidget *box;
+ GtkWidget *arrow;
- window->priv->language_combo = gedit_status_menu_button_new ();
- window->priv->language_combo_menu = gtk_menu_new ();
- gtk_menu_button_set_popup (GTK_MENU_BUTTON (window->priv->language_combo),
- window->priv->language_combo_menu);
- gtk_widget_show (window->priv->language_combo);
+ // quick hack to have the right style
+ window->priv->language_button = gedit_close_button_new ();
+ gtk_widget_show (window->priv->language_button);
gtk_box_pack_end (GTK_BOX (window->priv->statusbar),
- window->priv->language_combo,
- FALSE,
- TRUE,
- 0);
-
- name = _("Plain Text");
- item = gtk_menu_item_new_with_label (name);
- gtk_widget_show (item);
-
- g_object_set_data (G_OBJECT (item), LANGUAGE_DATA, NULL);
- gtk_menu_shell_append (GTK_MENU_SHELL (window->priv->language_combo_menu),
- GTK_WIDGET (item));
- g_signal_connect (item,
- "activate",
- G_CALLBACK (language_combo_item_activated),
- window);
+ window->priv->language_button,
+ FALSE, TRUE, 0);
- lm = gtk_source_language_manager_get_default ();
- ids = gtk_source_language_manager_get_language_ids (lm);
+ gtk_widget_destroy (gtk_bin_get_child (GTK_BIN (window->priv->language_button)));
+ box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 3);
+ gtk_widget_show (box);
+ gtk_container_add (GTK_CONTAINER (window->priv->language_button), box);
- for (i = 0; ids[i] != NULL; i++)
- {
- GtkSourceLanguage *lang;
-
- lang = gtk_source_language_manager_get_language (lm, ids[i]);
+ window->priv->language_button_label = gtk_label_new (NULL);
+ gtk_widget_show (window->priv->language_button_label);
+ gtk_box_pack_start (GTK_BOX (box), window->priv->language_button_label,
+ FALSE, TRUE, 0);
- if (!gtk_source_language_get_hidden (lang))
- {
- name = gtk_source_language_get_name (lang);
- item = gtk_menu_item_new_with_label (name);
- gtk_widget_show (item);
+ arrow = gtk_arrow_new (GTK_ARROW_DOWN, GTK_SHADOW_NONE);
+ gtk_widget_show (arrow);
+ gtk_box_pack_start (GTK_BOX (box), arrow, FALSE, FALSE, 0);
- g_object_set_data_full (G_OBJECT (item),
- LANGUAGE_DATA,
- g_object_ref (lang),
- (GDestroyNotify)g_object_unref);
-
- gtk_menu_shell_append (GTK_MENU_SHELL (window->priv->language_combo_menu),
- GTK_WIDGET (item));
-
- g_signal_connect (item,
- "activate",
- G_CALLBACK (language_combo_item_activated),
- window);
- }
- }
+ g_signal_connect (window->priv->language_button, "clicked",
+ G_CALLBACK (on_language_button_clicked), window);
}
static void
@@ -1271,7 +1229,7 @@ setup_statusbar (GeditWindow *window)
(GTK_STATUSBAR (window->priv->statusbar), "bracket_match_message");
create_tab_width_combo (window);
- create_language_combo (window);
+ create_language_button (window);
g_settings_bind (window->priv->ui_settings,
"statusbar-visible",
@@ -1602,7 +1560,7 @@ language_changed (GObject *object,
else
label = _("Plain Text");
- gtk_button_set_label (GTK_BUTTON (window->priv->language_combo), label);
+ gtk_label_set_text (GTK_LABEL (window->priv->language_button_label), label);
peas_extension_set_foreach (window->priv->extensions,
(PeasExtensionSetForeachFunc) extension_update_state,
@@ -1652,7 +1610,7 @@ update_statusbar (GeditWindow *window,
gtk_text_view_get_overwrite (GTK_TEXT_VIEW (new_view)));
gtk_widget_show (window->priv->tab_width_combo);
- gtk_widget_show (window->priv->language_combo);
+ gtk_widget_show (window->priv->language_button);
/* find the use spaces item */
items = gtk_container_get_children (GTK_CONTAINER (window->priv->tab_width_combo_menu));
@@ -2685,7 +2643,7 @@ on_tab_removed (GeditMultiNotebook *multi,
/* hide the combos */
gtk_widget_hide (window->priv->tab_width_combo);
- gtk_widget_hide (window->priv->language_combo);
+ gtk_widget_hide (window->priv->language_button);
}
if (!window->priv->dispose_has_run)
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]