Skip to content

Commit 938d615

Browse files
committed
Provide information about packaging types when a user views a
Flatpak package, or one where both types are available. Adds a small info button next to the package type combo/box that the user can click to display a small info box. ref: linuxmint/mintwelcome#70
1 parent 65fe215 commit 938d615

File tree

2 files changed

+286
-1
lines changed

2 files changed

+286
-1
lines changed

resources/mintinstall.glade

Lines changed: 276 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,11 @@
102102
<property name="pixel-size">1</property>
103103
<property name="icon_size">1</property>
104104
</object>
105+
<object class="GtkImage" id="image10">
106+
<property name="visible">True</property>
107+
<property name="can-focus">False</property>
108+
<property name="icon-name">help-about-symbolic</property>
109+
</object>
105110
<object class="GtkImage" id="image2">
106111
<property name="visible">True</property>
107112
<property name="can-focus">False</property>
@@ -145,6 +150,217 @@
145150
<property name="icon-name">mintinstall-flatpak-logo-symbolic</property>
146151
<property name="icon_size">3</property>
147152
</object>
153+
<object class="GtkBox" id="package_help_content_box">
154+
<property name="visible">True</property>
155+
<property name="can-focus">False</property>
156+
<property name="border-width">4</property>
157+
<property name="orientation">vertical</property>
158+
<property name="spacing">4</property>
159+
<child>
160+
<object class="GtkLabel">
161+
<property name="visible">True</property>
162+
<property name="can-focus">False</property>
163+
<property name="halign">start</property>
164+
<property name="label" translatable="yes">Package types</property>
165+
<attributes>
166+
<attribute name="weight" value="bold"/>
167+
</attributes>
168+
</object>
169+
<packing>
170+
<property name="expand">False</property>
171+
<property name="fill">True</property>
172+
<property name="position">0</property>
173+
</packing>
174+
</child>
175+
<child>
176+
<object class="GtkSeparator">
177+
<property name="visible">True</property>
178+
<property name="can-focus">False</property>
179+
</object>
180+
<packing>
181+
<property name="expand">False</property>
182+
<property name="fill">True</property>
183+
<property name="position">1</property>
184+
</packing>
185+
</child>
186+
<child>
187+
<object class="GtkBox">
188+
<property name="visible">True</property>
189+
<property name="can-focus">False</property>
190+
<property name="orientation">vertical</property>
191+
<property name="spacing">6</property>
192+
<child>
193+
<object class="GtkBox">
194+
<property name="visible">True</property>
195+
<property name="can-focus">False</property>
196+
<property name="halign">center</property>
197+
<property name="spacing">6</property>
198+
<child>
199+
<object class="GtkImage">
200+
<property name="visible">True</property>
201+
<property name="can-focus">False</property>
202+
<property name="icon-name">linuxmint-logo-badge-symbolic</property>
203+
<property name="icon_size">3</property>
204+
</object>
205+
<packing>
206+
<property name="expand">False</property>
207+
<property name="fill">False</property>
208+
<property name="position">0</property>
209+
</packing>
210+
</child>
211+
<child>
212+
<object class="GtkLabel">
213+
<property name="visible">True</property>
214+
<property name="can-focus">False</property>
215+
<property name="label" translatable="yes">System</property>
216+
</object>
217+
<packing>
218+
<property name="expand">False</property>
219+
<property name="fill">True</property>
220+
<property name="position">1</property>
221+
</packing>
222+
</child>
223+
</object>
224+
<packing>
225+
<property name="expand">False</property>
226+
<property name="fill">True</property>
227+
<property name="position">0</property>
228+
</packing>
229+
</child>
230+
<child>
231+
<object class="GtkLabel">
232+
<property name="visible">True</property>
233+
<property name="can-focus">False</property>
234+
<property name="label" translatable="yes">System packages are managed by your system and use shared libraries and resources.</property>
235+
<property name="wrap">True</property>
236+
<property name="width-chars">50</property>
237+
<property name="max-width-chars">50</property>
238+
<property name="xalign">0</property>
239+
</object>
240+
<packing>
241+
<property name="expand">True</property>
242+
<property name="fill">True</property>
243+
<property name="position">1</property>
244+
</packing>
245+
</child>
246+
<child>
247+
<object class="GtkLabel">
248+
<property name="visible">True</property>
249+
<property name="can-focus">False</property>
250+
<property name="label" translatable="yes">They are stable but can become outdated over time, as they generally only receive bugfix and security updates.</property>
251+
<property name="wrap">True</property>
252+
<property name="width-chars">50</property>
253+
<property name="max-width-chars">50</property>
254+
<property name="xalign">0</property>
255+
</object>
256+
<packing>
257+
<property name="expand">True</property>
258+
<property name="fill">True</property>
259+
<property name="position">2</property>
260+
</packing>
261+
</child>
262+
</object>
263+
<packing>
264+
<property name="expand">False</property>
265+
<property name="fill">True</property>
266+
<property name="position">2</property>
267+
</packing>
268+
</child>
269+
<child>
270+
<object class="GtkSeparator">
271+
<property name="visible">True</property>
272+
<property name="can-focus">False</property>
273+
</object>
274+
<packing>
275+
<property name="expand">False</property>
276+
<property name="fill">True</property>
277+
<property name="position">3</property>
278+
</packing>
279+
</child>
280+
<child>
281+
<object class="GtkBox">
282+
<property name="visible">True</property>
283+
<property name="can-focus">False</property>
284+
<property name="orientation">vertical</property>
285+
<property name="spacing">6</property>
286+
<child>
287+
<object class="GtkBox">
288+
<property name="visible">True</property>
289+
<property name="can-focus">False</property>
290+
<property name="halign">center</property>
291+
<property name="spacing">6</property>
292+
<child>
293+
<object class="GtkImage">
294+
<property name="visible">True</property>
295+
<property name="can-focus">False</property>
296+
<property name="icon-name">mintinstall-package-flatpak-symbolic</property>
297+
<property name="icon_size">3</property>
298+
</object>
299+
<packing>
300+
<property name="expand">False</property>
301+
<property name="fill">False</property>
302+
<property name="position">0</property>
303+
</packing>
304+
</child>
305+
<child>
306+
<object class="GtkLabel">
307+
<property name="visible">True</property>
308+
<property name="can-focus">False</property>
309+
<property name="label" translatable="yes">Flatpak</property>
310+
</object>
311+
<packing>
312+
<property name="expand">False</property>
313+
<property name="fill">True</property>
314+
<property name="position">1</property>
315+
</packing>
316+
</child>
317+
</object>
318+
<packing>
319+
<property name="expand">False</property>
320+
<property name="fill">True</property>
321+
<property name="position">0</property>
322+
</packing>
323+
</child>
324+
<child>
325+
<object class="GtkLabel">
326+
<property name="visible">True</property>
327+
<property name="can-focus">False</property>
328+
<property name="label" translatable="yes">Flatpaks are generally maintained by the application developers themselves, and usually provide the most up-to-date version.</property>
329+
<property name="wrap">True</property>
330+
<property name="width-chars">50</property>
331+
<property name="max-width-chars">50</property>
332+
<property name="xalign">0</property>
333+
</object>
334+
<packing>
335+
<property name="expand">True</property>
336+
<property name="fill">True</property>
337+
<property name="position">1</property>
338+
</packing>
339+
</child>
340+
<child>
341+
<object class="GtkLabel">
342+
<property name="visible">True</property>
343+
<property name="can-focus">False</property>
344+
<property name="label" translatable="yes">They are mostly self-contained, and rely on bundled dependencies (runtimes) instead of system packages. As a consequence, they tend to require significantly more disk space to install, though this is somewhat mitigated when multiple Flatpaks are using the same runtimes.</property>
345+
<property name="wrap">True</property>
346+
<property name="width-chars">50</property>
347+
<property name="max-width-chars">50</property>
348+
<property name="xalign">0</property>
349+
</object>
350+
<packing>
351+
<property name="expand">True</property>
352+
<property name="fill">True</property>
353+
<property name="position">2</property>
354+
</packing>
355+
</child>
356+
</object>
357+
<packing>
358+
<property name="expand">False</property>
359+
<property name="fill">True</property>
360+
<property name="position">4</property>
361+
</packing>
362+
</child>
363+
</object>
148364
<object class="GtkImage" id="subsearch_image">
149365
<property name="visible">True</property>
150366
<property name="can-focus">False</property>
@@ -810,7 +1026,52 @@
8101026
<object class="GtkBox" id="box_package_type_combo_container">
8111027
<property name="visible">True</property>
8121028
<property name="can-focus">False</property>
813-
<property name="spacing">6</property>
1029+
<property name="spacing">2</property>
1030+
<child>
1031+
<object class="GtkBox">
1032+
<property name="visible">True</property>
1033+
<property name="can-focus">False</property>
1034+
<property name="orientation">vertical</property>
1035+
<property name="spacing">6</property>
1036+
<child>
1037+
<object class="GtkBox" id="dummy">
1038+
<property name="visible">True</property>
1039+
<property name="can-focus">False</property>
1040+
<property name="orientation">vertical</property>
1041+
<child>
1042+
<placeholder/>
1043+
</child>
1044+
</object>
1045+
<packing>
1046+
<property name="expand">False</property>
1047+
<property name="fill">True</property>
1048+
<property name="position">0</property>
1049+
</packing>
1050+
</child>
1051+
<child>
1052+
<object class="GtkButton" id="package_help_button">
1053+
<property name="visible">True</property>
1054+
<property name="can-focus">False</property>
1055+
<property name="receives-default">True</property>
1056+
<property name="image">image10</property>
1057+
<property name="relief">none</property>
1058+
<style>
1059+
<class name="flat"/>
1060+
</style>
1061+
</object>
1062+
<packing>
1063+
<property name="expand">False</property>
1064+
<property name="fill">True</property>
1065+
<property name="position">1</property>
1066+
</packing>
1067+
</child>
1068+
</object>
1069+
<packing>
1070+
<property name="expand">False</property>
1071+
<property name="fill">True</property>
1072+
<property name="position">0</property>
1073+
</packing>
1074+
</child>
8141075
<child>
8151076
<object class="GtkBox">
8161077
<property name="width-request">180</property>
@@ -2085,4 +2346,18 @@
20852346
</object>
20862347
</child>
20872348
</object>
2349+
<object class="GtkSizeGroup">
2350+
<property name="mode">vertical</property>
2351+
<widgets>
2352+
<widget name="dummy"/>
2353+
<widget name="notebook_progress"/>
2354+
</widgets>
2355+
</object>
2356+
<object class="GtkSizeGroup">
2357+
<property name="mode">vertical</property>
2358+
<widgets>
2359+
<widget name="package_help_button"/>
2360+
<widget name="package_type_combo_container"/>
2361+
</widgets>
2362+
</object>
20882363
</interface>

usr/lib/linuxmint/mintinstall/mintinstall.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -897,6 +897,11 @@ def list_header_func(row, before, user_data=None):
897897
separator.show()
898898
submenu.append(separator)
899899

900+
self.package_help_button = self.builder.get_object("package_help_button")
901+
self.package_help_button.connect("clicked", self.on_package_help_clicked)
902+
self.package_help_popover = Gtk.Popover(relative_to=self.package_help_button)
903+
self.package_help_popover.add(self.builder.get_object("package_help_content_box"))
904+
900905
about_menuitem = Gtk.MenuItem(label=_("About"))
901906
about_menuitem.connect("activate", self.open_about)
902907
about_menuitem.show()
@@ -1773,6 +1778,9 @@ def set_package_type_preference(self, radiomenuitem, value):
17731778
if terms != "":
17741779
self.show_search_results(terms)
17751780

1781+
def on_package_help_clicked(self, button):
1782+
self.package_help_popover.popup()
1783+
17761784
def open_about(self, widget):
17771785
dlg = Gtk.AboutDialog()
17781786
dlg.set_transient_for(self.main_window)
@@ -2669,6 +2677,8 @@ def show_package(self, pkginfo, previous_page):
26692677
self.package_type_combo.set_active_iter(to_use_iter)
26702678
self.package_type_combo.set_tooltip_text(tooltip)
26712679

2680+
self.package_help_button.set_visible(i > 1 or is_flatpak)
2681+
26722682
self.unsafe_box.hide()
26732683
self.builder.get_object("application_dev_name").set_label("")
26742684

0 commit comments

Comments
 (0)