From f00d2a709d93776e6aa3003def747143ab049b78 Mon Sep 17 00:00:00 2001 From: Alan Knowles Date: Wed, 30 Jan 2019 16:53:30 +0800 Subject: [PATCH] fix branching and ticket selection --- MergeBranch.bjs | 16 ++++++++-------- MergeBranch.vala | 47 ++++++++++++++++++++++++++++++----------------- NewBranch.bjs | 2 +- NewBranch.vala | 1 + 4 files changed, 40 insertions(+), 26 deletions(-) diff --git a/MergeBranch.bjs b/MergeBranch.bjs index 239a5c5e..c30e8feb 100644 --- a/MergeBranch.bjs +++ b/MergeBranch.bjs @@ -98,7 +98,7 @@ "* ctor" : "new Gtk.ComboBox.with_entry()", "id" : "projectsel", "| string selectedProjectId" : "() {\n\tGtk.TreeIter iter;\n\tValue val1;\n \n \n\tthis.el.get_active_iter (out iter);\n\t_this.prmodel.el.get_value (iter, 0, out val1);\n \n\n\treturn (string) val1;\n\t\n\t\n\t\n\t\n}\n", - "* init" : "this.el.set_entry_text_column(1);", + "* init" : "this.el.set_entry_text_column(1);\nthis.el.get_child().set_sensitive(false);", "bool hexpand" : true, "* pack" : "attach_defaults,1,2,1,2", "xtype" : "ComboBox", @@ -136,16 +136,16 @@ }, { "listeners" : { - "changed" : "() => {\n\tif (this.loading) {\n\t\treturn;\n\t}\n\t_this.view.loadTicket(this.selectedTicketId());\n\t \n \t_this.name.updateText();\n\t//_this.name.el.set_text(\"wip_%s_T%s_%s\".printf(name,ticket.id, ticket.summaryToBranchName()));\n\t\n\t//GLib.debug (//\"Selection: %s, %s\\n\", (string) val1, (string) val2);\n}" + "changed" : "() => {\n\tif (this.loading) {\n\t\treturn;\n\t}\n\t \n\t_this.view.loadTicket(this.selectedTicketId());\n\t _this.name.updateText();\n\t//GLib.debug (//\"Selection: %s, %s\\n\", (string) val1, (string) val2);\n}" }, + "* ctor" : "new Gtk.ComboBox.with_entry()", "id" : "ticketsel", - "* init" : "this.el.add_attribute(_this.dbcellrenderer.el , \"markup\", 1 );", - "bool hexpand" : true, + "* init" : "//this.el.add_attribute(_this.dbcellrenderer.el , \"markup\", 1 );\nthis.el.set_entry_text_column(1);\nthis.el.get_child().set_sensitive(false);", "* pack" : "attach_defaults,1,2,2,3", "xtype" : "ComboBox", - "# bool loading" : true, + "# bool loading" : false, "$ xns" : "Gtk", - "| string selectedTicketId" : "() {\nGtk.TreeIter iter;\n\tValue val1;\n \n \n\tthis.el.get_active_iter (out iter);\n\t_this.dbmodel.el.get_value (iter, 0, out val1);\n \n\n\treturn (string) val1;\n\t\n\t\n\t\n\t\n}\n", + "| string selectedTicketId" : "() {\nGtk.TreeIter iter;\n\tValue val1;\n \n \n\tif (!this.el.get_active_iter (out iter)) {\n\t\treturn \"\";\n\t}\n\t \n\t_this.dbmodel.el.get_value (iter, 0, out val1);\n \n\n\treturn (string) val1;\n\t\n\t\n\t\n\t\n}\n", "items" : [ { "id" : "dbcellrenderer", @@ -157,7 +157,7 @@ "id" : "dbmodel", "* pack" : "set_model", "xtype" : "ListStore", - "| void loadTickets" : " (string project_id) {\n\n RooTicket.singleton().loadTickets(project_id,RooTicket.Who.ME, RooTicket.Status.ACTIVE);\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 el.set_value(iter, 0, \"\");\n el.set_value(iter, 1, \"-- select a ticket --\");\n \n _this.ticketsel.el.set_active_iter(iter);\n \n if (_this.ticket != null && _this.ticket.id == \"-1\") {\n\t\tel.append(out iter);\n\t\tel.set_value(iter, 0, \"-1\");\n\t\tel.set_value(iter, 1, \"Temporary Branch - No ticket specified/relivant\");\n _this.ticketsel.el.set_active_iter(iter);\t\n }\n \n \n \n \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\t\tif (_this.ticket != null && _this.ticket.id == ticket.id) {\n\t\t _this.ticketsel.el.set_active_iter(iter);\n\t }\n \n }\n \n _this.ticketsel.loading = false;\n //this.el.set_sort_column_id(0, Gtk.SortType.ASCENDING); \n \n}\n", + "| void loadTickets" : "(string project_id ) {\n\n\n \n // fixme .. get project id from selection..\n \n RooTicket.singleton().loadTickets(\n \t\t\tproject_id,\n \t\t\t_this.btn_not_me.el.active ? RooTicket.Who.ANYBODY : RooTicket.Who.ME,\n \t\t\t _this.btn_closed.el.active ? RooTicket.Status.ALL : RooTicket.Status.ACTIVE\n\t\t );\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 \n if (_this.ticket != null && _this.ticket.id == \"-1\") {\n\t\tel.append(out iter);\n\t\tel.set_value(iter, 0, \"-1\");\n\t\tel.set_value(iter, 1, \"Temporary Branch - No ticket specified/relivant\");\n _this.ticketsel.el.set_active_iter(iter);\t\n }\n \n \n \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 (_this.ticket != null && _this.ticket.id == ticket.id) {\n\t\t _this.ticketsel.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, "$ xns" : "Gtk" @@ -216,7 +216,7 @@ { "id" : "name", "$ visible" : true, - "| void updateText" : "() {\n\tvar ticket_id = _this.ticketsel.selectedTicketId();\n\t\n\tRooTicket ticket = null;\n\tif (ticket_id.length > 0){\n\t\tticket = RooTicket.singleton().getById(ticket_id);\n\t}\n\t\n\tvar name = RooTicket.singleton().usernameLocal();\n\tvar action = _this.actionsel.selectedAction();\n\tthis.el.set_editable(true); \n \tswitch (action) {\n \t\tcase \"CLOSE\": // merge changes and close..\n\t \t\tthis.el.set_text(\"Fix #%s - %s\".printf(ticket_id, ticket != null ? ticket.summary : \"\"));\n\t \t\tbreak;\n\t \tcase \"LEAVE\": // partial fix\t\n\t \t\tthis.el.set_text(\"Partial Fix #%s - %s\".printf(ticket_id, ticket != null ? ticket.summary : \"\"));\n\t \t\tbreak;\n \t\tcase \"MASTER\": // merge master\n \t\tcase \"EXIT\": // just switch back... \t\t\n \t\t\tthis.el.set_editable(false);\n\t \t\tthis.el.set_text(\"\"); // not relivant.. \t\t\t\n\t\t\tbreak;\n \t\tdefault:\n \t\t\n \t\t\tbreak; /// don't fix the text value.\n\t}\n \n}\n", + "| void updateText" : "() {\n\tvar ticket_id = _this.ticketsel.selectedTicketId();\n\t \n\tRooTicket ticket = null;\n\tif (ticket_id.length > 0){\n\t\tticket = RooTicket.singleton().getById(ticket_id);\n\t}\n\t\n\tvar name = RooTicket.singleton().usernameLocal();\n\tvar action = _this.actionsel.selectedAction();\n\tthis.el.set_editable(true); \n \tswitch (action) {\n \t\tcase \"CLOSE\": // merge changes and close..\n\t \t\tthis.el.set_text(\"Fix #%s - %s\".printf(ticket_id, ticket != null ? ticket.summary : \"\"));\n\t \t\tbreak;\n\t \tcase \"LEAVE\": // partial fix\t\n\t \t\tthis.el.set_text(\"Partial Fix #%s - %s\".printf(ticket_id, ticket != null ? ticket.summary : \"\"));\n\t \t\tbreak;\n \t\tcase \"MASTER\": // merge master\n \t\tcase \"EXIT\": // just switch back... \t\t\n \t\t\tthis.el.set_editable(false);\n\t \t\tthis.el.set_text(\"\"); // not relivant.. \t\t\t\n\t\t\tbreak;\n \t\tdefault:\n \t\t\n \t\t\tbreak; /// don't fix the text value.\n\t}\n \n}\n", "xtype" : "Entry", "* pack" : "attach_defaults,1,2,4,5", "$ xns" : "Gtk" diff --git a/MergeBranch.vala b/MergeBranch.vala index 61e267aa..e827bfa3 100644 --- a/MergeBranch.vala +++ b/MergeBranch.vala @@ -477,6 +477,7 @@ public class MergeBranch : Object // init method this.el.set_entry_text_column(1); + this.el.get_child().set_sensitive(false); //listeners this.el.changed.connect( () => { @@ -651,13 +652,12 @@ public class MergeBranch : Object { _this = _owner; _this.ticketsel = this; - this.el = new Gtk.ComboBox(); + this.el = new Gtk.ComboBox.with_entry(); // my vars (dec) - this.loading = true; + this.loading = false; // 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 ); @@ -667,18 +667,18 @@ public class MergeBranch : Object // init method - this.el.add_attribute(_this.dbcellrenderer.el , "markup", 1 ); + //this.el.add_attribute(_this.dbcellrenderer.el , "markup", 1 ); + this.el.set_entry_text_column(1); + this.el.get_child().set_sensitive(false); //listeners this.el.changed.connect( () => { if (this.loading) { return; } + _this.view.loadTicket(this.selectedTicketId()); - - _this.name.updateText(); - //_this.name.el.set_text("wip_%s_T%s_%s".printf(name,ticket.id, ticket.summaryToBranchName())); - + _this.name.updateText(); //GLib.debug (//"Selection: %s, %s\n", (string) val1, (string) val2); }); } @@ -689,7 +689,10 @@ public class MergeBranch : Object Value val1; - this.el.get_active_iter (out iter); + if (!this.el.get_active_iter (out iter)) { + return ""; + } + _this.dbmodel.el.get_value (iter, 0, out val1); @@ -744,10 +747,18 @@ public class MergeBranch : Object } // user defined functions - public void loadTickets (string project_id) { + public void loadTickets (string project_id ) { + - RooTicket.singleton().loadTickets(project_id,RooTicket.Who.ME, RooTicket.Status.ACTIVE); + // fixme .. get project id from selection.. + + RooTicket.singleton().loadTickets( + project_id, + _this.btn_not_me.el.active ? RooTicket.Who.ANYBODY : RooTicket.Who.ME, + _this.btn_closed.el.active ? RooTicket.Status.ALL : RooTicket.Status.ACTIVE + ); + _this.ticketsel.loading = true; this.el.clear(); @@ -755,6 +766,8 @@ public class MergeBranch : Object var el = this.el; el.append(out iter); + + el.set_value(iter, 0, ""); el.set_value(iter, 1, "-- select a ticket --"); @@ -765,8 +778,7 @@ public class MergeBranch : Object el.set_value(iter, 0, "-1"); el.set_value(iter, 1, "Temporary Branch - No ticket specified/relivant"); _this.ticketsel.el.set_active_iter(iter); - } - + } @@ -774,12 +786,13 @@ public class MergeBranch : Object foreach(var ticket in tickets) { el.append(out iter); - + el.set_value(iter, 0, ticket.id); el.set_value(iter, 1, "#%s [%s] %s".printf( ticket.id, ticket.project_id_name , ticket.summary)); - if (_this.ticket != null && _this.ticket.id == ticket.id) { + + if (_this.ticket != null && _this.ticket.id == ticket.id) { _this.ticketsel.el.set_active_iter(iter); - } + } } @@ -967,7 +980,7 @@ public class MergeBranch : Object // user defined functions public void updateText () { var ticket_id = _this.ticketsel.selectedTicketId(); - + RooTicket ticket = null; if (ticket_id.length > 0){ ticket = RooTicket.singleton().getById(ticket_id); diff --git a/NewBranch.bjs b/NewBranch.bjs index 335d58a7..1e8b9148 100644 --- a/NewBranch.bjs +++ b/NewBranch.bjs @@ -97,7 +97,7 @@ }, "* ctor" : "new Gtk.ComboBox.with_entry()", "id" : "ticketsel", - "* init" : "//this.el.add_attribute(_this.dbcellrenderer.el , \"markup\", 1 );\nthis.el.set_entry_text_column(1);", + "* init" : "//this.el.add_attribute(_this.dbcellrenderer.el , \"markup\", 1 );\nthis.el.set_entry_text_column(1);\nthis.el.get_child().set_sensitive(false); ", "* pack" : "attach_defaults,1,4,1,2", "xtype" : "ComboBox", "# bool loading" : false, diff --git a/NewBranch.vala b/NewBranch.vala index 6b2c3455..8b9a20a2 100644 --- a/NewBranch.vala +++ b/NewBranch.vala @@ -461,6 +461,7 @@ public class NewBranch : Object //this.el.add_attribute(_this.dbcellrenderer.el , "markup", 1 ); this.el.set_entry_text_column(1); + this.el.get_child().set_sensitive(false); //listeners this.el.changed.connect( () => { -- 2.39.2