def __init__(self, parent, ctrl): wx.Dialog.__init__(self, parent, -1, "Character map") self.ctrl = ctrl hsizer = wx.BoxSizer(wx.HORIZONTAL) self.charMap = MyCharMap(self) hsizer.Add(self.charMap) self.insertButton = wx.Button(self, -1, " Insert character ") hsizer.Add(self.insertButton, 0, wx.ALL, 10) wx.EVT_BUTTON(self, self.insertButton.GetId(), self.OnInsert) gutil.btnDblClick(self.insertButton, self.OnInsert) util.finishWindow(self, hsizer, 0)
def __init__(self, parent, titles, cfg, cfgGl): wx.Dialog.__init__(self, parent, -1, "Title pages", style=wx.DEFAULT_DIALOG_STYLE) self.titles = titles self.cfg = cfg self.cfgGl = cfgGl # whether some events are blocked self.block = False self.setPage(0) vsizer = wx.BoxSizer(wx.VERTICAL) self.pageLabel = wx.StaticText(self, -1, "") vsizer.Add(self.pageLabel, 0, wx.ADJUST_MINSIZE) hsizer = wx.BoxSizer(wx.HORIZONTAL) tmp = wx.Button(self, -1, "Add") hsizer.Add(tmp) self.Bind(wx.EVT_BUTTON, self.OnAddPage, id=tmp.GetId()) gutil.btnDblClick(tmp, self.OnAddPage) self.delPageBtn = wx.Button(self, -1, "Delete") hsizer.Add(self.delPageBtn, 0, wx.LEFT, 10) self.Bind(wx.EVT_BUTTON, self.OnDeletePage, id=self.delPageBtn.GetId()) gutil.btnDblClick(self.delPageBtn, self.OnDeletePage) self.moveBtn = wx.Button(self, -1, "Move") hsizer.Add(self.moveBtn, 0, wx.LEFT, 10) self.Bind(wx.EVT_BUTTON, self.OnMovePage, id=self.moveBtn.GetId()) gutil.btnDblClick(self.moveBtn, self.OnMovePage) self.nextBtn = wx.Button(self, -1, "Next") hsizer.Add(self.nextBtn, 0, wx.LEFT, 10) self.Bind(wx.EVT_BUTTON, self.OnNextPage, id=self.nextBtn.GetId()) gutil.btnDblClick(self.nextBtn, self.OnNextPage) vsizer.Add(hsizer, 0, wx.TOP, 5) vsizer.Add(wx.StaticLine(self, -1), 0, wx.EXPAND | wx.TOP | wx.BOTTOM, 10) hsizer = wx.BoxSizer(wx.HORIZONTAL) vsizer2 = wx.BoxSizer(wx.VERTICAL) tmp = wx.StaticText(self, -1, "Strings:") vsizer2.Add(tmp) self.stringsLb = wx.ListBox(self, -1, size=(200, 150)) vsizer2.Add(self.stringsLb) hsizer2 = wx.BoxSizer(wx.HORIZONTAL) self.addBtn = gutil.createStockButton(self, "Add") hsizer2.Add(self.addBtn) self.Bind(wx.EVT_BUTTON, self.OnAddString, id=self.addBtn.GetId()) gutil.btnDblClick(self.addBtn, self.OnAddString) self.delBtn = gutil.createStockButton(self, "Delete") hsizer2.Add(self.delBtn, 0, wx.LEFT, 10) self.Bind(wx.EVT_BUTTON, self.OnDeleteString, id=self.delBtn.GetId()) gutil.btnDblClick(self.delBtn, self.OnDeleteString) vsizer2.Add(hsizer2, 0, wx.TOP, 5) hsizer.Add(vsizer2) self.previewCtrl = TitlesPreview(self, self, self.cfg) util.setWH(self.previewCtrl, 150, 150) hsizer.Add(self.previewCtrl, 1, wx.EXPAND | wx.LEFT, 10) vsizer.Add(hsizer, 0, wx.EXPAND) hsizer = wx.BoxSizer(wx.HORIZONTAL) hsizer.Add(wx.StaticText(self, -1, "Text:"), 0, wx.ALIGN_CENTER_VERTICAL) self.textEntry = wx.TextCtrl(self, -1, style=wx.TE_MULTILINE | wx.TE_DONTWRAP, size=(200, 75)) hsizer.Add(self.textEntry, 1, wx.LEFT, 10) self.Bind(wx.EVT_TEXT, self.OnMisc, id=self.textEntry.GetId()) vsizer.Add(hsizer, 0, wx.EXPAND | wx.TOP, 20) # TODO: should use FlexGridSizer, like headersdlg, to get neater # layout hsizerTop = wx.BoxSizer(wx.HORIZONTAL) vsizer2 = wx.BoxSizer(wx.VERTICAL) hsizer = wx.BoxSizer(wx.HORIZONTAL) hsizer.Add(wx.StaticText(self, -1, "Alignment:"), 0, wx.ALIGN_CENTER_VERTICAL) self.alignCombo = wx.ComboBox(self, -1, style=wx.CB_READONLY) for it in [("Left", util.ALIGN_LEFT), ("Center", util.ALIGN_CENTER), ("Right", util.ALIGN_RIGHT)]: self.alignCombo.Append(it[0], it[1]) hsizer.Add(self.alignCombo, 0, wx.LEFT, 10) self.Bind(wx.EVT_COMBOBOX, self.OnMisc, id=self.alignCombo.GetId()) vsizer2.Add(hsizer, 0, wx.TOP, 5) hsizer = wx.BoxSizer(wx.HORIZONTAL) hsizer.Add(wx.StaticText(self, -1, "X / Y Pos (mm):"), 0, wx.ALIGN_CENTER_VERTICAL) self.xEntry = wx.TextCtrl(self, -1) hsizer.Add(self.xEntry, 0, wx.LEFT, 10) self.Bind(wx.EVT_TEXT, self.OnMisc, id=self.xEntry.GetId()) self.yEntry = wx.TextCtrl(self, -1) hsizer.Add(self.yEntry, 0, wx.LEFT, 10) self.Bind(wx.EVT_TEXT, self.OnMisc, id=self.yEntry.GetId()) vsizer2.Add(hsizer, 0, wx.TOP, 5) hsizer = wx.BoxSizer(wx.HORIZONTAL) hsizer.Add(wx.StaticText(self, -1, "Font / Size:"), 0, wx.ALIGN_CENTER_VERTICAL) self.fontCombo = wx.ComboBox(self, -1, style=wx.CB_READONLY) for it in [("Courier", pml.COURIER), ("Helvetica", pml.HELVETICA), ("Times-Roman", pml.TIMES_ROMAN)]: self.fontCombo.Append(it[0], it[1]) hsizer.Add(self.fontCombo, 0, wx.LEFT, 10) self.Bind(wx.EVT_COMBOBOX, self.OnMisc, id=self.fontCombo.GetId()) self.sizeEntry = wx.SpinCtrl(self, -1, size=(50, -1)) self.sizeEntry.SetRange(4, 288) self.Bind(wx.EVT_SPINCTRL, self.OnMisc, id=self.sizeEntry.GetId()) self.sizeEntry.Bind(wx.EVT_KILL_FOCUS, self.OnKillFocus) hsizer.Add(self.sizeEntry, 0, wx.LEFT, 10) vsizer2.Add(hsizer, 0, wx.TOP, 10) hsizerTop.Add(vsizer2) bsizer = wx.StaticBoxSizer(wx.StaticBox(self, -1, "Style"), wx.HORIZONTAL) vsizer2 = wx.BoxSizer(wx.VERTICAL) # wxGTK adds way more space by default than wxMSW between the # items, have to adjust for that pad = 0 if misc.isWindows: pad = 5 self.addCheckBox("Bold", self, vsizer2, pad) self.addCheckBox("Italic", self, vsizer2, pad) self.addCheckBox("Underlined", self, vsizer2, pad) bsizer.Add(vsizer2) hsizerTop.Add(bsizer, 0, wx.LEFT, 20) vsizer.Add(hsizerTop, 0, wx.TOP, 10) hsizer = wx.BoxSizer(wx.HORIZONTAL) hsizer.Add((1, 1), 1) self.previewBtn = gutil.createStockButton(self, "Preview") hsizer.Add(self.previewBtn) cancelBtn = gutil.createStockButton(self, "Cancel") hsizer.Add(cancelBtn, 0, wx.LEFT, 10) okBtn = gutil.createStockButton(self, "OK") hsizer.Add(okBtn, 0, wx.LEFT, 10) vsizer.Add(hsizer, 0, wx.EXPAND | wx.TOP, 20) util.finishWindow(self, vsizer) self.Bind(wx.EVT_BUTTON, self.OnPreview, id=self.previewBtn.GetId()) self.Bind(wx.EVT_BUTTON, self.OnCancel, id=cancelBtn.GetId()) self.Bind(wx.EVT_BUTTON, self.OnOK, id=okBtn.GetId()) self.Bind(wx.EVT_LISTBOX, self.OnStringsLb, id=self.stringsLb.GetId()) # list of widgets that are specific to editing the selected string self.widList = [ self.textEntry, self.xEntry, self.alignCombo, self.yEntry, self.fontCombo, self.sizeEntry, self.boldCb, self.italicCb, self.underlinedCb ] self.updateGui() self.textEntry.SetFocus()
def __init__(self, parent, headers, cfg, cfgGl, applyFunc): wx.Dialog.__init__(self, parent, -1, "Headers", style=wx.DEFAULT_DIALOG_STYLE) self.headers = headers self.cfg = cfg self.cfgGl = cfgGl self.applyFunc = applyFunc # whether some events are blocked self.block = False self.hdrIndex = -1 if len(self.headers.hdrs) > 0: self.hdrIndex = 0 vsizer = wx.BoxSizer(wx.VERTICAL) hsizer = wx.BoxSizer(wx.HORIZONTAL) hsizer.Add(wx.StaticText(self, -1, "Empty lines after headers:"), 0, wx.ALIGN_CENTER_VERTICAL) self.elinesEntry = wx.SpinCtrl(self, -1) self.elinesEntry.SetRange(0, 5) wx.EVT_SPINCTRL(self, self.elinesEntry.GetId(), self.OnMisc) wx.EVT_KILL_FOCUS(self.elinesEntry, self.OnKillFocus) hsizer.Add(self.elinesEntry, 0, wx.LEFT, 10) vsizer.Add(hsizer) vsizer.Add(wx.StaticLine(self, -1), 0, wx.EXPAND | wx.TOP | wx.BOTTOM, 10) tmp = wx.StaticText(self, -1, "Strings:") vsizer.Add(tmp) self.stringsLb = wx.ListBox(self, -1, size=(200, 100)) vsizer.Add(self.stringsLb, 0, wx.EXPAND) hsizer = wx.BoxSizer(wx.HORIZONTAL) self.addBtn = gutil.createStockButton(self, "Add") hsizer.Add(self.addBtn) wx.EVT_BUTTON(self, self.addBtn.GetId(), self.OnAddString) gutil.btnDblClick(self.addBtn, self.OnAddString) self.delBtn = gutil.createStockButton(self, "Delete") hsizer.Add(self.delBtn, 0, wx.LEFT, 10) wx.EVT_BUTTON(self, self.delBtn.GetId(), self.OnDeleteString) gutil.btnDblClick(self.delBtn, self.OnDeleteString) vsizer.Add(hsizer, 0, wx.TOP, 5) hsizer = wx.BoxSizer(wx.HORIZONTAL) hsizer.Add(wx.StaticText(self, -1, "Text:"), 0, wx.ALIGN_CENTER_VERTICAL) self.textEntry = wx.TextCtrl(self, -1) hsizer.Add(self.textEntry, 1, wx.LEFT, 10) wx.EVT_TEXT(self, self.textEntry.GetId(), self.OnMisc) vsizer.Add(hsizer, 0, wx.EXPAND | wx.TOP, 20) vsizer.Add( wx.StaticText(self, -1, "'${PAGE}' will be replaced by the page number."), 0, wx.ALIGN_CENTER | wx.TOP, 5) hsizerTop = wx.BoxSizer(wx.HORIZONTAL) gsizer = wx.FlexGridSizer(3, 2, 5, 0) gsizer.Add(wx.StaticText(self, -1, "Header line:"), 0, wx.ALIGN_CENTER_VERTICAL) self.lineEntry = wx.SpinCtrl(self, -1) self.lineEntry.SetRange(1, 5) wx.EVT_SPINCTRL(self, self.lineEntry.GetId(), self.OnMisc) wx.EVT_KILL_FOCUS(self.lineEntry, self.OnKillFocus) gsizer.Add(self.lineEntry) gsizer.Add(wx.StaticText(self, -1, "X offset (characters):"), 0, wx.ALIGN_CENTER_VERTICAL | wx.RIGHT, 10) self.xoffEntry = wx.SpinCtrl(self, -1) self.xoffEntry.SetRange(-100, 100) wx.EVT_SPINCTRL(self, self.xoffEntry.GetId(), self.OnMisc) wx.EVT_KILL_FOCUS(self.xoffEntry, self.OnKillFocus) gsizer.Add(self.xoffEntry) gsizer.Add(wx.StaticText(self, -1, "Alignment:"), 0, wx.ALIGN_CENTER_VERTICAL) self.alignCombo = wx.ComboBox(self, -1, style=wx.CB_READONLY) for it in [("Left", util.ALIGN_LEFT), ("Center", util.ALIGN_CENTER), ("Right", util.ALIGN_RIGHT)]: self.alignCombo.Append(it[0], it[1]) gsizer.Add(self.alignCombo) wx.EVT_COMBOBOX(self, self.alignCombo.GetId(), self.OnMisc) hsizerTop.Add(gsizer) bsizer = wx.StaticBoxSizer(wx.StaticBox(self, -1, "Style"), wx.HORIZONTAL) vsizer2 = wx.BoxSizer(wx.VERTICAL) # wxGTK adds way more space by default than wxMSW between the # items, have to adjust for that pad = 0 if misc.isWindows: pad = 5 self.addCheckBox("Bold", self, vsizer2, pad) self.addCheckBox("Italic", self, vsizer2, pad) self.addCheckBox("Underlined", self, vsizer2, pad) bsizer.Add(vsizer2) hsizerTop.Add(bsizer, 0, wx.LEFT, 40) vsizer.Add(hsizerTop, 0, wx.TOP, 20) hsizer = wx.BoxSizer(wx.HORIZONTAL) hsizer.Add((1, 1), 1) previewBtn = gutil.createStockButton(self, "Preview") hsizer.Add(previewBtn) applyBtn = gutil.createStockButton(self, "Apply") hsizer.Add(applyBtn, 0, wx.LEFT, 10) cancelBtn = gutil.createStockButton(self, "Cancel") hsizer.Add(cancelBtn, 0, wx.LEFT, 10) okBtn = gutil.createStockButton(self, "OK") hsizer.Add(okBtn, 0, wx.LEFT, 10) vsizer.Add(hsizer, 0, wx.EXPAND | wx.TOP, 20) util.finishWindow(self, vsizer) wx.EVT_BUTTON(self, previewBtn.GetId(), self.OnPreview) wx.EVT_BUTTON(self, applyBtn.GetId(), self.OnApply) wx.EVT_BUTTON(self, cancelBtn.GetId(), self.OnCancel) wx.EVT_BUTTON(self, okBtn.GetId(), self.OnOK) wx.EVT_LISTBOX(self, self.stringsLb.GetId(), self.OnStringsLb) # list of widgets that are specific to editing the selected string self.widList = [ self.textEntry, self.xoffEntry, self.alignCombo, self.lineEntry, self.boldCb, self.italicCb, self.underlinedCb ] self.updateGui() self.textEntry.SetFocus()
def __init__(self, parent, titles, cfg, cfgGl): wx.Dialog.__init__(self, parent, -1, "Title pages", style = wx.DEFAULT_DIALOG_STYLE) self.titles = titles self.cfg = cfg self.cfgGl = cfgGl # whether some events are blocked self.block = False self.setPage(0) vsizer = wx.BoxSizer(wx.VERTICAL) self.pageLabel = wx.StaticText(self, -1, "") vsizer.Add(self.pageLabel, 0, wx.ADJUST_MINSIZE) hsizer = wx.BoxSizer(wx.HORIZONTAL) tmp = wx.Button(self, -1, "Add") hsizer.Add(tmp) wx.EVT_BUTTON(self, tmp.GetId(), self.OnAddPage) gutil.btnDblClick(tmp, self.OnAddPage) self.delPageBtn = wx.Button(self, -1, "Delete") hsizer.Add(self.delPageBtn, 0, wx.LEFT, 10) wx.EVT_BUTTON(self, self.delPageBtn.GetId(), self.OnDeletePage) gutil.btnDblClick(self.delPageBtn, self.OnDeletePage) self.moveBtn = wx.Button(self, -1, "Move") hsizer.Add(self.moveBtn, 0, wx.LEFT, 10) wx.EVT_BUTTON(self, self.moveBtn.GetId(), self.OnMovePage) gutil.btnDblClick(self.moveBtn, self.OnMovePage) self.nextBtn = wx.Button(self, -1, "Next") hsizer.Add(self.nextBtn, 0, wx.LEFT, 10) wx.EVT_BUTTON(self, self.nextBtn.GetId(), self.OnNextPage) gutil.btnDblClick(self.nextBtn, self.OnNextPage) vsizer.Add(hsizer, 0, wx.TOP, 5) vsizer.Add(wx.StaticLine(self, -1), 0, wx.EXPAND | wx.TOP | wx.BOTTOM, 10) hsizer = wx.BoxSizer(wx.HORIZONTAL) vsizer2 = wx.BoxSizer(wx.VERTICAL) tmp = wx.StaticText(self, -1, "Strings:") vsizer2.Add(tmp) self.stringsLb = wx.ListBox(self, -1, size = (200, 150)) vsizer2.Add(self.stringsLb) hsizer2 = wx.BoxSizer(wx.HORIZONTAL) self.addBtn = gutil.createStockButton(self, "Add") hsizer2.Add(self.addBtn) wx.EVT_BUTTON(self, self.addBtn.GetId(), self.OnAddString) gutil.btnDblClick(self.addBtn, self.OnAddString) self.delBtn = gutil.createStockButton(self, "Delete") hsizer2.Add(self.delBtn, 0, wx.LEFT, 10) wx.EVT_BUTTON(self, self.delBtn.GetId(), self.OnDeleteString) gutil.btnDblClick(self.delBtn, self.OnDeleteString) vsizer2.Add(hsizer2, 0, wx.TOP, 5) hsizer.Add(vsizer2) self.previewCtrl = TitlesPreview(self, self, self.cfg) util.setWH(self.previewCtrl, 150, 150) hsizer.Add(self.previewCtrl, 1, wx.EXPAND | wx.LEFT, 10) vsizer.Add(hsizer, 0, wx.EXPAND) hsizer = wx.BoxSizer(wx.HORIZONTAL) hsizer.Add(wx.StaticText(self, -1, "Text:"), 0, wx.ALIGN_CENTER_VERTICAL) self.textEntry = wx.TextCtrl( self, -1, style = wx.TE_MULTILINE | wx.TE_DONTWRAP, size = (200, 75)) hsizer.Add(self.textEntry, 1, wx.LEFT, 10) wx.EVT_TEXT(self, self.textEntry.GetId(), self.OnMisc) vsizer.Add(hsizer, 0, wx.EXPAND | wx.TOP, 20) # TODO: should use FlexGridSizer, like headersdlg, to get neater # layout hsizerTop = wx.BoxSizer(wx.HORIZONTAL) vsizer2 = wx.BoxSizer(wx.VERTICAL) hsizer = wx.BoxSizer(wx.HORIZONTAL) hsizer.Add(wx.StaticText(self, -1, "X-Pos (mm):"), 0, wx.ALIGN_CENTER_VERTICAL) self.xEntry = wx.TextCtrl(self, -1) hsizer.Add(self.xEntry, 0, wx.LEFT, 10) wx.EVT_TEXT(self, self.xEntry.GetId(), self.OnMisc) vsizer2.Add(hsizer, 0, wx.TOP, 5) hsizer = wx.BoxSizer(wx.HORIZONTAL) hsizer.Add(wx.StaticText(self, -1, "Y-Pos (mm):"), 0, wx.ALIGN_CENTER_VERTICAL) self.yEntry = wx.TextCtrl(self, -1) hsizer.Add(self.yEntry, 0, wx.LEFT, 10) wx.EVT_TEXT(self, self.yEntry.GetId(), self.OnMisc) vsizer2.Add(hsizer, 0, wx.TOP, 5) hsizer = wx.BoxSizer(wx.HORIZONTAL) hsizer.Add(wx.StaticText(self, -1, "Alignment:"), 0, wx.ALIGN_CENTER_VERTICAL) self.alignCombo = wx.ComboBox(self, -1, style = wx.CB_READONLY) for it in [ ("Left", util.ALIGN_LEFT), ("Center", util.ALIGN_CENTER), ("Right", util.ALIGN_RIGHT) ]: self.alignCombo.Append(it[0], it[1]) hsizer.Add(self.alignCombo, 0, wx.LEFT, 10) wx.EVT_COMBOBOX(self, self.alignCombo.GetId(), self.OnMisc) vsizer2.Add(hsizer, 0, wx.TOP, 5) hsizer = wx.BoxSizer(wx.HORIZONTAL) hsizer.Add(wx.StaticText(self, -1, "Font:"), 0, wx.ALIGN_CENTER_VERTICAL) self.fontCombo = wx.ComboBox(self, -1, style = wx.CB_READONLY) for it in [ ("Courier", pml.COURIER), ("Helvetica", pml.HELVETICA), ("Times-Roman", pml.TIMES_ROMAN) ]: self.fontCombo.Append(it[0], it[1]) hsizer.Add(self.fontCombo, 0, wx.LEFT, 10) wx.EVT_COMBOBOX(self, self.fontCombo.GetId(), self.OnMisc) vsizer2.Add(hsizer, 0, wx.TOP, 10) hsizer = wx.BoxSizer(wx.HORIZONTAL) hsizer.Add(wx.StaticText(self, -1, "Size:"), 0, wx.ALIGN_CENTER_VERTICAL) self.sizeEntry = wx.SpinCtrl(self, -1) self.sizeEntry.SetRange(4, 288) wx.EVT_SPINCTRL(self, self.sizeEntry.GetId(), self.OnMisc) wx.EVT_KILL_FOCUS(self.sizeEntry, self.OnKillFocus) hsizer.Add(self.sizeEntry, 0, wx.LEFT, 10) vsizer2.Add(hsizer, 0, wx.TOP, 5) hsizerTop.Add(vsizer2) bsizer = wx.StaticBoxSizer(wx.StaticBox(self, -1, "Style"), wx.HORIZONTAL) vsizer2 = wx.BoxSizer(wx.VERTICAL) # wxGTK adds way more space by default than wxMSW between the # items, have to adjust for that pad = 0 if misc.isWindows: pad = 5 self.addCheckBox("Bold", self, vsizer2, pad) self.addCheckBox("Italic", self, vsizer2, pad) self.addCheckBox("Underlined", self, vsizer2, pad) bsizer.Add(vsizer2) hsizerTop.Add(bsizer, 0, wx.LEFT, 20) vsizer.Add(hsizerTop, 0, wx.TOP, 10) hsizer = wx.BoxSizer(wx.HORIZONTAL) hsizer.Add((1, 1), 1) self.previewBtn = gutil.createStockButton(self, "Preview") hsizer.Add(self.previewBtn) cancelBtn = gutil.createStockButton(self, "Cancel") hsizer.Add(cancelBtn, 0, wx.LEFT, 10) okBtn = gutil.createStockButton(self, "OK") hsizer.Add(okBtn, 0, wx.LEFT, 10) vsizer.Add(hsizer, 0, wx.EXPAND | wx.TOP, 20) util.finishWindow(self, vsizer) wx.EVT_BUTTON(self, self.previewBtn.GetId(), self.OnPreview) wx.EVT_BUTTON(self, cancelBtn.GetId(), self.OnCancel) wx.EVT_BUTTON(self, okBtn.GetId(), self.OnOK) wx.EVT_LISTBOX(self, self.stringsLb.GetId(), self.OnStringsLb) # list of widgets that are specific to editing the selected string self.widList = [ self.textEntry, self.xEntry, self.alignCombo, self.yEntry, self.fontCombo, self.sizeEntry, self.boldCb, self.italicCb, self.underlinedCb ] self.updateGui() self.textEntry.SetFocus()
def __init__(self, parent, ctrl): wx.Dialog.__init__(self, parent, -1, "Find and Replace", style=wx.DEFAULT_DIALOG_STYLE | wx.WANTS_CHARS) self.ctrl = ctrl self.searchLine = -1 self.searchColumn = -1 self.searchWidth = -1 hsizer = wx.BoxSizer(wx.HORIZONTAL) vsizer = wx.BoxSizer(wx.VERTICAL) gsizer = wx.FlexGridSizer(2, 2, 5, 20) gsizer.AddGrowableCol(1) gsizer.Add(wx.StaticText(self, -1, "Text to Find"), 0, wx.ALIGN_CENTER_VERTICAL) self.findEntry = wx.TextCtrl(self, -1, style=wx.TE_PROCESS_ENTER) gsizer.Add(self.findEntry, 0, wx.EXPAND) gsizer.Add(wx.StaticText(self, -1, "Replace With"), 0, wx.ALIGN_CENTER_VERTICAL) self.replaceEntry = wx.TextCtrl(self, -1, style=wx.TE_PROCESS_ENTER) gsizer.Add(self.replaceEntry, 0, wx.EXPAND) vsizer.Add(gsizer, 0, wx.EXPAND | wx.BOTTOM, 5) hsizer2 = wx.BoxSizer(wx.HORIZONTAL) vsizer2 = wx.BoxSizer(wx.VERTICAL) # wxGTK adds way more space by default than wxMSW between the # items, have to adjust for that pad = 0 if misc.isWindows: pad = 5 self.matchWholeCb = wx.CheckBox(self, -1, "Match Whole Word") vsizer2.Add(self.matchWholeCb, 0, wx.TOP, pad) self.matchCaseCb = wx.CheckBox(self, -1, "Match Case") vsizer2.Add(self.matchCaseCb, 0, wx.TOP, pad) hsizer2.Add(vsizer2, 0, wx.EXPAND | wx.RIGHT, 10) self.direction = wx.RadioBox(self, -1, "Direction", choices=["Backward", "Forward"]) self.direction.SetSelection(1) hsizer2.Add(self.direction, 1, 0) vsizer.Add(hsizer2, 0, wx.EXPAND | wx.BOTTOM, 10) self.extraLabel = wx.StaticText(self, -1, "Search In") vsizer.Add(self.extraLabel) self.elements = wx.CheckListBox(self, -1) # sucky wxMSW doesn't support client data for checklistbox items, # so we have to store it ourselves self.elementTypes = [] for t in config.getTIs(): self.elements.Append(t.name) self.elementTypes.append(t.lt) vsizer.Add(self.elements, 1, wx.EXPAND) hsizer.Add(vsizer, 1, wx.EXPAND) vsizer = wx.BoxSizer(wx.VERTICAL) find = wx.Button(self, -1, "&Find") vsizer.Add(find, 0, wx.EXPAND | wx.BOTTOM, 5) replaceAll = wx.Button(self, -1, " Replace All ") vsizer.Add(replaceAll, 0, wx.EXPAND | wx.BOTTOM, 5) replace = wx.Button(self, -1, "&Replace") vsizer.Add(replace, 0, wx.EXPAND | wx.BOTTOM, 5) self.moreButton = wx.Button(self, -1, "") vsizer.Add(self.moreButton, 0, wx.EXPAND | wx.BOTTOM, 5) hsizer.Add(vsizer, 0, wx.EXPAND | wx.LEFT, 30) wx.EVT_BUTTON(self, find.GetId(), self.OnFind) wx.EVT_BUTTON(self, replaceAll.GetId(), self.OnReplaceAll) wx.EVT_BUTTON(self, replace.GetId(), self.OnReplace) wx.EVT_BUTTON(self, self.moreButton.GetId(), self.OnMore) gutil.btnDblClick(find, self.OnFind) gutil.btnDblClick(replace, self.OnReplace) wx.EVT_TEXT(self, self.findEntry.GetId(), self.OnText) wx.EVT_TEXT_ENTER(self, self.findEntry.GetId(), self.OnFind) wx.EVT_TEXT_ENTER(self, self.replaceEntry.GetId(), self.OnFind) wx.EVT_CHAR(self, self.OnCharMisc) wx.EVT_CHAR(self.findEntry, self.OnCharEntry) wx.EVT_CHAR(self.replaceEntry, self.OnCharEntry) wx.EVT_CHAR(find, self.OnCharButton) wx.EVT_CHAR(replaceAll, self.OnCharButton) wx.EVT_CHAR(replace, self.OnCharButton) wx.EVT_CHAR(self.moreButton, self.OnCharButton) wx.EVT_CHAR(self.matchWholeCb, self.OnCharMisc) wx.EVT_CHAR(self.matchCaseCb, self.OnCharMisc) wx.EVT_CHAR(self.direction, self.OnCharMisc) wx.EVT_CHAR(self.elements, self.OnCharMisc) util.finishWindow(self, hsizer, center=False) self.loadState() self.findEntry.SetFocus()
def __init__(self, parent, ctrl): wx.Dialog.__init__(self, parent, -1, "Find & Replace", style=wx.DEFAULT_DIALOG_STYLE | wx.WANTS_CHARS) self.ctrl = ctrl self.searchLine = -1 self.searchColumn = -1 self.searchWidth = -1 hsizer = wx.BoxSizer(wx.HORIZONTAL) vsizer = wx.BoxSizer(wx.VERTICAL) gsizer = wx.FlexGridSizer(2, 2, 5, 20) gsizer.AddGrowableCol(1) gsizer.Add(wx.StaticText(self, -1, "Find what:"), 0, wx.ALIGN_CENTER_VERTICAL) self.findEntry = wx.TextCtrl(self, -1, style=wx.TE_PROCESS_ENTER) gsizer.Add(self.findEntry, 0, wx.EXPAND) gsizer.Add(wx.StaticText(self, -1, "Replace with:"), 0, wx.ALIGN_CENTER_VERTICAL) self.replaceEntry = wx.TextCtrl(self, -1, style=wx.TE_PROCESS_ENTER) gsizer.Add(self.replaceEntry, 0, wx.EXPAND) vsizer.Add(gsizer, 0, wx.EXPAND | wx.BOTTOM, 10) hsizer2 = wx.BoxSizer(wx.HORIZONTAL) vsizer2 = wx.BoxSizer(wx.VERTICAL) # wxGTK adds way more space by default than wxMSW between the # items, have to adjust for that pad = 0 if misc.isWindows: pad = 5 self.matchWholeCb = wx.CheckBox(self, -1, "Match whole word only") vsizer2.Add(self.matchWholeCb, 0, wx.TOP, pad) self.matchCaseCb = wx.CheckBox(self, -1, "Match case") vsizer2.Add(self.matchCaseCb, 0, wx.TOP, pad) hsizer2.Add(vsizer2, 0, wx.EXPAND | wx.RIGHT, 10) self.direction = wx.RadioBox(self, -1, "Direction", choices=["Up", "Down"]) self.direction.SetSelection(1) hsizer2.Add(self.direction, 1, 0) vsizer.Add(hsizer2, 0, wx.EXPAND | wx.BOTTOM, 10) self.extraLabel = wx.StaticText(self, -1, "Search in:") vsizer.Add(self.extraLabel) self.elements = wx.CheckListBox(self, -1) # sucky wxMSW doesn't support client data for checklistbox items, # so we have to store it ourselves self.elementTypes = [] for t in config.getTIs(): self.elements.Append(t.name) self.elementTypes.append(t.lt) vsizer.Add(self.elements, 1, wx.EXPAND) hsizer.Add(vsizer, 1, wx.EXPAND) vsizer = wx.BoxSizer(wx.VERTICAL) find = wx.Button(self, -1, "&Find next") vsizer.Add(find, 0, wx.EXPAND | wx.BOTTOM, 5) replace = wx.Button(self, -1, "&Replace") vsizer.Add(replace, 0, wx.EXPAND | wx.BOTTOM, 5) replaceAll = wx.Button(self, -1, " Replace all ") vsizer.Add(replaceAll, 0, wx.EXPAND | wx.BOTTOM, 5) self.moreButton = wx.Button(self, -1, "") vsizer.Add(self.moreButton, 0, wx.EXPAND | wx.BOTTOM, 5) hsizer.Add(vsizer, 0, wx.EXPAND | wx.LEFT, 30) wx.EVT_BUTTON(self, find.GetId(), self.OnFind) wx.EVT_BUTTON(self, replace.GetId(), self.OnReplace) wx.EVT_BUTTON(self, replaceAll.GetId(), self.OnReplaceAll) wx.EVT_BUTTON(self, self.moreButton.GetId(), self.OnMore) gutil.btnDblClick(find, self.OnFind) gutil.btnDblClick(replace, self.OnReplace) wx.EVT_TEXT(self, self.findEntry.GetId(), self.OnText) wx.EVT_TEXT_ENTER(self, self.findEntry.GetId(), self.OnFind) wx.EVT_TEXT_ENTER(self, self.replaceEntry.GetId(), self.OnFind) wx.EVT_CHAR(self, self.OnCharMisc) wx.EVT_CHAR(self.findEntry, self.OnCharEntry) wx.EVT_CHAR(self.replaceEntry, self.OnCharEntry) wx.EVT_CHAR(find, self.OnCharButton) wx.EVT_CHAR(replace, self.OnCharButton) wx.EVT_CHAR(replaceAll, self.OnCharButton) wx.EVT_CHAR(self.moreButton, self.OnCharButton) wx.EVT_CHAR(self.matchWholeCb, self.OnCharMisc) wx.EVT_CHAR(self.matchCaseCb, self.OnCharMisc) wx.EVT_CHAR(self.direction, self.OnCharMisc) wx.EVT_CHAR(self.elements, self.OnCharMisc) util.finishWindow(self, hsizer, center=False) self.loadState() self.findEntry.SetFocus()
def __init__(self, parent, headers, cfg, cfgGl, applyFunc): wx.Dialog.__init__(self, parent, -1, "Headers", style = wx.DEFAULT_DIALOG_STYLE) self.headers = headers self.cfg = cfg self.cfgGl = cfgGl self.applyFunc = applyFunc # whether some events are blocked self.block = False self.hdrIndex = -1 if len(self.headers.hdrs) > 0: self.hdrIndex = 0 vsizer = wx.BoxSizer(wx.VERTICAL) hsizer = wx.BoxSizer(wx.HORIZONTAL) hsizer.Add(wx.StaticText(self, -1, "Empty lines after headers:"), 0, wx.ALIGN_CENTER_VERTICAL) self.elinesEntry = wx.SpinCtrl(self, -1) self.elinesEntry.SetRange(0, 5) wx.EVT_SPINCTRL(self, self.elinesEntry.GetId(), self.OnMisc) wx.EVT_KILL_FOCUS(self.elinesEntry, self.OnKillFocus) hsizer.Add(self.elinesEntry, 0, wx.LEFT, 10) vsizer.Add(hsizer) vsizer.Add(wx.StaticLine(self, -1), 0, wx.EXPAND | wx.TOP | wx.BOTTOM, 10) tmp = wx.StaticText(self, -1, "Strings:") vsizer.Add(tmp) self.stringsLb = wx.ListBox(self, -1, size = (200, 100)) vsizer.Add(self.stringsLb, 0, wx.EXPAND) hsizer = wx.BoxSizer(wx.HORIZONTAL) self.addBtn = gutil.createStockButton(self, "Add") hsizer.Add(self.addBtn) wx.EVT_BUTTON(self, self.addBtn.GetId(), self.OnAddString) gutil.btnDblClick(self.addBtn, self.OnAddString) self.delBtn = gutil.createStockButton(self, "Delete") hsizer.Add(self.delBtn, 0, wx.LEFT, 10) wx.EVT_BUTTON(self, self.delBtn.GetId(), self.OnDeleteString) gutil.btnDblClick(self.delBtn, self.OnDeleteString) vsizer.Add(hsizer, 0, wx.TOP, 5) hsizer = wx.BoxSizer(wx.HORIZONTAL) hsizer.Add(wx.StaticText(self, -1, "Text:"), 0, wx.ALIGN_CENTER_VERTICAL) self.textEntry = wx.TextCtrl(self, -1) hsizer.Add(self.textEntry, 1, wx.LEFT, 10) wx.EVT_TEXT(self, self.textEntry.GetId(), self.OnMisc) vsizer.Add(hsizer, 0, wx.EXPAND | wx.TOP, 20) vsizer.Add(wx.StaticText(self, -1, "'${PAGE}' will be replaced by the page number."), 0, wx.ALIGN_CENTER | wx.TOP, 5) hsizerTop = wx.BoxSizer(wx.HORIZONTAL) gsizer = wx.FlexGridSizer(3, 2, 5, 0) gsizer.Add(wx.StaticText(self, -1, "Header line:"), 0, wx.ALIGN_CENTER_VERTICAL) self.lineEntry = wx.SpinCtrl(self, -1) self.lineEntry.SetRange(1, 5) wx.EVT_SPINCTRL(self, self.lineEntry.GetId(), self.OnMisc) wx.EVT_KILL_FOCUS(self.lineEntry, self.OnKillFocus) gsizer.Add(self.lineEntry) gsizer.Add(wx.StaticText(self, -1, "X offset (characters):"), 0, wx.ALIGN_CENTER_VERTICAL | wx.RIGHT, 10) self.xoffEntry = wx.SpinCtrl(self, -1) self.xoffEntry.SetRange(-100, 100) wx.EVT_SPINCTRL(self, self.xoffEntry.GetId(), self.OnMisc) wx.EVT_KILL_FOCUS(self.xoffEntry, self.OnKillFocus) gsizer.Add(self.xoffEntry) gsizer.Add(wx.StaticText(self, -1, "Alignment:"), 0, wx.ALIGN_CENTER_VERTICAL) self.alignCombo = wx.ComboBox(self, -1, style = wx.CB_READONLY) for it in [ ("Left", util.ALIGN_LEFT), ("Center", util.ALIGN_CENTER), ("Right", util.ALIGN_RIGHT) ]: self.alignCombo.Append(it[0], it[1]) gsizer.Add(self.alignCombo) wx.EVT_COMBOBOX(self, self.alignCombo.GetId(), self.OnMisc) hsizerTop.Add(gsizer) bsizer = wx.StaticBoxSizer( wx.StaticBox(self, -1, "Style"), wx.HORIZONTAL) vsizer2 = wx.BoxSizer(wx.VERTICAL) # wxGTK adds way more space by default than wxMSW between the # items, have to adjust for that pad = 0 if misc.isWindows: pad = 5 self.addCheckBox("Bold", self, vsizer2, pad) self.addCheckBox("Italic", self, vsizer2, pad) self.addCheckBox("Underlined", self, vsizer2, pad) bsizer.Add(vsizer2) hsizerTop.Add(bsizer, 0, wx.LEFT, 40) vsizer.Add(hsizerTop, 0, wx.TOP, 20) hsizer = wx.BoxSizer(wx.HORIZONTAL) hsizer.Add((1, 1), 1) previewBtn = gutil.createStockButton(self, "Preview") hsizer.Add(previewBtn) applyBtn = gutil.createStockButton(self, "Apply") hsizer.Add(applyBtn, 0, wx.LEFT, 10) cancelBtn = gutil.createStockButton(self, "Cancel") hsizer.Add(cancelBtn, 0, wx.LEFT, 10) okBtn = gutil.createStockButton(self, "OK") hsizer.Add(okBtn, 0, wx.LEFT, 10) vsizer.Add(hsizer, 0, wx.EXPAND | wx.TOP, 20) util.finishWindow(self, vsizer) wx.EVT_BUTTON(self, previewBtn.GetId(), self.OnPreview) wx.EVT_BUTTON(self, applyBtn.GetId(), self.OnApply) wx.EVT_BUTTON(self, cancelBtn.GetId(), self.OnCancel) wx.EVT_BUTTON(self, okBtn.GetId(), self.OnOK) wx.EVT_LISTBOX(self, self.stringsLb.GetId(), self.OnStringsLb) # list of widgets that are specific to editing the selected string self.widList = [ self.textEntry, self.xoffEntry, self.alignCombo, self.lineEntry, self.boldCb, self.italicCb, self.underlinedCb ] self.updateGui() self.textEntry.SetFocus()