33from gi .repository import Gtk , Adw , GObject , Gio , GLib
44from typing import Dict , List , Optional
55
6+
7+ from .State import state
68from .lib .utils import get_element_without_overscroll , get_gsettings , gio_copy
79from .lib .costants import APP_ID , APP_NAME
810
@@ -36,15 +38,15 @@ def __init__(self, pkgdatadir):
3638 [self .carousel .append (el ) for el in pages ]
3739
3840 location_label = second_page .get_object ('location-label' )
39- location_label .set_label (location_label .get_label ().replace ('{location}' , get_gsettings (). get_string ( 'appimages-default-folder' ) ))
41+ location_label .set_label (location_label .get_label ().replace ('{location}' , '~/AppImages' ))
4042 last_page .get_object ('close-window' ).connect ('clicked' , lambda w : self .close ())
4143
4244 self .left_button .connect ('clicked' , lambda w : self .carousel .scroll_to (get_element_without_overscroll (pages , int (self .carousel .get_position ()) - 1 ), True ))
4345 self .right_button .connect ('clicked' , lambda w : self .carousel .scroll_to (get_element_without_overscroll (pages , int (self .carousel .get_position ()) + 1 ), True ))
4446
4547 container .append (self .carousel )
4648
47- self .demo_folder = GLib .get_tmp_dir () + f'/{ APP_ID } /demo'
49+ self .demo_folder = GLib .get_user_cache_dir () + f'/{ APP_ID } /demo'
4850 if not os .path .exists (self .demo_folder ):
4951 os .makedirs (self .demo_folder )
5052
@@ -54,6 +56,7 @@ def __init__(self, pkgdatadir):
5456
5557 logging .debug (f'Copied demo app into { self .demo_folder } ' )
5658 third_page .get_object ('open-demo-folder' ).connect ('clicked' , self .on_open_demo_folder_clicked )
59+ second_page .get_object ('open-preferences' ).connect ('clicked' , self .on_default_localtion_btn_clicked )
5760
5861 self .set_child (container )
5962
@@ -71,4 +74,26 @@ def on_page_changed(self, widget, index):
7174 def on_open_demo_folder_clicked (self , widget ):
7275 gfile = Gio .File .new_for_path (self .demo_folder )
7376 launcher = Gtk .FileLauncher .new (gfile )
74- launcher .launch ()
77+ launcher .launch ()
78+
79+ def on_select_default_location_response (self , dialog , result ):
80+ try :
81+ selected_file = dialog .select_folder_finish (result )
82+ except Exception as e :
83+ logging .error (str (e ))
84+ return
85+
86+ if selected_file .query_exists () and selected_file .get_path ().startswith (GLib .get_home_dir ()):
87+ get_gsettings ().set_string ('appimages-default-folder' , selected_file .get_path ())
88+ state .set__ ('appimages-default-folder' , selected_file .get_path ())
89+ else :
90+ raise InternalError (_ ('The folder must be in your home directory' ))
91+
92+ def on_default_localtion_btn_clicked (self , widget ):
93+ dialog = Gtk .FileDialog (title = _ ('Select a folder' ), modal = True )
94+
95+ dialog .select_folder (
96+ parent = self ,
97+ cancellable = None ,
98+ callback = self .on_select_default_location_response
99+ )
0 commit comments