def on_menuitem_activate(self, widget, email): self.window = gtk.Window() self.window.set_border_width(5) self.window.set_title(_("Conversation log for %s") % email) self.window.set_default_size(650,350) self.window.set_position(gtk.WIN_POS_CENTER) textview = gtk.TextView() self.textBuffer = textview.get_buffer() scroll = gtk.ScrolledWindow() scroll.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC) self.textview = HtmlTextView(self.controller, self.textBuffer, scroll) self.textview.set_wrap_mode(gtk.WRAP_WORD_CHAR) self.textview.set_left_margin(6) self.textview.set_right_margin(6) self.textview.set_editable(False) self.textview.set_cursor_visible(False) scroll.add_with_viewport(self.textview) hbox = gtk.HBox(False, 5) saveButton = gtk.Button(stock=gtk.STOCK_SAVE) saveButton.connect("clicked", self.on_save_logs) refreshButton = gtk.Button(stock=gtk.STOCK_REFRESH) refreshButton.connect("clicked", self.on_refresh_log, email) closeButton = gtk.Button(stock=gtk.STOCK_CLOSE) closeButton.connect("clicked", lambda w: self.window.hide()) hbox.pack_end(saveButton, False, False) hbox.pack_end(refreshButton, False, False) hbox.pack_end(closeButton, False, False) textRenderer = gtk.CellRendererText() column = gtk.TreeViewColumn(_("Date"), textRenderer, markup=0) self.datesListstore = gtk.ListStore(str) self.datesTree = gtk.TreeView(self.datesListstore) self.datesTree.connect("cursor-changed", self.on_dates_cursor_change) self.datesTree.append_column(column) self.datesTree.set_headers_visible(False) datesScroll = gtk.ScrolledWindow() datesScroll.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC) datesScroll.add_with_viewport(self.datesTree) datesScroll.set_size_request(150, -1) hPaned = gtk.HPaned() hPaned.pack1(datesScroll) hPaned.pack2(scroll) vbox = gtk.VBox(spacing=5) vbox.pack_start(hPaned) vbox.pack_start(hbox, False, False) vbox.pack_start(gtk.Statusbar(), False, False) self.datesStamps = {} logsCant = len(self.fill_dates_tree(email)) if not logsCant > 0: dialog.information(_("No logs were found for %s") % (email)) else: self.window.add(vbox) self.window.show_all()
def on_menuitem_activate(self, widget, email): self.window = gtk.Window() self.window.set_border_width(5) self.window.set_title(_("Conversation log for %s") % email) self.window.set_default_size(650,350) self.window.set_position(gtk.WIN_POS_CENTER) textview = gtk.TextView() self.textBuffer = textview.get_buffer() self.textBuffer.create_tag('highlight', background = 'yellow') scroll = gtk.ScrolledWindow() scroll.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC) self.textview = HtmlTextView(self.controller, self.textBuffer, scroll) self.textview.set_wrap_mode(gtk.WRAP_WORD_CHAR) self.textview.set_left_margin(6) self.textview.set_right_margin(6) self.textview.set_editable(False) self.textview.set_cursor_visible(False) scroll.add(self.textview) hbox = gtk.HBox(False, 5) saveButton = gtk.Button(stock=gtk.STOCK_SAVE) saveButton.connect("clicked", self.on_save_logs) refreshButton = gtk.Button(stock=gtk.STOCK_REFRESH) refreshButton.connect("clicked", self.on_refresh_log, email) closeButton = gtk.Button(stock=gtk.STOCK_CLOSE) closeButton.connect("clicked", lambda w: self.window.hide()) ############ Search TreeView ################### self.search_active = False self.searchStore = gtk.ListStore(str, str, str, str) self.searchTree = gtk.TreeView(self.searchStore) self.searchTree.connect("row-activated", self.set_cursor) self.searchTree.set_rules_hint(True) cell = gtk.CellRendererText() nameCol = gtk.TreeViewColumn(_("Date"), cell, text=0) dateCol = gtk.TreeViewColumn(_("Time"), cell, text=1) timeCol = gtk.TreeViewColumn(_("Name"), cell, text=2) msgCol = gtk.TreeViewColumn(_("Message"), cell, text=3) nameCol.set_resizable(True) dateCol.set_resizable(True) timeCol.set_resizable(True) msgCol.set_resizable(True) self.searchTree.append_column(nameCol) self.searchTree.append_column(dateCol) self.searchTree.append_column(timeCol) self.searchTree.append_column(msgCol) self.searchSw = gtk.ScrolledWindow() self.searchSw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC) self.searchSw.add(self.searchTree) self.searchSw.set_size_request(100, 30) ################################################## #search box searchLabel = gtk.Label(_("Search:")) self.searchBox = gtk.Entry() self.searchBox.connect("key-press-event", self.enter_pressed) hbox.pack_end(saveButton, False, False) hbox.pack_end(refreshButton, False, False) hbox.pack_end(closeButton, False, False) hbox.pack_end(self.searchBox, False, False) hbox.pack_end(searchLabel, False, False) textRenderer = gtk.CellRendererText() column = gtk.TreeViewColumn(_("Date"), textRenderer, markup=0) self.datesListstore = gtk.ListStore(str) self.datesTree = gtk.TreeView(self.datesListstore) self.datesTree.connect("cursor-changed", self.on_dates_cursor_change) self.datesTree.append_column(column) self.datesTree.set_headers_visible(False) datesScroll = gtk.ScrolledWindow() datesScroll.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC) datesScroll.add_with_viewport(self.datesTree) datesScroll.set_size_request(150, -1) hPaned = gtk.HPaned() hPaned.pack1(datesScroll) hPaned.pack2(scroll) vbox = gtk.VBox(spacing=5) vbox.pack_start(hPaned) vbox.pack_start(hbox, False, False) vbox.pack_start(self.searchSw) vbox.pack_start(gtk.Statusbar(), False, False) self.datesStamps = {} logsCant = len(self.fill_dates_tree(email)) if not logsCant > 0: dialog.information(_("No logs were found for %s") % (email)) else: self.window.add(vbox) self.window.show_all() self.searchSw.hide_all()