Bugfixes, Smaller UI for displays with reduced resolution

This commit is contained in:
2024-01-23 18:11:13 +01:00
parent f9a84b18e8
commit 8a58e66c20
5 changed files with 331 additions and 251 deletions

View File

@@ -0,0 +1,20 @@
import gi
gi.require_version("Gtk", "3.0")
from gi.repository import Gdk
class Display:
""" Handling display informations and actions
"""
def __init__(self) -> None:
self.display = Gdk.Display.get_default()
def get_screen_height(self) -> int:
""" Estimate the height resolution of the primary display
Returns:
int: Height in pixel
"""
geometry = self.display.get_monitor(0).get_geometry()
return geometry.height

View File

@@ -0,0 +1,147 @@
import gi
gi.require_version("Gtk", "3.0")
from gi.repository import Gtk
class UI:
""" Class to handle UI components and actions
"""
def __init__(self, builder: Gtk.Builder) -> None:
# Page 1
self.tb_image_set: Gtk.ToggleButton = builder.get_object("tb_image_set")
self.tb_heic_file: Gtk.ToggleButton = builder.get_object("tb_heic_file")
self.tb_source_folder: Gtk.ToggleButton = builder.get_object("tb_source_folder")
self.img_tb_image_set: Gtk.Image = builder.get_object("img_tb_image_set")
self.img_tb_heic_file: Gtk.Image = builder.get_object("img_tb_heic_file")
self.img_tb_source_folder: Gtk.Image = builder.get_object("img_tb_source_folder")
# Image set
self.lbr_image_set: Gtk.ListBoxRow = builder.get_object("lbr_image_set")
self.cb_image_set: Gtk.ComboBox = builder.get_object("cb_image_set")
# HEIC file
self.lbr_heic_file: Gtk.ListBoxRow = builder.get_object("lbr_heic_file")
# Source folder
self.lbr_source_folder: Gtk.ListBoxRow = builder.get_object("lbr_source_folder")
self.btn_source_folder: Gtk.Button = builder.get_object("btn_source_folder")
self.lbl_source_folder: Gtk.Label = builder.get_object("lbl_source_folder")
# Time bar chart
self.img_bar_images: Gtk.Image = builder.get_object("img_bar_images")
self.etr_periods: list[Gtk.Entry] = [
builder.get_object("etr_period_1"), builder.get_object("etr_period_2"),
builder.get_object("etr_period_3"), builder.get_object("etr_period_4"),
builder.get_object("etr_period_5"), builder.get_object("etr_period_6"),
builder.get_object("etr_period_7"), builder.get_object("etr_period_8"),
builder.get_object("etr_period_9"), builder.get_object("etr_period_10"),
]
self.img_periods: list[Gtk.Image] = [
builder.get_object("img_period_0"), builder.get_object("img_period_1"),
builder.get_object("img_period_2"), builder.get_object("img_period_3"),
builder.get_object("img_period_4"), builder.get_object("img_period_5"),
builder.get_object("img_period_6"), builder.get_object("img_period_7"),
builder.get_object("img_period_8"), builder.get_object("img_period_9"),
]
self.cb_periods: list[Gtk.ComboBox] = [
builder.get_object("cb_period_0"), builder.get_object("cb_period_1"),
builder.get_object("cb_period_2"), builder.get_object("cb_period_3"),
builder.get_object("cb_period_4"), builder.get_object("cb_period_5"),
builder.get_object("cb_period_6"), builder.get_object("cb_period_7"),
builder.get_object("cb_period_8"), builder.get_object("cb_period_9"),
]
#### Page 2: Location & Times
self.tb_network_location: Gtk.ToggleButton = builder.get_object("tb_network_location")
self.tb_custom_location: Gtk.ToggleButton = builder.get_object("tb_custom_location")
self.tb_time_periods: Gtk.ToggleButton = builder.get_object("tb_time_periods")
self.img_tb_network_location: Gtk.Image = builder.get_object("img_tb_network_location")
self.img_tb_custom_location: Gtk.Image = builder.get_object("img_tb_custom_location")
self.img_tb_time_periods: Gtk.Image = builder.get_object("img_tb_time_periods")
# Network Location
self.lb_current_location: Gtk.Label = builder.get_object("lb_current_location")
self.lbr_current_location: Gtk.ListBoxRow = builder.get_object("lbr_current_location")
self.lbr_network_location: Gtk.ListBoxRow = builder.get_object("lbr_network_location")
self.spb_network_location_refresh_time: Gtk.SpinButton = builder.get_object("spb_network_location_refresh_time")
# Custom location
self.lbr_custom_location_longitude: Gtk.ListBoxRow = builder.get_object("lbr_custom_location_longitude")
self.lbr_custom_location_latitude: Gtk.ListBoxRow = builder.get_object("lbr_custom_location_latitude")
self.lbr_time_periods: Gtk.ListBoxRow = builder.get_object("lbr_time_periods")
self.etr_longitude: Gtk.Entry = builder.get_object("etr_longitude")
self.etr_latitude: Gtk.Entry = builder.get_object("etr_latitude")
self.img_bar_times: Gtk.Image = builder.get_object("img_bar_times")
self.spb_periods_hour: list[Gtk.SpinButton] = [
builder.get_object("spb_period_1_hour"),
builder.get_object("spb_period_2_hour"),
builder.get_object("spb_period_3_hour"),
builder.get_object("spb_period_4_hour"),
builder.get_object("spb_period_5_hour"),
builder.get_object("spb_period_6_hour"),
builder.get_object("spb_period_7_hour"),
builder.get_object("spb_period_8_hour"),
builder.get_object("spb_period_9_hour"),
]
self.spb_periods_minute: list[Gtk.SpinButton] = [
builder.get_object("spb_period_1_minute"),
builder.get_object("spb_period_2_minute"),
builder.get_object("spb_period_3_minute"),
builder.get_object("spb_period_4_minute"),
builder.get_object("spb_period_5_minute"),
builder.get_object("spb_period_6_minute"),
builder.get_object("spb_period_7_minute"),
builder.get_object("spb_period_8_minute"),
builder.get_object("spb_period_9_minute")
]
self.lb_period_end: list[Gtk.Label] = [
builder.get_object("lb_period_0_end"), builder.get_object("lb_period_1_end"),
builder.get_object("lb_period_2_end"), builder.get_object("lb_period_3_end"),
builder.get_object("lb_period_4_end"), builder.get_object("lb_period_5_end"),
builder.get_object("lb_period_6_end"), builder.get_object("lb_period_7_end"),
builder.get_object("lb_period_8_end"), builder.get_object("lb_period_9_end"),
]
# Page 3: Behaviour
self.cb_picture_aspect: Gtk.ComboBox = builder.get_object("cb_picture_aspect")
self.sw_dynamic_background_color: Gtk.Switch = builder.get_object("sw_dynamic_background_color")
def set_active_combobox_item(self, combobox: Gtk.ComboBoxText, active_item: str):
""" Change active item in combobox by String value
Args:
combobox (Gtk.ComboBoxText): ComboBox to set active
active_item (str): String item to set active
"""
list_store = combobox.get_model()
for i in range(0, len(list_store)):
row = list_store[i]
if row[0] == active_item:
combobox.set_active(i)
def add_items_to_combo_box(self, combobox: Gtk.ComboBox, items: list):
""" Add items to a combo box
Args:
combobox (Gtk.ComboBox): ComboBox where to add the options
items (list): Possible options
"""
model = combobox.get_model()
store = Gtk.ListStore(str)
for image_set in items:
store.append([image_set])
combobox.set_model(store)
if model == None:
renderer_text = Gtk.CellRendererText()
combobox.pack_start(renderer_text, True)
combobox.add_attribute(renderer_text, "text", 0)