Skip to content

Commit e075c96

Browse files
authored
Pylance Fixes (#178)
* Pylance: menulibre/util.py * Pylance: menulibre/ActionEditor.py * Pylance: menulibre/CategoryEditor.py * Pylance: menulibre/CommandEditor.py * Pylance: menulibre/FileHandler.py * Pylance: menulibre/FilenameLabel.py * Pylance: menulibre/Headerbar.py * Pylance: menulibre/IconEntry.py * Pylance: menulibre/LabelWithHidingButton.py * Pylance: menulibre/MenuEditor.py * Pylance: menulibre/MenulibreApplication.py * Pylance: menulibre/MenulibreTreeview.py * Pylance: menulibre/ParsingErrorsDialog.py * Pylance: menulibre/StartupWmClassEntry.py * Pylance: menulibre/XmlMenuElementTree.py * Pylance: Remaining files * Appropriately (un)escape Comment * Better handling of required name/comment fields
1 parent 69f9637 commit e075c96

34 files changed

+470
-359
lines changed

NEWS

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@ MenuLibre NEWS
44

55
- All Glade and GtkBuilder usage has been replaced with native Python and GTK
66
code. This simplifies future updates and enables porting to newer toolkits.
7+
- All code was processed with Pylance to identify and resolve various unknown
8+
and potential bugs.
79
- New Features:
810
. Label tooltips have been replaced by a new, on-demand help button.
911
Clicking this button will show a dialog with more information and links.

bin/menulibre

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ import signal
2424

2525
import gi
2626
gi.require_version('Gtk', '3.0')
27-
from gi.repository import Gtk
27+
from gi.repository import Gtk # type: ignore
2828

2929
# Check GTK Version, minimum required is 3.10
3030
if Gtk.check_version(3,10,0):

bin/menulibre-menu-validate

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ gi.require_version('GMenu', '3.0')
3333
gi.require_version('Gtk', '3.0') # This seems to be needed for imported
3434
# menulibre code
3535

36-
from gi.repository import GMenu
36+
from gi.repository import GMenu # type: ignore
3737

3838

3939
# As with the main script, need to mess with the path to access menulibre code

menulibre/ActionEditor.py

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

2121
import gi
2222
gi.require_version("Gtk", "3.0")
23-
from gi.repository import Gtk, GObject
23+
from gi.repository import Gtk, GObject # type: ignore
2424

2525

2626
COL_SHOW = 0
@@ -41,7 +41,7 @@ def __init__(self):
4141
scrolled.set_shadow_type(Gtk.ShadowType.IN)
4242
self.pack_start(scrolled, True, True, 0)
4343

44-
self._liststore = Gtk.ListStore.new([bool, str, str, str])
44+
self._liststore = Gtk.ListStore.new([bool, str, str, str]) # type: ignore
4545

4646
treeview = Gtk.TreeView.new_with_model(self._liststore)
4747
treeview.set_enable_search(False)
@@ -53,23 +53,23 @@ def __init__(self):
5353
renderer.connect("toggled", self._on_toggle_changed)
5454

5555
# Translators: "Show" tree column header
56-
col = Gtk.TreeViewColumn(_("Show"), renderer, active=COL_SHOW)
56+
col = Gtk.TreeViewColumn(_("Show"), renderer, active=COL_SHOW) # type: ignore
5757
treeview.append_column(col)
5858

5959
renderer = Gtk.CellRendererText()
6060
renderer.set_property("editable", True)
6161
renderer.connect('edited', self._on_edited, COL_DISPLAYED)
6262

6363
# Translators: "Name" tree column header
64-
col = Gtk.TreeViewColumn(_("Name"), renderer, text=COL_DISPLAYED)
64+
col = Gtk.TreeViewColumn(_("Name"), renderer, text=COL_DISPLAYED) # type: ignore
6565
treeview.append_column(col)
6666

6767
renderer = Gtk.CellRendererText()
6868
renderer.set_property("editable", True)
6969
renderer.connect('edited', self._on_edited, COL_COMMAND)
7070

7171
# Translators: "Command" tree column header
72-
col = Gtk.TreeViewColumn(_("Command"), renderer, text=COL_COMMAND)
72+
col = Gtk.TreeViewColumn(_("Command"), renderer, text=COL_COMMAND) # type: ignore
7373
treeview.append_column(col)
7474

7575
toolbar = Gtk.Toolbar.new()
@@ -164,7 +164,7 @@ def _toggle_move_buttons(
164164
try:
165165
model, [path] = treeview.get_selection().get_selected_rows()
166166
except ValueError:
167-
path = None
167+
model = path = None
168168

169169
can_up = False
170170
can_down = False

menulibre/AdvancedPage.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323

2424
import gi
2525
gi.require_version("Gtk", "3.0")
26-
from gi.repository import Gtk, GObject
26+
from gi.repository import Gtk, GObject # type: ignore
2727

2828

2929
class AdvancedPage(Gtk.ScrolledWindow):
@@ -32,7 +32,7 @@ class AdvancedPage(Gtk.ScrolledWindow):
3232
}
3333

3434
def __init__(self, use_headerbar):
35-
super().__init__(hadjustment=None, vadjustment=None)
35+
super().__init__(hadjustment=None, vadjustment=None) # type: ignore
3636

3737
self._row_index = 0
3838
self._widgets = {}

menulibre/ApplicationEditor.py

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

3333
import gi
3434
gi.require_version("Gtk", "3.0")
35-
from gi.repository import Gtk, GObject
35+
from gi.repository import Gtk, GObject # type: ignore
3636

3737

3838
class ApplicationEditor(Gtk.Box):
@@ -70,15 +70,15 @@ def __init__(self, use_headerbar):
7070
hbox.pack_start(namebox, True, True, 0)
7171

7272
self._name_entry = TextEntryButton(
73-
'Name',
73+
property_name='Name',
7474
bold_font=True,
7575
required=True,
7676
placeholder_text=_('Add name'))
7777
self._name_entry.connect("value-changed", self._on_changed)
7878
namebox.pack_start(self._name_entry, True, True, 0)
7979

8080
self._comment_entry = TextEntryButton(
81-
'Comment', placeholder_text=_('Add comment'))
81+
property_name='Comment', placeholder_text=_('Add comment'))
8282
self._comment_entry.connect("value-changed", self._on_changed)
8383
namebox.pack_start(self._comment_entry, True, True, 0)
8484

