static Clone _Clone; public class Clone : Object { public Gtk.Popover el; private Clone _this; public static Clone singleton() { if (_Clone == null) { _Clone= new Clone(); } return _Clone; } public Xcls_reposel reposel; public Xcls_prcellrenderer prcellrenderer; public Xcls_repomodel repomodel; // my vars (def) // ctor public Clone() { _this = this; this.el = new Gtk.Popover( null ); // my vars (dec) // set gobject values this.el.border_width = 0; this.el.modal = true; this.el.position = Gtk.PositionType.RIGHT; var child_0 = new Xcls_Box2( _this ); child_0.ref(); this.el.add ( child_0.el ); } // user defined functions public void show (Gtk.Widget btn) { //console.log('show all'); this.el.set_modal(true); this.el.set_relative_to(btn); this.repomodel.loadRepos(); //this.el.set_position(Gtk.PositionType.RIGHT); // window + header? GLib.debug("SHOWALL - POPIP\n"); this.el.show_all(); ; } public class Xcls_Box2 : Object { public Gtk.Box el; private Clone _this; // my vars (def) // ctor public Xcls_Box2(Clone _owner ) { _this = _owner; this.el = new Gtk.Box( Gtk.Orientation.HORIZONTAL, 0 ); // my vars (dec) // set gobject values this.el.expand = false; this.el.vexpand = false; var child_0 = new Xcls_reposel( _this ); child_0.ref(); this.el.add ( child_0.el ); var child_1 = new Xcls_Button6( _this ); child_1.ref(); this.el.add ( child_1.el ); } // user defined functions } public class Xcls_reposel : Object { public Gtk.ComboBox el; private Clone _this; // my vars (def) public bool loading; // ctor public Xcls_reposel(Clone _owner ) { _this = _owner; _this.reposel = this; this.el = new Gtk.ComboBox.with_entry(); // my vars (dec) this.loading = false; // set gobject values this.el.hexpand = true; var child_0 = new Xcls_prcellrenderer( _this ); child_0.ref(); this.el.pack_start ( child_0.el , true ); var child_1 = new Xcls_repomodel( _this ); child_1.ref(); this.el.set_model ( child_1.el ); // init method this.el.set_entry_text_column(1); } // user defined functions public string selectedRepo () { Gtk.TreeIter iter; Value val1; this.el.get_active_iter (out iter); _this.repomodel.el.get_value (iter, 0, out val1); return (string) val1; } } public class Xcls_prcellrenderer : Object { public Gtk.CellRendererText el; private Clone _this; // my vars (def) // ctor public Xcls_prcellrenderer(Clone _owner ) { _this = _owner; _this.prcellrenderer = this; this.el = new Gtk.CellRendererText(); // my vars (dec) // set gobject values } // user defined functions } public class Xcls_repomodel : Object { public Gtk.ListStore el; private Clone _this; // my vars (def) // ctor public Xcls_repomodel(Clone _owner ) { _this = _owner; _this.repomodel = this; this.el = new Gtk.ListStore( 2, typeof(string),typeof(string) ); // my vars (dec) // set gobject values } // user defined functions public void loadRepos () { var rt = RooTicket.singleton(); var gr = GitRepo.singleton(); _this.reposel.loading = true; this.el.clear(); Gtk.TreeIter iter; var el = this.el; el.append(out iter); el.set_value(iter, 0, ""); el.set_value(iter, 1, "-- select a repo --"); _this.reposel.el.set_active_iter(iter); var projects = rt.projects; foreach(var newrepo in rt.repos) { var has_repo = false; foreach(var repo in gr.cache.values) { if (newrepo.shortname == repo.name) { has_repo = true; } } if (has_repo) { continue; } el.append(out iter); el.set_value(iter, 0, newrepo.shortname); el.set_value(iter, 1, newrepo.shortname); // "%s : %s".printf(newrepo.shortname, newrepo.description) ); } _this.reposel.loading = false; //this.el.set_sort_column_id(0, Gtk.SortType.ASCENDING); } } public class Xcls_Button6 : Object { public Gtk.Button el; private Clone _this; // my vars (def) // ctor public Xcls_Button6(Clone _owner ) { _this = _owner; this.el = new Gtk.Button(); // my vars (dec) // set gobject values this.el.label = "Checkout"; //listeners this.el.button_press_event.connect( () => { _this.el.hide(); Clones.singleton().el.hide(); var repo = _this.reposel.selectedRepo(); GitMonitor.gitmonitor.stop(); string[] args = { "git" , "--no-pager" , "clone" }; args += ("http://git.roojs.com/" + repo ); string[] env = {}; string home = "HOME=" + Environment.get_home_dir() ; env += home ; //v.push("GITPATH=" + this.repo ); //} var cfg = new SpawnConfig(Environment.get_home_dir() + "/gitlive" , args , env); //cfg.debug = true; // may throw error... var sp = new Spawn(cfg); GLib.debug("Spawn: %s", sp.output); GitMonitor.gitmonitor.start(); GitRepo.updateAll("show_clones"); return false; }); } // user defined functions } }