[latexila] Symbols: use GResource for the categories icons



commit 198920a1eea1da1a83761f57851e603e11bcf129
Author: SÃbastien Wilmet <swilmet src gnome org>
Date:   Wed May 2 03:19:24 2012 +0200

    Symbols: use GResource for the categories icons
    
    And clean-up a bit the code.

 data/CMakeLists.txt                                |    1 -
 data/images/icons/CMakeLists.txt                   |    2 -
 data/images/stock-icons/stock-icons.gresource.xml  |    7 +
 .../{icons => stock-icons}/symbol_arrows.png       |  Bin 316 -> 316 bytes
 .../{icons => stock-icons}/symbol_delimiters.png   |  Bin 373 -> 373 bytes
 .../images/{icons => stock-icons}/symbol_greek.png |  Bin 296 -> 296 bytes
 .../{icons => stock-icons}/symbol_misc_math.png    |  Bin 346 -> 346 bytes
 .../{icons => stock-icons}/symbol_misc_text.png    |  Bin 394 -> 394 bytes
 .../{icons => stock-icons}/symbol_operators.png    |  Bin 297 -> 297 bytes
 .../{icons => stock-icons}/symbol_relations.png    |  Bin 275 -> 275 bytes
 src/symbols.vala                                   |  166 +++++++++-----------
 11 files changed, 85 insertions(+), 91 deletions(-)
---
diff --git a/data/CMakeLists.txt b/data/CMakeLists.txt
index 86f9034..912b824 100644
--- a/data/CMakeLists.txt
+++ b/data/CMakeLists.txt
@@ -12,7 +12,6 @@ install (FILES "latexila.desktop" DESTINATION share/applications)
 add_subdirectory ("build_tools")
 add_subdirectory ("templates")
 add_subdirectory ("images/app")
-add_subdirectory ("images/icons")
 add_subdirectory ("images/arrows")
 add_subdirectory ("images/delimiters")
 add_subdirectory ("images/greek")
diff --git a/data/images/stock-icons/stock-icons.gresource.xml b/data/images/stock-icons/stock-icons.gresource.xml
index 5e606d2..2cc3bf1 100644
--- a/data/images/stock-icons/stock-icons.gresource.xml
+++ b/data/images/stock-icons/stock-icons.gresource.xml
@@ -74,6 +74,13 @@ in menus for example.
     <file preprocess="to-pixdata">slanted.png</file>
     <file preprocess="to-pixdata">small_caps.png</file>
     <file preprocess="to-pixdata">symbol_alpha.png</file>
+    <file preprocess="to-pixdata">symbol_arrows.png</file>
+    <file preprocess="to-pixdata">symbol_delimiters.png</file>
+    <file preprocess="to-pixdata">symbol_greek.png</file>
+    <file preprocess="to-pixdata">symbol_misc_math.png</file>
+    <file preprocess="to-pixdata">symbol_misc_text.png</file>
+    <file preprocess="to-pixdata">symbol_operators.png</file>
+    <file preprocess="to-pixdata">symbol_relations.png</file>
     <file preprocess="to-pixdata">table.png</file>
     <file preprocess="to-pixdata">tree_chapter.png</file>
     <file preprocess="to-pixdata">tree_label.png</file>
diff --git a/data/images/icons/symbol_arrows.png b/data/images/stock-icons/symbol_arrows.png
similarity index 100%
rename from data/images/icons/symbol_arrows.png
rename to data/images/stock-icons/symbol_arrows.png
diff --git a/data/images/icons/symbol_delimiters.png b/data/images/stock-icons/symbol_delimiters.png
similarity index 100%
rename from data/images/icons/symbol_delimiters.png
rename to data/images/stock-icons/symbol_delimiters.png
diff --git a/data/images/icons/symbol_greek.png b/data/images/stock-icons/symbol_greek.png
similarity index 100%
rename from data/images/icons/symbol_greek.png
rename to data/images/stock-icons/symbol_greek.png
diff --git a/data/images/icons/symbol_misc_math.png b/data/images/stock-icons/symbol_misc_math.png
similarity index 100%
rename from data/images/icons/symbol_misc_math.png
rename to data/images/stock-icons/symbol_misc_math.png
diff --git a/data/images/icons/symbol_misc_text.png b/data/images/stock-icons/symbol_misc_text.png
similarity index 100%
rename from data/images/icons/symbol_misc_text.png
rename to data/images/stock-icons/symbol_misc_text.png
diff --git a/data/images/icons/symbol_operators.png b/data/images/stock-icons/symbol_operators.png
similarity index 100%
rename from data/images/icons/symbol_operators.png
rename to data/images/stock-icons/symbol_operators.png
diff --git a/data/images/icons/symbol_relations.png b/data/images/stock-icons/symbol_relations.png
similarity index 100%
rename from data/images/icons/symbol_relations.png
rename to data/images/stock-icons/symbol_relations.png
diff --git a/src/symbols.vala b/src/symbols.vala
index a31007a..f403ddd 100644
--- a/src/symbols.vala
+++ b/src/symbols.vala
@@ -21,16 +21,29 @@ using Gtk;
 
 public class Symbols : Grid
 {
-    private const CategoryInfo[] categories =
+    struct SymbolInfo
+    {
+        public string filename;
+        public string latex_command;
+        public string package_required;
+    }
+
+    struct CategoryInfo
+    {
+        public string name;
+        public string icon;
+    }
+
+    private const CategoryInfo[] _categories =
     {
-        {N_("Greek"), Config.DATA_DIR + "/images/icons/symbol_greek.png"},
-        // when we drink too much tequila we walk like this arrow...
-        {N_("Arrows"), Config.DATA_DIR + "/images/icons/symbol_arrows.png"},
-        {N_("Relations"), Config.DATA_DIR + "/images/icons/symbol_relations.png"},
-        {N_("Operators"), Config.DATA_DIR + "/images/icons/symbol_operators.png"},
-        {N_("Delimiters"), Config.DATA_DIR + "/images/icons/symbol_delimiters.png"},
-        {N_("Misc math"), Config.DATA_DIR + "/images/icons/symbol_misc_math.png"},
-        {N_("Misc text"), Config.DATA_DIR + "/images/icons/symbol_misc_text.png"}
+        {N_("Greek"), "symbol_greek"},
+        {N_("Arrows"), "symbol_arrows"},
+        {N_("Relations"), "symbol_relations"},
+        {N_("Operators"), "symbol_operators"},
+        {N_("Delimiters"), "symbol_delimiters"},
+        {N_("Misc math"), "symbol_misc_math"},
+        {N_("Misc text"), "symbol_misc_text"},
+        {N_("Most Used"), Stock.ABOUT}
     };
 
     private const SymbolInfo[] symbols_greek =
@@ -675,19 +688,6 @@ public class Symbols : Grid
         {Config.DATA_DIR + "/images/misc-text/135.png", "\\textdiv", "textcomp"}
     };
 
-    struct SymbolInfo
-    {
-        public string filename;
-        public string latex_command;
-        public string package_required;
-    }
-
-    struct CategoryInfo
-    {
-        public string name;
-        public string icon;
-    }
-
     enum SymbolColumn
     {
         PIXBUF,
@@ -705,19 +705,19 @@ public class Symbols : Grid
         N_COLUMNS
     }
 
-    private static bool stores_initialized = false;
-    private static ListStore categories_store;
+    private static bool _stores_initialized = false;
+    private static ListStore _categories_store;
     private static ListStore[] symbols_stores = new ListStore[8];
     private static ListStore mus_store;
-    private unowned MainWindow main_window;
-    private IconView symbol_view;
+    private unowned MainWindow _main_window;
+    private IconView _symbol_view;
     private Button _clear_button;
 
     private uint _timeout_id = 0;
 
     public Symbols (MainWindow main_window)
     {
-        this.main_window = main_window;
+        _main_window = main_window;
 
         orientation = Orientation.VERTICAL;
         set_row_spacing (3);
@@ -743,9 +743,9 @@ public class Symbols : Grid
         // Resize every 100ms.
         _timeout_id = Timeout.add (100, () =>
         {
-            TreeModel model = this.symbol_view.get_model ();
-            this.symbol_view.set_model (null);
-            this.symbol_view.set_model (model);
+            TreeModel model = _symbol_view.get_model ();
+            _symbol_view.set_model (null);
+            _symbol_view.set_model (model);
             _timeout_id = 0;
             return false;
         });
@@ -753,42 +753,34 @@ public class Symbols : Grid
 
     private void init_stores ()
     {
-        if (stores_initialized)
-            return;
+        if (! _stores_initialized)
+        {
+            init_categories_store ();
+            init_symbols_stores ();
 
-        /* categories store */
-        categories_store = new ListStore (CategoryColumn.N_COLUMNS,
-            typeof (Gdk.Pixbuf), typeof (string));
+            _stores_initialized = true;
+        }
+    }
 
-        foreach (CategoryInfo info in categories)
+    private void init_categories_store ()
+    {
+        _categories_store = new ListStore (CategoryColumn.N_COLUMNS,
+            typeof (string), // the icon (stock-id)
+            typeof (string)  // the name
+        );
+
+        foreach (CategoryInfo info in _categories)
         {
-            try
-            {
-                Gdk.Pixbuf pixbuf = new Gdk.Pixbuf.from_file (info.icon);
-                TreeIter iter;
-                categories_store.append (out iter);
-                categories_store.set (iter,
-                    CategoryColumn.ICON, pixbuf,
-                    CategoryColumn.NAME, _(info.name),
-                    -1);
-            }
-            catch (Error e)
-            {
-                warning ("Impossible to load the symbol: %s", e.message);
-                continue;
-            }
+            TreeIter iter;
+            _categories_store.append (out iter);
+            _categories_store.set (iter,
+                CategoryColumn.ICON, info.icon,
+                CategoryColumn.NAME, _(info.name));
         }
+    }
 
-        // mosed used symbols
-        Gdk.Pixbuf pixbuf = Utils.get_pixbuf_from_stock (Stock.ABOUT, IconSize.MENU);
-        TreeIter iter;
-        categories_store.append (out iter);
-        categories_store.set (iter,
-            CategoryColumn.ICON, pixbuf,
-            CategoryColumn.NAME, _("Most Used"),
-            -1);
-
-        /* symbols stores */
+    private void init_symbols_stores ()
+    {
         symbols_stores[0] = get_symbol_store (symbols_greek);
         symbols_stores[1] = get_symbol_store (symbols_arrows);
         symbols_stores[2] = get_symbol_store (symbols_relations);
@@ -802,19 +794,17 @@ public class Symbols : Grid
             typeof (string));
 
         reload_most_used_symbols ();
-
-        stores_initialized = true;
     }
 
     private void create_combo_box ()
     {
-        ComboBox combo_box = new ComboBox.with_model (categories_store);
+        ComboBox combo_box = new ComboBox.with_model (_categories_store);
         combo_box.hexpand = true;
 
         CellRendererPixbuf pixbuf_renderer = new CellRendererPixbuf ();
         combo_box.pack_start (pixbuf_renderer, false);
         combo_box.set_attributes (pixbuf_renderer,
-            "pixbuf", CategoryColumn.ICON, null);
+            "stock-id", CategoryColumn.ICON, null);
 
         CellRendererText text_renderer = new CellRendererText ();
         text_renderer.ellipsize_set = true;
@@ -830,8 +820,8 @@ public class Symbols : Grid
         {
             int num = combo_box.get_active ();
 
-            if (symbol_view != null)
-                symbol_view.set_model (symbols_stores[num]);
+            if (_symbol_view != null)
+                _symbol_view.set_model (symbols_stores[num]);
 
             if (num == symbols_stores.length - 1)
                 _clear_button.show ();
@@ -843,16 +833,16 @@ public class Symbols : Grid
     private void create_icon_view ()
     {
         /* show the symbols */
-        symbol_view = new IconView.with_model (symbols_stores[0]);
-        symbol_view.set_pixbuf_column (SymbolColumn.PIXBUF);
-        symbol_view.set_tooltip_column (SymbolColumn.TOOLTIP);
-        symbol_view.set_selection_mode (SelectionMode.SINGLE);
-        symbol_view.spacing = 0;
-        symbol_view.row_spacing = 0;
-        symbol_view.column_spacing = 0;
-        symbol_view.expand = true;
-
-        Widget sw = Utils.add_scrollbar (symbol_view);
+        _symbol_view = new IconView.with_model (symbols_stores[0]);
+        _symbol_view.set_pixbuf_column (SymbolColumn.PIXBUF);
+        _symbol_view.set_tooltip_column (SymbolColumn.TOOLTIP);
+        _symbol_view.set_selection_mode (SelectionMode.SINGLE);
+        _symbol_view.spacing = 0;
+        _symbol_view.row_spacing = 0;
+        _symbol_view.column_spacing = 0;
+        _symbol_view.expand = true;
+
+        Widget sw = Utils.add_scrollbar (_symbol_view);
         sw.expand = true;
         add (sw);
 
@@ -867,21 +857,21 @@ public class Symbols : Grid
             MostUsedSymbols.get_default ().clear ();
         });
 
-        symbol_view.selection_changed.connect (() =>
+        _symbol_view.selection_changed.connect (() =>
         {
-            if (main_window.active_tab == null)
+            if (_main_window.active_tab == null)
             {
-                symbol_view.unselect_all ();
+                _symbol_view.unselect_all ();
                 return;
             }
 
-            var selected_items = symbol_view.get_selected_items ();
+            var selected_items = _symbol_view.get_selected_items ();
 
             // unselect the symbol, so the user can insert several times the same symbol
-            symbol_view.unselect_all ();
+            _symbol_view.unselect_all ();
 
             TreePath path = selected_items.nth_data (0);
-            TreeModel model = symbol_view.get_model ();
+            TreeModel model = _symbol_view.get_model ();
             TreeIter iter = {};
 
             if (path != null && model.get_iter (out iter, path))
@@ -894,11 +884,11 @@ public class Symbols : Grid
                     -1);
 
                 // insert the symbol in the current document
-                main_window.active_document.begin_user_action ();
-                main_window.active_document.insert_at_cursor (latex_command, -1);
-                main_window.active_document.insert_at_cursor (" ", -1);
-                main_window.active_document.end_user_action ();
-                main_window.active_view.grab_focus ();
+                _main_window.active_document.begin_user_action ();
+                _main_window.active_document.insert_at_cursor (latex_command, -1);
+                _main_window.active_document.insert_at_cursor (" ", -1);
+                _main_window.active_document.end_user_action ();
+                _main_window.active_view.grab_focus ();
 
                 // insert to most used symbol
                 MostUsedSymbols.get_default ().add_symbol (id, latex_command,



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