/b-gtk/fix-viz

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/b-gtk/fix-viz
0.8.37 by Szilveszter Farkas (Phanatic)
Implemented Make directory functionality; some cleanups.
1
# Copyright (C) 2006 by Szilveszter Farkas (Phanatic) <szilveszter.farkas@gmail.com>
2
#
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.
7
#
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.
12
#
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 os
18
import sys
19
20
try:
21
    import pygtk
22
    pygtk.require("2.0")
23
except:
24
    pass
0.13.10 by Jelmer Vernooij
Don't pass around gladefile all the time.
25
26
import gtk
27
import gtk.glade
0.8.37 by Szilveszter Farkas (Phanatic)
Implemented Make directory functionality; some cleanups.
28
0.11.1 by Jelmer Vernooij
Eliminate olive.backend.errors.
29
import bzrlib.errors as errors
0.8.37 by Szilveszter Farkas (Phanatic)
Implemented Make directory functionality; some cleanups.
30
0.13.10 by Jelmer Vernooij
Don't pass around gladefile all the time.
31
from olive import gladefile
32
0.8.37 by Szilveszter Farkas (Phanatic)
Implemented Make directory functionality; some cleanups.
33
class OliveMkdir:
34
    """ Display the Make directory dialog and perform the needed actions. """
0.13.10 by Jelmer Vernooij
Don't pass around gladefile all the time.
35
    def __init__(self, wt, wtpath):
0.8.37 by Szilveszter Farkas (Phanatic)
Implemented Make directory functionality; some cleanups.
36
        """ Initialize the Make directory dialog. """
0.13.10 by Jelmer Vernooij
Don't pass around gladefile all the time.
37
        self.glade = gtk.glade.XML(gladefile, 'window_mkdir', 'olive-gtk')
0.8.37 by Szilveszter Farkas (Phanatic)
Implemented Make directory functionality; some cleanups.
38
        
39
        self.window = self.glade.get_widget('window_mkdir')
40
        
41
        # Dictionary for signal_autoconnect
42
        dic = { "on_button_mkdir_mkdir_clicked": self.mkdir,
43
                "on_button_mkdir_cancel_clicked": self.close }
44
        
45
        # Connect the signals to the handlers
46
        self.glade.signal_autoconnect(dic)
47
48
    def display(self):
0.8.38 by Szilveszter Farkas (Phanatic)
Implemented Move functionality; move() backend code refined.
49
        """ Display the Make directory dialog. """
0.8.37 by Szilveszter Farkas (Phanatic)
Implemented Make directory functionality; some cleanups.
50
        self.window.show_all()
51
52
    def mkdir(self, widget):
53
        # Get the widgets
54
        entry = self.glade.get_widget('entry_mkdir')
55
        checkbox = self.glade.get_widget('checkbutton_mkdir_versioned')
56
        
57
        dirname = entry.get_text()
58
        
59
        if dirname == "":
0.13.6 by Jelmer Vernooij
Don't pass along dialog context everywhere.
60
            error_dialog(_('No directory name given'),
0.8.55 by Szilveszter Farkas (Phanatic)
Gettext support added.
61
                                     _('Please specify a desired name for the new directory.'))
0.8.37 by Szilveszter Farkas (Phanatic)
Implemented Make directory functionality; some cleanups.
62
            return
63
        
64
        if checkbox.get_active():
65
            # Want to create a versioned directory
66
            try:
0.11.6 by Jelmer Vernooij
Remove mkdir, add, rename
67
                from bzrlib.workingtree import WorkingTree
68
    
0.13.1 by Jelmer Vernooij
Remove communicator use from Commit.
69
                os.mkdir(os.path.join(wt.base, wtpath))
0.11.6 by Jelmer Vernooij
Remove mkdir, add, rename
70
0.13.1 by Jelmer Vernooij
Remove communicator use from Commit.
71
                wt.add([wtpath])
0.11.6 by Jelmer Vernooij
Remove mkdir, add, rename
72
            except OSError, e:
73
                if e.errno == 17:
0.13.6 by Jelmer Vernooij
Don't pass along dialog context everywhere.
74
                    error_dialog(_('Directory already exists'),
0.11.6 by Jelmer Vernooij
Remove mkdir, add, rename
75
                                             _('Please specify another name to continue.'))
76
                else:
77
                    raise
0.8.37 by Szilveszter Farkas (Phanatic)
Implemented Make directory functionality; some cleanups.
78
            except errors.NotBranchError:
0.13.6 by Jelmer Vernooij
Don't pass along dialog context everywhere.
79
                warning_dialog(_('Directory is not in a branch'),
0.8.55 by Szilveszter Farkas (Phanatic)
Gettext support added.
80
                                           _('You can only create a non-versioned directory.'))
0.8.37 by Szilveszter Farkas (Phanatic)
Implemented Make directory functionality; some cleanups.
81
        else:
82
            # Just a simple directory
83
            try:
0.13.1 by Jelmer Vernooij
Remove communicator use from Commit.
84
                os.mkdir(os.path.join(wt.base, wtpath))
0.8.37 by Szilveszter Farkas (Phanatic)
Implemented Make directory functionality; some cleanups.
85
            except OSError, e:
86
                if e.errno == 17:
0.13.6 by Jelmer Vernooij
Don't pass along dialog context everywhere.
87
                    error_dialog(_('Directory already exists'),
0.8.55 by Szilveszter Farkas (Phanatic)
Gettext support added.
88
                                             _('Please specify another name to continue.'))
0.8.37 by Szilveszter Farkas (Phanatic)
Implemented Make directory functionality; some cleanups.
89
                    return
90
91
        self.close()
92
        self.comm.refresh_right()
93
    
94
    def close(self, widget=None):
95
        self.window.destroy()