Dynamic reconfig for one_message_window config changes
This commit is contained in:
parent
f01c0eac85
commit
67fce64250
|
@ -534,69 +534,12 @@ class PreferencesWindow:
|
||||||
gajim.interface.roster.change_roster_style(None)
|
gajim.interface.roster.change_roster_style(None)
|
||||||
gajim.interface.save_config()
|
gajim.interface.save_config()
|
||||||
|
|
||||||
# FIXME: Remove or implement for new window code
|
|
||||||
def merge_windows(self, kind):
|
|
||||||
for acct in gajim.connections:
|
|
||||||
# save buffers and close windows
|
|
||||||
buf1 = {}
|
|
||||||
buf2 = {}
|
|
||||||
saved_var = {}
|
|
||||||
windows = gajim.interface.instances[acct][kind]
|
|
||||||
jids = windows.keys()
|
|
||||||
for jid in jids:
|
|
||||||
window = windows[jid]
|
|
||||||
buf1[jid] = window.conversation_textviews[jid].get_buffer()
|
|
||||||
buf2[jid] = window.message_textviews[jid].get_buffer()
|
|
||||||
saved_var[jid] = window.save_var(jid)
|
|
||||||
window.window.destroy()
|
|
||||||
# open new tabbed chat windows
|
|
||||||
for jid in jids:
|
|
||||||
if kind == 'chats':
|
|
||||||
c = gajim.contacts.get_contact_with_highest_priority(acct, jid)
|
|
||||||
gajim.interface.roster.new_chat(c, acct)
|
|
||||||
if kind == 'gc':
|
|
||||||
gajim.interface.roster.new_room(jid, saved_var[jid]['nick'], acct)
|
|
||||||
window = windows[jid]
|
|
||||||
window.conversation_textviews[jid].set_buffer(buf1[jid])
|
|
||||||
window.message_textviews[jid].set_buffer(buf2[jid])
|
|
||||||
window.load_var(jid, saved_var[jid])
|
|
||||||
|
|
||||||
# FIXME: Remove or implement for new window code
|
|
||||||
def split_windows(self, kind):
|
|
||||||
for acct in gajim.connections:
|
|
||||||
# save buffers and close tabbed chat windows
|
|
||||||
buf1 = {}
|
|
||||||
buf2 = {}
|
|
||||||
saved_var = {}
|
|
||||||
windows = gajim.interface.instances[acct][kind]
|
|
||||||
jids = windows.keys()
|
|
||||||
if not 'tabbed' in jids:
|
|
||||||
continue
|
|
||||||
jids.remove('tabbed')
|
|
||||||
for jid in jids:
|
|
||||||
window = windows[jid]
|
|
||||||
buf1[jid] = window.conversation_textviews[jid].get_buffer()
|
|
||||||
buf2[jid] = window.message_textviews[jid].get_buffer()
|
|
||||||
saved_var[jid] = window.save_var(jid)
|
|
||||||
windows['tabbed'].window.destroy()
|
|
||||||
# open new tabbed chat windows
|
|
||||||
for jid in jids:
|
|
||||||
if kind == 'chats':
|
|
||||||
c = gajim.contacts.get_contact_with_highest_priority(acct, jid)
|
|
||||||
gajim.interface.roster.new_chat(c, acct)
|
|
||||||
if kind == 'gc':
|
|
||||||
gajim.interface.roster.new_room(jid, saved_var[jid]['nick'], acct)
|
|
||||||
window = windows[jid]
|
|
||||||
window.conversation_textviews[jid].set_buffer(buf1[jid])
|
|
||||||
window.message_textviews[jid].set_buffer(buf2[jid])
|
|
||||||
window.load_var(jid, saved_var[jid])
|
|
||||||
|
|
||||||
def on_one_window_type_combo_changed(self, widget):
|
def on_one_window_type_combo_changed(self, widget):
|
||||||
active = widget.get_active()
|
active = widget.get_active()
|
||||||
config_type = common.config.opt_one_window_types[active]
|
config_type = common.config.opt_one_window_types[active]
|
||||||
gajim.config.set('one_message_window', config_type)
|
gajim.config.set('one_message_window', config_type)
|
||||||
gajim.interface.save_config()
|
gajim.interface.save_config()
|
||||||
# FIXME: Update current windows? Meh
|
gajim.interface.msg_win_mgr.reconfig()
|
||||||
|
|
||||||
def apply_speller(self, kind):
|
def apply_speller(self, kind):
|
||||||
for acct in gajim.connections:
|
for acct in gajim.connections:
|
||||||
|
|
|
@ -409,6 +409,7 @@ class MessageWindow:
|
||||||
|
|
||||||
def _on_notebook_switch_page(self, notebook, page, page_num):
|
def _on_notebook_switch_page(self, notebook, page, page_num):
|
||||||
old_no = notebook.get_current_page()
|
old_no = notebook.get_current_page()
|
||||||
|
if old_no >= 0:
|
||||||
old_ctrl = self._widget_to_control(notebook.get_nth_page(old_no))
|
old_ctrl = self._widget_to_control(notebook.get_nth_page(old_no))
|
||||||
old_ctrl.set_control_active(False)
|
old_ctrl.set_control_active(False)
|
||||||
|
|
||||||
|
@ -706,6 +707,7 @@ class MessageWindowMgr:
|
||||||
for w in self.windows():
|
for w in self.windows():
|
||||||
self.save_state(w)
|
self.save_state(w)
|
||||||
w.window.hide()
|
w.window.hide()
|
||||||
|
w.window.destroy()
|
||||||
|
|
||||||
def save_state(self, msg_win):
|
def save_state(self, msg_win):
|
||||||
if not gajim.config.get('saveposition'):
|
if not gajim.config.get('saveposition'):
|
||||||
|
@ -746,3 +748,35 @@ class MessageWindowMgr:
|
||||||
gajim.config.set(pos_y_key, y)
|
gajim.config.set(pos_y_key, y)
|
||||||
gajim.config.set(size_width_key, width)
|
gajim.config.set(size_width_key, width)
|
||||||
gajim.config.set(size_height_key, height)
|
gajim.config.set(size_height_key, height)
|
||||||
|
|
||||||
|
def reconfig(self):
|
||||||
|
for w in self._windows.values():
|
||||||
|
self.save_state(w)
|
||||||
|
# Map the mode to a int constant for frequent compares
|
||||||
|
mode = gajim.config.get('one_message_window')
|
||||||
|
if self.mode == common.config.opt_one_window_types.index(mode):
|
||||||
|
# No change
|
||||||
|
return
|
||||||
|
self.mode = common.config.opt_one_window_types.index(mode)
|
||||||
|
|
||||||
|
controls = []
|
||||||
|
for w in self._windows.values():
|
||||||
|
w.window.hide()
|
||||||
|
while w.notebook.get_n_pages():
|
||||||
|
page = w.notebook.get_nth_page(0)
|
||||||
|
ctrl = w._widget_to_control(page)
|
||||||
|
w.notebook.remove_page(0)
|
||||||
|
page.unparent()
|
||||||
|
controls.append(ctrl)
|
||||||
|
w.window.destroy()
|
||||||
|
|
||||||
|
for k in self._windows.keys():
|
||||||
|
del self._windows[k]
|
||||||
|
self._windows = {}
|
||||||
|
|
||||||
|
for ctrl in controls:
|
||||||
|
mw = self.get_window(ctrl.contact.jid)
|
||||||
|
if not mw:
|
||||||
|
mw = self.create_window(ctrl.contact, ctrl.account, ctrl.type_id)
|
||||||
|
ctrl.parent_win = mw
|
||||||
|
mw.new_tab(ctrl)
|
||||||
|
|
Loading…
Reference in New Issue