bzr branch
http://gegoxaren.bato24.eu/bzr/b-gtk/fix-viz
| 0.8.19
by Szilveszter Farkas (Phanatic) 2006-07-21 Szilveszter Farkas <Szilveszter.Farkas@gmail.com> | 1 | # Copyright (C) 2006 by Szilveszter Farkas (Phanatic) <szilveszter.farkas@gmail.com>
 | 
| 0.8.46
by Szilveszter Farkas (Phanatic) Modified OliveDialog class interface; huge cleanups. | 2 | #
 | 
| 0.8.19
by Szilveszter Farkas (Phanatic) 2006-07-21 Szilveszter Farkas <Szilveszter.Farkas@gmail.com> | 3 | # This program is free software; you can redistribute it and/or modify
 | 
| 4 | # it under the terms of the GNU General Public License as published by
 | |
| 5 | # the Free Software Foundation; either version 2 of the License, or
 | |
| 6 | # (at your option) any later version.
 | |
| 0.8.46
by Szilveszter Farkas (Phanatic) Modified OliveDialog class interface; huge cleanups. | 7 | #
 | 
| 0.8.19
by Szilveszter Farkas (Phanatic) 2006-07-21 Szilveszter Farkas <Szilveszter.Farkas@gmail.com> | 8 | # This program is distributed in the hope that it will be useful,
 | 
| 9 | # but WITHOUT ANY WARRANTY; without even the implied warranty of
 | |
| 10 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | |
| 11 | # GNU General Public License for more details.
 | |
| 0.8.46
by Szilveszter Farkas (Phanatic) Modified OliveDialog class interface; huge cleanups. | 12 | #
 | 
| 0.8.19
by Szilveszter Farkas (Phanatic) 2006-07-21 Szilveszter Farkas <Szilveszter.Farkas@gmail.com> | 13 | # You should have received a copy of the GNU General Public License
 | 
| 14 | # along with this program; if not, write to the Free Software
 | |
| 15 | # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 | |
| 16 | ||
| 17 | import sys | |
| 18 | ||
| 19 | try: | |
| 20 | import pygtk | |
| 21 | pygtk.require("2.0") | |
| 22 | except: | |
| 23 |     pass
 | |
| 24 | try: | |
| 25 | import gtk | |
| 26 | import gtk.glade | |
| 0.8.20
by Szilveszter Farkas (Phanatic) 2006-07-24 Szilveszter Farkas <Szilveszter.Farkas@gmail.com> | 27 | import gobject | 
| 0.8.26
by Szilveszter Farkas (Phanatic) Implemented Diff window; added menu.py (was missing from last commit) | 28 | import pango | 
| 0.8.19
by Szilveszter Farkas (Phanatic) 2006-07-21 Szilveszter Farkas <Szilveszter.Farkas@gmail.com> | 29 | except: | 
| 30 | sys.exit(1) | |
| 31 | ||
| 0.8.55
by Szilveszter Farkas (Phanatic) Gettext support added. | 32 | from bzrlib import version_info | 
| 0.8.26
by Szilveszter Farkas (Phanatic) Implemented Diff window; added menu.py (was missing from last commit) | 33 | |
| 0.8.20
by Szilveszter Farkas (Phanatic) 2006-07-24 Szilveszter Farkas <Szilveszter.Farkas@gmail.com> | 34 | import bzrlib.errors as errors | 
| 35 | from bzrlib.workingtree import WorkingTree | |
| 36 | ||
| 0.8.19
by Szilveszter Farkas (Phanatic) 2006-07-21 Szilveszter Farkas <Szilveszter.Farkas@gmail.com> | 37 | class OliveCommit: | 
| 38 | """ Display Commit dialog and perform the needed actions. """ | |
| 0.8.46
by Szilveszter Farkas (Phanatic) Modified OliveDialog class interface; huge cleanups. | 39 | def __init__(self, gladefile, comm, dialog): | 
| 0.8.19
by Szilveszter Farkas (Phanatic) 2006-07-21 Szilveszter Farkas <Szilveszter.Farkas@gmail.com> | 40 | """ Initialize the Commit dialog. """ | 
| 41 | self.gladefile = gladefile | |
| 0.8.55
by Szilveszter Farkas (Phanatic) Gettext support added. | 42 | self.glade = gtk.glade.XML(self.gladefile, 'window_commit', 'olive-gtk') | 
| 0.8.19
by Szilveszter Farkas (Phanatic) 2006-07-21 Szilveszter Farkas <Szilveszter.Farkas@gmail.com> | 43 | |
| 0.8.46
by Szilveszter Farkas (Phanatic) Modified OliveDialog class interface; huge cleanups. | 44 |         # Communication object
 | 
