Load images from source folder to preview

This commit is contained in:
2024-01-04 15:42:11 +01:00
parent 513cb38154
commit 22920ad712
4 changed files with 191 additions and 138 deletions

View File

@@ -9,7 +9,7 @@ class PrefenceEnums(enumerate):
IMAGE_SOURCE = "image_source"
SELECTED_IMAGE_SET = "selected_image_set"
SELECTED_SOURCE_FOLDER = "selected_source_folder"
SOURCE_FOLDER = "source_folder"
PERIOD_0_IMAGE = "period_0_image"
PERIOD_1_IMAGE = "period_1_image"

View File

@@ -437,6 +437,7 @@
<property name="can-focus">False</property>
<property name="action">select-folder</property>
<property name="title" translatable="yes"/>
<signal name="file-set" handler="on_fc_source_folder_file_set" swapped="no"/>
</object>
<packing>
<property name="expand">False</property>
@@ -627,7 +628,7 @@
<object class="GtkComboBox" id="cb_period_0">
<property name="visible">True</property>
<property name="can-focus">False</property>
<signal name="changed" handler="on_cb_period_changed" swapped="no"/>
<signal name="changed" handler="on_cb_period_preview_changed" swapped="no"/>
</object>
<packing>
<property name="left-attach">0</property>
@@ -638,7 +639,7 @@
<object class="GtkComboBox" id="cb_period_2">
<property name="visible">True</property>
<property name="can-focus">False</property>
<signal name="changed" handler="on_cb_period_changed" swapped="no"/>
<signal name="changed" handler="on_cb_period_preview_changed" swapped="no"/>
</object>
<packing>
<property name="left-attach">1</property>
@@ -649,7 +650,7 @@
<object class="GtkComboBox" id="cb_period_4">
<property name="visible">True</property>
<property name="can-focus">False</property>
<signal name="changed" handler="on_cb_period_changed" swapped="no"/>
<signal name="changed" handler="on_cb_period_preview_changed" swapped="no"/>
</object>
<packing>
<property name="left-attach">2</property>
@@ -660,7 +661,7 @@
<object class="GtkComboBox" id="cb_period_6">
<property name="visible">True</property>
<property name="can-focus">False</property>
<signal name="changed" handler="on_cb_period_changed" swapped="no"/>
<signal name="changed" handler="on_cb_period_preview_changed" swapped="no"/>
</object>
<packing>
<property name="left-attach">3</property>
@@ -671,7 +672,7 @@
<object class="GtkComboBox" id="cb_period_8">
<property name="visible">True</property>
<property name="can-focus">False</property>
<signal name="changed" handler="on_cb_period_changed" swapped="no"/>
<signal name="changed" handler="on_cb_period_preview_changed" swapped="no"/>
</object>
<packing>
<property name="left-attach">4</property>
@@ -844,7 +845,7 @@
<object class="GtkComboBox" id="cb_period_1">
<property name="visible">True</property>
<property name="can-focus">False</property>
<signal name="changed" handler="on_cb_period_changed" swapped="no"/>
<signal name="changed" handler="on_cb_period_preview_changed" swapped="no"/>
</object>
<packing>
<property name="left-attach">0</property>
@@ -855,7 +856,7 @@
<object class="GtkComboBox" id="cb_period_3">
<property name="visible">True</property>
<property name="can-focus">False</property>
<signal name="changed" handler="on_cb_period_changed" swapped="no"/>
<signal name="changed" handler="on_cb_period_preview_changed" swapped="no"/>
</object>
<packing>
<property name="left-attach">1</property>
@@ -866,7 +867,7 @@
<object class="GtkComboBox" id="cb_period_7">
<property name="visible">True</property>
<property name="can-focus">False</property>
<signal name="changed" handler="on_cb_period_changed" swapped="no"/>
<signal name="changed" handler="on_cb_period_preview_changed" swapped="no"/>
</object>
<packing>
<property name="left-attach">3</property>
@@ -877,7 +878,7 @@
<object class="GtkComboBox" id="cb_period_5">
<property name="visible">True</property>
<property name="can-focus">False</property>
<signal name="changed" handler="on_cb_period_changed" swapped="no"/>
<signal name="changed" handler="on_cb_period_preview_changed" swapped="no"/>
</object>
<packing>
<property name="left-attach">2</property>
@@ -888,7 +889,7 @@
<object class="GtkComboBox" id="cb_period_9">
<property name="visible">True</property>
<property name="can-focus">False</property>
<signal name="changed" handler="on_cb_period_changed" swapped="no"/>
<signal name="changed" handler="on_cb_period_preview_changed" swapped="no"/>
</object>
<packing>
<property name="left-attach">4</property>
@@ -909,122 +910,6 @@
<property name="position">4</property>
</packing>
</child>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="halign">start</property>
<property name="margin-start">64</property>
<property name="label" translatable="yes">Behaviour</property>
<attributes>
<attribute name="weight" value="bold"/>
</attributes>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">5</property>
</packing>
</child>
<child>
<object class="GtkListBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="margin-start">64</property>
<property name="margin-end">64</property>
<property name="selection-mode">none</property>
<property name="activate-on-single-click">False</property>
<child>
<object class="GtkListBoxRow">
<property name="height-request">36</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="margin-start">12</property>
<property name="margin-end">12</property>
<property name="margin-top">12</property>
<property name="margin-bottom">12</property>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="halign">start</property>
<property name="label" translatable="yes">Expand image over all displays</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkSwitch" id="sw_expand_over_all_displays">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="halign">end</property>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
</child>
</object>
</child>
<child>
<object class="GtkListBoxRow">
<property name="visible">True</property>
<property name="can-focus">True</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="margin-start">12</property>
<property name="margin-end">12</property>
<property name="margin-top">12</property>
<property name="margin-bottom">12</property>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="halign">start</property>
<property name="label" translatable="yes">Show image on Lock Screen</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkSwitch" id="sw_show_on_lock_screen">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="halign">end</property>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
</child>
</object>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="padding">3</property>
<property name="position">6</property>
</packing>
</child>
</object>
<packing>
<property name="name">image_config</property>
@@ -2523,6 +2408,127 @@
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkBox" id="gtkbox_behaviour">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="margin-start">8</property>
<property name="margin-end">8</property>
<property name="margin-top">8</property>
<property name="margin-bottom">8</property>
<property name="orientation">vertical</property>
<child>
<object class="GtkListBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="margin-left">64</property>
<property name="margin-right">64</property>
<property name="margin-start">64</property>
<property name="margin-end">64</property>
<property name="selection-mode">none</property>
<property name="activate-on-single-click">False</property>
<child>
<object class="GtkListBoxRow">
<property name="height-request">36</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="margin-left">12</property>
<property name="margin-right">12</property>
<property name="margin-start">12</property>
<property name="margin-end">12</property>
<property name="margin-top">12</property>
<property name="margin-bottom">12</property>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="halign">start</property>
<property name="label" translatable="yes">Expand image over all displays</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkSwitch" id="sw_expand_over_all_displays">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="halign">end</property>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
</child>
</object>
</child>
<child>
<object class="GtkListBoxRow">
<property name="visible">True</property>
<property name="can-focus">True</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="margin-left">12</property>
<property name="margin-right">12</property>
<property name="margin-start">12</property>
<property name="margin-end">12</property>
<property name="margin-top">12</property>
<property name="margin-bottom">12</property>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="halign">start</property>
<property name="label" translatable="yes">Show image on Lock Screen</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkSwitch" id="sw_show_on_lock_screen">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="halign">end</property>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
</child>
</object>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="padding">3</property>
<property name="position">0</property>
</packing>
</child>
</object>
<packing>
<property name="name">behaviour</property>
<property name="title" translatable="yes">Behaviour</property>
<property name="position">2</property>
</packing>
</child>
<child>
<object class="GtkBox" id="gtkbox_about">
<property name="visible">True</property>
@@ -2779,7 +2785,7 @@
<packing>
<property name="name">about</property>
<property name="title" translatable="yes">About</property>
<property name="position">2</property>
<property name="position">3</property>
</packing>
</child>
</object>

