Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
X
ximper-system-updater
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Ximper Linux
ximper-system-updater
Commits
4964f481
Commit
4964f481
authored
Sep 24, 2025
by
Roman Alifanov
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
rewrite to NavigstionView
parent
3aea104e
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
114 additions
and
25 deletions
+114
-25
main.go
main.go
+8
-12
packagerows.go
packagerows.go
+46
-7
ui.cmb
ui.cmb
+60
-6
No files found.
main.go
View file @
4964f481
...
...
@@ -50,7 +50,9 @@ func (su *SystemUpdater) onActivate() {
upds
:=
apm
.
NewUpdatesSources
(
conn
,
obj
)
window
:=
GetSystemUpdaterWindow
(
su
.
AppGTK
)
window
:=
GetSystemUpdaterWindow
()
window
.
SetApplication
(
su
.
AppGTK
)
for
_
,
us
:=
range
upds
{
window
.
FillWithChanges
(
su
,
us
)
...
...
@@ -63,28 +65,26 @@ func (su *SystemUpdater) onActivate() {
var
SystemUpdaterWindowUIXML
string
type
SystemUpdaterWindow
struct
{
win
*
adw
.
ApplicationWindow
*
adw
.
ApplicationWindow
navView
*
adw
.
NavigationView
listbox
*
gtk
.
ListBox
}
var
mainWin
*
SystemUpdaterWindow
func
GetSystemUpdaterWindow
(
app
*
gtk
.
Application
)
*
SystemUpdaterWindow
{
func
GetSystemUpdaterWindow
()
*
SystemUpdaterWindow
{
if
mainWin
==
nil
{
builder
:=
bldr
.
New
(
SystemUpdaterWindowUIXML
)
win
:=
bldr
.
GetObject
[
*
adw
.
ApplicationWindow
](
builder
,
"main_window"
)
win
.
SetApplication
(
app
)
navView
:=
bldr
.
GetObject
[
*
adw
.
NavigationView
](
builder
,
"navigationv"
)
listbox
:=
bldr
.
GetObject
[
*
gtk
.
ListBox
](
builder
,
"updates_listbox"
)
mainWin
=
&
SystemUpdaterWindow
{
win
:
win
,
navView
:
navView
,
listbox
:
listbox
,
win
,
navView
,
listbox
,
}
}
return
mainWin
...
...
@@ -94,10 +94,6 @@ func (sw *SystemUpdaterWindow) FillWithChanges(su *SystemUpdater, us apm.Updater
sw
.
listbox
.
Append
(
NewUpdateRow
(
"System packages"
,
us
.
GetPackageChanges
()))
}
func
(
sw
*
SystemUpdaterWindow
)
Present
()
{
sw
.
win
.
Present
()
}
func
SystemUpdaterApplication
(
su
*
SystemUpdater
)
{
su
.
App
.
ConnectActivate
(
func
()
{
su
.
onActivate
()
...
...
packagerows.go
View file @
4964f481
...
...
@@ -2,8 +2,12 @@ package main
import
(
"SystemUpdater/lib/apm"
bldr
"SystemUpdater/lib/gtks/builder"
_
"embed"
"github.com/diamondburned/gotk4-adwaita/pkg/adw"
"github.com/diamondburned/gotk4/pkg/gtk/v4"
)
func
NewPackageRow
(
item
string
,
ver
string
)
*
adw
.
ActionRow
{
...
...
@@ -13,9 +17,37 @@ func NewPackageRow(item string, ver string) *adw.ActionRow {
return
row
}
func
NewUpdateRow
(
name
string
,
info
apm
.
PackageChanges
)
*
adw
.
ExpanderRow
{
exrow
:=
adw
.
NewExpanderRow
()
exrow
.
SetTitle
(
name
)
//go:embed listpage.ui
var
SystemUpdaterListPageUIXML
string
type
SystemUpdaterListPage
struct
{
nav
*
adw
.
NavigationPage
listbox
*
gtk
.
ListBox
applyButton
*
adw
.
ButtonRow
}
func
NewListPage
()
*
SystemUpdaterListPage
{
builder
:=
bldr
.
New
(
SystemUpdaterListPageUIXML
)
page
:=
bldr
.
GetObject
[
*
adw
.
NavigationPage
](
builder
,
"listpage"
)
listbox
:=
bldr
.
GetObject
[
*
gtk
.
ListBox
](
builder
,
"updates_listbox"
)
applyButton
:=
bldr
.
GetObject
[
*
adw
.
ButtonRow
](
builder
,
"apply_button"
)
return
&
SystemUpdaterListPage
{
page
,
listbox
,
applyButton
}
}
func
NewUpdateRow
(
name
string
,
info
apm
.
PackageChanges
)
*
adw
.
ActionRow
{
win
:=
GetSystemUpdaterWindow
()
urow
:=
adw
.
NewActionRow
()
urow
.
SetTitle
(
name
)
urow
.
SetActivatable
(
true
)
upage
:=
NewListPage
()
urow
.
ConnectActivated
(
func
()
{
win
.
navView
.
Push
(
upage
.
nav
)
})
for
title
,
pkgs
:=
range
map
[
string
][]
string
{
"Upgraded Packages"
:
info
.
UpgradedPackages
,
...
...
@@ -26,16 +58,23 @@ func NewUpdateRow(name string, info apm.PackageChanges) *adw.ExpanderRow {
continue
}
row
:=
adw
.
New
Expander
Row
()
row
:=
adw
.
New
Action
Row
()
row
.
SetTitle
(
title
)
row
.
SetActivatable
(
true
)
page
:=
NewListPage
()
row
.
ConnectActivated
(
func
()
{
win
.
navView
.
Push
(
page
.
nav
)
})
for
_
,
p
:=
range
pkgs
{
ar
:=
adw
.
NewActionRow
()
ar
.
SetTitle
(
p
)
row
.
AddRow
(
ar
)
page
.
listbox
.
Append
(
ar
)
}
exrow
.
AddRow
(
row
)
upage
.
listbox
.
Append
(
row
)
}
return
ex
row
return
u
row
}
ui.cmb
View file @
4964f481
...
...
@@ -3,12 +3,14 @@
<cambalache-project
version=
"0.94.0"
target_tk=
"gtk-4.0"
>
<ui>
(1,None,"window.ui","window.ui",None,None,None,None,"ximper-system-updater",None,None),
(2,None,None,"listpage.ui",None,None,None,None,"ximper-system-updater",None,None)
(2,None,None,"listpage.ui",None,None,None,None,"ximper-system-updater",None,None),
(5,None,"process-page.ui","process-page.ui",None,None,None,None,None,None,None)
</ui>
<ui_library>
(1,"gio","2.0",None),
(1,"gtk","4.0",None),
(1,"libadwaita","1.6",None)
(1,"libadwaita","1.6",None),
(5,"gtk","4.0",None)
</ui_library>
<object>
(1,1,"AdwApplicationWindow","main_window",None,None,None,None,0,None,None),
...
...
@@ -58,7 +60,24 @@
(2,18,"GtkListBox",None,17,None,None,None,0,None,None),
(2,19,"AdwButtonRow","apply_button",18,None,None,None,0,None,None),
(2,23,"AdwHeaderBar","header_bar",2,None,"top",None,1,None,None),
(2,24,"GtkButton",None,23,None,"end",None,0,None,None)
(2,24,"GtkButton",None,23,None,"end",None,0,None,None),
(5,1,"AdwToolbarView","main_view",18,None,None,None,0,None,None),
(5,2,"AdwHeaderBar",None,1,None,"top",None,0,None,None),
(5,3,"AdwWindowTitle","window_title",2,None,None,None,0,None,None),
(5,4,"GtkScrolledWindow",None,1,None,None,None,1,None,None),
(5,5,"GtkStack","process_stack",4,None,None,None,0,None,None),
(5,6,"GtkStackPage",None,5,None,None,None,0,None,None),
(5,7,"AdwStatusPage","status_page",6,None,None,None,0,None,None),
(5,8,"AdwClamp",None,7,None,None,None,0,None,None),
(5,9,"GtkBox",None,8,None,None,None,0,None,None),
(5,10,"GtkListBox",None,9,None,None,None,0,None,None),
(5,11,"AdwExpanderRow",None,10,None,None,None,0,None,None),
(5,12,"GtkScrolledWindow",None,11,None,None,None,0,None,None),
(5,13,"GtkTextView","log_view",12,None,None,None,0,None,None),
(5,15,"GtkStackPage",None,5,None,None,None,1,None,None),
(5,16,"AdwStatusPage",None,15,None,None,None,0,None,None),
(5,17,"GtkButton","restart_button",16,None,None,None,0,None,None),
(5,18,"AdwNavigationPage","process_page",None,None,None,None,0,None,None)
</object>
<object_property>
(1,1,"GtkWidget","height-request","294",0,None,None,None,None,None,None,None,None),
...
...
@@ -134,7 +153,34 @@
(2,17,"GtkWidget","margin-start","12",0,None,None,None,None,None,None,None,None),
(2,19,"AdwPreferencesRow","title","Update",1,None,None,None,None,None,None,None,None),
(2,24,"GtkActionable","action-name","app.about",0,None,None,None,None,None,None,None,None),
(2,24,"GtkButton","icon-name","help-about-symbolic",0,None,None,None,None,None,None,None,None)
(2,24,"GtkButton","icon-name","help-about-symbolic",0,None,None,None,None,None,None,None,None),
(5,1,"AdwToolbarView","content",None,0,None,None,None,4,None,None,None,None),
(5,2,"AdwHeaderBar","title-widget",None,0,None,None,None,3,None,None,None,None),
(5,3,"AdwWindowTitle","title","Updating",1,None,None,None,None,None,None,None,None),
(5,4,"GtkScrolledWindow","hscrollbar-policy","never",0,None,None,None,None,None,None,None,None),
(5,4,"GtkScrolledWindow","propagate-natural-height","true",0,None,None,None,None,None,None,None,None),
(5,6,"GtkStackPage","child",None,0,None,None,None,7,None,None,None,None),
(5,6,"GtkStackPage","name","default",0,None,None,None,None,None,None,None,None),
(5,7,"AdwStatusPage","title","The update process is underway...",1,None,None,None,None,None,None,None,None),
(5,8,"AdwClamp","maximum-size","500",0,None,None,None,None,None,None,None,None),
(5,9,"GtkBox","spacing","12",0,None,None,None,None,None,None,None,None),
(5,9,"GtkOrientable","orientation","vertical",0,None,None,None,None,None,None,None,None),
(5,10,"GtkListBox","selection-mode","none",0,None,None,None,None,None,None,None,None),
(5,11,"AdwPreferencesRow","title","Show more information",1,None,None,None,None,None,None,None,None),
(5,12,"GtkScrolledWindow","hscrollbar-policy","never",0,None,None,None,None,None,None,None,None),
(5,12,"GtkScrolledWindow","propagate-natural-height","true",0,None,None,None,None,None,None,None,None),
(5,12,"GtkWidget","height-request","300",0,None,None,None,None,None,None,None,None),
(5,13,"GtkTextView","cursor-visible","false",0,None,None,None,None,None,None,None,None),
(5,13,"GtkTextView","editable","false",0,None,None,None,None,None,None,None,None),
(5,13,"GtkTextView","wrap-mode","word-char",0,None,None,None,None,None,None,None,None),
(5,15,"GtkStackPage","child",None,0,None,None,None,16,None,None,None,None),
(5,15,"GtkStackPage","name","finish",0,None,None,None,None,None,None,None,None),
(5,16,"AdwStatusPage","description","Click on button below to restart device",1,None,None,None,None,None,None,None,None),
(5,16,"AdwStatusPage","icon-name","face-smile-big-symbolic",0,None,None,None,None,None,None,None,None),
(5,16,"AdwStatusPage","title","Updating complete!",1,None,None,None,None,None,None,None,None),
(5,17,"GtkButton","label","Reboot",1,None,None,None,None,None,None,None,None),
(5,17,"GtkWidget","halign","center",0,None,None,None,None,None,None,None,None),
(5,17,"GtkWidget","hexpand","false",0,None,None,None,None,None,None,None,None)
</object_property>
<object_data>
(1,12,"GtkStringList",1,1,None,None,None,None,None,None),
...
...
@@ -162,7 +208,12 @@
(2,19,"GtkWidget",2,2,None,1,None,None,None,None),
(2,19,"GtkWidget",1,1,None,None,None,None,None,None),
(2,18,"GtkWidget",2,2,None,1,None,None,None,None),
(2,18,"GtkWidget",1,1,None,None,None,None,None,None)
(2,18,"GtkWidget",1,1,None,None,None,None,None,None),
(5,10,"GtkWidget",1,1,None,None,None,None,None,None),
(5,10,"GtkWidget",2,2,None,1,None,None,None,None),
(5,17,"GtkWidget",1,1,None,None,None,None,None,None),
(5,17,"GtkWidget",2,2,None,1,None,None,None,None),
(5,17,"GtkWidget",2,3,None,1,None,None,None,None)
</object_data>
<object_data_arg>
(1,9,"GtkWidget",2,2,"name","linked"),
...
...
@@ -172,6 +223,9 @@
(2,9,"GtkWidget",2,2,"name","linked"),
(2,15,"GtkWidget",2,2,"name","boxed-list-separate"),
(2,19,"GtkWidget",2,2,"name","suggested-action"),
(2,18,"GtkWidget",2,2,"name","boxed-list")
(2,18,"GtkWidget",2,2,"name","boxed-list"),
(5,10,"GtkWidget",2,2,"name","boxed-list"),
(5,17,"GtkWidget",2,2,"name","pill"),
(5,17,"GtkWidget",2,3,"name","suggested-action")
</object_data_arg>
</cambalache-project>
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment