X-Git-Url: http://git.roojs.org/?p=gitlive;a=blobdiff_plain;f=MergeBranch.vala;fp=MergeBranch.vala;h=61e267aa433ed0925f351d2ebc220c973759bb79;hp=900c667935c2fc67e9aaba7b042e09d8d32c310f;hb=9df01e59458293cdac3f984d7bc8f63055640e19;hpb=41d00310fa27851e4f7ba827f1587a3cf397cc99 diff --git a/MergeBranch.vala b/MergeBranch.vala index 900c6679..61e267aa 100644 --- a/MergeBranch.vala +++ b/MergeBranch.vala @@ -16,9 +16,14 @@ public class MergeBranch : Object public Xcls_actionsel actionsel; public Xcls_actioncellrenderer actioncellrenderer; public Xcls_actionmodel actionmodel; + public Xcls_projectsel projectsel; + public Xcls_prcellrenderer prcellrenderer; + public Xcls_prmodel prmodel; public Xcls_ticketsel ticketsel; public Xcls_dbcellrenderer dbcellrenderer; public Xcls_dbmodel dbmodel; + public Xcls_btn_not_me btn_not_me; + public Xcls_btn_closed btn_closed; public Xcls_name name; public Xcls_label_diff label_diff; public Xcls_label_ticket label_ticket; @@ -26,6 +31,7 @@ public class MergeBranch : Object public Xcls_scrolled_window scrolled_window; public Xcls_view view; public Xcls_spinner spinner; + public Xcls_mergebtn mergebtn; // my vars (def) public GitRepo repo; @@ -51,10 +57,10 @@ public class MergeBranch : Object var child_0 = new Xcls_Box2( _this ); child_0.ref(); this.el.get_content_area().add ( child_0.el ); - var child_1 = new Xcls_Button24( _this ); + var child_1 = new Xcls_Button32( _this ); child_1.ref(); this.el.add_action_widget ( child_1.el , 0 ); - var child_2 = new Xcls_Button25( _this ); + var child_2 = new Xcls_mergebtn( _this ); child_2.ref(); this.el.add_action_widget ( child_2.el , 1 ); @@ -73,6 +79,9 @@ public class MergeBranch : Object GitMonitor.gitmonitor.start(); return; } + + + /* // have they selected a ticket.. // make that the current active ticket? @@ -142,12 +151,16 @@ public class MergeBranch : Object Timeout.add_seconds(1, () => { + + _this.prmodel.loadProjects(ticket.project_id); + _this.diff_view.el.get_buffer().set_text( repo != null ? repo.previewMerge() : GitRepo.previewMerges(ticket.id) ); // if we are not working on a ticket, then we should be able to pick one? - _this.dbmodel.loadTickets(); + _this.dbmodel.loadTickets(ticket.project_id); _this.actionmodel.loadActions(); + _this.mergebtn.updateState(); _this.view.loadTicket(ticket.id); _this.spinner.el.stop(); _this.spinner.el.hide(); @@ -179,7 +192,7 @@ public class MergeBranch : Object var child_0 = new Xcls_table( _this ); child_0.ref(); this.el.pack_start ( child_0.el , false,false,0 ); - var child_1 = new Xcls_Notebook14( _this ); + var child_1 = new Xcls_Notebook22( _this ); child_1.ref(); this.el.add ( child_1.el ); var child_2 = new Xcls_spinner( _this ); @@ -202,7 +215,7 @@ public class MergeBranch : Object { _this = _owner; _this.table = this; - this.el = new Gtk.Table( 2, 2, false ); + this.el = new Gtk.Table( 4, 2, false ); // my vars (dec) @@ -219,15 +232,24 @@ public class MergeBranch : Object var child_2 = new Xcls_Label8( _this ); child_2.ref(); this.el.attach_defaults ( child_2.el , 0,1,1,2 ); - var child_3 = new Xcls_ticketsel( _this ); + var child_3 = new Xcls_projectsel( _this ); child_3.ref(); this.el.attach_defaults ( child_3.el , 1,2,1,2 ); var child_4 = new Xcls_Label12( _this ); child_4.ref(); this.el.attach_defaults ( child_4.el , 0,1,2,3 ); - var child_5 = new Xcls_name( _this ); + var child_5 = new Xcls_ticketsel( _this ); child_5.ref(); this.el.attach_defaults ( child_5.el , 1,2,2,3 ); + var child_6 = new Xcls_Box16( _this ); + child_6.ref(); + this.el.attach_defaults ( child_6.el , 0,2,3,4 ); + var child_7 = new Xcls_Label20( _this ); + child_7.ref(); + this.el.attach_defaults ( child_7.el , 0,1,4,5 ); + var child_8 = new Xcls_name( _this ); + child_8.ref(); + this.el.attach_defaults ( child_8.el , 1,2,4,5 ); } // user defined functions @@ -249,8 +271,8 @@ public class MergeBranch : Object // my vars (dec) // set gobject values - this.el.justify = Gtk.Justification.RIGHT; - this.el.xalign = 0.900000f; + this.el.margin_right = 3; + this.el.halign = Gtk.Align.END; this.el.visible = true; } @@ -277,6 +299,7 @@ public class MergeBranch : Object this.loading = false; // set gobject values + this.el.hexpand = true; var child_0 = new Xcls_actioncellrenderer( _this ); child_0.ref(); this.el.pack_start ( child_0.el , true ); @@ -294,6 +317,7 @@ public class MergeBranch : Object return; } _this.name.updateText(); + _this.mergebtn.updateState(); //GLib.debug (//"Selection: %s, %s\n", (string) val1, (string) val2); }); } @@ -407,6 +431,195 @@ public class MergeBranch : Object // ctor public Xcls_Label8(MergeBranch _owner ) + { + _this = _owner; + this.el = new Gtk.Label( "Project" ); + + // my vars (dec) + + // set gobject values + this.el.margin_right = 3; + this.el.halign = Gtk.Align.END; + this.el.visible = true; + } + + // user defined functions + } + + public class Xcls_projectsel : Object + { + public Gtk.ComboBox el; + private MergeBranch _this; + + + // my vars (def) + public bool loading; + + // ctor + public Xcls_projectsel(MergeBranch _owner ) + { + _this = _owner; + _this.projectsel = 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_prmodel( _this ); + child_1.ref(); + this.el.set_model ( child_1.el ); + + // init method + + this.el.set_entry_text_column(1); + + //listeners + this.el.changed.connect( () => { + if (this.loading) { + return; + } + var project_id = this.selectedProjectId(); + _this.dbmodel.loadTickets(project_id); + + + /*if (this.loading) { + return; + } + var ticket_id = this.selectedTicketId(); + + var name = RooTicket.singleton().usernameLocal(); + + if (ticket_id == "" || ticket_id == null) { + + var dt = new DateTime.now_local(); + _this.name.el.set_text("wip_%s_%s".printf(name,dt.format("%Y_%b_%d"))); + return; + } + + + var ticket = RooTicket.singleton().getById(ticket_id); + + _this.name.el.set_text("wip_%s_T%s_%s".printf(name,ticket.id, ticket.summaryToBranchName())); + + //GLib.debug (//"Selection: %s, %s\n", (string) val1, (string) val2); + */ + }); + } + + // user defined functions + public string selectedProjectId () { + Gtk.TreeIter iter; + Value val1; + + + this.el.get_active_iter (out iter); + _this.prmodel.el.get_value (iter, 0, out val1); + + + return (string) val1; + + + + + } + } + public class Xcls_prcellrenderer : Object + { + public Gtk.CellRendererText el; + private MergeBranch _this; + + + // my vars (def) + + // ctor + public Xcls_prcellrenderer(MergeBranch _owner ) + { + _this = _owner; + _this.prcellrenderer = this; + this.el = new Gtk.CellRendererText(); + + // my vars (dec) + + // set gobject values + } + + // user defined functions + } + + public class Xcls_prmodel : Object + { + public Gtk.ListStore el; + private MergeBranch _this; + + + // my vars (def) + + // ctor + public Xcls_prmodel(MergeBranch _owner ) + { + _this = _owner; + _this.prmodel = this; + this.el = new Gtk.ListStore( 2, typeof(string),typeof(string) ); + + // my vars (dec) + + // set gobject values + } + + // user defined functions + public void loadProjects (string id) { + + + + _this.projectsel.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 project --"); + if (id == "") { + _this.projectsel.el.set_active_iter(iter); + } + + foreach(var project in RooProject.projects()) { + + el.append(out iter); + + el.set_value(iter, 0, project.id); + el.set_value(iter, 1, project.name ); + if (id == project.id) { + _this.projectsel.el.set_active_iter(iter); + } + + } + + _this.projectsel.loading = false; + //this.el.set_sort_column_id(0, Gtk.SortType.ASCENDING); + + } + } + + + public class Xcls_Label12 : Object + { + public Gtk.Label el; + private MergeBranch _this; + + + // my vars (def) + + // ctor + public Xcls_Label12(MergeBranch _owner ) { _this = _owner; this.el = new Gtk.Label( "Select Ticket" ); @@ -414,6 +627,8 @@ public class MergeBranch : Object // my vars (dec) // set gobject values + this.el.margin_right = 3; + this.el.halign = Gtk.Align.END; this.el.justify = Gtk.Justification.RIGHT; this.el.xalign = 0.900000f; this.el.visible = true; @@ -442,6 +657,7 @@ public class MergeBranch : Object this.loading = true; // set gobject values + this.el.hexpand = true; var child_0 = new Xcls_dbcellrenderer( _this ); child_0.ref(); this.el.pack_start ( child_0.el , true ); @@ -528,9 +744,9 @@ public class MergeBranch : Object } // user defined functions - public void loadTickets () { + public void loadTickets (string project_id) { - RooTicket.singleton().loadTickets("",RooTicket.Who.ME, RooTicket.Status.ACTIVE); + RooTicket.singleton().loadTickets(project_id,RooTicket.Who.ME, RooTicket.Status.ACTIVE); _this.ticketsel.loading = true; @@ -574,7 +790,98 @@ public class MergeBranch : Object } - public class Xcls_Label12 : Object + public class Xcls_Box16 : Object + { + public Gtk.Box el; + private MergeBranch _this; + + + // my vars (def) + + // ctor + public Xcls_Box16(MergeBranch _owner ) + { + _this = _owner; + this.el = new Gtk.Box( Gtk.Orientation.HORIZONTAL, 0 ); + + // my vars (dec) + + // set gobject values + var child_0 = new Xcls_btn_not_me( _this ); + child_0.ref(); + this.el.add ( child_0.el ); + var child_1 = new Xcls_btn_closed( _this ); + child_1.ref(); + this.el.add ( child_1.el ); + var child_2 = new Xcls_Label19( _this ); + child_2.ref(); + this.el.add ( child_2.el ); + } + + // user defined functions + } + public class Xcls_btn_not_me : Object + { + public Gtk.CheckButton el; + private MergeBranch _this; + + + // my vars (def) + + // ctor + public Xcls_btn_not_me(MergeBranch _owner ) + { + _this = _owner; + _this.btn_not_me = this; + this.el = new Gtk.CheckButton(); + + // my vars (dec) + + // set gobject values + this.el.label = "Show tickets not assigned to me"; + + //listeners + this.el.toggled.connect( () => { + var project_id = _this.projectsel.selectedProjectId(); + _this.dbmodel.loadTickets(project_id); + }); + } + + // user defined functions + } + + public class Xcls_btn_closed : Object + { + public Gtk.CheckButton el; + private MergeBranch _this; + + + // my vars (def) + + // ctor + public Xcls_btn_closed(MergeBranch _owner ) + { + _this = _owner; + _this.btn_closed = this; + this.el = new Gtk.CheckButton(); + + // my vars (dec) + + // set gobject values + this.el.label = "Show closed Tickets"; + + //listeners + this.el.toggled.connect( () => { + var project_id = _this.projectsel.selectedProjectId(); + _this.dbmodel.loadTickets(project_id); + + }); + } + + // user defined functions + } + + public class Xcls_Label19 : Object { public Gtk.Label el; private MergeBranch _this; @@ -583,7 +890,45 @@ public class MergeBranch : Object // my vars (def) // ctor - public Xcls_Label12(MergeBranch _owner ) + public Xcls_Label19(MergeBranch _owner ) + { + _this = _owner; + this.el = new Gtk.Label( "Refresh Ticket list" ); + + // my vars (dec) + + // set gobject values + this.el.halign = Gtk.Align.END; + this.el.hexpand = true; + this.el.use_markup = true; + + //listeners + this.el.activate_link.connect( (uri) => { + if (uri == "refresh") { + RooProject.reload(); + var curproj = RooProject.getProjectByRepo(_this.repo); + _this.prmodel.loadProjects(curproj == null ? "": curproj.id); + + _this.dbmodel.loadTickets(curproj == null ? "": curproj.id); + } + return true; + }); + } + + // user defined functions + } + + + public class Xcls_Label20 : Object + { + public Gtk.Label el; + private MergeBranch _this; + + + // my vars (def) + + // ctor + public Xcls_Label20(MergeBranch _owner ) { _this = _owner; this.el = new Gtk.Label( "Use this commit message" ); @@ -591,8 +936,8 @@ public class MergeBranch : Object // my vars (dec) // set gobject values - this.el.justify = Gtk.Justification.RIGHT; - this.el.xalign = 0.900000f; + this.el.margin_right = 3; + this.el.halign = Gtk.Align.END; } // user defined functions @@ -652,7 +997,7 @@ public class MergeBranch : Object } - public class Xcls_Notebook14 : Object + public class Xcls_Notebook22 : Object { public Gtk.Notebook el; private MergeBranch _this; @@ -661,7 +1006,7 @@ public class MergeBranch : Object // my vars (def) // ctor - public Xcls_Notebook14(MergeBranch _owner ) + public Xcls_Notebook22(MergeBranch _owner ) { _this = _owner; this.el = new Gtk.Notebook(); @@ -674,10 +1019,10 @@ public class MergeBranch : Object child_0.ref(); var child_1 = new Xcls_label_ticket( _this ); child_1.ref(); - var child_2 = new Xcls_Box17( _this ); + var child_2 = new Xcls_Box25( _this ); child_2.ref(); this.el.append_page ( child_2.el , _this.label_diff.el ); - var child_3 = new Xcls_Box20( _this ); + var child_3 = new Xcls_Box28( _this ); child_3.ref(); this.el.append_page ( child_3.el , _this.label_ticket.el ); } @@ -730,7 +1075,7 @@ public class MergeBranch : Object // user defined functions } - public class Xcls_Box17 : Object + public class Xcls_Box25 : Object { public Gtk.Box el; private MergeBranch _this; @@ -739,7 +1084,7 @@ public class MergeBranch : Object // my vars (def) // ctor - public Xcls_Box17(MergeBranch _owner ) + public Xcls_Box25(MergeBranch _owner ) { _this = _owner; this.el = new Gtk.Box( Gtk.Orientation.VERTICAL, 0 ); @@ -748,14 +1093,14 @@ public class MergeBranch : Object // set gobject values this.el.homogeneous = false; - var child_0 = new Xcls_ScrolledWindow18( _this ); + var child_0 = new Xcls_ScrolledWindow26( _this ); child_0.ref(); this.el.pack_start ( child_0.el , true,true,0 ); } // user defined functions } - public class Xcls_ScrolledWindow18 : Object + public class Xcls_ScrolledWindow26 : Object { public Gtk.ScrolledWindow el; private MergeBranch _this; @@ -764,7 +1109,7 @@ public class MergeBranch : Object // my vars (def) // ctor - public Xcls_ScrolledWindow18(MergeBranch _owner ) + public Xcls_ScrolledWindow26(MergeBranch _owner ) { _this = _owner; this.el = new Gtk.ScrolledWindow( null, null ); @@ -814,7 +1159,7 @@ public class MergeBranch : Object - public class Xcls_Box20 : Object + public class Xcls_Box28 : Object { public Gtk.Box el; private MergeBranch _this; @@ -823,7 +1168,7 @@ public class MergeBranch : Object // my vars (def) // ctor - public Xcls_Box20(MergeBranch _owner ) + public Xcls_Box28(MergeBranch _owner ) { _this = _owner; this.el = new Gtk.Box( Gtk.Orientation.VERTICAL, 0 ); @@ -944,7 +1289,7 @@ public class MergeBranch : Object } - public class Xcls_Button24 : Object + public class Xcls_Button32 : Object { public Gtk.Button el; private MergeBranch _this; @@ -953,7 +1298,7 @@ public class MergeBranch : Object // my vars (def) // ctor - public Xcls_Button24(MergeBranch _owner ) + public Xcls_Button32(MergeBranch _owner ) { _this = _owner; this.el = new Gtk.Button(); @@ -968,7 +1313,7 @@ public class MergeBranch : Object // user defined functions } - public class Xcls_Button25 : Object + public class Xcls_mergebtn : Object { public Gtk.Button el; private MergeBranch _this; @@ -977,9 +1322,10 @@ public class MergeBranch : Object // my vars (def) // ctor - public Xcls_Button25(MergeBranch _owner ) + public Xcls_mergebtn(MergeBranch _owner ) { _this = _owner; + _this.mergebtn = this; this.el = new Gtk.Button(); // my vars (dec) @@ -995,6 +1341,17 @@ public class MergeBranch : Object } // user defined functions + public void updateState () { + if (_this.actionsel.selectedAction() == "") { + // need to select an action.. + this.el.set_sensitive(false); + return; + + + } + this.el.set_sensitive(true); + return; + } } }