コード例 #1
0
    def __init__(self, emma):
        """
        @param emma: Emma
        """
        super(QueryTab, self).__init__()
        self.xml = gtk.glade.XML(
            os.path.join(emma.glade_path, 'querytab.glade'), "first_query")
        self.xml.signal_autoconnect(self)

        self.tab_label.set_text('Query')
        self.tab_label_icon.set_from_file(
            os.path.join(icons_path, 'page_code.png'))

        self.emma = emma

        self.save_result = self.xml.get_widget('save_result')
        self.save_result_sql = self.xml.get_widget('save_result_sql')
        self.local_search = self.xml.get_widget('local_search_button')
        self.remove_order = self.xml.get_widget('remove_order')

        self.label = self.xml.get_widget('query_label')

        self.add_record = self.xml.get_widget('add_record_tool')
        self.delete_record = self.xml.get_widget('delete_record_tool')

        self.query_bottom_label = self.xml.get_widget('query_bottom_label')
        self.query_db_label = self.xml.get_widget('query_db_label')

        self.textview = self.xml.get_widget('query_text')

        self.query_text_sw = self.xml.get_widget('query_text_sw')
        self.apply_record = self.xml.get_widget('apply_record_tool')
        self.ui = self.xml.get_widget('first_query')
        self.toolbar = self.xml.get_widget('inner_query_toolbar')
        self.toolbar.set_style(gtk.TOOLBAR_ICONS)

        self.scrolledwindow6 = self.xml.get_widget('scrolledwindow6')
        self.treeview = QueryTabTreeView(emma)
        self.scrolledwindow6.add(self.treeview)
        self.treeview.show()

        self.treeview.get_selection().set_mode(gtk.SELECTION_MULTIPLE)

        self.treeview.connect('cursor_changed',
                              self.on_query_view_cursor_changed)
        # todo: move to keymap
        self.treeview.connect('key_press_event',
                              self.on_query_view_key_press_event)
        self.treeview.connect('button_press_event',
                              self.on_query_view_button_press_event)

        self.execution_timer_running = False
        self.execution_timer_interval = 0
        self.editable = False

        self.sort_timer_running = False
        self.sort_timer_execute = 0

        self.query_encoding_menu = None

        self.filled_fields = []

        # replace textview with gtksourcevice
        try:
            org_tv = self.textview
            manager = gtksourceview2.language_manager_get_default()
            language = manager.get_language("sql")

            sb = gtksourceview2.Buffer()
            sb.set_highlight_syntax(True)
            sb.set_language(language)
            sv = self.textview = gtksourceview2.View(sb)

            self.query_text_sw.remove(org_tv)
            self.query_text_sw.add(sv)
            sv.show()

            sv.set_show_line_numbers(True)
            sv.set_show_line_marks(True)
            sv.set_tab_width(4)
            sv.set_auto_indent(True)
            sv.set_insert_spaces_instead_of_tabs(False)
            sv.set_show_right_margin(True)
            sv.set_smart_home_end(True)
            sv.set_right_margin_position(80)

            # sv config
            # for pt, pn, pd in (
            #     (bool, "show_line_numbers", True),
            #     #(bool, "show_line_markers", False),
            #     #(int, "tabs_width", 4),
            #     (bool, "auto_indent", True),
            #     (bool, "insert_spaces_instead_of_tabs", False),
            #     #(bool, "show_margin", True),
            #     #(int, "margin", 80),
            #     (bool, "smart_home_end", True)
            # ):
            #
            #     cn = "sourceview.%s" % pn
            #     try:
            #         v = self.emma.config[cn]
            #         if pt == bool:
            #             v = v == "1" or v.lower() == "true" or v.lower() == "yes"
            #         else:
            #             v = pt(v)
            #     except:
            #         v = pd
            #     method = getattr(sv, "set_%s" % pn)
            #     method(v)
            # sb config
            # for pt, pn, pd in (
            #     (bool, "check_brackets", True),
            #     (bool, "highlight", True),
            #     (int, "max_undo_levels", 15)
            # ):
            #     cn = "sourceview.%s" % pn
            #     try:
            #         v = self.emma.config[cn]
            #         if pt == bool:
            #             v = v == "1" or v.lower() == "true" or v.lower() == "yes"
            #         else:
            #             v = pt(v)
            #     except:
            #         v = pd
            #     method = getattr(sb, "set_%s" % pn)
            #     method(v)
        except:
            dialogs.alert(traceback.format_exc())

        self.current_host = None
        self.current_db = None
        self.model = None
        self.last_source = None
        self.result_info = None
        self.append_iter = None
        self.last_path = None
        self.encoding = None
        if hasattr(self, "query"):
            self.textview.get_buffer().set_text(self.query)
        self.last_auto_name = None

        #
        #   INIT Query tab actions
        #

        self.remember_order_action = QueryTabRememberOrder(self, emma)
        self.remove_order_action = QueryTabRemoveOrder(self, emma)
        self.set_result_font_action = QueryTabSetResultFont(self, emma)
        self.local_search_action = QueryTabLocalSearch(self, emma)
        self.save_result_sql_action = QueryTabSaveResultSql(self, emma)
        self.save_result_csv_action = QueryTabSaveResultCsv(self, emma)
        self.manage_row_action = QueryTabManageRow(self, emma)

        #
        #
        #

        self.emma.key_map.connect('key-release', self.key_release)
        self.init_from_config()