# Programmer: Daniel Pozmanter
# E-mail: drpython@bluebottle.com
# Note: You must reply to the verification e-mail to get through.
#
# Copyright 2003-2005 Daniel Pozmanter
#
# Distributed under the terms of the GPL (GNU Public License)
#
# DrPython is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
import os, os.path, locale
import wx
import drScrolledMessageDialog
from drProperty import *
import drPrefsFile
import drFileDialog
from drStyleDialog import drStyleDialog, drSimpleStyleDialog
from drPreferences import drPreferences
#Cause I want it to work MY way!
class drPrefsBook(wx.Panel):
def __init__(self, parent, id, size):
wx.Panel.__init__(self, parent, id, size=size)
x, y = size
self.pages = []
self.labels = []
self.ancestor = parent.parent
self.listview = wx.ListView(self, id+1, pos=(0, 0), size=(150, y), style=wx.LC_SINGLE_SEL|wx.LC_LIST)
self.Bind(wx.EVT_LIST_ITEM_FOCUSED, self.OnSelected, id=id+1)
self.Bind(wx.EVT_SIZE, self.OnSize)
self.oldpos = -1
def AddPage(self, page, label):
page.Show(False)
self.pages.append(page)
self.labels.append(label)
def OnSelected(self, event):
if self.oldpos > -1:
self.pages[self.oldpos].Show(False)
sel = self.listview.GetFocusedItem()
self.ancestor.prefdialogposition = sel
px, py = self.GetPositionTuple()
sx, sy = self.GetSizeTuple()
self.pages[sel].Move((px+150, 0))
self.pages[sel].SetSize((sx-150, sy))
self.pages[sel].Show(True)
self.oldpos = sel
def OnSize(self, event):
sel = self.listview.GetFocusedItem()
px, py = self.GetPositionTuple()
sx, sy = self.GetSizeTuple()
self.listview.SetSize((150, sy))
self.pages[sel].Move((px+150, 0))
self.pages[sel].SetSize((sx-150, sy))
def SetSelection(self, selection):
self.listview.Select(selection)
self.listview.Focus(selection)
def ShowPanel(self, selection=0):
x = 0
for label in self.labels:
self.listview.InsertStringItem(x, label)
x += 1
self.listview.Select(selection)
self.listview.Focus(selection)
self.OnSelected(None)
#Cleaned up the sizing code, which was a tad ugly.
class PrefsPanel(wx.ScrolledWindow):
def __init__(self, parent, id, name, NumberOfItems):
wx.ScrolledWindow.__init__(self, parent, id)
self.SetName(name)
self.grandparent = parent.GetParent()
self.drframe = self.grandparent.parent
self.EnableScrolling(True, True)
self.SetScrollbars(10, NumberOfItems+3, 35, 62)
self.btnResetPanel = wx.Button(self, self.grandparent.ID_RESET_PANEL, " Reset Panel ")
self.theSizer = wx.FlexGridSizer(NumberOfItems+2, 3, 5, 10)
self.AddBuffer()
self.Add(self.btnResetPanel, "Reset Just These Preferences:")
self.Bind(wx.EVT_BUTTON, self.grandparent.OnbtnResetPanel, id=self.grandparent.ID_RESET_PANEL)
self.Show(False)
def Add(self, wxitem, label=""):
if len(label) > 0:
self.theSizer.Add(wx.StaticText(self, -1, " "), 1, wx.SHAPED)
self.theSizer.Add(wx.StaticText(self, -1, label), 1, wx.EXPAND)
self.theSizer.Add(wxitem,1,wx.SHAPED)
else:
self.theSizer.Add(wx.StaticText(self, -1, " "), 1, wx.SHAPED)
self.theSizer.Add(wxitem, 1, wx.SHAPED)
self.theSizer.Add(wx.StaticText(self, -1, " "), 1, wx.SHAPED)
def AddBuffer(self):
self.theSizer.Add(wx.StaticText(self, -1, " "), 1, wx.SHAPED)
self.theSizer.Add(wx.StaticText(self, -1, " "), 1, wx.SHAPED)
self.theSizer.Add(wx.StaticText(self, -1, " "), 1, wx.SHAPED)
def AddLabel(self, label):
self.theSizer.Add(wx.StaticText(self, -1, " "), 1, wx.SHAPED)
self.theSizer.Add(wx.StaticText(self, -1, label), 1, wx.EXPAND)
self.theSizer.Add(wx.StaticText(self, -1, " "), 1, wx.SHAPED)
def AddTwoItems(self, wxitem1, wxitem2):
self.theSizer.Add(wx.StaticText(self, -1, " "), 1, wx.SHAPED)
self.theSizer.Add(wxitem1,1,wx.SHAPED)
self.theSizer.Add(wxitem2,1,wx.SHAPED)
def SetPanelSizer(self):
self.SetAutoLayout(True)
self.SetSizer(self.theSizer)
class BookmarksPanel(PrefsPanel):
def __init__(self, parent, id, name):
PrefsPanel.__init__(self, parent, id, name, 1)
self.btnBStyle = wx.Button(self, self.grandparent.ID_BOOKMARKS_STYLE, " Edit Bookmarks Style ")
self.Add(self.btnBStyle)
self.SetPanelSizer()
self.Bind(wx.EVT_BUTTON, self.OnbtnBStyle, id=self.grandparent.ID_BOOKMARKS_STYLE)
def OnbtnBStyle(self, event):
d = drSimpleStyleDialog(self, -1, ("Style: Bookmarks"), self.grandparent.prefs.bookmarksstyle, self.grandparent.prefs.bookmarksstyle)
d.ShowModal()
if (d.ClickedOk()):
self.grandparent.prefs.bookmarksstyle = d.GetStyleString()
d.Destroy()
class DocumentPanel(PrefsPanel):
def __init__(self, parent, id, name):
PrefsPanel.__init__(self, parent, id, name, 10)
self.radusestyles = wx.RadioBox(self, -1, "Styles:", wx.DefaultPosition, wx.DefaultSize, ["Don't Use Styles", "Use Styles", "Only Use \"Normal\", \"Caret Foreground\""], 1, wx.RA_SPECIFY_COLS)
self.boxdefaultsyntaxhighlighting = wx.Choice(self, -1, wx.Point(225, 135), wx.Size(-1, -1), ["Python", "C/C++", "HTML"])
self.chkonlyusedefaultsyntaxhighlighting = wx.CheckBox(self, -1, "")
self.btnStyle = wx.Button(self, self.grandparent.ID_FILE_STYLE, " Edit Text Styles ")
self.btnApplyProperty = wx.Button(self, self.grandparent.ID_APPLY_PROPERTY, " Apply Text Property To All Styles ")
self.raddocautoindent = wx.RadioBox(self, -1, "Auto Indent:", wx.DefaultPosition, wx.DefaultSize, ["None", "Normal", "Context Sensitive"], 1, wx.RA_SPECIFY_COLS)
self.chkdocshowlinenumbers = wx.CheckBox(self, -1, "")
self.chkdocremovetrailingwhitespace = wx.CheckBox(self, -1, "")
self.chkdocautoreload = wx.CheckBox(self, -1, "")
self.chkdocparenthesismatching = wx.CheckBox(self, -1, "")
self.chkdocupdateindentation = wx.CheckBox(self, -1, "")
self.chkdocusefileindentation = wx.CheckBox(self, -1, '')
self.chkWhitespace = wx.CheckBox(self, -1, "")
self.txtcaretwidth = wx.TextCtrl(self, self.grandparent.ID_DOC_CARET_WIDTH, str(self.grandparent.prefs.doccaretwidth), wx.Point(225, 215), wx.Size(35, -1))
self.chkhighlightcurrentline = wx.CheckBox(self, -1, "")
self.chkuseindentationguides = wx.CheckBox(self, -1, "")
#Chris McDonough (I added txt prefix, update for local constants)
self.txtdoclonglinecol = wx.TextCtrl(self, self.grandparent.ID_LONGLINE_COL, str(self.grandparent.prefs.doclonglinecol), wx.Point(225, 215), wx.Size(35, -1))
#/Chris McDonough
self.chkscrollextrapage = wx.CheckBox(self, -1, "")
self.raddoccommentmode = wx.RadioBox(self, -1, "Comment Mode:", wx.DefaultPosition, wx.DefaultSize, ["Start of Line", "Start of Word"], 1, wx.RA_SPECIFY_COLS)
self.Add(self.btnStyle)
self.Add(self.btnApplyProperty)
self.Add(self.radusestyles)
self.Add(self.boxdefaultsyntaxhighlighting, "Default Syntax Highlighting:")
self.Add(self.chkonlyusedefaultsyntaxhighlighting, "Only Use Default Syntax Highlighting:")
self.Add(self.chkdocshowlinenumbers, "Show Line Numbers:")
self.Add(self.chkdocremovetrailingwhitespace, "Remove Trailing Whitespace:")
self.Add(self.raddocautoindent)
self.Add(self.chkdocautoreload, "Auto Reload:")
self.Add(self.chkdocparenthesismatching, "Parenthesis Matching:")
self.Add(self.chkdocupdateindentation, "Update Indentation:")
self.Add(self.chkdocusefileindentation, "Use File's Indentation:")
self.Add(self.chkWhitespace, "Whitespace is visible on startup:")
self.Add(self.chkuseindentationguides, "Use Indentation guides:")
self.Add(self.txtdoclonglinecol, "Long Line Indicator Column:")
self.Add(self.chkscrollextrapage, "Scroll Extra Page:")
self.Add(self.txtcaretwidth, "Caret Width:")
self.Add(self.chkhighlightcurrentline, "Highlight Current Line:")
self.Add(self.raddoccommentmode)
self.SetPanelSizer()
self.reset()
self.Bind(wx.EVT_BUTTON, self.OnbtnStyle, id=self.grandparent.ID_FILE_STYLE)
self.Bind(wx.EVT_BUTTON, self.OnbtnApplyProperty, id=self.grandparent.ID_APPLY_PROPERTY)
self.Bind(wx.EVT_TEXT, self.Ontxtcaretwidth, id=self.grandparent.ID_DOC_CARET_WIDTH)
self.Bind(wx.EVT_TEXT, self.Ontxtdoclonglinecol, id=self.grandparent.ID_LONGLINE_COL)
def reset(self):
self.boxdefaultsyntaxhighlighting.SetSelection(self.grandparent.prefs.docdefaultsyntaxhighlighting)
self.chkonlyusedefaultsyntaxhighlighting.SetValue(self.grandparent.prefs.doconlyusedefaultsyntaxhighlighting)
self.radusestyles.SetSelection(self.grandparent.prefs.docusestyles)
self.chkdocshowlinenumbers.SetValue(self.grandparent.prefs.docshowlinenumbers)
self.chkdocremovetrailingwhitespace.SetValue(self.grandparent.prefs.docremovetrailingwhitespace)
self.raddocautoindent.SetSelection(self.grandparent.prefs.docautoindent)
self.chkdocautoreload.SetValue(self.grandparent.prefs.docautoreload)
self.chkdocparenthesismatching.SetValue(self.grandparent.prefs.docparenthesismatching)
self.chkdocupdateindentation.SetValue(self.grandparent.prefs.docupdateindentation)
self.chkdocusefileindentation.SetValue(self.grandparent.prefs.docusefileindentation)
self.chkWhitespace.SetValue(self.grandparent.prefs.docwhitespaceisvisible)
self.chkuseindentationguides.SetValue(self.grandparent.prefs.docuseindentationguides)
self.chkscrollextrapage.SetValue(self.grandparent.prefs.docscrollextrapage)
self.txtcaretwidth.SetValue(str(self.grandparent.prefs.doccaretwidth))
self.chkhighlightcurrentline.SetValue(self.grandparent.prefs.dochighlightcurrentline)
self.raddoccommentmode.SetSelection(self.grandparent.prefs.doccommentmode)
def Ontxtdoclonglinecol(self, event):
#Chris McDonough (Edited to allow for negative numbers)
x = self.txtdoclonglinecol.GetValue()
if (len(x) < 1):
return
try:
y = int(x)
except ValueError:
if not x == "-":
drScrolledMessageDialog.ShowMessage(self, ("Whatever you are trying to do... Stop it.\nIt won't work. Actual Numbers only please.\nDrPython will reset to the value last loaded."), "Value Error")
self.txtdoclonglinecol.SetValue(str(self.grandparent.prefs.doclonglinecol))
return
y = 0
except TypeError:
drScrolledMessageDialog.ShowMessage(self, ("\"" + y + "\" is not an integer (a number, eg 2, 4, 568)\nDrPython will reset to the value last loaded."), "Type Error")
self.txtdoclonglinecol.SetValue(str(self.grandparent.prefs.doclonglinecol))
return
if (y > 1024):
drScrolledMessageDialog.ShowMessage(self, ("DrPython does not recommend going this high. You can of course..."), "Hmmmm")
def Ontxtcaretwidth(self, event):
x = self.txtcaretwidth.GetValue()
if (len(x) < 1):
return
try:
y = int(x)
except ValueError:
drScrolledMessageDialog.ShowMessage(self, ("Whatever you are trying to do... Stop it.\nIt won't work. Positive Numbers only please.\nDrPython will reset to the value last loaded."), "Value Error")
self.txtcaretwidth.SetValue(str(self.grandparent.prefs.doccaretwidth))
return
except TypeError:
drScrolledMessageDialog.ShowMessage(self, ("\"" + y + "\" is not an integer (a number, eg 2, 4, 568)\nDrPython will reset to the value last loaded."), "Type Error")
self.txtcaretwidth.SetValue(str(self.grandparent.prefs.doccaretwidth))
return
if (y > 256):
drScrolledMessageDialog.ShowMessage(self, ("DrPython does not recommend going this high. You can of course..."), "Hmmmm")
def OnbtnStyle(self, event):
d = drStyleDialog(self, -1, ("Edit Styles"))
d.ShowModal()
if d.ClickedOk():
self.grandparent.prefs.PythonStyleDictionary, self.grandparent.prefs.CPPStyleDictionary, self.grandparent.prefs.HTMLStyleDictionary = d.GetArrays()
d.Destroy()
def OnbtnApplyProperty(self, event):
d = wx.SingleChoiceDialog(self, "Select the property you wish to apply to all styles:", "Apply Property To All Styles", ["Font", "Size", "Background", "Foreground"], wx.OK|wx.CANCEL)
answer = d.ShowModal()
s = d.GetStringSelection()
d.Destroy()
if (answer == wx.ID_OK):
self.SetPropertyForStyleArray(self.grandparent.prefs.PythonStyleDictionary, s)
self.SetPropertyForStyleArray(self.grandparent.prefs.CPPStyleDictionary, s)
self.SetPropertyForStyleArray(self.grandparent.prefs.HTMLStyleDictionary, s)
def SetPropertyForStyleArray(self, targetArray, s):
#Ignore default text for all, and line number text for bg/fg (first two items)
x = 2
if (s == "Font"):
prop = "face"
dummy = ",face:terminal"
x = 1
elif (s == "Size"):
prop = "size"
dummy = ",size:10"
x = 1
elif (s == "Background"):
prop = "back"
dummy = ",back:#FFFFFF"
elif (s == "Foreground"):
prop = "fore"
dummy = ",fore:#000000"
newstring = getStyleProperty(prop, targetArray[0])
#ignore caret foreground, selection, folding style, long line column, current line
#(last five items).
l = len(targetArray) - 5
while (x < l):
tstring = targetArray[x]
try:
tstring.index(prop)
except:
tstring = tstring + dummy
targetArray[x] = setStyleProperty(prop, tstring, newstring)
x = x + 1
class DocumentationPanel(PrefsPanel):
def __init__(self, parent, id, name):
PrefsPanel.__init__(self, parent, id, name, 8)
self.btnBrowse = wx.Button(self, self.grandparent.ID_DOCUMENTATION_BROWSE, " &Browse ")
self.btnBrowseP = wx.Button(self, self.grandparent.ID_DOCUMENTATION_BROWSE_P, " &Browse ")
self.btnBrowseW = wx.Button(self, self.grandparent.ID_DOCUMENTATION_BROWSE_W, " &Browse ")
self.btnBrowseR = wx.Button(self, self.grandparent.ID_DOCUMENTATION_BROWSE_R, " &Browse ")
self.txtbrowser = wx.TextCtrl(self, -1, "", wx.Point(225, 215), wx.Size(250, -1))
self.txtpython = wx.TextCtrl(self, -1, "", wx.Point(225, 215), wx.Size(250, -1))
self.txtwxwidgets = wx.TextCtrl(self, -1, "", wx.Point(225, 215), wx.Size(250, -1))
self.txtrehowto = wx.TextCtrl(self, -1, "", wx.Point(225, 215), wx.Size(250, -1))
self.AddLabel("Browser:")
self.AddTwoItems(self.txtbrowser, self.btnBrowse)
self.AddLabel("Python Docs:")
self.AddTwoItems(self.txtpython,self.btnBrowseP)
self.AddLabel("WxWidgets Docs:")
self.AddTwoItems(self.txtwxwidgets,self.btnBrowseW)
self.AddLabel("Regular Expression Howto:")
self.AddTwoItems(self.txtrehowto,self.btnBrowseR)
self.SetPanelSizer()
self.reset()
if self.grandparent.prefs.platform_is_windows:
self.wildcard = "Program File (*.exe)|*.exe|All files (*)|*"
else:
self.wildcard = "All files (*)|*"
self.Bind(wx.EVT_BUTTON, self.OnbtnBrowse, id=self.grandparent.ID_DOCUMENTATION_BROWSE)
self.Bind(wx.EVT_BUTTON, self.OnbtnBrowseDoc, id=self.grandparent.ID_DOCUMENTATION_BROWSE_P)
self.Bind(wx.EVT_BUTTON, self.OnbtnBrowseDoc, id=self.grandparent.ID_DOCUMENTATION_BROWSE_W)
self.Bind(wx.EVT_BUTTON, self.OnbtnBrowseDoc, id=self.grandparent.ID_DOCUMENTATION_BROWSE_R)
def reset(self):
self.txtbrowser.SetValue(self.grandparent.prefs.documentationbrowser)
self.txtpython.SetValue(self.grandparent.prefs.documentationpythonlocation)
self.txtwxwidgets.SetValue(self.grandparent.prefs.documentationwxwidgetslocation)
self.txtrehowto.SetValue(self.grandparent.prefs.documentationrehowtolocation)
def OnbtnBrowse(self, event):
dlg = drFileDialog.FileDialog(self.grandparent.parent, "Select A Browser", self.wildcard)
if (dlg.ShowModal() == wx.ID_OK):
self.txtbrowser.SetValue(dlg.GetPath())
dlg.Destroy()
def OnbtnBrowseDoc(self, event):
eid = event.GetId()
result = ""
dlg = drFileDialog.FileDialog(self.grandparent.parent, "Location of Documentation", self.wildcard)
if (dlg.ShowModal() == wx.ID_OK):
result = dlg.GetPath()
dlg.Destroy()
if len(result) > 0:
if eid == self.grandparent.ID_DOCUMENTATION_BROWSE_P:
self.txtpython.SetValue(result)
elif eid == self.grandparent.ID_DOCUMENTATION_BROWSE_W:
self.txtwxwidgets.SetValue(result)
elif eid == self.grandparent.ID_DOCUMENTATION_BROWSE_R:
self.txtrehowto.SetValue(result)
class DragAndDropPanel(PrefsPanel):
def __init__(self, parent, id, name):
PrefsPanel.__init__(self, parent, id, name, 2)
self.raddraganddropmode = wx.RadioBox(self, -1, "Drag and Drop Mode:", wx.DefaultPosition, wx.DefaultSize, ["Drag: Files Only, Drop: Files and Text", "Drag: Files and Text, Drop: Files and Text", "Drag and Drop Files Only"], 1, wx.RA_SPECIFY_COLS)
self.raddraganddroptextmode = wx.RadioBox(self, -1, "Drag and Drop Text Mode:", wx.DefaultPosition, wx.DefaultSize, ["Copy by Default, Cut with Control", "Cut by Default, Copy with Control"], 1, wx.RA_SPECIFY_COLS)
self.Add(self.raddraganddropmode)
self.Add(self.raddraganddroptextmode)
self.SetPanelSizer()
self.reset()
def reset(self):
self.raddraganddropmode.SetSelection(self.grandparent.prefs.draganddropmode)
self.raddraganddroptextmode.SetSelection(self.grandparent.prefs.draganddroptextmode)
class DrScriptPanel(PrefsPanel):
def __init__(self, parent, id, name):
PrefsPanel.__init__(self, parent, id, name, 2)
self.txtdefaultdirectory = wx.TextCtrl(self, -1, self.grandparent.prefs.drscriptdefaultdirectory, wx.Point(15, 325), wx.Size(250, -1))
self.DrScriptbtnBrowse = wx.Button(self, self.grandparent.ID_DRSCRIPT_BROWSE, " &Browse ")
self.btnDStyle = wx.Button(self, self.grandparent.ID_DRSCRIPT_STYLE, " Edit DrScript Style ")
self.chkloadexamples = wx.CheckBox(self, -1, "")
self.Add(self.btnDStyle)
self.AddLabel("Default Directory:")
self.AddTwoItems(self.txtdefaultdirectory, self.DrScriptbtnBrowse)
self.Add(self.chkloadexamples, "Load Example Scripts:")
self.SetPanelSizer()
self.reset()
self.Bind(wx.EVT_BUTTON, self.OnbtnDBrowse, id=self.grandparent.ID_DRSCRIPT_BROWSE)
self.Bind(wx.EVT_BUTTON, self.OnbtnDStyle, id=self.grandparent.ID_DRSCRIPT_STYLE)
def reset(self):
self.txtdefaultdirectory.SetValue(self.grandparent.prefs.drscriptdefaultdirectory)
self.chkloadexamples.SetValue(self.grandparent.prefs.drscriptloadexamples)
def OnbtnDBrowse(self, event):
d = wx.DirDialog(self, "Select Default Directory For DrScript:", style=wx.DD_DEFAULT_STYLE|wx.DD_NEW_DIR_BUTTON|wx.MAXIMIZE_BOX|wx.THICK_FRAME)
if d.ShowModal() == wx.ID_OK:
self.txtdefaultdirectory.SetValue(d.GetPath())
d.Destroy()
def OnbtnDStyle(self, event):
d = drSimpleStyleDialog(self, -1, ("Style: DrScript"), self.grandparent.prefs.drscriptstyle, self.grandparent.prefs.drscriptstyle)
d.ShowModal()
if (d.ClickedOk()):
self.grandparent.prefs.drscriptstyle = d.GetStyleString()
d.Destroy()
class FileDialogPanel(PrefsPanel):
def __init__(self, parent, id, name):
PrefsPanel.__init__(self, parent, id, name, 2)
self.chkusewxfiledialog = wx.CheckBox(self, -1, "")
self.chkdefaultextension = wx.CheckBox(self, -1, "")
self.btnwildcard = wx.Button(self, self.grandparent.ID_BTN_WILDCARD, ' Edit Wildcard ')
self.btnlnkreplacetable = wx.Button(self, self.grandparent.ID_BTN_LNK_REPLACE_TABLE, ' Windows Shortcut Replace Table ')
self.Add(self.chkdefaultextension, 'Default Extension (".py"):')
self.Add(self.chkusewxfiledialog, "Use wx.FileDialog:")
self.Add(self.btnwildcard)
self.Add(self.btnlnkreplacetable)
self.SetPanelSizer()
self.reset()
self.Bind(wx.EVT_BUTTON, self.OnEditWildcard, id=self.grandparent.ID_BTN_WILDCARD)
self.Bind(wx.EVT_BUTTON, self.OnReplaceTable, id=self.grandparent.ID_BTN_LNK_REPLACE_TABLE)
def reset(self):
self.chkusewxfiledialog.SetValue(self.grandparent.prefs.usewxfiledialog)
self.chkdefaultextension.SetValue(self.grandparent.prefs.defaultextension)
def OnEditWildcard(self, event):
import drFileDialogPrefs
d = drFileDialogPrefs.drFilePrefsDialog(self)
answer = d.ShowModal()
newwc = d.GetWildcard()
cwc = d.GetConstantWildcard()
d.Destroy()
if answer == wx.ID_OK:
self.grandparent.prefs.wildcard = newwc
self.grandparent.prefs.constantwildcard = cwc
def OnReplaceTable(self, event):
import drFileDialogPrefs
d = drFileDialogPrefs.drReplaceTableDialog(self)
answer = d.ShowModal()
newrt = d.GetReplaceTable()
d.Destroy()
if answer == wx.ID_OK:
self.grandparent.prefs.windowsshortcutreplacetable = newrt
class FileTypesPanel(PrefsPanel):
def __init__(self, parent, id, name):
PrefsPanel.__init__(self, parent, id, name, 7)
self.ID_FILETYPE = 701
self.ID_EXTENSIONS = 702
self.ID_USETABS = 703
self.ID_TABWIDTH = 704
self.ID_FOLDING = 705
self.ID_EOLMODE = 706
self.ID_COMMENTSTRING = 707
self.ID_WORDWRAP = 708
self.cboFileType = wx.ComboBox(self, self.ID_FILETYPE, choices=['Python', 'C/C++', 'HTML', 'Text'])
self.filetype = self.drframe.txtDocument.filetype
self.txtExtensions = wx.TextCtrl(self, self.ID_EXTENSIONS, '', wx.Point(225, 215), wx.Size(225, -1))
self.chkdocusetabs = wx.CheckBox(self, self.ID_USETABS, "")
self.chkdocwordwrap = wx.CheckBox(self, self.ID_WORDWRAP, "")
self.chkfolding = wx.CheckBox(self, self.ID_FOLDING, "")
self.txtdoccommentstring = wx.TextCtrl(self, self.ID_COMMENTSTRING, '', wx.Point(225, 215), wx.Size(35, -1))
self.txttabwidth = wx.TextCtrl(self, self.ID_TABWIDTH, '', wx.Point(225, 215), wx.Size(35, -1))
self.radFormat = wx.Choice(self, self.ID_EOLMODE, wx.Point(15, 80), wx.DefaultSize, [" Unix ('\\n') "," DOS/Windows ('\\r\\n') "," Mac ('\\r') "])
self.Add(self.cboFileType, "File Type:")
self.Add(self.txtExtensions, "Extensions:")
self.Add(self.txtdoccommentstring, "Comment String:")
self.Add(self.txttabwidth, "Tab Width:")
self.Add(self.chkdocusetabs, "Use Tabs:")
self.Add(self.chkfolding, "Folding:")
self.Add(self.chkdocwordwrap, "Word Wrap:")
self.Add(self.radFormat, "Line Ending Format:")
self.SetPanelSizer()
self.Bind(wx.EVT_COMBOBOX, self.OnFileType, id=self.ID_FILETYPE)
self.Bind(wx.EVT_TEXT, self.Ontxttabwidth, id=self.ID_TABWIDTH)
self.Bind(wx.EVT_TEXT, self.OnExtensions, id=self.ID_EXTENSIONS)
self.Bind(wx.EVT_TEXT, self.OnCommentString, id=self.ID_COMMENTSTRING)
self.Bind(wx.EVT_CHECKBOX, self.OnUseTabs, id=self.ID_USETABS)
self.Bind(wx.EVT_CHECKBOX, self.OnFolding, id=self.ID_FOLDING)
self.Bind(wx.EVT_CHECKBOX, self.OnWordWrap, id=self.ID_WORDWRAP)
self.Bind(wx.EVT_CHOICE, self.OnEolMode, id=self.ID_EOLMODE)
self.cboFileType.SetSelection(self.filetype)
self.reset()
def reset(self):
self.extensions = self.grandparent.prefs.extensions.copy()
self.docusetabs = self.grandparent.prefs.docusetabs.copy()
self.doctabwidth = self.grandparent.prefs.doctabwidth.copy()
self.doceolmode = self.grandparent.prefs.doceolmode.copy()
self.docfolding = self.grandparent.prefs.docfolding.copy()
self.doccommentstring = self.grandparent.prefs.doccommentstring.copy()
self.docwordwrap = self.grandparent.prefs.docwordwrap.copy()
self.OnFileType(None)
def OnCommentString(self, event):
self.doccommentstring[self.filetype] = self.txtdoccommentstring.GetValue()
def OnEolMode(self, event):
self.doceolmode[self.filetype] = self.radFormat.GetSelection()
def OnExtensions(self, event):
self.extensions[self.filetype] = self.txtExtensions.GetValue()
def OnFileType(self, event):
self.filetype = self.cboFileType.GetSelection()
self.txtExtensions.SetValue(self.extensions[self.filetype])
self.chkdocusetabs.SetValue(self.docusetabs[self.filetype])
self.txttabwidth.SetValue(str(self.doctabwidth[self.filetype]))
self.radFormat.SetSelection(self.doceolmode[self.filetype])
self.chkfolding.SetValue(self.docfolding[self.filetype])
self.txtdoccommentstring.SetValue(self.doccommentstring[self.filetype])
self.chkdocwordwrap.SetValue(self.docwordwrap[self.filetype])
def OnFolding(self, event):
self.docfolding[self.filetype] = int(self.chkfolding.GetValue())
def Ontxttabwidth(self, event):
x = self.txttabwidth.GetValue()
if (len(x) < 1):
return
try:
y = int(x)
except ValueError:
drScrolledMessageDialog.ShowMessage(self, ("Whatever you are trying to do... Stop it.\nIt won't work. Positive Numbers only please.\nDrPython will reset to the value last loaded."), "Value Error")
self.txttabwidth.SetValue(str(self.grandparent.prefs.doctabwidth[self.filetype]))
return
except TypeError:
drScrolledMessageDialog.ShowMessage(self, ("\"" + y + "\" is not an integer (a number, eg 2, 4, 568)\nDrPython will reset to the value last loaded."), "Type Error")
self.txttabwidth.SetValue(str(self.grandparent.prefs.doctabwidth[self.filetype]))
return
if (y > 1024):
drScrolledMessageDialog.ShowMessage(self, ("DrPython does not recommend going this high. You can of course..."), "Hmmmm")
return
self.doctabwidth[self.filetype] = y
def OnWordWrap(self, event):
self.docwordwrap[self.filetype] = int(self.chkdocwordwrap.GetValue())
def OnUseTabs(self, event):
self.docusetabs[self.filetype] = int(self.chkdocusetabs.GetValue())
class FindReplacePanel(PrefsPanel):
def __init__(self, parent, id, name):
PrefsPanel.__init__(self, parent, id, name, 8)
self.chkregularexpression = wx.CheckBox(self, -1, "")
self.chkmatchcase = wx.CheckBox(self, -1, "")
self.chkfindbackwards = wx.CheckBox(self, -1, "")
self.chkwholeword = wx.CheckBox(self, -1, "")
self.chkinselection = wx.CheckBox(self, -1, "")
self.chkfromcursor = wx.CheckBox(self, -1, "")
self.chkpromptonreplace = wx.CheckBox(self, -1, "")
self.chkfindreplaceautowrap = wx.CheckBox(self, -1, "")
self.chkundercursor = wx.CheckBox(self, -1, "")
self.Add(self.chkregularexpression, "Regular Expression:")
self.Add(self.chkmatchcase, "Match Case:")
self.Add(self.chkfindbackwards, "Find Backwards:")
self.Add(self.chkwholeword, "Whole Word:")
self.Add(self.chkinselection, "In Selection:")
self.Add(self.chkfromcursor, "From Cursor:")
self.Add(self.chkpromptonreplace, "Prompt On Replace:")
self.Add(self.chkfindreplaceautowrap, "Auto Wrap:")
self.Add(self.chkundercursor, "Under Cursor:")
self.SetPanelSizer()
self.reset()
def reset(self):
self.chkregularexpression.SetValue(self.grandparent.prefs.findreplaceregularexpression)
self.chkmatchcase.SetValue(self.grandparent.prefs.findreplacematchcase)
self.chkfindbackwards.SetValue(self.grandparent.prefs.findreplacefindbackwards)
self.chkwholeword.SetValue(self.grandparent.prefs.findreplacewholeword)
self.chkinselection.SetValue(self.grandparent.prefs.findreplaceinselection)
self.chkfromcursor.SetValue(self.grandparent.prefs.findreplacefromcursor)
self.chkpromptonreplace.SetValue(self.grandparent.prefs.findreplacepromptonreplace)
self.chkfindreplaceautowrap.SetValue(self.grandparent.prefs.findreplaceautowrap)
self.chkundercursor.SetValue(self.grandparent.prefs.findreplaceundercursor)
class GeneralPanel(PrefsPanel):
def __init__(self, parent, id, name):
PrefsPanel.__init__(self, parent, id, name, 8)
try:
defaultlocale = locale.getdefaultlocale()[1]
except:
defaultlocale = None
if defaultlocale is not None:
self.encodings = ['', defaultlocale, 'ascii', 'latin-1', 'utf-8', 'utf-16']
else:
self.encodings = ['', 'ascii', 'latin-1', 'utf-8', 'utf-16']
self.chkrememberwindowsizeandposition = wx.CheckBox(self, -1, "")
self.chkrememberdialogsizesandpositions = wx.CheckBox(self, -1, "")
self.chkrememberpanelsizes = wx.CheckBox(self, -1, "")
self.chkautodetectencoding = wx.CheckBox(self, -1, "")
self.cboEncoding = wx.ComboBox(self, -1, choices=self.encodings)
self.chksaveonrun = wx.CheckBox(self, -1, "")
self.chkchecksyntaxonsave = wx.CheckBox(self, -1, "")
self.txtchecksyntaxextensions = wx.TextCtrl(self, -1, self.grandparent.prefs.checksyntaxextensions, size=wx.Size(55, -1))
self.chkpromptonsaveall = wx.CheckBox(self, -1, "")
self.chkdoubleclicktoclosetab = wx.CheckBox(self, -1, "")
self.boxiconsize = wx.Choice(self, self.grandparent.ID_ICON_SIZE, wx.Point(225, 135), wx.Size(-1, -1), ["0", "16", "24"])
self.txtRecentFiles = wx.TextCtrl(self, self.grandparent.ID_TXT_RECENT_FILES, str(self.grandparent.prefs.recentfileslimit), wx.Point(225, 175), wx.Size(35, -1))
self.chkcheckindentation = wx.CheckBox(self, -1, "")
self.txtpythonargs = wx.TextCtrl(self, -1, self.grandparent.prefs.pythonargs, wx.Point(225, 255), wx.Size(55, -1))
self.chkenablefeedback = wx.CheckBox(self, -1, "")
self.chkalwayspromptonexit = wx.CheckBox(self, -1, "")
self.chkbackupfileonsave = wx.CheckBox(self, -1, "")
self.chkCheckFormat = wx.CheckBox(self, -1, "")
self.chkvieweol = wx.CheckBox(self, -1, "")
self.txtdefaultdirectory = wx.TextCtrl(self, -1, self.grandparent.prefs.defaultdirectory, wx.Point(15, 325), wx.Size(250, -1))
self.btnBrowse = wx.Button(self, self.grandparent.ID_FILE_BROWSE, " &Browse ")
self.btnSetup = wx.Button(self, self.grandparent.ID_SETUP_PREFS, " Setup Preferences ")
self.Add(self.chkrememberwindowsizeandposition, "Remember Window Size And Position:")
self.Add(self.chkrememberdialogsizesandpositions, "Remember Dialog Sizes and Positions:")
self.Add(self.chkrememberpanelsizes, "Remember Panel Sizes:")
self.Add(self.chkautodetectencoding, "Auto Detect Encoding:")
self.Add(self.cboEncoding, "Default Encoding")
self.Add(self.chksaveonrun, "Save On Run:")
self.Add(self.chkchecksyntaxonsave, "Check Syntax On Save:")
self.Add(self.txtchecksyntaxextensions, "Check Syntax: Only On Extensions:")
self.Add(self.chkpromptonsaveall, "Prompt On Save All:")
self.Add(self.chkdoubleclicktoclosetab, "Double Click To Close Tab:")
self.Add(self.txtRecentFiles, "Max number of recent files:")
self.Add(self.chkvieweol, "View Line Endings With Whitespace:")
self.Add(self.chkCheckFormat, "Check Line Ending Format on Open:")
self.Add(self.chkcheckindentation, "Check Indentation Type on Open:")
self.Add(self.txtpythonargs, "Python arguments (eg \"-i\"):")
self.Add(self.boxiconsize, "Toolbar Icon Size:")
self.AddBuffer()
self.AddLabel("Default Directory:")
self.AddTwoItems(self.txtdefaultdirectory, self.btnBrowse)
self.AddBuffer()
self.Add(self.chkenablefeedback, "Enable Feedback Messages:")
self.Add(self.chkalwayspromptonexit, "Always Prompt On Exit:")
self.Add(self.chkbackupfileonsave, "Backup File On Save:")
self.Add(self.btnSetup)
self.SetPanelSizer()
self.reset()
self.Bind(wx.EVT_BUTTON, self.OnbtnBrowse, id=self.grandparent.ID_FILE_BROWSE)
self.Bind(wx.EVT_TEXT, self.OntxtRecentFiles, id=self.grandparent.ID_TXT_RECENT_FILES)
self.Bind(wx.EVT_BUTTON, self.OnbtnSetupPrefs, id=self.grandparent.ID_SETUP_PREFS)
def reset(self):
self.txtdefaultdirectory.SetValue(self.grandparent.prefs.defaultdirectory)
self.chkrememberwindowsizeandposition.SetValue(self.grandparent.prefs.rememberwindowsizeandposition)
self.chkrememberdialogsizesandpositions.SetValue(self.grandparent.prefs.rememberdialogsizesandpositions)
self.chkrememberpanelsizes.SetValue(self.grandparent.prefs.rememberpanelsizes)
self.chkautodetectencoding.SetValue(self.grandparent.prefs.autodetectencoding)
self.chksaveonrun.SetValue(self.grandparent.prefs.saveonrun)
self.chkchecksyntaxonsave.SetValue(self.grandparent.prefs.checksyntaxonsave)
self.txtchecksyntaxextensions.SetValue(self.grandparent.prefs.checksyntaxextensions)
self.chkpromptonsaveall.SetValue(self.grandparent.prefs.promptonsaveall)
self.chkdoubleclicktoclosetab.SetValue(self.grandparent.prefs.doubleclicktoclosetab)
self.txtRecentFiles.SetValue(str(self.grandparent.prefs.recentfileslimit))
if self.grandparent.prefs.defaultencoding not in self.encodings:
self.encodings.append(self.grandparent.prefs.defaultencoding)
self.cboEncoding.Append(self.grandparent.prefs.defaultencoding)
self.cboEncoding.SetSelection(self.encodings.index(self.grandparent.prefs.defaultencoding))
self.chkcheckindentation.SetValue(self.grandparent.prefs.checkindentation)
if (self.grandparent.prefs.iconsize == 24):
self.boxiconsize.SetSelection(2)
elif (self.grandparent.prefs.iconsize == 16):
self.boxiconsize.SetSelection(1)
else:
self.boxiconsize.SetSelection(0)
self.txtpythonargs.SetValue(self.grandparent.prefs.pythonargs)
self.chkenablefeedback.SetValue(self.grandparent.prefs.enablefeedback)
self.chkalwayspromptonexit.SetValue(self.grandparent.prefs.alwayspromptonexit)
self.chkbackupfileonsave.SetValue(self.grandparent.prefs.backupfileonsave)
self.chkvieweol.SetValue(self.grandparent.prefs.vieweol)
self.chkCheckFormat.SetValue(self.grandparent.prefs.checkeol)
def OnbtnBrowse(self, event):
d = wx.DirDialog(self, "Select Default Directory:", style=wx.DD_DEFAULT_STYLE|wx.DD_NEW_DIR_BUTTON|wx.MAXIMIZE_BOX|wx.THICK_FRAME)
if d.ShowModal() == wx.ID_OK:
self.txtdefaultdirectory.SetValue(d.GetPath())
d.Destroy()
def OnbtnSetupPrefs(self, event):
from drSetupPreferences import drSetupPreferencesDialog
d = drSetupPreferencesDialog(self)
d.ShowModal()
d.Destroy()
def OntxtRecentFiles(self, event):
x = self.txtRecentFiles.GetValue()
if (len(x) < 1):
return
try:
y = int(x)
except ValueError:
drScrolledMessageDialog.ShowMessage(self, ("Whatever you are trying to do... Stop it.\nIt won't work. Positive Numbers only please.\nDrPython will reset to the value last loaded."), "Value Error")
self.txtRecentFiles.SetValue(str(self.grandparent.prefs.recentfileslimit))
return
except TypeError:
drScrolledMessageDialog.ShowMessage(self, ("\"" + y + "\" is not an integer (a number, eg 2, 4, 568)\nDrPython will reset to the value last loaded."), "Type Error")
self.txtRecentFiles.SetValue(str(self.grandparent.prefs.recentfileslimit))
return
if (y > 25):
drScrolledMessageDialog.ShowMessage(self, ("DrPython does not recommend going this high. You can of course..."), "Hmmmm")
class PluginsPanel(PrefsPanel):
def __init__(self, parent, id, name):
PrefsPanel.__init__(self, parent, id, name, 1)
self.txtdefaultdirectory = wx.TextCtrl(self, -1, self.grandparent.prefs.pluginsdefaultdirectory, wx.Point(15, 325), wx.Size(250, -1))
self.PluginsbtnBrowse = wx.Button(self, self.grandparent.ID_PLUGINS_BROWSE, " &Browse ")
self.AddLabel("Default Directory:")
self.AddTwoItems(self.txtdefaultdirectory, self.PluginsbtnBrowse)
self.SetPanelSizer()
self.reset()
self.Bind(wx.EVT_BUTTON, self.OnbtnPBrowse, id=self.grandparent.ID_PLUGINS_BROWSE)
def reset(self):
self.txtdefaultdirectory.SetValue(self.grandparent.prefs.pluginsdefaultdirectory)
def OnbtnPBrowse(self, event):
d = wx.DirDialog(self, "Select Default Directory For Plugins:", style=wx.DD_DEFAULT_STYLE|wx.DD_NEW_DIR_BUTTON|wx.MAXIMIZE_BOX|wx.THICK_FRAME)
if d.ShowModal() == wx.ID_OK:
self.txtdefaultdirectory.SetValue(d.GetPath())
d.Destroy()
class PrintPanel(PrefsPanel):
def __init__(self, parent, id, name):
PrefsPanel.__init__(self, parent, id, name, 3)
self.chkdoclinenumbers = wx.CheckBox(self, -1, "")
self.chkpromptlinenumbers = wx.CheckBox(self, -1, "")
self.txttabwidth = wx.TextCtrl(self, self.grandparent.ID_PRINT_TAB_WIDTH, str(self.grandparent.prefs.printtabwidth), wx.Point(225, 215), wx.Size(35, -1))
self.Add(self.chkdoclinenumbers, "Document Line Numbers:")
self.Add(self.chkpromptlinenumbers, "Prompt Line Numbers:")
self.Add(self.txttabwidth, "Tab Width:")
self.SetPanelSizer()
self.reset()
self.Bind(wx.EVT_TEXT, self.Ontxttabwidth, id=self.grandparent.ID_PRINT_TAB_WIDTH)
def reset(self):
self.chkdoclinenumbers.SetValue(self.grandparent.prefs.printdoclinenumbers)
self.chkpromptlinenumbers.SetValue(self.grandparent.prefs.printpromptlinenumbers)
self.txttabwidth.SetValue(str(self.grandparent.prefs.printtabwidth))
def Ontxttabwidth(self, event):
x = self.txttabwidth.GetValue()
if (len(x) < 1):
return
try:
y = int(x)
except ValueError:
drScrolledMessageDialog.ShowMessage(self, ("Whatever you are trying to do... Stop it.\nIt won't work. Positive Numbers only please.\nDrPython will reset to the value last loaded."), "Value Error")
self.txttabwidth.SetValue(str(self.grandparent.prefs.printtabwidth))
return
except TypeError:
drScrolledMessageDialog.ShowMessage(self, ("\"" + y + "\" is not an integer (a number, eg 2, 4, 568)\nDrPython will reset to the value last loaded."), "Type Error")
self.txttabwidth.SetValue(str(self.grandparent.prefs.printtabwidth))
return
if (y > 32):
drScrolledMessageDialog.ShowMessage(self, ("DrPython does not recommend going this high. You can of course..."), "Hmmmm")
class PromptPanel(PrefsPanel):
def __init__(self, parent, id, name):
PrefsPanel.__init__(self, parent, id, name, 8)
self.ID_TABWIDTH = 750
self.radusestyles = wx.RadioBox(self, -1, "Styles:", wx.DefaultPosition, wx.DefaultSize, ["Don't Use Styles", "Use Styles", "Only Use \"Normal\", \"Caret Foreground\""], 1, wx.RA_SPECIFY_COLS)
self.btnStyle = wx.Button(self, self.grandparent.ID_PROMPT_STYLE, " Edit Text Styles ")
self.btnApplyProperty = wx.Button(self, self.grandparent.ID_PROMPT_APPLY_PROPERTY, " Apply Text Property To All Styles ")
self.txtmarginwidth = wx.TextCtrl(self, self.grandparent.ID_PROMPT_MARGIN_WIDTH, str(self.grandparent.prefs.promptmarginwidth), wx.Point(225, 215), wx.Size(35, -1))
self.chkVisible = wx.CheckBox(self, -1, "")
self.chkpromptusetabs = wx.CheckBox(self, -1, "")
self.chkwordwrap = wx.CheckBox(self, -1, "")
self.txtcaretwidth = wx.TextCtrl(self, self.grandparent.ID_PROMPT_CARET_WIDTH, str(self.grandparent.prefs.promptcaretwidth), wx.Point(225, 215), wx.Size(35, -1))
self.chkWhitespace = wx.CheckBox(self, -1, "")
self.chkscrollextrapage = wx.CheckBox(self, -1, "")
self.sldrSize = wx.Slider(self, -1, self.grandparent.prefs.promptsize, 25, 100, wx.Point(150, 55), wx.Size(75, -1), wx.SL_HORIZONTAL | wx.SL_AUTOTICKS | wx.SL_LABELS )
self.sldrSize.SetTickFreq(25, 1)
self.txttabwidth = wx.TextCtrl(self, self.ID_TABWIDTH, '', wx.Point(225, 215), wx.Size(35, -1))
self.radFormat = wx.Choice(self, -1, wx.Point(15, 80), wx.DefaultSize, [" Unix ('\\n') "," DOS/Windows ('\\r\\n') "," Mac ('\\r') "])
self.txtStartupScript = wx.TextCtrl(self, -1, self.grandparent.prefs.promptstartupscript, wx.Point(225, 215), wx.Size(250, 150), wx.TE_MULTILINE)
self.Add(self.btnStyle)
self.Add(self.btnApplyProperty)
self.Add(self.radusestyles)
self.Add(self.txtmarginwidth, "Line Number Margin Width:")
self.Add(self.chkVisible, "Visible By Default:")
self.Add(self.txttabwidth, "Tab Width:")
self.Add(self.chkpromptusetabs, "Use Tabs:")
self.Add(self.radFormat, "Line Ending Format:")
self.Add(self.chkwordwrap, "Word Wrap:")
self.Add(self.txtcaretwidth, "Caret Width:")
self.Add(self.chkWhitespace, "Whitespace is Visible on Startup:")
self.Add(self.chkscrollextrapage, "Scroll Extra Page:")
self.Add(self.sldrSize, "Vertical Size:")
self.AddLabel("Startup Script:")
self.Add(self.txtStartupScript)
self.SetPanelSizer()
self.reset()
self.Bind(wx.EVT_BUTTON, self.OnbtnStyle, id=self.grandparent.ID_PROMPT_STYLE)
self.Bind(wx.EVT_BUTTON, self.OnbtnApplyProperty, id=self.grandparent.ID_PROMPT_APPLY_PROPERTY)
self.Bind(wx.EVT_TEXT, self.Ontxtmarginwidth, id=self.grandparent.ID_PROMPT_MARGIN_WIDTH)
self.Bind(wx.EVT_TEXT, self.Ontxtcaretwidth, id=self.grandparent.ID_PROMPT_CARET_WIDTH)
self.Bind(wx.EVT_TEXT, self.Ontxttabwidth, id=self.ID_TABWIDTH)
def reset(self):
self.txttabwidth.SetValue(str(self.grandparent.prefs.prompttabwidth))
self.radFormat.SetSelection(self.grandparent.prefs.prompteolmode)
self.radusestyles.SetSelection(self.grandparent.prefs.promptusestyles)
self.txtmarginwidth.SetValue(str(self.grandparent.prefs.promptmarginwidth))
self.chkVisible.SetValue(self.grandparent.prefs.promptisvisible)
self.chkpromptusetabs.SetValue(self.grandparent.prefs.promptusetabs)
self.chkwordwrap.SetValue(self.grandparent.prefs.promptwordwrap)
self.txtcaretwidth.SetValue(str(self.grandparent.prefs.promptcaretwidth))
self.chkWhitespace.SetValue(self.grandparent.prefs.promptwhitespaceisvisible)
self.sldrSize.SetValue(self.grandparent.prefs.promptsize)
self.chkscrollextrapage.SetValue(self.grandparent.prefs.promptscrollextrapage)
self.txtStartupScript.SetValue(self.grandparent.prefs.promptstartupscript)
def OnbtnStyle(self, event):
d = drStyleDialog(self, -1, ("Edit Prompt Styles"), True)
d.ShowModal()
if d.ClickedOk():
self.grandparent.prefs.txtPromptStyleDictionary = d.GetArrays()
d.Destroy()
def OnbtnApplyProperty(self, event):
d = wx.SingleChoiceDialog(self, "Select the property you wish to apply to all styles:", "Apply Property To All Styles", ["Font", "Size", "Background", "Foreground"], wx.OK|wx.CANCEL)
answer = d.ShowModal()
s = d.GetStringSelection()
d.Destroy()
if (answer == wx.ID_OK):
if (s == "Font"):
prop = "face"
dummy = ",face:terminal"
elif (s == "Size"):
prop = "size"
dummy = ",size:10"
elif (s == "Background"):
prop = "back"
dummy = ",back:#000000"
elif (s == "Foreground"):
prop = "fore"
dummy = ",fore:#FFFFFF"
l = len(self.grandparent.prefs.txtPromptStyleDictionary) - 3
#ignore caret foreground, selections
x = 2
#Ignore default text, and line number text (0, and 1)
bstring = getStyleProperty(prop, self.grandparent.prefs.txtPromptStyleDictionary[0])
while (x < l):
tstring = self.grandparent.prefs.txtPromptStyleDictionary[x]
#self.grandparent.prefs.txtPromptStyleDictionary.pop(x)
try:
tstring.index(prop)
except:
tstring = tstring + dummy
self.grandparent.prefs.txtPromptStyleDictionary[x] = setStyleProperty(prop, tstring, bstring)
x = x + 1
def Ontxtcaretwidth(self, event):
x = self.txtcaretwidth.GetValue()
if (len(x) < 1):
return
try:
y = int(x)
except ValueError:
drScrolledMessageDialog.ShowMessage(self, ("Whatever you are trying to do... Stop it.\nIt won't work. Positive Numbers only please.\nDrPython will reset to the value last loaded."), "Value Error")
self.txtcaretwidth.SetValue(str(self.grandparent.prefs.promptcaretwidth))
return
except TypeError:
drScrolledMessageDialog.ShowMessage(self, ("\"" + y + "\" is not an integer (a number, eg 2, 4, 568)\nDrPython will reset to the value last loaded."), "Type Error")
self.txtcaretwidth.SetValue(str(self.grandparent.prefs.promptcaretwidth))
return
if (y > 256):
drScrolledMessageDialog.ShowMessage(self, ("DrPython does not recommend going this high. You can of course..."), "Hmmmm")
def Ontxtmarginwidth(self, event):
x = self.txtmarginwidth.GetValue()
if (len(x) < 1):
return
try:
y = int(x)
except ValueError:
drScrolledMessageDialog.ShowMessage(self, ("Whatever you are trying to do... Stop it.\nIt won't work. Positive Numbers only please.\nDrPython will reset to the value last loaded."), "Value Error")
self.txtmarginwidth.SetValue(str(self.grandparent.prefs.promptmarginwidth))
return
except TypeError:
drScrolledMessageDialog.ShowMessage(self, ("\"" + y + "\" is not an integer (a number, eg 2, 4, 568)\nDrPython will reset to the value last loaded."), "Type Error")
self.txtmarginwidth.SetValue(str(self.grandparent.prefs.promptmarginwidth))
return
if (y > 1024):
drScrolledMessageDialog.ShowMessage(self, ("DrPython does not recommend going this high. You can of course..."), "Hmmmm")
def Ontxttabwidth(self, event):
x = self.txttabwidth.GetValue()
if (len(x) < 1):
return
try:
y = int(x)
except ValueError:
drScrolledMessageDialog.ShowMessage(self, ("Whatever you are trying to do... Stop it.\nIt won't work. Positive Numbers only please.\nDrPython will reset to the value last loaded."), "Value Error")
self.txttabwidth.SetValue(str(self.grandparent.prefs.prompttabwidth))
return
except TypeError:
drScrolledMessageDialog.ShowMessage(self, ("\"" + y + "\" is not an integer (a number, eg 2, 4, 568)\nDrPython will reset to the value last loaded."), "Type Error")
self.txttabwidth.SetValue(str(self.grandparent.prefs.prompttabwidth))
return
if (y > 1024):
drScrolledMessageDialog.ShowMessage(self, ("DrPython does not recommend going this high. You can of course..."), "Hmmmm")
class SidePanelPanel(PrefsPanel):
def __init__(self, parent, id, name):
PrefsPanel.__init__(self, parent, id, name, 4)
self.sldrSizeLeft = wx.Slider(self, -1, self.grandparent.prefs.sidepanelleftsize, 15, 100, wx.Point(150, 55), wx.Size(75, -1), wx.SL_HORIZONTAL | wx.SL_AUTOTICKS | wx.SL_LABELS )
self.sldrSizeLeft.SetTickFreq(25, 1)
self.sldrSizeRight = wx.Slider(self, -1, self.grandparent.prefs.sidepanelrightsize, 15, 100, wx.Point(150, 55), wx.Size(75, -1), wx.SL_HORIZONTAL | wx.SL_AUTOTICKS | wx.SL_LABELS )
self.sldrSizeRight.SetTickFreq(25, 1)
self.sldrSizeTop = wx.Slider(self, -1, self.grandparent.prefs.sidepaneltopsize, 15, 100, wx.Point(150, 55), wx.Size(75, -1), wx.SL_HORIZONTAL | wx.SL_AUTOTICKS | wx.SL_LABELS )
self.sldrSizeTop.SetTickFreq(25, 1)
self.Add(self.sldrSizeLeft, "Left Panel Size:")
self.Add(self.sldrSizeRight, "Right Panel Size:")
self.Add(self.sldrSizeTop, "Top Panel Size:")
self.SetPanelSizer()
self.reset()
def reset(self):
self.sldrSizeLeft.SetValue(self.grandparent.prefs.sidepanelleftsize)
self.sldrSizeRight.SetValue(self.grandparent.prefs.sidepanelrightsize)
self.sldrSizeTop.SetValue(self.grandparent.prefs.sidepaneltopsize)
class SourceBrowserPanel(PrefsPanel):
def __init__(self, parent, id, name):
PrefsPanel.__init__(self, parent, id, name, 4)
self.btnCStyle = wx.Button(self, self.grandparent.ID_CLASS_BROWSER_STYLE, " Edit Source Browser Style ")
self.positionchooser = wx.RadioBox(self, -1, "", wx.DefaultPosition, wx.DefaultSize, ['Left', 'Right', 'Top'], 3, wx.RA_SPECIFY_COLS | wx.NO_BORDER)
self.sldrSize = wx.Slider(self, -1, self.grandparent.prefs.sourcebrowsersize, 25, 100, wx.Point(150, 55), wx.Size(75, -1), wx.SL_HORIZONTAL | wx.SL_AUTOTICKS | wx.SL_LABELS )
self.sldrSize.SetTickFreq(25, 1)
self.chkIsVisible = wx.CheckBox(self, -1, "")
self.chkcloseonactivate = wx.CheckBox(self, -1, "")
self.chkissorted = wx.CheckBox(self, -1, "")
self.chkautorefreshonsave = wx.CheckBox(self, -1, "")
self.chkautorefresh = wx.CheckBox(self, -1, "")
self.Add(self.btnCStyle)
self.AddLabel("")
self.AddLabel("Panel Position:")
self.Add(self.positionchooser)
self.Add(self.sldrSize, "Panel Size:")
self.Add(self.chkIsVisible, "Visible By Default:")
self.Add(self.chkcloseonactivate, "Close On Activate:")
self.Add(self.chkissorted, "Sorted (Alphabetical):")
self.Add(self.chkautorefreshonsave, "Auto Refresh On Save:")
self.Add(self.chkautorefresh, "Auto Refresh:")
self.SetPanelSizer()
self.reset()
self.Bind(wx.EVT_BUTTON, self.OnbtnCStyle, id=self.grandparent.ID_CLASS_BROWSER_STYLE)
def reset(self):
self.positionchooser.SetSelection(self.grandparent.prefs.sourcebrowserpanel)
self.sldrSize.SetValue(self.grandparent.prefs.sourcebrowsersize)
self.chkIsVisible.SetValue(self.grandparent.prefs.sourcebrowserisvisible)
self.chkcloseonactivate.SetValue(self.grandparent.prefs.sourcebrowsercloseonactivate)
self.chkissorted.SetValue(self.grandparent.prefs.sourcebrowserissorted)
self.chkautorefreshonsave.SetValue(self.grandparent.prefs.sourcebrowserautorefreshonsave)
self.chkautorefresh.SetValue(self.grandparent.prefs.sourcebrowserautorefresh)
def OnbtnCStyle(self, event):
d = drSimpleStyleDialog(self, -1, ("Style: Source Browser"), self.grandparent.prefs.sourcebrowserstyle, self.grandparent.prefs.sourcebrowserstyle)
d.ShowModal()
if (d.ClickedOk()):
self.grandparent.prefs.sourcebrowserstyle = d.GetStyleString()
d.Destroy()
class drPrefsDialog(wx.Dialog):
def __init__(self, parent, id, title):
wx.Dialog.__init__(self, parent, id, title, wx.DefaultPosition, wx.Size(640, 480), wx.DEFAULT_DIALOG_STYLE | wx.MAXIMIZE_BOX | wx.THICK_FRAME | wx.RESIZE_BORDER)
self.parent = parent
self.ID_PAGES = 100
self.ID_CLOSE = 101
self.ID_RESET = 102
self.ID_UPDATE = 103
self.ID_SAVE = 104
self.ID_HELP = 105
self.ID_FILE_BROWSE = 109
self.ID_TEXT_TYPE = 110
self.ID_FILE_STYLE = 111
self.ID_APPLY_PROPERTY = 112
self.ID_DOC_MARGIN_WIDTH = 113
self.ID_DOC_CARET_WIDTH = 1235
self.ID_PROMPT_CARET_WIDTH = 1237
self.ID_LONGLINE_COL = 116
self.ID_ICON_SIZE = 350
self.ID_PROMPT_STYLE = 1140
self.ID_PROMPT_MARGIN_WIDTH = 115
self.ID_PROMPT_TEXT_TYPE = 117
self.ID_PROMPT_APPLY_PROPERTY = 118
self.ID_CLASS_BROWSER_STYLE = 201
self.ID_BOOKMARKS_STYLE = 202
self.ID_DRSCRIPT_STYLE = 203
self.ID_DRSCRIPT_BROWSE = 211
self.ID_PLUGINS_BROWSE = 212
self.ID_PRINT_TAB_WIDTH = 251
self.ID_DOCUMENTATION_BROWSE = 231
self.ID_DOCUMENTATION_BROWSE_P = 232
self.ID_DOCUMENTATION_BROWSE_W = 233
self.ID_DOCUMENTATION_BROWSE_R = 234
self.ID_TXT_RECENT_FILES = 301
self.ID_TXT_TAB_WIDTH = 302
self.ID_USE_TABS = 303
self.ID_RESET_PANEL = 405
self.ID_LB_PREFS = 505
self.ID_SETUP_PREFS = 501
self.ID_BTN_WILDCARD = 510
self.ID_BTN_LNK_REPLACE_TABLE = 511
self.userpreferencesdirectory = parent.userpreferencesdirectory
self.prefs = drPreferences(parent.prefs.platform_is_windows, parent.programdirectory)
self.prefs.Copy(parent.prefs)
self.oldprefs = drPreferences(parent.prefs.platform_is_windows, parent.programdirectory)
self.oldprefs.Copy(parent.prefs)
self.lbPrefs = drPrefsBook(self, self.ID_LB_PREFS, (600, 400))
self.pnlBookmarks = BookmarksPanel(self.lbPrefs, -1, "Bookmarks")
self.pnlDocument = DocumentPanel(self.lbPrefs, -1, "Document")
self.pnlDocumentation = DocumentationPanel(self.lbPrefs, -1, "Documentation")
self.pnlDragAndDrop = DragAndDropPanel(self.lbPrefs, -1, "Drag and Drop")
self.pnlDrScript = DrScriptPanel(self.lbPrefs, -1, "DrScript")
self.pnlFileDialog = FileDialogPanel(self.lbPrefs, -1, "File Dialog")
self.pnlFileTypes = FileTypesPanel(self.lbPrefs, -1, "File Types")
self.pnlFindReplace = FindReplacePanel(self.lbPrefs, -1, "Find/Replace")
self.pnlGeneral = GeneralPanel(self.lbPrefs, -1, "General")
self.pnlPlugins = PluginsPanel(self.lbPrefs, -1, "Plugins")
self.pnlPrint = PrintPanel(self.lbPrefs, -1, "Printing")
self.pnlPrompt = PromptPanel(self.lbPrefs, -1, "Prompt")
self.pnlSidePanels = SidePanelPanel(self.lbPrefs, -1, "Side Panels")
self.pnlSourceBrowser = SourceBrowserPanel(self.lbPrefs, -1, "Source Browser")
self.lbPrefs.AddPage(self.pnlBookmarks, "Bookmarks")
self.lbPrefs.AddPage(self.pnlDocument, "Document")
self.lbPrefs.AddPage(self.pnlDocumentation, "Documentation")
self.lbPrefs.AddPage(self.pnlDragAndDrop, "Drag And Drop")
self.lbPrefs.AddPage(self.pnlDrScript, "DrScript")
self.lbPrefs.AddPage(self.pnlFileDialog, "File Dialog")
self.lbPrefs.AddPage(self.pnlFileTypes, "File Types")
self.lbPrefs.AddPage(self.pnlFindReplace, "Find/Replace")
self.lbPrefs.AddPage(self.pnlGeneral, "General")
self.lbPrefs.AddPage(self.pnlPlugins, "Plugins")
self.lbPrefs.AddPage(self.pnlPrint, "Printing")
self.lbPrefs.AddPage(self.pnlPrompt, "Prompt")
self.lbPrefs.AddPage(self.pnlSidePanels, "Side Panels")
self.lbPrefs.AddPage(self.pnlSourceBrowser, "Source Browser")
self.lbPrefs.ShowPanel(self.parent.prefdialogposition)
self.theSizer = wx.BoxSizer(wx.VERTICAL)
self.buttonSizer = wx.BoxSizer(wx.HORIZONTAL)
self.btnClose = wx.Button(self, self.ID_CLOSE, " &Close ")
self.btnClose.SetDefault()
self.btnHelp = wx.Button(self, self.ID_HELP, " &Help ")
self.btnReset = wx.Button(self, self.ID_RESET, " &Reset All ")
self.btnUpdate = wx.Button(self, self.ID_UPDATE, " &Update ")
self.btnSave = wx.Button(self, self.ID_SAVE, " &Save ")
self.buttonSizer.Add(self.btnClose, 0, wx.SHAPED)
self.buttonSizer.Add(self.btnHelp, 0, wx.SHAPED)
self.buttonSizer.Add(self.btnReset, 0, wx.SHAPED)
self.buttonSizer.Add(self.btnUpdate, 0, wx.SHAPED)
self.buttonSizer.Add(self.btnSave, 0, wx.SHAPED)
self.theSizer.Add(self.lbPrefs, 1, wx.EXPAND)
self.theSizer.Add(wx.StaticText(self, -1, " "), 0, wx.SHAPED | wx.ALIGN_CENTER)
self.theSizer.Add(self.buttonSizer, 0, wx.SHAPED | wx.ALIGN_CENTER)
self.SetAutoLayout(True)
self.SetSizer(self.theSizer)
self.Bind(wx.EVT_BUTTON, self.OnbtnClose, id=self.ID_CLOSE)
self.Bind(wx.EVT_BUTTON, self.OnbtnHelp, id=self.ID_HELP)
self.Bind(wx.EVT_BUTTON, self.OnbtnReset, id=self.ID_RESET)
self.Bind(wx.EVT_BUTTON, self.OnbtnUpdate, id=self.ID_UPDATE)
self.Bind(wx.EVT_BUTTON, self.OnbtnSave, id=self.ID_SAVE)
self.parent.LoadDialogSizeAndPosition(self, 'preferencesdialog.sizeandposition.dat')
def OnCloseW(self, event):
self.parent.SaveDialogSizeAndPosition(self, 'preferencesdialog.sizeandposition.dat')
if event is not None:
event.Skip()
def OnbtnClose(self, event):
self.OnCloseW(None)
self.EndModal(0)
def OnbtnHelp(self, event):
self.parent.ViewURLInBrowser(self.parent.programdirectory + '/documentation/preferences.html')
def OnbtnReset(self, event):
d = wx.MessageDialog(self, "This will reset all preferences to the program default.\n(You still need to click update and/or save)\nAre you sure you want to do this?", "Reset Preferences", wx.YES_NO | wx.ICON_QUESTION)
answer = d.ShowModal()
d.Destroy()
if (answer == wx.ID_YES):
self.prefs.reset()
self.pnlSourceBrowser.reset()
self.pnlDocument.reset()
self.pnlDocumentation.reset()
self.pnlDrScript.reset()
self.pnlFindReplace.reset()
self.pnlFileTypes.reset()
self.pnlGeneral.reset()
self.pnlPlugins.reset()
self.pnlPrint.reset()
self.pnlPrompt.reset()
self.pnlSidePanels.reset()
def OnbtnResetPanel(self, event):
d = wx.MessageDialog(self, "This will reset all of this panel's preferences to the program default.\n(You still need to click update and/or save)\nAre you sure you want to do this?", "Reset Panel Preferences", wx.YES_NO | wx.ICON_QUESTION)
answer = d.ShowModal()
d.Destroy()
if (answer == wx.ID_YES):
panel = event.GetEventObject().GetParent()
self.prefs.resetjust(panel.GetName())
panel.reset()
def OnbtnUpdate(self, event):
self.GetParent().prefs = self.GetPreferences()
self.GetParent().updatePrefs(self.oldprefs)
self.oldprefs.Copy(self.prefs)
if self.GetParent().prefs.enablefeedback:
drScrolledMessageDialog.ShowMessage(self, ("Succesfully updated the current instance of DrPython.\nClick Save to make it permanent."), "Updated Preferences")
def OnbtnSave(self, event):
if (not os.path.exists(self.userpreferencesdirectory)):
drScrolledMessageDialog.ShowMessage(self, ("Dude, you've got some problems...\nYour userpreferencesdirectory (" + self.userpreferencesdirectory + ") does not exist!\nLet's not bother speculating about how or why.\nRead the help file for this truly screwed up situation.\nDrPython will now politely ignore your request to save.\nTry again when you have fixed this problem."), "Huge Error")
return
preffile = self.userpreferencesdirectory + "/preferences.dat"
try:
drPrefsFile.WritePreferences(self.GetPreferences(), preffile)
except IOError:
drScrolledMessageDialog.ShowMessage(self, ("There were some problems writing to:\n" + preffile + "\nEither the file is having metaphysical issues, or you do not have permission to write.\nFor metaphysical issues, consult the documentation.\nFor permission issues, change the permissions on the directory to allow yourself write access.\nDrPython will now politely ignore your request to save.\nTry again when you have fixed the problem."), "Write Error")
return
self.GetParent().prefs = self.GetPreferences()
self.GetParent().updatePrefs(self.oldprefs)
self.oldprefs.Copy(self.prefs)
if self.GetParent().prefs.enablefeedback:
drScrolledMessageDialog.ShowMessage(self, ("Succesfully wrote to:\n" + preffile + "\nand updated the current instance of DrPython."), "Saved Preferences")
def GetPreferences(self):
#General
self.prefs.rememberwindowsizeandposition = int(self.pnlGeneral.chkrememberwindowsizeandposition.GetValue())
self.prefs.rememberdialogsizesandpositions = int(self.pnlGeneral.chkrememberdialogsizesandpositions.GetValue())
self.prefs.rememberpanelsizes = int(self.pnlGeneral.chkrememberpanelsizes.GetValue())
self.prefs.autodetectencoding = int(self.pnlGeneral.chkautodetectencoding.GetValue())
self.prefs.defaultencoding = self.pnlGeneral.cboEncoding.GetValue()
self.prefs.saveonrun = int(self.pnlGeneral.chksaveonrun.GetValue())
self.prefs.checksyntaxonsave = int(self.pnlGeneral.chkchecksyntaxonsave.GetValue())
self.prefs.checksyntaxextensions = self.pnlGeneral.txtchecksyntaxextensions.GetValue()
self.prefs.promptonsaveall = int(self.pnlGeneral.chkpromptonsaveall.GetValue())
self.prefs.doubleclicktoclosetab = int(self.pnlGeneral.chkdoubleclicktoclosetab.GetValue())
self.prefs.recentfileslimit = self.pnlGeneral.txtRecentFiles.GetValue()
if (len(self.prefs.recentfileslimit) < 1):
self.prefs.recentfileslimit = self.oldprefs.recentfileslimit
self.prefs.recentfileslimit = int(self.prefs.recentfileslimit)
self.prefs.iconsize = int(self.pnlGeneral.boxiconsize.GetStringSelection())
self.prefs.pythonargs = self.pnlGeneral.txtpythonargs.GetValue()
self.prefs.defaultdirectory = self.pnlGeneral.txtdefaultdirectory.GetValue().replace('\\', '/')
self.prefs.enablefeedback = int(self.pnlGeneral.chkenablefeedback.GetValue())
self.prefs.alwayspromptonexit = int(self.pnlGeneral.chkalwayspromptonexit.GetValue())
self.prefs.backupfileonsave = int(self.pnlGeneral.chkbackupfileonsave.GetValue())
self.prefs.checkindentation = int(self.pnlGeneral.chkcheckindentation.GetValue())
self.prefs.checkeol = int(self.pnlGeneral.chkCheckFormat.GetValue())
self.prefs.vieweol = int(self.pnlGeneral.chkvieweol.GetValue())
#Drag and Drop
self.prefs.draganddropmode = self.pnlDragAndDrop.raddraganddropmode.GetSelection()
self.prefs.draganddroptextmode = self.pnlDragAndDrop.raddraganddroptextmode.GetSelection()
#File Types:
self.prefs.extensions = self.pnlFileTypes.extensions.copy()
self.prefs.docusetabs = self.pnlFileTypes.docusetabs.copy()
self.prefs.doctabwidth = self.pnlFileTypes.doctabwidth.copy()
self.prefs.doceolmode = self.pnlFileTypes.doceolmode.copy()
self.prefs.docfolding = self.pnlFileTypes.docfolding.copy()
self.prefs.doccommentstring = self.pnlFileTypes.doccommentstring.copy()
self.prefs.docwordwrap = self.pnlFileTypes.docwordwrap.copy()
#File Dialog
self.prefs.usewxfiledialog = int(self.pnlFileDialog.chkusewxfiledialog.GetValue())
self.prefs.defaultextension = int(self.pnlFileDialog.chkdefaultextension.GetValue())
#Document
self.prefs.docshowlinenumbers = int(self.pnlDocument.chkdocshowlinenumbers.GetValue())
self.prefs.docparenthesismatching = int(self.pnlDocument.chkdocparenthesismatching.GetValue())
self.prefs.docupdateindentation = int(self.pnlDocument.chkdocupdateindentation.GetValue())
self.prefs.docautoindent = self.pnlDocument.raddocautoindent.GetSelection()
self.prefs.docremovetrailingwhitespace = int(self.pnlDocument.chkdocremovetrailingwhitespace.GetValue())
self.prefs.docautoreload = int(self.pnlDocument.chkdocautoreload.GetValue())
self.prefs.docusefileindentation = int(self.pnlDocument.chkdocusefileindentation.GetValue())
self.prefs.docwhitespaceisvisible = int(self.pnlDocument.chkWhitespace.GetValue())
self.prefs.docusestyles = self.pnlDocument.radusestyles.GetSelection()
self.prefs.docuseindentationguides = int(self.pnlDocument.chkuseindentationguides.GetValue())
self.prefs.doccommentmode = self.pnlDocument.raddoccommentmode.GetSelection()
self.prefs.doccaretwidth = self.pnlDocument.txtcaretwidth.GetValue()
if (len(self.prefs.doccaretwidth) < 1):
self.prefs.doccaretwidth = self.oldprefs.doccaretwidth
self.prefs.doccaretwidth = int(self.prefs.doccaretwidth)
self.prefs.dochighlightcurrentline = int(self.pnlDocument.chkhighlightcurrentline.GetValue())
#Chris McDonough (I added the txt prefix)
self.prefs.doclonglinecol = self.pnlDocument.txtdoclonglinecol.GetValue()
if len(self.prefs.doclonglinecol) < 1:
self.prefs.doclonglinecol = self.oldprefs.doclonglinecol
self.prefs.doclonglinecol = int(self.prefs.doclonglinecol)
#/Chris McDonough
self.prefs.docscrollextrapage = int(self.pnlDocument.chkscrollextrapage.GetValue())
self.prefs.docdefaultsyntaxhighlighting = self.pnlDocument.boxdefaultsyntaxhighlighting.GetSelection()
self.prefs.doconlyusedefaultsyntaxhighlighting = self.pnlDocument.chkonlyusedefaultsyntaxhighlighting.GetValue()
#Prompt
self.prefs.prompttabwidth = self.pnlPrompt.txttabwidth.GetValue()
if len(self.prefs.prompttabwidth) < 1:
self.prefs.prompttabwidth = self.oldprefs.prompttabwidth
self.prefs.prompttabwidth = int(self.prefs.prompttabwidth)
self.prefs.prompteolmode = self.pnlPrompt.radFormat.GetSelection()
self.prefs.promptmarginwidth = self.pnlPrompt.txtmarginwidth.GetValue()
if (len(self.prefs.promptmarginwidth) < 1):
self.prefs.promptmarginwidth = self.oldprefs.promptmarginwidth
self.prefs.promptmarginwidth = int(self.prefs.promptmarginwidth)
self.prefs.promptusetabs = int(self.pnlPrompt.chkpromptusetabs.GetValue())
self.prefs.promptisvisible = int(self.pnlPrompt.chkVisible.GetValue())
self.prefs.promptsize = int(self.pnlPrompt.sldrSize.GetValue())
self.prefs.promptwordwrap = int(self.pnlPrompt.chkwordwrap.GetValue())
self.prefs.promptcaretwidth = self.pnlPrompt.txtcaretwidth.GetValue()
if (len(self.prefs.promptcaretwidth) < 1):
self.prefs.promptcaretwidth = self.oldprefs.promptcaretwidth
self.prefs.promptcaretwidth = int(self.prefs.promptcaretwidth)
self.prefs.promptwhitespaceisvisible = int(self.pnlPrompt.chkWhitespace.GetValue())
self.prefs.promptusestyles = self.pnlPrompt.radusestyles.GetSelection()
self.prefs.promptscrollextrapage = int(self.pnlPrompt.chkscrollextrapage.GetValue())
self.prefs.promptstartupscript = self.pnlPrompt.txtStartupScript.GetValue()
#Find/Replace
self.prefs.findreplaceregularexpression = int(self.pnlFindReplace.chkregularexpression.GetValue())
self.prefs.findreplacematchcase = int(self.pnlFindReplace.chkmatchcase.GetValue())
self.prefs.findreplacefindbackwards = int(self.pnlFindReplace.chkfindbackwards.GetValue())
self.prefs.findreplacewholeword = int(self.pnlFindReplace.chkwholeword.GetValue())
self.prefs.findreplaceinselection = int(self.pnlFindReplace.chkinselection.GetValue())
self.prefs.findreplacefromcursor = int(self.pnlFindReplace.chkfromcursor.GetValue())
self.prefs.findreplacepromptonreplace = int(self.pnlFindReplace.chkpromptonreplace.GetValue())
self.prefs.findreplaceautowrap = int(self.pnlFindReplace.chkfindreplaceautowrap.GetValue())
self.prefs.findreplaceundercursor = int(self.pnlFindReplace.chkundercursor.GetValue())
#Side Panels
self.prefs.sidepanelleftsize = int(self.pnlSidePanels.sldrSizeLeft.GetValue())
self.prefs.sidepanelrightsize = int(self.pnlSidePanels.sldrSizeRight.GetValue())
self.prefs.sidepaneltopsize = int(self.pnlSidePanels.sldrSizeTop.GetValue())
#Source Browser
self.prefs.sourcebrowserpanel = self.pnlSourceBrowser.positionchooser.GetSelection()
self.prefs.sourcebrowsersize = self.pnlSourceBrowser.sldrSize.GetValue()
self.prefs.sourcebrowserisvisible = int(self.pnlSourceBrowser.chkIsVisible.GetValue())
self.prefs.sourcebrowsercloseonactivate = int(self.pnlSourceBrowser.chkcloseonactivate.GetValue())
self.prefs.sourcebrowserissorted = int(self.pnlSourceBrowser.chkissorted.GetValue())
self.prefs.sourcebrowserautorefreshonsave = int(self.pnlSourceBrowser.chkautorefreshonsave.GetValue())
self.prefs.sourcebrowserautorefresh = int(self.pnlSourceBrowser.chkautorefresh.GetValue())
#Plugins
self.prefs.pluginsdefaultdirectory = self.pnlPlugins.txtdefaultdirectory.GetValue()
#DrScript
self.prefs.drscriptdefaultdirectory = self.pnlDrScript.txtdefaultdirectory.GetValue()
self.prefs.drscriptloadexamples = int(self.pnlDrScript.chkloadexamples.GetValue())
#Printing
self.prefs.printdoclinenumbers = int(self.pnlPrint.chkdoclinenumbers.GetValue())
self.prefs.printpromptlinenumbers = int(self.pnlPrint.chkpromptlinenumbers.GetValue())
self.prefs.printtabwidth = self.pnlPrint.txttabwidth.GetValue()
if (len(self.prefs.printtabwidth) < 1):
self.prefs.printtabwidth = self.oldprefs.printtabwidth
self.prefs.printtabwidth = int(self.prefs.printtabwidth)
#Documentation
self.prefs.documentationbrowser = self.pnlDocumentation.txtbrowser.GetValue()
self.prefs.documentationpythonlocation = self.pnlDocumentation.txtpython.GetValue()
self.prefs.documentationwxwidgetslocation = self.pnlDocumentation.txtwxwidgets.GetValue()
self.prefs.documentationrehowtolocation = self.pnlDocumentation.txtrehowto.GetValue()
return self.prefs
syntax highlighted by Code2HTML, v. 0.9.1