Burathar
5 years ago
2 changed files with 83 additions and 0 deletions
@ -0,0 +1,48 @@
@@ -0,0 +1,48 @@
|
||||
class Color: |
||||
|
||||
def __init__(self, red, green, blue): |
||||
if not (Color.check_color_value(red) or Color.check_color_value(green) or Color.check_color_value(blue)): |
||||
print(f"Color is out of range") |
||||
return |
||||
self.red = red |
||||
self.green = green |
||||
self.blue = blue |
||||
|
||||
@classmethod |
||||
def from_hex(cls, hexstring): |
||||
"Initialize Color from hexstring (e.g. #ffffff)" |
||||
if isinstance(hexstring, str): |
||||
if hexstring[0] == '#': |
||||
hexstring = hexstring[1:] |
||||
if len(hexstring) == 6: |
||||
color = tuple(int(color[i:i+2], 16) for i in (0, 2, 4)) |
||||
return cls(color[0], color[1], color[2]) |
||||
|
||||
@classmethod |
||||
def from_name(cls, color_name): |
||||
"Initialize Color from name (e.g. 'white')" |
||||
color_name = str.lower(color_name) |
||||
|
||||
if color_name == 'white': |
||||
return cls(255,255,255) |
||||
elif color_name == 'black': |
||||
return cls(0, 0, 0) |
||||
elif color_name == 'red': |
||||
return cls(255, 0, 0) |
||||
elif color_name == 'green': |
||||
return cls(0, 255, 0) |
||||
elif color_name == 'blue': |
||||
return cls(0, 0, 255) |
||||
else: |
||||
raise ValueError(f'Colorname {color_name} was not recognised') |
||||
|
||||
|
||||
@staticmethod |
||||
def check_color_value(value): |
||||
if not isinstance(value, int): |
||||
print(f"Colorvalue '{value}' is not a number") |
||||
return False |
||||
if value < 0 or value > 255: |
||||
print(f"Color value '{value}' is out of bounds (0-255)") |
||||
return False |
||||
return True |
@ -0,0 +1,35 @@
@@ -0,0 +1,35 @@
|
||||
from pathlib import Path |
||||
import json |
||||
import math |
||||
|
||||
class Keymap: |
||||
|
||||
def __init__(self): |
||||
self.keys = dict() |
||||
pass |
||||
|
||||
def load_from_file(self, path = ''): |
||||
if path == '': |
||||
path = Path.home() / '.config/openrazer_scripter/keymap.json' |
||||
with open(path,'r') as keymap_file: |
||||
self.keys = json.load(keymap_file) |
||||
|
||||
def set_keys(self, keys): |
||||
self.keys = keys |
||||
|
||||
def get_row_column(self, index): |
||||
row = math.floor(index / 22) |
||||
column = index % 22 |
||||
return (row, column) |
||||
|
||||
def get_location(self, key): |
||||
if key in self.keys.keys(): |
||||
value = self.keys[key] |
||||
return self.get_row_column(value) |
||||
|
||||
def write_keymap_file(self): |
||||
keymap_json = json.dumps(self.keys) |
||||
path = Path.home() / '.config/openrazer_scripter/keymap.json' |
||||
Path(path.parent).mkdir(parents=True, exist_ok=True) |
||||
with open(path,'w') as keymap_file: |
||||
keymap_file.write(keymap_json) |
Loading…
Reference in new issue