/b-gtk/fix-viz

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/b-gtk/fix-viz

« back to all changes in this revision

Viewing changes to olive/frontend/gtk/handler.py

  • Committer: Szilveszter Farkas (Phanatic)
  • Date: 2006-07-25 12:38:56 UTC
  • mto: (0.14.1 main) (93.1.1 win32.bialix)
  • mto: This revision was merged to the branch mainline in revision 83.
  • Revision ID: Szilveszter.Farkas@gmail.com-20060725123856-f7b3018de9dc669f
2006-07-25  Szilveszter Farkas <Szilveszter.Farkas@gmail.com>

    * olive-gtk: display error if python 2.4 not available (Mario Đanić)
      (Fixed: #54014)
    * olive-gtk: display error if pygtk2 (and glade) not available (Mario Đanić)
      (Fixed: #54013)

2006-07-24  Szilveszter Farkas <Szilveszter.Farkas@gmail.com>

    * olive/frontend/gtk/push.py: display number of pushed revisions

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
# Copyright (C) 2006 by Szilveszter Farkas (Phanatic) <szilveszter.farkas@gmail.com>
2
 
#
 
2
 
3
3
# This program is free software; you can redistribute it and/or modify
4
4
# it under the terms of the GNU General Public License as published by
5
5
# the Free Software Foundation; either version 2 of the License, or
6
6
# (at your option) any later version.
7
 
#
 
7
 
8
8
# This program is distributed in the hope that it will be useful,
9
9
# but WITHOUT ANY WARRANTY; without even the implied warranty of
10
10
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11
11
# GNU General Public License for more details.
12
 
#
 
12
 
13
13
# You should have received a copy of the GNU General Public License
14
14
# along with this program; if not, write to the Free Software
15
15
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
27
27
except:
28
28
    sys.exit(1)
29
29
 
30
 
from olive.backend.info import is_branch
31
30
import olive.backend.errors as errors
32
31
 
 
32
from add import OliveAdd
 
33
from branch import OliveBranch
 
34
from commit import OliveCommit
33
35
from dialog import OliveDialog
34
 
from menu import OliveMenu
 
36
from push import OlivePush
 
37
from remove import OliveRemove
35
38
 
36
39
class OliveHandler:
37
40
    """ Signal handler class for Olive. """
40
43
        self.comm = comm
41
44
        
42
45
        self.dialog = OliveDialog(self.gladefile)
43
 
        
44
 
        self.menu = OliveMenu(self.gladefile, self.comm, self.dialog)
45
46
    
46
47
    def on_about_activate(self, widget):
47
48
        self.dialog.about()
48
49
        
49
50
    def on_menuitem_add_files_activate(self, widget):
50
51
        """ Add file(s)... menu handler. """
51
 
        from add import OliveAdd
52
 
        add = OliveAdd(self.gladefile, self.comm, self.dialog)
 
52
        add = OliveAdd(self.gladefile, self.comm)
53
53
        add.display()
54
54
    
55
 
    def on_menuitem_branch_get_activate(self, widget):
56
 
        """ Branch/Get... menu handler. """
57
 
        from branch import OliveBranch
58
 
        branch = OliveBranch(self.gladefile, self.comm, self.dialog)
 
55
    def on_menuitem_branch_branch_activate(self, widget):
 
56
        """ Branch/Branch... menu handler. """
 
57
        branch = OliveBranch(self.gladefile, self.comm)
59
58
        branch.display()
60
59
    
61
 
    def on_menuitem_branch_checkout_activate(self, widget):
62
 
        """ Branch/Checkout... menu handler. """
63
 
        from checkout import OliveCheckout
64
 
        checkout = OliveCheckout(self.gladefile, self.comm, self.dialog)
65
 
        checkout.display()
66
 
    
67
60
    def on_menuitem_branch_commit_activate(self, widget):
68
61
        """ Branch/Commit... menu handler. """
69
 
        from commit import OliveCommit
70
 
        commit = OliveCommit(self.gladefile, self.comm, self.dialog)
 
62
        commit = OliveCommit(self.gladefile, self.comm)
71
63
        commit.display()
72
64
    
73
 
    def on_menuitem_branch_pull_activate(self, widget):
74
 
        """ Branch/Pull menu handler. """
75
 
        import olive.backend.update as update
76
 
        
77
 
        self.comm.set_busy(self.comm.window_main)
78
 
        
79
 
        try:
80
 
            ret = update.pull(self.comm.get_path())
81
 
        except errors.NotBranchError:
82
 
            self.dialog.error_dialog(_('Directory is not a branch'),
83
 
                                     _('You can perform this action only in a branch.'))
84
 
        except errors.NoLocationKnown:
85
 
            self.dialog.error_dialog(_('Parent location is unknown'),
86
 
                                     _('Pulling is not possible until there is no parent location.'))
87
 
        else:
88
 
            self.dialog.info_dialog(_('Pull successful'),
89
 
                                    _('%d revision(s) pulled.') % ret)
90
 
        
91
 
        self.comm.set_busy(self.comm.window_main, False)
92
 
    
93
65
    def on_menuitem_branch_push_activate(self, widget):
94
66
        """ Branch/Push... menu handler. """
95
 
        from push import OlivePush
96
 
        push = OlivePush(self.gladefile, self.comm, self.dialog)
 
67
        push = OlivePush(self.gladefile, self.comm)
97
68
        push.display()
98
69
    
99
 
    def on_menuitem_branch_status_activate(self, widget):
100
 
        """ Branch/Status... menu handler. """
101
 
        from status import OliveStatus
102
 
        status = OliveStatus(self.gladefile, self.comm, self.dialog)
103
 
        status.display()
104
 
    
105
70
    def on_menuitem_branch_initialize_activate(self, widget):
106
71
        """ Initialize current directory. """
107
72
        import olive.backend.init as init
109
74
        try:
110
75
            init.init(self.comm.get_path())
111
76
        except errors.AlreadyBranchError, errmsg:
112
 
            self.dialog.error_dialog(_('Directory is already a branch'),
113
 
                                     _('The current directory (%s) is already a branch.\nYou can start using it, or initialize another directory.') % errmsg)
 
77
            self.dialog.error_dialog('Directory is already a branch: %s' % errmsg)
114
78
        except errors.BranchExistsWithoutWorkingTree, errmsg:
115
 
            self.dialog.error_dialog(_('Branch without a working tree'),
116
 
                                     _('The current directory (%s)\nis a branch without a working tree.') % errmsg)
117
 
        except:
118
 
            raise
 
79
            self.dialog.error_dialog('Branch exists without a working tree: %s' % errmsg)
119
80
        else:
120
 
            self.dialog.info_dialog(_('Ininialize successful'),
121
 
                                    _('Directory successfully initialized.'))
 
81
            self.dialog.info_dialog('Directory successfully initialized.')
122
82
            self.comm.refresh_right()
123
83
        
124
 
    def on_menuitem_file_make_directory_activate(self, widget):
125
 
        """ File/Make directory... menu handler. """
126
 
        from mkdir import OliveMkdir
127
 
        mkdir = OliveMkdir(self.gladefile, self.comm, self.dialog)
128
 
        mkdir.display()
129
 
    
130
 
    def on_menuitem_file_move_activate(self, widget):
131
 
        """ File/Move... menu handler. """
132
 
        from move import OliveMove
133
 
        move = OliveMove(self.gladefile, self.comm, self.dialog)
134
 
        move.display()
135
 
    
136
 
    def on_menuitem_file_rename_activate(self, widget):
137
 
        """ File/Rename... menu handler. """
138
 
        from rename import OliveRename
139
 
        rename = OliveRename(self.gladefile, self.comm, self.dialog)
140
 
        rename.display()
141
 
 
142
84
    def on_menuitem_remove_file_activate(self, widget):
143
85
        """ Remove (unversion) selected file. """
144
 
        from remove import OliveRemove
145
 
        remove = OliveRemove(self.gladefile, self.comm, self.dialog)
 
86
        remove = OliveRemove(self.gladefile, self.comm)
146
87
        remove.display()
147
88
    
148
 
    def on_menuitem_stats_diff_activate(self, widget):
149
 
        """ Statistics/Differences... menu handler. """
150
 
        from diff import OliveDiff
151
 
        diff = OliveDiff(self.gladefile, self.comm, self.dialog)
152
 
        diff.display()
153
 
    
154
 
    def on_menuitem_stats_infos_activate(self, widget):
155
 
        """ Statistics/Informations... menu handler. """
156
 
        from info import OliveInfo
157
 
        info = OliveInfo(self.gladefile, self.comm, self.dialog)
158
 
        info.display()
159
 
    
160
 
    def on_menuitem_stats_log_activate(self, widget):
161
 
        """ Statistics/Log... menu handler. """
162
 
        from log import OliveLog
163
 
        log = OliveLog(self.gladefile, self.comm, self.dialog)
164
 
        log.display()
165
 
    
166
 
    def on_menuitem_view_refresh_activate(self, widget):
167
 
        """ View/Refresh menu handler. """
168
 
        # Refresh the left pane
169
 
        self.comm.refresh_left()
170
 
        # Refresh the right pane
171
 
        self.comm.refresh_right()
172
 
    
173
 
    def on_menuitem_view_show_hidden_files_activate(self, widget):
174
 
        """ View/Show hidden files menu handler. """
175
 
        if widget.get_active():
176
 
            # Show hidden files
177
 
            self.comm.pref.set_preference('dotted_files', True)
178
 
            self.comm.pref.refresh()
179
 
            self.comm.refresh_right()
180
 
        else:
181
 
            # Do not show hidden files
182
 
            self.comm.pref.set_preference('dotted_files', False)
183
 
            self.comm.pref.refresh()
184
 
            self.comm.refresh_right()
185
 
 
186
 
    def on_treeview_left_button_press_event(self, widget, event):
187
 
        """ Occurs when somebody right-clicks in the bookmark list. """
188
 
        if event.button == 3:
189
 
            self.menu.left_context_menu().popup(None, None, None, 0,
190
 
                                                event.time)
191
 
        
192
 
    def on_treeview_left_row_activated(self, treeview, path, view_column):
193
 
        """ Occurs when somebody double-clicks or enters an item in the
194
 
        bookmark list. """
195
 
        self.comm.set_busy(treeview)
196
 
        
197
 
        newdir = self.comm.get_selected_left()
198
 
        self.comm.set_path(newdir)
199
 
        
200
 
        self.comm.refresh_right()
201
 
        
202
 
        self.comm.set_busy(treeview, False)
203
 
    
204
 
    def on_treeview_right_button_press_event(self, widget, event):
205
 
        """ Occurs when somebody right-clicks in the file list. """
206
 
        if event.button == 3:
207
 
            # get the menu items
208
 
            m_add = self.menu.ui.get_widget('/context_right/add')
209
 
            m_remove = self.menu.ui.get_widget('/context_right/remove')
210
 
            m_commit = self.menu.ui.get_widget('/context_right/commit')
211
 
            m_diff = self.menu.ui.get_widget('/context_right/diff')
212
 
            # check if we're in a branch
213
 
            if not is_branch(self.comm.get_path()):
214
 
                m_add.set_sensitive(False)
215
 
                m_remove.set_sensitive(False)
216
 
                m_commit.set_sensitive(False)
217
 
                m_diff.set_sensitive(False)
218
 
            else:
219
 
                m_add.set_sensitive(True)
220
 
                m_remove.set_sensitive(True)
221
 
                m_commit.set_sensitive(True)
222
 
                m_diff.set_sensitive(True)
223
 
            self.menu.right_context_menu().popup(None, None, None, 0,
224
 
                                                 event.time)
225
 
        
226
89
    def on_treeview_right_row_activated(self, treeview, path, view_column):
227
90
        """ Occurs when somebody double-clicks or enters an item in the
228
91
        file list. """
233
96
        if newdir == '..':
234
97
            self.comm.set_path(os.path.split(self.comm.get_path())[0])
235
98
        else:
236
 
            fullpath = self.comm.get_path() + '/' + newdir
237
 
            if os.path.isdir(fullpath):
238
 
                # selected item is an existant directory
239
 
                self.comm.set_path(fullpath)
240
 
            else:
241
 
                if sys.platform == 'win32':
242
 
                    # open the file with the default application
243
 
                    os.startfile(fullpath)
244
 
                else:
245
 
                    # TODO: support other OSes
246
 
                    print "DEBUG: double-click on non-Win32 platforms not supported."
 
99
            self.comm.set_path(self.comm.get_path() + '/' + newdir)
247
100
        
248
101
        self.comm.refresh_right()
249
102
    
250
 
    def on_window_main_delete_event(self, widget, event=None):
251
 
        """ Do some stuff before exiting. """
252
 
        width, height = self.comm.window_main.get_size()
253
 
        self.comm.pref.set_preference('window_width', width)
254
 
        self.comm.pref.set_preference('window_height', height)
255
 
        x, y = self.comm.window_main.get_position()
256
 
        self.comm.pref.set_preference('window_x', x)
257
 
        self.comm.pref.set_preference('window_y', y)
258
 
        self.comm.pref.set_preference('paned_position',
259
 
                                      self.comm.hpaned_main.get_position())
260
 
        
261
 
        self.comm.pref.write()
262
 
        self.comm.window_main.destroy()
263
 
 
264
103
    def not_implemented(self, widget):
265
104
        """ Display a Not implemented error message. """
266
 
        self.dialog.error_dialog(_('We feel sorry'),
267
 
                                 _('This feature is not yet implemented.'))
 
105
        self.dialog.error_dialog('This feature is not yet implemented.')
268
106