← Back to team overview

elementaryart team mailing list archive

[Merge] lp:~voluntatefaber/granite/update-contractormenu into lp:granite

 

Andrea Basso has proposed merging lp:~voluntatefaber/granite/update-contractormenu into lp:granite.

Requested reviews:
  elementary Pantheon team (elementary-pantheon)

For more details, see:
https://code.launchpad.net/~voluntatefaber/granite/update-contractormenu/+merge/100205
-- 
https://code.launchpad.net/~voluntatefaber/granite/update-contractormenu/+merge/100205
Your team elementaryart (old) is subscribed to branch lp:granite.
=== modified file 'lib/Widgets/ContractorMenu.vala'
--- lib/Widgets/ContractorMenu.vala	2012-02-19 13:58:41 +0000
+++ lib/Widgets/ContractorMenu.vala	2012-03-30 17:31:19 +0000
@@ -23,8 +23,33 @@
     HashTable<string,string>[] contracts;
     Gee.HashMap <string,string> execs;
     public delegate void ContractCallback ();
+    private string filepath;
+    private string filemime;
     
     public ContractorMenu (string filename, string mime) {
+        filepath = filename;
+        filemime = mime;
+        load_items (filename, mime);
+    }
+    
+    public void add_item (string name, string icon_name, int position, ContractCallback method) {
+        var item = new Gtk.ImageMenuItem ();
+        item.set_always_show_image (true);
+        var image = new Gtk.Image.from_icon_name (icon_name, Gtk.IconSize.MENU);
+        item.set_label (name);
+        item.set_image (image);
+        item.activate.connect (()=>{method();});
+        insert(item, position);
+    }
+    
+    public void name_blacklist (string[] names) {
+        this.foreach ((item)=> {
+            if (((Gtk.MenuItem)item).get_label () in names)
+                remove (item);
+        });
+    }
+    
+    private void load_items (string filename, string mime) {
         contracts = Granite.Services.Contractor.get_contract (filename, mime);
         execs = new Gee.HashMap<string,string> ();
         
@@ -44,23 +69,30 @@
  	            }
             });
             append (item);
-        }
-    }
-    
-    public void add_item (string name, string icon_name, int position, ContractCallback method) {
-        var item = new Gtk.ImageMenuItem ();
-        item.set_always_show_image (true);
-        var image = new Gtk.Image.from_icon_name (icon_name, Gtk.IconSize.MENU);
-        item.set_label (name);
-        item.set_image (image);
-        item.activate.connect (()=>{method();});
-        insert(item, position);
-    }
-    
-    public void name_blacklist (string[] names) {
-        this.foreach ((item)=> {
-            if (((Gtk.MenuItem)item).get_label () in names)
-                remove (item);
-        });
+            item.show_all ();
+        }
+    }
+    
+    public void update (string? filename, string? mime) {
+        this.foreach ((w) => {remove (w);});
+        
+        string fn = "";
+        string mm = "";
+        
+        if (filename != null) {
+            fn = filename;
+            filepath = filename;
+        } else {
+            fn = filepath;
+        }
+        
+        if (mime != null) {
+            mm = mime;
+            filemime = mime;
+        } else {
+            mm = filemime;
+        }
+    
+        load_items (fn, mm);
     }
 }


Follow ups