And the merge dialog. Jasper
# Bazaar merge directive format 2 (Bazaar 0.90) # revision_id: [EMAIL PROTECTED] # target_branch: https://code.launchpad.net/~bzr-gtk/bzr-gtk/trunk # testament_sha1: d67314e120f3700653279e02d80d3d6b6180cb62 # timestamp: 2008-07-17 23:00:18 +0200 # source_branch: https://code.launchpad.net/~bzr-gtk/bzr-gtk/trunk # base_revision_id: [EMAIL PROTECTED] # # Begin patch === modified file 'olive/__init__.py' --- olive/__init__.py 2008-07-01 21:56:25 +0000 +++ olive/__init__.py 2008-07-17 21:00:10 +0000 @@ -537,15 +537,17 @@ def on_menuitem_branch_merge_activate(self, widget): """ Branch/Merge... menu handler. """ - from bzrlib.plugins.gtk.merge import MergeDialog + from bzrlib.plugins.gtk.olive.merge import MergeDialog if self.check_for_changes(): error_dialog(_i18n('There are local changes in the branch'), _i18n('Please commit or revert the changes before merging.')) else: - parent_branch_path = self.wt.branch.get_parent() - merge = MergeDialog(self.wt, self.wtpath,default_branch_path=parent_branch_path ) - merge.display() + merge = MergeDialog(self.wt, self.wtpath, parent_branch_path, self.window) + response = merge.run() + merge.destroy() + if response == gtk.RESPONSE_OK: + self.refresh_right() @show_bzr_error def on_menuitem_branch_missing_revisions_activate(self, widget):
=== renamed file 'merge.py' => 'olive/merge.py'
--- merge.py 2008-05-05 18:16:46 +0000
+++ olive/merge.py 2008-07-17 21:00:10 +0000
@@ -23,48 +23,63 @@
pass
import gtk
-import gtk.glade
from bzrlib.branch import Branch
import bzrlib.errors as errors
+
from bzrlib.plugins.gtk import _i18n
-
-from dialog import error_dialog, info_dialog, warning_dialog
-from errors import show_bzr_error
-from olive.guifiles import GLADEFILENAME
-
-
-class MergeDialog:
+from bzrlib.plugins.gtk.dialog import error_dialog, info_dialog, warning_dialog
+from bzrlib.plugins.gtk.errors import show_bzr_error
+
+
+class MergeDialog(gtk.Dialog):
""" Display the Merge dialog and perform the needed actions. """
- def __init__(self, wt, wtpath,default_branch_path=None):
+
+ def __init__(self, wt, wtpath, default_branch_path=None, parent=None):
""" Initialize the Merge dialog. """
- self.glade = gtk.glade.XML(GLADEFILENAME, 'window_merge', 'olive-gtk')
-
- self.window = self.glade.get_widget('window_merge')
-
- # Dictionary for signal_autoconnect
- dic = { "on_button_merge_merge_clicked": self.merge,
- "on_button_merge_cancel_clicked": self.close,
- "on_button_merge_open_clicked": self.open }
-
- # Connect the signals to the handlers
- self.glade.signal_autoconnect(dic)
-
+ gtk.Dialog.__init__(self, title="Olive - Merge",
+ parent=parent,
+ flags=0,
+ buttons=(gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL))
+
+ # Get arguments
self.wt = wt
self.wtpath = wtpath
- # Get some widgets
- self.entry = self.glade.get_widget('entry_merge')
- if default_branch_path:
- self.entry.set_text(default_branch_path)
-
- def display(self):
- """ Display the Add file(s) dialog. """
- self.window.show_all()
+ directory = os.path.dirname(self.wt.abspath(self.wtpath))
+
+ # Create widgets
+ self._hbox = gtk.HBox()
+ self._label_merge_from = gtk.Label(_i18n("Merge from"))
+ self._filechooser_dialog = gtk.FileChooserDialog(title="Please select a folder",
+ parent=self.window,
+ action=gtk.FILE_CHOOSER_ACTION_SELECT_FOLDER,
+ buttons=(gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL,
+ gtk.STOCK_OPEN, gtk.RESPONSE_OK))
+ self._filechooser_dialog.set_default_response(gtk.RESPONSE_OK)
+ self._filechooser = gtk.FileChooserButton(self._filechooser_dialog)
+ self._button_merge = gtk.Button(_i18n("_Merge"))
+ self._button_merge_icon = gtk.Image()
+ self._button_merge_icon.set_from_stock(gtk.STOCK_APPLY, gtk.ICON_SIZE_BUTTON)
+ self._button_merge.set_image(self._button_merge_icon)
+
+ self._button_merge.connect('clicked', self._on_merge_clicked)
+
+ # Set location
+ self._filechooser_dialog.set_current_folder(directory)
+
+ # Add widgets to dialog
+ self.vbox.add(self._hbox)
+ self._hbox.add(self._label_merge_from)
+ self._hbox.add(self.filechooser)
+ self._hbox.set_spacing(5)
+ self.action_area.pack_end(self._button_merge)
+
+ self.vbox.show_all()
@show_bzr_error
- def merge(self, widget):
- branch = self.entry.get_text()
+ def _on_merge_clicked(self, widget):
+ branch = self._filechooser.get_filename()
if branch == "":
error_dialog(_i18n('Branch not given'),
_i18n('Please specify a branch to merge from.'))
@@ -78,7 +93,6 @@
error_dialog(_i18n('Bazaar command error'), str(errmsg))
return
- self.close()
if conflicts == 0:
# No conflicts found.
info_dialog(_i18n('Merge successful'),
@@ -87,19 +101,5 @@
# There are conflicts to be resolved.
warning_dialog(_i18n('Conflicts encountered'),
_i18n('Please resolve the conflicts manually before committing.'))
-
- def open(self, widget):
- fcd = gtk.FileChooserDialog(title="Please select a folder",
- parent=self.window,
- action=gtk.FILE_CHOOSER_ACTION_SELECT_FOLDER,
- buttons=(gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL,
- gtk.STOCK_OPEN, gtk.RESPONSE_OK))
- fcd.set_default_response(gtk.RESPONSE_OK)
-
- if fcd.run() == gtk.RESPONSE_OK:
- self.entry.set_text(fcd.get_filename())
-
- fcd.destroy()
-
- def close(self, widget=None):
- self.window.destroy()
+
+ self.response(gtk.RESPONSE_OK)
# Begin bundle
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
QvEibfA=
signature.asc
Description: OpenPGP digital signature
-- bzr-gtk mailing list [email protected] Modify settings or unsubscribe at: https://lists.canonical.com/mailman/listinfo/bzr-gtk
