Added missing view files to native gui
This commit is contained in:
@@ -0,0 +1,85 @@
|
||||
# SPDX-License-Identifier: WTFPL
|
||||
|
||||
"""
|
||||
Generic view object
|
||||
|
||||
SPDX-License-Identifier: WTFPL
|
||||
"""
|
||||
import os
|
||||
import gi
|
||||
gi.require_version("Gtk", "3.0")
|
||||
from gi.repository import Gtk
|
||||
from yms import gtkutils
|
||||
|
||||
class View:
|
||||
def __init__(self, context, title, ui_file):
|
||||
self.context = context
|
||||
self.db = context.db
|
||||
self.vessel = context.vessel
|
||||
self.user = context.user
|
||||
self.title = title
|
||||
builder = Gtk.Builder()
|
||||
builder.set_translation_domain(context.textdomain)
|
||||
builder.add_from_file(os.path.join(context.ui_path, ui_file))
|
||||
builder.connect_signals(self)
|
||||
self.topwidget = builder.get_object("topobject")
|
||||
gtkutils.init_named_controls(self, builder)
|
||||
|
||||
def on_textview_keypress(self, widget, event):
|
||||
# Generic limit length function
|
||||
if event.state & Gdk.ModifierType.CONTROL_MASK:
|
||||
allowed_ctrl_keys = (
|
||||
Gdk.KEY_a,
|
||||
Gdk.KEY_c,
|
||||
Gdk.KEY_x,
|
||||
)
|
||||
if event.keyval in allowed_ctrl_keys:
|
||||
return False
|
||||
allowed_keys = (
|
||||
Gdk.KEY_BackSpace,
|
||||
Gdk.KEY_Delete,
|
||||
Gdk.KEY_Left,
|
||||
Gdk.KEY_Right,
|
||||
Gdk.KEY_Up,
|
||||
Gdk.KEY_Down,
|
||||
Gdk.KEY_Home,
|
||||
Gdk.KEY_End,
|
||||
Gdk.KEY_Page_Up,
|
||||
Gdk.KEY_Page_Down,
|
||||
)
|
||||
print("keypress")
|
||||
if event.keyval in allowed_keys:
|
||||
return False
|
||||
buf = widget.get_buffer()
|
||||
start = buf.get_start_iter()
|
||||
end = buf.get_end_iter()
|
||||
text = buf.get_text(start, end, True)
|
||||
if len(text) >= 150:
|
||||
return True
|
||||
return False
|
||||
|
||||
def on_textview_paste(self, widget):
|
||||
# Generic limit length function
|
||||
print("paste")
|
||||
buf = widget.get_buffer()
|
||||
start = buf.get_start_iter()
|
||||
end = buf.get_end_iter()
|
||||
text = buf.get_text(start, end, True)
|
||||
if buf.get_has_selection():
|
||||
sel_start, sel_end = buf.get_selection_bounds()
|
||||
selected_text = buf.get_text(sel_start, sel_end, True)
|
||||
current_length = len(text) - len(selected_text)
|
||||
else:
|
||||
current_length = len(text)
|
||||
remaining = 150 - current_length
|
||||
if remaining <= 0:
|
||||
return True
|
||||
clipboard = widget.get_clipboard(Gdk.SELECTION_CLIPBOARD)
|
||||
cliptext = clipboard.wait_for_text()
|
||||
if cliptext:
|
||||
cliptext = cliptext[:remaining]
|
||||
if buf.get_has_selection():
|
||||
sel_start, sel_end = buf.get_selection_bounds()
|
||||
buf.delete(sel_start, sel_end)
|
||||
buf.insert_at_cursor(text)
|
||||
return True
|
||||
Reference in New Issue
Block a user