/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 checkout.py

  • Committer: Curtis Hovey
  • Date: 2011-08-27 18:35:08 UTC
  • mto: This revision was merged to the branch mainline in revision 741.
  • Revision ID: sinzui.is@verizon.net-20110827183508-ugqbp58na4mtt1no
Updated the pixbuf calls to gtk3.

Show diffs side-by-side

added added

removed removed

Lines of Context:
16
16
 
17
17
import os
18
18
 
19
 
try:
20
 
    import pygtk
21
 
    pygtk.require("2.0")
22
 
except:
23
 
    pass
24
 
 
25
 
import gtk
26
 
 
27
 
from bzrlib.plugins.gtk import _i18n
28
 
from errors import show_bzr_error
 
19
from gi.repository import GObject
 
20
from gi.repository import Gtk
29
21
 
30
22
from bzrlib.branch import Branch
31
23
from bzrlib.config import GlobalConfig
32
24
 
33
 
from dialog import error_dialog
34
 
 
35
 
from history import UrlHistory
36
 
from olive import Preferences
37
 
 
38
 
class CheckoutDialog(gtk.Dialog):
 
25
from bzrlib.plugins.gtk.dialog import error_dialog
 
26
from bzrlib.plugins.gtk.errors import show_bzr_error
 
27
from bzrlib.plugins.gtk.history import UrlHistory
 
28
from bzrlib.plugins.gtk.i18n import _i18n
 
29
 
 
30
 
 
31
class CheckoutDialog(Gtk.Dialog):
39
32
    """ New implementation of the Checkout dialog. """
 
33
 
40
34
    def __init__(self, path=None, parent=None, remote_path=None):
41
35
        """ Initialize the Checkout dialog. """
42
 
        gtk.Dialog.__init__(self, title="Checkout - Olive",
 
36
        GObject.GObject.__init__(self, title="Checkout - Olive",
43
37
                                  parent=parent,
44
38
                                  flags=0,
45
 
                                  buttons=(gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL))
46
 
        
 
39
                                  buttons=(Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL))
 
40
 
47
41
        # Get arguments
48
42
        self.path = path
49
 
        
 
43
 
50
44
        # Create the widgets
51
 
        self._button_checkout = gtk.Button(_i18n("Check_out"), use_underline=True)
52
 
        self._button_revision = gtk.Button('')
53
 
        self._image_browse = gtk.Image()
54
 
        self._filechooser = gtk.FileChooserButton(_i18n("Please select a folder"))
55
 
        self._combo = gtk.ComboBoxEntry()
56
 
        self._label_location = gtk.Label(_i18n("Branch location:"))
57
 
        self._label_destination = gtk.Label(_i18n("Destination:"))
58
 
        self._label_nick = gtk.Label(_i18n("Branck nick:"))
59
 
        self._label_revision = gtk.Label(_i18n("Revision:"))
60
 
        self._hbox_revision = gtk.HBox()
61
 
        self._entry_revision = gtk.Entry()
62
 
        self._entry_nick = gtk.Entry()
