11use adw:: prelude:: * ;
22use adw:: subclass:: prelude:: * ;
33use gtk:: glib:: { BoxedAnyObject , clone} ;
4- use gtk:: { gio, glib, pango} ;
4+ use gtk:: { gio, glib} ;
5+ use tracing:: error;
56
67use crate :: backends:: { ExportableApp , ExportableBinary } ;
78use crate :: fakers:: Command ;
@@ -28,7 +29,8 @@ mod imp {
2829 pub content : gtk:: Box ,
2930 pub scrolled_window : gtk:: ScrolledWindow ,
3031 pub stack : gtk:: Stack ,
31- pub error_label : gtk:: Label ,
32+ pub apps_error_label : gtk:: Label ,
33+ pub binaries_error_label : gtk:: Label ,
3234 pub list_box : gtk:: ListBox ,
3335 pub binaries_list_box : gtk:: ListBox ,
3436 pub binary_name_entry : adw:: EntryRow ,
@@ -55,9 +57,6 @@ mod imp {
5557
5658 self . stack
5759 . set_transition_type ( gtk:: StackTransitionType :: Crossfade ) ;
58- self . error_label . set_wrap_mode ( pango:: WrapMode :: WordChar ) ;
59- self . error_label . set_wrap ( true ) ;
60- self . stack . add_named ( & self . error_label , Some ( "error" ) ) ;
6160
6261 let loading_page = adw:: StatusPage :: new ( ) ;
6362 loading_page. set_title ( & gettext ( "Loading Exports" ) ) ;
@@ -79,6 +78,17 @@ mod imp {
7978 . set_description ( Some ( & gettext ( "No exportable apps found" ) ) ) ;
8079 self . export_apps_group . add ( & self . list_box ) ;
8180
81+ self . apps_error_label
82+ . set_label ( & gettext ( "Error loading exportable apps" ) ) ;
83+ self . apps_error_label . set_halign ( gtk:: Align :: Start ) ;
84+ self . apps_error_label . set_wrap ( true ) ;
85+ self . apps_error_label . add_css_class ( "error" ) ;
86+ self . apps_error_label . set_margin_start ( 12 ) ;
87+ self . apps_error_label . set_margin_end ( 12 ) ;
88+ self . apps_error_label . set_margin_top ( 6 ) ;
89+ self . apps_error_label . set_margin_bottom ( 12 ) ;
90+ self . apps_error_label . set_visible ( false ) ;
91+
8292 // Setup binary export input
8393 self . binary_name_entry
8494 . set_title ( & gettext ( "Export New Binary" ) ) ;
@@ -101,9 +111,22 @@ mod imp {
101111 self . export_binaries_group . add ( & self . binary_name_entry ) ;
102112 self . export_binaries_group . add ( & self . binaries_list_box ) ;
103113
114+ self . binaries_error_label
115+ . set_label ( & gettext ( "Error loading exported binaries" ) ) ;
116+ self . binaries_error_label . set_halign ( gtk:: Align :: Start ) ;
117+ self . binaries_error_label . set_wrap ( true ) ;
118+ self . binaries_error_label . add_css_class ( "error" ) ;
119+ self . binaries_error_label . set_margin_start ( 12 ) ;
120+ self . binaries_error_label . set_margin_end ( 12 ) ;
121+ self . binaries_error_label . set_margin_top ( 6 ) ;
122+ self . binaries_error_label . set_margin_bottom ( 12 ) ;
123+ self . binaries_error_label . set_visible ( false ) ;
124+
104125 let content_box = gtk:: Box :: new ( gtk:: Orientation :: Vertical , 0 ) ;
105126 content_box. append ( & self . export_apps_group ) ;
127+ content_box. append ( & self . apps_error_label ) ;
106128 content_box. append ( & self . export_binaries_group ) ;
129+ content_box. append ( & self . binaries_error_label ) ;
107130 self . stack . add_named ( & content_box, Some ( "apps" ) ) ;
108131
109132 self . content . append ( & self . scrolled_window ) ;
@@ -217,8 +240,9 @@ impl ExportableAppsDialog {
217240 } ) ;
218241 let this_inner = this_clone. clone ( ) ;
219242 apps. connect_error ( move |error| {
220- this_inner. imp ( ) . error_label . set_label ( & error. to_string ( ) ) ;
221- this_inner. imp ( ) . stack . set_visible_child_name ( "error" ) ;
243+ error ! ( "Error loading exportable apps: {}" , error) ;
244+ this_inner. imp ( ) . apps_error_label . set_visible ( true ) ;
245+ this_inner. imp ( ) . stack . set_visible_child_name ( "apps" ) ;
222246 } ) ;
223247 let binaries = this. container ( ) . binaries ( ) ;
224248 let this_inner = this_clone. clone ( ) ;
@@ -229,8 +253,9 @@ impl ExportableAppsDialog {
229253 } ) ;
230254 let this_inner = this_clone. clone ( ) ;
231255 binaries. connect_error ( move |error| {
232- this_inner. imp ( ) . error_label . set_label ( & error. to_string ( ) ) ;
233- this_inner. imp ( ) . stack . set_visible_child_name ( "error" ) ;
256+ error ! ( "Error loading exportable binaries: {}" , error) ;
257+ this_inner. imp ( ) . binaries_error_label . set_visible ( true ) ;
258+ this_inner. imp ( ) . stack . set_visible_child_name ( "apps" ) ;
234259 } ) ;
235260
236261 let this_clone = this. clone ( ) ;
@@ -291,12 +316,19 @@ impl ExportableAppsDialog {
291316
292317 let apps = this. container ( ) . apps ( ) ;
293318 let render_apps_closure = render_apps. clone ( ) ;
319+ let this_for_apps_success = this. clone ( ) ;
294320 apps. connect_success ( move |apps_data| {
321+ this_for_apps_success. imp ( ) . apps_error_label . set_visible ( false ) ;
295322 render_apps_closure ( apps_data) ;
296323 } ) ;
297324 let binaries = this. container ( ) . binaries ( ) ;
298325 let render_binaries_closure = render_binaries. clone ( ) ;
326+ let this_for_binaries_success = this. clone ( ) ;
299327 binaries. connect_success ( move |binaries_data| {
328+ this_for_binaries_success
329+ . imp ( )
330+ . binaries_error_label
331+ . set_visible ( false ) ;
300332 render_binaries_closure ( binaries_data) ;
301333 } ) ;
302334
0 commit comments