menulibre/CategoryEditor.py

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

2222
import gi
2323
gi.require_version("Gtk", "3.0")
24-
from gi.repository import Gtk, GObject
24+
from gi.repository import Gtk, GObject # type: ignore
2525

2626

2727
# Sourced from https://specifications.freedesktop.org/menu-spec/latest/apa.html
@@ -406,6 +406,8 @@ def lookup_vendor_category_description(spec_name):
406406
unvendored = spec_name[10:]
407407
elif spec_name.startswith("X-"):
408408
unvendored = "-".join(spec_name.split("-")[2:])
409+
else:
410+
unvendored = spec_name
409411

410412
try:
411413
description = category_descriptions[unvendored]
@@ -463,9 +465,9 @@ def __init__(self):
463465
scrolled.set_shadow_type(Gtk.ShadowType.IN)
464466
self.pack_start(scrolled, True, True, 0)
465467

466-
self._options = Gtk.TreeStore.new([str, str, str, str])
468+
self._options = Gtk.TreeStore.new([str, str, str, str]) # type: ignore
467469
self._options.set_sort_column_id(3, Gtk.SortType.ASCENDING)
468-
self._treestore = Gtk.TreeStore.new([str, str, str])
470+
self._treestore = Gtk.TreeStore.new([str, str, str]) # type: ignore
469471

470472
self._section_lookup = {}
471473
self._category_lookup = {}
@@ -488,13 +490,13 @@ def __init__(self):
488490
renderer.connect("changed", self._on_combo_changed)
489491

490492
# Translators: "Category Name" tree column header
491-
col = Gtk.TreeViewColumn(_("Category Name"), renderer, text=COL_DESC)
493+
col = Gtk.TreeViewColumn(_("Category Name"), renderer, text=COL_DESC) # type: ignore
492494
treeview.append_column(col)
493495

494496
renderer = Gtk.CellRendererText()
495497

496498
# Translators: "Section" tree column header
497-
col = Gtk.TreeViewColumn(_("Section"), renderer, text=COL_SECTION)
499+
col = Gtk.TreeViewColumn(_("Section"), renderer, text=COL_SECTION) # type: ignore
498500
treeview.append_column(col)
499501

500502
toolbar = Gtk.Toolbar.new()

