Skip to content

Commit 42d84b9

Browse files
authored
Merge pull request #41 from oscfdezdz/gtk4
app: Port to GTK4 + libadwaita
2 parents 4a44de1 + 24a8a4e commit 42d84b9

11 files changed

+377
-555
lines changed

com.github.lachhebo.Gabtag.Devel.json

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
"command": "gabtag",
77
"finish-args": [
88
"--filesystem=home",
9+
"--device=dri",
910
"--share=network",
1011
"--share=ipc",
1112
"--socket=fallback-x11",
@@ -65,6 +66,53 @@
6566
}
6667
]
6768
},
69+
{
70+
"name": "libsass",
71+
"sources": [
72+
{
73+
"type" : "archive",
74+
"url" : "https://github.com/sass/libsass/archive/3.6.5.tar.gz",
75+
"sha256": "89d8f2c46ae2b1b826b58ce7dde966a176bac41975b82e84ad46b01a55080582"
76+
},
77+
{
78+
"type" : "script",
79+
"dest-filename" : "autogen.sh",
80+
"commands" : [ "autoreconf -si" ]
81+
}
82+
]
83+
},
84+
{
85+
"name": "sassc",
86+
"sources": [
87+
{
88+
"type" : "archive",
89+
"url" : "https://github.com/sass/sassc/archive/3.6.2.tar.gz",
90+
"sha256": "608dc9002b45a91d11ed59e352469ecc05e4f58fc1259fc9a9f5b8f0f8348a03"
91+
},
92+
{
93+
"type" : "script",
94+
"dest-filename" : "autogen.sh",
95+
"commands" : [ "autoreconf -si" ]
96+
}
97+
]
98+
},
99+
{
100+
"name" : "libadwaita",
101+
"buildsystem": "meson",
102+
"config-opts" : [
103+
"-Dvapi=true",
104+
"-Dgtk_doc=false",
105+
"-Dexamples=false",
106+
"-Dtests=false"
107+
],
108+
"sources" : [
109+
{
110+
"type" : "git",
111+
"url" : "https://gitlab.gnome.org/GNOME/libadwaita.git",
112+
"branch" : "main"
113+
}
114+
]
115+
},
68116
{
69117
"name": "gabtag",
70118
"buildsystem": "meson",

src/audio_ogg_file_handler.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@
2222

2323

2424
class OggFileHandler(AudioExtensionHandler):
25-
2625
@staticmethod
2726
def get_extension():
2827
return ".ogg"

src/controller.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414

1515
from .view import VIEW
1616

17-
gi.require_version("Gtk", "3.0")
17+
gi.require_version("Gtk", "4.0")
1818

1919

2020
class Controller:

src/event_machine.py

Lines changed: 43 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,12 @@
44
from .controller import Controller
55
from .tools import add_filters, get_filenames_from_selection
66

7-
from gi.repository import Gtk
7+
from gi.repository import Gio, Gtk
88

99
import gi
1010
import gettext
1111

12-
gi.require_version("Gtk", "3.0")
12+
gi.require_version("Gtk", "4.0")
1313
_ = gettext.gettext
1414

1515

@@ -31,37 +31,43 @@ def on_clicked_save_one(self, widget):
3131
def on_reset_one_clicked(self, widget):
3232
if self.is_real_selection == 1:
3333
self.is_real_selection = 0
34-
Controller.reset_some_files()
34+
# Controller.reset_some_files()
35+
Controller.reset_all()
3536
self.is_real_selection = 1
3637

37-
def on_reset_all_clicked(self, widget):
38+
def on_reset_all_clicked(self, widget, action: Gio.Action):
3839
if self.is_real_selection == 1:
3940
self.is_real_selection = 0
4041
Controller.reset_all()
4142
self.is_real_selection = 1
4243

43-
def on_about_clicked(self, widget):
44-
self.window.id_about_window.run()
45-
self.window.id_about_window.hide()
44+
def on_about_clicked(self, widget, action: Gio.Action):
45+
if self.window is not None:
46+
self.window.id_about_window.show()
4647

4748
def on_open_clicked(self, widget):
4849
self.is_real_selection = 0
4950
dialog = Gtk.FileChooserDialog(
50-
_("Select Folder"),
51-
self.window,
52-
Gtk.FileChooserAction.SELECT_FOLDER,
53-
(Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL, _("Select"), Gtk.ResponseType.OK),
51+
title=_("Select a Folder"),
52+
transient_for=self.window,
53+
action=Gtk.FileChooserAction.SELECT_FOLDER,
5454
)
55-
dialog.set_default_size(800, 400)
55+
dialog.add_buttons(_("_Open"), Gtk.ResponseType.OK)
56+
dialog.add_buttons(_("_Cancel"), Gtk.ResponseType.CANCEL)
57+
dialog.set_default_response(Gtk.ResponseType.OK)
58+
dialog.set_modal(True)
5659

57-
response = dialog.run()
60+
dialog.connect("response", self.on_open_folder_chooser)
5861

59-
if response == Gtk.ResponseType.OK:
60-
Controller.change_directory(dialog.get_filename())
62+
dialog.show()
63+
64+
self.is_real_selection = 1
6165

66+
def on_open_folder_chooser(self, dialog, response):
6267
dialog.destroy()
6368

64-
self.is_real_selection = 1
69+
if response == Gtk.ResponseType.OK:
70+
Controller.change_directory(dialog.get_file().get_path())
6571

6672
def on_menu_but_toggled(self, widget):
6773
pass
@@ -107,29 +113,33 @@ def on_load_cover_clicked(self, widget):
107113
self.is_real_selection = 0
108114

109115
dialog = Gtk.FileChooserDialog(
110-
_("Open File"),
111-
self.window,
112-
Gtk.FileChooserAction.OPEN,
113-
(
114-
Gtk.STOCK_CANCEL,
115-
Gtk.ResponseType.CANCEL,
116-
Gtk.STOCK_OPEN,
117-
Gtk.ResponseType.OK,
118-
),
116+
title=_("Open a File"),
117+
transient_for=self.window,
118+
action=Gtk.FileChooserAction.OPEN,
119119
)
120+
dialog.add_buttons(_("_Open"), Gtk.ResponseType.OK)
121+
dialog.add_buttons(_("_Cancel"), Gtk.ResponseType.CANCEL)
122+
dialog.set_default_response(Gtk.ResponseType.OK)
123+
dialog.set_modal(True)
120124

121125
add_filters(dialog)
122-
response = dialog.run()
123126

124-
if response == Gtk.ResponseType.OK:
125-
file_cover = dialog.get_filename()
126-
name_files = get_filenames_from_selection(SELECTION.selection)
127-
MODEL.update_modifications(name_files, "cover", file_cover)
128-
Controller.update_view(name_files)
127+
dialog.connect("response", self.on_open_image_chooser)
128+
129+
dialog.show()
129130

130-
dialog.destroy()
131131
self.is_real_selection = 1
132132

133+
def on_open_image_chooser(self, dialog, response):
134+
dialog.destroy()
135+
136+
if response == Gtk.ResponseType.OK:
137+
file_cover = dialog.get_file().get_path()
138+
139+
name_files = get_filenames_from_selection(SELECTION.selection)
140+
MODEL.update_modifications(name_files, "cover", file_cover)
141+
Controller.update_view(name_files)
142+
133143
def on_selected_changed(self, selection):
134144
if self.is_real_selection == 1:
135145
self.is_real_selection = 0
@@ -149,7 +159,7 @@ def on_set_mbz(self, widget):
149159
Controller.update_view(name_files)
150160
self.is_real_selection = 1
151161

152-
def on_set_online_tags(self, widget):
162+
def on_set_online_tags(self, widget, action: Gio.Action):
153163
if DIR_MANAGER.is_open_directory and self.is_real_selection == 1:
154164
self.is_real_selection = 0
155165
name_files = get_filenames_from_selection(SELECTION.selection)

src/main.py

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -20,13 +20,12 @@
2020

2121
from .window_gtk import GabtagWindow
2222

23-
gi.require_version("Gtk", "3.0")
24-
gi.require_version("Handy", "1")
23+
gi.require_version("Adw", "1")
2524

26-
from gi.repository import Gtk, Gio, GLib, GObject, Handy # noqa: E402
25+
from gi.repository import Adw, Gio, GLib, GObject # noqa: E402
2726

2827

29-
class Application(Gtk.Application):
28+
class Application(Adw.Application):
3029

3130
app_id = GObject.Property(type=str)
3231
version = GObject.Property(type=str)
@@ -43,10 +42,8 @@ def __init__(self, app_id: str, version: str, devel: bool, *args, **kwargs):
4342
self.version = version
4443
self.devel = devel
4544

46-
GLib.set_application_name(("GabTag"))
45+
GLib.set_application_name("GabTag")
4746
GLib.set_prgname(self.app_id)
48-
Handy.init()
49-
Handy.StyleManager.get_default().set_color_scheme(Handy.ColorScheme.PREFER_LIGHT)
5047

5148
def do_activate(self):
5249
win = self.props.active_window

src/tools.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
from .extension_manager import is_extension_managed
1010
from .selection_handler import SELECTION
1111

12-
gi.require_version("Gtk", "3.0")
12+
gi.require_version("Gtk", "4.0")
1313

1414
from gi.repository import Gtk # noqa: E402
1515

src/treeview.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
import gettext
77

8-
gi.require_version("Gtk", "3.0")
8+
gi.require_version("Gtk", "4.0")
99

1010
_ = gettext.gettext
1111

@@ -21,12 +21,12 @@ def add_columns(self):
2121

2222
renderer_filename = Gtk.CellRendererText()
2323
column_filename = Gtk.TreeViewColumn(
24-
_("Name"), renderer_filename, text=0, weight=2, weight_set=True
24+
_("Name"), renderer_filename, text=0, weight=2
2525
)
2626

2727
renderer_data = Gtk.CellRendererText()
2828
column_data_gathered = Gtk.TreeViewColumn(
29-
_("Data"), renderer_data, text=1, weight=2, weight_set=True
29+
_("Data"), renderer_data, text=1, weight=2
3030
)
3131

3232
self.view.append_column(column_data_gathered)

src/view.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77

88
from .tools import set_text_widget_permission, set_label
99

10-
gi.require_version("Gtk", "3.0")
10+
gi.require_version("Gtk", "4.0")
1111

1212

1313
verrou_tags = RLock()
@@ -76,9 +76,9 @@ def show_mbz(self, data_scrapped):
7676

7777
self.cover_mbz.set_from_pixbuf(pixbuf)
7878
except TypeError:
79-
self.cover_mbz.set_from_icon_name("emblem-music-symbolic", 6)
79+
self.cover_mbz.set_from_icon_name("emblem-music-symbolic")
8080
else:
81-
self.cover_mbz.set_from_icon_name("emblem-music-symbolic", 6)
81+
self.cover_mbz.set_from_icon_name("emblem-music-symbolic")
8282

8383
def erase(self):
8484
"""
@@ -90,7 +90,7 @@ def erase(self):
9090
self.artist.set_text("")
9191
self.year.set_text("")
9292
self.track.set_text("")
93-
self.cover.set_from_icon_name("emblem-music-symbolic", 6)
93+
self.cover.set_from_icon_name("emblem-music-symbolic")
9494
self.last_cover = ""
9595
self.show_mbz(
9696
{
@@ -180,7 +180,7 @@ def show_tags(self, tags_dict, multiple_rows):
180180
pass
181181
else:
182182

183-
self.cover.set_from_icon_name("emblem-music-symbolic", 6)
183+
self.cover.set_from_icon_name("emblem-music-symbolic")
184184
self.last_cover = ""
185185

186186

0 commit comments

Comments
 (0)