Skip to content

Commit d770d6a

Browse files
Add protection for language selection
1 parent 60927f6 commit d770d6a

File tree

5 files changed

+61
-17
lines changed

5 files changed

+61
-17
lines changed

src/robotide/editor/texteditor.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@
4040
from ..preferences.editors import read_fonts
4141
from ..publish import RideSettingsChanged, PUBLISHER
4242
from ..publish.messages import RideMessage
43-
from ..widgets import TextField, Label, HtmlDialog
43+
from ..widgets import SearchField, Label, HtmlDialog
4444
from ..widgets import VerticalSizer, HorizontalSizer, ButtonWithHandler, RIDEDialog
4545

4646
from robotide.lib.compat.parsing.language import Language
@@ -1016,7 +1016,7 @@ def _create_editor_toolbar(self):
10161016
def _create_search(self, container_sizer):
10171017
container_sizer.AddSpacer(5)
10181018
size = wx.Size(200, 32)
1019-
self.search_field = TextField(self, '', size=size, process_enters=True)
1019+
self.search_field = SearchField(self, '', size=size, process_enters=True)
10201020
self.search_field.SetBackgroundColour(Colour(self.dlg.color_secondary_background))
10211021
self.search_field.SetForegroundColour(Colour(self.dlg.color_secondary_foreground))
10221022
self.search_field.Bind(wx.EVT_TEXT_ENTER, self.on_find)
@@ -1377,7 +1377,7 @@ def open(self, data):
13771377
if hasattr(self._data, 'content'): # Special case for unit test
13781378
self.source_editor.set_text(self._data.content)
13791379
self.set_editor_caret_position()
1380-
wx.CallAfter(self.plugin.statusbar_message, f'{_("Source: ")}{self._data.source}', 4000)
1380+
wx.CallAfter(self.plugin.statusbar_message, f'{_("Source: ")}{self._controller_for_context.source}', 4000)
13811381
self._words_cache.clear()
13821382
self._suggestions.update_from_local(self.words_cache(self.source_editor.GetLineCount()), self.language)
13831383

src/robotide/lib/compat/pygments/robotframework.py