menulibre/CommandEditor.py

Lines changed: 7 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -22,14 +22,14 @@
2222

2323
import gi
2424
gi.require_version("Gtk", "3.0")
25-
from gi.repository import Gtk, Gio, GObject, GLib, Pango, Gdk
25+
from gi.repository import Gtk, Gio, GObject, GLib, Pango, Gdk # type: ignore
2626

2727

2828
class CommandEditorDialog(Gtk.Dialog):
2929

3030
def __init__(self, parent, initial_text, use_header_bar):
3131
super().__init__(title=_("Command Editor"), transient_for=parent,
32-
use_header_bar=use_header_bar, flags=0)
32+
use_header_bar=use_header_bar, flags=0) # type: ignore
3333
self.add_buttons(
3434
_('Cancel'), Gtk.ResponseType.CANCEL,
3535
_('Apply'), Gtk.ResponseType.OK
@@ -129,16 +129,7 @@ def __init__(self, uri, label):
129129
super().__init__(uri=uri)
130130

131131
self.set_label(label)
132-
133-
screen = Gdk.Screen.get_default()
134-
provider = Gtk.CssProvider()
135-
style_context = Gtk.StyleContext()
136-
style_context.add_provider_for_screen(
137-
screen, provider, Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION)
138-
provider.load_from_data("#helpbutton {padding: 0;}".encode())
139-
140132
self.set_name('helpbutton')
141-
142133
self.set_halign(Gtk.Align.START)
143134

144135

@@ -408,15 +399,15 @@ def on_entry_changed(self, widget, revert_button, clear_button):
408399
field = (True, _('No invalid field codes'))
409400

410401
if env != self.state['env']:
411-
self.state['env'] = env
402+
self.state['env'] = env # type: ignore
412403
self.emit('env-state-changed', env[0], env[1])
413404

414405
if cmd != self.state['cmd']:
415-
self.state['cmd'] = cmd
406+
self.state['cmd'] = cmd # type: ignore
416407
self.emit('cmd-state-changed', cmd[0], cmd[1])
417408

418409
if field != self.state['field']:
419-
self.state['field'] = field
410+
self.state['field'] = field # type: ignore
420411
self.emit('field-state-changed', field[0], field[1])
421412

422413

@@ -693,7 +684,7 @@ class AppChooserMenu(Gtk.ComboBox):
693684
def __init__(self):
694685
super().__init__()
695686

696-
store = Gtk.ListStore.new([str, str, Gio.Icon])
687+
store = Gtk.ListStore.new([str, str, Gio.Icon]) # type: ignore
697688
store.append([_("Select an application"), None, None])
698689

699690
app_list = []
@@ -736,7 +727,7 @@ def get_executable(self):
736727
treeiter = self.get_active_iter()
737728
if treeiter is None:
738729
return None
739-
row = treemodel[treeiter][:]
730+
row = treemodel[treeiter][:] # type: ignore
740731
return row[1]
741732

742733

menulibre/Dialogs.py

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

2020
from locale import gettext as _
2121

22-
from gi.repository import Gtk
22+
from gi.repository import Gtk # type: ignore
2323

2424
import menulibre_lib
2525

menulibre/FieldLabel.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222

2323
import gi
2424
gi.require_version("Gtk", "3.0")
25-
from gi.repository import Gtk, Pango, GObject
25+
from gi.repository import Gtk, Pango, GObject # type: ignore
2626

2727

2828
class FieldLabel(LabelWithHidingButton):
@@ -76,13 +76,13 @@ def __init__(self, parent, key_name, description, help_text, help_url):
7676
self.format_secondary_markup(secondary)
7777

7878
message_area = self.get_content_area().get_children()[0]
79-
if isinstance(message_area.get_children()[0], Gtk.Image):
80-
message_area.get_children()[0].destroy()
79+
if isinstance(message_area.get_children()[0], Gtk.Image): # type: ignore
80+
message_area.get_children()[0].destroy() # type: ignore
8181

8282
if help_text:
8383
button = self.add_button(help_text, Gtk.ResponseType.HELP)
8484
bbox = self.get_action_area()
85-
bbox.set_child_secondary(button, True)
85+
bbox.set_child_secondary(button, True) # type: ignore
8686

8787
self.connect("response", self.response_cb, help_url)
8888

0 commit comments

Comments
 (0)