63
 
        self._check_lightweight = gtk.CheckButton(_i18n("_Lightweight checkout"),
 
45
        self._button_checkout = Gtk.Button(_i18n("Check_out"), use_underline=True)
 
46
        self._button_revision = Gtk.Button('')
 
47
        self._image_browse = Gtk.Image()
 
48
        self._filechooser = Gtk.FileChooserButton(_i18n("Please select a folder"))
 
49
        self._combo = Gtk.ComboBox.new_with_entry()
 
50
        self._label_location = Gtk.Label(label=_i18n("Branch location:"))
 
51
        self._label_destination = Gtk.Label(label=_i18n("Destination:"))
 
52
        self._label_nick = Gtk.Label(label=_i18n("Branch nick:"))
 
53
        self._label_revision = Gtk.Label(label=_i18n("Revision:"))
 
54
        self._hbox_revision = Gtk.HBox()
 
55
        self._entry_revision = Gtk.Entry()
 
56
        self._entry_nick = Gtk.Entry()
 
57
        self._check_lightweight = Gtk.CheckButton(_i18n("_Lightweight checkout"),
64
58
                                                  use_underline=True)
65
 
        
 
59
 
66
60
        # Set callbacks
67
61
        self._button_checkout.connect('clicked', self._on_checkout_clicked)
68
62
        self._button_revision.connect('clicked', self._on_revision_clicked)
69
 
        self._combo.child.connect('focus-out-event', self._on_combo_changed)
70
 
        
 
63
        self._combo.get_child().connect('focus-out-event', self._on_combo_changed)
 
64
 
71
65
        # Create the table and pack the widgets into it
72
 
        self._table = gtk.Table(rows=3, columns=2)
 
66
        self._table = Gtk.Table(rows=3, columns=2)
73
67
        self._table.attach(self._label_location, 0, 1, 0, 1)
74
68
        self._table.attach(self._label_destination, 0, 1, 1, 2)
75
69
        self._table.attach(self._label_nick, 0, 1, 2, 3)
79
73
        self._table.attach(self._entry_nick, 1, 2, 2, 3)
80
74
        self._table.attach(self._hbox_revision, 1, 2, 3, 4)
81
75
        self._table.attach(self._check_lightweight, 1, 2, 4, 5)
82
 
        
 
76
 
83
77
        # Set properties
84
 
        self._image_browse.set_from_stock(gtk.STOCK_OPEN, gtk.ICON_SIZE_BUTTON)
 
78
        self._image_browse.set_from_stock(Gtk.STOCK_OPEN, Gtk.IconSize.BUTTON)
85
79
        self._button_revision.set_image(self._image_browse)
86
80
        self._button_revision.set_sensitive(False)
87
 
        self._filechooser.set_action(gtk.FILE_CHOOSER_ACTION_SELECT_FOLDER)
 
81
        self._filechooser.set_action(Gtk.FileChooserAction.SELECT_FOLDER)
88
82
        self._label_location.set_alignment(0, 0.5)
89
83
        self._label_destination.set_alignment(0, 0.5)
90
84
        self._label_nick.set_alignment(0, 0.5)
95
89
        if self.path is not None:
96
90
            self._filechooser.set_filename(self.path)
97
91
        if remote_path is not None:
98
 
            self._combo.child.set_text(remote_path)
99
 
        
 
92
            self._combo.get_child().set_text(remote_path)
 
93
 
100
94
        # Pack some widgets
101
95
        self._hbox_revision.pack_start(self._entry_revision, True, True)
102
96
        self._hbox_revision.pack_start(self._button_revision, False, False)
103
97
        self.vbox.add(self._table)
104
98
        self.action_area.pack_end(self._button_checkout)
105
 
        
 
99
 
106
100
        # Show the dialog
107
101
        self.vbox.show_all()
108
 
        
 
102
 
109
103
        # Build checkout history
110
104
        self._history = UrlHistory(GlobalConfig(), 'branch_history')
111
105
        self._build_history()
112
 
    
 
106
 
113
107
    def _build_history(self):
114
108
        """ Build up the checkout history. """
115
 
        self._combo_model = gtk.ListStore(str)
116
 
        
 
109
        self._combo_model = Gtk.ListStore(str)
 
110
 
117
111
        for item in self._history.get_entries():
118
112
            self._combo_model.append([ item ])
119
 
        
120
 
        pref = Preferences()
121
 
        for item in pref.get_bookmarks():
122
 
            self._combo_model.append([ item ])
123
 
        
 
113
 
124
114
        self._combo.set_model(self._combo_model)
125
 
        self._combo.set_text_column(0)
126
 
    
 
115
        self._combo.set_entry_text_column(0)
 
116
 
127
117
    def _get_last_revno(self):
128
118
        """ Get the revno of the last revision (if any). """
129
119
        location = self._combo.get_child().get_text()
133
123
            return None
134
124
        else:
135
125
            return br.revno()
136
 
    
 
126
 
137
127
    def _on_revision_clicked(self, button):
138
128
        """ Browse for revision button clicked handler. """
139
129
        from revbrowser import RevisionBrowser
140
 
        
 
130
 
141
131
        location = self._combo.get_child().get_text()
142
 
        
 
132
 
143
133
        try:
144
134
            br = Branch.open(location)
145
135
        except:
147
137
        else:
148
138
            revb = RevisionBrowser(br, self)
149
139
            response = revb.run()
150
 
            if response != gtk.RESPONSE_NONE:
 
140
            if response != Gtk.ResponseType.NONE:
151
141
                revb.hide()
152
 
        
153
 
                if response == gtk.RESPONSE_OK:
 
142
 
 
143
                if response == Gtk.ResponseType.OK:
154
144
                    if revb.selected_revno is not None:
155
145
                        self._entry_revision.set_text(revb.selected_revno)
156
 
            
 
146
 
157
147
                revb.destroy()
158
 
    
 
148
 
159
149
    @show_bzr_error
160
150
    def _on_checkout_clicked(self, button):
161
151
        """ Checkout button clicked handler. """
164
154
            error_dialog(_i18n('Missing branch location'),
165
155
                         _i18n('You must specify a branch location.'))
166
156
            return
167
 
        
 
157
 
168
158
        destination = self._filechooser.get_filename()
169
159
        try:
170
160
            revno = int(self._entry_revision.get_text())
171
161
        except:
172
162
            revno = None
173
 
        
 
163
 
174
164
        nick = self._entry_nick.get_text()
175
165
        if nick is '':
176
166
            nick = os.path.basename(location.rstrip("/\\"))
177
 
        
 
167
 
178
168
        br_from = Branch.open(location)
179
 
        
 
169
 
180
170
        revision_id = br_from.get_rev_id(revno)
181
171
        lightweight = self._check_lightweight.get_active()
182
172
        to_location = destination + os.sep + nick
183
 
        
 
173
 
184
174
        os.mkdir(to_location)
185
 
        
 
175
 
186
176
        br_from.create_checkout(to_location, revision_id, lightweight)
187
 
        
 
177
 
188
178
        self._history.add_entry(location)
189
 
        
190
 
        self.response(gtk.RESPONSE_OK)
191
 
    
 
179
 
 
180
        self.response(Gtk.ResponseType.OK)
 
181
 
192
182
    def _on_combo_changed(self, widget, event):
193
183
        """ We try to get the last revision if focus lost. """
194
184
        rev = self._get_last_revno()