~manishsinha/dmedia/fix-bug-680886

« back to all changes in this revision

Viewing changes to dmedia/gtkui/firstrun.py

  • Committer: Jason Gerard DeRose
  • Date: 2011-03-29 16:17:45 UTC
  • mfrom: (177.1.46 couch-up-browser)
  • Revision ID: jderose@novacut.com-20110329161745-j94stv8h2hgz64lk
Port browser to couch.js; complete pygtk => pygi transition; refactor for upcoming split into simpler Debian packages

Show diffs side-by-side

added added

removed removed

Lines of Context:
24
24
 
25
25
import os
26
26
from os import path
27
 
import gtk
28
 
import pango
29
 
import gconf
 
27
from xml.sax import saxutils
30
28
from gettext import gettext as _
31
 
from xml.sax import saxutils
 
29
 
 
30
from gi.repository import Gtk, Pango, GConf
32
31
 
33
32
 
34
33
NO_DIALOG = '/apps/dmedia/dont-show-import-firstrun'
35
 
conf = gconf.client_get_default()
 
34
conf = GConf.Client.get_default()
36
35
 
37
36
 
38
37
TITLE = _('DMedia Importer')
39
38
 
40
 
ICON_SIZE = gtk.ICON_SIZE_LARGE_TOOLBAR
 
39
ICON_SIZE = Gtk.IconSize.LARGE_TOOLBAR
41
40
PADDING = 5
42
41
 
43
42
 
51
50
        return widget
52
51
 
53
52
 
54
 
class VBox(gtk.VBox, EasyBox):
55
 
    pass
56
 
 
57
 
 
58
 
class HBox(gtk.HBox, EasyBox):
59
 
    pass
60
 
 
61
 
 
62
 
class Label(gtk.Label):
 
53
class VBox(Gtk.VBox, EasyBox):
 
54
    pass
 
55
 
 
56
 
 
57
class HBox(Gtk.HBox, EasyBox):
 
58
    pass
 
59
 
 
60
 
 
61
class Label(Gtk.Label):
63
62
    """
64
63
    A more convenient label borrowed from TymeLapse.
65
64
    """
97
96
            self.set_text(text)
98
97
 
99
98
 
100
 
class Button(gtk.Button):
 
99
class Button(Gtk.Button):
101
100
    def __init__(self, stock=None, text=None):
102
101
        super(Button, self).__init__()
103
102
        hbox = HBox()
104
103
        self.add(hbox)
105
 
        self._image = gtk.Image()
 
104
        self._image = Gtk.Image()
106
105
        self._label = Label(None)
107
106
        hbox._pack(self._image)
108
107
        hbox._pack(self._label, expand=True)
120
119
 
121
120
class FolderChooser(Button):
122
121
    def __init__(self):
123
 
        super(FolderChooser, self).__init__(stock=gtk.STOCK_OPEN)
124
 
        self._label.set_ellipsize(pango.ELLIPSIZE_START)
 
122
        super(FolderChooser, self).__init__(stock=Gtk.STOCK_OPEN)
 
123
        self._label.set_ellipsize(Pango.EllipsizeMode.START)
125
124
        self._title = _('Choose folder to import...')
126
125
        self.connect('clicked', self._on_clicked)
127
126
        self._set_value(os.environ['HOME'])
131
130
        self._label._set_text(self._value)
132
131
 
133
132
    def _on_clicked(self, button):
134
 
        dialog = gtk.FileChooserDialog(
 
133
        dialog = Gtk.FileChooserDialog(
135
134
            title=self._title,
136
 
            action=gtk.FILE_CHOOSER_ACTION_SELECT_FOLDER,
 
135
            action=Gtk.FileChooserAction.SELECT_FOLDER,
137
136
            buttons=(
138
 
                gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL,
139
 
                gtk.STOCK_OPEN, gtk.RESPONSE_OK,
 
137
                Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL,
 
138
                Gtk.STOCK_OPEN, Gtk.ResponseType.OK,
140
139
            ),
141
140
        )
142
141
        dialog.set_current_folder(self._value)
143
142
        response = dialog.run()
144
 
        if response == gtk.RESPONSE_OK:
 
143
        if response == Gtk.ResponseType.OK:
145
144
            self._set_value(dialog.get_filename())
146
145
        dialog.destroy()
147
146
 
148
147
 
149
148
def okay_button():
150
 
    return Button(gtk.STOCK_OK, _('OK, Import Files'))
151
 
 
152
 
 
153
 
class ImportDialog(gtk.Window):
 
149
    return Button(Gtk.STOCK_OK, _('OK, Import Files'))
 
150
 
 
151
 
 
152
class ImportDialog(Gtk.Window):
154
153
    def __init__(self):
155
154
        super(ImportDialog, self).__init__()
156
155
        self.set_default_size(425, 200)
159
158
            self.set_icon_from_file('/usr/share/pixmaps/dmedia.svg')
160
159
        except:
161
160
            pass
162
 
        self.connect('destroy', gtk.main_quit)
 
161
        self.connect('destroy', Gtk.main_quit)
163
162
 
164
163
        self._value = None
165
164
 
180
179
        self.show_all()
181
180
 
182
181
    def run(self):
183
 
        gtk.main()
 
182
        Gtk.main()
184
183
        return self._value
185
184
 
186
185
    def _on_clicked(self, button):
187
186
        self._value = self._folder._value
188
 
        gtk.main_quit()
189
 
 
190
 
 
191
 
class FirstRunGUI(gtk.Window):
 
187
        Gtk.main_quit()
 
188
 
 
189
 
 
190
class FirstRunGUI(Gtk.Window):
192
191
    """
193
192
    Promt use first time dmedia importer is run.
194
193
 
195
194
    For example:
196
195
 
197
 
    >>> from dmedia.firstrun import FirstRunGUI
 
196
    >>> from dmedia.gtkui.firstrun import FirstRunGUI
198
197
    >>> run = FirstRunGUI.run_if_first_run('/media/EOS_DIGITAL')  #doctest: +SKIP
199
198
    """
200
199
 
226
225
        vbox._pack(label2)
227
226
 
228
227
        self.folder = Label(None, 'b')
229
 
        self.folder.set_ellipsize(pango.ELLIPSIZE_START)
 
228
        self.folder.set_ellipsize(Pango.EllipsizeMode.START)
230
229
        vbox._pack(self.folder)
231
230
 
232
 
        self.dont_show_again = gtk.CheckButton(label=_("Don't show this again"))
 
231
        self.dont_show_again = Gtk.CheckButton(label=_("Don't show this again"))
233
232
        self.dont_show_again.set_active(True)
234
233
 
235
234
        self.ok = okay_button()
248
247
 
249
248
 
250
249
    def destroy(self, widget, data=None):
251
 
        gtk.main_quit()
 
250
        Gtk.main_quit()
252
251
 
253
252
 
254
253
    def delete_event(self, widget, event, data=None):
267
266
    def go(self, folder):
268
267
        self.folder._set_text(folder)
269
268
        self.show_all()
270
 
        gtk.main()
 
269
        Gtk.main()
271
270
        return self.ok_was_pressed
272
271
 
273
272
    @classmethod