Exemple #1
0
 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()
Exemple #2
0
    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()