diff --git a/message_box_size/config_dialog.ui b/message_box_size/config_dialog.ui index fc16a22..60cdb6d 100644 --- a/message_box_size/config_dialog.ui +++ b/message_box_size/config_dialog.ui @@ -18,7 +18,7 @@ True 0.029999999329447746 - Message box size + Minimum lines start False @@ -27,14 +27,14 @@ - + True True 6 True True - + False @@ -58,7 +58,7 @@ - Do not resize message box + Do not resize input message field True False False diff --git a/message_box_size/manifest.ini b/message_box_size/manifest.ini index 068a27a..cb4fdf0 100644 --- a/message_box_size/manifest.ini +++ b/message_box_size/manifest.ini @@ -1,7 +1,7 @@ [info] name: Message Box Size short_name: message_box_size -version: 0.1 +version: 0.2 description: Allows you to adjust the height of the new message input field. authors: Denis Fomin homepage: http://trac-plugins.gajim.org/wiki/JuickPlugin diff --git a/message_box_size/msg_box_size.py b/message_box_size/msg_box_size.py index 44d5bba..6ec9cdc 100644 --- a/message_box_size/msg_box_size.py +++ b/message_box_size/msg_box_size.py @@ -18,7 +18,7 @@ class MsgBoxSizePlugin(GajimPlugin): 'chat_control_base': (self.connect_with_chat_control, self.disconnect_from_chat_control)} self.config_default_values = {'Do_not_resize': (False, ''), - 'Message_box_size': (40, ''),} + 'Minimum_lines': (2, ''),} self.chat_control = None self.controls = [] @@ -37,8 +37,12 @@ class MsgBoxSizePlugin(GajimPlugin): class Base(object): def __init__(self, plugin, chat_control): - chat_control.msg_textview.set_property('height-request', - plugin.config['Message_box_size']) + tbuffer = chat_control.msg_textview.get_buffer() + min_size = chat_control.msg_textview.get_line_yrange( + tbuffer.get_start_iter())[1] * plugin.config['Minimum_lines'] + 2 + + chat_control.msg_textview.set_property('height-request', min_size) + # plugin.config['Minimum_lines']) self.id_ = chat_control.msg_textview.connect('size-request', self.size_request) @@ -47,14 +51,17 @@ class Base(object): self.plugin = plugin def size_request(self, msg_textview, requisition): + tbuffer = msg_textview.get_buffer() + min_size = msg_textview.get_line_yrange(tbuffer.get_start_iter())[1] * \ + self.plugin.config['Minimum_lines'] + 2 + if self.plugin.config['Do_not_resize']: self.chat_control.msg_scrolledwindow.set_property( 'vscrollbar-policy', gtk.POLICY_AUTOMATIC) - elif requisition.height > self.plugin.config['Message_box_size']: + elif requisition.height > min_size: msg_textview.set_property('height-request', requisition.height) else: - msg_textview.set_property('height-request', - self.plugin.config['Message_box_size']) + msg_textview.set_property('height-request', min_size) def disconnect_from_chat_control(self): if self.id_ not in self.chat_control.handlers: @@ -74,8 +81,8 @@ class MsgBoxSizePluginConfigDialog(GajimPluginConfigDialog): self.xml.set_translation_domain('gajim_plugins') self.xml.add_objects_from_file(self.GTK_BUILDER_FILE_PATH, ['vbox1']) self.checkbutton = self.xml.get_object('checkbutton') - self.spinbutton = self.xml.get_object('message_box_size') - self.spinbutton.get_adjustment().set_all(20, 16, 200, 1, 10, 0) + self.spinbutton = self.xml.get_object('minimum_lines') + self.spinbutton.get_adjustment().set_all(20, 1, 10, 1, 10, 0) vbox = self.xml.get_object('vbox1') self.child.pack_start(vbox) @@ -83,10 +90,10 @@ class MsgBoxSizePluginConfigDialog(GajimPluginConfigDialog): def on_run(self): self.checkbutton.set_active(self.plugin.config['Do_not_resize']) - self.spinbutton.set_value(self.plugin.config['Message_box_size']) + self.spinbutton.set_value(self.plugin.config['Minimum_lines']) def on_checkbutton_toggled(self, checkbutton): self.plugin.config['Do_not_resize'] = checkbutton.get_active() - def on_message_box_size_value_changed(self, spinbutton): - self.plugin.config['Message_box_size'] = spinbutton.get_value() + def on_minimum_lines_value_changed(self, spinbutton): + self.plugin.config['Minimum_lines'] = spinbutton.get_value()