📄 ide.py
字号:
#----------------------------------------------------------------------------# Name: IDE.py# Purpose: IDE using Python extensions to the wxWindows docview framework## Author: Peter Yared## Created: 5/15/03# Copyright: (c) 2003-2005 ActiveGrid, Inc.# CVS-ID: $Id: IDE.py,v 1.8 2006/04/20 06:25:59 RD Exp $# License: wxWindows License#----------------------------------------------------------------------------import wximport wx.lib.docviewimport wx.lib.pydocviewimport sysimport wx.gridimport os.pathimport activegrid.util.sysutils as sysutilslibimport activegrid.util.appdirs as appdirsimport shutil# Required for Unicode support with python# site.py sets this, but Windows builds don't have site.py because of py2exe problems# If site.py has already run, then the setdefaultencoding function will have been deleted.if hasattr(sys,"setdefaultencoding"): sys.setdefaultencoding("utf-8")_ = wx.GetTranslationACTIVEGRID_BASE_IDE = False USE_OLD_PROJECTS = False#----------------------------------------------------------------------------# Helper functions for command line args#----------------------------------------------------------------------------# Since Windows accept command line options with '/', but this character# is used to denote absolute path names on other platforms, we need to# conditionally handle '/' style arguments on Windows only.def printArg(argname): output = "'-" + argname + "'" if wx.Platform == "__WXMSW__": output = output + " or '/" + argname + "'" return output def isInArgs(argname, argv): result = False if ("-" + argname) in argv: result = True if wx.Platform == "__WXMSW__" and ("/" + argname) in argv: result = True return result# The default log action in wx is to prompt with a big message box# which is often inappropriate (for example, if the clipboard data# is not readable on Mac, we'll get one of these messages repeatedly)# so just log the errors instead.# NOTE: This does NOT supress fatal system errors. Only non-fatal ones.class AppLog(wx.PyLog): def __init__(self): wx.PyLog.__init__(self) self.items = [] def DoLogString(self, message, timeStamp): self.items.append(str(timeStamp) + u" " + message.decode())#----------------------------------------------------------------------------# Classes#----------------------------------------------------------------------------class IDEApplication(wx.lib.pydocview.DocApp): def __init__(self, redirect=False): wx.lib.pydocview.DocApp.__init__(self, redirect=redirect) def OnInit(self): global ACTIVEGRID_BASE_IDE global USE_OLD_PROJECTS args = sys.argv # Suppress non-fatal errors that might prompt the user even in cases # when the error does not impact them. wx.Log_SetActiveTarget(AppLog()) if "-h" in args or "-help" in args or "--help" in args\ or (wx.Platform == "__WXMSW__" and "/help" in args): print "Usage: ActiveGridAppBuilder.py [options] [filenames]\n" # Mac doesn't really support multiple instances for GUI apps # and since we haven't got time to test this thoroughly I'm # disabling it for now. if wx.Platform != "__WXMAC__": print " option " + printArg("multiple") + " to allow multiple instances of application." print " option " + printArg("debug") + " for debug mode." print " option '-h' or " + printArg("help") + " to show usage information for command." print " option " + printArg("baseide") + " for base IDE mode." print " [filenames] is an optional list of files you want to open when application starts." return False elif isInArgs("dev", args): self.SetAppName(_("ActiveGrid Application Builder Dev")) self.SetDebug(False) elif isInArgs("debug", args): self.SetAppName(_("ActiveGrid Application Builder Debug")) self.SetDebug(True) self.SetSingleInstance(False) elif isInArgs("baseide", args): self.SetAppName(_("ActiveGrid IDE")) ACTIVEGRID_BASE_IDE = True elif isInArgs("tools", args): USE_OLD_PROJECTS = True else: self.SetAppName(_("ActiveGrid Application Builder")) self.SetDebug(False) if isInArgs("multiple", args) and wx.Platform != "__WXMAC__": self.SetSingleInstance(False) if not ACTIVEGRID_BASE_IDE: import CmdlineOptions if isInArgs(CmdlineOptions.DEPLOY_TO_SERVE_PATH_ARG, args): CmdlineOptions.enableDeployToServePath() if not wx.lib.pydocview.DocApp.OnInit(self): return False if not ACTIVEGRID_BASE_IDE: self.ShowSplash(getSplashBitmap()) else: self.ShowSplash(getIDESplashBitmap()) import STCTextEditor import FindInDirService import MarkerService import project as projectlib import ProjectEditor import PythonEditor import OutlineService import XmlEditor import HtmlEditor import TabbedView import MessageService import Service import ImageEditor import PerlEditor import PHPEditor import wx.lib.ogl as ogl import DebuggerService import AboutDialog import SVNService import ExtensionService## import UpdateLogIniService if not ACTIVEGRID_BASE_IDE: import activegrid.model.basedocmgr as basedocmgr import UpdateService import DataModelEditor import ProcessModelEditor import DeploymentService import WebServerService import WelcomeService import XFormEditor import PropertyService import WSDLEditor import WsdlAgEditor import XPathEditor import XPathExprEditor import ImportServiceWizard import RoleEditor import HelpService import WebBrowserService import SQLEditor _EDIT_LAYOUTS = True if not ACTIVEGRID_BASE_IDE: import BPELEditor if _EDIT_LAYOUTS: import LayoutEditor import SkinEditor # This creates some pens and brushes that the OGL library uses. # It should be called after the app object has been created, but # before OGL is used. ogl.OGLInitialize() config = wx.Config(self.GetAppName(), style = wx.CONFIG_USE_LOCAL_FILE) if not config.Exists("MDIFrameMaximized"): # Make the initial MDI frame maximize as default config.WriteInt("MDIFrameMaximized", True) if not config.Exists("MDIEmbedRightVisible"): # Make the properties embedded window hidden as default config.WriteInt("MDIEmbedRightVisible", False) docManager = IDEDocManager(flags = self.GetDefaultDocManagerFlags()) self.SetDocumentManager(docManager) # Note: These templates must be initialized in display order for the "Files of type" dropdown for the "File | Open..." dialog defaultTemplate = wx.lib.docview.DocTemplate(docManager, _("Any"), "*.*", _("Any"), _(".txt"), _("Text Document"), _("Text View"), STCTextEditor.TextDocument, STCTextEditor.TextView, wx.lib.docview.TEMPLATE_INVISIBLE, icon = STCTextEditor.getTextIcon()) docManager.AssociateTemplate(defaultTemplate) if not ACTIVEGRID_BASE_IDE: dplTemplate = DeploymentService.DeploymentTemplate(docManager, _("Deployment"), "*.dpl", _("Deployment"), _(".dpl"), _("Deployment Document"), _("Deployment View"), XmlEditor.XmlDocument, XmlEditor.XmlView, wx.lib.docview.TEMPLATE_INVISIBLE, icon = DeploymentService.getDPLIcon()) docManager.AssociateTemplate(dplTemplate) htmlTemplate = wx.lib.docview.DocTemplate(docManager, _("HTML"), "*.html;*.htm", _("HTML"),
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -