Clones.bjs
authorAlan Knowles <alan@roojs.com>
Tue, 30 Oct 2018 08:41:55 +0000 (16:41 +0800)
committerAlan Knowles <alan@roojs.com>
Tue, 30 Oct 2018 08:41:55 +0000 (16:41 +0800)
Clones.vala
NewBranch.bjs
NewBranch.vala

NewBranch.bjs
NewBranch.vala [new file with mode: 0644]

index f6e1b47..2530339 100644 (file)
@@ -7,5 +7,238 @@
  "modOrder" : "",
  "build_module" : "gitlive",
  "items" : [
+  {
+   "listeners" : {
+    "delete_event" : "(self, event) => {\n    this.el.hide();\n    return true; \n    //test  \n}\n ",
+    "response" : "(self, response_id) =>  { \n \n        this.el.hide();\n  \n}"
+   },
+   "default_width" : 800,
+   "$ deletable" : true,
+   "| void show" : "()    {\n\n    \n    this.el.set_deletable(false);\n    this.el.set_gravity(Gdk.Gravity.NORTH);\n    this.el.move(Gdk.Screen.width() / 2 ,0);\n    this.el.show_all();\n    _this.reposStore.load();\n    // load clones..\n//     this.get('/reposStore').load();\n    \n    //this.get('/ok_button').el.set_sensitive(false);\n    \n    // block until we return.\n//    var run_ret = this.el.run();\n//    if (run_ret < 1 ) {\n//        return  \"DONE\";\n//    }\n//    print(\"RUN RETURN : \" + run_ret);\n//    return \"DONE\";\n    //print(JSON.stringify(this.get('bug').getValue()));\n   // return this.get('bug').getValue();\n    //this.success = c.success;\n}\n",
+   "title" : "Manage Clones",
+   "xtype" : "Dialog",
+   "default_height" : 500,
+   "$ modal" : true,
+   "$ xns" : "Gtk",
+   "border_width" : 3,
+   "items" : [
+    {
+     "xtype" : "Box",
+     "$ pack" : "get_content_area().add ",
+     "$ xns" : "Gtk",
+     "Gtk.Orientation orientation" : "Gtk.Orientation.VERTICAL",
+     "items" : [
+      {
+       "* pack" : "pack_start,false,false,0",
+       "xtype" : "Box",
+       "$ xns" : "Gtk",
+       "Gtk.Orientation orientation" : "Gtk.Orientation.HORIZONTAL",
+       "items" : [
+        {
+         "listeners" : {
+          "clicked" : "() => {\n\n/*    var rv = this.get('/reposView');\n    var rs = this.get('/reposStore');\n    if (rv.el.get_selection().count_selected_rows() != 1) {\n        //nothing?\n        // error condition.\n        return;\n    }\n    var Remotes =     imports.Remotes.Remotes;\n    \n \n    var ret = {};       \n    var s = rv.el.get_selection();\n    var path = '';\n    s.selected_foreach(function(model,p,iter) {\n                                                    \n       path = model.get_value(iter, 6).value.get_string();\n     \n    }); \n\n    var repo = false;\n    rs.repos.forEach(function(r) {\n        if (r.repopath == path) {\n            repo = r;\n        \n        }\n    \n    });\n    Remotes.repo = repo;\n    Remotes.el.set_transient_for(Clones.el);\n    Clones.el.set_title(\"Manage Clones - \" + repo.repopath);\n    Remotes.show();\n    Clones.el.set_title(\"Manage Clones\");\n\n  */   \n    \n     \n\n       \n    \n    \n}"
+         },
+         "label" : "Remotes / Clones",
+         "xtype" : "Button",
+         "* pack" : "add",
+         "$ xns" : "Gtk"
+        },
+        {
+         "listeners" : {
+          "clicked" : "() => {\n/*\n    var rv = this.get('/reposView');\n    var rs = this.get('/reposStore');\n    if (rv.el.get_selection().count_selected_rows() != 1) {\n        //nothing?\n        // error condition.\n        return;\n    }\n    var Branches =     imports.Branches.Branches;\n    \n \n    var ret = {};       \n    var s = rv.el.get_selection();\n    var path = '';\n    s.selected_foreach(function(model,p,iter) {\n                                                    \n       path = model.get_value(iter, 6).value.get_string();\n     \n    }); \n\n    var repo = false;\n    rs.repos.forEach(function(r) {\n        if (r.repopath == path) {\n            repo = r;\n        \n        }\n    \n    });\n    Branches.repo = repo;\n    Branches.el.set_transient_for(Clones.el);\n    Clones.el.set_title(\"Manage Clones - \" + repo.repopath);\n    Branches.show();\n    Clones.el.set_title(\"Manage Clones\");\n\n     \n    \n    \n    \n\n       \n */   \n    \n}"
+         },
+         "label" : "Branches",
+         "xtype" : "Button",
+         "* pack" : "add",
+         "$ xns" : "Gtk"
+        },
+        {
+         "listeners" : {
+          "clicked" : "() =>  {\n/*\n    var rv = this.get('/reposView');\n    var rs = this.get('/reposStore');\n    if (rv.el.get_selection().count_selected_rows() != 1) {\n        //nothing?\n        // error condition.\n        return;\n    }\n    var Merger =     imports.Merger.Merger;\n    \n \n    var ret = {};       \n    var s = rv.el.get_selection();\n    var path = '';\n    s.selected_foreach(function(model,p,iter) {\n                                                    \n       path = model.get_value(iter, 6).value.get_string();\n     \n    }); \n\n    var repo = false;\n    rs.repos.forEach(function(r) {\n        if (r.repopath == path) {\n            repo = r;\n        \n        }\n    \n    });\n    Merger.repo = repo;\n    Merger.el.set_transient_for(Clones.el);\n    Clones.el.set_title(\"Manage Clones - \" + repo.repopath);\n    Merger.show();\n    Clones.el.set_title(\"Manage Clones\");\n\n    \n    \n\n     \n    \n\n */      \n    \n    \n}"
+         },
+         "label" : "Merge",
+         "xtype" : "Button",
+         "* pack" : "add",
+         "$ xns" : "Gtk"
+        },
+        {
+         "listeners" : {
+          "clicked" : "() => {\n    \n    \n \n       \n    \n    \n}"
+         },
+         "label" : "Switch Branch",
+         "xtype" : "Button",
+         "* pack" : "add",
+         "$ xns" : "Gtk"
+        },
+        {
+         "listeners" : {
+          "clicked" : "() => {\n    \n    \n \n       \n    \n    \n}"
+         },
+         "label" : "Pull",
+         "xtype" : "Button",
+         "* pack" : "add",
+         "$ xns" : "Gtk"
+        }
+       ]
+      },
+      {
+       "* init" : "  {\n  \n   this.el.set_policy (Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC);\n}\n",
+       "bool expand" : true,
+       "bool hexpand" : true,
+       "xtype" : "ScrolledWindow",
+       "* pack" : "pack_end,true,true,0",
+       "Gtk.ShadowType shadow_type" : "Gtk.ShadowType.IN",
+       "$ xns" : "Gtk",
+       "items" : [
+        {
+         "listeners" : {
+          "cursor_changed" : "()  => {\n  // SEE SELECTION.CHANGED\n  /*\n  \n  return;\n  \n    if (this.el.get_selection().count_selected_rows() < 1) {\n        //nothing? - clea it?\n        return;\n    }\n        var ret = {};         \n    var model = this.get('/changedFilesStore');\n\n     var s = this.el.get_selection();\n     var files = [];\n    s.selected_foreach(function(model,p,iter) {\n    \n       files.push( model.get_value(iter, 0).value.get_string());\n     \n    });\n    this.get('/patchview').showDiff(files); \n    //var value = ''+ ret.model.get_value(ret.iter, 1).value.get_string();\n     //print(\"OUT?\" + value);// id..\n    // load the list in the right grid..\n     \n    return true;\n*/\n}"
+         },
+         "id" : "reposView",
+         "* init" : " \n{\n    var selection = this.el.get_selection();\n    selection.set_mode( Gtk.SelectionMode.SINGLE);\n\n\n    var description = new Pango.FontDescription();\n    description.set_size(10000);\n    this.el.override_font(description);\n \n}\n",
+         "xtype" : "TreeView",
+         "* pack" : "add",
+         "$ xns" : "Gtk",
+         "items" : [
+          {
+           "int n_columns" : 8,
+           "id" : "reposStore",
+           "columns" : "     typeof(string),  // 0 repo\n     typeof(string),  // 1 current branch\n     typeof(string),  // 2 all branch\n     typeof(string),  // 3 updated\n     typeof(bool),   // 4 auto commit\n     typeof(bool),   // 5 auto push\n     typeof(string),   // 7 repopath\n      typeof(string)   // 8 color highlighting?\n      ",
+           "$ pathToRepo" : "function(path) {\n\n    var tr= this.repos;\n\n    \n    for(var i =0 ; i < tr.length; i++) {\n        if (tr[i].repopath == path) {\n            return tr[i];\n        }\n    } \n    return false; \n}\n",
+           "xtype" : "ListStore",
+           "* pack" : "set_model",
+           "| void load" : "()\n{\n    //this.insert(citer,iter,0);\n    print(\"getting list\");\n    var tr = GitRepo.list();\n    \n    this.el.clear();\n    \n    // fixme .. sort by last updated ...\n    \n    \n    for(var i =0 ; i < tr.length; i++) {\n\t    var repo = tr.index(i);\n\t    repo.loadBranches();\n\t    \n\t    Gtk.TreeIter iter;\n\t    this.el.append(out iter);\n     \n        \n        //print(JSON.stringify(ret,null,4));\n         //tr[i].getBranches();\n         //tr[i].getStatus();\n         //var hi;\n         //try {\n             //tr[i].debug=1;\n         //     hi = tr[i].history('/', 1, 'branch', tr[i].currentBranch.name );\n//             print(JSON.stringify(hi,null,4));\n        // } catch(e) { print(e);}\n          \n        this.el.set_value(iter, 0,   repo.name );\n        this.el.set_value( iter, 1, repo.currentBranch.name   );\n        this.el.set_value( iter, 2,  repo.branchesToString()   );\n//        this.el.set_value(ret.iter, 2, '' + repo.branches.map(\n//                        function(e) { return e.name; \n//                    }).join(', ') \n //        );\n//        this.el.set_value(iter, 3, '' +  (!hi  ? '??' : hi[0].changed_raw));        \n        this.el.set_value(iter, 4, repo.is_autocommit() );                \n        this.el.set_value(iter, 5, repo.is_autopush() );                        \n        this.el.set_value(iter, 6,  repo.gitdir );  \n        // highlight color.\n        var cb = repo.currentBranch;\n        //print(JSON.stringify(cb,null,4));\n        var col = \"#ffffff\";\n        /*\n        if (cb.lastrev != cb.remoterev) {\n            col =  '#ff0000';\n        }\n        if (tr[i].hasLocalChanges) {\n            col =  '#0000ff';\n        }\n        if  ((cb.lastrev != cb.remoterev) && (tr[i].hasLocalChanges)) {\n            col =  '#ff00ff';\n        }\n        */\n        this.el.set_value(iter, 7, col  );      \n        \n    }     \n    this.el.set_sort_column_id (0, Gtk.SortType.ASCENDING);\n} ",
+           "$ xns" : "Gtk"
+          },
+          {
+           "id" : "tv_autocommit",
+           "* init" : "\n//    this.items[0].el.set_activatable(true);\n this.el.add_attribute(_this.cr_autocommit.el , \"active\", 4 );\n\n",
+           "* pack" : "append_column",
+           "title" : "Auto Commit",
+           "xtype" : "TreeViewColumn",
+           "min_width" : 50,
+           "$ xns" : "Gtk",
+           "items" : [
+            {
+             "listeners" : {
+              "toggled" : "  (self, path)  => {\n/*    var ret ={} ;\n    var store = this.get('/reposStore');\n    store.el.get_iter_from_string(ret, path);\n                                                                 \n    var value =   store.el.get_value(ret.iter,4).value.get_boolean();\n                                                                 \n    //print(JSON.stringify(value));\n    store.el.set_value(ret.iter,4, !value);\n    \n     var path =  store.el.get_value(ret.iter, 6).value.get_string();\n     var repo = imports.Scm.Repo.Repo.get(path);\n     repo.autocommit(!value);\n  */   \n    \n    \n}"
+             },
+             "id" : "cr_autocommit",
+             "xtype" : "CellRendererToggle",
+             "* pack" : "pack_start,false",
+             "$ xns" : "Gtk",
+             "$ mode" : "Gtk.CellRendererMode.ACTIVATABLE"
+            }
+           ]
+          },
+          {
+           "id" : "tv_autopush",
+           "* init" : " \n    this.el.add_attribute(_this.cr_autopush.el , \"active\", 5 );\n//      this.items[0].el.set_activatable(true);\n\n",
+           "* pack" : "append_column",
+           "title" : "Auto Push",
+           "xtype" : "TreeViewColumn",
+           "min_width" : 50,
+           "$ xns" : "Gtk",
+           "items" : [
+            {
+             "listeners" : {
+              "toggled" : "  (self, path)  => {\n/*    var ret ={} ;\n    var store = this.get('/reposStore');\n    store.el.get_iter_from_string(ret, path);\n                                                                 \n    var value =   store.el.get_value(ret.iter,5).value.get_boolean();\n                                                                 \n    //print(JSON.stringify(value));\n    store.el.set_value(ret.iter,5, !value);\n      var path =  store.el.get_value(ret.iter, 6).value.get_string();\n     var repo = imports.Scm.Repo.Repo.get(path);\n     repo.autopush(!value);\n    */\n}"
+             },
+             "id" : "cr_autopush",
+             "xtype" : "CellRendererToggle",
+             "* pack" : "pack_start,false",
+             "$ xns" : "Gtk",
+             "$ mode" : "Gtk.CellRendererMode.ACTIVATABLE"
+            }
+           ]
+          },
+          {
+           "id" : "tv_repo",
+           "Gtk.SortType sort_order" : "Gtk.SortType.ASCENDING",
+           "* init" : "\n    this.el.add_attribute(_this.cr_repo.el , \"markup\", 0 );\n",
+           "title" : "Repo",
+           "* pack" : "append_column",
+           "xtype" : "TreeViewColumn",
+           "int sort_column_id" : 0,
+           "min_width" : 200,
+           "$ xns" : "Gtk",
+           "resizable" : true,
+           "items" : [
+            {
+             "id" : "cr_repo",
+             "xtype" : "CellRendererText",
+             "* pack" : "pack_start,false",
+             "$ xns" : "Gtk"
+            }
+           ]
+          },
+          {
+           "id" : "tv_current_branch",
+           "* init" : " \n    this.el.add_attribute(_this.cr_current_branch.el , \"markup\", 1 );\n     this.el.add_attribute(_this.cr_current_branch.el, \"cell-background\", 7 );\n \n",
+           "* pack" : "append_column",
+           "title" : "Current Branch",
+           "xtype" : "TreeViewColumn",
+           "min_width" : 50,
+           "$ xns" : "Gtk",
+           "items" : [
+            {
+             "id" : "cr_current_branch",
+             "xtype" : "CellRendererText",
+             "* pack" : "pack_start,false",
+             "$ xns" : "Gtk"
+            }
+           ]
+          },
+          {
+           "id" : "tv_last_updated",
+           "* init" : "\n    this.el.add_attribute(_this.cr_last_updated.el , \"markup\", 3 );\n",
+           "* pack" : "append_column",
+           "title" : "Last updated",
+           "xtype" : "TreeViewColumn",
+           "min_width" : 50,
+           "$ xns" : "Gtk",
+           "items" : [
+            {
+             "id" : "cr_last_updated",
+             "xtype" : "CellRendererText",
+             "* pack" : "pack_start,false",
+             "$ xns" : "Gtk"
+            }
+           ]
+          },
+          {
+           "id" : "tv_all_branches",
+           "* init" : "    this.el.add_attribute(_this.cr_all_branches.el , \"markup\", 2 );\n\n",
+           "title" : "All Branches",
+           "* pack" : "append_column",
+           "xtype" : "TreeViewColumn",
+           "min_width" : 50,
+           "$ xns" : "Gtk",
+           "resizable" : false,
+           "items" : [
+            {
+             "id" : "cr_all_branches",
+             "xtype" : "CellRendererText",
+             "* pack" : "pack_start,false",
+             "$ xns" : "Gtk"
+            }
+           ]
+          }
+         ]
+        }
+       ]
+      }
+     ]
+    },
+    {
+     "label" : "Close",
+     "id" : "ok_button",
+     "bool expand" : false,
+     "* pack" : "add_action_widget,1 ",
+     "xtype" : "Button",
+     "$ xns" : "Gtk"
+    }
+   ]
+  }
  ]
 }
