}
return _Clones;
}
+ public Xcls_spinner spinner;
+ public Xcls_toolbar toolbar;
+ public Xcls_scrolled scrolled;
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_autobranch tv_autobranch;
+ public Xcls_cr_autobranch cr_autobranch;
public Xcls_tv_repo tv_repo;
public Xcls_cr_repo cr_repo;
+ public Xcls_tv_active_ticket tv_active_ticket;
+ public Xcls_cr_active_ticket cr_active_ticket;
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)
this.el.title = "Manage Clones";
this.el.border_width = 3;
this.el.default_height = 500;
- this.el.default_width = 800;
+ this.el.default_width = 1024;
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) => {
}
// user defined functions
+ public void loadAndShow () {
+
+ _this.el.show_all();
+
+ _this.toolbar.el.hide();
+ _this.scrolled.el.hide();
+ _this.spinner.el.show();
+ _this.spinner.el.start();
+
+ GitRepo.updateAll("show_clones");
+ this.el.set_deletable(true);
+ this.el.set_gravity(Gdk.Gravity.NORTH);
+ this.el.move((Gdk.Screen.width() / 2 ) -400 ,0);
+ this.el.set_keep_above(true);
+ this.el.set_default_size(
+ int.min(1024,Gdk.Screen.width()),
+ int.max(500,Gdk.Screen.height() - 300)
+ );
+
+
+
+
+ }
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.spinner.el.stop();
+ _this.spinner.el.hide();
+ _this.toolbar.el.show();
+ _this.scrolled.el.show();
+
+ this.el.set_deletable(true);
+ this.el.set_gravity(Gdk.Gravity.NORTH);
+ this.el.move((Gdk.Screen.width() / 2 ) -400 ,0);
+ this.el.set_keep_above(true);
+ this.el.set_default_size(
+ int.min(1024,Gdk.Screen.width()),
+ int.max(500,Gdk.Screen.height() - 300)
+ );
+
+
_this.reposStore.load();
+
+ GLib.debug("show clones = run?");
+ this.el.run();
// load clones..
// this.get('/reposStore').load();
// 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 Clones _this;
-
-
- // my vars (def)
-
- // ctor
- public Xcls_Box3(Clones _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 );
+ var child_0 = new Xcls_spinner( _this );
child_0.ref();
this.el.add ( child_0.el );
- var child_1 = new Xcls_Button5( _this );
+ var child_1 = new Xcls_toolbar( _this );
child_1.ref();
- this.el.add ( child_1.el );
- var child_2 = new Xcls_Button6( _this );
+ this.el.pack_start ( child_1.el , false,false,0 );
+ var child_2 = new Xcls_scrolled( _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 Clones _this;
-
-
- // my vars (def)
-
- // ctor
- public Xcls_Button4(Clones _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");
-
- */
-
-
-
-
-
-
- });
+ this.el.pack_end ( child_2.el , true,true,0 );
}
// user defined functions
}
-
- public class Xcls_Button5 : Object
+ public class Xcls_spinner : Object
{
- public Gtk.Button el;
+ public Gtk.Spinner el;
private Clones _this;
// my vars (def)
// ctor
- public Xcls_Button5(Clones _owner )
+ public Xcls_spinner(Clones _owner )
{
_this = _owner;
- this.el = new Gtk.Button();
+ _this.spinner = this;
+ this.el = new Gtk.Spinner();
// my vars (dec)
// set gobject values
- this.el.label = "Branches";
-
- //listeners
- this.el.clicked.connect( () => {
- //
-
- NewBranch.singleton().show();
-
- /*
- 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");
-
-
-
-
-
-
-
- */
-
- });
+ this.el.hexpand = true;
+ this.el.vexpand = true;
}
// user defined functions
}
- public class Xcls_Button6 : Object
+ public class Xcls_toolbar : Object
{
- public Gtk.Button el;
+ public Gtk.Box el;
private Clones _this;
// my vars (def)
// ctor
- public Xcls_Button6(Clones _owner )
+ public Xcls_toolbar(Clones _owner )
{
_this = _owner;
- this.el = new Gtk.Button();
+ _this.toolbar = this;
+ this.el = new Gtk.Box( Gtk.Orientation.HORIZONTAL, 0 );
// 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");
-
-
-
-
-
-
-
- */
-
-
- });
+ this.el.homogeneous = true;
+ var child_0 = new Xcls_Button5( _this );
+ child_0.ref();
+ this.el.add ( child_0.el );
}
// user defined functions
}
-
- public class Xcls_Button7 : Object
+ public class Xcls_Button5 : Object
{
public Gtk.Button el;
private Clones _this;
// my vars (def)
// ctor
- public Xcls_Button7(Clones _owner )
+ public Xcls_Button5(Clones _owner )
{
_this = _owner;
this.el = new Gtk.Button();
// my vars (dec)
// set gobject values
- this.el.label = "Switch Branch";
-
- //listeners
- this.el.clicked.connect( () => {
-
-
-
-
-
-
- });
- }
+ this.el.label = "Add Repository";
- // user defined functions
- }
-
- public class Xcls_Button8 : Object
- {
- public Gtk.Button el;
- private Clones _this;
-
-
- // my vars (def)
-
- // ctor
- public Xcls_Button8(Clones _owner )
- {
- _this = _owner;
- this.el = new Gtk.Button();
-
- // my vars (dec)
+ // init method
- // set gobject values
- this.el.label = "Pull";
+ {
+ this.el.get_style_context().add_class("suggested-action");
+ }
//listeners
this.el.clicked.connect( () => {
+ Clone.singleton().show(this.el);
-
-
-
});
}
}
- public class Xcls_ScrolledWindow9 : Object
+ public class Xcls_scrolled : Object
{
public Gtk.ScrolledWindow el;
private Clones _this;
// my vars (def)
// ctor
- public Xcls_ScrolledWindow9(Clones _owner )
+ public Xcls_scrolled(Clones _owner )
{
_this = _owner;
+ _this.scrolled = this;
this.el = new Gtk.ScrolledWindow( null, null );
// my vars (dec)
// my vars (dec)
// set gobject values
+ this.el.search_column = 0;
+ this.el.activate_on_single_click = true;
+ this.el.enable_grid_lines = Gtk.TreeViewGridLines.HORIZONTAL;
var child_0 = new Xcls_reposStore( _this );
child_0.ref();
this.el.set_model ( child_0.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 );
+ var child_3 = new Xcls_tv_autobranch( _this );
child_3.ref();
this.el.append_column ( child_3.el );
- var child_4 = new Xcls_tv_current_branch( _this );
+ var child_4 = new Xcls_tv_repo( _this );
child_4.ref();
this.el.append_column ( child_4.el );
- var child_5 = new Xcls_tv_last_updated( _this );
+ var child_5 = new Xcls_tv_active_ticket( _this );
child_5.ref();
this.el.append_column ( child_5.el );
- var child_6 = new Xcls_tv_all_branches( _this );
+ var child_6 = new Xcls_tv_current_branch( _this );
child_6.ref();
this.el.append_column ( child_6.el );
+ var child_7 = new Xcls_tv_last_updated( _this );
+ child_7.ref();
+ this.el.append_column ( child_7.el );
+ var child_8 = new Xcls_tv_all_branches( _this );
+ child_8.ref();
+ this.el.append_column ( child_8.el );
// init method
}
//listeners
+ this.el.row_activated.connect( (path, col) => {
+
+ if (col.title != "Current Branch") {
+ return;
+ }
+
+ //
+
+ Gtk.TreeIter iter;
+ _this.reposStore.el.get_iter(out iter, path);
+ GLib.Value val;
+ _this.reposStore.el.get_value(iter, 6, out val);
+ var git_working_dir = (string)val;
+
+ var repo = GitRepo.singleton().get(git_working_dir);
+
+ Gdk.Rectangle rect;
+ _this.reposView.el.get_cell_area(path, col, out rect);
+ RepoStatusPopover.singleton().show(this.el, rect, repo);
+
+
+
+ });
this.el.cursor_changed.connect( () => {
// SEE SELECTION.CHANGED
/*
{
_this = _owner;
_this.reposStore = this;
- this.el = new Gtk.ListStore( 8, typeof(string), // 0 repo
+ this.el = new Gtk.ListStore( 10, 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?
+ typeof(string), // 6 repopath
+ typeof(string), // 7 color highlighting?
+ typeof(bool), // 8 auto branch,
+ typeof(string) // 9 active Ticket
);
// my vars (dec)
for(var i =0 ; i < tr.length; i++) {
var repo = tr.index(i);
- repo.loadBranches();
+ // this is done before we display stuff...
+ //repo.loadBranches();
+ //repo.loadStatus();
Gtk.TreeIter iter;
this.el.append(out iter);
-
//print(JSON.stringify(ret,null,4));
//tr[i].getBranches();
//tr[i].getStatus();
// 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 );
+ this.el.set_value(iter, 6, repo.git_working_dir );
// highlight color.
var cb = repo.currentBranch;
//print(JSON.stringify(cb,null,4));
var col = "#ffffff";
- /*
+
if (cb.lastrev != cb.remoterev) {
- col = '#ff0000';
+ col = "#f2dede";
+ this.el.set_value( iter, 1, repo.currentBranch.name +"\n" +
+ (repo.ahead_or_behind == "B" ? "Local is BEHIND remote" : "Local is AHEAD of remote")
+
+ );
}
- if (tr[i].hasLocalChanges) {
- col = '#0000ff';
+ if (repo.has_local_changes) {
+ col = "#d9edf7";
+ this.el.set_value( iter, 1, repo.currentBranch.name +"\nHas uncommitted changes" );
}
- if ((cb.lastrev != cb.remoterev) && (tr[i].hasLocalChanges)) {
- col = '#ff00ff';
+ if ((cb.lastrev != cb.remoterev) && (repo.has_local_changes)) {
+ col = "#fcf8e3";
+ this.el.set_value( iter, 1, repo.currentBranch.name +"\n" +
+ (repo.ahead_or_behind == "B" ? "Local is BEHIND remote" : "Local is AHEAD of remote") +
+ "\nHas uncommitted changes" );
}
- */
+
this.el.set_value(iter, 7, col );
+ var ticket = repo.activeTicket;
+
+ this.el.set_value(iter, 8, repo.is_auto_branch() );
+ this.el.set_value(iter, 9, ticket == null ? "" : ticket.id );
+
}
this.el.set_sort_column_id (0, Gtk.SortType.ASCENDING);
//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);
- */
-
-
+
+ Gtk.TreeIter iter;
+ _this.reposStore.el.get_iter_from_string(out iter, path);
+
+ GLib.Value val;
+ GLib.Value rval;
+ _this.reposStore.el.get_value(iter, 4, out val);
+ _this.reposStore.el.get_value(iter, 6, out rval);
+
+ var repopath = (string)rval;
+ var bval = (bool)val;
+ _this.reposStore.el.set_value(iter, 4, !bval);
+ GLib.debug("got repopath? %s", repopath);
+
+ var repo = GitRepo.get(repopath);
+ repo.set_autocommit(!bval);
+
+
+
+
});
}
//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);
- */
+
+ Gtk.TreeIter iter;
+ _this.reposStore.el.get_iter_from_string(out iter, path);
+
+ GLib.Value val;
+ GLib.Value rval;
+ _this.reposStore.el.get_value(iter, 5, out val);
+ _this.reposStore.el.get_value(iter, 6, out rval);
+
+ var repopath = (string)rval;
+ var bval = (bool)val;
+ _this.reposStore.el.set_value(iter, 5, !bval);
+ var repo = GitRepo.get(repopath);
+ repo.set_autopush(!bval);
+
+
+
+
+ });
+ }
+
+ // user defined functions
+ }
+
+
+ public class Xcls_tv_autobranch : Object
+ {
+ public Gtk.TreeViewColumn el;
+ private Clones _this;
+
+
+ // my vars (def)
+
+ // ctor
+ public Xcls_tv_autobranch(Clones _owner )
+ {
+ _this = _owner;
+ _this.tv_autobranch = this;
+ this.el = new Gtk.TreeViewColumn();
+
+ // my vars (dec)
+
+ // set gobject values
+ this.el.title = "Auto Branch";
+ this.el.min_width = 50;
+ var child_0 = new Xcls_cr_autobranch( _this );
+ child_0.ref();
+ this.el.pack_start ( child_0.el , false );
+
+ // init method
+
+ this.el.add_attribute(_this.cr_autobranch.el , "active", 8 );
+ // this.items[0].el.set_activatable(true);
+ }
+
+ // user defined functions
+ }
+ public class Xcls_cr_autobranch : Object
+ {
+ public Gtk.CellRendererToggle el;
+ private Clones _this;
+
+
+ // my vars (def)
+
+ // ctor
+ public Xcls_cr_autobranch(Clones _owner )
+ {
+ _this = _owner;
+ _this.cr_autobranch = 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) => {
+
+ Gtk.TreeIter iter;
+ _this.reposStore.el.get_iter_from_string(out iter, path);
+
+ GLib.Value val;
+ GLib.Value rval;
+ _this.reposStore.el.get_value(iter, 8, out val);
+ _this.reposStore.el.get_value(iter, 6, out rval);
+
+ var repopath = (string)rval;
+ var bval = (bool)val;
+ _this.reposStore.el.set_value(iter, 8, !bval);
+ var repo = GitRepo.get(repopath);
+ repo.set_auto_branch(!bval);
+
+
+
+
});
}
}
+ public class Xcls_tv_active_ticket : Object
+ {
+ public Gtk.TreeViewColumn el;
+ private Clones _this;
+
+
+ // my vars (def)
+
+ // ctor
+ public Xcls_tv_active_ticket(Clones _owner )
+ {
+ _this = _owner;
+ _this.tv_active_ticket = this;
+ this.el = new Gtk.TreeViewColumn();
+
+ // my vars (dec)
+
+ // set gobject values
+ this.el.title = "Active Ticket";
+ this.el.min_width = 50;
+ var child_0 = new Xcls_cr_active_ticket( _this );
+ child_0.ref();
+ this.el.pack_start ( child_0.el , false );
+
+ // init method
+
+ this.el.add_attribute(_this.cr_active_ticket.el , "markup", 9 );
+ }
+
+ // user defined functions
+ }
+ public class Xcls_cr_active_ticket : Object
+ {
+ public Gtk.CellRendererText el;
+ private Clones _this;
+
+
+ // my vars (def)
+
+ // ctor
+ public Xcls_cr_active_ticket(Clones _owner )
+ {
+ _this = _owner;
+ _this.cr_active_ticket = 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;
- public class Xcls_ok_button : Object
- {
- public Gtk.Button el;
- private Clones _this;
-
-
- // my vars (def)
-
- // ctor
- public Xcls_ok_button(Clones _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
- }
-
}