Add global search to history_viewer. Minor GUI improvements. Fix nasty bug: history_window was adding unexisting jids to logs.db, when it was tried to view their history.
This commit is contained in:
parent
c1669d21c7
commit
4187f57eca
2 changed files with 140 additions and 136 deletions
|
@ -33,25 +33,11 @@
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="can_focus">True</property>
|
<property name="can_focus">True</property>
|
||||||
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
|
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
|
||||||
|
<property name="tooltip" translatable="yes">Choose the chatlog you want to view.
|
||||||
|
Enter the jid of a groupchat or a contact here. For online accounts you can even enter a a contact's nickname.</property>
|
||||||
<signal name="activate" handler="on_jid_entry_activate"/>
|
<signal name="activate" handler="on_jid_entry_activate"/>
|
||||||
</widget>
|
</widget>
|
||||||
</child>
|
</child>
|
||||||
<child>
|
|
||||||
<widget class="GtkLabel" id="label3">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
|
|
||||||
<property name="xalign">0</property>
|
|
||||||
<property name="label" translatable="yes">Enter a contact jid or MUC jid here to view its history.
|
|
||||||
If a contact is connected you can even enter his nick name.
|
|
||||||
</property>
|
|
||||||
<property name="wrap">True</property>
|
|
||||||
</widget>
|
|
||||||
<packing>
|
|
||||||
<property name="expand">False</property>
|
|
||||||
<property name="fill">False</property>
|
|
||||||
<property name="position">1</property>
|
|
||||||
</packing>
|
|
||||||
</child>
|
|
||||||
</widget>
|
</widget>
|
||||||
</child>
|
</child>
|
||||||
</widget>
|
</widget>
|
||||||
|
@ -176,77 +162,54 @@ If a contact is connected you can even enter his nick name.
|
||||||
<widget class="GtkHBox" id="query_hbox">
|
<widget class="GtkHBox" id="query_hbox">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="spacing">6</property>
|
<property name="spacing">6</property>
|
||||||
|
<child>
|
||||||
|
<widget class="GtkLabel" id="label3">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
|
||||||
|
<property name="label" translatable="yes">Search</property>
|
||||||
|
</widget>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">False</property>
|
||||||
|
<property name="fill">False</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
<child>
|
<child>
|
||||||
<widget class="GtkEntry" id="query_entry">
|
<widget class="GtkEntry" id="query_entry">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="can_focus">True</property>
|
<property name="can_focus">True</property>
|
||||||
<property name="activates_default">True</property>
|
<property name="activates_default">True</property>
|
||||||
</widget>
|
<signal name="activate" handler="on_query_entry_activate"/>
|
||||||
</child>
|
|
||||||
<child>
|
|
||||||
<widget class="GtkButton" id="search_button">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">True</property>
|
|
||||||
<property name="can_default">True</property>
|
|
||||||
<property name="has_default">True</property>
|
|
||||||
<property name="response_id">0</property>
|
|
||||||
<signal name="clicked" handler="on_search_button_clicked"/>
|
|
||||||
<child>
|
|
||||||
<widget class="GtkAlignment" id="alignment99">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="xscale">0</property>
|
|
||||||
<property name="yscale">0</property>
|
|
||||||
<child>
|
|
||||||
<widget class="GtkHBox" id="hbox3004">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="spacing">2</property>
|
|
||||||
<child>
|
|
||||||
<widget class="GtkImage" id="image1327">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="stock">gtk-find</property>
|
|
||||||
</widget>
|
|
||||||
<packing>
|
|
||||||
<property name="expand">False</property>
|
|
||||||
<property name="fill">False</property>
|
|
||||||
</packing>
|
|
||||||
</child>
|
|
||||||
<child>
|
|
||||||
<widget class="GtkLabel" id="label372">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="label" translatable="yes">Search</property>
|
|
||||||
<property name="use_underline">True</property>
|
|
||||||
</widget>
|
|
||||||
<packing>
|
|
||||||
<property name="expand">False</property>
|
|
||||||
<property name="fill">False</property>
|
|
||||||
<property name="position">1</property>
|
|
||||||
</packing>
|
|
||||||
</child>
|
|
||||||
</widget>
|
|
||||||
</child>
|
|
||||||
</widget>
|
|
||||||
</child>
|
|
||||||
</widget>
|
</widget>
|
||||||
<packing>
|
<packing>
|
||||||
<property name="expand">False</property>
|
<property name="position">2</property>
|
||||||
<property name="fill">False</property>
|
|
||||||
<property name="position">1</property>
|
|
||||||
</packing>
|
</packing>
|
||||||
</child>
|
</child>
|
||||||
<child>
|
<child>
|
||||||
<widget class="GtkButton" id="query_builder_button">
|
<widget class="GtkLabel" id="label4">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="can_focus">True</property>
|
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
|
||||||
<property name="tooltip" translatable="yes">Build custom query</property>
|
<property name="label" translatable="yes">in</property>
|
||||||
<property name="label" translatable="yes">Query Builder...</property>
|
|
||||||
<property name="use_underline">True</property>
|
|
||||||
<property name="response_id">0</property>
|
|
||||||
<signal name="clicked" handler="on_query_builder_button_clicked"/>
|
|
||||||
</widget>
|
</widget>
|
||||||
<packing>
|
<packing>
|
||||||
<property name="expand">False</property>
|
<property name="expand">False</property>
|
||||||
<property name="fill">False</property>
|
<property name="fill">False</property>
|
||||||
<property name="position">2</property>
|
<property name="position">3</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<widget class="GtkComboBox" id="query_combobox">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
|
||||||
|
<property name="focus_on_click">False</property>
|
||||||
|
<property name="items" translatable="yes">Current History
|
||||||
|
All Chat Histories</property>
|
||||||
|
<signal name="changed" handler="on_query_combobox_changed"/>
|
||||||
|
</widget>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">False</property>
|
||||||
|
<property name="fill">False</property>
|
||||||
|
<property name="pack_type">GTK_PACK_END</property>
|
||||||
|
<property name="position">1</property>
|
||||||
</packing>
|
</packing>
|
||||||
</child>
|
</child>
|
||||||
</widget>
|
</widget>
|
||||||
|
|
|
@ -41,17 +41,19 @@ constants = Constants()
|
||||||
|
|
||||||
# contact_name, date, message, time
|
# contact_name, date, message, time
|
||||||
(
|
(
|
||||||
|
C_LOG_JID,
|
||||||
C_CONTACT_NAME,
|
C_CONTACT_NAME,
|
||||||
C_UNIXTIME,
|
C_UNIXTIME,
|
||||||
C_MESSAGE,
|
C_MESSAGE,
|
||||||
C_TIME
|
C_TIME
|
||||||
) = range(4)
|
) = range(5)
|
||||||
|
|
||||||
class HistoryWindow:
|
class HistoryWindow:
|
||||||
'''Class for browsing logs of conversations with contacts'''
|
'''Class for browsing logs of conversations with contacts'''
|
||||||
|
|
||||||
def __init__(self, jid = None, account = None):
|
def __init__(self, jid = None, account = None):
|
||||||
if jid is None:
|
if jid is None:
|
||||||
|
# Use self.jid to pass text to input_entry
|
||||||
self.jid = 'Enter jid or contact name here'
|
self.jid = 'Enter jid or contact name here'
|
||||||
else:
|
else:
|
||||||
self.jid = jid
|
self.jid = jid
|
||||||
|
@ -61,7 +63,6 @@ class HistoryWindow:
|
||||||
|
|
||||||
xml = gtkgui_helpers.get_glade('history_window.glade')
|
xml = gtkgui_helpers.get_glade('history_window.glade')
|
||||||
self.window = xml.get_widget('history_window')
|
self.window = xml.get_widget('history_window')
|
||||||
|
|
||||||
self.jid_entry = xml.get_widget('jid_entry')
|
self.jid_entry = xml.get_widget('jid_entry')
|
||||||
self.calendar = xml.get_widget('calendar')
|
self.calendar = xml.get_widget('calendar')
|
||||||
scrolledwindow = xml.get_widget('scrolledwindow')
|
scrolledwindow = xml.get_widget('scrolledwindow')
|
||||||
|
@ -73,24 +74,22 @@ class HistoryWindow:
|
||||||
self.checkbutton = xml.get_widget('log_history_checkbutton')
|
self.checkbutton = xml.get_widget('log_history_checkbutton')
|
||||||
self.checkbutton.connect('toggled', self.on_log_history_checkbutton_toggled)
|
self.checkbutton.connect('toggled', self.on_log_history_checkbutton_toggled)
|
||||||
self.query_entry = xml.get_widget('query_entry')
|
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.expander_vbox = xml.get_widget('expander_vbox')
|
||||||
|
self.query_combobox = xml.get_widget('query_combobox')
|
||||||
|
self.query_combobox.set_active(0)
|
||||||
self.results_treeview = xml.get_widget('results_treeview')
|
self.results_treeview = xml.get_widget('results_treeview')
|
||||||
|
|
||||||
# create jid dict for auto completion
|
# create jid dict for auto completion
|
||||||
self.completion_dict = {}
|
self.completion_dict = {}
|
||||||
liststore = gtkgui_helpers.get_completion_liststore(self.jid_entry)
|
liststore = gtkgui_helpers.get_completion_liststore(self.jid_entry)
|
||||||
|
|
||||||
# Add all jids in the db
|
# Add all jids in logs.db:
|
||||||
|
# he only info we have got to fill the dict is the JID, use it as key
|
||||||
db_jids = gajim.logger.get_jids_in_db()
|
db_jids = gajim.logger.get_jids_in_db()
|
||||||
for jid in db_jids:
|
for jid in db_jids:
|
||||||
self.completion_dict[jid] = jid
|
self.completion_dict[jid] = None
|
||||||
|
|
||||||
# Enhance contacts of online accounts with their names
|
# Enhance contacts of online accounts with their contact reference and their name
|
||||||
for account in gajim.contacts.get_accounts():
|
for account in gajim.contacts.get_accounts():
|
||||||
self.completion_dict.update(helpers.get_contact_dict_for_account(account))
|
self.completion_dict.update(helpers.get_contact_dict_for_account(account))
|
||||||
keys = self.completion_dict.keys()
|
keys = self.completion_dict.keys()
|
||||||
|
@ -104,7 +103,7 @@ class HistoryWindow:
|
||||||
liststore.append((img.get_pixbuf(), jid))
|
liststore.append((img.get_pixbuf(), jid))
|
||||||
|
|
||||||
# contact_name, date, message, time
|
# contact_name, date, message, time
|
||||||
model = gtk.ListStore(str, str, str, str)
|
model = gtk.ListStore(str, str, str, str, str)
|
||||||
self.results_treeview.set_model(model)
|
self.results_treeview.set_model(model)
|
||||||
col = gtk.TreeViewColumn(_('Name'))
|
col = gtk.TreeViewColumn(_('Name'))
|
||||||
self.results_treeview.append_column(col)
|
self.results_treeview.append_column(col)
|
||||||
|
@ -143,18 +142,22 @@ class HistoryWindow:
|
||||||
self.history_textview.del_handlers()
|
self.history_textview.del_handlers()
|
||||||
del gajim.interface.instances['logs']
|
del gajim.interface.instances['logs']
|
||||||
|
|
||||||
|
|
||||||
def on_close_button_clicked(self, widget):
|
def on_close_button_clicked(self, widget):
|
||||||
self.window.destroy()
|
self.window.destroy()
|
||||||
|
|
||||||
def on_jid_entry_activate(self, widget):
|
def on_jid_entry_activate(self, widget):
|
||||||
self.jid = self.jid_entry.get_text()
|
self.jid = self.jid_entry.get_text()
|
||||||
|
|
||||||
if self.completion_dict.has_key(self.jid): # a full qualified jid or contact name was entered
|
if self.completion_dict.has_key(self.jid): # a full qualified jid or a contact name was entered
|
||||||
contact_name = self.completion_dict[self.jid]
|
contact = self.completion_dict[self.jid]
|
||||||
if self.jid != contact_name:
|
if contact: # we have got additional info, jid enhanced with contact
|
||||||
self.jid = contact_name.jid # jid enhanced with contact
|
self.jid = contact.jid
|
||||||
|
self.jid_entry.set_text(contact.get_shown_name())
|
||||||
|
self.jids_to_search = [contact.jid]
|
||||||
|
else:
|
||||||
|
self.jids_to_search = [self.jid]
|
||||||
|
|
||||||
|
# Try to find the corresponding account of the jid
|
||||||
accounts = gajim.contacts.get_accounts()
|
accounts = gajim.contacts.get_accounts()
|
||||||
self.account = None
|
self.account = None
|
||||||
for account in accounts:
|
for account in accounts:
|
||||||
|
@ -164,13 +167,13 @@ class HistoryWindow:
|
||||||
break
|
break
|
||||||
if self.account is None:
|
if self.account is None:
|
||||||
# We do not know an account. This can only happen if the contact is offine,
|
# We do not know an account. This can only happen if the contact is offine,
|
||||||
# or if we browse a groupchat history. The account is not needed, a dummy can
|
# or if we browse a groupchat history. The account is not really needed, a dummy can
|
||||||
# be set.
|
# be set.
|
||||||
# FIXME: This may leed to wrong self nick in the displayed history
|
# FIXME: This may leed to wrong self nick in the displayed history
|
||||||
self.account = gajim.contacts.get_accounts()[0]
|
self.account = gajim.contacts.get_accounts()[0]
|
||||||
self.checkbutton.set_sensitive(False)
|
self.checkbutton.set_sensitive(False)
|
||||||
else:
|
else:
|
||||||
# Set the logging checkbutton, can only work if we have got an account.
|
# The logging checkbutton, can only work if we have got an account.
|
||||||
log = True
|
log = True
|
||||||
if self.jid in gajim.config.get_per('accounts', self.account,
|
if self.jid in gajim.config.get_per('accounts', self.account,
|
||||||
'no_log_for').split(' '):
|
'no_log_for').split(' '):
|
||||||
|
@ -180,8 +183,19 @@ class HistoryWindow:
|
||||||
|
|
||||||
# select logs for last date we have logs with contact
|
# select logs for last date we have logs with contact
|
||||||
self.calendar.set_sensitive(True)
|
self.calendar.set_sensitive(True)
|
||||||
|
self.calendar.emit('month-changed')
|
||||||
lastlog = gajim.logger.get_last_date_that_has_logs(self.jid, self.account)
|
lastlog = gajim.logger.get_last_date_that_has_logs(self.jid, self.account)
|
||||||
|
|
||||||
|
tim = lastlog
|
||||||
|
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.query_entry.set_sensitive(True)
|
||||||
|
|
||||||
if contact:
|
if contact:
|
||||||
title = _('Conversation History with %s') % contact.get_shown_name()
|
title = _('Conversation History with %s') % contact.get_shown_name()
|
||||||
else:
|
else:
|
||||||
|
@ -190,30 +204,17 @@ class HistoryWindow:
|
||||||
|
|
||||||
|
|
||||||
else: # neither a valid jid, nor an existing contact name was entered
|
else: # neither a valid jid, nor an existing contact name was entered
|
||||||
lastlog = None
|
# we have got nothing to show or to search in
|
||||||
|
self.history_buffer.set_text('') # clear the buffer
|
||||||
|
self.query_entry.set_sensitive(False)
|
||||||
|
|
||||||
self.checkbutton.set_sensitive(False)
|
self.checkbutton.set_sensitive(False)
|
||||||
|
|
||||||
self.calendar.set_sensitive(False)
|
self.calendar.set_sensitive(False)
|
||||||
|
self.calendar.clear_marks()
|
||||||
|
|
||||||
title = _('Conversation History')
|
title = _('Conversation History')
|
||||||
self.window.set_title(title)
|
self.window.set_title(title)
|
||||||
|
|
||||||
self.calendar.emit('month-changed')
|
|
||||||
|
|
||||||
# Show logs for contact. If we don't have logs at all, default to today
|
|
||||||
if lastlog is None:
|
|
||||||
date = time.localtime()
|
|
||||||
else:
|
|
||||||
tim = lastlog
|
|
||||||
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)
|
|
||||||
|
|
||||||
def on_calendar_day_selected(self, widget):
|
def on_calendar_day_selected(self, widget):
|
||||||
year, month, day = widget.get_date() # integers
|
year, month, day = widget.get_date() # integers
|
||||||
month = gtkgui_helpers.make_gtk_month_python_month(month)
|
month = gtkgui_helpers.make_gtk_month_python_month(month)
|
||||||
|
@ -388,40 +389,75 @@ class HistoryWindow:
|
||||||
gobject.timeout_add(200, self.set_unset_expand_on_expander, widget)
|
gobject.timeout_add(200, self.set_unset_expand_on_expander, widget)
|
||||||
else:
|
else:
|
||||||
gobject.timeout_add(200, self.set_unset_expand_on_expander, widget)
|
gobject.timeout_add(200, self.set_unset_expand_on_expander, widget)
|
||||||
self.search_button.grab_default()
|
|
||||||
self.query_entry.grab_focus()
|
self.query_entry.grab_focus()
|
||||||
|
|
||||||
def on_search_button_clicked(self, widget):
|
def on_query_entry_activate(self, widget):
|
||||||
text = self.query_entry.get_text()
|
text = self.query_entry.get_text()
|
||||||
model = self.results_treeview.get_model()
|
model = self.results_treeview.get_model()
|
||||||
model.clear()
|
model.clear()
|
||||||
if text == '':
|
if text == '':
|
||||||
return
|
return
|
||||||
# contact_name, time, kind, show, message, subject
|
|
||||||
results = gajim.logger.get_search_results_for_query(
|
# perform search in preselected jids. jids are preselected with the query_combobox (all, current...)
|
||||||
self.jid, text, self.account)
|
for jid in self.jids_to_search:
|
||||||
#FIXME:
|
accounts = gajim.contacts.get_accounts()
|
||||||
# add "subject: | message: " in message column if kind is single
|
account = None
|
||||||
# also do we need show at all? (we do not search on subject)
|
for acc in accounts:
|
||||||
for row in results:
|
contact = gajim.contacts.get_first_contact_from_jid(acc ,jid)
|
||||||
contact_name = row[0]
|
if contact:
|
||||||
if not contact_name:
|
account = acc
|
||||||
kind = row[2]
|
break
|
||||||
if kind == constants.KIND_CHAT_MSG_SENT: # it's us! :)
|
if account is None:
|
||||||
contact_name = gajim.nicks[self.account]
|
# We do not know an account. This can only happen if the contact is offine,
|
||||||
else:
|
# or if we browse a groupchat history. The account is not needed, a dummy can
|
||||||
contact = gajim.contacts.get_first_contact_from_jid(self.account,
|
# be set.
|
||||||
self.jid)
|
# FIXME: This may leed to wrong self nick in the displayed history
|
||||||
if contact:
|
account = gajim.contacts.get_accounts()[0]
|
||||||
contact_name = contact.get_shown_name()
|
|
||||||
|
# contact_name, time, kind, show, message, subject
|
||||||
|
results = gajim.logger.get_search_results_for_query(
|
||||||
|
jid, text, account)
|
||||||
|
#FIXME:
|
||||||
|
# add "subject: | message: " in message column if kind is single
|
||||||
|
# also do we need show at all? (we do not search on subject)
|
||||||
|
for row in results:
|
||||||
|
contact_name = row[0]
|
||||||
|
if not contact_name:
|
||||||
|
kind = row[2]
|
||||||
|
if kind == constants.KIND_CHAT_MSG_SENT: # it's us! :)
|
||||||
|
contact_name = gajim.nicks[account]
|
||||||
else:
|
else:
|
||||||
contact_name = self.jid
|
contact = self.completion_dict[jid]
|
||||||
tim = row[1]
|
if contact:
|
||||||
message = row[4]
|
contact_name = contact.get_shown_name()
|
||||||
local_time = time.localtime(tim)
|
else:
|
||||||
date = time.strftime('%x', local_time)
|
contact_name = jid
|
||||||
# name, date, message, time (full unix time)
|
tim = row[1]
|
||||||
model.append((contact_name, date, message, tim))
|
message = row[4]
|
||||||
|
local_time = time.localtime(tim)
|
||||||
|
date = time.strftime('%x', local_time)
|
||||||
|
# jid (to which log is assigned to), name, date, message, time (full unix time)
|
||||||
|
model.append((jid, contact_name, date, message, tim))
|
||||||
|
|
||||||
|
def on_query_combobox_changed(self, widget):
|
||||||
|
self.jids_to_search = []
|
||||||
|
if self.query_combobox.get_active() == 0:
|
||||||
|
# Search current contact
|
||||||
|
if self.completion_dict.has_key(self.jid):
|
||||||
|
self.query_entry.set_sensitive(True)
|
||||||
|
contact = self.completion_dict[self.jid]
|
||||||
|
if contact:
|
||||||
|
self.jids_to_search = [contact.jid]
|
||||||
|
else:
|
||||||
|
self.jids_to_search = [self.jid]
|
||||||
|
else:
|
||||||
|
# We cannot search in logs of an non-existing jid
|
||||||
|
self.query_entry.set_sensitive(False)
|
||||||
|
if self.query_combobox.get_active() == 1:
|
||||||
|
# Search all histories
|
||||||
|
self.query_entry.set_sensitive(True)
|
||||||
|
self.jids_to_search = gajim.logger.get_jids_in_db()
|
||||||
|
|
||||||
|
|
||||||
def on_results_treeview_row_activated(self, widget, path, column):
|
def on_results_treeview_row_activated(self, widget, path, column):
|
||||||
'''a row was double clicked, get date from row, and select it in calendar
|
'''a row was double clicked, get date from row, and select it in calendar
|
||||||
|
@ -437,6 +473,11 @@ class HistoryWindow:
|
||||||
month = gtkgui_helpers.make_python_month_gtk_month(gtk_month)
|
month = gtkgui_helpers.make_python_month_gtk_month(gtk_month)
|
||||||
day = tim[2]
|
day = tim[2]
|
||||||
|
|
||||||
|
# switch to belonging logfile if necessary
|
||||||
|
log_jid = model[path][C_LOG_JID]
|
||||||
|
if log_jid != self.jid:
|
||||||
|
self.open_history(log_jid, None)
|
||||||
|
|
||||||
# avoid reruning mark days algo if same month and year!
|
# avoid reruning mark days algo if same month and year!
|
||||||
if year != cur_year or gtk_month != cur_month:
|
if year != cur_year or gtk_month != cur_month:
|
||||||
self.calendar.select_month(month, year)
|
self.calendar.select_month(month, year)
|
||||||
|
@ -483,7 +524,7 @@ class HistoryWindow:
|
||||||
' '.join(no_log_for))
|
' '.join(no_log_for))
|
||||||
|
|
||||||
def open_history(self, jid, account):
|
def open_history(self, jid, account):
|
||||||
# Simulate that the jid was entered by hand
|
'''Simulate that the jid was entered by hand'''
|
||||||
self.jid_entry.set_text(jid)
|
self.jid_entry.set_text(jid)
|
||||||
self.jid_entry.emit('activate')
|
self.jid_entry.emit('activate')
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue