Skip to content

Commit cbb6541

Browse files
committed
Use signals instead of calling procedures directly
1 parent 13c5784 commit cbb6541

File tree

5 files changed

+51
-24
lines changed

5 files changed

+51
-24
lines changed

src/bookmarks.py

Lines changed: 16 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -26,13 +26,14 @@ class PortfolioBookmarks(GObject.GObject):
2626
__gtype_name__ = "PortfolioBookmarks"
2727

2828
__gsignals__ = {
29-
"bookmark_toggled": (GObject.SignalFlags.RUN_LAST, None, (str,)),
29+
"toggle-bookmark": (GObject.SignalFlags.RUN_LAST, None, (str,)),
3030
}
3131

3232
def __init__(self):
3333
GObject.GObject.__init__(self)
34+
self.connect("toggle-bookmark", self._toggle_bookmark)
3435

35-
self._bookmarked = {}
36+
self.bookmarked = {}
3637
self._portfolio_config_path = os.path.join(GLib.get_user_config_dir(), "portfolio")
3738
self._bookmark_path = os.path.join(self._portfolio_config_path, "bookmarks")
3839

@@ -50,33 +51,30 @@ def __init__(self):
5051
self._add_bookmark(path)
5152

5253
except (json.JSONDecodeError, OSError, IOError):
53-
self._bookmarked = {}
54-
55-
self.connect("bookmark_toggled", self._toggle_bookmark)
54+
self.bookmarked = {}
5655

5756
def _add_bookmark(self, path):
58-
if path not in self._bookmarked:
57+
if path not in self.bookmarked:
5958
name = os.path.basename(path)
60-
self._bookmarked[path] = 0 # Python Hashsets are limited?
59+
self.bookmarked[path] = 0 # Python Hashsets are limited?
6160

6261
def _delete_bookmark(self, path):
63-
if path in self._bookmarked:
64-
self._bookmarked.pop(path)
62+
if path in self.bookmarked:
63+
self.bookmarked.pop(path)
6564

6665
def _is_bookmarked(self, path):
67-
return path in self._bookmarked
68-
69-
def _toggle_bookmark(self, path):
70-
print("hello")
71-
if self._is_bookmarked(path):
72-
self._delete_bookmark(path)
73-
else:
74-
self._add_bookmark(path)
66+
return path in self.bookmarked
7567

7668
def _save_bookmarks(self):
7769
os.makedirs(self._portfolio_config_path, exist_ok = True)
7870
with open(self._bookmark_path, 'w') as f:
79-
paths = [bookmark for bookmark in self._bookmarked]
71+
paths = [bookmark for bookmark in self.bookmarked]
8072
json.dump(paths, f)
8173

74+
def _toggle_bookmark(self, button, path):
75+
if self._is_bookmarked(path):
76+
self._delete_bookmark(path)
77+
else:
78+
self._add_bookmark(path)
79+
self._save_bookmarks()
8280

src/place.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ class PortfolioPlace(Adw.ActionRow):
2424

2525
icon = Gtk.Template.Child()
2626
eject = Gtk.Template.Child()
27+
remove_bookmark = Gtk.Template.Child()
2728
mount = None
2829
path = ""
2930
uuid = ""

src/place.ui

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,20 @@
2525
<class name="eject-button"/>
2626
</style>
2727
</object>
28+
<object class="GtkButton" id="remove_bookmark">
29+
<property name="visible">0</property>
30+
<property name="hexpand">1</property>
31+
<property name="halign">end</property>
32+
<property name="valign">center</property>
33+
<child>
34+
<object class="GtkImage">
35+
<property name="icon-name">bookmark-outline-symbolic</property>
36+
</object>
37+
</child>
38+
<style>
39+
<class name="remove-bookmark"/>
40+
</style>
41+
</object>
2842
</child>
2943
</object>
3044
</child>

src/places.py

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ class PortfolioPlaces(Gtk.Stack):
3636
"removed": (GObject.SignalFlags.RUN_LAST, None, (str, bool)),
3737
"failed": (GObject.SignalFlags.RUN_LAST, None, (str,)),
3838
"unlock": (GObject.SignalFlags.RUN_LAST, None, (object,)),
39+
"toggle-bookmark": (GObject.SignalFlags.RUN_LAST, None, (str,)),
3940
}
4041

4142
FLATPAK_INFO = os.path.join(os.path.abspath(os.sep), ".flatpak-info")
@@ -66,6 +67,7 @@ def __init__(self, **kargs):
6667
self._setup()
6768

6869
def _setup(self):
70+
self.connect("toggle-bookmark", self._on_bookmark_toggled)
6971
self.props.visible = True
7072
self.props.transition_type = Gtk.StackTransitionType.CROSSFADE
7173

@@ -77,7 +79,6 @@ def _setup(self):
7779
self._devices.connect("encrypted-added", self._on_encrypted_added)
7880

7981
self._bookmarks = PortfolioBookmarks()
80-
self._bookmarks.connect("bookmark_toggled", self._on_bookmark_toggled)
8182

8283
# begin UI structure
8384

@@ -102,6 +103,9 @@ def _setup(self):
102103
self._bookmarks_group.props.title = _("Bookmarks")
103104
self._bookmarks_group.props.visible = True
104105

106+
for path in self._bookmarks.bookmarked:
107+
self._add_bookmark_place(path)
108+
105109
# places
106110

107111
if self._has_permission_for(self.HOME_PERMISSION):
@@ -405,6 +409,14 @@ def _find_place_by_path(self, listbox, path):
405409
return place
406410
return None
407411

412+
def _remove_bookmark(self, button, path):
413+
place = self._find_place_by_path(self._bookmarks_listbox, path)
414+
if place is not None:
415+
self._bookmarks_group.remove(place)
416+
self._bookmarks.emit("toggle-bookmark", path)
417+
return True
418+
return False
419+
408420
def _add_bookmark_place(self, path):
409421
name = os.path.basename(path)
410422
place = self._add_place(
@@ -413,10 +425,13 @@ def _add_bookmark_place(self, path):
413425
name,
414426
path
415427
)
428+
place.remove_bookmark.props.visible = True
429+
place.remove_bookmark.connect("clicked", self._remove_bookmark, path)
416430

417-
def _on_bookmark_toggled(self, path):
431+
def _on_bookmark_toggled(self, places, path):
418432
place = self._find_place_by_path(self._bookmarks_listbox, path)
419433
if place is None:
420434
self._add_bookmark_place(path)
421435
else:
422436
self._bookmarks_group.remove(place)
437+
self._bookmarks.emit("toggle-bookmark", path)

src/window.py

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -149,7 +149,7 @@ def _setup(self):
149149
self.select_all.connect("clicked", self._on_select_all)
150150
self.select_none.connect("clicked", self._on_select_none)
151151
self.new_folder.connect("clicked", self._on_new_folder)
152-
self.bookmark.connect("clicked", self._on_bookmark)
152+
self.bookmark.connect("clicked", self._toggle_bookmark)
153153
self.close_button.connect("clicked", self._on_button_closed)
154154
self.go_top_button.connect("clicked", self._go_to_top)
155155
self.stop_button.connect("clicked", self._on_stop_clicked)
@@ -861,9 +861,8 @@ def _on_new_folder(self, button):
861861
directory = self._history[self._index]
862862
self.files.add_new_folder_row(directory)
863863

864-
def _on_bookmark(self, button):
865-
self._places._on_bookmark_toggled(self._history[self._index])
866-
#self.emit("bookmark_toggled", self._history[self._index])
864+
def _toggle_bookmark(self, button):
865+
self._places.emit("toggle-bookmark", self._history[self._index])
867866

868867
def _on_restore_trash_clicked(self, button):
869868
selection = self.files.get_selection()

0 commit comments

Comments
 (0)