~ubuntu-branches/ubuntu/oneiric/radiotray/oneiric

« back to all changes in this revision

Viewing changes to src/BookmarkConfiguration.py

  • Committer: Bazaar Package Importer
  • Author(s): Elías Alejandro Año Mendoza
  • Date: 2010-06-15 02:19:00 UTC
  • mfrom: (1.1.1 upstream)
  • Revision ID: james.westby@ubuntu.com-20100615021900-m8wrzkbq8kez1etv
Tags: 0.6-2
Added build dependency.

Show diffs side-by-side

added added

removed removed

Lines of Context:
35
35
from XmlDataProvider import XmlDataProvider
36
36
from lib import utils
37
37
from lib import i18n
38
 
 
39
 
 
40
 
class BookmarkConfiguration:
41
 
 
42
 
    def __init__(self, dataProvider, updateFunc):
 
38
import uuid
 
39
 
 
40
class BookmarkConfiguration(object):
 
41
 
 
42
    def __init__(self, dataProvider, updateFunc, standalone=False):
43
43
 
44
44
        self.dataProvider = dataProvider
45
45
        self.updateFunc = updateFunc
 
46
        self.standalone = standalone
46
47
 
47
48
        # get gui objects
48
49
        gladefile = utils.load_ui_file("configBookmarks.glade")
54
55
        self.config = self.wTree.get_object("editBookmark")
55
56
 
56
57
        # populate list of radios
57
 
        liststore = gtk.ListStore(str)
 
58
        liststore = gtk.ListStore(str,str)
58
59
        for radio in self.dataProvider.listRadioNames():
59
 
            liststore.append([radio])
 
60
            if(radio.startswith('[separator')):
 
61
                liststore.append(['-- Separator --',radio])
 
62
            else:
 
63
                liststore.append([radio,radio])
60
64
        self.list.set_model(liststore)
61
65
        cell = gtk.CellRendererText()
62
66
        tvcolumn = gtk.TreeViewColumn(_('Radio Name'), cell)
66
70
        # connect events
67
71
        if (self.window):
68
72
            dic = { "on_newBookmarkButton_clicked" : self.on_add_bookmark_clicked,
 
73
                "on_newSeparatorButton_clicked" : self.on_add_separator_clicked,
69
74
                "on_editBookmarkButton_clicked" : self.on_edit_bookmark_clicked,
70
75
                "on_delBookmarkButton_clicked" : self.on_remove_bookmark_clicked,
71
76
                "on_moveUpButton_clicked" : self.on_moveup_bookmark_clicked,
73
78
                "on_close_clickedButton_clicked" : self.on_close_clicked}
74
79
            self.wTree.connect_signals(self)
75
80
 
 
81
    def on_cursor_changed(self, widget):
 
82
        #get current selected element
 
83
        selection = self.list.get_selection()
 
84
        (model, iter) = selection.get_selected()
 
85
 
 
86
        if type(iter).__name__=='TreeIter':
 
87
            selectedRadioName = model.get_value(iter,1)
 
88
 
 
89
            if (selectedRadioName.startswith("[separator-")):
 
90
               self.wTree.get_object("editBookmarkButton").set_sensitive(False)
 
91
            else:
 
92
                self.wTree.get_object("editBookmarkButton").set_sensitive(True)
 
93
 
 
94
 
 
95
    def on_add_separator_clicked(self, widget):
 
96
        # hack: generate a unique name
 
97
        name = '[separator-' + str(uuid.uuid4()) + ']'
 
98
        self.dataProvider.addRadio(name, name)
 
99
        self.list.get_model().append(['-- Separator --',name])
 
100
 
76
101
    def on_add_bookmark_clicked(self, widget):
77
102
 
78
103
        # reset old dialog values
86
111
            url = self.urlEntry.get_text()
87
112
 
88
113
            if len(name) > 0 and len(url) > 0:
89
 
                self.dataProvider.addRadio(name, url)
90
 
                self.list.get_model().append([name])
 
114
                if self.dataProvider.addRadio(name, url):
 
115
                    self.list.get_model().append([name,name])
91
116
            else:
92
117
                print 'No radio information provided!'
