Made more pythonic
This commit is contained in:
@@ -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()
|
||||
@@ -1,2 +1,3 @@
|
||||
from .Settings import Settings
|
||||
from .CrossClassSignals import CrossClassSignals
|
||||
"""
|
||||
Utils module
|
||||
"""
|
||||
|
||||
@@ -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
92
src/utils/utils.py
Normal 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()
|
||||
Reference in New Issue
Block a user