[gedit] Select language on highlight mode dialog



commit 53ca4b9b7ac86e7ef93f0abb1c78a6010c45ee37
Author: Ignacio Casal Quinteiro <icq gnome org>
Date:   Sat Jun 8 12:56:55 2013 +0200

    Select language on highlight mode dialog

 gedit/gedit-commands-view.c         |   13 ++++++++-
 gedit/gedit-highlight-mode-dialog.c |   48 +++++++++++++++++++++++++++++++++++
 gedit/gedit-highlight-mode-dialog.h |    3 ++
 3 files changed, 62 insertions(+), 2 deletions(-)
---
diff --git a/gedit/gedit-commands-view.c b/gedit/gedit-commands-view.c
index 5032a44..2f42f05 100644
--- a/gedit/gedit-commands-view.c
+++ b/gedit/gedit-commands-view.c
@@ -142,8 +142,8 @@ _gedit_cmd_view_leave_fullscreen_mode (GtkAction   *action,
 
 static void
 on_language_selected (GeditHighlightModeDialog *dlg,
-                      GtkSourceLanguage *language,
-                      GeditWindow *window)
+                      GtkSourceLanguage        *language,
+                      GeditWindow              *window)
 {
        GeditDocument *doc;
 
@@ -160,8 +160,17 @@ _gedit_cmd_view_highlight_mode (GtkAction   *action,
                                 GeditWindow *window)
 {
        GtkWidget *dlg;
+       GeditDocument *doc;
 
        dlg = gedit_highlight_mode_dialog_new (GTK_WINDOW (window));
+
+       doc = gedit_window_get_active_document (window);
+       if (doc)
+       {
+               gedit_highlight_mode_dialog_select_language (GEDIT_HIGHLIGHT_MODE_DIALOG (dlg),
+                                                            gedit_document_get_language (doc));
+       }
+
        g_signal_connect (dlg, "language-selected",
                          G_CALLBACK (on_language_selected), window);
 
diff --git a/gedit/gedit-highlight-mode-dialog.c b/gedit/gedit-highlight-mode-dialog.c
index 02ba355..064eb16 100644
--- a/gedit/gedit-highlight-mode-dialog.c
+++ b/gedit/gedit-highlight-mode-dialog.c
@@ -342,4 +342,52 @@ gedit_highlight_mode_dialog_new (GtkWindow *parent)
                                         NULL));
 }
 
+void
+gedit_highlight_mode_dialog_select_language (GeditHighlightModeDialog *dlg,
+                                             GtkSourceLanguage        *language)
+{
+       GtkTreeIter iter;
+
+       g_return_if_fail (GEDIT_IS_HIGHLIGHT_MODE_DIALOG (dlg));
+
+       if (language == NULL)
+       {
+               return;
+       }
+
+       if (gtk_tree_model_get_iter_first (GTK_TREE_MODEL (dlg->priv->treemodelfilter), &iter))
+       {
+               do
+               {
+                       GtkSourceLanguage *lang;
+
+                       gtk_tree_model_get (GTK_TREE_MODEL (dlg->priv->treemodelfilter),
+                                           &iter,
+                                           COLUMN_LANG, &lang,
+                                           -1);
+
+                       if (lang != NULL)
+                       {
+                               gboolean equal = (lang == language);
+
+                               g_object_unref (lang);
+
+                               if (equal)
+                               {
+                                       GtkTreePath *path;
+
+                                       path = gtk_tree_model_get_path (GTK_TREE_MODEL 
(dlg->priv->treemodelfilter), &iter);
+
+                                       gtk_tree_selection_select_iter (dlg->priv->treeview_selection, &iter);
+                                       gtk_tree_view_scroll_to_cell (GTK_TREE_VIEW (dlg->priv->treeview),
+                                                                     path, NULL, TRUE, 0.5, 0);
+                                       gtk_tree_path_free (path);
+                                       break;
+                               }
+                       }
+               }
+               while (gtk_tree_model_iter_next (GTK_TREE_MODEL (dlg->priv->treemodelfilter), &iter));
+       }
+}
+
 /* ex:set ts=8 noet: */
diff --git a/gedit/gedit-highlight-mode-dialog.h b/gedit/gedit-highlight-mode-dialog.h
index 65cb7d5..95e4cc0 100644
--- a/gedit/gedit-highlight-mode-dialog.h
+++ b/gedit/gedit-highlight-mode-dialog.h
@@ -59,6 +59,9 @@ GType                    gedit_highlight_mode_dialog_get_type        (void) G_GN
 
 GtkWidget               *gedit_highlight_mode_dialog_new             (GtkWindow *parent);
 
+void                     gedit_highlight_mode_dialog_select_language (GeditHighlightModeDialog *dlg,
+                                                                      GtkSourceLanguage        *language);
+
 G_END_DECLS
 
 #endif /* __GEDIT_HIGHLIGHT_MODE_DIALOG_H__ */


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]