def on_results_treeview_row_activated(self, widget, path, column): """ A row was double clicked, get date from row, and select it in calendar which results to showing conversation logs for that date """ # get currently selected date cur_year, cur_month = self.calendar.get_date()[0:2] cur_month = gtkgui_helpers.make_gtk_month_python_month(cur_month) model = widget.get_model() # make it a tupple (Y, M, D, 0, 0, 0...) tim = time.strptime(model[path][Column.UNIXTIME], '%Y-%m-%d') year = tim[0] gtk_month = tim[1] month = gtkgui_helpers.make_python_month_gtk_month(gtk_month) day = tim[2] # switch to belonging logfile if necessary log_jid = model[path][Column.LOG_JID] if log_jid != self.jid: self._load_history(log_jid, None) # avoid reruning mark days algo if same month and year! if year != cur_year or gtk_month != cur_month: self.calendar.select_month(month, year) self.calendar.select_day(day) unix_time = model[path][Column.TIME] self._scroll_to_result(unix_time)
def on_results_treeview_row_activated(self, widget, path, column): """ A row was double clicked, get date from row, and select it in calendar which results to showing conversation logs for that date """ # get currently selected date cur_year, cur_month = self.calendar.get_date()[0:2] cur_month = gtkgui_helpers.make_gtk_month_python_month(cur_month) model = widget.get_model() # make it a tupple (Y, M, D, 0, 0, 0...) tim = time.strptime(model[path][C_UNIXTIME], '%Y-%m-%d') year = tim[0] gtk_month = tim[1] month = gtkgui_helpers.make_python_month_gtk_month(gtk_month) day = tim[2] # switch to belonging logfile if necessary log_jid = model[path][C_LOG_JID] if log_jid != self.jid: self._load_history(log_jid, None) # avoid reruning mark days algo if same month and year! if year != cur_year or gtk_month != cur_month: self.calendar.select_month(month, year) self.calendar.select_day(day) unix_time = model[path][C_TIME] self._scroll_to_result(unix_time)
def on_results_treeview_row_activated(self, widget, path, column): '''a row was double clicked, get date from row, and select it in calendar which results to showing conversation logs for that date''' # get currently selected date cur_year, cur_month, cur_day = self.calendar.get_date() cur_month = gtkgui_helpers.make_gtk_month_python_month(cur_month) model = widget.get_model() iter = model.get_iter(path) # make it (Y, M, D, ...) tim = time.strptime(model[iter][C_TIME], '%Y-%m-%d %H:%M:%S') year = tim[0] gtk_month = tim[1] month = gtkgui_helpers.make_python_month_gtk_month(gtk_month) day = tim[2] # avoid reruning mark days algo if same month and year! if year != cur_year or gtk_month != cur_month: self.calendar.select_month(month, year) self.calendar.select_day(day)
def _load_history(self, jid_or_name, account=None): """ Load history for the given jid/name and show it """ if jid_or_name and jid_or_name in self.completion_dict: # a full qualified jid or a contact name was entered info_jid, info_account, info_name, info_completion = self.completion_dict[ jid_or_name] self.jids_to_search = [info_jid] self.jid = info_jid if account: self.account = account else: self.account = info_account if self.account is None: # We don't know account. Probably a gc not opened or an # account not connected. # Disable possibility to say if we want to log or not self.checkbutton.set_sensitive(False) else: # Are log disabled for account ? if self.account in gajim.config.get_per( 'accounts', self.account, 'no_log_for').split(' '): self.checkbutton.set_active(False) self.checkbutton.set_sensitive(False) else: # Are log disabled for jid ? log = True if self.jid in gajim.config.get_per( 'accounts', self.account, 'no_log_for').split(' '): log = False self.checkbutton.set_active(log) self.checkbutton.set_sensitive(True) self.jids_to_search = [info_jid] # select logs for last date we have logs with contact self.calendar.set_sensitive(True) last_log = \ gajim.logger.get_last_date_that_has_logs(self.jid, self.account) date = time.localtime(last_log) y, m, d = date[0], date[1], date[2] gtk_month = gtkgui_helpers.make_python_month_gtk_month(m) self.calendar.select_month(gtk_month, y) self.calendar.select_day(d) self.search_entry.set_sensitive(True) self.search_entry.grab_focus() title = _('Conversation History with %s') % info_name self.window.set_title(title) self.jid_entry.set_text(info_completion) else: # neither a valid jid, nor an existing contact name was entered # we have got nothing to show or to search in self.jid = None self.account = None self.history_buffer.set_text('') # clear the buffer self.search_entry.set_sensitive(False) self.checkbutton.set_sensitive(False) self.calendar.set_sensitive(False) self.calendar.clear_marks() self.results_window.set_property('visible', False) title = _('Conversation History') self.window.set_title(title)
def __init__(self, jid, account): self.jid = jid self.account = account self.mark_days_idle_call_id = None xml = gtk.glade.XML(GTKGUI_GLADE, 'history_window', APP) self.window = xml.get_widget('history_window') self.calendar = xml.get_widget('calendar') scrolledwindow = xml.get_widget('scrolledwindow') self.history_textview = conversation_textview.ConversationTextview(account) scrolledwindow.add(self.history_textview) self.history_buffer = self.history_textview.get_buffer() self.query_entry = xml.get_widget('query_entry') self.search_button = xml.get_widget('search_button') query_builder_button = xml.get_widget('query_builder_button') query_builder_button.hide() query_builder_button.set_no_show_all(True) self.expander_vbox = xml.get_widget('expander_vbox') self.results_treeview = xml.get_widget('results_treeview') # contact_name, time, message model = gtk.ListStore(str, str, str) self.results_treeview.set_model(model) col = gtk.TreeViewColumn(_('Name')) self.results_treeview.append_column(col) renderer = gtk.CellRendererText() col.pack_start(renderer) col.set_attributes(renderer, text = C_CONTACT_NAME) col.set_sort_column_id(C_CONTACT_NAME) col.set_resizable(True) col = gtk.TreeViewColumn(_('Date')) self.results_treeview.append_column(col) renderer = gtk.CellRendererText() col.pack_start(renderer) col.set_attributes(renderer, text = C_TIME) col.set_sort_column_id(C_TIME) col.set_resizable(True) col = gtk.TreeViewColumn(_('Message')) self.results_treeview.append_column(col) renderer = gtk.CellRendererText() col.pack_start(renderer) col.set_attributes(renderer, text = C_MESSAGE) col.set_resizable(True) if account and gajim.contacts[account].has_key(jid): contact = gajim.get_first_contact_instance_from_jid(account, jid) title = _('Conversation History with %s') % contact.name else: title = _('Conversation History with %s') % jid self.window.set_title(title) xml.signal_autoconnect(self) # fake event so we start mark days procedure for selected month # selected month is current month as calendar defaults to selecting # current date self.calendar.emit('month-changed') # select and show logs for last date we have logs with contact # and if we don't have logs at all, default to today result = gajim.logger.get_last_date_that_has_logs(self.jid) if result is None: date = time.localtime() else: tim = result date = time.localtime(tim) y, m, d = date[0], date[1], date[2] gtk_month = gtkgui_helpers.make_python_month_gtk_month(m) self.calendar.select_month(gtk_month, y) self.calendar.select_day(d) self.add_lines_for_date(y, m, d) self.window.show_all()
def _load_history(self, jid_or_name, account=None): """ Load history for the given jid/name and show it """ if jid_or_name and jid_or_name in self.completion_dict: # a full qualified jid or a contact name was entered info_jid, info_account, info_name, info_completion = self.completion_dict[jid_or_name] self.jids_to_search = [info_jid] self.jid = info_jid if account: self.account = account else: self.account = info_account if self.account is None: # We don't know account. Probably a gc not opened or an # account not connected. # Disable possibility to say if we want to log or not self.checkbutton.set_sensitive(False) else: # Are log disabled for account ? if self.account in gajim.config.get_per('accounts', self.account, 'no_log_for').split(' '): self.checkbutton.set_active(False) self.checkbutton.set_sensitive(False) else: # Are log disabled for jid ? log = True if self.jid in gajim.config.get_per('accounts', self.account, 'no_log_for').split(' '): log = False self.checkbutton.set_active(log) self.checkbutton.set_sensitive(True) self.jids_to_search = [info_jid] # select logs for last date we have logs with contact self.calendar.set_sensitive(True) last_log = \ gajim.logger.get_last_date_that_has_logs(self.jid, self.account) date = time.localtime(last_log) y, m, d = date[0], date[1], date[2] gtk_month = gtkgui_helpers.make_python_month_gtk_month(m) self.calendar.select_month(gtk_month, y) self.calendar.select_day(d) self.search_entry.set_sensitive(True) self.search_entry.grab_focus() title = _('Conversation History with %s') % info_name self.window.set_title(title) self.jid_entry.set_text(info_completion) else: # neither a valid jid, nor an existing contact name was entered # we have got nothing to show or to search in self.jid = None self.account = None self.history_buffer.set_text('') # clear the buffer self.search_entry.set_sensitive(False) self.checkbutton.set_sensitive(False) self.calendar.set_sensitive(False) self.calendar.clear_marks() self.results_window.set_property('visible', False) title = _('Conversation History') self.window.set_title(title)