| 0.8.19
by Szilveszter Farkas (Phanatic) 2006-07-21 Szilveszter Farkas <Szilveszter.Farkas@gmail.com> | 45 | self.comm = comm | 
| 0.8.46
by Szilveszter Farkas (Phanatic) Modified OliveDialog class interface; huge cleanups. | 46 |         # Dialog object
 | 
| 47 | self.dialog = dialog | |
| 48 | ||
| 0.8.55
by Szilveszter Farkas (Phanatic) Gettext support added. | 49 |         # Get some important widgets
 | 
| 0.8.46
by Szilveszter Farkas (Phanatic) Modified OliveDialog class interface; huge cleanups. | 50 | self.window = self.glade.get_widget('window_commit') | 
| 0.8.55
by Szilveszter Farkas (Phanatic) Gettext support added. | 51 | self.checkbutton_local = self.glade.get_widget('checkbutton_commit_local') | 
| 52 | self.textview = self.glade.get_widget('textview_commit') | |
| 53 | self.file_view = self.glade.get_widget('treeview_commit_select') | |
| 0.8.46
by Szilveszter Farkas (Phanatic) Modified OliveDialog class interface; huge cleanups. | 54 | |
| 0.8.20
by Szilveszter Farkas (Phanatic) 2006-07-24 Szilveszter Farkas <Szilveszter.Farkas@gmail.com> | 55 |         # Check if current location is a branch
 | 
| 56 | try: | |
| 57 | (self.wt, path) = WorkingTree.open_containing(self.comm.get_path()) | |
| 58 | branch = self.wt.branch | |
| 59 | except errors.NotBranchError: | |
| 60 | self.notbranch = True | |
| 61 |             return
 | |
| 62 | except: | |
| 63 |             raise
 | |
| 64 | ||
| 65 | file_id = self.wt.path2id(path) | |
| 66 | ||
| 67 | self.notbranch = False | |
| 68 | if file_id is None: | |
| 69 | self.notbranch = True | |
| 70 |             return
 | |
| 71 | ||
| 72 |         # Set the delta
 | |
| 73 | self.old_tree = self.wt.branch.repository.revision_tree(self.wt.branch.last_revision()) | |
| 0.8.55
by Szilveszter Farkas (Phanatic) Gettext support added. | 74 | if version_info < (0, 9): | 
| 0.8.23
by Szilveszter Farkas (Phanatic) Visual feedback when Olive is busy; follow bzr API changes; commit dialog update | 75 | self.delta = compare_trees(self.old_tree, self.wt) | 
| 76 | else: | |
| 77 | self.delta = self.wt.changes_from(self.old_tree) | |
| 0.8.20
by Szilveszter Farkas (Phanatic) 2006-07-24 Szilveszter Farkas <Szilveszter.Farkas@gmail.com> | 78 | |
| 0.8.19
by Szilveszter Farkas (Phanatic) 2006-07-21 Szilveszter Farkas <Szilveszter.Farkas@gmail.com> | 79 |         # Dictionary for signal_autoconnect
 | 
| 80 | dic = { "on_button_commit_commit_clicked": self.commit, | |
| 81 | "on_button_commit_cancel_clicked": self.close } | |
| 82 | ||
| 83 |         # Connect the signals to the handlers
 | |
| 84 | self.glade.signal_autoconnect(dic) | |
| 0.8.20
by Szilveszter Farkas (Phanatic) 2006-07-24 Szilveszter Farkas <Szilveszter.Farkas@gmail.com> | 85 | |
| 86 |         # Create the file list
 | |
