now we can save preset messages from change status message dialog. we also use ComboBox and not ComboBoxEntry because the first shows clearer that it is not editable. fixes #1407
This commit is contained in:
parent
37c84ef192
commit
80c58110e2
3 changed files with 47 additions and 23 deletions
|
@ -1,7 +1,7 @@
|
|||
## common/config.py
|
||||
##
|
||||
## Copyright (C) 2003-2006 Yann Le Boulanger <asterix@lagaule.org>
|
||||
## Copyright (C) 2003-2006 Nikos Kouremenos <nkour@jabber.org>
|
||||
## Copyright (C) 2004-2006 Nikos Kouremenos <kourem@gmail.com>
|
||||
## Copyright (C) 2004-2005 Vincent Hanquez <tab@snarc.org>
|
||||
## Copyright (C) 2005 Dimitur Kirov <dkirov@gmail.com>
|
||||
## Copyright (C) 2005 Travis Shirk <travis@pobox.com>
|
||||
|
|
|
@ -212,7 +212,8 @@ class ChooseGPGKeyDialog:
|
|||
class ChangeStatusMessageDialog:
|
||||
def __init__(self, show = None):
|
||||
self.show = show
|
||||
self.xml = gtk.glade.XML(GTKGUI_GLADE, 'change_status_message_dialog', APP)
|
||||
self.xml = gtk.glade.XML(GTKGUI_GLADE, 'change_status_message_dialog',
|
||||
APP)
|
||||
self.window = self.xml.get_widget('change_status_message_dialog')
|
||||
if show:
|
||||
uf_show = helpers.get_uf_show(show)
|
||||
|
@ -232,19 +233,23 @@ class ChangeStatusMessageDialog:
|
|||
msg = ''
|
||||
msg = helpers.from_one_line(msg)
|
||||
self.message_buffer.set_text(msg)
|
||||
self.values = {'':''} # have an empty string selectable, so user can clear msg
|
||||
for msg in gajim.config.get_per('statusmsg'):
|
||||
val = gajim.config.get_per('statusmsg', msg, 'message')
|
||||
val = helpers.from_one_line(val)
|
||||
self.values[msg] = val
|
||||
sorted_keys_list = helpers.get_sorted_keys(self.values)
|
||||
liststore = gtk.ListStore(str, str)
|
||||
message_comboboxentry = self.xml.get_widget('message_comboboxentry')
|
||||
message_comboboxentry.set_model(liststore)
|
||||
message_comboboxentry.set_text_column(0)
|
||||
message_comboboxentry.child.set_property('editable', False)
|
||||
for val in sorted_keys_list:
|
||||
message_comboboxentry.append_text(val)
|
||||
|
||||
# have an empty string selectable, so user can clear msg
|
||||
self.preset_messages_dict = {'': ''}
|
||||
for msg_name in gajim.config.get_per('statusmsg'):
|
||||
msg_text = gajim.config.get_per('statusmsg', msg_name, 'message')
|
||||
msg_text = helpers.from_one_line(msg_text)
|
||||
self.preset_messages_dict[msg_name] = msg_text
|
||||
sorted_keys_list = helpers.get_sorted_keys(self.preset_messages_dict)
|
||||
|
||||
self.message_liststore = gtk.ListStore(str) # msg_name
|
||||
self.message_combobox = self.xml.get_widget('message_combobox')
|
||||
self.message_combobox.set_model(self.message_liststore)
|
||||
cellrenderertext = gtk.CellRendererText()
|
||||
self.message_combobox.pack_start(cellrenderertext, True)
|
||||
self.message_combobox.add_attribute(cellrenderertext, 'text', 0)
|
||||
for msg_name in sorted_keys_list:
|
||||
self.message_liststore.append((msg_name,))
|
||||
self.xml.signal_autoconnect(self)
|
||||
self.window.show_all()
|
||||
|
||||
|
@ -254,7 +259,8 @@ class ChangeStatusMessageDialog:
|
|||
rep = self.window.run()
|
||||
if rep == gtk.RESPONSE_OK:
|
||||
beg, end = self.message_buffer.get_bounds()
|
||||
message = self.message_buffer.get_text(beg, end).decode('utf-8').strip()
|
||||
message = self.message_buffer.get_text(beg, end).decode('utf-8')\
|
||||
.strip()
|
||||
msg = helpers.to_one_line(message)
|
||||
if self.show:
|
||||
gajim.config.set('last_status_msg_' + self.show, msg)
|
||||
|
@ -263,13 +269,13 @@ class ChangeStatusMessageDialog:
|
|||
self.window.destroy()
|
||||
return message
|
||||
|
||||
def on_message_comboboxentry_changed(self, widget, data = None):
|
||||
def on_message_combobox_changed(self, widget):
|
||||
model = widget.get_model()
|
||||
active = widget.get_active()
|
||||
if active < 0:
|
||||
return None
|
||||
name = model[active][0].decode('utf-8')
|
||||
self.message_buffer.set_text(self.values[name])
|
||||
self.message_buffer.set_text(self.preset_messages_dict[name])
|
||||
|
||||
def on_change_status_message_dialog_key_press_event(self, widget, event):
|
||||
if event.keyval == gtk.keysyms.Return or \
|
||||
|
@ -284,6 +290,24 @@ class ChangeStatusMessageDialog:
|
|||
else:
|
||||
btn.set_sensitive(True)
|
||||
|
||||
def on_save_as_preset_button_clicked(self, widget):
|
||||
start_iter, finish_iter = self.message_buffer.get_bounds()
|
||||
status_message_to_save_as_preset = self.message_buffer.get_text(
|
||||
start_iter, finish_iter)
|
||||
dlg = InputDialog(_('Save as Preset Status Message'),
|
||||
_('Please type a name for this status message'), is_modal = True)
|
||||
response = dlg.get_response()
|
||||
if response == gtk.RESPONSE_OK:
|
||||
msg_name = dlg.input_entry.get_text()
|
||||
# user_input holds the name that the user wants for the preset message
|
||||
iter_ = self.message_liststore.append((msg_name,))
|
||||
msg_text = helpers.to_one_line(status_message_to_save_as_preset)
|
||||
gajim.config.add_per('statusmsg', msg_name)
|
||||
gajim.config.set_per('statusmsg', msg_name, 'message', msg_text)
|
||||
self.preset_messages_dict[msg_name] = msg_text
|
||||
# select in combobox the one we just saved
|
||||
self.message_combobox.set_active_iter(iter_)
|
||||
|
||||
|
||||
class AddNewContactWindow:
|
||||
'''Class for AddNewContactWindow'''
|
||||
|
@ -611,6 +635,8 @@ class InputDialog:
|
|||
'''Class for Input dialog'''
|
||||
def __init__(self, title, label_str, input_str = None, is_modal = True,
|
||||
ok_handler = None):
|
||||
# if modal is True you also need to call get_response()
|
||||
# and ok_handler won't be used
|
||||
xml = gtk.glade.XML(GTKGUI_GLADE, 'input_dialog', APP)
|
||||
self.dialog = xml.get_widget('input_dialog')
|
||||
label = xml.get_widget('label')
|
||||
|
@ -644,7 +670,6 @@ ok_handler = None):
|
|||
self.dialog.destroy()
|
||||
return response
|
||||
|
||||
|
||||
class SubscriptionRequestWindow:
|
||||
def __init__(self, jid, text, account):
|
||||
xml = gtk.glade.XML(GTKGUI_GLADE, 'subscription_request_window', APP)
|
||||
|
|
|
@ -10372,12 +10372,11 @@ Custom</property>
|
|||
</child>
|
||||
|
||||
<child>
|
||||
<widget class="GtkComboBoxEntry" id="message_comboboxentry">
|
||||
<widget class="GtkComboBox" id="message_combobox">
|
||||
<property name="visible">True</property>
|
||||
<property name="add_tearoffs">False</property>
|
||||
<property name="has_frame">True</property>
|
||||
<property name="focus_on_click">True</property>
|
||||
<signal name="changed" handler="on_message_comboboxentry_changed" last_modification_time="Wed, 02 Mar 2005 12:34:51 GMT"/>
|
||||
<signal name="changed" handler="on_message_combobox_changed" last_modification_time="Tue, 07 Mar 2006 13:25:23 GMT"/>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="padding">0</property>
|
||||
|
|
Loading…
Add table
Reference in a new issue