68
68
dialog.set_version(__version__)
69
dialog.set_authors([ _("Lead Developer:"),
70
"Szilveszter Farkas <szilveszter.farkas@gmail.com>",
72
"Jelmer Vernooij <jelmer@samba.org>",
73
"Mateusz Korniak <mateusz.korniak@ant.gliwice.pl>",
74
"Gary van der Merwe <garyvdm@gmail.com>" ])
75
dialog.set_artists([ "Simon Pascal Klein <klepas@klepas.org>",
76
"Jakub Steiner <jimmac@novell.com>" ])
79
71
# Destroy the dialog
108
100
self.menuitem_file_move = self.toplevel.get_widget('menuitem_file_move')
109
101
self.menuitem_file_annotate = self.toplevel.get_widget('menuitem_file_annotate')
110
102
self.menuitem_view_show_hidden_files = self.toplevel.get_widget('menuitem_view_show_hidden_files')
111
self.menuitem_view_show_ignored_files = self.toplevel.get_widget('menuitem_view_show_ignored_files')
112
103
self.menuitem_branch = self.toplevel.get_widget('menuitem_branch')
113
104
self.menuitem_branch_init = self.toplevel.get_widget('menuitem_branch_initialize')
114
105
self.menuitem_branch_get = self.toplevel.get_widget('menuitem_branch_get')
115
106
self.menuitem_branch_checkout = self.toplevel.get_widget('menuitem_branch_checkout')
116
107
self.menuitem_branch_pull = self.toplevel.get_widget('menuitem_branch_pull')
117
108
self.menuitem_branch_push = self.toplevel.get_widget('menuitem_branch_push')
118
self.menuitem_branch_update = self.toplevel.get_widget('menuitem_branch_update')
119
109
self.menuitem_branch_revert = self.toplevel.get_widget('menuitem_branch_revert')
120
110
self.menuitem_branch_merge = self.toplevel.get_widget('menuitem_branch_merge')
121
111
self.menuitem_branch_commit = self.toplevel.get_widget('menuitem_branch_commit')
164
153
"on_menuitem_file_rename_activate": self.on_menuitem_file_rename_activate,
165
154
"on_menuitem_file_annotate_activate": self.on_menuitem_file_annotate_activate,
166
155
"on_menuitem_view_show_hidden_files_activate": self.on_menuitem_view_show_hidden_files_activate,
167
"on_menuitem_view_show_ignored_files_activate": self.on_menuitem_view_show_ignored_files_activate,
168
156
"on_menuitem_view_refresh_activate": self.on_menuitem_view_refresh_activate,
169
157
"on_menuitem_branch_initialize_activate": self.on_menuitem_branch_initialize_activate,
170
158
"on_menuitem_branch_get_activate": self.on_menuitem_branch_get_activate,
174
162
"on_menuitem_branch_commit_activate": self.on_menuitem_branch_commit_activate,
175
163
"on_menuitem_branch_push_activate": self.on_menuitem_branch_push_activate,
176
164
"on_menuitem_branch_pull_activate": self.on_menuitem_branch_pull_activate,
177
"on_menuitem_branch_update_activate": self.on_menuitem_branch_update_activate,
178
165
"on_menuitem_branch_tags_activate": self.on_menuitem_branch_tags_activate,
179
166
"on_menuitem_branch_status_activate": self.on_menuitem_branch_status_activate,
180
167
"on_menuitem_branch_missing_revisions_activate": self.on_menuitem_branch_missing_revisions_activate,
189
176
"on_toolbutton_commit_clicked": self.on_menuitem_branch_commit_activate,
190
177
"on_toolbutton_pull_clicked": self.on_menuitem_branch_pull_activate,
191
178
"on_toolbutton_push_clicked": self.on_menuitem_branch_push_activate,
192
"on_toolbutton_update_clicked": self.on_menuitem_branch_update_activate,
193
179
"on_treeview_right_button_press_event": self.on_treeview_right_button_press_event,
194
180
"on_treeview_right_row_activated": self.on_treeview_right_row_activated,
195
181
"on_treeview_left_button_press_event": self.on_treeview_left_button_press_event,
527
512
error_dialog(_('There are local changes in the branch'),
528
513
_('Please commit or revert the changes before merging.'))
530
parent_branch_path = self.wt.branch.get_parent()
531
merge = MergeDialog(self.wt, self.wtpath,default_branch_path=parent_branch_path )
515
merge = MergeDialog(self.wt, self.wtpath)
535
519
def on_menuitem_branch_missing_revisions_activate(self, widget):
536
520
""" Branch/Missing revisions menu handler. """
538
from bzrlib.missing import find_unmerged, iter_log_revisions
540
521
local_branch = self.wt.branch
541
parent_branch_path = local_branch.get_parent()
542
if parent_branch_path is None:
523
other_branch = local_branch.get_parent()
524
if other_branch is None:
543
525
error_dialog(_('Parent location is unknown'),
544
526
_('Cannot determine missing revisions if no parent location is known.'))
547
parent_branch = Branch.open(parent_branch_path)
549
if parent_branch.base == local_branch.base:
550
parent_branch = local_branch
552
local_extra, remote_extra = find_unmerged(local_branch,parent_branch)
554
if local_extra or remote_extra:
556
## def log_revision_one_line_text(log_revision):
557
## """ Generates one line description of log_revison ended with end of line."""
558
## revision = log_revision.rev
559
## txt = "- %s (%s)\n" % (revision.get_summary(), revision.committer, )
560
## txt = txt.replace("<"," ") # Seems < > chars are expected to be xml tags ...
561
## txt = txt.replace(">"," ")
566
dlg_txt += _('%d local extra revision(s). \n') % (len(local_extra),)
567
## NOTE: We do not want such ugly info about missing revisions
568
## Revision Browser should be used there
569
## max_revisions = 10
570
## for log_revision in iter_log_revisions(local_extra, local_branch.repository, verbose=1):
571
## dlg_txt += log_revision_one_line_text(log_revision)
572
## if max_revisions <= 0:
573
## dlg_txt += _("more ... \n")
575
## max_revisions -= 1
578
dlg_txt += _('%d local missing revision(s).\n') % (len(remote_extra),)
579
## max_revisions = 10
580
## for log_revision in iter_log_revisions(remote_extra, parent_branch.repository, verbose=1):
581
## dlg_txt += log_revision_one_line_text(log_revision)
582
## if max_revisions <= 0:
583
## dlg_txt += _("more ... \n")
585
## max_revisions -= 1
529
remote_branch = Branch.open(other_branch)
531
if remote_branch.base == local_branch.base:
532
remote_branch = local_branch
534
ret = len(local_branch.missing_revisions(remote_branch))
587
537
info_dialog(_('There are missing revisions'),
538
_('%d revision(s) missing.') % ret)
590
540
info_dialog(_('Local branch up to date'),
591
541
_('There are no missing revisions.'))
609
559
ret = branch_to.pull(branch_from)
611
561
info_dialog(_('Pull successful'), _('%d revision(s) pulled.') % ret)
614
def on_menuitem_branch_update_activate(self, widget):
615
""" Brranch/checkout update menu handler. """
617
ret = self.wt.update()
618
conflicts = self.wt.conflicts()
620
info_dialog(_('Update successful but conflicts generated'), _('Number of conflicts generated: %d.') % (len(conflicts),) )
622
info_dialog(_('Update successful'), _('No conflicts generated.') )
624
563
def on_menuitem_branch_push_activate(self, widget):
625
564
""" Branch/Push... menu handler. """
626
push = PushDialog(repository=None,revid=None,branch=self.wt.branch, parent=self.window)
565
push = PushDialog(self.wt.branch, self.window)
627
566
response = push.run()
628
567
if response != gtk.RESPONSE_NONE:
762
701
if self.path is not None:
763
702
self.refresh_right()
765
def on_menuitem_view_show_ignored_files_activate(self, widget):
766
""" Hide/Show ignored files menu handler. """
767
self.pref.set_preference('ignored_files', widget.get_active())
768
if self.path is not None:
771
704
def on_treeview_left_button_press_event(self, widget, event):
772
705
""" Occurs when somebody right-clicks in the bookmark list. """
773
706
if event.button == 3:
920
853
def _load_right(self):
921
854
""" Load data into the right panel. (Filelist) """
922
855
# Create ListStore
923
# Model: [ icon, dir, name, status text, status, size (int), size (human), mtime (int), mtime (local), fileid ]
856
# Model: [ icon, dir, name, status text, status, size (int), size (human), mtime (int), mtime (local), fileid]
924
857
liststore = gtk.ListStore(gobject.TYPE_STRING,
925
858
gobject.TYPE_BOOLEAN,
926
859
gobject.TYPE_STRING,
927
860
gobject.TYPE_STRING,
928
861
gobject.TYPE_STRING,
930
863
gobject.TYPE_STRING,
931
864
gobject.TYPE_INT,
932
865
gobject.TYPE_STRING,
1492
1417
def _format_size(self, size):
1493
1418
""" Format size to a human readable format. """
1495
return "%d[B]" % (size,)
1496
size = size / 1000.0
1498
for metric in ["kB","MB","GB","TB"]:
1501
size = size / 1000.0
1502
return "%.1f[%s]" % (size,metric)
1504
1421
def _format_date(self, timestamp):
1505
1422
""" Format the time (given in secs) to a human readable format. """