| 87 | self._create_file_view() | |
| 0.8.19
by Szilveszter Farkas (Phanatic) 2006-07-21 Szilveszter Farkas <Szilveszter.Farkas@gmail.com> | 88 | |
| 89 | def display(self): | |
| 90 | """ Display the Push dialog. """ | |
| 0.8.20
by Szilveszter Farkas (Phanatic) 2006-07-24 Szilveszter Farkas <Szilveszter.Farkas@gmail.com> | 91 | if self.notbranch: | 
| 0.8.55
by Szilveszter Farkas (Phanatic) Gettext support added. | 92 | self.dialog.error_dialog(_('Directory is not a branch'), | 
| 93 | _('You can perform this action only in a branch.')) | |
| 0.8.46
by Szilveszter Farkas (Phanatic) Modified OliveDialog class interface; huge cleanups. | 94 | self.close() | 
| 0.8.20
by Szilveszter Farkas (Phanatic) 2006-07-24 Szilveszter Farkas <Szilveszter.Farkas@gmail.com> | 95 | else: | 
| 0.8.23
by Szilveszter Farkas (Phanatic) Visual feedback when Olive is busy; follow bzr API changes; commit dialog update | 96 | from olive.backend.info import is_checkout | 
| 97 | if is_checkout(self.comm.get_path()): | |
| 98 |                 # we have a checkout, so the local commit checkbox must appear
 | |
| 99 | self.checkbutton_local.show() | |
| 100 | ||
| 0.8.26
by Szilveszter Farkas (Phanatic) Implemented Diff window; added menu.py (was missing from last commit) | 101 | self.textview.modify_font(pango.FontDescription("Monospace")) | 
| 0.8.23
by Szilveszter Farkas (Phanatic) Visual feedback when Olive is busy; follow bzr API changes; commit dialog update | 102 | self.window.show() | 
| 103 | ||
| 0.8.20
by Szilveszter Farkas (Phanatic) 2006-07-24 Szilveszter Farkas <Szilveszter.Farkas@gmail.com> | 104 | |
| 105 |     # This code is from Jelmer Vernooij's bzr-gtk branch
 | |
| 106 | def _create_file_view(self): | |
| 0.8.21
by Szilveszter Farkas (Phanatic) 2006-07-25 Szilveszter Farkas <Szilveszter.Farkas@gmail.com> | 107 | self.file_store = gtk.ListStore(gobject.TYPE_BOOLEAN, | 
| 108 | gobject.TYPE_STRING, | |
| 109 | gobject.TYPE_STRING) | |
| 0.8.20
by Szilveszter Farkas (Phanatic) 2006-07-24 Szilveszter Farkas <Szilveszter.Farkas@gmail.com> | 110 | self.file_view.set_model(self.file_store) | 
| 111 | crt = gtk.CellRendererToggle() | |
| 112 | crt.set_property("activatable", True) | |
| 113 | crt.connect("toggled", self._toggle_commit, self.file_store) | |
| 0.8.55
by Szilveszter Farkas (Phanatic) Gettext support added. | 114 | self.file_view.append_column(gtk.TreeViewColumn(_('Commit'), | 
| 0.8.21
by Szilveszter Farkas (Phanatic) 2006-07-25 Szilveszter Farkas <Szilveszter.Farkas@gmail.com> | 115 | crt, active=0)) | 
| 0.8.55
by Szilveszter Farkas (Phanatic) Gettext support added. | 116 | self.file_view.append_column(gtk.TreeViewColumn(_('Path'), | 
| 0.8.21
by Szilveszter Farkas (Phanatic) 2006-07-25 Szilveszter Farkas <Szilveszter.Farkas@gmail.com> | 117 | gtk.CellRendererText(), text=1)) | 
| 0.8.55
by Szilveszter Farkas (Phanatic) Gettext support added. | 118 | self.file_view.append_column(gtk.TreeViewColumn(_('Type'), | 
| 0.8.21
by Szilveszter Farkas (Phanatic) 2006-07-25 Szilveszter Farkas <Szilveszter.Farkas@gmail.com> | 119 | gtk.CellRendererText(), text=2)) | 
| 0.8.20
by Szilveszter Farkas (Phanatic) 2006-07-24 Szilveszter Farkas <Szilveszter.Farkas@gmail.com> | 120 | |
| 0.8.55
by Szilveszter Farkas (Phanatic) Gettext support added. | 121 | for path, id, kind in self.delta.added: | 
| 122 | self.file_store.append([ True, path, _('added') ]) | |
| 123 | ||
| 124 | for path, id, kind in self.delta.removed: | |
| 125 | self.file_store.append([ True, path, _('removed') ]) | |
| 126 | ||
| 127 | for oldpath, newpath, id, kind, text_modified, meta_modified in self.delta.renamed: | |
| 128 | self.file_store.append([ True, oldpath, _('renamed') ]) | |
| 129 | ||
| 130 | for path, id, kind, text_modified, meta_modified in self.delta.modified: | |
| 131 | self.file_store.append([ True, path, _('modified') ]) | |
| 0.8.20
by Szilveszter Farkas (Phanatic) 2006-07-24 Szilveszter Farkas <Szilveszter.Farkas@gmail.com> | 132 | |
| 133 | def _get_specific_files(self): | |
| 134 | ret = [] | |
| 135 | it = self.file_store.get_iter_first() | |
| 136 | while it: | |
| 137 | if self.file_store.get_value(it, 0): | |
| 0.8.21
by Szilveszter Farkas (Phanatic) 2006-07-25 Szilveszter Farkas <Szilveszter.Farkas@gmail.com> | 138 | ret.append(self.file_store.get_value(it, 1)) | 
| 0.8.20
by Szilveszter Farkas (Phanatic) 2006-07-24 Szilveszter Farkas <Szilveszter.Farkas@gmail.com> | 139 | it = self.file_store.iter_next(it) | 
| 140 | ||
| 141 | return ret | |
| 142 |     # end of bzr-gtk code
 | |
