예제 #1
0
class Buglump:
    def __init__(self):
        self.amqp_thread = None
        self.gladefile = "conillet.glade"  # store the file name
        self.builder = Gtk.Builder()  # create an instance of the gtk.Builder
        #self.builder.add_from_file(self.gladefile) # add the xml file to the Builder
        self.builder.add_objects_from_file(self.gladefile, [
            "window1", "aboutdialog1", "statusbar1", "status", "log_result",
            "entry1", "entry2", "result1", "logwindow", "image1", "image2",
            "image3", "image4", "connection_toggle_button",
            "connection_status_image", "message_view"
        ])
        self.builder.connect_signals(self)
        self.window = self.builder.get_object(
            "window1")  # This gets the 'window1' object
        self.aboutdialog = self.builder.get_object("aboutdialog1")
        self.log_window = self.builder.get_object("logwindow")
        self.statusbar = self.builder.get_object("statusbar1")
        self.context_id = self.statusbar.get_context_id("status")
        self.connection_toggle_button = self.builder.get_object(
            "connection_toggle_button")
        self.connection_status_image = self.builder.get_object(
            "connection_status_image")
        self.logger_label = self.builder.get_object("log_result")
        self.message_view = self.builder.get_object("message_view")
        self.logger = MyLogger(self.logger_label)
        self.preferences = Preferences(self.builder, self.logger)
        self.rabbit_params = RabbitParams(self.preferences.get_values())
        self.rabbit_connection = RabbitConnection(
            self.rabbit_params, self.logger, self.connection_toggle_button,
            self.message_view)
        self.logger.warning("Inici aplicacio")
        self.window.show()  # this shows the 'window1' object
        self.status_count = 0

    def on_receive_messages_button_toggled(self, button):
        if self.rabbit_connection.isConsuming():
            self.logger.warning("Already consuming messages, stop")
            self.rabbit_connection.stop_consuming()
        else:
            self.logger.warning("Start consuming")
            self.rabbit_connection.start_consuming()

    def on_connection_toggle_button_toggled(self, button):
        if self.rabbit_connection.isConnected():
            self.rabbit_connection.close_connection()
            self.amqp_thread._Thread__stop()
            self.amqp_thread.join()
            #self.connection_status_image.clear()
            self.connection_status_image.set_from_stock(
                "gtk-disconnect", Gtk.IconSize.SMALL_TOOLBAR)
        else:
            self.amqp_thread = Thread(target=self.rabbit_connection.run)
            self.amqp_thread.start()
            self.connection_status_image.set_from_stock(
                "gtk-connect", Gtk.IconSize.SMALL_TOOLBAR)

    def on_logwindow_close_button_clicked(self, button, data=None):
        self.log_window.hide()

    def on_logwindow_delete_event(self, object, event):
        self.log_window.hide()
        return True

    def on_view_log_activate(self, menuitem, data=None):
        self.response = self.log_window.show()

    def on_preferences_activate(self, menuitem, data=None):
        self.response = self.preferences.preferences_window.show()

    def on_gtk_about_activate(self, menuitem, data=None):
        self.logger.warning("help about selected")
        self.response = self.aboutdialog.run()
        self.aboutdialog.hide()

    def on_window1_destroy(self, object, data=None):
        self.logger.warning("quit with cancel")
        Gtk.main_quit()

    def on_gtk_quit_activate(self, menuitem, data=None):
        print "quit from menu"
        Gtk.main_quit()
        sys.exit()

    def on_push_status_activate(self, menuitem, data=None):
        self.status_count += 1
        self.logger.warning("Ara status count val: %s" % self.status_count)
        self.statusbar.push(self.context_id,
                            "Message number %s" % str(self.status_count))

    def on_pop_status_activate(self, menuitem, data=None):
        self.status_count -= 1
        self.statusbar.pop(self.context_id)

    def on_clear_status_activate(self, menuitem, data=None):
        while (self.status_count > 0):
            self.statusbar.pop(self.context_id)
            self.status_count -= 1