Lines changed: 44 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -237,7 +237,10 @@ def __init__(self, new_lang=None):
237237
if self.new_lang is None:
238238
if new_lang is None:
239239
set_lang = shared_memory.ShareableList(name="language")
240-
self.new_lang = Language.from_name(set_lang[0].replace('_','-'))
240+
try:
241+
self.new_lang = Language.from_name(set_lang[0].replace('_', '-'))
242+
except ValueError:
243+
self.new_lang = ['En']
241244
else:
242245
self.new_lang = new_lang
243246
self._index = 0
@@ -286,7 +289,10 @@ def __init__(self, template_setter=None, new_lang=None):
286289
if self.new_lang is None:
287290
if new_lang is None:
288291
set_lang = shared_memory.ShareableList(name="language")
289-
self.new_lang = Language.from_name(set_lang[0].replace('_','-'))
292+
try:
293+
self.new_lang = Language.from_name(set_lang[0].replace('_', '-'))
294+
except ValueError:
295+
pass
290296
else:
291297
self.new_lang = new_lang
292298
if self.new_lang is None:
@@ -356,7 +362,10 @@ def __init__(self, new_lang=None):
356362
if self.new_lang is None:
357363
if new_lang is None:
358364
set_lang = shared_memory.ShareableList(name="language")
359-
self.new_lang = Language.from_name(set_lang[0].replace('_', '-'))
365+
try:
366+
self.new_lang = Language.from_name(set_lang[0].replace('_', '-'))
367+
except ValueError:
368+
self.new_lang = None
360369
else:
361370
self.new_lang = new_lang
362371
if self.new_lang is None:
@@ -380,7 +389,10 @@ def __init__(self, template_setter=None, new_lang=None):
380389
if self.new_lang is None:
381390
if new_lang is None:
382391
set_lang = shared_memory.ShareableList(name="language")
383-
self.new_lang = Language.from_name(set_lang[0].replace('_', '-'))
392+
try:
393+
self.new_lang = Language.from_name(set_lang[0].replace('_', '-'))
394+
except ValueError:
395+
self.new_lang = None
384396
else:
385397
self.new_lang = new_lang
386398
if self.new_lang is None:
@@ -427,7 +439,10 @@ def __init__(self, template_setter=None, new_lang=None):
427439
if self.new_lang is None:
428440
if new_lang is None:
429441
set_lang = shared_memory.ShareableList(name="language")
430-
self.new_lang = Language.from_name(set_lang[0].replace('_', '-'))
442+
try:
443+
self.new_lang = Language.from_name(set_lang[0].replace('_', '-'))
444+
except ValueError:
445+
self.new_lang = None
431446
else:
432447
self.new_lang = new_lang
433448
if self.new_lang is None:
@@ -465,7 +480,10 @@ def __init__(self, support_assign=True, new_lang=None):
465480
if self.new_lang is None:
466481
if new_lang is None:
467482
set_lang = shared_memory.ShareableList(name="language")
468-
self.new_lang = Language.from_name(set_lang[0].replace('_', '-'))
483+
try:
484+
self.new_lang = Language.from_name(set_lang[0].replace('_', '-'))
485+
except ValueError:
486+
self.new_lang = None
469487
else:
470488
self.new_lang = new_lang
471489
if self.new_lang is None:
@@ -496,7 +514,10 @@ def __init__(self, new_lang=None):
496514
if self.new_lang is None:
497515
if new_lang is None:
498516
set_lang = shared_memory.ShareableList(name="language")
499-
self.new_lang = Language.from_name(set_lang[0].replace('_', '-'))
517+
try:
518+
self.new_lang = Language.from_name(set_lang[0].replace('_', '-'))
519+
except ValueError:
520+
self.new_lang = None
500521
else:
501522
self.new_lang = new_lang
502523
if self.new_lang is None:
@@ -535,7 +556,10 @@ def __init__(self, new_lang=None):
535556
if self.new_lang is None:
536557
if new_lang is None:
537558
set_lang = shared_memory.ShareableList(name="language")
538-
self.new_lang = Language.from_name(set_lang[0].replace('_', '-'))
559+
try:
560+
self.new_lang = Language.from_name(set_lang[0].replace('_', '-'))
561+
except ValueError:
562+
self.new_lang = None
539563
else:
540564
self.new_lang = new_lang
541565
if self.new_lang is None:
@@ -561,7 +585,10 @@ def __init__(self, prev_tokenizer=None, new_lang=None):
561585
set_lang = shared_memory.ShareableList(name="language")
562586
except FileNotFoundError:
563587
set_lang = ['En']
564-
self.new_lang = Language.from_name(set_lang[0].replace('_', '-'))
588+
try:
589+
self.new_lang = Language.from_name(set_lang[0].replace('_','-'))
590+
except ValueError:
591+
self.new_lang = None
565592
else:
566593
self.new_lang = new_lang
567594
if self.new_lang is None:
@@ -621,7 +648,10 @@ def __init__(self, template_setter, prev_tokenizer=None, new_lang=None):
621648
if self.new_lang is None:
622649
if new_lang is None:
623650
set_lang = shared_memory.ShareableList(name="language")
624-
self.new_lang = Language.from_name(set_lang[0].replace('_', '-'))
651+
try:
652+
self.new_lang = Language.from_name(set_lang[0].replace('_', '-'))
653+
except ValueError:
654+
self.new_lang = None
625655
else:
626656
self.new_lang = new_lang
627657
if self.new_lang is None:
@@ -666,7 +696,10 @@ def __init__(self, prev_tokenizer=None, new_lang=None):
666696
if self.new_lang is None:
667697
if new_lang is None:
668698
set_lang = shared_memory.ShareableList(name="language")
669-
self.new_lang = Language.from_name(set_lang[0].replace('_', '-'))
699+
try:
700+
self.new_lang = Language.from_name(set_lang[0].replace('_', '-'))
701+
except ValueError:
702+
self.new_lang = None
670703
else:
671704
self.new_lang = new_lang
672705
if self.new_lang is None:

src/robotide/namespace/namespace.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -646,7 +646,10 @@ def __init__(self, keywords, caseless=True, new_lang=None):
646646
set_lang = shared_memory.ShareableList(new_lang, name="language")
647647
except FileExistsError: # Other instance created file
648648
set_lang = shared_memory.ShareableList(name="language")
649-
self.new_lang = Language.from_name(set_lang[0].replace('_','-'))
649+
try:
650+
self.new_lang = Language.from_name(set_lang[0].replace('_','-'))
651+
except ValueError:
652+
self.new_lang = new_lang
650653
else:
651654
self.new_lang = new_lang
652655
self.normalized_bdd_prefixes = utils.normalize_pipe_list(list(self.new_lang.bdd_prefixes), spaces=False)

src/robotide/widgets/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,4 +22,4 @@
2222
from .list import VirtualList
2323
from .popupmenu import PopupCreator, PopupMenu, PopupMenuItem, PopupMenuItems
2424
from .sizers import VerticalSizer, HorizontalSizer
25-
from .text import TextField
25+
from .text import TextField, SearchField

src/robotide/widgets/text.py

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,15 @@
1717
from wx import Size
1818

1919

20-
class TextField(wx.SearchCtrl):
20+
class TextField(wx.TextCtrl):
21+
22+
def __init__(self, parent, initial_value, process_enters=False, size=Size(200, 32)):
23+
flags = wx.TE_PROCESS_ENTER|wx.TE_LEFT if process_enters else wx.TE_LEFT
24+
wx.TextCtrl.__init__(self, parent, size=size, style=flags|wx.TE_NOHIDESEL)
25+
self.SetValue(initial_value)
26+
27+
28+
class SearchField(wx.SearchCtrl):
2129

2230
def __init__(self, parent, initial_value, process_enters=False, size=Size(200, 32)):
2331
flags = wx.TE_PROCESS_ENTER|wx.TE_LEFT if process_enters else wx.TE_LEFT

0 commit comments

Comments
 (0)