Made more pythonic

This commit is contained in:
2022-09-01 16:35:21 -05:00
parent ec24e5fada
commit 1f08770f6e
16 changed files with 358 additions and 349 deletions

View File

@@ -1,96 +0,0 @@
# Python imports
import os, threading, time, datetime
# Lib imports
from gi.repository import GLib
import pyscreenshot as capture
# Application imports
def threaded(fn):
def wrapper(*args, **kwargs):
threading.Thread(target=fn, args=args, kwargs=kwargs).start()
return wrapper
class CrossClassSignals:
def __init__(self, settings):
self.settings = settings
self.builder = self.settings.returnBuilder()
self.SCREENSHOTS_DIR = self.settings.returnScreenshotsDir()
self.fileStore = self.builder.get_object("fileStore")
self.refreshingState = False
def returnRefreshingState(self):
return self.refreshingState
def setRefreshingState(self, state):
self.refreshingState = state
@threaded
def refereshDirectoryList(self):
self.refreshingState = True
images = self.returnDirectoryList()
images.sort()
if len(images) != len(self.fileStore):
self.fileStore.clear()
for image in images:
GLib.idle_add(self.addToStore, (image))
# self.fileStore.sort()
self.refreshingState = False
@threaded
def addToStore(self, image):
self.fileStore.append([image])
def returnDirectoryList(self):
files = []
for file in os.listdir(self.SCREENSHOTS_DIR):
if os.path.isfile(os.path.join(self.SCREENSHOTS_DIR, file)):
files.append(file)
return files
def boundingBoxGrab(self, x1, y1, x2, y2):
# childprocess=False needed to not crash program
im = capture.grab(bbox=(x1, y1, x2, y2), childprocess=False)
im.save(self.generateScreenshotName())
def generateScreenshotName(self):
return self.SCREENSHOTS_DIR + '/scrshot_' + self.getTime() + '.png'
def getTime(self):
now = datetime.datetime.now()
return now.strftime("%Y-%m-%d %H:%M:%S")
def sleep(self, wait=None):
delayAmount = self.builder.get_object("delayAmount")
if not wait:
wait = delayAmount.get_value_as_int()
time.sleep(wait)
def getClipboardData(self):
proc = subprocess.Popen(['xclip','-selection', 'clipboard', '-o'], stdout=subprocess.PIPE)
retcode = proc.wait()
data = proc.stdout.read()
return data.decode("utf-8").strip()
def setClipboardData(self, data):
proc = subprocess.Popen(['xclip','-selection','clipboard'], stdin=subprocess.PIPE)
proc.stdin.write(data)
proc.stdin.close()
retcode = proc.wait()
def close(self, widget):
gtk.main_quit()

View File

@@ -1,2 +1,3 @@
from .Settings import Settings
from .CrossClassSignals import CrossClassSignals
"""
Utils module
"""

View File

@@ -43,14 +43,14 @@ class Settings:
self.builder.add_from_file(self._GLADE_FILE)
def createWindow(self):
def create_window(self):
# Get window and connect signals
window = self.builder.get_object("Main_Window")
window.connect("delete-event", Gtk.main_quit)
self.setWindowData(window)
self.set_window_data(window)
return window
def setWindowData(self, window):
def set_window_data(self, window):
screen = window.get_screen()
visual = screen.get_rgba_visual()
@@ -58,13 +58,13 @@ class Settings:
window.set_visual(visual)
# bind css file
cssProvider = Gtk.CssProvider()
cssProvider.load_from_path(self._CSS_FILE)
screen = Gdk.Screen.get_default()
styleContext = Gtk.StyleContext()
styleContext.add_provider_for_screen(screen, cssProvider, Gtk.STYLE_PROVIDER_PRIORITY_USER)
css_provider = Gtk.CssProvider()
css_provider.load_from_path(self._CSS_FILE)
screen = Gdk.Screen.get_default()
style_context = Gtk.StyleContext()
style_context.add_provider_for_screen(screen, css_provider, Gtk.STYLE_PROVIDER_PRIORITY_USER)
def getMonitorData(self):
def get_monitor_data(self):
screen = self.builder.get_object("Main_Window").get_screen()
wdth = screen.get_width()
hght = screen.get_height()
@@ -80,8 +80,8 @@ class Settings:
return monitors
def returnBuilder(self): return self.builder
def returnScreenshotsDir(self): return self.SCREENSHOTS_DIR
def get_builder(self): return self.builder
def get_screenshots_dir(self): return self.SCREENSHOTS_DIR
# Filter returns
def returnImagesFilter(self): return self.images
def get_images_filter(self): return self.images

92
src/utils/utils.py Normal file
View File

@@ -0,0 +1,92 @@
# Python imports
import os, time, datetime
# Lib imports
from gi.repository import GLib
import pyscreenshot as capture
# Application imports
class Utils:
def __init__(self, _settings):
self.settings = _settings
self.builder = self.settings.get_builder()
self.SCREENSHOTS_DIR = self.settings.get_screenshots_dir()
self.file_store = self.builder.get_object("fileStore")
self.refreshing_state = False
def get_refreshing_state(self):
return self.refreshing_state
def set_refreshing_state(self, state):
self.refreshing_state = state
@threaded
def referesh_directory_list(self):
self.refreshing_state = True
images = self.get_directory_list()
images.sort()
if len(images) != len(self.file_store):
self.file_store.clear()
for image in images:
GLib.idle_add(self.add_to_store, (image))
# self.file_store.sort()
self.refreshing_state = False
@threaded
def add_to_store(self, image):
self.file_store.append([image])
def get_directory_list(self):
files = []
for file in os.listdir(self.SCREENSHOTS_DIR):
if os.path.isfile(os.path.join(self.SCREENSHOTS_DIR, file)):
files.append(file)
return files
def do_bounding_box_grab(self, x1, y1, x2, y2):
# childprocess=False needed to not crash program
im = capture.grab(bbox=(x1, y1, x2, y2), childprocess=False)
im.save(self.generate_screenshot_name())
def generate_screenshot_name(self):
return f"{self.SCREENSHOTS_DIR}/scrshot_{self.get_time()}.png"
def get_time(self):
now = datetime.datetime.now()
return now.strftime("%Y-%m-%d %H:%M:%S")
def sleep(self, wait=None):
delay_amount = self.builder.get_object("delayAmount")
if not wait:
wait = delay_amount.get_value_as_int()
time.sleep(wait)
def get_clipboard_data(self):
proc = subprocess.Popen(['xclip','-selection', 'clipboard', '-o'], stdout=subprocess.PIPE)
retcode = proc.wait()
data = proc.stdout.read()
return data.decode("utf-8").strip()
def setClipboardData(self, data):
proc = subprocess.Popen(['xclip','-selection','clipboard'], stdin=subprocess.PIPE)
proc.stdin.write(data)
proc.stdin.close()
retcode = proc.wait()
def close(self, widget):
gtk.main_quit()