From 0f6fd394f39406b76e8f18fe4c2ddb791194f978 Mon Sep 17 00:00:00 2001 From: Chandler J Date: Mon, 18 Mar 2024 13:14:40 -0600 Subject: began implementating save states for color palettes and MOAR POLISH --- src/color_engine.py | 4 ++-- src/get_args.py | 23 +++++++++++++++++++---- src/initialize_rofi.py | 7 ++++--- src/instant_rice.py | 16 ++++++++++++---- src/manage_saves.py | 21 +++++++++++++++++++++ src/user_interface.py | 1 - 6 files changed, 58 insertions(+), 14 deletions(-) create mode 100644 src/manage_saves.py diff --git a/src/color_engine.py b/src/color_engine.py index fb885a8..0e43475 100644 --- a/src/color_engine.py +++ b/src/color_engine.py @@ -1,7 +1,7 @@ import cv2 as cv from sklearn.cluster import KMeans -def grabColors(img_path: str, num_colors: int) -> list(): +def grabColors(img_path: str, num_colors: int) -> list: """ Takes in an image, and Number of colors, then returns a list of those colors. The list of colors will contain the most prominent colors present in the image. @@ -32,7 +32,7 @@ def compColors(color_list: list) -> list: compliments.append('#' + ''.join(comp)) return compliments -def checkContrast(hex_color_list: list, hex_compliment_list: list) -> list(): +def checkContrast(hex_color_list: list, hex_compliment_list: list) -> list: """ Given the list of colors and their compliments, reutrn a list of the contrast values between the colors diff --git a/src/get_args.py b/src/get_args.py index ade7740..ebdf464 100644 --- a/src/get_args.py +++ b/src/get_args.py @@ -1,24 +1,39 @@ import user_interface +import manage_saves import os +from rich import print def get_args(args, walls_dir) -> tuple: # arguments that can be passed into program initialize = False reconfigure = False - + color_save = None + VALID_ARGS = ['-r', '-p', '--initialize', '--reconfigure'] + if '-p' in args: + index = args.index('-p') + if os.path.isfile(args[index + 1]): + color_save = manage_saves.load_color_palette(args[index + 1]) + else: + print('invalid arguments. -p should be followed by a color palette save') + exit(2) + if '-r' in args: img_path = user_interface.pickRandomWallpaper(walls_dir) else: img_path = f"{os.getcwd()}/{args[1]}" + if not os.path.exists(img_path) and\ + args[1] not in VALID_ARGS: + print(f'[bold red]ERROR: invalid image path {os.getcwd()}/{args[1]}') + exit(3) + if '--initialize' in args: initialize = True if '--reconfigure' in args: reconfigure = True - return img_path, initialize, reconfigure + return img_path, initialize, reconfigure, color_save def usage(args) -> None: - print(f""" -Instant Rice - An automatic theming utilitiy + print(f"""Instant Rice - An automatic theming utilitiy Usage: python3 {args[0]} [Relative Image Path] [-r, --initialize, --reconfigure, --dmenu, --nolock] diff --git a/src/initialize_rofi.py b/src/initialize_rofi.py index cc3fd0a..9ebd3e3 100644 --- a/src/initialize_rofi.py +++ b/src/initialize_rofi.py @@ -11,9 +11,9 @@ def reconfigureRofi() -> None: print('[bold red]Initializing Rofi Theme') def changeConfigContents() -> None: - print('path exists') + print('[bold green]path exists') if os.path.exists(f'{configPath}config.rasi'): - print('config present') + print('[bold green]config present. modifying existing configuration') with open(f'{configPath}config.rasi', 'r') as file: data = file.readlines() themeSet = False @@ -34,9 +34,10 @@ def reconfigureRofi() -> None: dirExists = os.path.isdir(configPath) if dirExists: changeConfigContents() + dropRofiTheme() else: # Drop the Rofi theme config in rofi - print(f'path doesnt exist. Creating directory {configPath}') + print(f'[bold red]path doesnt exist. Creating directory {configPath}') os.makedirs(configPath) changeConfigContents() dropRofiTheme() diff --git a/src/instant_rice.py b/src/instant_rice.py index 5076a6b..e13f67b 100644 --- a/src/instant_rice.py +++ b/src/instant_rice.py @@ -1,20 +1,28 @@ import sys + import user_interface import update_rofi import update_i3 import update_polybar +import initialize_i3 +import initialize_rofi from get_args import get_args,usage from load_config import systemConfig - +from rich import print if __name__ == '__main__': if len(sys.argv) > 1: + config = systemConfig() - img_path, initialize, reconfigure = get_args(sys.argv, config.wallpaper_directory) + img_path, initialize, reconfigure, color_save = get_args(sys.argv, config.wallpaper_directory) + if initialize: + initialize_rofi.reconfigureRofi() + print('[bold green]Initialization Completed. Exiting...') + exit(0) hex_colors, hex_compliments = user_interface.colorPickerUI(img_path, config.num_palettes) - if config.polybar_config != "": + if config.polybar_config: update_polybar.updatePolybarTheme(config.polybar_config, hex_colors, hex_compliments) - if config.rofi_config != "": + if config.rofi_config: update_rofi.updateRofiTheme(config.rofi_config, hex_colors, hex_compliments) if config.i3_config: update_i3.updatei3Theme(config.i3_config, img_path, hex_colors, hex_compliments, config.generate_i3_lock, config.use_dmenu, config.i3_lock_image) diff --git a/src/manage_saves.py b/src/manage_saves.py new file mode 100644 index 0000000..988b9a2 --- /dev/null +++ b/src/manage_saves.py @@ -0,0 +1,21 @@ +import pickle +from rich import print + +def save_color_palette(hex_colors, hex_compliments, save_directory): + + colors = [hex_colors, hex_compliments] + + with open(save_directory, 'wb') as file: + pickle.dump(colors, file, pickle.HIGHEST_PROTOCOL) + + print('[bold green]color palette saved successfully') + +def load_color_palette(save_location): + with open(save_location, 'rb') as file: + try: + data = pickle.load(file) + except: + print('invalid arguments. -p should be followed by a color palette save') + exit(2) + + return data diff --git a/src/user_interface.py b/src/user_interface.py index c31f8fe..934098c 100644 --- a/src/user_interface.py +++ b/src/user_interface.py @@ -1,6 +1,5 @@ import os import random - import color_engine from rich import print -- cgit v1.2.3