class StatusBar(gtk.HBox): def __init__(self, document_manager): """ Constructor. """ super(StatusBar, self).__init__() self.document_manager = document_manager self.statusbar_line = gtk.Statusbar() self.statusbar_line.set_has_resize_grip(False) self.statusbar_column = gtk.Statusbar() self.statusbar_column.set_has_resize_grip(False) self.statusbar_end = gtk.Statusbar() self.statusbar_end.set_size_request(15,0) # Close button style (little button) close_button_style = ''' style 'close_button' { xthickness = 0 ythickness = 0 } widget '*.statusbar' style 'close_button' ''' gtk.rc_parse_string(close_button_style) self.statusbar = gtk.Statusbar() status_hbox = gtk.HBox() status_hbox.set_spacing(12) self.line_label = gtk.Label("") self.line_label.set_alignment(0.1, 0.5) self.line_label.set_width_chars(len(constants.MESSAGE_0016) + 3) #self.line_label.set_size_request(80, 0) self.col_label = gtk.Label("") self.col_label.set_alignment(0, 0.5) self.col_label.set_width_chars(len(constants.MESSAGE_0017) + 3) #self.col_label.set_size_request(100, 0) self.encoding_label = gtk.Label("") self.encoding_label.set_alignment(0, 0.5) #self.encoding_label.set_size_request(65, 0) self.permission_label = gtk.Label("") #self.permission_label.set_size_request(75, 0) self.permission_label.set_alignment(0, 0.5) # Encoding combobutton self.combobutton_encoding = ComboButton("") self.combobutton_encoding.set_name("combobutton_encoding.statusbar") #self.combobutton_encoding.set_size_request(80, -1) self.__create_encoding_menu() # Tab size combobutton self.combobutton_tab_size = ComboButton("") self.combobutton_tab_size.set_name("combobutton_tab_size.statusbar") #self.combobutton_tab_size.set_size_request(78, -1) self.__create_tab_size_menu() self.statusbar.get_children()[0].remove(self.statusbar.get_children()[0].get_children()[0]) self.statusbar.get_children()[0].add(status_hbox) self.pack_start(self.statusbar, True, True, 0) status_hbox.pack_start(self.line_label, False, False, 0) status_hbox.pack_start(gtk.VSeparator(), False, False, 0) status_hbox.pack_start(self.col_label, False, False, 0) status_hbox.pack_start(gtk.VSeparator(), False, False, 0) status_hbox.pack_start(self.combobutton_tab_size, False, False, 0) status_hbox.pack_start(gtk.VSeparator(), False, False, 0) status_hbox.pack_start(self.combobutton_encoding, False, False, 0) status_hbox.pack_start(gtk.VSeparator(), False, False, 0) status_hbox.pack_start(self.permission_label, False, False, 0) self.set_size_request(-1, 27) self.queue_resize() #################### Public Methods #################### def set_line_column(self, line_num, col_num): self.line_label.set_text(constants.MESSAGE_0016 + str(line_num)) self.col_label.set_text(constants.MESSAGE_0017 + str(col_num)) def clear(self): self.line_label.set_text("") self.col_label.set_text("") def hide_info(self): """ Hide all widgets inside the statusbar. """ self.statusbar.get_children()[0].get_children()[0].hide_all() def show_info(self): """ Show all widgets inside the statusbar. """ self.statusbar.get_children()[0].get_children()[0].show_all() #################### Signals #################### def tab_size_changed(self, widget, num): self.__set_tab_size(num) def other_tab_size(self, widget): dialog = OtherTabSizeDialog() response = dialog.run() if response == gtk.RESPONSE_DELETE_EVENT: dialog.destroy() return elif response == 1: tab_size = dialog.get_tab_size() self.__set_tab_size(tab_size) dialog.destroy() return elif response == 2: dialog.destroy() return def encoding_changed(self, widget, encode): document = self.document_manager.get_active_document() self.document_manager.change_encode(document, encode) self.combobutton_encoding.set_label(encode) def other_encoding(self, widget): dialog = OtherEncodingDialog() response = dialog.run() if response == gtk.RESPONSE_DELETE_EVENT: dialog.destroy() return elif response == 1 or response == 3: encode = dialog.get_encoding() document = self.document_manager.get_active_document() self.document_manager.change_encode(document, encode) dialog.destroy() return elif response == 2: dialog.destroy() return #################### Private Methods #################### def __create_tab_size_menu(self): tab_menu_item_start = gtk.MenuItem("2") tab_menu_item_start.show() self.combobutton_tab_size.append(tab_menu_item_start) tab_menu_item_start.connect('activate', self.tab_size_changed, 2) tab_menu_item = gtk.MenuItem("3") tab_menu_item.show() self.combobutton_tab_size.append(tab_menu_item) tab_menu_item.connect('activate', self.tab_size_changed, 3) tab_menu_item = gtk.MenuItem("4") tab_menu_item.show() self.combobutton_tab_size.append(tab_menu_item) tab_menu_item.connect('activate', self.tab_size_changed, 4) tab_menu_item = gtk.MenuItem("6") tab_menu_item.show() self.combobutton_tab_size.append(tab_menu_item) tab_menu_item.connect('activate', self.tab_size_changed, 6) tab_menu_item = gtk.MenuItem("8") tab_menu_item.show() self.combobutton_tab_size.append(tab_menu_item) tab_menu_item.connect('activate', self.tab_size_changed, 8) tab_menu_item = gtk.SeparatorMenuItem() tab_menu_item.show() self.combobutton_tab_size.append(tab_menu_item) tab_menu_item = gtk.MenuItem("Other size") tab_menu_item.show() self.combobutton_tab_size.append(tab_menu_item) tab_menu_item.connect('activate', self.other_tab_size) def __create_encoding_menu(self): tab_menu_item = gtk.MenuItem("utf-7") tab_menu_item.show() self.combobutton_encoding.append(tab_menu_item) tab_menu_item.connect('activate', self.encoding_changed, "utf-7") tab_menu_item = gtk.MenuItem("utf-8") tab_menu_item.show() self.combobutton_encoding.append(tab_menu_item) tab_menu_item.connect('activate', self.encoding_changed, "utf-8") tab_menu_item = gtk.MenuItem("iso8859-1") tab_menu_item.show() self.combobutton_encoding.append(tab_menu_item) tab_menu_item.connect('activate', self.encoding_changed, "iso8859-1") tab_menu_item = gtk.MenuItem("iso8859-2") tab_menu_item.show() self.combobutton_encoding.append(tab_menu_item) tab_menu_item.connect('activate', self.encoding_changed, "iso8859-2") tab_menu_item = gtk.MenuItem("iso8859-4") tab_menu_item.show() self.combobutton_encoding.append(tab_menu_item) tab_menu_item.connect('activate', self.encoding_changed, "iso8859-4") tab_menu_item = gtk.MenuItem("iso8859-5") tab_menu_item.show() self.combobutton_encoding.append(tab_menu_item) tab_menu_item.connect('activate', self.encoding_changed, "iso8859-5") tab_menu_item = gtk.MenuItem("iso8859-6") tab_menu_item.show() self.combobutton_encoding.append(tab_menu_item) tab_menu_item.connect('activate', self.encoding_changed, "iso8859-6") tab_menu_item = gtk.MenuItem("iso8859-7") tab_menu_item.show() self.combobutton_encoding.append(tab_menu_item) tab_menu_item.connect('activate', self.encoding_changed, "iso8859-7") tab_menu_item = gtk.MenuItem("iso8859-9") tab_menu_item.show() self.combobutton_encoding.append(tab_menu_item) tab_menu_item.connect('activate', self.encoding_changed, "iso8859-9") tab_menu_item = gtk.MenuItem("iso8859-15") tab_menu_item.show() self.combobutton_encoding.append(tab_menu_item) tab_menu_item.connect('activate', self.encoding_changed, "iso8859-15") tab_menu_item = gtk.MenuItem("gb2312") tab_menu_item.show() self.combobutton_encoding.append(tab_menu_item) tab_menu_item.connect('activate', self.encoding_changed, "gb2312") tab_menu_item = gtk.SeparatorMenuItem() tab_menu_item.show() self.combobutton_encoding.append(tab_menu_item) tab_menu_item = gtk.MenuItem(constants.MESSAGE_0023) tab_menu_item.show() self.combobutton_encoding.append(tab_menu_item) tab_menu_item.connect('activate', self.other_encoding) #self.combobutton_encoding.set_active_item(tab_menu_item) def __set_tab_size(self, num): view = self.document_manager.get_active_view() view.set_tab_width(num) self.document_manager.preferences_manager.set_value("indentation/tab_width", num) self.combobutton_tab_size.set_label(constants.MESSAGE_0026 + " " + str(num))