View File

@@ -302,7 +302,11 @@ class Preferences:
############################################################
## Image Configuration
# +-----------+-----------+---------------+
# | Image Set | HEIC file | Source Folder |
# +-----------+-----------+---------------+
def on_toggle_button_image_set_clicked(self, button: Gtk.Button):
if button.get_active():
self.c_prefs.prefs[PrefenceEnums.IMAGE_SOURCE] = ImageSourceEnum.IMAGESET
@@ -312,7 +316,12 @@ class Preferences:
self.lbr_image_set.set_visible(True)
self.lbr_heic_file.set_visible(False)
self.lbr_source_folder.set_visible(False)
# Make the comboboxes invisible
for combobox in self.cb_periods:
combobox.set_visible(False)
def on_toggle_button_heic_file_clicked(self, button: Gtk.Button):
if button.get_active():
self.c_prefs.prefs[PrefenceEnums.IMAGE_SOURCE] = ImageSourceEnum.HEICFILE
@@ -323,6 +332,11 @@ class Preferences:
self.lbr_heic_file.set_visible(True)
self.lbr_source_folder.set_visible(False)
# Make the comboboxes visible
for combobox in self.cb_periods:
combobox.set_visible(True)
def on_toggle_button_source_folder_clicked(self, button: Gtk.Button):
if button.get_active():
self.c_prefs.prefs[PrefenceEnums.IMAGE_SOURCE] = ImageSourceEnum.SOURCEFOLDER
@@ -333,6 +347,12 @@ class Preferences:
self.lbr_heic_file.set_visible(False)
self.lbr_source_folder.set_visible(True)
# Make the comboboxes invisible
for combobox in self.cb_periods:
combobox.set_visible(True)
def on_cb_image_set_changed(self, combobox: Gtk.ComboBox):
tree_iter = combobox.get_active_iter()
@@ -345,15 +365,40 @@ class Preferences:
self.c_prefs.prefs[PrefenceEnums.SELECTED_IMAGE_SET] = selected_image_set
# Update the ComboBoxes for image selection
image_path = os.path.abspath(os.path.join(PREFERENCES_URI, os.pardir)) + \
"/images/included_image_sets/" + selected_image_set + "/"
self.c_prefs.prefs[PrefenceEnums.SOURCE_FOLDER] = os.path.abspath(os.path.join(PREFERENCES_URI, os.pardir)) + \
"/images/included_image_sets/" + selected_image_set + "/"
image_names = self.images.get_images_from_folder(image_path)
# Load all possible options to the comboboxes
image_names = self.images.get_images_from_folder(self.c_prefs.prefs[PrefenceEnums.SOURCE_FOLDER])
self.load_image_options_to_combo_boxes(image_names)
# Image sets have the same names for the images:
# 9.jpg = Period 0
# 1.jpg = Period 1
# 2.jpg = Period 2
# and so on....
self.cb_periods[0].set_active(8)
for i in range(1, 10):
self.cb_periods[i].set_active(i - 1)
def on_cb_period_changed(self, combobox: Gtk.ComboBox):
def on_fc_source_folder_file_set(self, fc_button: Gtk.FileChooser):
files = self.images.get_images_from_folder(fc_button.get_filename())
# Update the ComboBoxes for image selection
self.c_prefs.prefs[PrefenceEnums.SOURCE_FOLDER] = fc_button.get_filename() + "/"
print(fc_button.get_filename())
if len(files) != 0:
self.load_image_options_to_combo_boxes(files)
else:
#todo
pass
def on_cb_period_preview_changed(self, combobox: Gtk.ComboBox):
tree_iter = combobox.get_active_iter()
combobox_name = Gtk.Buildable.get_name(combobox)
@@ -363,12 +408,14 @@ class Preferences:
# Get the selected value
model = combobox.get_model()
image_file_name = model[tree_iter][0]
# Store selection to preferences
self.c_prefs.prefs["period_%s_image" % (period_index)] = image_file_name
image_path = os.path.abspath(os.path.join(PREFERENCES_URI, os.pardir)) + \
"/images/included_image_sets/" + self.c_prefs.prefs[PrefenceEnums.SELECTED_IMAGE_SET] + "/"
# Build up image path
image_path = self.c_prefs.prefs[PrefenceEnums.SOURCE_FOLDER] + image_file_name
self.load_image_to_preview(self.img_periods[period_index], image_path + image_file_name)
self.load_image_to_preview(self.img_periods[period_index], image_path)
## Location & Times

View File

@@ -19,7 +19,7 @@
"type": "generic",
"default": ""
},
"selected_source_folder": {
"source_folder": {
"type": "generic",
"default": ""
},