Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
G
gajim-plugins
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
60
Issues
60
List
Boards
Labels
Service Desk
Milestones
Merge Requests
7
Merge Requests
7
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Incidents
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
gajim
gajim-plugins
Commits
2a0947a0
Commit
2a0947a0
authored
Dec 27, 2019
by
Philipp Hörist
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[message_box_size] Rewrite plugin
- Much simpler code - New config dialog
parent
7b455cff
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
54 additions
and
163 deletions
+54
-163
message_box_size/config_dialog.py
message_box_size/config_dialog.py
+40
-0
message_box_size/config_dialog.ui
message_box_size/config_dialog.ui
+0
-77
message_box_size/msg_box_size.py
message_box_size/msg_box_size.py
+14
-86
No files found.
message_box_size/config_dialog.py
0 → 100644
View file @
2a0947a0
from
gi.repository
import
GObject
from
gi.repository
import
Gtk
from
gajim.gtk.settings
import
SettingsDialog
from
gajim.gtk.settings
import
SpinSetting
from
gajim.gtk.const
import
Setting
from
gajim.gtk.const
import
SettingType
from
gajim.plugins.plugins_i18n
import
_
class
MessageBoxSizeConfigDialog
(
SettingsDialog
):
def
__init__
(
self
,
plugin
,
parent
):
self
.
plugin
=
plugin
settings
=
[
Setting
(
'PreviewSizeSpinSetting'
,
_
(
'Height in pixels'
),
SettingType
.
VALUE
,
self
.
plugin
.
config
[
'HEIGHT'
],
callback
=
self
.
on_setting
,
data
=
'HEIGHT'
,
desc
=
_
(
'Size of message input in pixels'
),
props
=
{
'range_'
:
(
20
,
200
)}),
]
SettingsDialog
.
__init__
(
self
,
parent
,
_
(
'Message Box Size Configuration'
),
Gtk
.
DialogFlags
.
MODAL
,
settings
,
None
,
extend
=
[(
'PreviewSizeSpinSetting'
,
SizeSpinSetting
)])
def
on_setting
(
self
,
value
,
data
):
self
.
plugin
.
config
[
data
]
=
value
class
SizeSpinSetting
(
SpinSetting
):
__gproperties__
=
{
"setting-value"
:
(
int
,
'Size'
,
''
,
20
,
200
,
20
,
GObject
.
ParamFlags
.
READWRITE
),
}
def
__init__
(
self
,
*
args
,
**
kwargs
):
SpinSetting
.
__init__
(
self
,
*
args
,
**
kwargs
)
message_box_size/config_dialog.ui
deleted
100644 → 0
View file @
7b455cff
<?xml version="1.0"?>
<interface>
<requires
lib=
"gtk+"
version=
"2.16"
/>
<!-- interface-naming-policy toplevel-contextual -->
<object
class=
"GtkWindow"
id=
"window1"
>
<child>
<object
class=
"GtkVBox"
id=
"vbox1"
>
<property
name=
"visible"
>
True
</property>
<property
name=
"orientation"
>
vertical
</property>
<child>
<object
class=
"GtkVBox"
id=
"vbox3"
>
<property
name=
"visible"
>
True
</property>
<property
name=
"orientation"
>
vertical
</property>
<child>
<object
class=
"GtkHBox"
id=
"hbox1"
>
<property
name=
"visible"
>
True
</property>
<child>
<object
class=
"GtkLabel"
id=
"message_box_size_label"
>
<property
name=
"visible"
>
True
</property>
<property
name=
"xalign"
>
0.029999999329447746
</property>
<property
name=
"label"
translatable=
"yes"
>
Minimum lines
</property>
<property
name=
"ellipsize"
>
start
</property>
<property
name=
"track_visited_links"
>
False
</property>
</object>
<packing>
<property
name=
"position"
>
0
</property>
</packing>
</child>
<child>
<object
class=
"GtkSpinButton"
id=
"minimum_lines"
>
<property
name=
"visible"
>
True
</property>
<property
name=
"can_focus"
>
True
</property>
<property
name=
"invisible_char"
>
●
</property>
<property
name=
"width_chars"
>
6
</property>
<property
name=
"snap_to_ticks"
>
True
</property>
<property
name=
"numeric"
>
True
</property>
<signal
name=
"value_changed"
handler=
"on_minimum_lines_value_changed"
/>
</object>
<packing>
<property
name=
"expand"
>
False
</property>
<property
name=
"fill"
>
False
</property>
<property
name=
"position"
>
1
</property>
</packing>
</child>
</object>
<packing>
<property
name=
"expand"
>
False
</property>
<property
name=
"fill"
>
False
</property>
<property
name=
"position"
>
0
</property>
</packing>
</child>
</object>
<packing>
<property
name=
"expand"
>
False
</property>
<property
name=
"fill"
>
False
</property>
<property
name=
"position"
>
0
</property>
</packing>
</child>
<child>
<object
class=
"GtkCheckButton"
id=
"checkbutton"
>
<property
name=
"label"
translatable=
"yes"
>
Do not resize input message field
</property>
<property
name=
"visible"
>
True
</property>
<property
name=
"can_focus"
>
False
</property>
<property
name=
"receives_default"
>
False
</property>
<property
name=
"draw_indicator"
>
True
</property>
<signal
name=
"toggled"
handler=
"on_checkbutton_toggled"
/>
</object>
<packing>
<property
name=
"expand"
>
False
</property>
<property
name=
"fill"
>
False
</property>
<property
name=
"position"
>
1
</property>
</packing>
</child>
</object>
</child>
</object>
</interface>
message_box_size/msg_box_size.py
View file @
2a0947a0
from
gi.repository
import
Gtk
from
functools
import
partial
from
gajim.plugins
import
GajimPlugin
from
gajim.plugins.helpers
import
log_calls
from
gajim.plugins.gui
import
GajimPluginConfigDialog
from
gajim.plugins.plugins_i18n
import
_
from
message_box_size.config_dialog
import
MessageBoxSizeConfigDialog
class
MsgBoxSizePlugin
(
GajimPlugin
):
@
log_calls
(
'MsgBoxSizePlugin'
)
def
init
(
self
):
# pylint: disable=attribute-defined-outside-init
self
.
description
=
_
(
'Allows you to adjust the height'
' of the new message input field
.'
)
self
.
config_dialog
=
MsgBoxSizePluginConfigDialog
(
self
)
' of the message input
.'
)
self
.
config_dialog
=
partial
(
MessageBoxSizeConfigDialog
,
self
)
self
.
gui_extension_points
=
{
'chat_control_base'
:
(
self
.
connect_with_chat_control
,
self
.
disconnect_from_chat_control
)}
self
.
config_default_values
=
{
'Do_not_resize'
:
(
False
,
''
),
'Minimum_lines'
:
(
2
,
''
),}
self
.
chat_control
=
None
self
.
controls
=
[]
'chat_control_base'
:
(
self
.
_on_connect_chat_control
,
self
.
_on_disconnect_chat_control
)
}
self
.
config_default_values
=
{
'HEIGHT'
:
(
20
,
''
),}
@
log_calls
(
'MsgBoxSizePlugin'
)
def
connect_with_chat_control
(
self
,
chat_control
):
self
.
chat_control
=
chat_control
control
=
Base
(
self
,
self
.
chat_control
)
self
.
controls
.
append
(
control
)
def
_on_connect_chat_control
(
self
,
control
):
control
.
msg_textview
.
set_size_request
(
-
1
,
self
.
config
[
'HEIGHT'
])
@
log_calls
(
'MsgBoxSizePlugin'
)
def
disconnect_from_chat_control
(
self
,
chat_control
):
for
control
in
self
.
controls
:
control
.
disconnect_from_chat_control
()
self
.
controls
=
[]
class
Base
(
object
):
def
__init__
(
self
,
plugin
,
chat_control
):
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-allocate'
,
self
.
size_request
)
chat_control
.
handlers
[
self
.
id_
]
=
chat_control
.
msg_textview
self
.
chat_control
=
chat_control
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
.
PolicyType
.
AUTOMATIC
)
elif
requisition
.
height
>
min_size
:
msg_textview
.
set_property
(
'height-request'
,
requisition
.
height
)
else
:
msg_textview
.
set_property
(
'height-request'
,
min_size
)
def
disconnect_from_chat_control
(
self
):
if
self
.
id_
not
in
self
.
chat_control
.
handlers
:
return
if
self
.
chat_control
.
handlers
[
self
.
id_
].
handler_is_connected
(
self
.
id_
):
self
.
chat_control
.
handlers
[
self
.
id_
].
disconnect
(
self
.
id_
)
del
self
.
chat_control
.
handlers
[
self
.
id_
]
self
.
chat_control
.
msg_textview
.
set_property
(
'height-request'
,
-
1
)
self
.
chat_control
.
msg_textview
.
queue_draw
()
class
MsgBoxSizePluginConfigDialog
(
GajimPluginConfigDialog
):
def
init
(
self
):
self
.
GTK_BUILDER_FILE_PATH
=
self
.
plugin
.
local_file_path
(
'config_dialog.ui'
)
self
.
xml
=
Gtk
.
Builder
()
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
(
'minimum_lines'
)
self
.
spinbutton
.
get_adjustment
().
configure
(
20
,
1
,
10
,
1
,
10
,
0
)
vbox
=
self
.
xml
.
get_object
(
'vbox1'
)
self
.
get_child
().
pack_start
(
vbox
,
False
,
False
,
0
)
self
.
xml
.
connect_signals
(
self
)
def
on_run
(
self
):
self
.
checkbutton
.
set_active
(
self
.
plugin
.
config
[
'Do_not_resize'
])
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_minimum_lines_value_changed
(
self
,
spinbutton
):
self
.
plugin
.
config
[
'Minimum_lines'
]
=
spinbutton
.
get_value
()
@
staticmethod
def
_on_disconnect_chat_control
(
control
):
control
.
msg_textview
.
set_size_request
(
-
1
,
-
1
)
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment