generated from itdominator/Python-With-Gtk-Template
WIP File widget
This commit is contained in:
parent
b32eafcabe
commit
b3ba472dcc
|
@ -79,6 +79,14 @@ class DragArea(Gtk.Fixed):
|
|||
|
||||
def _on_drag_data_received(self, widget, drag_context, _x, _y, data, info, time):
|
||||
if info == 70:
|
||||
self._load_dnd_text(data, _x, _y)
|
||||
return
|
||||
|
||||
if info == 80:
|
||||
self._load_dnd_files(data, _x, _y)
|
||||
return
|
||||
|
||||
def _load_dnd_text(self, data, _x, _y):
|
||||
event_system.emit("set_widget_type", "TextAreaWidget")
|
||||
dynamic_widget = self.add_or_select_widget(x = _x, y = _y)
|
||||
body = dynamic_widget.get_body()
|
||||
|
@ -86,24 +94,17 @@ class DragArea(Gtk.Fixed):
|
|||
body.buffer.set_text(data.get_text())
|
||||
dynamic_widget.save()
|
||||
|
||||
return
|
||||
|
||||
if info == 80:
|
||||
def _load_dnd_files(self, data, _x, _y):
|
||||
uris = data.get_uris()
|
||||
|
||||
if len(uris) == 0:
|
||||
uris = data.get_text().split("\n")
|
||||
|
||||
for uri in uris:
|
||||
gfile = None
|
||||
try:
|
||||
gfile = Gio.File.new_for_uri(uri)
|
||||
except Exception as e:
|
||||
gfile = Gio.File.new_for_path(uri)
|
||||
event_system.emit("set_widget_type", "FileWidget")
|
||||
dynamic_widget = self.add_or_select_widget(x = _x, y = _y)
|
||||
dynamic_widget.set_file(uri)
|
||||
|
||||
# event_system.emit('create_view', (None, None, gfile,))
|
||||
|
||||
return
|
||||
|
||||
def _move_callback(self, widget = None, x = None, y = None):
|
||||
self.move(widget.get_parent(), x, y)
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
"""
|
||||
Widgets Selector Widgets
|
||||
"""
|
||||
from .file import FileWidget
|
||||
from .text_area import TextAreaWidget
|
||||
|
|
|
@ -0,0 +1,85 @@
|
|||
# Python imports
|
||||
|
||||
# Lib imports
|
||||
import gi
|
||||
gi.require_version('Gtk', '3.0')
|
||||
from gi.repository import Gtk
|
||||
from gi.repository import Gio
|
||||
|
||||
# Application imports
|
||||
from utils.widget_save_load_controller import WidgetSaveLoadController
|
||||
|
||||
|
||||
class FileWidget(WidgetSaveLoadController, Gtk.Box):
|
||||
def __init__(self):
|
||||
super(FileWidget, self).__init__()
|
||||
|
||||
self._file_path = None
|
||||
|
||||
self._setup_styling()
|
||||
self._setup_signals()
|
||||
self._subscribe_to_events()
|
||||
self._load_widgets()
|
||||
|
||||
event_system.emit("register_to_query_controller", (self, self.get_query_data))
|
||||
self.show_all()
|
||||
|
||||
|
||||
def new(self):
|
||||
widget = FileWidget()
|
||||
return widget
|
||||
|
||||
def _setup_styling(self):
|
||||
self.set_orientation(0)
|
||||
|
||||
def _setup_signals(self):
|
||||
self.connect("key-release-event", self._key_released)
|
||||
|
||||
def _subscribe_to_events(self):
|
||||
...
|
||||
|
||||
def _load_widgets(self):
|
||||
image = Gtk.Image(stock=Gtk.STOCK_MEDIA_PLAY )
|
||||
self.add(image)
|
||||
|
||||
def _key_released(self, widget = None, eve = None):
|
||||
if eve.type == 9:
|
||||
# if enter or spacebar:
|
||||
# pass
|
||||
...
|
||||
|
||||
def get_query_data(self):
|
||||
return self.get_file_name()
|
||||
|
||||
def get_saveable_data(self):
|
||||
self.save_collection["data"] = self.get_file_path()
|
||||
self.save_collection["widget_type"] = str(type(self).__name__)
|
||||
return self.save_collection
|
||||
|
||||
def set_saveable_data(self, data):
|
||||
self.save_collection = data
|
||||
self.load_saveable_data()
|
||||
|
||||
def load_saveable_data(self):
|
||||
self.set_file_path( self.save_collection["data"] )
|
||||
|
||||
|
||||
def set_file_path(self, path):
|
||||
try:
|
||||
self._file_path = Gio.File.new_for_uri(path)
|
||||
except Exception as e:
|
||||
self._file_path = Gio.File.new_for_path(path)
|
||||
|
||||
def get_file(self):
|
||||
return self._file_path
|
||||
|
||||
def get_file_path(self):
|
||||
path = self._file_path.get_path()
|
||||
if not path:
|
||||
path = self._file_path.get_uri()
|
||||
|
||||
return path
|
||||
|
||||
def get_file_name(self):
|
||||
info = self._file_path.query_info("standard::*", 0, cancellable = None)
|
||||
return info.get_display_name()
|
|
@ -28,6 +28,11 @@ class TextAreaWidget(WidgetSaveLoadController, GtkSource.View):
|
|||
self.show()
|
||||
|
||||
|
||||
def new(self):
|
||||
widget = TextAreaWidget()
|
||||
widget.buffer.set_text("Lorem ipsum dolor")
|
||||
return widget
|
||||
|
||||
def _setup_styling(self):
|
||||
...
|
||||
|
||||
|
@ -50,11 +55,6 @@ class TextAreaWidget(WidgetSaveLoadController, GtkSource.View):
|
|||
self.get_parent().save_needed = True
|
||||
self._buffer_hash = _hash
|
||||
|
||||
|
||||
def get_buffer_text(self):
|
||||
start, end = self.buffer.get_start_iter(), self.buffer.get_end_iter()
|
||||
return self.buffer.get_slice(start, end, True)
|
||||
|
||||
def get_query_data(self):
|
||||
return self.get_buffer_text()
|
||||
|
||||
|
@ -73,11 +73,13 @@ class TextAreaWidget(WidgetSaveLoadController, GtkSource.View):
|
|||
|
||||
self.buffer.set_text(text)
|
||||
|
||||
|
||||
|
||||
|
||||
def get_buffer_text(self):
|
||||
start, end = self.buffer.get_start_iter(), self.buffer.get_end_iter()
|
||||
return self.buffer.get_slice(start, end, True)
|
||||
|
||||
def get_hash(self, text):
|
||||
sha = hashlib.sha1(text.encode("utf-8"))
|
||||
return sha.hexdigest()
|
||||
|
||||
def new(self):
|
||||
widget = TextAreaWidget()
|
||||
widget.buffer.set_text("Lorem ipsum dolor")
|
||||
return widget
|
||||
|
|
Loading…
Reference in New Issue