StatusIcon.vala
[gitlive] / StatusIcon.vala
index 80ad0d9..e728ff4 100644 (file)
@@ -47,18 +47,20 @@ public class StatusIconA : StatusIcon {
          //title : 'gitlive',
         this.stock = Gtk.Stock.REFRESH;
         this.tooltip_text = "GitLive";
-        this.title = "vgitlive";
+        this.title = "gitlive";
         
-        this.set_name("vgitlive");
+        this.set_name("gitlive");
         this.set_visible(true);      
         
         var menu = new MenuA();
-                 
-         
-        this.activate.connect( () =>{
-            
+        menu.ref();       
+
+           
+       this.popup_menu.connect( (  button,   time) =>{
+       //this.button_press_event.connect( (  ) =>{
+               
             //print(Array.prototype.slice.call(arguments).join(','));
-            
+            print("menu activiate called\n");
             //var menu = this.get('menu');
             
             menu.show_all();
@@ -70,17 +72,18 @@ public class StatusIconA : StatusIcon {
                 menu.resume.hide();
                 menu.pause.show();
             }
-              
+              //               public void popup (Gtk.Widget? parent_menu_shell, Gtk.Widget? parent_menu_item,
+                    // [CCode (scope = "async")] Gtk.MenuPositionFunc? func, uint button, uint32 activate_time);
             //Gtk.get_current_event_device ()
             menu.popup(
-                    
+
                         null, null,
-                        this.position_menu, 0,
-                         Gtk.get_current_event_time()
+                       this.position_menu,
+                       
+                    button,  time //   time
             );
                         
             
-            
             //var g = { };
             //var a = new Gdk.Rectangle();
             //  needs direction=inout setting in gir to work (in bugzilla @present)
@@ -89,11 +92,43 @@ public class StatusIconA : StatusIcon {
             // should check to see if @ top or bottom I guess..
             //menu.el.get_toplevel().move(a.x, a.y +a.height);
             //menu.el.get_toplevel().move(10,10);
+            //return false;
               
         }); 
         
     }
     
+    void pause()
+    {
+               this.set_from_stock( Gtk.Stock.MEDIA_PAUSE );
+    }
+    void resume()
+    {
+               this.set_from_stock( Gtk.Stock.MEDIA_PLAY );
+               this.error_animate= false;
+    }
+    
+    void refreshing()
+    {
+               this.set_from_stock( Gtk.Stock.REFRESH );
+    }
+    void pauseError()
+    {
+                this.error_animate = true;
+                var flag = true;
+                Timeout.add_full(Priority.LOW, 500, () => {
+                
+                       if (!this.error_animate) {
+                               return false;
+                       }
+                       this.set_from_stock( flag == true ? Gtk.Stock.MEDIA_RECORD  
+                                       : Gtk.Stock.MEDIA_PAUSE);
+                       flag = !flag;
+                       return true;
+               });
+                
+    }
+    
     class MenuA : Gtk.Menu
     {
         public ImageMenuItem pause;
@@ -151,7 +186,7 @@ public class StatusIconA : StatusIcon {
                 
                 var  image = new Gtk.Image();
                 image.set_from_stock(Gtk.Stock.MEDIA_PLAY,Gtk.IconSize.MENU );
-               this.set_image (image);
+                this.set_image (image);
                 this.label= "Start Commits";
                 this.always_show_image = true;
                 this.accel_group = null;
@@ -171,6 +206,7 @@ public class StatusIconA : StatusIcon {
             
         }
         
+        
         class ImageMenuItemC : ImageMenuItem {
             
             public ImageMenuItemC()
@@ -184,12 +220,13 @@ public class StatusIconA : StatusIcon {
                 this.accel_group = null;
                 
                 this.activate.connect( () => {
-                    GitMonitor.gitmonitor.start();
+                    GitMonitor.gitmonitor.stop();
                     var tr = GitRepo.list();
                     for (var i= 0; i< tr.length;i++) {
-                        statusicon.set_from_stock( i%2 == 0 ?  Gtk.Stock.FULLSCREEN : Gtk.Stock.LEAVE_FULLSCREEN );
+                        statusicon.set_from_stock( 
+                               i%2 == 0 ?  Gtk.Stock.FULLSCREEN : Gtk.Stock.LEAVE_FULLSCREEN );
                                 
-                        var repo = tr[i];
+                        var repo = tr.index(i);
                         //if (!repo.autocommit()) {
                             //??? should we ignore ones not on autocommit..
                         //    continue;
@@ -198,12 +235,13 @@ public class StatusIconA : StatusIcon {
                             statusicon.set_tooltip_text("pull: " + repo.name);
                             var str = repo.pull();
                                     // do not care if it's already in sycn..
-                            if (Regex.match_simple ("Already up-to-date", str)
+                            if (Regex.match_simple ("Already up-to-date", str) ) {
                                 continue;
                             }
                             var notification = new Notify.Notification( 
                                      "Updated " + repo.name,
-                                    body : str
+                                     str,
+                                       "dialog-information"
                                    
                             );
                         
@@ -212,7 +250,7 @@ public class StatusIconA : StatusIcon {
                                      
                         } catch(Error e) {
                             print("notification or push errror- probably to many in queue..");
-                            statusicon.set_from_stock( Gtk.Stock.RECORD );
+                            statusicon.set_from_stock( Gtk.Stock.MEDIA_RECORD );
                             print(e.message);
                             
                         }