def __init__(self, notebook): lvClass=xmlres.getControlClass("whListView") if not lvClass: raise Exception("Some XMLRES problem: whListView not found") self.control=lvClass(notebook, "property") # !!! Module auswerten self.control.Bind(wx.EVT_LIST_COL_END_DRAG, self.OnListColResize) self.panelName=None self.SetOwner(notebook)
def _setattr(self, name, value): if isinstance(name, wx.Window): ctl = name else: ctl = self.ctl(name) if ctl: if ctl.validator: return ctl.validator.SetValue(value) elif isinstance(ctl, xmlres.getControlClass("whComboBox")): if value == None: pass else: ctl.SetKeySelection(value) elif isinstance(ctl, wx.ComboBox): if value == None: ctl.SetSelection(wx.NOT_FOUND) else: ctl.SetStringSelection(value) if ctl.GetValue() != value: ctl.SetValue(value) elif isinstance(ctl, wx.StaticText): if value == None: ctl.SetLabel("") else: ctl.SetLabel(unicode(value)) elif isinstance(ctl, wx.RadioBox): if value != None: ctl.SetSelection(value) else: if value == None: return ctl.SetValue("") return ctl.SetValue(value) else: try: return object.__setattr__(self, name, value) except AttributeError as _e: if not name.startswith('_'): raise AttributeError("%s has no attribute '%s'" % (str(self.__class__), name)) return None
def _setattr(self, name, value): if isinstance(name, wx.Window): ctl=name else: ctl=self.ctl(name) if ctl: if ctl.validator: return ctl.validator.SetValue(value) elif isinstance(ctl, xmlres.getControlClass("whComboBox")): if value == None: pass else: ctl.SetKeySelection(value) elif isinstance(ctl, wx.ComboBox): if value == None: ctl.SetSelection(wx.NOT_FOUND) else: ctl.SetStringSelection(value) if ctl.GetValue() != value: ctl.SetValue(value) elif isinstance(ctl, wx.StaticText): if value == None: ctl.SetLabel("") else: ctl.SetLabel(unicode(value)) elif isinstance(ctl, wx.RadioBox): if value != None: ctl.SetSelection(value) else: if value == None: return ctl.SetValue("") return ctl.SetValue(value) else: try: return object.__setattr__(self, name, value) except AttributeError as _e: if not name.startswith('_'): raise AttributeError("%s has no attribute '%s'" % (str(self.__class__), name)) return None
def _getattr(self, name): if isinstance(name, wx.Window): ctl=name else: ctl=self.ctl(name) if ctl: if ctl.validator: return ctl.validator.GetValue() elif isinstance(ctl, xmlres.getControlClass("whComboBox")): return ctl.GetKeySelection() elif isinstance(ctl, wx.StaticText): return ctl.GetLabel() elif isinstance(ctl, wx.RadioBox): return ctl.GetSelection() else: return ctl.GetValue() else: try: return object.__getattr__(self, name) except AttributeError as _e: if not name.startswith('_'): raise AttributeError("%s has no attribute '%s'" % (str(self.__class__), name)) return None
def _getattr(self, name): if isinstance(name, wx.Window): ctl = name else: ctl = self.ctl(name) if ctl: if ctl.validator: return ctl.validator.GetValue() elif isinstance(ctl, xmlres.getControlClass("whComboBox")): return ctl.GetKeySelection() elif isinstance(ctl, wx.StaticText): return ctl.GetLabel() elif isinstance(ctl, wx.RadioBox): return ctl.GetSelection() else: return ctl.GetValue() else: try: return object.__getattr__(self, name) except AttributeError as _e: if not name.startswith('_'): raise AttributeError("%s has no attribute '%s'" % (str(self.__class__), name)) return None
def __init__(self, parentWin, node, params={}): SqlFrame.__init__(self, parentWin, xlt("Query Tool"), "SqlQuery") self.server=node.GetServer() self.application="%s Query Tool" % adm.appTitle snippet_table=self.server.info.get('snippet_table') if self.server.adminspace and snippet_table: self.snippet_table="%s.%s" % (quoteIdent(self.server.adminspace), quoteIdent(snippet_table)) else: self.snippet_table=None dbName=params.get('dbname') if not dbName: if hasattr(node, "GetDatabase"): dbName=node.GetDatabase().name else: dbName=self.server.maintDb self.worker=None self.sqlChanged=False self.previousCols=[] self.fileManager=FileManager(self, adm.config) toolbar=self.toolbar toolbar.Add(self.OnFileOpen, xlt("Load from file"),"file_open") toolbar.Add(self.OnFileSave, xlt("Save to file"), "file_save") toolbar.Add(self.OnToggleSnippets, xlt("Show snippets browser"), "snippets") toolbar.AddSeparator() toolbar.Add(self.OnCopy, xlt("Copy"), "clip_copy") toolbar.Add(self.OnCut, xlt("Cut"), "clip_cut") toolbar.Add(self.OnPaste, xlt("Paste"), "clip_paste") toolbar.Add(self.OnClear, xlt("Clear"), "edit_clear") toolbar.AddSeparator() toolbar.Add(self.OnUndo, xlt("Undo"), "edit_undo") toolbar.Add(self.OnRedo, xlt("Redo"), "edit_redo") # toolbar.Add((self.OnFind, xlt("Find"), "edit_find") toolbar.AddSeparator() cbClass=xmlres.getControlClass("whComboBox") allDbs=self.server.GetConnectableDbs() size=max(map(lambda db: toolbar.GetTextExtent(db)[0], allDbs)) BUTTONOFFS=30 self.databases=cbClass(toolbar, size=(size+BUTTONOFFS, -1)) self.databases.Append(allDbs) self.databases.Append(xlt("Connect...")) self.databases.SetStringSelection(dbName) self.OnChangeDatabase() self.databases.Bind(wx.EVT_COMBOBOX, self.OnChangeDatabase) toolbar.Add(self.OnExecuteQuery, xlt("Execute Query"), "query_execute") toolbar.Add(self.OnExplainQuery, xlt("Explain Query"), "query_explain") toolbar.Add(self.OnCancelQuery, xlt("Execute Query"), "query_cancel") toolbar.AddControl(self.databases) toolbar.AddSeparator() toolbar.Add(self.OnAddSnippet, xlt("Add snippet"), "snippet_add") toolbar.Add(self.OnReplaceSnippet, xlt("Replace snippet"), "snippet_replace") toolbar.Realize() menubar=wx.MenuBar() self.filemenu=menu=Menu(self) menu.Add(self.OnFileOpen, xlt("&Open"), xlt("Open query file")) menu.AppendMenu(-1, xlt("Open recent..."), self.fileManager.GetRecentFilesMenu()) menu.Add(self.OnFileInsert, xlt("&Insert"), xlt("Insert query file")) menu.Add(self.OnFileSave, xlt("&Save"), xlt("Save current file")) menu.Add(self.OnFileSaveAs, xlt("Save &as.."), xlt("Save file under new name")) menu.AppendSeparator() # menu.Add(xlt("Preferences"), xlt("Preferences"), self.OnPreferences) menu.Add(self.OnClose, xlt("Quit SQL"), xlt("Quit Sql")) menubar.Append(menu, xlt("&File")) self.viewmenu=menu=Menu(self) menu.AddCheck(self.OnToggleSnippets, xlt("Snippets"), xlt("Show or hide snippet browser")) self.registerToggles(True, True) menubar.Append(self.viewmenu, xlt("&View")) self.editmenu=menu=Menu(self) menu.Add(self.OnUndo, xlt("&Undo"), xlt("Undo last action")) menu.Add(self.OnRedo, xlt("&Redo"), xlt("Redo last action")) # menu.Add(xlt("&Find"), xlt("Find string"), self.OnFind) menu.AppendSeparator() menu.Add(self.OnCut, xlt("Cu&t"), xlt("Cut selected text to clipboard")) menu.Add(self.OnCopy, xlt("&Copy"), xlt("Copy selected text to clipboard")) menu.Add(self.OnPaste, xlt("&Paste"), xlt("Paste text from clipboard")) menu.Add(self.OnClear, xlt("C&lear"), xlt("Clear editor")) menu.AppendSeparator() menu.Add(self.OnAddSnippet, xlt("Add snippet"), xlt("Add selected text to snippets")) menu.Add(self.OnReplaceSnippet, xlt("Modify snippet"), xlt("Replace snippet with selected text")) menubar.Append(menu, xlt("&Edit")) self.querymenu=menu=Menu(self) menu.Add(self.OnExecuteQuery, xlt("Execute"), xlt("Execute query")) menu.Add(self.OnExplainQuery, xlt("Explain"), xlt("Explain query")) menu.Add(self.OnCancelQuery, xlt("Cancel"), xlt("Cancel query execution")) menubar.Append(menu, xlt("&Query")) self.helpmenu=menu=Menu(self) menu.Add(self.OnHelp, xlt("Help"), xlt("Show help"), wx.ID_HELP) menubar.Append(menu, xlt("&Help")) self.EnableMenu(self.querymenu, self.OnCancelQuery, False) self.SetMenuBar(menubar) ah=AcceleratorHelper(self) ah.Add(wx.ACCEL_CTRL, 'X', self.OnCut) ah.Add(wx.ACCEL_CTRL, 'C', self.OnCopy) ah.Add(wx.ACCEL_CTRL, 'V', self.OnPaste) ah.Add(wx.ACCEL_NORMAL,wx.WXK_F5, self.OnExecuteQuery) ah.Add(wx.ACCEL_NORMAL,wx.WXK_F7, self.OnExplainQuery) ah.Add(wx.ACCEL_ALT,wx.WXK_PAUSE, self.OnCancelQuery) ah.Realize() self.editor=SqlEditor(self) self.editor.SetAcceleratorTable(ah.GetTable()) self.editor.BindProcs(self.OnChangeStc, self.OnStatusPos) self.manager.AddPane(self.editor, wx.aui.AuiPaneInfo().Top().PaneBorder().Resizable().MinSize((200,100)).BestSize((400,200)).CloseButton(False) \ .Name("sqlQuery").Caption(xlt("SQL Query"))) self.snippets=SnippetTree(self, self.server, self.editor) self.manager.AddPane(self.snippets, wx.aui.AuiPaneInfo().Left().Top().PaneBorder().Resizable().MinSize((100,100)).BestSize((100,100)).CloseButton(True) \ .Name("snippets").Caption(xlt("SQL Snippets"))) if not self.snippet_table: self.manager.GetPane("snippets").Show(False) self.output=wx.Notebook(self) self.result=SqlResultGrid(self.output) self.explain = ExplainCanvas(self.output) self.explain.Hide() font=self.editor.GetFont() self.messages=wx.TextCtrl(self.output, style=wx.TE_MULTILINE|wx.TE_READONLY|wx.TE_DONTWRAP) self.msgHistory=wx.TextCtrl(self.output, style=wx.TE_MULTILINE|wx.TE_READONLY|wx.TE_DONTWRAP) self.messages.SetFont(font) self.msgHistory.SetFont(font) self.output.AddPage(self.result, xlt("Output")) self.output.AddPage(self.messages, xlt("Messages")) self.output.AddPage(self.msgHistory, xlt("History")) self.manager.AddPane(self.output, wx.aui.AuiPaneInfo().Center().MinSize((200,100)).BestSize((400,200)).CloseButton(False) \ .Name("Result").Caption(xlt("Result")).CaptionVisible(False)) self.manager.Bind(wx.aui.EVT_AUI_PANE_CLOSE, self.OnAuiCloseEvent) self.SetStatus(xlt("ready")) self.restorePerspective() self.viewmenu.Check(self.OnToggleSnippets, self.manager.GetPane("snippets").IsShown()) self.OnToggleToolBar() self.OnToggleStatusBar() self.updateMenu() query=params.get('query') if query: self.editor.SetText(query) pos=params.get('errline', -1) if pos: line=self.editor.LineFromPosition(int(pos)) self.editor.MarkerSet(line) msg=params.get('message') if msg: self.messages.AppendText(msg) hint=params.get('hint') if hint: self.messages.AppendText("\n\nHINT:\n") self.messages.AppendText(hint) self.output.SetSelection(1) self.Show() self.editor.SetFocus()
def __init__(self, parentWin, node, params={}): SqlFrame.__init__(self, parentWin, xlt("Query Tool"), "SqlQuery") self.server=node.GetServer() self.application="%s Query Tool" % adm.appTitle snippet_table=self.server.info.get('snippet_table') if self.server.adminspace and snippet_table: self.snippet_table="%s.%s" % (quoteIdent(self.server.adminspace), quoteIdent(snippet_table)) else: self.snippet_table=None dbName=params.get('dbname') if not dbName: if hasattr(node, "GetDatabase"): dbName=node.GetDatabase().name else: dbName=self.server.maintDb self.worker=None self.sqlChanged=False self.previousCols=[] self.fileManager=FileManager(self, adm.config) toolbar=self.toolbar toolbar.Add(self.OnFileOpen, xlt("Load from file"),"file_open") toolbar.Add(self.OnFileSave, xlt("Save to file"), "file_save") toolbar.Add(self.OnToggleSnippets, xlt("Show snippets browser"), "snippets") toolbar.AddSeparator() toolbar.Add(self.OnCopy, xlt("Copy"), "clip_copy") toolbar.Add(self.OnCut, xlt("Cut"), "clip_cut") toolbar.Add(self.OnPaste, xlt("Paste"), "clip_paste") toolbar.Add(self.OnClear, xlt("Clear"), "edit_clear") toolbar.AddSeparator() toolbar.Add(self.OnUndo, xlt("Undo"), "edit_undo") toolbar.Add(self.OnRedo, xlt("Redo"), "edit_redo") # toolbar.Add((self.OnFind, xlt("Find"), "edit_find") toolbar.AddSeparator() cbClass=xmlres.getControlClass("whComboBox") allDbs=self.server.GetConnectableDbs() size=max(map(lambda db: toolbar.GetTextExtent(db)[0], allDbs)) BUTTONOFFS=30 self.databases=cbClass(toolbar, size=(size+BUTTONOFFS, -1)) self.databases.Append(allDbs) self.databases.Append(xlt("Connect...")) self.databases.SetStringSelection(dbName) self.OnChangeDatabase() self.databases.Bind(wx.EVT_COMBOBOX, self.OnChangeDatabase) toolbar.Add(self.OnExecuteQuery, xlt("Execute Query"), "query_execute") toolbar.Add(self.OnExplainQuery, xlt("Explain Query"), "query_explain") toolbar.Add(self.OnCancelQuery, xlt("Execute Query"), "query_cancel") toolbar.AddControl(self.databases) toolbar.AddSeparator() toolbar.Add(self.OnAddSnippet, xlt("Add snippet"), "snippet_add") toolbar.Add(self.OnReplaceSnippet, xlt("Replace snippet"), "snippet_replace") toolbar.Realize() menubar=wx.MenuBar() self.filemenu=menu=Menu(self) menu.Add(self.OnFileOpen, xlt("&Open"), xlt("Open query file")) menu.AppendMenu(-1, xlt("Open recent..."), self.fileManager.GetRecentFilesMenu()) menu.Add(self.OnFileInsert, xlt("&Insert"), xlt("Insert query file")) menu.Add(self.OnFileSave, xlt("&Save"), xlt("Save current file")) menu.Add(self.OnFileSaveAs, xlt("Save &as.."), xlt("Save file under new name")) menu.AppendSeparator() # menu.Add(xlt("Preferences"), xlt("Preferences"), self.OnPreferences) menu.Add(self.OnClose, xlt("Quit SQL"), xlt("Quit Sql")) menubar.Append(menu, xlt("&File")) self.viewmenu=menu=Menu(self) menu.AddCheck(self.OnToggleSnippets, xlt("Snippets"), xlt("Show or hide snippet browser")) self.registerToggles(True, True) menubar.Append(self.viewmenu, xlt("&View")) self.editmenu=menu=Menu(self) menu.Add(self.OnUndo, xlt("&Undo"), xlt("Undo last action")) menu.Add(self.OnRedo, xlt("&Redo"), xlt("Redo last action")) # menu.Add(xlt("&Find"), xlt("Find string"), self.OnFind) menu.AppendSeparator() menu.Add(self.OnCut, xlt("Cu&t"), xlt("Cut selected text to clipboard")) menu.Add(self.OnCopy, xlt("&Copy"), xlt("Copy selected text to clipboard")) menu.Add(self.OnPaste, xlt("&Paste"), xlt("Paste text from clipboard")) menu.Add(self.OnClear, xlt("C&lear"), xlt("Clear editor")) menu.AppendSeparator() menu.Add(self.OnAddSnippet, xlt("Add snippet"), xlt("Add selected text to snippets")) menu.Add(self.OnReplaceSnippet, xlt("Modify snippet"), xlt("Replace snippet with selected text")) menubar.Append(menu, xlt("&Edit")) self.querymenu=menu=Menu(self) menu.Add(self.OnExecuteQuery, xlt("Execute"), xlt("Execute query")) menu.Add(self.OnExplainQuery, xlt("Explain"), xlt("Explain query")) menu.Add(self.OnCancelQuery, xlt("Cancel"), xlt("Cancel query execution")) menubar.Append(menu, xlt("&Query")) self.helpmenu=menu=Menu(self) menu.Add(self.OnHelp, xlt("Help"), xlt("Show help"), wx.ID_HELP) menubar.Append(menu, xlt("&Help")) self.EnableMenu(self.querymenu, self.OnCancelQuery, False) self.SetMenuBar(menubar) ah=AcceleratorHelper(self) ah.Add(wx.ACCEL_CTRL, 'X', self.OnCut) ah.Add(wx.ACCEL_CTRL, 'C', self.OnCopy) ah.Add(wx.ACCEL_CTRL, 'V', self.OnPaste) ah.Add(wx.ACCEL_NORMAL,wx.WXK_F5, self.OnExecuteQuery) ah.Add(wx.ACCEL_NORMAL,wx.WXK_F7, self.OnExplainQuery) ah.Add(wx.ACCEL_ALT,wx.WXK_PAUSE, self.OnCancelQuery) ah.Realize() self.editor=SqlEditor(self) self.editor.SetAcceleratorTable(ah.GetTable()) self.editor.BindProcs(self.OnChangeStc, self.OnStatusPos) self.manager.AddPane(self.editor, wx.aui.AuiPaneInfo().Top().PaneBorder().Resizable().MinSize((200,100)).BestSize((400,200)).CloseButton(False) \ .Name("sqlQuery").Caption(xlt("SQL Query"))) self.snippets=SnippetTree(self, self.server, self.editor) self.manager.AddPane(self.snippets, wx.aui.AuiPaneInfo().Left().Top().PaneBorder().Resizable().MinSize((100,100)).BestSize((100,100)).CloseButton(True) \ .Name("snippets").Caption(xlt("SQL Snippets"))) if not self.snippet_table: self.manager.GetPane("snippets").Show(False) self.output=wx.Notebook(self) self.result=SqlResultGrid(self.output) self.explain = ExplainCanvas(self.output) self.explain.Hide() font=self.editor.GetFont() self.messages=wx.TextCtrl(self.output, style=wx.TE_MULTILINE|wx.TE_READONLY|wx.TE_DONTWRAP) self.msgHistory=wx.TextCtrl(self.output, style=wx.TE_MULTILINE|wx.TE_READONLY|wx.TE_DONTWRAP) self.messages.SetFont(font) self.msgHistory.SetFont(font) self.output.AddPage(self.result, xlt("Output")) self.output.AddPage(self.messages, xlt("Messages")) self.output.AddPage(self.msgHistory, xlt("History")) self.manager.AddPane(self.output, wx.aui.AuiPaneInfo().Center().MinSize((200,100)).BestSize((400,200)).CloseButton(False) \ .Name("Result").Caption(xlt("Result")).CaptionVisible(False)) self.manager.Bind(wx.aui.EVT_AUI_PANE_CLOSE, self.OnAuiCloseEvent) self.SetStatus(xlt("ready")) self.restorePerspective() self.manager.GetPane("Result").Show() self.manager.Update() self.viewmenu.Check(self.OnToggleSnippets, self.manager.GetPane("snippets").IsShown()) self.OnToggleToolBar() self.OnToggleStatusBar() self.updateMenu() query=params.get('query') if query: self.editor.SetText(query) pos=params.get('errline', -1) if pos: line=self.editor.LineFromPosition(int(pos)) self.editor.MarkerSet(line) msg=params.get('message') if msg: self.messages.AppendText(msg) hint=params.get('hint') if hint: self.messages.AppendText("\n\nHINT:\n") self.messages.AppendText(hint) self.output.SetSelection(1) self.Show() self.editor.SetFocus()