\ No newline at end of file
diff --git a/NewBranch.vala b/NewBranch.vala
new file mode 100644 (file)
index 0000000..64d3481
--- /dev/null
@@ -0,0 +1,1043 @@
+static NewBranch  _NewBranch;
+
+public class NewBranch : Object
+{
+    public Gtk.Dialog el;
+    private NewBranch  _this;
+
+    public static NewBranch singleton()
+    {
+        if (_NewBranch == null) {
+            _NewBranch= new NewBranch();
+        }
+        return _NewBranch;
+    }
+    public Xcls_reposView reposView;
+    public Xcls_reposStore reposStore;
+    public Xcls_tv_autocommit tv_autocommit;
+    public Xcls_cr_autocommit cr_autocommit;
+    public Xcls_tv_autopush tv_autopush;
+    public Xcls_cr_autopush cr_autopush;
+    public Xcls_tv_repo tv_repo;
+    public Xcls_cr_repo cr_repo;
+    public Xcls_tv_current_branch tv_current_branch;
+    public Xcls_cr_current_branch cr_current_branch;
+    public Xcls_tv_last_updated tv_last_updated;
+    public Xcls_cr_last_updated cr_last_updated;
+    public Xcls_tv_all_branches tv_all_branches;
+    public Xcls_cr_all_branches cr_all_branches;
+    public Xcls_ok_button ok_button;
+
+        // my vars (def)
+
+    // ctor
+    public NewBranch()
+    {
+        _this = this;
+        this.el = new Gtk.Dialog();
+
+        // my vars (dec)
+
+        // set gobject values
+        this.el.title = "Manage Clones";
+        this.el.border_width = 3;
+        this.el.default_height = 500;
+        this.el.default_width = 800;
+        this.el.deletable = true;
+        this.el.modal = true;
+        var child_0 = new Xcls_Box2( _this );
+        child_0.ref();
+        this.el.get_content_area().add (  child_0.el  );
+        var child_1 = new Xcls_ok_button( _this );
+        child_1.ref();
+        this.el.add_action_widget (  child_1.el , 1  );
+
+        //listeners
+        this.el.delete_event.connect( (self, event) => {
+            this.el.hide();
+            return true; 
+            //test  
+        });
+        this.el.response.connect( (self, response_id) =>  { 
+         
+                this.el.hide();
+          
+        });
+    }
+
+    // user defined functions
+    public void show ()    {
+    
+        
+        this.el.set_deletable(false);
+        this.el.set_gravity(Gdk.Gravity.NORTH);
+        this.el.move(Gdk.Screen.width() / 2 ,0);
+        this.el.show_all();
+        _this.reposStore.load();
+        // load clones..
+    //     this.get('/reposStore').load();
+        
+        //this.get('/ok_button').el.set_sensitive(false);
+        
+        // block until we return.
+    //    var run_ret = this.el.run();
+    //    if (run_ret < 1 ) {
+    //        return  "DONE";
+    //    }
+    //    print("RUN RETURN : " + run_ret);
+    //    return "DONE";
+        //print(JSON.stringify(this.get('bug').getValue()));
+       // return this.get('bug').getValue();
+        //this.success = c.success;
+    }
+    public class Xcls_Box2 : Object
+    {
+        public Gtk.Box el;
+        private NewBranch  _this;
+
+
+            // my vars (def)
+
+        // ctor
+        public Xcls_Box2(NewBranch _owner )
+        {
+            _this = _owner;
+            this.el = new Gtk.Box( Gtk.Orientation.VERTICAL, 0 );
+
+            // my vars (dec)
+
+            // set gobject values
+            var child_0 = new Xcls_Box3( _this );
+            child_0.ref();
+            this.el.pack_start (  child_0.el , false,false,0 );
+            var child_1 = new Xcls_ScrolledWindow9( _this );
+            child_1.ref();
+            this.el.pack_end (  child_1.el , true,true,0 );
+        }
+
+        // user defined functions
+    }
+    public class Xcls_Box3 : Object
+    {
+        public Gtk.Box el;
+        private NewBranch  _this;
+
+
+            // my vars (def)
+
+        // ctor
+        public Xcls_Box3(NewBranch _owner )
+        {
+            _this = _owner;
+            this.el = new Gtk.Box( Gtk.Orientation.HORIZONTAL, 0 );
+
+            // my vars (dec)
+
+            // set gobject values
+            var child_0 = new Xcls_Button4( _this );
+            child_0.ref();
+            this.el.add (  child_0.el  );
+            var child_1 = new Xcls_Button5( _this );
+            child_1.ref();
+            this.el.add (  child_1.el  );
+            var child_2 = new Xcls_Button6( _this );
+            child_2.ref();
+            this.el.add (  child_2.el  );
+            var child_3 = new Xcls_Button7( _this );
+            child_3.ref();
+            this.el.add (  child_3.el  );
+            var child_4 = new Xcls_Button8( _this );
+            child_4.ref();
+            this.el.add (  child_4.el  );
+        }
+
+        // user defined functions
+    }
+    public class Xcls_Button4 : Object
+    {
+        public Gtk.Button el;
+        private NewBranch  _this;
+
+
+            // my vars (def)
+
+        // ctor
+        public Xcls_Button4(NewBranch _owner )
+        {
+            _this = _owner;
+            this.el = new Gtk.Button();
+
+            // my vars (dec)
+
+            // set gobject values
+            this.el.label = "Remotes / Clones";
+
+            //listeners
+            this.el.clicked.connect( () => {
+            
+            /*    var rv = this.get('/reposView');
+                var rs = this.get('/reposStore');
+                if (rv.el.get_selection().count_selected_rows() != 1) {
+                    //nothing?
+                    // error condition.
+                    return;
+                }
+                var Remotes =     imports.Remotes.Remotes;
+                
+             
+                var ret = {};       
+                var s = rv.el.get_selection();
+                var path = '';
+                s.selected_foreach(function(model,p,iter) {
+                                                                
+                   path = model.get_value(iter, 6).value.get_string();
+                 
+                }); 
+            
+                var repo = false;
+                rs.repos.forEach(function(r) {
+                    if (r.repopath == path) {
+                        repo = r;
+                    
+                    }
+                
+                });
+                Remotes.repo = repo;
+                Remotes.el.set_transient_for(Clones.el);
+                Clones.el.set_title("Manage Clones - " + repo.repopath);
+                Remotes.show();
+                Clones.el.set_title("Manage Clones");
+            
+              */   
+                
+                 
+            
+                   
+                
+                
+            });
+        }
+
+        // user defined functions
+    }
+
+    public class Xcls_Button5 : Object
+    {
+        public Gtk.Button el;
+        private NewBranch  _this;
+
+
+            // my vars (def)
+
+        // ctor
+        public Xcls_Button5(NewBranch _owner )
+        {
+            _this = _owner;
+            this.el = new Gtk.Button();
+
+            // my vars (dec)
+
+            // set gobject values
+            this.el.label = "Branches";
+
+            //listeners
+            this.el.clicked.connect( () => {
+            /*
+                var rv = this.get('/reposView');
+                var rs = this.get('/reposStore');
+                if (rv.el.get_selection().count_selected_rows() != 1) {
+                    //nothing?
+                    // error condition.
+                    return;
+                }
+                var Branches =     imports.Branches.Branches;
+                
+             
+                var ret = {};       
+                var s = rv.el.get_selection();
+                var path = '';
+                s.selected_foreach(function(model,p,iter) {
+                                                                
+                   path = model.get_value(iter, 6).value.get_string();
+                 
+                }); 
+            
+                var repo = false;
+                rs.repos.forEach(function(r) {
+                    if (r.repopath == path) {
+                        repo = r;
+                    
+                    }
+                
+                });
+                Branches.repo = repo;
+                Branches.el.set_transient_for(Clones.el);
+                Clones.el.set_title("Manage Clones - " + repo.repopath);
+                Branches.show();
+                Clones.el.set_title("Manage Clones");
+            
+                 
+                
+                
+                
+            
+                   
+             */   
+                
+            });
+        }
+
+        // user defined functions
+    }
+
+    public class Xcls_Button6 : Object
+    {
+        public Gtk.Button el;
+        private NewBranch  _this;
+
+
+            // my vars (def)
+
+        // ctor
+        public Xcls_Button6(NewBranch _owner )
+        {
+            _this = _owner;
+            this.el = new Gtk.Button();
+
+            // my vars (dec)
+
+            // set gobject values
+            this.el.label = "Merge";
+
+            //listeners
+            this.el.clicked.connect( () =>  {
+            /*
+                var rv = this.get('/reposView');
+                var rs = this.get('/reposStore');
+                if (rv.el.get_selection().count_selected_rows() != 1) {
+                    //nothing?
+                    // error condition.
+                    return;
+                }
+                var Merger =     imports.Merger.Merger;
+                
+             
+                var ret = {};       
+                var s = rv.el.get_selection();
+                var path = '';
+                s.selected_foreach(function(model,p,iter) {
+                                                                
+                   path = model.get_value(iter, 6).value.get_string();
+                 
+                }); 
+            
+                var repo = false;
+                rs.repos.forEach(function(r) {
+                    if (r.repopath == path) {
+                        repo = r;
+                    
+                    }
+                
+                });
+                Merger.repo = repo;
+                Merger.el.set_transient_for(Clones.el);
+                Clones.el.set_title("Manage Clones - " + repo.repopath);
+                Merger.show();
+                Clones.el.set_title("Manage Clones");
+            
+                
+                
+            
+                 
+                
+            
+             */      
+                
+                
+            });
+        }
+
+        // user defined functions
+    }
+
+    public class Xcls_Button7 : Object
+    {
+        public Gtk.Button el;
+        private NewBranch  _this;
+
+
+            // my vars (def)
+
+        // ctor
+        public Xcls_Button7(NewBranch _owner )
+        {
+            _this = _owner;
+            this.el = new Gtk.Button();
+
+            // my vars (dec)
+
+            // set gobject values
+            this.el.label = "Switch Branch";
+
+            //listeners
+            this.el.clicked.connect( () => {
+                
+                
+             
+                   
+                
+                
+            });
+        }
+
+        // user defined functions
+    }
+
+    public class Xcls_Button8 : Object
+    {
+        public Gtk.Button el;
+        private NewBranch  _this;
+
+
+            // my vars (def)
+
+        // ctor
+        public Xcls_Button8(NewBranch _owner )
+        {
+            _this = _owner;
+            this.el = new Gtk.Button();
+
+            // my vars (dec)
+
+            // set gobject values
+            this.el.label = "Pull";
+
+            //listeners
+            this.el.clicked.connect( () => {
+                
+                
+             
+                   
+                
+                
+            });
+        }
+
+        // user defined functions
+    }
+
+
+    public class Xcls_ScrolledWindow9 : Object
+    {
+        public Gtk.ScrolledWindow el;
+        private NewBranch  _this;
+
+
+            // my vars (def)
+
+        // ctor
+        public Xcls_ScrolledWindow9(NewBranch _owner )
+        {
+            _this = _owner;
+            this.el = new Gtk.ScrolledWindow( null, null );
+
+            // my vars (dec)
+
+            // set gobject values
+            this.el.expand = true;
+            this.el.hexpand = true;
+            this.el.shadow_type = Gtk.ShadowType.IN;
+            var child_0 = new Xcls_reposView( _this );
+            child_0.ref();
+            this.el.add (  child_0.el  );
+
+            // init method
+
+            {
+              
+               this.el.set_policy (Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC);
+            }
+        }
+
+        // user defined functions
+    }
+    public class Xcls_reposView : Object
+    {
+        public Gtk.TreeView el;
+        private NewBranch  _this;
+
+
+            // my vars (def)
+
+        // ctor
+        public Xcls_reposView(NewBranch _owner )
+        {
+            _this = _owner;
+            _this.reposView = this;
+            this.el = new Gtk.TreeView();
+
+            // my vars (dec)
+
+            // set gobject values
+            var child_0 = new Xcls_reposStore( _this );
+            child_0.ref();
+            this.el.set_model (  child_0.el  );
+            var child_1 = new Xcls_tv_autocommit( _this );
+            child_1.ref();
+            this.el.append_column (  child_1.el  );
+            var child_2 = new Xcls_tv_autopush( _this );
+            child_2.ref();
+            this.el.append_column (  child_2.el  );
+            var child_3 = new Xcls_tv_repo( _this );
+            child_3.ref();
+            this.el.append_column (  child_3.el  );
+            var child_4 = new Xcls_tv_current_branch( _this );
+            child_4.ref();
+            this.el.append_column (  child_4.el  );
+            var child_5 = new Xcls_tv_last_updated( _this );
+            child_5.ref();
+            this.el.append_column (  child_5.el  );
+            var child_6 = new Xcls_tv_all_branches( _this );
+            child_6.ref();
+            this.el.append_column (  child_6.el  );
+
+            // init method
+
+            {
+                var selection = this.el.get_selection();
+                selection.set_mode( Gtk.SelectionMode.SINGLE);
+            
+            
+                var description = new Pango.FontDescription();
+                description.set_size(10000);
+                this.el.override_font(description);
+             
+            }
+
+            //listeners
+            this.el.cursor_changed.connect( ()  => {
+              // SEE SELECTION.CHANGED
+              /*
+              
+              return;
+              
+                if (this.el.get_selection().count_selected_rows() < 1) {
+                    //nothing? - clea it?
+                    return;
+                }
+                    var ret = {};         
+                var model = this.get('/changedFilesStore');
+            
+                 var s = this.el.get_selection();
+                 var files = [];
+                s.selected_foreach(function(model,p,iter) {
+                
+                   files.push( model.get_value(iter, 0).value.get_string());
+                 
+                });
+                this.get('/patchview').showDiff(files); 
+                //var value = ''+ ret.model.get_value(ret.iter, 1).value.get_string();
+                 //print("OUT?" + value);// id..
+                // load the list in the right grid..
+                 
+                return true;
+            */
+            });
+        }
+
+        // user defined functions
+    }
+    public class Xcls_reposStore : Object
+    {
+        public Gtk.ListStore el;
+        private NewBranch  _this;
+
+
+            // my vars (def)
+
+        // ctor
+        public Xcls_reposStore(NewBranch _owner )
+        {
+            _this = _owner;
+            _this.reposStore = this;
+            this.el = new Gtk.ListStore( 8,      typeof(string),  // 0 repo
+     typeof(string),  // 1 current branch
+     typeof(string),  // 2 all branch
+     typeof(string),  // 3 updated
+     typeof(bool),   // 4 auto commit
+     typeof(bool),   // 5 auto push
+     typeof(string),   // 7 repopath
+      typeof(string)   // 8 color highlighting?
+       );
+
+            // my vars (dec)
+
+            // set gobject values
+        }
+
+        // user defined functions
+        public void load ()
+        {
+            //this.insert(citer,iter,0);
+            print("getting list");
+            var tr = GitRepo.list();
+            
+            this.el.clear();
+            
+            // fixme .. sort by last updated ...
+            
+            
+            for(var i =0 ; i < tr.length; i++) {
+                   var repo = tr.index(i);
+                   repo.loadBranches();
+                   
+                   Gtk.TreeIter iter;
+                   this.el.append(out iter);
+             
+                
+                //print(JSON.stringify(ret,null,4));
+                 //tr[i].getBranches();
+                 //tr[i].getStatus();
+                 //var hi;
+                 //try {
+                     //tr[i].debug=1;
+                 //     hi = tr[i].history('/', 1, 'branch', tr[i].currentBranch.name );
+        //             print(JSON.stringify(hi,null,4));
+                // } catch(e) { print(e);}
+                  
+                this.el.set_value(iter, 0,   repo.name );
+                this.el.set_value( iter, 1, repo.currentBranch.name   );
+                this.el.set_value( iter, 2,  repo.branchesToString()   );
+        //        this.el.set_value(ret.iter, 2, '' + repo.branches.map(
+        //                        function(e) { return e.name; 
+        //                    }).join(', ') 
+         //        );
+        //        this.el.set_value(iter, 3, '' +  (!hi  ? '??' : hi[0].changed_raw));        
+                this.el.set_value(iter, 4, repo.is_autocommit() );                
+                this.el.set_value(iter, 5, repo.is_autopush() );                        
+                this.el.set_value(iter, 6,  repo.gitdir );  
+                // highlight color.
+                var cb = repo.currentBranch;
+                //print(JSON.stringify(cb,null,4));
+                var col = "#ffffff";
+                /*
+                if (cb.lastrev != cb.remoterev) {
+                    col =  '#ff0000';
+                }
+                if (tr[i].hasLocalChanges) {
+                    col =  '#0000ff';
+                }
+                if  ((cb.lastrev != cb.remoterev) && (tr[i].hasLocalChanges)) {
+                    col =  '#ff00ff';
+                }
+                */
+                this.el.set_value(iter, 7, col  );      
+                
+            }     
+            this.el.set_sort_column_id (0, Gtk.SortType.ASCENDING);
+        }
+    }
+
+    public class Xcls_tv_autocommit : Object
+    {
+        public Gtk.TreeViewColumn el;
+        private NewBranch  _this;
+
+
+            // my vars (def)
+
+        // ctor
+        public Xcls_tv_autocommit(NewBranch _owner )
+        {
+            _this = _owner;
+            _this.tv_autocommit = this;
+            this.el = new Gtk.TreeViewColumn();
+
+            // my vars (dec)
+
+            // set gobject values
+            this.el.title = "Auto Commit";
+            this.el.min_width = 50;
+            var child_0 = new Xcls_cr_autocommit( _this );
+            child_0.ref();
+            this.el.pack_start (  child_0.el , false );
+
+            // init method
+
+            //    this.items[0].el.set_activatable(true);
+             this.el.add_attribute(_this.cr_autocommit.el , "active", 4 );
+        }
+
+        // user defined functions
+    }
+    public class Xcls_cr_autocommit : Object
+    {
+        public Gtk.CellRendererToggle el;
+        private NewBranch  _this;
+
+
+            // my vars (def)
+
+        // ctor
+        public Xcls_cr_autocommit(NewBranch _owner )
+        {
+            _this = _owner;
+            _this.cr_autocommit = this;
+            this.el = new Gtk.CellRendererToggle();
+
+            // my vars (dec)
+
+            // set gobject values
+            this.el.mode = Gtk.CellRendererMode.ACTIVATABLE;
+
+            //listeners
+            this.el.toggled.connect( (self, path)  => {
+            /*    var ret ={} ;
+                var store = this.get('/reposStore');
+                store.el.get_iter_from_string(ret, path);
+                                                                             
+                var value =   store.el.get_value(ret.iter,4).value.get_boolean();
+                                                                             
+                //print(JSON.stringify(value));
+                store.el.set_value(ret.iter,4, !value);
+                
+                 var path =  store.el.get_value(ret.iter, 6).value.get_string();
+                 var repo = imports.Scm.Repo.Repo.get(path);
+                 repo.autocommit(!value);
+              */   
+                
+                
+            });
+        }
+
+        // user defined functions
+    }
+
+
+    public class Xcls_tv_autopush : Object
+    {
+        public Gtk.TreeViewColumn el;
+        private NewBranch  _this;
+
+
+            // my vars (def)
+
+        // ctor
+        public Xcls_tv_autopush(NewBranch _owner )
+        {
+            _this = _owner;
+            _this.tv_autopush = this;
+            this.el = new Gtk.TreeViewColumn();
+
+            // my vars (dec)
+
+            // set gobject values
+            this.el.title = "Auto Push";
+            this.el.min_width = 50;
+            var child_0 = new Xcls_cr_autopush( _this );
+            child_0.ref();
+            this.el.pack_start (  child_0.el , false );
+
+            // init method
+
+            this.el.add_attribute(_this.cr_autopush.el , "active", 5 );
+            //      this.items[0].el.set_activatable(true);
+        }
+
+        // user defined functions
+    }
+    public class Xcls_cr_autopush : Object
+    {
+        public Gtk.CellRendererToggle el;
+        private NewBranch  _this;
+
+
+            // my vars (def)
+
+        // ctor
+        public Xcls_cr_autopush(NewBranch _owner )
+        {
+            _this = _owner;
+            _this.cr_autopush = this;
+            this.el = new Gtk.CellRendererToggle();
+
+            // my vars (dec)
+
+            // set gobject values
+            this.el.mode = Gtk.CellRendererMode.ACTIVATABLE;
+
+            //listeners
+            this.el.toggled.connect( (self, path)  => {
+            /*    var ret ={} ;
+                var store = this.get('/reposStore');
+                store.el.get_iter_from_string(ret, path);
+                                                                             
+                var value =   store.el.get_value(ret.iter,5).value.get_boolean();
+                                                                             
+                //print(JSON.stringify(value));
+                store.el.set_value(ret.iter,5, !value);
+                  var path =  store.el.get_value(ret.iter, 6).value.get_string();
+                 var repo = imports.Scm.Repo.Repo.get(path);
+                 repo.autopush(!value);
+                */
+            });
+        }
+
+        // user defined functions
+    }
+
+
+    public class Xcls_tv_repo : Object
+    {
+        public Gtk.TreeViewColumn el;
+        private NewBranch  _this;
+
+
+            // my vars (def)
+
+        // ctor
+        public Xcls_tv_repo(NewBranch _owner )
+        {
+            _this = _owner;
+            _this.tv_repo = this;
+            this.el = new Gtk.TreeViewColumn();
+
+            // my vars (dec)
+
+            // set gobject values
+            this.el.sort_column_id = 0;
+            this.el.title = "Repo";
+            this.el.min_width = 200;
+            this.el.sort_order = Gtk.SortType.ASCENDING;
+            this.el.resizable = true;
+            var child_0 = new Xcls_cr_repo( _this );
+            child_0.ref();
+            this.el.pack_start (  child_0.el , false );
+
+            // init method
+
+            this.el.add_attribute(_this.cr_repo.el , "markup", 0 );
+        }
+
+        // user defined functions
+    }
+    public class Xcls_cr_repo : Object
+    {
+        public Gtk.CellRendererText el;
+        private NewBranch  _this;
+
+
+            // my vars (def)
+
+        // ctor
+        public Xcls_cr_repo(NewBranch _owner )
+        {
+            _this = _owner;
+            _this.cr_repo = this;
+            this.el = new Gtk.CellRendererText();
+
+            // my vars (dec)
+
+            // set gobject values
+        }
+
+        // user defined functions
+    }
+
+
+    public class Xcls_tv_current_branch : Object
+    {
+        public Gtk.TreeViewColumn el;
+        private NewBranch  _this;
+
+
+            // my vars (def)
+
+        // ctor
+        public Xcls_tv_current_branch(NewBranch _owner )
+        {
+            _this = _owner;
+            _this.tv_current_branch = this;
+            this.el = new Gtk.TreeViewColumn();
+
+            // my vars (dec)
+
+            // set gobject values
+            this.el.title = "Current Branch";
+            this.el.min_width = 50;
+            var child_0 = new Xcls_cr_current_branch( _this );
+            child_0.ref();
+            this.el.pack_start (  child_0.el , false );
+
+            // init method
+
+            this.el.add_attribute(_this.cr_current_branch.el , "markup", 1 );
+                 this.el.add_attribute(_this.cr_current_branch.el, "cell-background", 7 );
+        }
+
+        // user defined functions
+    }
+    public class Xcls_cr_current_branch : Object
+    {
+        public Gtk.CellRendererText el;
+        private NewBranch  _this;
+
+
+            // my vars (def)
+
+        // ctor
+        public Xcls_cr_current_branch(NewBranch _owner )
+        {
+            _this = _owner;
+            _this.cr_current_branch = this;
+            this.el = new Gtk.CellRendererText();
+
+            // my vars (dec)
+
+            // set gobject values
+        }
+
+        // user defined functions
+    }
+
+
+    public class Xcls_tv_last_updated : Object
+    {
+        public Gtk.TreeViewColumn el;
+        private NewBranch  _this;
+
+
+            // my vars (def)
+
+        // ctor
+        public Xcls_tv_last_updated(NewBranch _owner )
+        {
+            _this = _owner;
+            _this.tv_last_updated = this;
+            this.el = new Gtk.TreeViewColumn();
+
+            // my vars (dec)
+
+            // set gobject values
+            this.el.title = "Last updated";
+            this.el.min_width = 50;
+            var child_0 = new Xcls_cr_last_updated( _this );
+            child_0.ref();
+            this.el.pack_start (  child_0.el , false );
+
+            // init method
+
+            this.el.add_attribute(_this.cr_last_updated.el , "markup", 3 );
+        }
+
+        // user defined functions
+    }
+    public class Xcls_cr_last_updated : Object
+    {
+        public Gtk.CellRendererText el;
+        private NewBranch  _this;
+
+
+            // my vars (def)
+
+        // ctor
+        public Xcls_cr_last_updated(NewBranch _owner )
+        {
+            _this = _owner;
+            _this.cr_last_updated = this;
+            this.el = new Gtk.CellRendererText();
+
+            // my vars (dec)
+
+            // set gobject values
+        }
+
+        // user defined functions
+    }
+
+
+    public class Xcls_tv_all_branches : Object
+    {
+        public Gtk.TreeViewColumn el;
+        private NewBranch  _this;
+
+
+            // my vars (def)
+
+        // ctor
+        public Xcls_tv_all_branches(NewBranch _owner )
+        {
+            _this = _owner;
+            _this.tv_all_branches = this;
+            this.el = new Gtk.TreeViewColumn();
+
+            // my vars (dec)
+
+            // set gobject values
+            this.el.title = "All Branches";
+            this.el.min_width = 50;
+            this.el.resizable = false;
+            var child_0 = new Xcls_cr_all_branches( _this );
+            child_0.ref();
+            this.el.pack_start (  child_0.el , false );
+
+            // init method
+
+            this.el.add_attribute(_this.cr_all_branches.el , "markup", 2 );
+        }
+
+        // user defined functions
+    }
+    public class Xcls_cr_all_branches : Object
+    {
+        public Gtk.CellRendererText el;
+        private NewBranch  _this;
+
+
+            // my vars (def)
+
+        // ctor
+        public Xcls_cr_all_branches(NewBranch _owner )
+        {
+            _this = _owner;
+            _this.cr_all_branches = this;
+            this.el = new Gtk.CellRendererText();
+
+            // my vars (dec)
+
+            // set gobject values
+        }
+
+        // user defined functions
+    }
+
+
+
+
+
+    public class Xcls_ok_button : Object
+    {
+        public Gtk.Button el;
+        private NewBranch  _this;
+
+
+            // my vars (def)
+
+        // ctor
+        public Xcls_ok_button(NewBranch _owner )
+        {
+            _this = _owner;
+            _this.ok_button = this;
+            this.el = new Gtk.Button();
+
+            // my vars (dec)
+
+            // set gobject values
+            this.el.expand = false;
+            this.el.label = "Close";
+        }
+
+        // user defined functions
+    }
+
+}