-//<script type="text/javascript">
-
-
/**
* Status icon and menu for component of gitlive.
*
* b) Pause!??!
*/
-Gtk = imports.gi.Gtk;
-Gdk = imports.gi.Gdk;
-XObject = imports.XObject.XObject
-gitlive = imports.gitlive;
+var Gtk = imports.gi.Gtk;
+var Gdk = imports.gi.Gdk;
+var Gio = imports.gi.Gio;
+var GLib = imports.gi.GLib;
+var Notify = imports.gi.Notify;
+
+var XObject = imports.XObject.XObject;
+
+//var gitlive = imports.gitlive;
-StatusIcon = new XObject({
+var StatusIcon = new XObject({
paused : false, // on!
xtype : Gtk.StatusIcon,
- stock : Gtk.STOCK_MEDIA_PLAY,
+ title : 'gitlive',
+ stock : Gtk.STOCK_REFRESH,
tooltip_text : 'GitLive',
+ init : function() {
+ XObject.prototype.init.call(this);
+ this.el.set_name('gitlive');
+ },
listeners : {
//'popup-menu' : function( w, event, event_time) {
'activate' : function( w, event, event_time) {
print(Array.prototype.slice.call(arguments).join(','));
- menu = this.get('menu');
+ var menu = this.get('menu');
menu.el.show_all();
this.get(!this.paused ? 'resume' : 'pause' ).el.hide();
+ print("MENU EL: " + menu.el);
+ print("POPUP: " + typeof(menu.el.popup));
+
menu.el.popup(null, null,Gtk.StatusIcon.position_menu , this.el , 1, Gtk.get_current_event_time());
//menu.el.popup(null, null,null, null, 1, Gtk.get_current_event_time());
listeners : {
activate : function () {
this.parent.parent.paused = true;
- gitlive.monitor.stop();
+ imports.GitMonitor.GitMonitor.stop();
// this.el.label = status ? 'Resume' : 'Pause';
this.parent.parent.el.set_from_stock( Gtk.STOCK_MEDIA_PAUSE );
listeners : {
activate : function () {
this.parent.parent.paused = false;
- gitlive.monitor.start();
+ imports.GitMonitor.GitMonitor.start();
//var status = this.el.label == 'Pause' ? 1 : 0
// this.el.label = status ? 'Resume' : 'Pause';
- this.parent.parent.el.set_from_stock( Gtk.STOCK_MEDIA_PLAY);
+
}
}
pack: 'append',
listeners : {
activate : function () {
- gitlive.monitor.stop();
- var f = Gio.file_new_for_path(gitlive.gitlive);
- var file_enum = f.enumerate_children(
- Gio.FILE_ATTRIBUTE_STANDARD_DISPLAY_NAME, Gio.FileQueryInfoFlags.NONE, null);
-
- var next_file = null;
- var mgs = [];
- var err = [];
- while ((next_file = file_enum.next_file(null)) != null) {
+ imports.GitMonitor.GitMonitor.stop();
+
+
+ var tr = imports.Scm.Repo.Repo.list();
+ for (var i= 0; i< tr.length;i++) {
+ this.parent.parent.el.set_from_stock( i%2 ? Gtk.STOCK_FULLSCREEN : Gtk.STOCK_LEAVE_FULLSCREEN );
- var fn = next_file.get_path();
- if (! GLib.file_test(fn + '/.git', GLib.FileTest.IS_DIR)) {
+ var repo = tr[i];
+ if (!repo.autocommit()) {
+ //??? should we ignore ones not on autocommit..
continue;
}
-
try {
- var res = Git.run(fn, [ 'pull' ]);
- mgs.push( "Updated" + fn + ":" + res);
- // should also update modules ideally.
- } cat (e) {
- err.push(new String(e));
- }
- }
- if (err.length) {
- gitlive.errordialog(e.join("\n"));
- }
- if (mgs.length) {
- var notification = new Notify.Notification({
- summary: "Updated gliblive",
- body : mgs.join("\n");
- });
+ this.parent.parent.el.set_tooltip_text("pull: " + repo.name);
+
+ var str = repo.pull();
+ // do not care if it's already in sycn..
+ if (str.match(/Already up-to-date/)) {
+ continue;
+ }
+ var notification = new Notify.Notification({
+ summary: "Updated " + repo.name,
+ body : str
+ });
+ notification.set_timeout(20);
+ notification.show();
+
+ } catch(e) {
+ this.parent.parent.el.set_from_stock( Gtk.STOCK_MEDIA_RECORD );
+ print(JSON.stringify(e));
+ print("notification or push errror- probably to many in queue..");
+ imports.gitlive.errorDialog(e.message);
- notification.set_timeout(500);
- notification.show();
+ }
}
-
- file_enum.close(null);
-
+ this.parent.parent.el.set_tooltip_text(this.parent.parent.tooltip_text);
+
- gitlive.monitor.start();
+
+
+ imports.GitMonitor.GitMonitor.start();
+ }
+ }
+ },
+ {
+ init : function() {
+ this.el = new Gtk.ImageMenuItem.from_stock(Gtk.STOCK_SAVE);
+ XObject.prototype.init.call(this);
+ },
+ label: 'Update Timesheet',
+ always_show_image : true,
+ accel_group : null,
+
+ //label: 'Pause',
+ pack: 'append',
+ listeners : {
+ activate : function () {
+ var ret = imports.FixBug.FixBug.show();
}
}
},
+
+
{
init : function() {
this.el = new Gtk.ImageMenuItem.from_stock(Gtk.STOCK_RELOAD);
pack: 'append',
listeners : {
activate : function () {
-
+ var ret = imports.Clones.Clones.show();
}
}
pack: 'append',
listeners : {
activate : function () {
- var msg = new Gtk.MessageDialog({message_type:
- Gtk.MessageType.INFO, buttons : Gtk.ButtonsType.OK, text: "GIT Live - auto commits and pushes everything in ~/gitlive"});
+ var msg = new Gtk.AboutDialog({
+ program_name : "Git Live",
+ version: '0.3',
+ website: 'http://www.roojs.org/index.php/projects/gitlive.html',
+ website_label: 'RooJS Consulting',
+ license : 'LGPL'
+ });
+ msg.set_authors([ "Alan Knowles <alan@roojs.com>" ]);
msg.run();
msg.destroy();
}