93
118
        self.config.hide()
100
125
 
101
126
        if type(iter).__name__=='TreeIter':
102
127
 
103
 
            selectedRadioName = model.get_value(iter,0)
 
128
            selectedRadioName = model.get_value(iter,1)
104
129
 
105
130
            #get radio bookmark details
106
131
            selectedRadioUrl = self.dataProvider.getRadioUrl(selectedRadioName)
118
143
                url = self.urlEntry.get_text()
119
144
 
120
145
                if len(name) > 0 and len(url) > 0:
121
 
                    model.set_value(iter,0,name)
122
 
                    self.dataProvider.updateRadio(oldName, name, url)
 
146
                    if self.dataProvider.updateRadio(oldName, name, url):
 
147
                        model.set_value(iter,0,name)
 
148
                        model.set_value(iter,1,name)
123
149
                else:
124
150
                    print 'No radio information provided!'
125
151
        self.config.hide()
133
159
        if type(iter).__name__=='TreeIter':
134
160
 
135
161
            selectedRadioName = model.get_value(iter,0)
136
 
            print selectedRadioName
137
 
            confirmation = gtk.MessageDialog(
138
 
                self.window,
139
 
                gtk.DIALOG_MODAL,
140
 
                gtk.MESSAGE_QUESTION,
141
 
                gtk.BUTTONS_YES_NO,
142
 
                _("Are you sure you want to delete \"%s\"?") % selectedRadioName
143
 
            )
144
 
 
145
 
            result = confirmation.run()
146
 
 
147
 
            if result == -8:
148
 
                # remove from data provider
149
 
                self.dataProvider.removeRadio(selectedRadioName)
150
 
 
151
 
                # remove from gui
152
 
                model.remove(iter)
153
 
 
154
 
            confirmation.hide()
 
162
            separatorFlag = model.get_value(iter,1)
 
163
            print selectedRadioName + " - " + separatorFlag
 
164
 
 
165
            # if separator then just remove it
 
166
            if not separatorFlag.startswith("[separator-"):
 
167
 
 
168
                confirmation = gtk.MessageDialog(
 
169
                    self.window,
 
170
                    gtk.DIALOG_MODAL,
 
171
                    gtk.MESSAGE_QUESTION,
 
172
                    gtk.BUTTONS_YES_NO,
 
173
                    _("Are you sure you want to delete \"%s\"?") % selectedRadioName
 
174
                )
 
175
 
 
176
                result = confirmation.run()
 
177
 
 
178
 
 
179
                if result == -8:
 
180
                    # remove from data provider
 
181
                    self.dataProvider.removeRadio(selectedRadioName)
 
182
 
 
183
                    # remove from gui
 
184
                    model.remove(iter)
 
185
 
 
186
                    confirmation.hide()
 
187
            else:
 
188
                 self.dataProvider.removeRadio(separatorFlag)
 
189
                 # remove from gui
 
190
                 model.remove(iter)
 
191
 
155
192
 
156
193
    def on_moveup_bookmark_clicked(self, widget):
157
194
 
161
198
 
162
199
        if type(iter).__name__=='TreeIter':
163
200
 
164
 
            selectedRadioName = model.get_value(iter,0)
 
201
            selectedRadioName = model.get_value(iter,1)
165
202
 
166
203
            if (self.dataProvider.moveUp(selectedRadioName) == True):
167
204
 
178
215
 
179
216
        if type(iter).__name__=='TreeIter':
180
217
 
181
 
            selectedRadioName = model.get_value(iter,0)
 
218
            selectedRadioName = model.get_value(iter,1)
182
219
 
183
220
            if (self.dataProvider.moveDown(selectedRadioName) == True):
184
221
 
195
232
 
196
233
    # close the window and quit
197
234
    def on_delete_event(self, widget, event, data=None):
198
 
        gtk.main_quit()
 
235
        if self.standalone:
 
236
            gtk.main_quit()
199
237
        return False
200
 
 
201
 
if __name__ == "__main__":
202
 
    provider = XmlDataProvider('lixo.xml')
203
 
    provider.loadFromFile()
204
 
    config = BookmarkConfiguration(provider)
205
 
    gtk.main()