- Factored out editor component.
This commit is contained in:
parent
6f5846d09f
commit
17d1898b29
82
gui/Gui/Editor.py
Normal file
82
gui/Gui/Editor.py
Normal file
@ -0,0 +1,82 @@
|
|||||||
|
#!/usr/bin/python
|
||||||
|
|
||||||
|
#---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
""" Import externals """
|
||||||
|
import wx
|
||||||
|
|
||||||
|
# Use Scintilla editor?
|
||||||
|
useStc = True # It looks nicer!
|
||||||
|
#useStc = False # It is sometimes buggy, claims the internet
|
||||||
|
|
||||||
|
# Test Scintilla and if it fails, get rid of it
|
||||||
|
if useStc:
|
||||||
|
try:
|
||||||
|
from wx.stc import *
|
||||||
|
except:
|
||||||
|
useStc = False
|
||||||
|
|
||||||
|
#---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
""" Import scyther-gui components """
|
||||||
|
|
||||||
|
#---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
""" Some constants """
|
||||||
|
|
||||||
|
#---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
def selectEditor(parent):
|
||||||
|
"""
|
||||||
|
Pick an editor (Scintilla or default) and return the object.
|
||||||
|
"""
|
||||||
|
if useStc:
|
||||||
|
return EditorStc(parent)
|
||||||
|
else:
|
||||||
|
return EditorNormal(parent)
|
||||||
|
|
||||||
|
#---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
class Editor(object):
|
||||||
|
|
||||||
|
def __init__(self, parent):
|
||||||
|
# Empty start
|
||||||
|
self.SetText("")
|
||||||
|
|
||||||
|
#---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
class EditorNormal(Editor):
|
||||||
|
|
||||||
|
def __init__(self, parent):
|
||||||
|
self.control = wx.TextCtrl(parent, style=wx.TE_MULTILINE)
|
||||||
|
|
||||||
|
# Call parent
|
||||||
|
Editor.__init__(self,parent)
|
||||||
|
|
||||||
|
def GetText(self):
|
||||||
|
return self.control.GetValue()
|
||||||
|
|
||||||
|
def SetText(self, txt):
|
||||||
|
self.control.SetValue(txt)
|
||||||
|
|
||||||
|
#---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
class EditorStc(Editor):
|
||||||
|
|
||||||
|
def __init__(self, parent):
|
||||||
|
# Scintilla layout with line numbers
|
||||||
|
self.control = StyledTextCtrl(parent)
|
||||||
|
self.control.SetMarginType(1, STC_MARGIN_NUMBER)
|
||||||
|
self.control.SetMarginWidth(1, 30)
|
||||||
|
|
||||||
|
# Call parent
|
||||||
|
Editor.__init__(self,parent)
|
||||||
|
|
||||||
|
def GetText(self):
|
||||||
|
return self.control.GetText()
|
||||||
|
|
||||||
|
def SetText(self, txt):
|
||||||
|
self.control.SetText(txt)
|
||||||
|
|
||||||
|
#---------------------------------------------------------------------------
|
||||||
|
|
@ -6,17 +6,6 @@
|
|||||||
import wx
|
import wx
|
||||||
import os.path
|
import os.path
|
||||||
|
|
||||||
# Use Scintilla editor?
|
|
||||||
useStc = True # It looks nicer!
|
|
||||||
#useStc = False # It is sometimes buggy!
|
|
||||||
|
|
||||||
# Test Scintilla and if it fails, get rid of it
|
|
||||||
if useStc:
|
|
||||||
try:
|
|
||||||
import wx.stc as stc
|
|
||||||
except:
|
|
||||||
useStc = False
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------
|
#---------------------------------------------------------------------------
|
||||||
|
|
||||||
""" Import scyther-gui components """
|
""" Import scyther-gui components """
|
||||||
@ -24,6 +13,7 @@ import Settingswindow
|
|||||||
import Scytherthread
|
import Scytherthread
|
||||||
import Icon
|
import Icon
|
||||||
import About
|
import About
|
||||||
|
import Editor
|
||||||
|
|
||||||
#---------------------------------------------------------------------------
|
#---------------------------------------------------------------------------
|
||||||
|
|
||||||
@ -86,24 +76,6 @@ class MainWindow(wx.Frame):
|
|||||||
|
|
||||||
self.firstCommand()
|
self.firstCommand()
|
||||||
|
|
||||||
def GetText(self):
|
|
||||||
"""
|
|
||||||
Interface for both types of editor
|
|
||||||
"""
|
|
||||||
if useStc:
|
|
||||||
return self.control.GetText()
|
|
||||||
else:
|
|
||||||
return self.control.GetValue()
|
|
||||||
|
|
||||||
def SetText(self,txt):
|
|
||||||
"""
|
|
||||||
Interface for both types of editor
|
|
||||||
"""
|
|
||||||
if useStc:
|
|
||||||
self.control.SetText(txt)
|
|
||||||
else:
|
|
||||||
self.control.SetValue(txt)
|
|
||||||
|
|
||||||
def CreateInteriorWindowComponents(self):
|
def CreateInteriorWindowComponents(self):
|
||||||
''' Create "interior" window components. In this case it is just a
|
''' Create "interior" window components. In this case it is just a
|
||||||
simple multiline text control. '''
|
simple multiline text control. '''
|
||||||
@ -121,22 +93,15 @@ class MainWindow(wx.Frame):
|
|||||||
|
|
||||||
# Top: input
|
# Top: input
|
||||||
self.top = wx.Notebook(self,-1)
|
self.top = wx.Notebook(self,-1)
|
||||||
|
# Editor there
|
||||||
if useStc:
|
self.editor = Editor.selectEditor(self.top)
|
||||||
# Scintilla layout with line numbers
|
|
||||||
self.control = stc.StyledTextCtrl(self.top)
|
|
||||||
self.control.SetMarginType(1, stc.STC_MARGIN_NUMBER)
|
|
||||||
self.control.SetMarginWidth(1, 30)
|
|
||||||
else:
|
|
||||||
# Simpler default
|
|
||||||
self.control = wx.TextCtrl(self.top, style=wx.TE_MULTILINE)
|
|
||||||
|
|
||||||
if self.load:
|
if self.load:
|
||||||
textfile = open(os.path.join(self.dirname, self.filename), 'r')
|
textfile = open(os.path.join(self.dirname, self.filename), 'r')
|
||||||
self.SetText(textfile.read())
|
self.editor.SetText(textfile.read())
|
||||||
os.chdir(self.dirname)
|
os.chdir(self.dirname)
|
||||||
textfile.close()
|
textfile.close()
|
||||||
self.top.AddPage(self.control,"Protocol description")
|
self.top.AddPage(self.editor.control,"Protocol description")
|
||||||
self.settings = Settingswindow.SettingsWindow(self.top,self)
|
self.settings = Settingswindow.SettingsWindow(self.top,self)
|
||||||
self.top.AddPage(self.settings,"Settings")
|
self.top.AddPage(self.settings,"Settings")
|
||||||
|
|
||||||
@ -227,14 +192,14 @@ class MainWindow(wx.Frame):
|
|||||||
|
|
||||||
def OnSave(self, event):
|
def OnSave(self, event):
|
||||||
textfile = open(os.path.join(self.dirname, self.filename), 'w')
|
textfile = open(os.path.join(self.dirname, self.filename), 'w')
|
||||||
textfile.write(self.GetText())
|
textfile.write(self.editor.GetText())
|
||||||
textfile.close()
|
textfile.close()
|
||||||
|
|
||||||
def OnOpen(self, event):
|
def OnOpen(self, event):
|
||||||
if self.askUserForFilename(style=wx.OPEN,
|
if self.askUserForFilename(style=wx.OPEN,
|
||||||
**self.defaultFileDialogOptions()):
|
**self.defaultFileDialogOptions()):
|
||||||
textfile = open(os.path.join(self.dirname, self.filename), 'r')
|
textfile = open(os.path.join(self.dirname, self.filename), 'r')
|
||||||
self.SetText(textfile.read())
|
self.editor.SetText(textfile.read())
|
||||||
textfile.close()
|
textfile.close()
|
||||||
|
|
||||||
def OnSaveAs(self, event):
|
def OnSaveAs(self, event):
|
||||||
@ -244,7 +209,7 @@ class MainWindow(wx.Frame):
|
|||||||
os.chdir(self.dirname)
|
os.chdir(self.dirname)
|
||||||
|
|
||||||
def RunScyther(self, mode):
|
def RunScyther(self, mode):
|
||||||
spdl = self.GetText()
|
spdl = self.editor.GetText()
|
||||||
s = Scytherthread.ScytherRun(self,mode,spdl)
|
s = Scytherthread.ScytherRun(self,mode,spdl)
|
||||||
|
|
||||||
def OnVerify(self, event):
|
def OnVerify(self, event):
|
||||||
|
Loading…
Reference in New Issue
Block a user