From 5a6edf92c42f2f3b06dc27ceacb1dc8aa0cf2558 Mon Sep 17 00:00:00 2001 From: Andrew Date: Sat, 25 Dec 2010 16:28:31 -0500 Subject: [PATCH] Refactored error view --- pandora/PandoraSource.py | 30 ++++--------- pandora-ui.xml => pandora/pandora-ui.xml | 0 pandora/widgets/ErrorView.py | 42 +++++++++++++++++++ pandora/widgets/__init__.py | 3 +- .../widgets/error_area.ui | 0 5 files changed, 53 insertions(+), 22 deletions(-) rename pandora-ui.xml => pandora/pandora-ui.xml (100%) create mode 100644 pandora/widgets/ErrorView.py rename error_area.ui => pandora/widgets/error_area.ui (100%) diff --git a/pandora/PandoraSource.py b/pandora/PandoraSource.py index b37d784..f0f60cb 100644 --- a/pandora/PandoraSource.py +++ b/pandora/PandoraSource.py @@ -64,7 +64,7 @@ def do_impl_get_status(self): progress = 1 text = "" if self.connected: - self.hide_error_area() + self.error_area.hide() num_stations = self.stations_model.get_num_entries() if num_stations > 1: text = str(num_stations) + " stations" @@ -151,12 +151,12 @@ def create_window(self): paned.pack2(frame2, True, False) self.vbox_main.pack_start(paned) - error_frame = self.create_error_area() - self.error_area = error_frame + self.error_area = widgets.ErrorView(self.__plugin, self.do_impl_activate) + error_frame = self.error_area.get_error_frame() self.vbox_main.pack_end(error_frame, False, False) self.vbox_main.show_all() - error_frame.hide() + self.error_area.hide() self.add(self.vbox_main) @@ -182,8 +182,7 @@ def create_error_area(self): return error_frame - def on_account_settings_clicked(self, *args): - self.__plugin.create_configure_dialog(callback=self.do_impl_activate) + def connect_all(self): @@ -219,7 +218,7 @@ def create_popups(self): self.action_group.add_action(action) manager.insert_action_group(self.action_group, 0) - popup_file = self.__plugin.find_file("pandora-ui.xml") + popup_file = self.__plugin.find_file("pandora/pandora-ui.xml") self.ui_id = manager.add_ui_from_file(popup_file) manager.ensure_update() @@ -230,7 +229,7 @@ def do_impl_activate(self): self.username, self.password = self.get_pandora_account_info() except AccountNotSetException, (instance): #Ask User to configure account - self.show_error_area(instance.parameter) + self.error_area.show(instance.parameter) #Retry after user put in account return @@ -274,12 +273,12 @@ def retry_cb(): error_message = "Unable to connect. Check your Internet connection." detail = e.message self.__activated = False - self.show_error_area(error_message, detail) + self.error_area.show(error_message) print e.message elif isinstance(e, PandoraError): error_message = "Invalid username and/or password. Check your settings." self.__activated = False - self.show_error_area(error_message) + self.error_area.show(error_message) print e.message else: print e.traceback @@ -302,17 +301,6 @@ def get_pandora_account_info(self): raise AccountNotSetException(error_message) return tuple(secret.split('\n')) - def show_error_area(self, primary_message, secondary_message=None): - self.primary_error.set_text(primary_message) - if secondary_message is None: - self.secondary_error.hide() - else: - self.secondary_error.set_text(secondary_message) - self.secondary_error.show() - self.error_area.show() - - def hide_error_area(self): - self.error_area.hide() def pandora_connect(self, message="Logging in...", callback=None): diff --git a/pandora-ui.xml b/pandora/pandora-ui.xml similarity index 100% rename from pandora-ui.xml rename to pandora/pandora-ui.xml diff --git a/pandora/widgets/ErrorView.py b/pandora/widgets/ErrorView.py new file mode 100644 index 0000000..5619e21 --- /dev/null +++ b/pandora/widgets/ErrorView.py @@ -0,0 +1,42 @@ +import gtk + +class ErrorView(object): + def __init__(self, plugin, callback): + self.__plugin = plugin + self.callback = callback + + builder_file = self.__plugin.find_file("pandora/widgets/error_area.ui") + builder = gtk.Builder() + builder.add_from_file(builder_file) + self.error_frame = builder.get_object('error_frame') + error_area = builder.get_object('error_event_box') + self.primary_error = builder.get_object('primary_message') + self.secondary_error = builder.get_object('secondary_message') + # Hack to get the tooltip background color + window = gtk.Window(gtk.WINDOW_POPUP) + window.set_name("gtk-tooltip") + window.ensure_style() + style = window.get_style() + error_area.set_style(style) + self.error_frame.set_style(style) + + account_button = builder.get_object("account_settings") + account_button.connect("clicked", self.on_account_settings_clicked) + + def get_error_frame(self): + return self.error_frame + + def show(self, primary_message, secondary_message=None): + self.primary_error.set_text(primary_message) + if secondary_message is None: + self.secondary_error.hide() + else: + self.secondary_error.set_text(secondary_message) + self.secondary_error.show() + self.error_frame.show() + + def hide(self): + self.error_frame.hide() + + def on_account_settings_clicked(self, *args): + self.__plugin.create_configure_dialog(callback=self.callback) \ No newline at end of file diff --git a/pandora/widgets/__init__.py b/pandora/widgets/__init__.py index 566cf8e..d3ad8f7 100644 --- a/pandora/widgets/__init__.py +++ b/pandora/widgets/__init__.py @@ -1,2 +1,3 @@ from SongEntryView import * -from StationEntryView import * \ No newline at end of file +from StationEntryView import * +from ErrorView import * \ No newline at end of file diff --git a/error_area.ui b/pandora/widgets/error_area.ui similarity index 100% rename from error_area.ui rename to pandora/widgets/error_area.ui