sync
authorAlan Knowles <alan@roojs.com>
Mon, 5 Nov 2018 07:07:22 +0000 (15:07 +0800)
committerAlan Knowles <alan@roojs.com>
Mon, 5 Nov 2018 07:07:22 +0000 (15:07 +0800)
GitMonitor.vala
GitRepo.vala
NewBranch.bjs
NewBranch.vala

index 17dedfc..864e046 100644 (file)
@@ -1,7 +1,25 @@
+/**
 
 
+The monitor suffers from various issues - basically event flows while it's running...
+
+normall operations
+
+- monitors for file changes
+ -- adds to QUEUE when occurs.
+- queue runs in background.
+ - if it's got stuff in it..
+ - COMMIT (normally)
+ - now?? - if on master - try and branch
+   == do user selection, until we have branched
+   == then start monitoring again..
+   
 
 
 
 
 
 
+*/
+
+
 
 
 public class GitMonitor : Monitor
 
 
 public class GitMonitor : Monitor
@@ -111,6 +129,12 @@ public class GitMonitor : Monitor
 
        }
        
 
        }
        
+       public void restoreQueue( Gee.ArrayList<GitMonitorQueue> queue)
+       {
+               //used to restore teh queue after switch branches?/ - breaks our privte queue idea..
+               this.queue = queue;
+       }
+       
        /*
        public new void resume () {
                this.paused = false;
        /*
        public new void resume () {
                this.paused = false;
@@ -227,7 +251,10 @@ public class GitMonitor : Monitor
                
                foreach(var q in this.queue) {
                        if (!q.shouldIgnore() && !q.repo.is_wip_branch()) {
                
                foreach(var q in this.queue) {
                        if (!q.shouldIgnore() && !q.repo.is_wip_branch()) {
-                               NewBranch.singleton().show(q.repo);
+                               var oldq = this.queue;
+                               this.queue =  new Gee.ArrayList<GitMonitorQueue>(); 
+                               NewBranch.singleton().show(q.repo, oldq);
+                               
                                return;
                        }
                
                                return;
                        }
                
@@ -570,10 +597,7 @@ public class GitMonitor : Monitor
                this.queue.add(cmd);
                
                
                this.queue.add(cmd);
                
                
-                if (!cmd.shouldIgnore() && !cmd.repo.is_wip_branch()) {
-                NewBranch.singleton().show(cmd.repo);
-         }
+                 
                 
        }
        public override  void onDeleted(MonitorNamePathDir src) 
                 
        }
        public override  void onDeleted(MonitorNamePathDir src) 
@@ -600,9 +624,7 @@ public class GitMonitor : Monitor
 
                this.queue.add(cmd);
                
 
                this.queue.add(cmd);
                
-                if (!cmd.shouldIgnore() && !cmd.repo.is_wip_branch()) {
-                       NewBranch.singleton().show(cmd.repo);
-               }
+                
                
  
        }
                
  
        }
@@ -661,9 +683,7 @@ public class GitMonitor : Monitor
                cmd.message = "Attribute changed " + cmd.vname;
                this.queue.add(cmd);
                
                cmd.message = "Attribute changed " + cmd.vname;
                this.queue.add(cmd);
                
-               if (!cmd.shouldIgnore() && !cmd.repo.is_wip_branch()) {
-                       NewBranch.singleton().show(cmd.repo);
-        }
+        
        }
  
    public  override void onMoved(MonitorNamePathDir src,MonitorNamePathDir dest)  
        }
  
    public  override void onMoved(MonitorNamePathDir src,MonitorNamePathDir dest)  
@@ -722,10 +742,7 @@ public class GitMonitor : Monitor
                
                
                this.queue.add(cmd);
                
                
                this.queue.add(cmd);
-
-               if (!cmd.shouldIgnore() && !cmd.repo.is_wip_branch()) {
-                       NewBranch.singleton().show(cmd.repo);
-        }
         // this is where it get's complicated...
         // as we might be moving across repo's...
         
         // this is where it get's complicated...
         // as we might be moving across repo's...
         
index 2bfa2a1..3f014ba 100644 (file)
@@ -336,7 +336,7 @@ public class GitRepo : Object
     }
     
     
     }
     
     
-   public bool setActiveTicket(RooTicket ticket, string branchname)
+    public bool setActiveTicket(RooTicket ticket, string branchname)
     {
        if (!this.createBranchNamed(branchname)) {
                return false;
     {
        if (!this.createBranchNamed(branchname)) {
                return false;
index 71c6385..c7adea2 100644 (file)
@@ -10,7 +10,7 @@
   {
    "listeners" : {
     "delete_event" : "(self, event) => {\n    this.el.hide();\n    this.running = false;\n    return true; \n    //test  \n}\n ",
   {
    "listeners" : {
     "delete_event" : "(self, event) => {\n    this.el.hide();\n    this.running = false;\n    return true; \n    //test  \n}\n ",
-    "response" : " (self, response_id) =>  { \n  \n\tGLib.debug(\"got %d\", (int) response_id);\n\tif (response_id == 0) {\n\t    _this.el.hide();\t\n\t    this.running = false; \n\t\tGitMonitor.gitmonitor.start();\t    \n\t \treturn;\n\t}\n\t \n\t// have they selected a ticket..\n\t// make that the current active ticket?\n\t// we really need to store locally what ticket is being worked on..\n\t// in theory we could be working on multiple project and not merging..\n\t// -- each repo would have their active ticket (only one per repo)\n\t// -- so we could just store that in there\n\t// -- initial load can check the contents of the ticket files on first scan.\n\tvar ticket_id = _this.ticketsel.selectedTicketId();\n\t\n\tvar success = true;\n    if (this.repo != null) {\n    \tvar bn = _this.name.el.get_text();\n    \tif (ticket_id != \"\" ) {\n\t\t\tsuccess = this.repo.setActiveTicket( RooTicket.singleton().getById(ticket_id), bn);\n\t\t} else {\n\t\t\tsuccess = this.repo.createBranchNamed(bn);\n\t\t}\n    }\n\tGitMonitor.gitmonitor.start();\n    this.running = false; \n\n\t \n\t \n\t \n\n\t \n}",
+    "response" : " (self, response_id) =>  { \n  \n\tGLib.debug(\"got %d\", (int) response_id);\n\tif (response_id == 0) {\n\t    _this.el.hide();\t\n\t    this.running = false; \n\t\tGitMonitor.gitmonitor.start();\t    \n\t \treturn;\n\t}\n\t \n\t// have they selected a ticket..\n\t// make that the current active ticket?\n\t// we really need to store locally what ticket is being worked on..\n\t// in theory we could be working on multiple project and not merging..\n\t// -- each repo would have their active ticket (only one per repo)\n\t// -- so we could just store that in there\n\t// -- initial load can check the contents of the ticket files on first scan.\n\tvar ticket_id = _this.ticketsel.selectedTicketId();\n\t\n\tvar success = true;\n    if (this.repo != null) {\n    \tvar bn = _this.name.el.get_text();\n    \tif (ticket_id != \"\" ) {\n\t\t\tsuccess = this.repo.setActiveTicket( RooTicket.singleton().getById(ticket_id), bn);\n\t\t} else {\n\t\t\tsuccess = this.repo.createBranchNamed(bn);\n\t\t}\n    }\n    \n    GitMonitor.gitmonitor.restoreQueue( this.queue );\n    GitMonitor.gitmonitor.runQueue();    \n\tGitMonitor.gitmonitor.start();\n    this.running = false; \n\n\t \n\t \n\t \n\n\t \n}",
     "show" : "(self)  => {\n \n\n  //test\n}"
    },
    "default_width" : 500,
     "show" : "(self)  => {\n \n\n  //test\n}"
    },
    "default_width" : 500,
    "title" : "Create a working branch ",
    "xtype" : "Dialog",
    "# GitRepo? repo" : "null",
    "title" : "Create a working branch ",
    "xtype" : "Dialog",
    "# GitRepo? repo" : "null",
-   "|   void show" : "( GitRepo repo ) \n{\n     // this.el.set_gravity(Gdk.Gravity.NORTH);\n    if (this.running) {\n    \treturn;\n\t}\n\tthis.running  = true;\n\tGitMonitor.gitmonitor.stop();\n\t\n    this.repo = repo;\n    \n\tthis.el.move((Gdk.Screen.width() / 2)- 250 ,0);\n       \tGLib.debug(\"Loading tickets\"); \n\n\n    this.el.show_all();\n \t_this.dbmodel.loadTickets();\n\n}",
+   "|   void show" : "( GitRepo repo, Gee.ArrayList<GitMonitorQueue> queue ) \n{\n     // this.el.set_gravity(Gdk.Gravity.NORTH);\n    if (this.running) { // should not happen!!\n    \tGLib.error(\"new branch show called, when already being displayed?\");\n\t}\n\tthis.queue = queue;\n\t\n\tthis.running  = true;\n\tGitMonitor.gitmonitor.stop();\n\t\n    this.repo = repo;\n    \n\tthis.el.move((Gdk.Screen.width() / 2)- 250 ,0);\n       \tGLib.debug(\"Loading tickets\"); \n\n\n    this.el.show_all();\n \t_this.dbmodel.loadTickets();\n\n}",
    "default_height" : 200,
    "$ xns" : "Gtk",
    "# bool running" : false,
    "default_height" : 200,
    "$ xns" : "Gtk",
    "# bool running" : false,
+   "# Gee.ArrayList<GitMonitorQueue> queue" : "null",
    "bool modal" : true,
    "items" : [
     {
    "bool modal" : true,
    "items" : [
     {
@@ -31,8 +32,8 @@
      "items" : [
       {
        "bool homogeneous" : false,
      "items" : [
       {
        "bool homogeneous" : false,
-       "* pack" : "pack_start,false,false,0",
        "xtype" : "Table",
        "xtype" : "Table",
+       "* pack" : "pack_start,false,false,0",
        "uint column_spacing" : 2,
        "n_columns" : 2,
        "$ xns" : "Gtk",
        "uint column_spacing" : 2,
        "n_columns" : 2,
        "$ xns" : "Gtk",
          "items" : [
           {
            "id" : "dbcellrenderer",
          "items" : [
           {
            "id" : "dbcellrenderer",
-           "xtype" : "CellRendererText",
            "* pack" : "pack_start,true",
            "* pack" : "pack_start,true",
+           "xtype" : "CellRendererText",
            "$ xns" : "Gtk"
           },
           {
            "id" : "dbmodel",
            "$ xns" : "Gtk"
           },
           {
            "id" : "dbmodel",
-           "xtype" : "ListStore",
            "* pack" : "set_model",
            "* pack" : "set_model",
+           "xtype" : "ListStore",
            "| void loadTickets" : "  () {\n\n    RooTicket.singleton().loadTickets();\n    \n    _this.ticketsel.loading = true;\n\n    this.el.clear();                                    \n    Gtk.TreeIter iter;\n    var el = this.el;\n    \n    el.append(out iter);\n\n    \n    el.set_value(iter, 0, \"\");\n    el.set_value(iter, 1, \"-- select a ticket --\");\n    \n    _this.ticketsel.el.set_active_iter(iter);\n    var tickets = RooTicket.singleton().tickets;\n    foreach(var ticket in tickets) {\n    \n        el.append(out iter);\n        \n        el.set_value(iter, 0, ticket.id);\n        el.set_value(iter, 1, \"#%s [%s] %s\".printf( ticket.id, ticket.project_id_name , ticket.summary));\n        \n        //if (data.get(i) == cur) {\n         //   _this.build_module.el.set_active_iter(iter);\n       // }\n        \n    }\n    \n    _this.ticketsel.loading = false;\n     //this.el.set_sort_column_id(0, Gtk.SortType.ASCENDING);          \n                                     \n}\n",
            "$ columns" : "typeof(string),typeof(string)",
            "n_columns" : 2,
            "| void loadTickets" : "  () {\n\n    RooTicket.singleton().loadTickets();\n    \n    _this.ticketsel.loading = true;\n\n    this.el.clear();                                    \n    Gtk.TreeIter iter;\n    var el = this.el;\n    \n    el.append(out iter);\n\n    \n    el.set_value(iter, 0, \"\");\n    el.set_value(iter, 1, \"-- select a ticket --\");\n    \n    _this.ticketsel.el.set_active_iter(iter);\n    var tickets = RooTicket.singleton().tickets;\n    foreach(var ticket in tickets) {\n    \n        el.append(out iter);\n        \n        el.set_value(iter, 0, ticket.id);\n        el.set_value(iter, 1, \"#%s [%s] %s\".printf( ticket.id, ticket.project_id_name , ticket.summary));\n        \n        //if (data.get(i) == cur) {\n         //   _this.build_module.el.set_active_iter(iter);\n       // }\n        \n    }\n    \n    _this.ticketsel.loading = false;\n     //this.el.set_sort_column_id(0, Gtk.SortType.ASCENDING);          \n                                     \n}\n",
            "$ columns" : "typeof(string),typeof(string)",
            "n_columns" : 2,
     },
     {
      "label" : "Do not create Branch",
     },
     {
      "label" : "Do not create Branch",
-     "xtype" : "Button",
      "* pack" : "add_action_widget,0",
      "* pack" : "add_action_widget,0",
+     "xtype" : "Button",
      "Gtk.ReliefStyle relief" : "Gtk.ReliefStyle.NONE",
      "$ xns" : "Gtk"
     },
     {
      "label" : "Create Branch",
      "Gtk.ReliefStyle relief" : "Gtk.ReliefStyle.NONE",
      "$ xns" : "Gtk"
     },
     {
      "label" : "Create Branch",
-     "xtype" : "Button",
      "* pack" : "add_action_widget,1",
      "* pack" : "add_action_widget,1",
+     "xtype" : "Button",
      "$ xns" : "Gtk"
     }
    ]
      "$ xns" : "Gtk"
     }
    ]
index b3bc91d..5173aa3 100644 (file)
@@ -20,6 +20,7 @@ public class NewBranch : Object
         // my vars (def)
     public GitRepo? repo;
     public bool running;
         // my vars (def)
     public GitRepo? repo;
     public bool running;
+    public Gee.ArrayList<GitMonitorQueue> queue;
 
     // ctor
     public NewBranch()
 
     // ctor
     public NewBranch()
@@ -30,6 +31,7 @@ public class NewBranch : Object
         // my vars (dec)
         this.repo = null;
         this.running = false;
         // my vars (dec)
         this.repo = null;
         this.running = false;
+        this.queue = null;
 
         // set gobject values
         this.el.title = "Create a working branch ";
 
         // set gobject values
         this.el.title = "Create a working branch ";
@@ -82,6 +84,9 @@ public class NewBranch : Object
                                success = this.repo.createBranchNamed(bn);
                        }
             }
                                success = this.repo.createBranchNamed(bn);
                        }
             }
+            
+            GitMonitor.gitmonitor.restoreQueue( this.queue );
+            GitMonitor.gitmonitor.runQueue();    
                GitMonitor.gitmonitor.start();
             this.running = false; 
         
                GitMonitor.gitmonitor.start();
             this.running = false; 
         
@@ -99,12 +104,14 @@ public class NewBranch : Object
     }
 
     // user defined functions
     }
 
     // user defined functions
-    public   void show ( GitRepo repo ) 
+    public   void show ( GitRepo repo, Gee.ArrayList<GitMonitorQueue> queue ) 
     {
          // this.el.set_gravity(Gdk.Gravity.NORTH);
     {
          // this.el.set_gravity(Gdk.Gravity.NORTH);
-        if (this.running) {
-               return;
+        if (this.running) { // should not happen!!
+               GLib.error("new branch show called, when already being displayed?");
        }
        }
+       this.queue = queue;
+       
        this.running  = true;
        GitMonitor.gitmonitor.stop();
        
        this.running  = true;
        GitMonitor.gitmonitor.stop();