| 143 | ||
| 144 | def _toggle_commit(self, cell, path, model): | |
| 145 | model[path][0] = not model[path][0] | |
| 146 |         return
 | |
| 0.8.19
by Szilveszter Farkas (Phanatic) 2006-07-21 Szilveszter Farkas <Szilveszter.Farkas@gmail.com> | 147 | |
| 148 | def commit(self, widget): | |
| 0.8.26
by Szilveszter Farkas (Phanatic) Implemented Diff window; added menu.py (was missing from last commit) | 149 | textbuffer = self.textview.get_buffer() | 
| 0.8.19
by Szilveszter Farkas (Phanatic) 2006-07-21 Szilveszter Farkas <Szilveszter.Farkas@gmail.com> | 150 | start, end = textbuffer.get_bounds() | 
| 151 | message = textbuffer.get_text(start, end) | |
| 152 | ||
| 153 | checkbutton_strict = self.glade.get_widget('checkbutton_commit_strict') | |
| 154 | checkbutton_force = self.glade.get_widget('checkbutton_commit_force') | |
| 155 | ||
| 0.8.20
by Szilveszter Farkas (Phanatic) 2006-07-24 Szilveszter Farkas <Szilveszter.Farkas@gmail.com> | 156 | specific_files = self._get_specific_files() | 
| 157 | ||
| 0.8.23
by Szilveszter Farkas (Phanatic) Visual feedback when Olive is busy; follow bzr API changes; commit dialog update | 158 | self.comm.set_busy(self.window) | 
| 0.8.20
by Szilveszter Farkas (Phanatic) 2006-07-24 Szilveszter Farkas <Szilveszter.Farkas@gmail.com> | 159 |         # merged from Jelmer Vernooij's olive integration branch
 | 
| 0.8.19
by Szilveszter Farkas (Phanatic) 2006-07-21 Szilveszter Farkas <Szilveszter.Farkas@gmail.com> | 160 | try: | 
| 0.8.20
by Szilveszter Farkas (Phanatic) 2006-07-24 Szilveszter Farkas <Szilveszter.Farkas@gmail.com> | 161 | self.wt.commit(message, | 
| 162 | allow_pointless=checkbutton_force.get_active(), | |
| 163 | strict=checkbutton_strict.get_active(), | |
| 0.8.23
by Szilveszter Farkas (Phanatic) Visual feedback when Olive is busy; follow bzr API changes; commit dialog update | 164 | local=self.checkbutton_local.get_active(), | 
| 0.8.20
by Szilveszter Farkas (Phanatic) 2006-07-24 Szilveszter Farkas <Szilveszter.Farkas@gmail.com> | 165 | specific_files=specific_files) | 
| 0.8.19
by Szilveszter Farkas (Phanatic) 2006-07-21 Szilveszter Farkas <Szilveszter.Farkas@gmail.com> | 166 | except errors.NotBranchError: | 
| 0.8.55
by Szilveszter Farkas (Phanatic) Gettext support added. | 167 | self.dialog.error_dialog(_('Directory is not a branch'), | 
| 168 | _('You can perform this action only in a branch.')) | |
| 0.8.23
by Szilveszter Farkas (Phanatic) Visual feedback when Olive is busy; follow bzr API changes; commit dialog update | 169 | self.comm.set_busy(self.window, False) | 
| 0.8.19
by Szilveszter Farkas (Phanatic) 2006-07-21 Szilveszter Farkas <Szilveszter.Farkas@gmail.com> | 170 |             return
 | 
