diff --git a/plugins/gtkgui/chat.py b/plugins/gtkgui/chat.py index e3e9311abe6a57f2779968cba62eb3560fdcc96e..823a5ee4d1e2ca99a7b6812ed3e3bf4714e51d87 100644 --- a/plugins/gtkgui/chat.py +++ b/plugins/gtkgui/chat.py @@ -215,7 +215,9 @@ class Chat: self.xmls[jid].get_widget('conversation_textview') conversation_buffer = conversation_textview.get_buffer() end_iter = conversation_buffer.get_end_iter() - conversation_buffer.create_mark('end', end_iter, 0) + + conversation_buffer.create_mark('end', end_iter, False) + self.tagIn[jid] = conversation_buffer.create_tag('incoming') color = self.plugin.config['inmsgcolor'] self.tagIn[jid].set_property('foreground', color) @@ -270,59 +272,79 @@ class Chat: self.show_title() def on_conversation_textview_key_press_event(self, widget, event): - """Do not black these evnts and send them to the notebook""" - if event.keyval == gtk.keysyms.Tab and \ - (event.state & gtk.gdk.CONTROL_MASK): # CTRL + TAB - self.notebook.emit('key_press_event', event) - elif event.keyval == gtk.keysyms.Page_Down: # PAGE DOWN - if event.state & gtk.gdk.CONTROL_MASK: # CTRL + PAGE DOWN + """Do not block these events and send them to the notebook""" + if (event.state & gtk.gdk.CONTROL_MASK) and \ + (event.state & gtk.gdk.SHIFT_MASK): + if event.hardware_keycode == 23: # CTRL + SHIFT + TAB self.notebook.emit('key_press_event', event) - elif event.keyval == gtk.keysyms.Page_Up: # PAGE UP - if event.state & gtk.gdk.CONTROL_MASK: # CTRL + PAGE UP + elif event.state & gtk.gdk.CONTROL_MASK: + if event.keyval == gtk.keysyms.Tab: # CTRL + TAB self.notebook.emit('key_press_event', event) - + elif event.keyval == gtk.keysyms.Page_Down: # CTRL + PAGE DOWN + self.notebook.emit('key_press_event', event) + elif event.keyval == gtk.keysyms.Page_Up: # CTRL + PAGE UP + self.notebook.emit('key_press_event', event) + def on_chat_notebook_key_press_event(self, widget, event): st = '1234567890' # zero is here cause humans count from 1, pc from 0 :P jid = self.get_active_jid() if event.keyval == gtk.keysyms.Escape: # ESCAPE self.remove_tab(jid) + elif event.keyval == gtk.keysyms.F4 and \ + (event.state & gtk.gdk.CONTROL_MASK): # CTRL + F4 + self.remove_tab(jid) elif event.string and event.string in st \ and (event.state & gtk.gdk.MOD1_MASK): # alt + 1,2,3.. self.notebook.set_current_page(st.index(event.string)) - elif event.keyval == gtk.keysyms.Page_Down: # PAGE DOWN - if event.state & gtk.gdk.CONTROL_MASK: + elif event.keyval == gtk.keysyms.Page_Down: + if event.state & gtk.gdk.CONTROL_MASK: # CTRL + PAGE DOWN current = self.notebook.get_current_page() if current > 0: self.notebook.set_current_page(current-1) - elif event.state & gtk.gdk.SHIFT_MASK: + elif event.state & gtk.gdk.SHIFT_MASK: # SHIFT + PAGE DOWN conversation_textview = self.xmls[jid].\ get_widget('conversation_textview') rect = conversation_textview.get_visible_rect() iter = conversation_textview.get_iter_at_location(rect.x,\ rect.y + rect.height) conversation_textview.scroll_to_iter(iter, 0.1, True, 0, 0) - elif event.keyval == gtk.keysyms.Page_Up: # PAGE UP - if event.state & gtk.gdk.CONTROL_MASK: + elif event.keyval == gtk.keysyms.Page_Up: + if event.state & gtk.gdk.CONTROL_MASK: # CTRL + PAGE UP current = self.notebook.get_current_page() if current < (self.notebook.get_n_pages()-1): self.notebook.set_current_page(current+1) - elif event.state & gtk.gdk.SHIFT_MASK: + elif event.state & gtk.gdk.SHIFT_MASK: # SHIFT + PAGE UP conversation_textview = self.xmls[jid].\ get_widget('conversation_textview') rect = conversation_textview.get_visible_rect() iter = conversation_textview.get_iter_at_location(rect.x, rect.y) conversation_textview.scroll_to_iter(iter, 0.1, True, 0, 1) - elif event.keyval == gtk.keysyms.Tab and \ - (event.state & gtk.gdk.CONTROL_MASK): # CTRL + TAB - current = self.notebook.get_current_page() - if current < (self.notebook.get_n_pages()-1): - self.notebook.set_current_page(current+1) - else: - self.notebook.set_current_page(0) + # or event.keyval == gtk.keysyms.KP_Up + elif event.keyval == gtk.keysyms.Up: + if event.state & gtk.gdk.SHIFT_MASK: # SHIFT + UP + print 'be' # FIXME: find a way to to keyUP in scrolledwindow + conversation_scrolledwindow = self.xml.get_widget\ + ('conversation_scrolledwindow') + conversation_scrolledwindow.emit('scroll-child', \ + gtk.SCROLL_PAGE_BACKWARD, False) + elif event.hardware_keycode == 23: # TAB + if (event.state & gtk.gdk.CONTROL_MASK) and \ + (event.state & gtk.gdk.SHIFT_MASK): # CTRL + SHIFT + TAB + current = self.notebook.get_current_page() + if current > 0: + self.notebook.set_current_page(current-1) + else: + self.notebook.set_current_page(self.notebook.get_n_pages()-1) + elif event.state & gtk.gdk.CONTROL_MASK: # CTRL + TAB + current = self.notebook.get_current_page() + if current < (self.notebook.get_n_pages()-1): + self.notebook.set_current_page(current+1) + else: + self.notebook.set_current_page(0) elif (event.state & gtk.gdk.CONTROL_MASK) or (event.keyval ==\ gtk.keysyms.Control_L) or (event.keyval == gtk.keysyms.Control_R): - # we pressed a control key or ctrl+sth : we don't block the event - # in order to let ctrl+c do its work + # we pressed a control key or ctrl+sth: we don't block the event + # in order to let ctrl+c (copy text) and others do their default work pass else: # it's a normal key press make sure message_textview has focus message_textview = self.xmls[jid].get_widget('message_textview') @@ -375,7 +397,10 @@ class Chat: iter = widget.get_iter_at_location(x, y) tags = iter.get_tags() if tags: - return True + for tag in tags: + tag_name = tag.get_property('name') + if 'url' in tag_name or 'mail' in tag_name: + return True def print_time_timeout(self, jid): if not jid in self.xmls.keys(): @@ -438,7 +463,7 @@ class Chat: while not end_iter.ends_tag(texttag): end_iter.forward_char() word = begin_iter.get_text(end_iter) - if event.button == 3: + if event.button == 3: # right click self.make_link_menu(event, kind, word) else: #we launch the correct application @@ -548,14 +573,26 @@ class Chat: self.print_with_tag_list(conversation_buffer, special_text, end_iter, \ all_tags) + def scroll_to_end(self, textview): + buffer = textview.get_buffer() + textview.scroll_to_mark(buffer.get_mark('end'), 0, True, 0, 1) + return False + def print_conversation_line(self, text, jid, kind, name, tim, \ other_tags_for_name = []): conversation_textview = self.xmls[jid].get_widget('conversation_textview') conversation_buffer = conversation_textview.get_buffer() print_all_special = False + at_the_end = False + end_iter = conversation_buffer.get_end_iter() + end_rect = conversation_textview.get_iter_location(end_iter) + visible_rect = conversation_textview.get_visible_rect() + if end_rect.y <= (visible_rect.y + visible_rect.height): + at_the_end = True if not text: text = '' - end_iter = conversation_buffer.get_end_iter() + if conversation_buffer.get_char_count() > 0: + conversation_buffer.insert(end_iter, '\n') if self.plugin.config['print_time'] == 'always': if not tim: tim = time.localtime() @@ -583,7 +620,6 @@ class Chat: + self.after_nickname_symbols + ' ' self.print_with_tag_list(conversation_buffer, format, end_iter, tags) - text += '\n' # detect urls formatting and if the user has it on emoticons index = self.detect_and_print_special_text(text, jid, \ tags, print_all_special) @@ -597,16 +633,12 @@ class Chat: conversation_buffer.insert(end_iter, text[index:]) #scroll to the end of the textview - end_iter = conversation_buffer.get_end_iter() - end_rect = conversation_textview.get_iter_location(end_iter) - visible_rect = conversation_textview.get_visible_rect() end = False - if end_rect.y <= (visible_rect.y + visible_rect.height) or \ - (kind == 'outgoing'): + if at_the_end or (kind == 'outgoing'): #we are at the end or we are sending something end = True - conversation_textview.scroll_to_mark(conversation_buffer.\ - get_mark('end'), 0.1, 0, 0, 0) + # We scroll to the end after the scrollbar has appeared + gobject.timeout_add(50, self.scroll_to_end, conversation_textview) if ((jid != self.get_active_jid()) or (not self.window.is_active()) or \ (not end)) and kind == 'incoming': self.nb_unread[jid] += 1 diff --git a/plugins/gtkgui/config.py b/plugins/gtkgui/config.py index 6c7ff6dabd24b235251fe3168a3d8bbe950b4657..47e7db9f56c936241a8e81f7f5e737426e7ff701 100644 --- a/plugins/gtkgui/config.py +++ b/plugins/gtkgui/config.py @@ -42,11 +42,18 @@ class Preferences_window: return True # do NOT destroy the window def on_close_button_clicked(self, widget): - self.window.hide() + self.window.hide() def on_preferences_window_show(self, widget): self.notebook.set_current_page(0) - + if os.name == 'nt': # if windows, player must not be visible + self.xml.get_widget('soundplayer_hbox').set_property('visible', False) + self.trayicon_checkbutton.set_property('visible', False) + + def on_preferences_window_key_press_event(self, widget, event): + if event.keyval == gtk.keysyms.Escape: # ESCAPE + self.window.hide() + def on_checkbutton_toggled(self, widget, config_name, \ change_sensitivity_widgets = None): if widget.get_active(): @@ -56,8 +63,9 @@ class Preferences_window: if change_sensitivity_widgets != None: for w in change_sensitivity_widgets: w.set_sensitive(widget.get_active()) + self.plugin.save_config() - def on_tray_icon_checkbutton_toggled(self, widget): + def on_trayicon_checkbutton_toggled(self, widget): if widget.get_active(): self.plugin.config['trayicon'] = 1 self.plugin.show_systray() @@ -67,12 +75,14 @@ class Preferences_window: self.plugin.hide_systray() self.plugin.send('CONFIG', None, ('GtkGui', self.plugin.config, 'GtkGui')) self.plugin.roster.draw_roster() + self.plugin.save_config() def on_save_position_checkbutton_toggled(self, widget): if widget.get_active(): self.plugin.config['saveposition'] = 1 else: self.plugin.config['saveposition'] = 0 + self.plugin.save_config() def on_merge_checkbutton_toggled(self, widget): if widget.get_active(): @@ -81,6 +91,7 @@ class Preferences_window: self.plugin.config['mergeaccounts'] = 0 self.plugin.roster.regroup = self.plugin.config['mergeaccounts'] self.plugin.roster.draw_roster() + self.plugin.save_config() def on_iconset_combobox_changed(self, widget): model = widget.get_model() @@ -88,6 +99,7 @@ class Preferences_window: icon_string = model[active][0] self.plugin.config['iconset'] = icon_string self.plugin.roster.reload_pixbufs() + self.plugin.save_config() def on_account_text_colorbutton_color_set(self, widget): """Take The Color For The Account Text""" @@ -96,6 +108,7 @@ class Preferences_window: (hex(color.green) + '0')[2:4] + (hex(color.blue) + '0')[2:4] self.plugin.config['accounttextcolor'] = color_string self.plugin.roster.draw_roster() + self.plugin.save_config() def on_group_text_colorbutton_color_set(self, widget): """Take The Color For The Group Text""" @@ -104,6 +117,7 @@ class Preferences_window: (hex(color.green) + '0')[2:4] + (hex(color.blue) + '0')[2:4] self.plugin.config['grouptextcolor'] = color_string self.plugin.roster.draw_roster() + self.plugin.save_config() def on_user_text_colorbutton_color_set(self, widget): """Take The Color For The User Text""" @@ -112,6 +126,7 @@ class Preferences_window: (hex(color.green) + '0')[2:4] + (hex(color.blue) + '0')[2:4] self.plugin.config['usertextcolor'] = color_string self.plugin.roster.draw_roster() + self.plugin.save_config() def on_account_text_bg_colorbutton_color_set(self, widget): """Take The Color For The Background Of Account Text""" @@ -120,6 +135,7 @@ class Preferences_window: (hex(color.green) + '0')[2:4] + (hex(color.blue) + '0')[2:4] self.plugin.config['accountbgcolor'] = color_string self.plugin.roster.draw_roster() + self.plugin.save_config() def on_group_text_bg_colorbutton_color_set(self, widget): """Take The Color For The Background Of Group Text""" @@ -128,6 +144,7 @@ class Preferences_window: (hex(color.green) + '0')[2:4] + (hex(color.blue) + '0')[2:4] self.plugin.config['groupbgcolor'] = color_string self.plugin.roster.draw_roster() + self.plugin.save_config() def on_user_text_bg_colorbutton_color_set(self, widget): """Take The Color For The Background Of User Text""" @@ -136,24 +153,28 @@ class Preferences_window: (hex(color.green) + '0')[2:4] + (hex(color.blue) + '0')[2:4] self.plugin.config['userbgcolor'] = color_string self.plugin.roster.draw_roster() + self.plugin.save_config() def on_account_text_fontbutton_font_set(self, widget): """Take The Font For The User Text""" font_string = widget.get_font_name() self.plugin.config['accountfont'] = font_string self.plugin.roster.draw_roster() + self.plugin.save_config() def on_group_text_fontbutton_font_set(self, widget): """Take The Font For The Group Text""" font_string = widget.get_font_name() self.plugin.config['groupfont'] = font_string self.plugin.roster.draw_roster() + self.plugin.save_config() def on_user_text_fontbutton_font_set(self, widget): """Take The Font For The User Text""" font_string = widget.get_font_name() self.plugin.config['userfont'] = font_string self.plugin.roster.draw_roster() + self.plugin.save_config() def on_reset_colors_and_fonts_button_clicked(self, widget): defaults = self.plugin.default_config @@ -185,6 +206,7 @@ class Preferences_window: self.xml.get_widget('user_text_fontbutton').set_font_name(\ defaults['userfont']) self.plugin.roster.draw_roster() + self.plugin.save_config() def on_use_tabbed_chat_window_checkbutton_toggled(self, widget): buf1 = {} @@ -239,6 +261,7 @@ class Preferences_window: # buf1[acct][jid]) # self.plugin.windows[acct]['chats'][jid].xmls[jid].\ # get_widget('message_textview').set_buffer(buf2[acct][jid]) + self.plugin.save_config() def update_print_time(self): """Update time in Opened Chat Windows""" @@ -253,28 +276,35 @@ class Preferences_window: if widget.get_active(): self.plugin.config['print_time'] = 'never' self.update_print_time() + self.plugin.save_config() def on_time_sometimes_radiobutton_toggled(self, widget): if widget.get_active(): self.plugin.config['print_time'] = 'sometimes' self.update_print_time() + self.plugin.save_config() def on_time_always_radiobutton_toggled(self, widget): if widget.get_active(): self.plugin.config['print_time'] = 'always' self.update_print_time() + self.plugin.save_config() def on_before_time_entry_focus_out_event(self, widget, event): self.plugin.config['before_time'] = widget.get_text() + self.plugin.save_config() def on_after_time_entry_focus_out_event(self, widget, event): self.plugin.config['after_time'] = widget.get_text() + self.plugin.save_config() def on_before_nickname_entry_focus_out_event(self, widget, event): self.plugin.config['before_nickname'] = widget.get_text() + self.plugin.save_config() def on_after_nickname_entry_focus_out_event(self, widget, event): self.plugin.config['after_nickname'] = widget.get_text() + self.plugin.save_config() def update_text_tags(self): """Update color tags in Opened Chat Windows""" @@ -292,6 +322,7 @@ class Preferences_window: (hex(color.green) + '0')[2:4] + (hex(color.blue) + '0')[2:4] self.plugin.config['inmsgcolor'] = color_string self.update_text_tags() + self.plugin.save_config() def on_outgoing_msg_colorbutton_color_set(self, widget): """Take The Color For The Outgoing Messages""" @@ -300,6 +331,7 @@ class Preferences_window: (hex(color.green) + '0')[2:4] + (hex(color.blue) + '0')[2:4] self.plugin.config['outmsgcolor'] = color_string self.update_text_tags() + self.plugin.save_config() def on_status_msg_colorbutton_color_set(self, widget): """Take The Color For The Status Messages""" @@ -308,6 +340,7 @@ class Preferences_window: (hex(color.green) + '0')[2:4] + (hex(color.blue) + '0')[2:4] self.plugin.config['statusmsgcolor'] = color_string self.update_text_tags() + self.plugin.save_config() def on_reset_colors_button_clicked(self, widget): defaults = self.plugin.default_config @@ -321,6 +354,7 @@ class Preferences_window: self.xml.get_widget('status_msg_colorbutton').set_color(\ gtk.gdk.color_parse(defaults['statusmsgcolor'])) self.update_text_tags() + self.plugin.save_config() def on_use_emoticons_checkbutton_toggled(self, widget): self.on_checkbutton_toggled(widget, 'useemoticons', \ @@ -345,13 +379,13 @@ class Preferences_window: def on_play_sounds_checkbutton_toggled(self, widget): self.on_checkbutton_toggled(widget, 'sounds_on',\ - [self.xml.get_widget('sound_player_hbox'),\ + [self.xml.get_widget('soundplayer_hbox'),\ self.xml.get_widget('sounds_scrolledwindow'),\ self.xml.get_widget('browse_sounds_hbox')]) - def on_soundplayer_entry_changed(self, widget): self.plugin.config['soundplayer'] = widget.get_text() + self.plugin.save_config() def on_prompt_online_status_message_checkbutton_toggled(self, widget): self.on_checkbutton_toggled(widget, 'ask_online_status') @@ -371,6 +405,7 @@ class Preferences_window: self.plugin.config['sound_' + sound_event + '_file'] = \ model.get_value(iter, 2) iter = model.iter_next(iter) + self.plugin.save_config() def on_auto_away_checkbutton_toggled(self, widget): self.on_checkbutton_toggled(widget, 'autoaway', \ @@ -382,6 +417,7 @@ class Preferences_window: self.plugin.sleeper = common.sleepy.Sleepy(\ self.plugin.config['autoawaytime']*60, \ self.plugin.config['autoxatime']*60) + self.plugin.save_config() def on_auto_xa_checkbutton_toggled(self, widget): self.on_checkbutton_toggled(widget, 'autoxa', \ @@ -393,6 +429,7 @@ class Preferences_window: self.plugin.sleeper = common.sleepy.Sleepy(\ self.plugin.config['autoawaytime']*60, \ self.plugin.config['autoxatime']*60) + self.plugin.save_config() def on_msg_treemodel_row_changed(self, model, path, iter): iter = model.get_iter_first() @@ -406,6 +443,7 @@ class Preferences_window: del self.plugin.config['msg%i_name' % i] del self.plugin.config['msg%i' % i] i += 1 + self.plugin.save_config() def on_msg_treemodel_row_deleted(self, model, path, iter): iter = model.get_iter_first() @@ -419,6 +457,7 @@ class Preferences_window: del self.plugin.config['msg%i_name' % i] del self.plugin.config['msg%i' % i] i += 1 + self.plugin.save_config() def on_links_open_with_combobox_changed(self, widget): if widget.get_active() == 2: @@ -430,12 +469,15 @@ class Preferences_window: if widget.get_active() == 1: self.plugin.config['openwith'] = 'kfmclient exec' self.xml.get_widget('custom_apps_frame').set_sensitive(False) + self.plugin.save_config() def on_custom_browser_entry_changed(self, widget): self.plugin.config['custombrowser'] = widget.get_text() + self.plugin.save_config() def on_custom_mail_client_entry_changed(self, widget): self.plugin.config['custommailapp'] = widget.get_text() + self.plugin.save_config() def on_log_in_contact_checkbutton_toggled(self, widget): if widget.get_active(): @@ -443,6 +485,7 @@ class Preferences_window: else: self.config_logger['lognotusr'] = 0 self.plugin.send('CONFIG', None, ('Logger', self.config_logger, 'GtkGui')) + self.plugin.save_config() def on_log_in_extern_checkbutton_toggled(self, widget): if widget.get_active(): @@ -450,6 +493,7 @@ class Preferences_window: else: self.config_logger['lognotsep'] = 0 self.plugin.send('CONFIG', None, ('Logger', self.config_logger, 'GtkGui')) + self.plugin.save_config() def on_do_not_send_os_info_checkbutton_toggled(self, widget): if widget.get_active(): @@ -457,6 +501,7 @@ class Preferences_window: self.plugin.config['do_not_send_os_info'] = 1 else: self.plugin.config['do_not_send_os_info'] = 0 + self.plugin.save_config() def fill_msg_treeview(self): @@ -590,15 +635,15 @@ class Preferences_window: self.auto_xa_checkbutton = self.xml.get_widget('auto_xa_checkbutton') self.auto_xa_time_spinbutton = self.xml.get_widget \ ('auto_xa_time_spinbutton') - self.tray_icon_checkbutton = self.xml.get_widget('tray_icon_checkbutton') + self.trayicon_checkbutton = self.xml.get_widget('trayicon_checkbutton') self.notebook = self.xml.get_widget('preferences_notebook') #trayicon if self.plugin.systray_capabilities: st = self.plugin.config['trayicon'] - self.tray_icon_checkbutton.set_active(st) + self.trayicon_checkbutton.set_active(st) else: - self.tray_icon_checkbutton.set_sensitive(False) + self.trayicon_checkbutton.set_sensitive(False) #Save position st = self.plugin.config['saveposition'] @@ -726,17 +771,19 @@ class Preferences_window: self.xml.get_widget('ignore_events_from_unknown_contacts_checkbutton').\ set_active(self.plugin.config['ignore_unknown_contacts']) - if not self.plugin.config['sounds_on']: - self.xml.get_widget('sound_player_hbox').set_sensitive(False) + #sounds + if self.plugin.config['sounds_on']: + self.xml.get_widget('play_sounds_checkbutton').set_active(True) + else: + self.xml.get_widget('soundplayer_hbox').set_sensitive(False) self.xml.get_widget('sounds_scrolledwindow').set_sensitive(False) self.xml.get_widget('browse_sounds_hbox').set_sensitive(False) - #FIXME: - + #sound player self.xml.get_widget('soundplayer_entry').set_text(\ self.plugin.config['soundplayer']) - #sounds + #sounds treeview self.sound_tree = self.xml.get_widget('sounds_treeview') model = gtk.ListStore(gobject.TYPE_STRING, gobject.TYPE_BOOLEAN, \ gobject.TYPE_STRING) @@ -762,12 +809,6 @@ class Preferences_window: col.pack_start(renderer) col.set_attributes(renderer, text=2) self.fill_sound_treeview() - - if not os.name == 'posix': - self.xml.get_widget('soundplayer_entry').set_sensitive(False) - self.sound_tree.set_sensitive(False) - self.xml.get_widget('sounds_entry').set_sensitive(False) - self.xml.get_widget('sounds_button').set_sensitive(False) #Autoaway st = self.plugin.config['autoaway'] @@ -857,13 +898,18 @@ class Account_modification_window: def on_close_button_clicked(self, widget): """When Close button is clicked""" - widget.get_toplevel().destroy() + self.window.destroy() def on_checkbutton_toggled(self, widget, widgets): """set or unset sensitivity of widgets when widget is toggled""" for w in widgets: w.set_sensitive(widget.get_active()) + def on_use_proxy_checkbutton_toggled(self, widget): + proxyhost_entry = self.xml.get_widget('proxyhost_entry') + proxyport_entry = self.xml.get_widget('proxyport_entry') + self.on_checkbutton_toggled(widget, [proxyhost_entry, proxyport_entry]) + def init_account(self, infos): """Initialize window with defaults values""" if infos.has_key('accname'): @@ -882,14 +928,25 @@ class Account_modification_window: self.xml.get_widget('resource_entry').set_text(infos['resource']) if infos.has_key('priority'): self.xml.get_widget('priority_spinbutton').set_value(infos['priority']) + + use_proxy = False if infos.has_key('use_proxy'): + if infos['use_proxy'] != 0: + use_proxy = True self.xml.get_widget('use_proxy_checkbutton').\ set_active(infos['use_proxy']) + + self.xml.get_widget('proxyhost_entry').set_sensitive(use_proxy) + self.xml.get_widget('proxyport_entry').set_sensitive(use_proxy) + if infos.has_key('proxyhost'): self.xml.get_widget('proxyhost_entry').set_text(infos['proxyhost']) + if infos.has_key('proxyport'): self.xml.get_widget('proxyport_entry').set_text(str(\ infos['proxyport'])) + + gpg_key_label = self.xml.get_widget('gpg_key_label') if not self.plugin.config.has_key('usegpg'): gpg_key_label.set_text('GPG is not usable on this computer') @@ -921,7 +978,7 @@ class Account_modification_window: self.xml.get_widget('log_history_checkbutton').set_active(0) def on_save_button_clicked(self, widget): - """When save button is clicked : Save informations in config file""" + """When save button is clicked: Save information in config file""" save_password = 0 if self.xml.get_widget('save_password_checkbutton').get_active(): save_password = 1 @@ -977,8 +1034,12 @@ class Account_modification_window: except ValueError: Error_dialog(_('Proxy Port must be a port number')) return + else: + Error_dialog(_('You must enter a proxy port to use proxy')) + return if proxyhost == '': Error_dialog(_('You must enter a proxy host to use proxy')) + return (login, hostname) = jid.split('@') key_name = self.xml.get_widget('gpg_name_label').get_text() @@ -1045,7 +1106,7 @@ class Account_modification_window: self.plugin.windows['accounts'].init_accounts() #refresh roster self.plugin.roster.draw_roster() - widget.get_toplevel().destroy() + self.window.destroy() return #if it's a new account if name in self.plugin.accounts.keys(): @@ -1082,7 +1143,7 @@ class Account_modification_window: self.plugin.windows['accounts'].init_accounts() #refresh roster self.plugin.roster.draw_roster() - widget.get_toplevel().destroy() + self.window.destroy() def on_change_password_button_clicked(self, widget): dialog = Change_password_dialog(self.plugin, self.account) @@ -1213,6 +1274,7 @@ class Account_modification_window: self.xml.get_widget('gpg_password_entry').set_sensitive(False) self.xml.get_widget('password_entry').set_sensitive(False) self.xml.get_widget('log_history_checkbutton').set_active(1) + #default is checked self.xml.get_widget('sync_with_global_status_checkbutton').set_active(1) self.xml.signal_autoconnect(self) @@ -1230,7 +1292,7 @@ class Accounts_window: del self.plugin.windows['accounts'] def on_close_button_clicked(self, widget): - widget.get_toplevel().destroy() + self.window.destroy() def init_accounts(self): """initialize listStore with existing accounts""" @@ -1325,7 +1387,7 @@ class Service_registration_window: Window that appears when we want to subscribe to a service""" def on_cancel_button_clicked(self, widget): """When Cancel button is clicked""" - widget.get_toplevel().destroy() + self.window.destroy() def draw_table(self): """Draw the table in the window""" @@ -1355,7 +1417,7 @@ class Service_registration_window: self.plugin.roster.contacts[self.account][self.service] = [user1] self.plugin.roster.add_user_to_roster(self.service, self.account) self.plugin.send('REG_AGENT', self.account, self.service) - widget.get_toplevel().destroy() + self.window.destroy() def __init__(self, service, infos, plugin, account): self.xml = gtk.glade.XML(GTKGUI_GLADE, 'service_registration_window', APP) @@ -1421,6 +1483,7 @@ class Add_remove_emoticons_window: iter = model.iter_next(iter) self.plugin.config['emoticons'] = '\t'.join(emots) self.plugin.init_regexp() + self.plugin.save_config() def on_emoticons_treemodel_row_changed(self, model, path, iter): if model[path][1] != None and len(model[path][1]) != 0: @@ -1431,7 +1494,8 @@ class Add_remove_emoticons_window: emots.append(model.get_value(iter, 1)) iter = model.iter_next(iter) self.plugin.config['emoticons'] = '\t'.join(emots) - self.plugin.init_regexp() + self.plugin.init_regexp() + self.plugin.save_config() def image_is_ok(self, image): if not os.path.exists(image): @@ -1563,7 +1627,7 @@ class Service_discovery_window: def on_close_button_clicked(self, widget): """When Close button is clicked""" - widget.get_toplevel().destroy() + self.window.destroy() def browse(self, jid): """Send a request to the core to know the available services""" @@ -1733,7 +1797,7 @@ class Service_discovery_window: return service = model.get_value(iter, 1) self.plugin.send('REG_AGENT_INFO', self.account, service) - widget.get_toplevel().destroy() + self.window.destroy() def on_services_treeview_cursor_changed(self, widget): """When we select a row : @@ -1765,6 +1829,7 @@ class Service_discovery_window: ' '.join(self.latest_addresses) self.services_treeview.get_model().clear() self.browse(server_address) + self.plugin.save_config() def __init__(self, plugin, account): if plugin.connected[account] < 2: diff --git a/plugins/gtkgui/dialogs.py b/plugins/gtkgui/dialogs.py index 6d89c35b19dbbfe568be5d3ebc26bb8caa561182..8dfd11b7202aea83c7f0eeebbe31a8334893e222 100644 --- a/plugins/gtkgui/dialogs.py +++ b/plugins/gtkgui/dialogs.py @@ -31,7 +31,7 @@ import version GTKGUI_GLADE='plugins/gtkgui/gtkgui.glade' -class vcard_information_window: +class Vcard_information_window: """Class for user's information window""" def on_user_information_window_destroy(self, widget=None): """close window""" @@ -39,12 +39,12 @@ class vcard_information_window: def on_vcard_information_window_key_press_event(self, widget, event): if event.keyval == gtk.keysyms.Escape: # ESCAPE - widget.destroy() + self.window.destroy() def on_close_button_clicked(self, widget): """Save user's informations and update the roster on the Jabber server""" if self.vcard: - widget.get_toplevel().destroy() + self.window.destroy() return #update user.name if it's not "" name_entry = self.xml.get_widget('nickname_entry') @@ -73,7 +73,7 @@ class vcard_information_window: self.plugin.accounts[self.account] = account_info self.plugin.send('CONFIG', None, ('accounts', self.plugin.accounts, \ 'Gtkgui')) - widget.get_toplevel().destroy() + self.window.destroy() def set_value(self, entry_name, value): try: @@ -115,13 +115,13 @@ class vcard_information_window: resources = self.user.resource + ' (' + str(self.user.priority) + ')' if not self.user.status: self.user.status = '' - stats = self.user.show + ' : ' + self.user.status + stats = self.user.show + ': ' + self.user.status for u in self.plugin.roster.contacts[self.account][self.user.jid]: if u.resource != self.user.resource: resources += '\n' + u.resource + ' (' + str(u.priority) + ')' if not u.status: u.status = '' - stats += '\n' + u.show + ' : ' + u.status + stats += '\n' + u.show + ': ' + u.status self.xml.get_widget('resource_label').set_text(resources) self.xml.get_widget('status_label').set_text(stats) self.plugin.send('ASK_VCARD', self.account, self.user.jid) @@ -490,7 +490,7 @@ class Add_new_contact_window: def on_cancel_button_clicked(self, widget): """When Cancel button is clicked""" - widget.get_toplevel().destroy() + self.window.destroy() def on_subscribe_button_clicked(self, widget): """When Subscribe button is clicked""" @@ -510,7 +510,7 @@ class Add_new_contact_window: nickname) if self.xml.get_widget('auto_authorize_checkbutton').get_active(): self.plugin.send('AUTH', self.account, jid) - widget.get_toplevel().destroy() + self.window.destroy() def fill_jid(self): protocol_combobox = self.xml.get_widget('protocol_combobox') @@ -633,6 +633,7 @@ class Error_dialog: class subscription_request_window: def __init__(self, plugin, jid, text, account): xml = gtk.glade.XML(GTKGUI_GLADE, 'subscription_request_window', APP) + self.window = xml.get_widget('subscription_request_window') self.plugin = plugin self.jid = jid self.account = account @@ -646,19 +647,19 @@ class subscription_request_window: window that appears when a user wants to add us to his/her roster""" def on_close_button_clicked(self, widget): """When Close button is clicked""" - widget.get_toplevel().destroy() + self.window.destroy() def on_authorize_button_clicked(self, widget): """Accept the request""" self.plugin.send('AUTH', self.account, self.jid) - widget.get_toplevel().destroy() + self.window.destroy() if not self.plugin.roster.contacts[self.account].has_key(self.jid): Add_new_contact_window(self.plugin, self.account, self.jid) def on_deny_button_clicked(self, widget): """refuse the request""" self.plugin.send('DENY', self.account, self.jid) - widget.get_toplevel().destroy() + self.window.destroy() class Join_groupchat_window: def __init__(self, plugin, account, server='', room = ''): @@ -705,7 +706,7 @@ class Join_groupchat_window: def on_cancel_button_clicked(self, widget): """When Cancel button is clicked""" - widget.get_toplevel().destroy() + self.window.destroy() def on_join_button_clicked(self, widget): """When Join button is clicked""" @@ -725,7 +726,7 @@ class Join_groupchat_window: self.plugin.send('GC_JOIN', self.account, (nickname, room, server, \ password)) - widget.get_toplevel().destroy() + self.window.destroy() class New_message_dialog: def __init__(self, plugin, account): @@ -755,7 +756,7 @@ class New_message_dialog: def on_cancel_button_clicked(self, widget): """When Cancel button is clicked""" - widget.get_toplevel().destroy() + self.window.destroy() def on_chat_button_clicked(self, widget): """When Chat button is clicked""" @@ -763,6 +764,7 @@ class New_message_dialog: if jid.find('@') == -1: # if no @ was given Error_dialog(_('User ID is not valid')) return + self.window.destroy() # use User class, new_chat expects it that way # is it in the roster? if self.plugin.roster.contacts[self.account].has_key(jid): @@ -778,8 +780,6 @@ class New_message_dialog: self.plugin.windows[self.account]['chats'][jid].active_tab(jid) self.plugin.windows[self.account]['chats'][jid].window.present() #FIXME: PROBLEM WITH FOCUS - - widget.get_toplevel().destroy() class Change_password_dialog: def __init__(self, plugin, account): @@ -817,8 +817,10 @@ class Change_password_dialog: return message class Popup_window: - def __init__(self, plugin, event_type, event_desc): + def __init__(self, plugin, event_type, jid, account): self.plugin = plugin + self.account = account + self.jid = jid xml = gtk.glade.XML(GTKGUI_GLADE, 'popup_window', APP) self.window = xml.get_widget('popup_window') @@ -828,7 +830,13 @@ class Popup_window: eventbox = xml.get_widget('eventbox') event_type_label.set_markup('<b>'+event_type+'</b>') - event_description_label.set_text(event_desc) + + if self.jid in self.plugin.roster.contacts[account]: + txt = self.plugin.roster.contacts[account][self.jid][0].name + else: + txt = self.jid + + event_description_label.set_text(txt) # set colors [ http://www.w3schools.com/html/html_colornames.asp ] self.window.modify_bg(gtk.STATE_NORMAL, gtk.gdk.color_parse('black')) @@ -841,28 +849,27 @@ class Popup_window: elif event_type == 'New Message': close_button.modify_bg(gtk.STATE_NORMAL, gtk.gdk.color_parse('dodgerblue')) eventbox.modify_bg(gtk.STATE_NORMAL, gtk.gdk.color_parse('dodgerblue')) + txt = 'From ' + txt # position the window to bottom-right of screen - window_width, window_height = self.window.get_size() - self.plugin.roster.popups_height += window_height + window_width, self.window_height = self.window.get_size() + self.plugin.roster.popups_height += self.window_height self.window.move(gtk.gdk.screen_width() - window_width, \ gtk.gdk.screen_height() - self.plugin.roster.popups_height) xml.signal_autoconnect(self) - close_button.connect('clicked', self.on_close_button_clicked, window_height) self.window.show_all() + gobject.timeout_add(5000, self.on_timeout) - gobject.timeout_add(5000, self.on_timeout, window_height) - - def on_close_button_clicked(self, widget, window_height): - self.adjust_height_and_move_popup_windows(window_height) + def on_close_button_clicked(self, widget): + self.adjust_height_and_move_popup_windows() - def on_timeout(self, window_height): - self.adjust_height_and_move_popup_windows(window_height) + def on_timeout(self): + self.adjust_height_and_move_popup_windows() - def adjust_height_and_move_popup_windows(self, window_height): + def adjust_height_and_move_popup_windows(self): #remove - self.plugin.roster.popups_height -= window_height + self.plugin.roster.popups_height -= self.window_height self.window.destroy() if len(self.plugin.roster.popup_windows) > 0: @@ -878,4 +885,17 @@ class Popup_window: gtk.gdk.screen_height() - self.plugin.roster.popups_height) def on_popup_window_button_press_event(self, widget, event): - print 'IN YOUR DREAMS ONLY..' + # use User class, new_chat expects it that way + # is it in the roster? + if self.plugin.roster.contacts[self.account].has_key(self.jid): + user = self.plugin.roster.contacts[self.account][self.jid][0] + else: + user = gtkgui.User(self.jid, self.jid, ['not in the roster'], \ + 'not in the roster', 'not in the roster', 'none', None, '', 0, '') + self.plugin.roster.contacts[self.account][self.jid] = [user] + self.plugin.roster.add_user_to_roster(user.self.jid, self.account) + + self.plugin.roster.new_chat(user, self.account) + self.plugin.windows[self.account]['chats'][self.jid].active_tab(self.jid) + self.plugin.windows[self.account]['chats'][self.jid].window.present() + self.adjust_height_and_move_popup_windows() diff --git a/plugins/gtkgui/groupchat_window.py b/plugins/gtkgui/groupchat_window.py index 5848d7c523dff616c00615535ce266c1c60c6855..61a43b4ab0d0e6afc87895ddb1181e130f2b1286 100644 --- a/plugins/gtkgui/groupchat_window.py +++ b/plugins/gtkgui/groupchat_window.py @@ -45,6 +45,7 @@ class Groupchat_window(Chat): self.subjects = {} self.new_group(room_jid, nick) self.show_title() + print "self.xml.get_widget('message_textview') is", self.xml.get_widget('message_textview'), "!!" self.xml.signal_connect('on_groupchat_window_destroy', \ self.on_groupchat_window_destroy) self.xml.signal_connect('on_groupchat_window_delete_event', \ @@ -240,9 +241,12 @@ class Groupchat_window(Chat): and printed in the conversation. Tab does autocompete in nickames""" jid = self.get_active_jid() conversation_textview = self.xmls[jid].get_widget('conversation_textview') - if event.keyval == gtk.keysyms.Tab and \ - (event.state & gtk.gdk.CONTROL_MASK): # CTRL + TAB - self.notebook.emit('key_press_event', event) + if event.hardware_keycode == 23: # TAB + if (event.state & gtk.gdk.CONTROL_MASK) and \ + (event.state & gtk.gdk.SHIFT_MASK): # CTRL + SHIFT + TAB + self.notebook.emit('key_press_event', event) + elif event.state & gtk.gdk.CONTROL_MASK: # CTRL + TAB + self.notebook.emit('key_press_event', event) elif event.keyval == gtk.keysyms.Page_Down: # PAGE DOWN if event.state & gtk.gdk.CONTROL_MASK: # CTRL + PAGE DOWN self.notebook.emit('key_press_event', event) @@ -256,7 +260,7 @@ class Groupchat_window(Chat): elif event.keyval == gtk.keysyms.Return or \ event.keyval == gtk.keysyms.KP_Enter: # ENTER if (event.state & gtk.gdk.SHIFT_MASK): - return 0 + return False message_buffer = widget.get_buffer() start_iter = message_buffer.get_start_iter() end_iter = message_buffer.get_end_iter() @@ -266,7 +270,7 @@ class Groupchat_window(Chat): self.plugin.send('GC_MSG', self.account, (room_jid, txt)) message_buffer.set_text('', -1) widget.grab_focus() - return 1 + return True elif event.keyval == gtk.keysyms.Tab: # TAB room_jid = self.get_active_jid() list_nick = self.get_nick_list(room_jid) @@ -276,18 +280,18 @@ class Groupchat_window(Chat): end_iter = message_buffer.get_iter_at_mark(cursor_position) text = message_buffer.get_text(start_iter, end_iter, 0) if not text: - return 0 - splited_text = text.split() - begin = splited_text[-1] + return False + splitted_text = text.split() + begin = splitted_text[-1] # begining of the latest word we typed for nick in list_nick: - if nick.find(begin) == 0: - if len(splited_text) == 1: + if nick.find(begin) == 0: # the word is the begining of a nick + if len(splitted_text) == 1: # This is the 1st word of the line ? add = ': ' else: add = ' ' message_buffer.insert_at_cursor(nick[len(begin):] + add) - return 1 - return 0 + return True + return False def print_conversation(self, text, room_jid, contact = '', tim = None): """Print a line in the conversation : @@ -371,8 +375,10 @@ class Groupchat_window(Chat): """Call vcard_information_window class to display user's information""" if not self.plugin.windows[self.account]['infos'].has_key(jid): self.plugin.windows[self.account]['infos'][jid] = \ - vcard_information_window(jid, self.plugin, self.account, True) + Vcard_information_window(jid, self.plugin, self.account, True) self.plugin.send('ASK_VCARD', self.account, jid) + #FIXME: maybe use roster.on_info above? + #FIXME: we need the resource but it's not saved #self.plugin.send('ASK_OS_INFO', self.account, jid, resource) diff --git a/plugins/gtkgui/gtkgui.glade b/plugins/gtkgui/gtkgui.glade index 9dcb7bf781ee68f67f5a139f9c30c9055732ff21..e23d5e39c50eecac64b43617a92fd3ed0970d792 100644 --- a/plugins/gtkgui/gtkgui.glade +++ b/plugins/gtkgui/gtkgui.glade @@ -19,6 +19,7 @@ <property name="skip_pager_hint">False</property> <property name="type_hint">GDK_WINDOW_TYPE_HINT_NORMAL</property> <property name="gravity">GDK_GRAVITY_NORTH_WEST</property> + <property name="focus_on_map">True</property> <signal name="delete_event" handler="on_roster_window_delete_event" last_modification_time="Mon, 21 Mar 2005 12:34:59 GMT"/> <child> @@ -284,6 +285,9 @@ <property name="rules_hint">False</property> <property name="reorderable">True</property> <property name="enable_search">True</property> + <property name="fixed_height_mode">False</property> + <property name="hover_selection">False</property> + <property name="hover_expand">False</property> <signal name="button_press_event" handler="on_roster_treeview_button_press_event" last_modification_time="Mon, 28 Feb 2005 14:16:44 GMT"/> <signal name="row_activated" handler="on_roster_treeview_row_activated" last_modification_time="Mon, 28 Feb 2005 14:18:06 GMT"/> <signal name="row_expanded" handler="on_roster_treeview_row_expanded" last_modification_time="Mon, 28 Feb 2005 14:18:14 GMT"/> @@ -321,6 +325,7 @@ <property name="skip_pager_hint">False</property> <property name="type_hint">GDK_WINDOW_TYPE_HINT_NORMAL</property> <property name="gravity">GDK_GRAVITY_NORTH_WEST</property> + <property name="focus_on_map">True</property> <signal name="destroy" handler="on_accounts_window_destroy" last_modification_time="Sat, 02 Apr 2005 20:34:04 GMT"/> <child> @@ -347,6 +352,9 @@ <property name="rules_hint">False</property> <property name="reorderable">False</property> <property name="enable_search">True</property> + <property name="fixed_height_mode">False</property> + <property name="hover_selection">False</property> + <property name="hover_expand">False</property> <signal name="cursor_changed" handler="on_accounts_treeview_cursor_changed" last_modification_time="Tue, 01 Mar 2005 18:21:26 GMT"/> </widget> </child> @@ -443,6 +451,10 @@ <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> </widget> <packing> <property name="padding">0</property> @@ -510,6 +522,7 @@ <property name="skip_pager_hint">False</property> <property name="type_hint">GDK_WINDOW_TYPE_HINT_NORMAL</property> <property name="gravity">GDK_GRAVITY_NORTH_WEST</property> + <property name="focus_on_map">True</property> <signal name="destroy" handler="on_account_modification_window_destroy" last_modification_time="Mon, 07 Mar 2005 16:05:10 GMT"/> <child> @@ -537,6 +550,10 @@ <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> </widget> <packing> <property name="padding">0</property> @@ -604,6 +621,10 @@ <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> </widget> <packing> <property name="left_attach">0</property> @@ -628,6 +649,10 @@ <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> </widget> <packing> <property name="left_attach">0</property> @@ -652,6 +677,10 @@ <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> </widget> <packing> <property name="left_attach">0</property> @@ -676,6 +705,10 @@ <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> </widget> <packing> <property name="left_attach">0</property> @@ -802,6 +835,7 @@ <child> <widget class="GtkEntry" id="resource_entry"> <property name="visible">True</property> + <property name="tooltip" translatable="yes">Resource is sent to the jabber server in order to 'seperate' the same JID in two or more parts depending on the number of the clients connected in the same server with the same account. So you might be connected in the same account with resource 'Home' and 'Work' at the same time. The resource which has the highest priority will get the messages. (see below)</property> <property name="can_focus">True</property> <property name="editable">True</property> <property name="visibility">True</property> @@ -834,6 +868,10 @@ <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> </widget> <packing> <property name="left_attach">2</property> @@ -847,6 +885,7 @@ <child> <widget class="GtkSpinButton" id="priority_spinbutton"> <property name="visible">True</property> + <property name="tooltip" translatable="yes">Priority is used in Jabber to determine who gets the events from the jabber server when two or more clients are connected using the same account; The client with the highest priority gets the events</property> <property name="can_focus">True</property> <property name="climb_rate">1</property> <property name="digits">0</property> @@ -885,6 +924,10 @@ <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> </widget> <packing> <property name="type">tab</property> @@ -899,6 +942,7 @@ <child> <widget class="GtkVBox" id="vbox38"> + <property name="border_width">5</property> <property name="visible">True</property> <property name="homogeneous">False</property> <property name="spacing">5</property> @@ -987,6 +1031,10 @@ <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> </widget> <packing> <property name="type">tab</property> @@ -995,6 +1043,7 @@ <child> <widget class="GtkVBox" id="vbox31"> + <property name="border_width">5</property> <property name="visible">True</property> <property name="homogeneous">False</property> <property name="spacing">0</property> @@ -1004,7 +1053,7 @@ <property name="visible">True</property> <property name="label_xalign">0</property> <property name="label_yalign">0.5</property> - <property name="shadow_type">GTK_SHADOW_NONE</property> + <property name="shadow_type">GTK_SHADOW_ETCHED_IN</property> <child> <widget class="GtkAlignment" id="alignment26"> @@ -1043,6 +1092,10 @@ <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> </widget> <packing> <property name="padding">0</property> @@ -1064,6 +1117,10 @@ <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> </widget> <packing> <property name="padding">0</property> @@ -1105,6 +1162,7 @@ <child> <widget class="GtkCheckButton" id="gpg_save_password_checkbutton"> <property name="visible">True</property> + <property name="tooltip" translatable="yes">If checked Gajim will store the password in ~/.gajim/config with 'read' permission only for only you and of course the superuser</property> <property name="can_focus">True</property> <property name="label" translatable="yes">Save passphrase (insecure)</property> <property name="use_underline">True</property> @@ -1165,6 +1223,10 @@ <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> </widget> <packing> <property name="type">label_item</property> @@ -1179,54 +1241,7 @@ </child> <child> - <widget class="GtkFrame" id="frame15"> - <property name="visible">True</property> - <property name="label_xalign">0</property> - <property name="label_yalign">0.5</property> - <property name="shadow_type">GTK_SHADOW_NONE</property> - - <child> - <widget class="GtkAlignment" id="alignment27"> - <property name="visible">True</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xscale">1</property> - <property name="yscale">1</property> - <property name="top_padding">0</property> - <property name="bottom_padding">0</property> - <property name="left_padding">12</property> - <property name="right_padding">0</property> - - <child> - <placeholder/> - </child> - </widget> - </child> - - <child> - <widget class="GtkLabel" id="label151"> - <property name="visible">True</property> - <property name="label" translatable="yes"><b>SSL</b></property> - <property name="use_underline">False</property> - <property name="use_markup">True</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - </widget> - <packing> - <property name="type">label_item</property> - </packing> - </child> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">True</property> - <property name="fill">True</property> - </packing> + <placeholder/> </child> </widget> <packing> @@ -1248,6 +1263,10 @@ <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> </widget> <packing> <property name="type">tab</property> @@ -1262,10 +1281,11 @@ <child> <widget class="GtkFrame" id="frame23"> + <property name="border_width">5</property> <property name="visible">True</property> <property name="label_xalign">0</property> <property name="label_yalign">0.5</property> - <property name="shadow_type">GTK_SHADOW_NONE</property> + <property name="shadow_type">GTK_SHADOW_ETCHED_IN</property> <child> <widget class="GtkAlignment" id="alignment51"> @@ -1289,27 +1309,6 @@ <property name="row_spacing">5</property> <property name="column_spacing">5</property> - <child> - <widget class="GtkEntry" id="proxyport_entry"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="editable">True</property> - <property name="visibility">True</property> - <property name="max_length">0</property> - <property name="text" translatable="yes"></property> - <property name="has_frame">True</property> - <property name="invisible_char">*</property> - <property name="activates_default">False</property> - </widget> - <packing> - <property name="left_attach">1</property> - <property name="right_attach">2</property> - <property name="top_attach">2</property> - <property name="bottom_attach">3</property> - <property name="y_options"></property> - </packing> - </child> - <child> <widget class="GtkLabel" id="label136"> <property name="visible">True</property> @@ -1323,6 +1322,10 @@ <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> </widget> <packing> <property name="left_attach">0</property> @@ -1368,6 +1371,10 @@ <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> </widget> <packing> <property name="left_attach">0</property> @@ -1390,6 +1397,7 @@ <property name="active">False</property> <property name="inconsistent">False</property> <property name="draw_indicator">True</property> + <signal name="toggled" handler="on_use_proxy_checkbutton_toggled" last_modification_time="Fri, 08 Apr 2005 21:12:47 GMT"/> </widget> <packing> <property name="left_attach">1</property> @@ -1400,6 +1408,27 @@ <property name="y_options"></property> </packing> </child> + + <child> + <widget class="GtkEntry" id="proxyport_entry"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="editable">True</property> + <property name="visibility">True</property> + <property name="max_length">0</property> + <property name="text" translatable="yes">3128</property> + <property name="has_frame">True</property> + <property name="invisible_char">*</property> + <property name="activates_default">False</property> + </widget> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">2</property> + <property name="bottom_attach">3</property> + <property name="y_options"></property> + </packing> + </child> </widget> </child> </widget> @@ -1418,6 +1447,10 @@ <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> </widget> <packing> <property name="type">label_item</property> @@ -1450,6 +1483,10 @@ <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> </widget> <packing> <property name="type">tab</property> @@ -1458,6 +1495,7 @@ <child> <widget class="GtkVBox" id="vbox61"> + <property name="border_width">5</property> <property name="visible">True</property> <property name="homogeneous">False</property> <property name="spacing">5</property> @@ -1475,6 +1513,10 @@ <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> </widget> <packing> <property name="padding">0</property> @@ -1519,6 +1561,10 @@ <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> </widget> <packing> <property name="type">tab</property> @@ -1591,6 +1637,7 @@ <property name="skip_pager_hint">False</property> <property name="type_hint">GDK_WINDOW_TYPE_HINT_NORMAL</property> <property name="gravity">GDK_GRAVITY_NORTH_WEST</property> + <property name="focus_on_map">True</property> <child> <widget class="GtkVBox" id="vbox8"> @@ -1620,6 +1667,10 @@ <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> </widget> <packing> <property name="left_attach">0</property> @@ -1644,6 +1695,10 @@ <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> </widget> <packing> <property name="left_attach">0</property> @@ -1668,6 +1723,10 @@ <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> </widget> <packing> <property name="left_attach">0</property> @@ -1692,6 +1751,10 @@ <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> </widget> <packing> <property name="left_attach">0</property> @@ -1729,6 +1792,8 @@ <widget class="GtkComboBox" id="protocol_combobox"> <property name="visible">True</property> <property name="items" translatable="yes"></property> + <property name="add_tearoffs">False</property> + <property name="focus_on_click">True</property> <signal name="changed" handler="on_protocol_combobox_changed" last_modification_time="Wed, 23 Mar 2005 13:13:12 GMT"/> </widget> <packing> @@ -1817,6 +1882,10 @@ <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> </widget> <packing> <property name="left_attach">0</property> @@ -1832,6 +1901,9 @@ <widget class="GtkComboBoxEntry" id="group_comboboxentry"> <property name="visible">True</property> <property name="items" translatable="yes"></property> + <property name="add_tearoffs">False</property> + <property name="has_frame">True</property> + <property name="focus_on_click">True</property> </widget> <packing> <property name="left_attach">1</property> @@ -1964,6 +2036,10 @@ <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> </widget> <packing> <property name="padding">0</property> @@ -2003,6 +2079,7 @@ <property name="skip_pager_hint">False</property> <property name="type_hint">GDK_WINDOW_TYPE_HINT_NORMAL</property> <property name="gravity">GDK_GRAVITY_NORTH_WEST</property> + <property name="focus_on_map">True</property> <child> <widget class="GtkVBox" id="vbox10"> @@ -2023,6 +2100,10 @@ <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> </widget> <packing> <property name="padding">10</property> @@ -2145,6 +2226,10 @@ <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> </widget> <packing> <property name="padding">0</property> @@ -2217,6 +2302,10 @@ <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> </widget> <packing> <property name="padding">0</property> @@ -2256,6 +2345,7 @@ <property name="skip_pager_hint">False</property> <property name="type_hint">GDK_WINDOW_TYPE_HINT_NORMAL</property> <property name="gravity">GDK_GRAVITY_NORTH_WEST</property> + <property name="focus_on_map">True</property> <signal name="destroy" handler="on_service_discovery_window_destroy" last_modification_time="Sun, 27 Mar 2005 18:05:35 GMT"/> <child> @@ -2285,6 +2375,10 @@ <property name="xpad">0</property> <property name="ypad">0</property> <property name="mnemonic_widget">address_comboboxentry</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> </widget> <packing> <property name="padding">0</property> @@ -2296,6 +2390,9 @@ <child> <widget class="GtkComboBoxEntry" id="address_comboboxentry"> <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_address_comboboxentry_changed" last_modification_time="Tue, 29 Mar 2005 17:24:11 GMT"/> <signal name="key_press_event" handler="on_address_comboboxentry_key_press_event" last_modification_time="Tue, 29 Mar 2005 17:41:10 GMT"/> <signal name="button_press_event" handler="on_address_comboboxentry_button_press_event" last_modification_time="Tue, 29 Mar 2005 17:41:23 GMT"/> @@ -2350,6 +2447,9 @@ <property name="rules_hint">False</property> <property name="reorderable">False</property> <property name="enable_search">True</property> + <property name="fixed_height_mode">False</property> + <property name="hover_selection">False</property> + <property name="hover_expand">False</property> <signal name="row_activated" handler="on_services_treeview_row_activated" last_modification_time="Mon, 28 Mar 2005 00:28:25 GMT"/> <signal name="cursor_changed" handler="on_services_treeview_cursor_changed" last_modification_time="Mon, 28 Mar 2005 00:28:33 GMT"/> <signal name="row_expanded" handler="on_services_treeview_row_expanded" last_modification_time="Mon, 28 Mar 2005 00:28:39 GMT"/> @@ -2427,6 +2527,10 @@ <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> </widget> <packing> <property name="padding">0</property> @@ -2504,6 +2608,7 @@ <property name="skip_pager_hint">False</property> <property name="type_hint">GDK_WINDOW_TYPE_HINT_NORMAL</property> <property name="gravity">GDK_GRAVITY_NORTH_WEST</property> + <property name="focus_on_map">True</property> <child> <widget class="GtkVBox" id="vbox12"> @@ -2524,6 +2629,10 @@ <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">4</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> </widget> <packing> <property name="padding">4</property> @@ -2613,6 +2722,10 @@ <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> </widget> <packing> <property name="padding">0</property> @@ -2685,6 +2798,10 @@ <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> </widget> <packing> <property name="padding">0</property> @@ -2724,8 +2841,10 @@ <property name="skip_pager_hint">False</property> <property name="type_hint">GDK_WINDOW_TYPE_HINT_NORMAL</property> <property name="gravity">GDK_GRAVITY_NORTH_WEST</property> + <property name="focus_on_map">True</property> <signal name="show" handler="on_preferences_window_show" last_modification_time="Tue, 29 Mar 2005 23:33:03 GMT"/> <signal name="delete_event" handler="on_preferences_window_delete_event" last_modification_time="Tue, 29 Mar 2005 23:38:24 GMT"/> + <signal name="key_press_event" handler="on_preferences_window_key_press_event" last_modification_time="Fri, 08 Apr 2005 01:08:08 GMT"/> <child> <widget class="GtkVBox" id="vbox13"> @@ -2752,7 +2871,7 @@ <property name="spacing">5</property> <child> - <widget class="GtkCheckButton" id="tray_icon_checkbutton"> + <widget class="GtkCheckButton" id="trayicon_checkbutton"> <property name="visible">True</property> <property name="tooltip" translatable="yes">If checked, Gajim will also have a trayicon</property> <property name="can_focus">True</property> @@ -2763,7 +2882,7 @@ <property name="active">False</property> <property name="inconsistent">False</property> <property name="draw_indicator">True</property> - <signal name="toggled" handler="on_tray_icon_checkbutton_toggled" last_modification_time="Sun, 06 Mar 2005 15:13:50 GMT"/> + <signal name="toggled" handler="on_trayicon_checkbutton_toggled" last_modification_time="Tue, 12 Apr 2005 12:34:19 GMT"/> </widget> <packing> <property name="padding">0</property> @@ -2884,6 +3003,10 @@ <property name="xpad">0</property> <property name="ypad">0</property> <property name="mnemonic_widget">iconset_combobox</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> </widget> <packing> <property name="padding">0</property> @@ -2896,6 +3019,8 @@ <widget class="GtkComboBox" id="iconset_combobox"> <property name="visible">True</property> <property name="items" translatable="yes"></property> + <property name="add_tearoffs">False</property> + <property name="focus_on_click">True</property> <signal name="changed" handler="on_iconset_combobox_changed" last_modification_time="Wed, 30 Mar 2005 12:19:34 GMT"/> </widget> <packing> @@ -2945,6 +3070,10 @@ <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> </widget> <packing> <property name="left_attach">0</property> @@ -2969,6 +3098,10 @@ <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> </widget> <packing> <property name="left_attach">0</property> @@ -2993,6 +3126,10 @@ <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> </widget> <packing> <property name="left_attach">0</property> @@ -3080,6 +3217,10 @@ <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> </widget> <packing> <property name="left_attach">1</property> @@ -3104,6 +3245,10 @@ <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> </widget> <packing> <property name="left_attach">2</property> @@ -3128,6 +3273,10 @@ <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> </widget> <packing> <property name="left_attach">3</property> @@ -3152,6 +3301,10 @@ <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> </widget> <packing> <property name="left_attach">0</property> @@ -3326,6 +3479,10 @@ <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> </widget> <packing> <property name="padding">0</property> @@ -3397,6 +3554,10 @@ <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> </widget> <packing> <property name="padding">0</property> @@ -3481,6 +3642,10 @@ <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> </widget> <packing> <property name="padding">0</property> @@ -3580,6 +3745,10 @@ <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> </widget> <packing> <property name="left_attach">2</property> @@ -3604,6 +3773,10 @@ <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> </widget> <packing> <property name="left_attach">2</property> @@ -3628,6 +3801,10 @@ <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> </widget> <packing> <property name="left_attach">0</property> @@ -3652,6 +3829,10 @@ <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> </widget> <packing> <property name="left_attach">0</property> @@ -3788,6 +3969,10 @@ <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> </widget> <packing> <property name="left_attach">0</property> @@ -3812,6 +3997,10 @@ <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> </widget> <packing> <property name="left_attach">0</property> @@ -3836,6 +4025,10 @@ <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> </widget> <packing> <property name="left_attach">0</property> @@ -3960,6 +4153,10 @@ <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> </widget> <packing> <property name="padding">0</property> @@ -4006,6 +4203,10 @@ <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> </widget> <packing> <property name="type">label_item</property> @@ -4061,6 +4262,10 @@ <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> </widget> <packing> <property name="padding">0</property> @@ -4164,6 +4369,10 @@ <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> </widget> <packing> <property name="type">label_item</property> @@ -4249,7 +4458,7 @@ </child> <child> - <widget class="GtkHBox" id="sound_player_hbox"> + <widget class="GtkHBox" id="soundplayer_hbox"> <property name="visible">True</property> <property name="homogeneous">False</property> <property name="spacing">5</property> @@ -4268,6 +4477,10 @@ <property name="xpad">0</property> <property name="ypad">0</property> <property name="mnemonic_widget">soundplayer_entry</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> </widget> <packing> <property name="padding">0</property> @@ -4327,6 +4540,9 @@ <property name="rules_hint">False</property> <property name="reorderable">False</property> <property name="enable_search">True</property> + <property name="fixed_height_mode">False</property> + <property name="hover_selection">False</property> + <property name="hover_expand">False</property> <signal name="cursor_changed" handler="on_treeview_sounds_cursor_changed" last_modification_time="Wed, 09 Feb 2005 22:51:36 GMT"/> </widget> </child> @@ -4405,6 +4621,10 @@ <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> </widget> <packing> <property name="type">label_item</property> @@ -4460,6 +4680,10 @@ <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> </widget> <packing> <property name="padding">0</property> @@ -4548,6 +4772,10 @@ <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> </widget> <packing> <property name="left_attach">2</property> @@ -4572,6 +4800,10 @@ <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> </widget> <packing> <property name="left_attach">2</property> @@ -4685,6 +4917,10 @@ <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> </widget> <packing> <property name="padding">0</property> @@ -4802,6 +5038,9 @@ <property name="rules_hint">False</property> <property name="reorderable">False</property> <property name="enable_search">True</property> + <property name="fixed_height_mode">False</property> + <property name="hover_selection">False</property> + <property name="hover_expand">False</property> <signal name="cursor_changed" handler="on_msg_treeview_cursor_changed" last_modification_time="Sun, 24 Oct 2004 21:46:28 GMT"/> <signal name="key_press_event" handler="on_msg_treeview_key_press_event" last_modification_time="Wed, 02 Feb 2005 21:04:34 GMT"/> </widget> @@ -4916,6 +5155,10 @@ <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> </widget> <packing> <property name="type">label_item</property> @@ -4971,6 +5214,10 @@ <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> </widget> <packing> <property name="padding">0</property> @@ -5035,6 +5282,10 @@ <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> </widget> <packing> <property name="padding">0</property> @@ -5049,6 +5300,8 @@ <property name="items" translatable="yes">GNOME default applications KDE default applications Custom</property> + <property name="add_tearoffs">False</property> + <property name="focus_on_click">True</property> <signal name="changed" handler="on_links_open_with_combobox_changed" last_modification_time="Sat, 05 Mar 2005 16:44:57 GMT"/> </widget> <packing> @@ -5108,6 +5361,10 @@ Custom</property> <property name="xpad">0</property> <property name="ypad">0</property> <property name="mnemonic_widget">custom_browser_entry</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> </widget> <packing> <property name="left_attach">0</property> @@ -5133,6 +5390,10 @@ Custom</property> <property name="xpad">0</property> <property name="ypad">0</property> <property name="mnemonic_widget">custom_mail_client_entry</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> </widget> <packing> <property name="left_attach">0</property> @@ -5205,6 +5466,10 @@ Custom</property> <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> </widget> <packing> <property name="type">label_item</property> @@ -5235,6 +5500,10 @@ Custom</property> <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> </widget> <packing> <property name="type">label_item</property> @@ -5330,6 +5599,10 @@ Custom</property> <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> </widget> <packing> <property name="type">label_item</property> @@ -5413,6 +5686,10 @@ Custom</property> <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> </widget> <packing> <property name="type">label_item</property> @@ -5468,6 +5745,10 @@ Custom</property> <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> </widget> <packing> <property name="padding">0</property> @@ -5531,6 +5812,7 @@ Custom</property> <property name="skip_pager_hint">False</property> <property name="type_hint">GDK_WINDOW_TYPE_HINT_NORMAL</property> <property name="gravity">GDK_GRAVITY_NORTH_WEST</property> + <property name="focus_on_map">True</property> <signal name="destroy" handler="on_user_information_window_destroy" last_modification_time="Tue, 01 Mar 2005 15:40:50 GMT"/> <signal name="key_press_event" handler="on_vcard_information_window_key_press_event" last_modification_time="Thu, 07 Apr 2005 10:06:13 GMT"/> @@ -5553,6 +5835,10 @@ Custom</property> <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> </widget> <packing> <property name="padding">5</property> @@ -5573,12 +5859,12 @@ Custom</property> <child> <widget class="GtkTable" id="table4"> - <property name="border_width">4</property> + <property name="border_width">5</property> <property name="visible">True</property> <property name="n_rows">8</property> <property name="n_columns">2</property> <property name="homogeneous">False</property> - <property name="row_spacing">5</property> + <property name="row_spacing">0</property> <property name="column_spacing">5</property> <child> @@ -5594,6 +5880,10 @@ Custom</property> <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> </widget> <packing> <property name="left_attach">0</property> @@ -5619,6 +5909,10 @@ Custom</property> <property name="yalign">0.5</property> <property name="xpad">5</property> <property name="ypad">5</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> </widget> <packing> <property name="left_attach">1</property> @@ -5644,6 +5938,10 @@ Custom</property> <property name="yalign">0.5</property> <property name="xpad">5</property> <property name="ypad">5</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> </widget> <packing> <property name="left_attach">1</property> @@ -5668,6 +5966,10 @@ Custom</property> <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> </widget> <packing> <property name="left_attach">0</property> @@ -5692,6 +5994,10 @@ Custom</property> <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> </widget> <packing> <property name="left_attach">0</property> @@ -5703,27 +6009,6 @@ Custom</property> </packing> </child> - <child> - <widget class="GtkEntry" id="nickname_entry"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="editable">True</property> - <property name="visibility">True</property> - <property name="max_length">0</property> - <property name="text" translatable="yes"></property> - <property name="has_frame">True</property> - <property name="invisible_char">*</property> - <property name="activates_default">False</property> - </widget> - <packing> - <property name="left_attach">1</property> - <property name="right_attach">2</property> - <property name="top_attach">2</property> - <property name="bottom_attach">3</property> - <property name="y_options"></property> - </packing> - </child> - <child> <widget class="GtkLabel" id="label62"> <property name="visible">True</property> @@ -5737,6 +6022,10 @@ Custom</property> <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> </widget> <packing> <property name="left_attach">0</property> @@ -5748,30 +6037,6 @@ Custom</property> </packing> </child> - <child> - <widget class="GtkLabel" id="resource_label"> - <property name="visible">True</property> - <property name="label" translatable="yes"></property> - <property name="use_underline">False</property> - <property name="use_markup">False</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">0</property> - <property name="yalign">0.5</property> - <property name="xpad">5</property> - <property name="ypad">5</property> - </widget> - <packing> - <property name="left_attach">1</property> - <property name="right_attach">2</property> - <property name="top_attach">1</property> - <property name="bottom_attach">2</property> - <property name="x_options">fill</property> - <property name="y_options"></property> - </packing> - </child> - <child> <widget class="GtkLabel" id="label66"> <property name="visible">True</property> @@ -5785,6 +6050,10 @@ Custom</property> <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> </widget> <packing> <property name="left_attach">0</property> @@ -5816,6 +6085,10 @@ Custom</property> <property name="yalign">0.5</property> <property name="xpad">5</property> <property name="ypad">5</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> </widget> <packing> <property name="padding">0</property> @@ -5837,6 +6110,10 @@ Custom</property> <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> </widget> <packing> <property name="padding">0</property> @@ -5858,6 +6135,10 @@ Custom</property> <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> </widget> <packing> <property name="padding">0</property> @@ -5889,6 +6170,10 @@ Custom</property> <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> </widget> <packing> <property name="left_attach">0</property> @@ -5936,6 +6221,10 @@ Custom</property> <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> </widget> <packing> <property name="left_attach">0</property> @@ -5961,6 +6250,10 @@ Custom</property> <property name="yalign">0.5</property> <property name="xpad">5</property> <property name="ypad">5</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> </widget> <packing> <property name="left_attach">1</property> @@ -5971,6 +6264,34 @@ Custom</property> </packing> </child> + <child> + <widget class="GtkLabel" id="resource_label"> + <property name="visible">True</property> + <property name="label" translatable="yes"></property> + <property name="use_underline">False</property> + <property name="use_markup">False</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0</property> + <property name="yalign">0.5</property> + <property name="xpad">5</property> + <property name="ypad">5</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">1</property> + <property name="bottom_attach">2</property> + <property name="x_options">fill</property> + <property name="y_options"></property> + </packing> + </child> + <child> <widget class="GtkLabel" id="client_name_version_label"> <property name="visible">True</property> @@ -5985,12 +6306,40 @@ Custom</property> <property name="yalign">0.5</property> <property name="xpad">5</property> <property name="ypad">5</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> </widget> <packing> <property name="left_attach">1</property> <property name="right_attach">2</property> <property name="top_attach">5</property> <property name="bottom_attach">6</property> + <property name="x_options">fill</property> + <property name="y_options"></property> + </packing> + </child> + + <child> + <widget class="GtkEntry" id="nickname_entry"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="editable">True</property> + <property name="visibility">True</property> + <property name="max_length">0</property> + <property name="text" translatable="yes"></property> + <property name="has_frame">True</property> + <property name="invisible_char">*</property> + <property name="activates_default">False</property> + </widget> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">2</property> + <property name="bottom_attach">3</property> + <property name="x_padding">2</property> + <property name="x_options">fill</property> <property name="y_options"></property> </packing> </child> @@ -6014,6 +6363,10 @@ Custom</property> <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> </widget> <packing> <property name="type">tab</property> @@ -6022,7 +6375,7 @@ Custom</property> <child> <widget class="GtkTable" id="table11"> - <property name="border_width">4</property> + <property name="border_width">5</property> <property name="visible">True</property> <property name="n_rows">6</property> <property name="n_columns">2</property> @@ -6043,6 +6396,10 @@ Custom</property> <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> </widget> <packing> <property name="left_attach">0</property> @@ -6067,6 +6424,10 @@ Custom</property> <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> </widget> <packing> <property name="left_attach">0</property> @@ -6091,6 +6452,10 @@ Custom</property> <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> </widget> <packing> <property name="left_attach">0</property> @@ -6115,6 +6480,10 @@ Custom</property> <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> </widget> <packing> <property name="left_attach">0</property> @@ -6139,6 +6508,10 @@ Custom</property> <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> </widget> <packing> <property name="left_attach">0</property> @@ -6163,6 +6536,10 @@ Custom</property> <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> </widget> <packing> <property name="left_attach">0</property> @@ -6319,6 +6696,10 @@ Custom</property> <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> </widget> <packing> <property name="type">tab</property> @@ -6348,6 +6729,10 @@ Custom</property> <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> </widget> <packing> <property name="left_attach">0</property> @@ -6372,6 +6757,10 @@ Custom</property> <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> </widget> <packing> <property name="left_attach">0</property> @@ -6396,6 +6785,10 @@ Custom</property> <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> </widget> <packing> <property name="left_attach">0</property> @@ -6420,6 +6813,10 @@ Custom</property> <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> </widget> <packing> <property name="left_attach">0</property> @@ -6444,6 +6841,10 @@ Custom</property> <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> </widget> <packing> <property name="left_attach">0</property> @@ -6468,6 +6869,10 @@ Custom</property> <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> </widget> <packing> <property name="left_attach">0</property> @@ -6624,6 +7029,10 @@ Custom</property> <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> </widget> <packing> <property name="type">tab</property> @@ -6653,6 +7062,10 @@ Custom</property> <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> </widget> <packing> <property name="left_attach">0</property> @@ -6677,6 +7090,10 @@ Custom</property> <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> </widget> <packing> <property name="left_attach">0</property> @@ -6701,6 +7118,10 @@ Custom</property> <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> </widget> <packing> <property name="left_attach">0</property> @@ -6725,6 +7146,10 @@ Custom</property> <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> </widget> <packing> <property name="left_attach">0</property> @@ -6839,6 +7264,10 @@ Custom</property> <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> </widget> <packing> <property name="type">tab</property> @@ -6894,6 +7323,10 @@ Custom</property> <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> </widget> <packing> <property name="type">tab</property> @@ -6953,6 +7386,7 @@ Custom</property> <property name="skip_pager_hint">False</property> <property name="type_hint">GDK_WINDOW_TYPE_HINT_NORMAL</property> <property name="gravity">GDK_GRAVITY_NORTH_WEST</property> + <property name="focus_on_map">True</property> <signal name="destroy" handler="on_history_window_destroy" last_modification_time="Tue, 01 Mar 2005 16:30:31 GMT"/> <child> @@ -7026,6 +7460,10 @@ Custom</property> <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> </widget> <packing> <property name="padding">0</property> @@ -7097,6 +7535,10 @@ Custom</property> <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> </widget> <packing> <property name="padding">0</property> @@ -7181,6 +7623,10 @@ Custom</property> <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> </widget> <packing> <property name="padding">0</property> @@ -7268,6 +7714,7 @@ Custom</property> <property name="skip_pager_hint">False</property> <property name="type_hint">GDK_WINDOW_TYPE_HINT_NORMAL</property> <property name="gravity">GDK_GRAVITY_NORTH_WEST</property> + <property name="focus_on_map">True</property> <signal name="focus_in_event" handler="on_groupchat_window_focus_in_event" last_modification_time="Sat, 05 Mar 2005 00:34:51 GMT"/> <signal name="delete_event" handler="on_groupchat_window_delete_event" last_modification_time="Mon, 07 Mar 2005 11:19:05 GMT"/> <signal name="destroy" handler="on_groupchat_window_destroy" last_modification_time="Mon, 07 Mar 2005 16:46:37 GMT"/> @@ -7298,6 +7745,10 @@ Custom</property> <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> </widget> <packing> <property name="padding">0</property> @@ -7394,6 +7845,9 @@ Custom</property> <property name="rules_hint">False</property> <property name="reorderable">True</property> <property name="enable_search">False</property> + <property name="fixed_height_mode">False</property> + <property name="hover_selection">False</property> + <property name="hover_expand">False</property> <signal name="row_activated" handler="on_list_treeview_row_activated" last_modification_time="Sat, 05 Mar 2005 00:31:45 GMT"/> <signal name="row_collapsed" handler="on_list_treeview_row_collapsed" last_modification_time="Sat, 05 Mar 2005 00:31:52 GMT"/> <signal name="row_expanded" handler="on_list_treeview_row_expanded" last_modification_time="Sat, 05 Mar 2005 00:31:57 GMT"/> @@ -7410,6 +7864,7 @@ Custom</property> <child> <widget class="GtkScrolledWindow" id="conversation_scrolledwindow"> + <property name="width_request">200</property> <property name="visible">True</property> <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property> <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property> @@ -7439,7 +7894,7 @@ Custom</property> </child> </widget> <packing> - <property name="shrink">True</property> + <property name="shrink">False</property> <property name="resize">True</property> </packing> </child> @@ -7466,7 +7921,7 @@ Custom</property> <property name="has_focus">True</property> <property name="editable">True</property> <property name="overwrite">False</property> - <property name="accepts_tab">True</property> + <property name="accepts_tab">False</property> <property name="justification">GTK_JUSTIFY_LEFT</property> <property name="wrap_mode">GTK_WRAP_WORD</property> <property name="cursor_visible">True</property> @@ -7513,6 +7968,10 @@ Custom</property> <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> </widget> <packing> <property name="type">tab</property> @@ -7542,6 +8001,7 @@ Custom</property> <property name="skip_pager_hint">False</property> <property name="type_hint">GDK_WINDOW_TYPE_HINT_NORMAL</property> <property name="gravity">GDK_GRAVITY_NORTH_WEST</property> + <property name="focus_on_map">True</property> <signal name="destroy" handler="on_join_groupchat_window_destroy" last_modification_time="Wed, 02 Mar 2005 12:20:14 GMT"/> <signal name="key_press_event" handler="on_join_groupchat_window_key_press_event" last_modification_time="Tue, 05 Apr 2005 13:13:40 GMT"/> @@ -7659,6 +8119,10 @@ Custom</property> <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> </widget> <packing> <property name="left_attach">0</property> @@ -7683,6 +8147,10 @@ Custom</property> <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> </widget> <packing> <property name="left_attach">0</property> @@ -7707,6 +8175,10 @@ Custom</property> <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> </widget> <packing> <property name="left_attach">0</property> @@ -7731,6 +8203,10 @@ Custom</property> <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> </widget> <packing> <property name="left_attach">0</property> @@ -7755,6 +8231,10 @@ Custom</property> <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> </widget> <packing> <property name="left_attach">0</property> @@ -7769,6 +8249,8 @@ Custom</property> <child> <widget class="GtkComboBox" id="recently_combobox"> <property name="visible">True</property> + <property name="add_tearoffs">False</property> + <property name="focus_on_click">True</property> <signal name="changed" handler="on_recently_combobox_changed" last_modification_time="Wed, 06 Apr 2005 22:25:35 GMT"/> </widget> <packing> @@ -7866,6 +8348,10 @@ Custom</property> <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> </widget> <packing> <property name="padding">0</property> @@ -7903,6 +8389,7 @@ Custom</property> <property name="skip_pager_hint">False</property> <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property> <property name="gravity">GDK_GRAVITY_NORTH_WEST</property> + <property name="focus_on_map">True</property> <property name="has_separator">False</property> <child internal-child="vbox"> @@ -7970,6 +8457,10 @@ Custom</property> <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> </widget> <packing> <property name="padding">5</property> @@ -8042,6 +8533,7 @@ Custom</property> <property name="skip_pager_hint">False</property> <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property> <property name="gravity">GDK_GRAVITY_NORTH_WEST</property> + <property name="focus_on_map">True</property> <property name="has_separator">False</property> <signal name="key_press_event" handler="on_Passphrase_key_press_event" last_modification_time="Thu, 07 Oct 2004 14:25:48 GMT"/> @@ -8110,6 +8602,10 @@ Custom</property> <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> </widget> <packing> <property name="padding">5</property> @@ -8135,6 +8631,9 @@ Custom</property> <property name="rules_hint">False</property> <property name="reorderable">False</property> <property name="enable_search">True</property> + <property name="fixed_height_mode">False</property> + <property name="hover_selection">False</property> + <property name="hover_expand">False</property> </widget> </child> </widget> @@ -8170,6 +8669,7 @@ Custom</property> <property name="skip_pager_hint">False</property> <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property> <property name="gravity">GDK_GRAVITY_NORTH_WEST</property> + <property name="focus_on_map">True</property> <property name="has_separator">False</property> <signal name="key_press_event" handler="on_change_status_message_dialog_key_press_event" last_modification_time="Wed, 16 Mar 2005 00:53:06 GMT"/> @@ -8226,6 +8726,10 @@ Custom</property> <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> </widget> <packing> <property name="padding">0</property> @@ -8283,6 +8787,10 @@ Custom</property> <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> </widget> <packing> <property name="padding">0</property> @@ -8294,6 +8802,9 @@ Custom</property> <child> <widget class="GtkComboBoxEntry" id="message_comboboxentry"> <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"/> </widget> <packing> @@ -8328,6 +8839,7 @@ Custom</property> <property name="skip_pager_hint">False</property> <property name="type_hint">GDK_WINDOW_TYPE_HINT_NORMAL</property> <property name="gravity">GDK_GRAVITY_NORTH_WEST</property> + <property name="focus_on_map">True</property> <signal name="focus_in_event" handler="on_tabbed_chat_window_focus_in_event" last_modification_time="Wed, 02 Mar 2005 17:57:33 GMT"/> <signal name="delete_event" handler="on_tabbed_chat_window_delete_event" last_modification_time="Mon, 07 Mar 2005 11:06:00 GMT"/> <signal name="destroy" handler="on_tabbed_chat_window_destroy" last_modification_time="Mon, 07 Mar 2005 16:35:25 GMT"/> @@ -8413,6 +8925,10 @@ Custom</property> <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> </widget> <packing> <property name="padding">0</property> @@ -8640,6 +9156,10 @@ Custom</property> <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> </widget> <packing> <property name="padding">0</property> @@ -8699,6 +9219,7 @@ Custom</property> <property name="skip_pager_hint">False</property> <property name="type_hint">GDK_WINDOW_TYPE_HINT_NORMAL</property> <property name="gravity">GDK_GRAVITY_NORTH_WEST</property> + <property name="focus_on_map">True</property> <property name="has_separator">False</property> <child internal-child="vbox"> @@ -8746,6 +9267,10 @@ Custom</property> <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> </widget> <packing> <property name="padding">0</property> @@ -8767,6 +9292,10 @@ Custom</property> <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> </widget> <packing> <property name="padding">0</property> @@ -8841,6 +9370,9 @@ Custom</property> <property name="rules_hint">False</property> <property name="reorderable">False</property> <property name="enable_search">True</property> + <property name="fixed_height_mode">False</property> + <property name="hover_selection">False</property> + <property name="hover_expand">False</property> </widget> </child> </widget> @@ -8869,6 +9401,7 @@ Custom</property> <property name="skip_pager_hint">False</property> <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property> <property name="gravity">GDK_GRAVITY_NORTH_WEST</property> + <property name="focus_on_map">True</property> <property name="has_separator">False</property> <child internal-child="vbox"> @@ -8959,6 +9492,10 @@ Custom</property> <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> </widget> <packing> <property name="padding">0</property> @@ -8999,6 +9536,10 @@ Custom</property> <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> </widget> <packing> <property name="padding">0</property> @@ -9058,6 +9599,7 @@ Custom</property> <property name="skip_pager_hint">False</property> <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property> <property name="gravity">GDK_GRAVITY_NORTH_WEST</property> + <property name="focus_on_map">True</property> <property name="has_separator">False</property> <signal name="delete_event" handler="on_delete_event" last_modification_time="Sat, 05 Mar 2005 18:18:47 GMT"/> @@ -9145,6 +9687,10 @@ Custom</property> <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> </widget> <packing> <property name="padding">0</property> @@ -9211,6 +9757,10 @@ send a chat message to</property> <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> </widget> <packing> <property name="padding">5</property> @@ -9378,7 +9928,7 @@ send a chat message to</property> <widget class="GtkWindow" id="popup_window"> <property name="border_width">4</property> <property name="title" translatable="yes"></property> - <property name="type">GTK_WINDOW_TOPLEVEL</property> + <property name="type">GTK_WINDOW_POPUP</property> <property name="window_position">GTK_WIN_POS_NONE</property> <property name="modal">False</property> <property name="resizable">False</property> @@ -9388,6 +9938,7 @@ send a chat message to</property> <property name="skip_pager_hint">True</property> <property name="type_hint">GDK_WINDOW_TYPE_HINT_NORMAL</property> <property name="gravity">GDK_GRAVITY_SOUTH_EAST</property> + <property name="focus_on_map">True</property> <signal name="button_press_event" handler="on_popup_window_button_press_event" last_modification_time="Tue, 05 Apr 2005 21:39:57 GMT"/> <child> @@ -9422,6 +9973,10 @@ send a chat message to</property> <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> </widget> <packing> <property name="padding">0</property> @@ -9433,9 +9988,9 @@ send a chat message to</property> <child> <widget class="GtkButton" id="close_button"> <property name="visible">True</property> - <property name="can_focus">True</property> <property name="relief">GTK_RELIEF_NONE</property> <property name="focus_on_click">True</property> + <signal name="clicked" handler="on_close_button_clicked" last_modification_time="Tue, 12 Apr 2005 12:48:32 GMT"/> <child> <widget class="GtkImage" id="image496"> @@ -9476,6 +10031,10 @@ send a chat message to</property> <property name="yalign">0.5</property> <property name="xpad">0</property> <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> </widget> <packing> <property name="padding">0</property> @@ -9504,6 +10063,7 @@ send a chat message to</property> <property name="skip_pager_hint">False</property> <property name="type_hint">GDK_WINDOW_TYPE_HINT_NORMAL</property> <property name="gravity">GDK_GRAVITY_NORTH_WEST</property> + <property name="focus_on_map">True</property> <signal name="delete_event" handler="on_add_remove_emoticons_window_delete_event" last_modification_time="Wed, 06 Apr 2005 15:34:38 GMT"/> <child> @@ -9530,6 +10090,9 @@ send a chat message to</property> <property name="rules_hint">False</property> <property name="reorderable">False</property> <property name="enable_search">True</property> + <property name="fixed_height_mode">False</property> + <property name="hover_selection">False</property> + <property name="hover_expand">False</property> <signal name="key_press_event" handler="on_emoticons_treeview_key_press_event" last_modification_time="Wed, 06 Apr 2005 17:03:22 GMT"/> </widget> </child> diff --git a/plugins/gtkgui/gtkgui.py b/plugins/gtkgui/gtkgui.py index 673d7553b1cd96270cbaa47368cb61084b2968ab..4042bc4f39d0c0a4e1b9609c310903e53b4ee753 100644 --- a/plugins/gtkgui/gtkgui.py +++ b/plugins/gtkgui/gtkgui.py @@ -64,6 +64,11 @@ import Queue import sre import common.sleepy +try: + import winsound # windows-only built-in module for playing wav +except ImportError: + pass + class CellRendererImage(gtk.GenericCellRenderer): __gproperties__ = { @@ -273,24 +278,25 @@ class plugin: def play_timeout(self, pid): pidp, r = os.waitpid(pid, os.WNOHANG) return 0 - def play_sound(self, event): - if os.name != 'posix': - return - if self.config['soundplayer'] == '': - return - if not self.config[event]: + if not self.config['sounds_on']: return - file = self.config[event + '_file'] - if not os.path.exists(file): + path_to_soundfile = self.config[event + '_file'] + if not os.path.exists(path_to_soundfile): return - argv = self.config['soundplayer'].split() - argv.append(file) - pid = os.spawnvp(os.P_NOWAIT, argv[0], argv) - pidp, r = os.waitpid(pid, os.WNOHANG) - if pidp == 0: - gobject.timeout_add(10000, self.play_timeout, pid) + if os.name == 'nt': + winsound.PlaySound(path_to_soundfile, \ + winsound.SND_FILENAME|winsound.SND_ASYNC) + elif os.name == 'posix': + if self.config['soundplayer'] == '': + return + argv = self.config['soundplayer'].split() + argv.append(path_to_soundfile) + pid = os.spawnvp(os.P_NOWAIT, argv[0], argv) + pidp, r = os.waitpid(pid, os.WNOHANG) + if pidp == 0: + gobject.timeout_add(10000, self.play_timeout, pid) def send(self, event, account, data): self.queueOUT.put((event, account, data)) @@ -334,6 +340,7 @@ class plugin: # role, affiliation, real_jid, reason, actor, statusCode)) statuss = ['offline', 'error', 'online', 'chat', 'away', 'xa', 'dnd', 'invisible'] old_show = 0 + new_show = statuss.index(array[1]) jid = array[0].split('/')[0] keyID = array[5] resource = array[3] @@ -370,18 +377,23 @@ class plugin: user1.priority, user1.keyID) luser.append(user1) user1.resource = resource - if old_show == 0 and statuss.index(array[1]) > 1: - if not user1.jid in self.roster.newly_added[account]: - self.roster.newly_added[account].append(user1.jid) - if user1.jid in self.roster.to_be_removed[account]: - self.roster.to_be_removed[account].remove(user1.jid) - gobject.timeout_add(5000, self.roster.remove_newly_added, user1.jid, account) - if old_show > 1 and statuss.index(array[1]) == 0 and self.connected[account] > 1: - if not user1.jid in self.roster.to_be_removed[account]: - self.roster.to_be_removed[account].append(user1.jid) - if user1.jid in self.roster.newly_added[account]: - self.roster.newly_added[account].remove(user1.jid) - gobject.timeout_add(5000, self.roster.really_remove_user, user1, account) + if user1.jid.find('@') > 0: # It's not an agent + if old_show == 0 and new_show > 1: + if not user1.jid in self.roster.newly_added[account]: + self.roster.newly_added[account].append(user1.jid) + if user1.jid in self.roster.to_be_removed[account]: + self.roster.to_be_removed[account].remove(user1.jid) + gobject.timeout_add(5000, self.roster.remove_newly_added, \ + user1.jid, account) + if old_show > 1 and new_show == 0 and self.connected[account] > 1: + if not user1.jid in self.roster.to_be_removed[account]: + self.roster.to_be_removed[account].append(user1.jid) + if user1.jid in self.roster.newly_added[account]: + self.roster.newly_added[account].remove(user1.jid) + self.roster.redraw_jid(user1.jid, account) + if not self.queues[account].has_key(jid): + gobject.timeout_add(5000, self.roster.really_remove_user, \ + user1, account) user1.show = array[1] user1.status = array[2] user1.priority = priority @@ -395,21 +407,29 @@ class plugin: #It isn't an agent self.roster.chg_user_status(user1, array[1], array[2], account) #play sound - if old_show < 2 and statuss.index(user1.show) > 1 and \ + if old_show < 2 and new_show > 1 and \ self.config['sound_contact_connected']: self.play_sound('sound_contact_connected') if not self.windows[account]['chats'].has_key(jid) and \ not self.queues[account].has_key(jid) and \ not self.config['autopopup']: - instance = Popup_window(self, 'Contact Online', jid ) + #FIXME: + #DOES NOT ALWAYS WORK WHY? + #I control nkour@lagaule in jabber + # have nkour@lagaul in nkour@jabber.org + #go online from psi in lagaule + #gajim doesn't give a shit + # WHY? same with offline + # new message works + instance = Popup_window(self, 'Contact Online', jid, account) self.roster.popup_windows.append(instance) - elif old_show > 1 and statuss.index(user1.show) < 2 and \ + elif old_show > 1 and new_show < 2 and \ self.config['sound_contact_disconnected']: self.play_sound('sound_contact_disconnected') if not self.windows[account]['chats'].has_key(jid) and \ not self.queues[account].has_key(jid) and \ not self.config['autopopup']: - instance = Popup_window(self, 'Contact Offline', jid ) + instance = Popup_window(self, 'Contact Offline', jid, account) self.roster.popup_windows.append(instance) elif self.windows[account]['gc'].has_key(ji): @@ -432,7 +452,7 @@ class plugin: not self.queues[account].has_key(jid): first = True if not self.config['autopopup']: - instance = Popup_window(self, 'New Message', 'From '+ jid ) + instance = Popup_window(self, 'New Message', jid, account) self.roster.popup_windows.append(instance) self.roster.on_message(jid, array[1], array[2], account) if self.config['sound_first_message_received'] and first: @@ -450,7 +470,8 @@ class plugin: def handle_event_msgsent(self, account, array): #('MSG', account, (jid, msg, keyID)) - self.play_sound('sound_message_sent') + if self.config['sound_message_sent']: + self.play_sound('sound_message_sent') def handle_event_subscribe(self, account, array): #('SUBSCRIBE', account, (jid, text)) @@ -536,7 +557,12 @@ class plugin: self.roster.draw_roster() def handle_event_quit(self, p1, p2): - self.roster.on_quit() + self.roster.on_quit() # SUCH FUNCTION DOES NOT EXIST!! + + def save_config(self): + hidden_lines = self.config['hiddenlines'].split('\t') + self.config['hiddenlines'] = '\t'.join(hidden_lines) + self.send('CONFIG', None, ('GtkGui', self.config, 'GtkGui')) def handle_event_myvcard(self, account, array): nick = '' @@ -927,7 +953,7 @@ class plugin: #2:autoaway and use sleeper #3:autoxa and use sleeper self.send('ASK_ROSTER', a, self.queueIN) - #in pygtk2.4 FIXME: (nk) WHAT DO YOU MEAN? + iconset = self.config['iconset'] if not iconset: iconset = 'sun' diff --git a/plugins/gtkgui/roster_window.py b/plugins/gtkgui/roster_window.py index d9614874f414785694aa7a6a96bb5f445ff17646..1a587e8e26ce5f86e2be79ad5a05efda168756b9 100644 --- a/plugins/gtkgui/roster_window.py +++ b/plugins/gtkgui/roster_window.py @@ -204,7 +204,9 @@ class Roster_window: prio = u.priority user = u for iter in iters: - if self.plugin.queues[account].has_key(jid): + if jid.find("@") <= 0: # It's an agent + img = self.pixbufs[user.show] + elif self.plugin.queues[account].has_key(jid): img = self.pixbufs['message'] else: if user.sub != 'both': @@ -392,9 +394,11 @@ class Roster_window: def on_info(self, widget, user, account): """Call vcard_information_window class to display user's information""" - if not self.plugin.windows[account]['infos'].has_key(user.jid): + if self.plugin.windows[account]['infos'].has_key(user.jid): + self.plugin.windows[account]['infos'][user.jid].window.present() + else: self.plugin.windows[account]['infos'][user.jid] = \ - vcard_information_window(user, self.plugin, account) + Vcard_information_window(user, self.plugin, account) def on_agent_logging(self, widget, jid, state, account): """When an agent is requested to log in or off""" @@ -921,8 +925,6 @@ class Roster_window: def on_about_menuitem_activate(self, widget): About_dialog() - #inst = Popup_window(self.plugin, 'Fake Message', 'nkour@') - #self.popup_windows.append( inst ) def on_accounts_menuitem_activate(self, widget): if self.plugin.windows.has_key('accounts'): @@ -969,8 +971,7 @@ class Roster_window: self.plugin.config['width'], self.plugin.config['height'] = \ self.window.get_size() - self.plugin.config['hiddenlines'] = '\t'.join(self.hidden_lines) - self.plugin.send('CONFIG', None, ('GtkGui', self.plugin.config, 'GtkGui')) + self.plugin.save_config() self.plugin.send('QUIT', None, ('gtkgui', 1)) print _("plugin gtkgui stopped") self.close_all(self.plugin.windows) diff --git a/plugins/gtkgui/tabbed_chat_window.py b/plugins/gtkgui/tabbed_chat_window.py index 713d111cf81d7e793efb7e562ddc4ea07c108400..32571930ca3de70a14464935634a7c388f933a1d 100644 --- a/plugins/gtkgui/tabbed_chat_window.py +++ b/plugins/gtkgui/tabbed_chat_window.py @@ -150,14 +150,17 @@ class Tabbed_chat_window(Chat): self.print_time_timeout, user.jid) def on_message_textview_key_press_event(self, widget, event): - """When a key is pressed : + """When a key is pressed: if enter is pressed without the shit key, message (if not empty) is sent and printed in the conversation""" jid = self.get_active_jid() conversation_textview = self.xmls[jid].get_widget('conversation_textview') - if event.keyval == gtk.keysyms.Tab and \ - (event.state & gtk.gdk.CONTROL_MASK): # CTRL + TAB - self.notebook.emit('key_press_event', event) + if event.hardware_keycode == 23: # TAB + if (event.state & gtk.gdk.CONTROL_MASK) and \ + (event.state & gtk.gdk.SHIFT_MASK): # CTRL + SHIFT + TAB + self.notebook.emit('key_press_event', event) + elif event.state & gtk.gdk.CONTROL_MASK: # CTRL + TAB + self.notebook.emit('key_press_event', event) elif event.keyval == gtk.keysyms.Page_Down: # PAGE DOWN if event.state & gtk.gdk.CONTROL_MASK: # CTRL + PAGE DOWN self.notebook.emit('key_press_event', event) @@ -212,7 +215,7 @@ class Tabbed_chat_window(Chat): if (user.show == 'offline' or user.show == 'error') and \ not showOffline: if len(self.plugin.roster.contacts[self.account][jid]) == 1: - self.plugin.roster.remove_user(user, self.account) + self.plugin.roster.really_remove_user(user, self.account) def print_conversation(self, text, jid, contact = '', tim = None): """Print a line in the conversation :