SolarFM/src/versions/solarfm-0.0.1/solarfm/core/fs_actions/crud_mixin.py

71 lines
2.3 KiB
Python

# Python imports
# Lib imports
# Application imports
class CRUDMixin:
"""docstring for CRUDMixin"""
def move_files(self, files, target):
self.handle_files(files, "move", target)
def paste_files(self):
state = event_system.emit_and_await("get_current_state")
target = f"{state.tab.get_current_directory()}"
if self._to_copy_files:
self.handle_files(self._to_copy_files, "copy", target)
elif self._to_cut_files:
self.handle_files(self._to_cut_files, "move", target)
def create_files(self):
fname_field = self._builder.get_object("new_fname_field")
cancel_creation = event_system.emit_and_await("show_new_file_menu", fname_field)
if cancel_creation:
event_system.emit("hide_new_file_menu")
return
file_name = fname_field.get_text().strip()
type = self._builder.get_object("new_file_toggle_type").get_state()
state = event_system.emit_and_await("get_current_state")
target = f"{state.tab.get_current_directory()}"
if file_name:
path = f"{target}/{file_name}"
if type == True: # Create File
self.handle_files([path], "create_file")
else: # Create Folder
self.handle_files([path], "create_dir")
event_system.emit("hide_new_file_menu")
def rename_files(self):
rename_label = self._builder.get_object("file_to_rename_label")
rename_input = self._builder.get_object("rename_fname")
state = event_system.emit_and_await("get_current_state")
for uri in state.uris:
entry = uri.split("/")[-1]
rename_label.set_label(entry)
rename_input.set_text(entry)
response = event_system.emit_and_await("show_rename_file_menu", rename_input)
if response == "skip_edit":
continue
if response == "cancel_edit":
break
rname_to = rename_input.get_text().strip()
if rname_to:
target = f"{state.tab.get_current_directory()}/{rname_to}"
self.handle_files([uri], "rename", target)
event_system.emit("hide_rename_file_menu")
event_system.emit_and_await("get_selected_files").clear()