| 171 | except errors.LocalRequiresBoundBranch: | |
| 0.8.55
by Szilveszter Farkas (Phanatic) Gettext support added. | 172 | self.dialog.error_dialog(_('Directory is not a checkout'), | 
| 173 | _('You can perform local commit only on checkouts.')) | |
| 0.8.23
by Szilveszter Farkas (Phanatic) Visual feedback when Olive is busy; follow bzr API changes; commit dialog update | 174 | self.comm.set_busy(self.window, False) | 
| 0.8.20
by Szilveszter Farkas (Phanatic) 2006-07-24 Szilveszter Farkas <Szilveszter.Farkas@gmail.com> | 175 |             return
 | 
| 176 | except errors.PointlessCommit: | |
| 0.8.55
by Szilveszter Farkas (Phanatic) Gettext support added. | 177 | self.dialog.error_dialog(_('No changes to commit'), | 
| 178 | _('Try force commit if you want to commit anyway.')) | |
| 0.8.23
by Szilveszter Farkas (Phanatic) Visual feedback when Olive is busy; follow bzr API changes; commit dialog update | 179 | self.comm.set_busy(self.window, False) | 
| 0.8.20
by Szilveszter Farkas (Phanatic) 2006-07-24 Szilveszter Farkas <Szilveszter.Farkas@gmail.com> | 180 |             return
 | 
| 181 | except errors.ConflictsInTree: | |
| 0.8.55
by Szilveszter Farkas (Phanatic) Gettext support added. | 182 | self.dialog.error_dialog(_('Conflicts in tree'), | 
| 183 | _('You need to resolve the conflicts before committing.')) | |
| 0.8.23
by Szilveszter Farkas (Phanatic) Visual feedback when Olive is busy; follow bzr API changes; commit dialog update | 184 | self.comm.set_busy(self.window, False) | 
| 0.8.20
by Szilveszter Farkas (Phanatic) 2006-07-24 Szilveszter Farkas <Szilveszter.Farkas@gmail.com> | 185 |             return
 | 
| 186 | except errors.StrictCommitFailed: | |
| 0.8.55
by Szilveszter Farkas (Phanatic) Gettext support added. | 187 | self.dialog.error_dialog(_('Strict commit failed'), | 
| 188 | _('There are unknown files in the working tree.\nPlease add or delete them.')) | |
| 0.8.23
by Szilveszter Farkas (Phanatic) Visual feedback when Olive is busy; follow bzr API changes; commit dialog update | 189 | self.comm.set_busy(self.window, False) | 
| 0.8.19
by Szilveszter Farkas (Phanatic) 2006-07-21 Szilveszter Farkas <Szilveszter.Farkas@gmail.com> | 190 |             return
 | 
| 191 | except errors.BoundBranchOutOfDate, errmsg: | |
| 0.8.55
by Szilveszter Farkas (Phanatic) Gettext support added. | 192 | self.dialog.error_dialog(_('Bound branch is out of date'), | 
| 193 | _('%s') % errmsg) | |
| 0.8.23
by Szilveszter Farkas (Phanatic) Visual feedback when Olive is busy; follow bzr API changes; commit dialog update | 194 | self.comm.set_busy(self.window, False) | 
| 0.8.19
by Szilveszter Farkas (Phanatic) 2006-07-21 Szilveszter Farkas <Szilveszter.Farkas@gmail.com> | 195 |             return
 | 
| 196 | except: | |
| 197 |             raise
 | |
| 198 | ||
| 199 | self.close() | |
| 200 | self.comm.refresh_right() | |
| 201 | ||
| 202 | def close(self, widget=None): | |
| 203 | self.window.destroy() |