123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116 |
- # The property page to define generic IDE options for Pythonwin
- from pywin.mfc import dialog
- from pywin.framework import interact
- import win32ui
- import win32con
- buttonControlMap = {
- win32ui.IDC_BUTTON1: win32ui.IDC_EDIT1,
- win32ui.IDC_BUTTON2: win32ui.IDC_EDIT2,
- win32ui.IDC_BUTTON3: win32ui.IDC_EDIT3,
- }
- class OptionsPropPage(dialog.PropertyPage):
- def __init__(self):
- dialog.PropertyPage.__init__(self, win32ui.IDD_PP_IDE)
- self.AddDDX(win32ui.IDC_CHECK1, "bShowAtStartup")
- self.AddDDX(win32ui.IDC_CHECK2, "bDocking")
- self.AddDDX(win32ui.IDC_EDIT4, 'MRUSize', "i")
- def OnInitDialog(self):
- edit = self.GetDlgItem(win32ui.IDC_EDIT1)
- format = eval(win32ui.GetProfileVal(interact.sectionProfile, interact.STYLE_INTERACTIVE_PROMPT, str(interact.formatInput)))
- edit.SetDefaultCharFormat(format)
- edit.SetWindowText("Input Text")
-
- edit = self.GetDlgItem(win32ui.IDC_EDIT2)
- format = eval(win32ui.GetProfileVal(interact.sectionProfile, interact.STYLE_INTERACTIVE_OUTPUT, str(interact.formatOutput)))
- edit.SetDefaultCharFormat(format)
- edit.SetWindowText("Output Text")
-
- edit = self.GetDlgItem(win32ui.IDC_EDIT3)
- format = eval(win32ui.GetProfileVal(interact.sectionProfile, interact.STYLE_INTERACTIVE_ERROR, str(interact.formatOutputError)))
- edit.SetDefaultCharFormat(format)
- edit.SetWindowText("Error Text")
- self['bShowAtStartup'] = interact.LoadPreference("Show at startup", 1)
- self['bDocking'] = interact.LoadPreference("Docking", 0)
- self['MRUSize'] = win32ui.GetProfileVal("Settings","Recent File List Size", 10)
- # Hook the button clicks.
- self.HookCommand(self.HandleCharFormatChange, win32ui.IDC_BUTTON1)
- self.HookCommand(self.HandleCharFormatChange, win32ui.IDC_BUTTON2)
- self.HookCommand(self.HandleCharFormatChange, win32ui.IDC_BUTTON3)
- # Ensure the spin control remains in range.
- spinner = self.GetDlgItem(win32ui.IDC_SPIN1)
- spinner.SetRange(1, 16)
- return dialog.PropertyPage.OnInitDialog(self)
- # Called to save away the new format tuple for the specified item.
- def HandleCharFormatChange(self, id, code):
- if code == win32con.BN_CLICKED:
- editId = buttonControlMap.get(id)
- assert editId is not None, "Format button has no associated edit control"
- editControl = self.GetDlgItem(editId)
- existingFormat = editControl.GetDefaultCharFormat()
- flags = win32con.CF_SCREENFONTS
- d=win32ui.CreateFontDialog(existingFormat, flags, None, self)
- if d.DoModal()==win32con.IDOK:
- cf = d.GetCharFormat()
- editControl.SetDefaultCharFormat(cf)
- self.SetModified(1)
- return 0 # We handled this fully!
- def OnOK(self):
- # Handle the edit controls - get all the fonts, put them back into interact, then
- # get interact to save its stuff!
- controlAttrs = [
- (win32ui.IDC_EDIT1, interact.STYLE_INTERACTIVE_PROMPT),
- (win32ui.IDC_EDIT2, interact.STYLE_INTERACTIVE_OUTPUT),
- (win32ui.IDC_EDIT3, interact.STYLE_INTERACTIVE_ERROR)]
- for id, key in controlAttrs:
- control = self.GetDlgItem(id)
- fmt = control.GetDefaultCharFormat()
- win32ui.WriteProfileVal(interact.sectionProfile, key, str(fmt))
- # Save the other interactive window options.
- interact.SavePreference("Show at startup", self['bShowAtStartup'])
- interact.SavePreference("Docking", self['bDocking'])
- # And the other options.
- win32ui.WriteProfileVal("Settings","Recent File List Size", self['MRUSize'])
-
- return 1
- def ChangeFormat(self, fmtAttribute, fmt):
- dlg = win32ui.CreateFontDialog(fmt)
- if dlg.DoModal() != win32con.IDOK: return None
- return dlg.GetCharFormat()
- def OnFormatTitle(self, command, code):
- fmt = self.GetFormat(interact.formatTitle)
- if fmt:
- formatTitle = fmt
- SaveFontPreferences()
- def OnFormatInput(self, command, code):
- global formatInput
- fmt = self.GetFormat(formatInput)
- if fmt:
- formatInput = fmt
- SaveFontPreferences()
- def OnFormatOutput(self, command, code):
- global formatOutput
- fmt = self.GetFormat(formatOutput)
- if fmt:
- formatOutput = fmt
- SaveFontPreferences()
- def OnFormatError(self, command, code):
- global formatOutputError
- fmt = self.GetFormat(formatOutputError)
- if fmt:
- formatOutputError = fmt
- SaveFontPreferences()
|