applying a patch by dennis craven to remember gc/chat window sizes and even vpaned positions. also fixing minor stuff in glade [eg better strings]

This commit is contained in:
Nikos Kouremenos 2005-06-13 12:20:34 +00:00
parent caccfd6955
commit af960ec2c8
4 changed files with 83 additions and 19 deletions

View File

@ -82,6 +82,15 @@ class Config:
'openwith': [ opt_str, 'gnome-open' ],
'custombrowser': [ opt_str, 'firefox' ],
'custommailapp': [ opt_str, 'mozilla-thunderbird -compose' ],
'gc-x-position': [opt_int, 0],
'gc-y-position': [opt_int, 0],
'gc-width': [opt_int, 675],
'gc-height': [opt_int, 400],
'gc-hpaned-position': [opt_int, 535],
'chat-x-position': [opt_int, 0],
'chat-y-position': [opt_int, 0],
'chat-width': [opt_int, 415],
'chat-height': [opt_int, 430],
'x-position': [ opt_int, 0 ],
'y-position': [ opt_int, 0 ],
'width': [ opt_int, 150 ],

View File

@ -48,6 +48,8 @@ class GroupchatWindow(chat.Chat):
self.room_creation = {}
self.nick_hits = {}
self.last_key_tabs = {}
self.hpaneds = {} # used for auto positioning
self.hpaned_position = gajim.config.get('gc-hpaned-position')
self.new_room(room_jid, nick)
self.show_title()
self.xml.signal_connect('on_groupchat_window_destroy',
@ -62,6 +64,14 @@ class GroupchatWindow(chat.Chat):
self.on_chat_notebook_switch_page)
self.xml.signal_connect('on_close_window_activate',
self.on_close_window_activate)
# get size and position from config
if gajim.config.get('saveposition'):
self.window.move(gajim.config.get('gc-x-position'),
gajim.config.get('gc-y-position'))
self.window.resize(gajim.config.get('gc-width'),
gajim.config.get('gc-height'))
self.window.show_all()
def save_var(self, jid):
@ -88,15 +98,26 @@ class GroupchatWindow(chat.Chat):
"""close window"""
for room_jid in self.xmls:
if time.time() - self.last_message_time[room_jid] < 2:
dialog = dialogs.ConfirmationDialog(_('You just received a new message in room "%s".'), \
_('If you close this window, this message will be lost.') % \
room_jid.split('@')[0])
dialog = dialogs.ConfirmationDialog(
_('You just received a new message in room "%s"') %room_jid.split('@')[0],
_('If you close this window, this message will be lost.')
)
if dialog.get_response() != gtk.RESPONSE_OK:
return True #stop the propagation of the event
for room_jid in self.xmls:
gajim.connections[self.account].send_gc_status(self.nicks[room_jid], \
gajim.connections[self.account].send_gc_status(self.nicks[room_jid],
room_jid, 'offline', 'offline')
if gajim.config.get('saveposition'):
# save window position and size
gajim.config.set('gc-hpaned-position', self.hpaned_position)
x, y = self.window.get_position()
gajim.config.set('gc-x-position', x)
gajim.config.set('gc-y-position', y)
width, height = self.window.get_size()
gajim.config.set('gc-width', width)
gajim.config.set('gc-height', height)
def on_groupchat_window_destroy(self, widget):
chat.Chat.on_window_destroy(self, widget, 'gc')
@ -292,7 +313,7 @@ class GroupchatWindow(chat.Chat):
room_jid = self.get_active_jid()
gajim.connections[self.account].request_gc_config(room_jid)
def on_add_bookmark_menuitem_activate(self, widget):
def on_bookmark_room_menuitem_activate(self, widget):
room_jid = self.get_active_jid()
bm = { 'name': room_jid,
'jid': room_jid,
@ -475,17 +496,17 @@ class GroupchatWindow(chat.Chat):
def ban(self, widget, room_jid, jid):
"""ban a user"""
gajim.connections[self.account].gc_set_affiliation(room_jid, jid, \
gajim.connections[self.account].gc_set_affiliation(room_jid, jid,
'outcast')
def grant_membership(self, widget, room_jid, jid):
"""grant membership privilege to a user"""
gajim.connections[self.account].gc_set_affiliation(room_jid, jid, \
gajim.connections[self.account].gc_set_affiliation(room_jid, jid,
'member')
def revoke_membership(self, widget, room_jid, jid):
"""revoke membership privilege to a user"""
gajim.connections[self.account].gc_set_affiliation(room_jid, jid, \
gajim.connections[self.account].gc_set_affiliation(room_jid, jid,
'none')
def grant_admin(self, widget, room_jid, jid):
@ -494,7 +515,7 @@ class GroupchatWindow(chat.Chat):
def revoke_admin(self, widget, room_jid, jid):
"""revoke administrative privilege to a user"""
gajim.connections[self.account].gc_set_affiliation(room_jid, jid, \
gajim.connections[self.account].gc_set_affiliation(room_jid, jid,
'member')
def grant_owner(self, widget, room_jid, jid):
@ -619,12 +640,13 @@ class GroupchatWindow(chat.Chat):
chat.Chat.remove_tab(self, room_jid, 'gc')
if len(self.xmls) > 0:
gajim.connections[self.account].send_gc_status(self.nicks[room_jid], \
gajim.connections[self.account].send_gc_status(self.nicks[room_jid],
room_jid, 'offline', 'offline')
del self.nicks[room_jid]
del self.list_treeview[room_jid]
del self.subjects[room_jid]
del self.name_labels[room_jid]
del self.hpaneds[room_jid]
def new_room(self, room_jid, nick):
self.names[room_jid] = room_jid.split('@')[0]
@ -636,8 +658,13 @@ class GroupchatWindow(chat.Chat):
self.room_creation[room_jid] = time.time()
self.nick_hits[room_jid] = []
self.last_key_tabs[room_jid] = False
self.hpaneds[room_jid] = self.xmls[room_jid].get_widget('hpaned')
self.list_treeview[room_jid] = self.xmls[room_jid].get_widget(
'list_treeview')
# we want to know when the the widget resizes, because that is
# an indication that the hpaned has moved...
# TODO: Find a better indicator that the hpaned has moved.
self.list_treeview[room_jid].connect('size-allocate', self.on_treeview_size_allocate)
conversation_textview = self.xmls[room_jid].get_widget(
'conversation_textview')
self.name_labels[room_jid] = self.xmls[room_jid].get_widget(
@ -654,14 +681,14 @@ class GroupchatWindow(chat.Chat):
xm = gtk.glade.XML(GTKGUI_GLADE, 'gc_actions_menu', APP)
self.gc_actions_menu = xm.get_widget('gc_actions_menu')
configure_menuitem, change_subject_menuitem, add_bookmark_menuitem = self.gc_actions_menu.get_children()
configure_menuitem, change_subject_menuitem, bookmark_room_menuitem = self.gc_actions_menu.get_children()
configure_menuitem.connect('activate',
self.on_configure_room_menuitem_activate)
change_subject_menuitem.connect('activate',
self.on_change_subject_menuitem_activate)
add_bookmark_menuitem.connect('activate',
self.on_add_bookmark_menuitem_activate)
bookmark_room_menuitem.connect('activate',
self.on_bookmark_room_menuitem_activate)
# connect the buttons to their respective functions
actions_button = self.xmls[room_jid].get_widget(
@ -696,10 +723,22 @@ class GroupchatWindow(chat.Chat):
column.set_visible(False)
self.list_treeview[room_jid].set_expander_column(column)
# set the position of the current hpaned
self.hpaneds[room_jid] = self.xmls[room_jid].get_widget(
'hpaned')
self.hpaneds[room_jid].set_position(self.hpaned_position)
self.redraw_tab(room_jid)
self.show_title()
conversation_textview.grab_focus()
def on_treeview_size_allocate(self, widget, allocation):
"""The MUC treeview has resized. Move the hpaneds in all tabs to match"""
thisroom_jid = self.get_active_jid()
self.hpaned_position = self.hpaneds[thisroom_jid].get_position()
for room_jid in self.xmls:
self.hpaneds[room_jid].set_position(self.hpaned_position)
def tree_cell_data_func(self, column, renderer, model, iter, data=None):
if model.iter_parent(iter):
bgcolor = gajim.config.get('userbgcolor')
@ -708,7 +747,6 @@ class GroupchatWindow(chat.Chat):
bgcolor = gajim.config.get('groupbgcolor')
renderer.set_property('cell-background', bgcolor)
def on_actions_button_clicked(self, button):
"""popup action menu"""
self.gc_actions_menu.popup(None, None, None, 1, 0)

View File

@ -15208,7 +15208,7 @@ the Jabber network.</property>
<property name="use_underline">True</property>
<child internal-child="image">
<widget class="GtkImage" id="image678">
<widget class="GtkImage" id="image684">
<property name="visible">True</property>
<property name="stock">gtk-properties</property>
<property name="icon_size">1</property>
@ -15228,7 +15228,7 @@ the Jabber network.</property>
<property name="use_underline">True</property>
<child internal-child="image">
<widget class="GtkImage" id="image679">
<widget class="GtkImage" id="image685">
<property name="visible">True</property>
<property name="stock">gtk-edit</property>
<property name="icon_size">1</property>
@ -15242,13 +15242,13 @@ the Jabber network.</property>
</child>
<child>
<widget class="GtkImageMenuItem" id="add_bookmark1">
<widget class="GtkImageMenuItem" id="bookmark_room_menuitem">
<property name="visible">True</property>
<property name="label" translatable="yes">Add _Bookmark</property>
<property name="label" translatable="yes">_Bookmark This Room</property>
<property name="use_underline">True</property>
<child internal-child="image">
<widget class="GtkImage" id="image680">
<widget class="GtkImage" id="image686">
<property name="visible">True</property>
<property name="stock">gtk-add</property>
<property name="icon_size">1</property>

View File

@ -58,6 +58,14 @@ class TabbedChatWindow(chat.Chat):
self.on_chat_notebook_key_press_event)
self.xml.signal_connect('on_chat_notebook_switch_page',
self.on_chat_notebook_switch_page)
if gajim.config.get('saveposition'):
# get window position and size from config
self.window.move(gajim.config.get('chat-x-position'),
gajim.config.get('chat-y-position'))
self.window.resize(gajim.config.get('chat-width'),
gajim.config.get('chat-height'))
self.window.show_all()
def save_var(self, jid):
@ -181,6 +189,15 @@ class TabbedChatWindow(chat.Chat):
if dialog.get_response() != gtk.RESPONSE_OK:
return True #stop the propagation of the event
if gajim.config.get('saveposition'):
# save the window size and position
x, y = self.window.get_position()
gajim.config.set('chat-x-position', x)
gajim.config.set('chat-y-position', y)
width, height = self.window.get_size()
gajim.config.set('chat-width', width)
gajim.config.set('chat-height', height)
def on_tabbed_chat_window_destroy(self, widget):
#clean self.plugin.windows[self.account]['chats']
chat.Chat.on_window_destroy(self, widget, 'chats')