Skip to content

Commit 4bc533d

Browse files
committed
Add empty page when no distrobox is selected
1 parent abeeedb commit 4bc533d

2 files changed

Lines changed: 86 additions & 49 deletions

File tree

src/widgets/window.rs

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,8 @@ mod imp {
6161
#[template_child]
6262
pub content_page: TemplateChild<adw::NavigationPage>,
6363
#[template_child]
64+
pub content_state_stack: TemplateChild<gtk::Stack>,
65+
#[template_child]
6466
pub split_view: TemplateChild<adw::NavigationSplitView>,
6567
#[template_child]
6668
pub toast_overlay: TemplateChild<adw::ToastOverlay>,
@@ -123,6 +125,9 @@ impl DistroShelfWindow {
123125
this.set_default_size(width, height);
124126

125127
this.setup_gactions();
128+
this.imp()
129+
.content_state_stack
130+
.set_visible_child_name("no_content");
126131
let this_clone = this.clone();
127132
this.root_store()
128133
.selected_container_model()
@@ -132,12 +137,16 @@ impl DistroShelfWindow {
132137
.and_then(|obj| obj.downcast::<Container>().ok())
133138
{
134139
this_clone.update_container(&container);
140+
this_clone
141+
.imp()
142+
.content_state_stack
143+
.set_visible_child_name("content");
135144
this_clone.imp().split_view.set_show_content(true);
136145
} else {
137146
this_clone
138147
.imp()
139-
.content_page
140-
.set_child(None::<&gtk::Widget>);
148+
.content_state_stack
149+
.set_visible_child_name("no_content");
141150
}
142151
});
143152
let this_clone = this.clone();

src/widgets/window.ui

Lines changed: 75 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -123,68 +123,96 @@
123123
</property>
124124
<property name="content">
125125
<object class="AdwNavigationPage" id="content_page">
126-
<property name="title" translatable="yes">Container</property>
126+
<property name="title" translatable="yes">Distrobox</property>
127127
<property name="child">
128-
<object class="AdwToolbarView">
129-
<child type="top">
130-
<object class="AdwHeaderBar">
131-
<property name="title-widget">
132-
<object class="AdwViewSwitcher" id="view_switcher">
133-
<property name="stack">view_stack</property>
134-
<property name="policy">wide</property>
128+
<object class="GtkStack" id="content_state_stack">
129+
<child>
130+
<object class="GtkStackPage">
131+
<property name="name">no_content</property>
132+
<property name="child">
133+
<object class="AdwToolbarView">
134+
<child type="top">
135+
<object class="AdwHeaderBar"/>
136+
</child>
137+
<property name="content">
138+
<object class="AdwStatusPage">
139+
<property name="icon-name">container-symbolic</property>
140+
<property name="title" translatable="yes">No Distrobox Selected</property>
141+
<property name="description" translatable="yes">Select a Distrobox from the sidebar to view its details and terminal.</property>
142+
</object>
143+
</property>
135144
</object>
136145
</property>
137146
</object>
138147
</child>
139-
<property name="content">
140-
<object class="AdwBreakpointBin" id="breakpoint_bin">
141-
<property name="width-request">360</property>
142-
<property name="height-request">200</property>
143-
<child>
144-
<object class="AdwBreakpoint">
145-
<condition>max-width: 550sp</condition>
146-
<setter object="view_switcher" property="visible">False</setter>
147-
<setter object="view_switcher_bar" property="reveal">True</setter>
148-
</object>
149-
</child>
148+
<child>
149+
<object class="GtkStackPage">
150+
<property name="name">content</property>
150151
<property name="child">
151-
<object class="GtkBox">
152-
<property name="orientation">vertical</property>
153-
<child>
154-
<object class="AdwViewStack" id="view_stack">
152+
<object class="AdwToolbarView">
153+
<child type="top">
154+
<object class="AdwHeaderBar">
155+
<property name="title-widget">
156+
<object class="AdwViewSwitcher" id="view_switcher">
157+
<property name="stack">view_stack</property>
158+
<property name="policy">wide</property>
159+
</object>
160+
</property>
161+
</object>
162+
</child>
163+
<property name="content">
164+
<object class="AdwBreakpointBin" id="breakpoint_bin">
165+
<property name="width-request">360</property>
166+
<property name="height-request">200</property>
155167
<child>
156-
<object class="AdwViewStackPage">
157-
<property name="name">overview</property>
158-
<property name="title" translatable="yes">Overview</property>
159-
<property name="icon-name">container-symbolic</property>
160-
<property name="child">
161-
<object class="AdwBin" id="overview_bin">
162-
</object>
163-
</property>
168+
<object class="AdwBreakpoint">
169+
<condition>max-width: 550sp</condition>
170+
<setter object="view_switcher" property="visible">False</setter>
171+
<setter object="view_switcher_bar" property="reveal">True</setter>
164172
</object>
165173
</child>
166-
<child>
167-
<object class="AdwViewStackPage">
168-
<property name="name">terminal</property>
169-
<property name="title" translatable="yes">Terminal</property>
170-
<property name="icon-name">terminal-symbolic</property>
171-
<property name="child">
172-
<object class="AdwBin" id="terminal_bin">
174+
<property name="child">
175+
<object class="GtkBox">
176+
<property name="orientation">vertical</property>
177+
<child>
178+
<object class="AdwViewStack" id="view_stack">
179+
<child>
180+
<object class="AdwViewStackPage">
181+
<property name="name">overview</property>
182+
<property name="title" translatable="yes">Overview</property>
183+
<property name="icon-name">container-symbolic</property>
184+
<property name="child">
185+
<object class="AdwBin" id="overview_bin">
186+
</object>
187+
</property>
188+
</object>
189+
</child>
190+
<child>
191+
<object class="AdwViewStackPage">
192+
<property name="name">terminal</property>
193+
<property name="title" translatable="yes">Terminal</property>
194+
<property name="icon-name">terminal-symbolic</property>
195+
<property name="child">
196+
<object class="AdwBin" id="terminal_bin">
197+
</object>
198+
</property>
199+
</object>
200+
</child>
173201
</object>
174-
</property>
202+
</child>
203+
<child>
204+
<object class="AdwViewSwitcherBar" id="view_switcher_bar">
205+
<property name="stack">view_stack</property>
206+
</object>
207+
</child>
175208
</object>
176-
</child>
177-
</object>
178-
</child>
179-
<child>
180-
<object class="AdwViewSwitcherBar" id="view_switcher_bar">
181-
<property name="stack">view_stack</property>
209+
</property>
182210
</object>
183-
</child>
211+
</property>
184212
</object>
185213
</property>
186214
</object>
187-
</property>
215+
</child>
188216
</object>
189217
</property>
190218
</object>

0 commit comments

Comments
 (0)