|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583 |
- # Classes which describe interfaces.
-
- import pythoncom
- import win32com.server.connect
- import winerror
- from win32com.axdebug import axdebug
- from win32com.axdebug.util import RaiseNotImpl, _wrap
- from win32com.server.exception import Exception
- from win32com.server.util import ListEnumeratorGateway
-
-
- class EnumDebugCodeContexts(ListEnumeratorGateway):
- """A class to expose a Python sequence as an EnumDebugCodeContexts
-
- Create an instance of this class passing a sequence (list, tuple, or
- any sequence protocol supporting object) and it will automatically
- support the EnumDebugCodeContexts interface for the object.
-
- """
-
- _com_interfaces_ = [axdebug.IID_IEnumDebugCodeContexts]
-
-
- class EnumDebugStackFrames(ListEnumeratorGateway):
- """A class to expose a Python sequence as an EnumDebugStackFrames
-
- Create an instance of this class passing a sequence (list, tuple, or
- any sequence protocol supporting object) and it will automatically
- support the EnumDebugStackFrames interface for the object.
-
- """
-
- _com_interfaces_ = [axdebug.IID_IEnumDebugStackFrames]
-
-
- class EnumDebugApplicationNodes(ListEnumeratorGateway):
- """A class to expose a Python sequence as an EnumDebugStackFrames
-
- Create an instance of this class passing a sequence (list, tuple, or
- any sequence protocol supporting object) and it will automatically
- support the EnumDebugApplicationNodes interface for the object.
-
- """
-
- _com_interfaces_ = [axdebug.IID_IEnumDebugApplicationNodes]
-
-
- class EnumRemoteDebugApplications(ListEnumeratorGateway):
- _com_interfaces_ = [axdebug.IID_IEnumRemoteDebugApplications]
-
-
- class EnumRemoteDebugApplicationThreads(ListEnumeratorGateway):
- _com_interfaces_ = [axdebug.IID_IEnumRemoteDebugApplicationThreads]
-
-
- class DebugDocumentInfo:
- _public_methods_ = ["GetName", "GetDocumentClassId"]
- _com_interfaces_ = [axdebug.IID_IDebugDocumentInfo]
-
- def __init__(self):
- pass
-
- def GetName(self, dnt):
- """Get the one of the name of the document
- dnt -- int DOCUMENTNAMETYPE
- """
- RaiseNotImpl("GetName")
-
- def GetDocumentClassId(self):
- """
- Result must be an IID object (or string representing one).
- """
- RaiseNotImpl("GetDocumentClassId")
-
-
- class DebugDocumentProvider(DebugDocumentInfo):
- _public_methods_ = DebugDocumentInfo._public_methods_ + ["GetDocument"]
- _com_interfaces_ = DebugDocumentInfo._com_interfaces_ + [
- axdebug.IID_IDebugDocumentProvider
- ]
-
- def GetDocument(self):
- RaiseNotImpl("GetDocument")
-
-
- class DebugApplicationNode(DebugDocumentProvider):
- """Provides the functionality of IDebugDocumentProvider, plus a context within a project tree."""
-
- _public_methods_ = (
- """EnumChildren GetParent SetDocumentProvider
- Close Attach Detach""".split()
- + DebugDocumentProvider._public_methods_
- )
- _com_interfaces_ = [
- axdebug.IID_IDebugDocumentProvider
- ] + DebugDocumentProvider._com_interfaces_
-
- def __init__(self):
- DebugDocumentProvider.__init__(self)
-
- def EnumChildren(self):
- # Result is type PyIEnumDebugApplicationNodes
- RaiseNotImpl("EnumChildren")
-
- def GetParent(self):
- # result is type PyIDebugApplicationNode
- RaiseNotImpl("GetParent")
-
- def SetDocumentProvider(self, pddp): # PyIDebugDocumentProvider pddp
- # void result.
- RaiseNotImpl("SetDocumentProvider")
-
- def Close(self):
- # void result.
- RaiseNotImpl("Close")
-
- def Attach(self, parent): # PyIDebugApplicationNode
- # void result.
- RaiseNotImpl("Attach")
-
- def Detach(self):
- # void result.
- RaiseNotImpl("Detach")
-
-
- class DebugApplicationNodeEvents:
- """Event interface for DebugApplicationNode object."""
-
- _public_methods_ = "onAddChild onRemoveChild onDetach".split()
- _com_interfaces_ = [axdebug.IID_IDebugApplicationNodeEvents]
-
- def __init__(self):
- pass
-
- def onAddChild(self, child): # PyIDebugApplicationNode
- # void result.
- RaiseNotImpl("onAddChild")
-
- def onRemoveChild(self, child): # PyIDebugApplicationNode
- # void result.
- RaiseNotImpl("onRemoveChild")
-
- def onDetach(self):
- # void result.
- RaiseNotImpl("onDetach")
-
- def onAttach(self, parent): # PyIDebugApplicationNode
- # void result.
- RaiseNotImpl("onAttach")
-
-
- class DebugDocument(DebugDocumentInfo):
- """The base interface to all debug documents."""
-
- _public_methods_ = DebugDocumentInfo._public_methods_
- _com_interfaces_ = [axdebug.IID_IDebugDocument] + DebugDocumentInfo._com_interfaces_
-
-
- class DebugDocumentText(DebugDocument):
- """The interface to a text only debug document."""
-
- _com_interfaces_ = [axdebug.IID_IDebugDocumentText] + DebugDocument._com_interfaces_
- _public_methods_ = [
- "GetDocumentAttributes",
- "GetSize",
- "GetPositionOfLine",
- "GetLineOfPosition",
- "GetText",
- "GetPositionOfContext",
- "GetContextOfPosition",
- ] + DebugDocument._public_methods_
-
- def __init__(self):
- pass
-
- # IDebugDocumentText
- def GetDocumentAttributes(self):
- # Result is int (TEXT_DOC_ATTR)
- RaiseNotImpl("GetDocumentAttributes")
-
- def GetSize(self):
- # Result is (numLines, numChars)
- RaiseNotImpl("GetSize")
-
- def GetPositionOfLine(self, cLineNumber):
- # Result is int char position
- RaiseNotImpl("GetPositionOfLine")
-
- def GetLineOfPosition(self, charPos):
- # Result is int, int (lineNo, offset)
- RaiseNotImpl("GetLineOfPosition")
-
- def GetText(self, charPos, maxChars, wantAttr):
- """Params
- charPos -- integer
- maxChars -- integer
- wantAttr -- Should the function compute attributes.
-
- Return value must be (string, attribtues). attributes may be
- None if(not wantAttr)
- """
- RaiseNotImpl("GetText")
-
- def GetPositionOfContext(self, debugDocumentContext):
- """Params
- debugDocumentContext -- a PyIDebugDocumentContext object.
-
- Return value must be (charPos, numChars)
- """
- RaiseNotImpl("GetPositionOfContext")
-
- def GetContextOfPosition(self, charPos, maxChars):
- """Params are integers.
- Return value must be PyIDebugDocumentContext object
- """
- print(self)
- RaiseNotImpl("GetContextOfPosition")
-
-
- class DebugDocumentTextExternalAuthor:
- """Allow external editors to edit file-based debugger documents, and to notify the document when the source file has been changed."""
-
- _public_methods_ = ["GetPathName", "GetFileName", "NotifyChanged"]
- _com_interfaces_ = [axdebug.IID_IDebugDocumentTextExternalAuthor]
-
- def __init__(self):
- pass
-
- def GetPathName(self):
- """Return the full path (including file name) to the document's source file.
-
- Result must be (filename, fIsOriginal), where
- - if fIsOriginalPath is TRUE if the path refers to the original file for the document.
- - if fIsOriginalPath is FALSE if the path refers to a newly created temporary file.
-
- raise Exception(winerror.E_FAIL) if no source file can be created/determined.
- """
- RaiseNotImpl("GetPathName")
-
- def GetFileName(self):
- """Return just the name of the document, with no path information. (Used for "Save As...")
-
- Result is a string
- """
- RaiseNotImpl("GetFileName")
-
- def NotifyChanged(self):
- """Notify the host that the document's source file has been saved and
- that its contents should be refreshed.
- """
- RaiseNotImpl("NotifyChanged")
-
-
- class DebugDocumentTextEvents:
- _public_methods_ = """onDestroy onInsertText onRemoveText
- onReplaceText onUpdateTextAttributes
- onUpdateDocumentAttributes""".split()
- _com_interfaces_ = [axdebug.IID_IDebugDocumentTextEvents]
-
- def __init__(self):
- pass
-
- def onDestroy(self):
- # Result is void.
- RaiseNotImpl("onDestroy")
-
- def onInsertText(self, cCharacterPosition, cNumToInsert):
- # Result is void.
- RaiseNotImpl("onInsertText")
-
- def onRemoveText(self, cCharacterPosition, cNumToRemove):
- # Result is void.
- RaiseNotImpl("onRemoveText")
-
- def onReplaceText(self, cCharacterPosition, cNumToReplace):
- # Result is void.
- RaiseNotImpl("onReplaceText")
-
- def onUpdateTextAttributes(self, cCharacterPosition, cNumToUpdate):
- # Result is void.
- RaiseNotImpl("onUpdateTextAttributes")
-
- def onUpdateDocumentAttributes(self, textdocattr): # TEXT_DOC_ATTR
- # Result is void.
- RaiseNotImpl("onUpdateDocumentAttributes")
-
-
- class DebugDocumentContext:
- _public_methods_ = ["GetDocument", "EnumCodeContexts"]
- _com_interfaces_ = [axdebug.IID_IDebugDocumentContext]
-
- def __init__(self):
- pass
-
- def GetDocument(self):
- """Return value must be a PyIDebugDocument object"""
- RaiseNotImpl("GetDocument")
-
- def EnumCodeContexts(self):
- """Return value must be a PyIEnumDebugCodeContexts object"""
- RaiseNotImpl("EnumCodeContexts")
-
-
- class DebugCodeContext:
- _public_methods_ = ["GetDocumentContext", "SetBreakPoint"]
- _com_interfaces_ = [axdebug.IID_IDebugCodeContext]
-
- def __init__(self):
- pass
-
- def GetDocumentContext(self):
- """Return value must be a PyIDebugDocumentContext object"""
- RaiseNotImpl("GetDocumentContext")
-
- def SetBreakPoint(self, bps):
- """bps -- an integer with flags."""
- RaiseNotImpl("SetBreakPoint")
-
-
- class DebugStackFrame:
- """Abstraction representing a logical stack frame on the stack of a thread."""
-
- _public_methods_ = [
- "GetCodeContext",
- "GetDescriptionString",
- "GetLanguageString",
- "GetThread",
- "GetDebugProperty",
- ]
- _com_interfaces_ = [axdebug.IID_IDebugStackFrame]
-
- def __init__(self):
- pass
-
- def GetCodeContext(self):
- """Returns the current code context associated with the stack frame.
-
- Return value must be a IDebugCodeContext object
- """
- RaiseNotImpl("GetCodeContext")
-
- def GetDescriptionString(self, fLong):
- """Returns a textual description of the stack frame.
-
- fLong -- A flag indicating if the long name is requested.
- """
- RaiseNotImpl("GetDescriptionString")
-
- def GetLanguageString(self):
- """Returns a short or long textual description of the language.
-
- fLong -- A flag indicating if the long name is requested.
- """
- RaiseNotImpl("GetLanguageString")
-
- def GetThread(self):
- """Returns the thread associated with this stack frame.
-
- Result must be a IDebugApplicationThread
- """
- RaiseNotImpl("GetThread")
-
- def GetDebugProperty(self):
- RaiseNotImpl("GetDebugProperty")
-
-
- class DebugDocumentHost:
- """The interface from the IDebugDocumentHelper back to
- the smart host or language engine. This interface
- exposes host specific functionality such as syntax coloring.
- """
-
- _public_methods_ = [
- "GetDeferredText",
- "GetScriptTextAttributes",
- "OnCreateDocumentContext",
- "GetPathName",
- "GetFileName",
- "NotifyChanged",
- ]
- _com_interfaces_ = [axdebug.IID_IDebugDocumentHost]
-
- def __init__(self):
- pass
-
- def GetDeferredText(self, dwTextStartCookie, maxChars, bWantAttr):
- RaiseNotImpl("GetDeferredText")
-
- def GetScriptTextAttributes(self, codeText, delimterText, flags):
- # Result must be an attribute sequence of same "length" as the code.
- RaiseNotImpl("GetScriptTextAttributes")
-
- def OnCreateDocumentContext(self):
- # Result must be a PyIUnknown
- RaiseNotImpl("OnCreateDocumentContext")
-
- def GetPathName(self):
- # Result must be (string, int) where the int is a BOOL
- # - TRUE if the path refers to the original file for the document.
- # - FALSE if the path refers to a newly created temporary file.
- # - raise Exception(scode=E_FAIL) if no source file can be created/determined.
- RaiseNotImpl("GetPathName")
-
- def GetFileName(self):
- # Result is a string with just the name of the document, no path information.
- RaiseNotImpl("GetFileName")
-
- def NotifyChanged(self):
- RaiseNotImpl("NotifyChanged")
-
-
- # Additional gateway related functions.
-
-
- class DebugDocumentTextConnectServer:
- _public_methods_ = (
- win32com.server.connect.IConnectionPointContainer_methods
- + win32com.server.connect.IConnectionPoint_methods
- )
- _com_interfaces_ = [
- pythoncom.IID_IConnectionPoint,
- pythoncom.IID_IConnectionPointContainer,
- ]
-
- # IConnectionPoint interfaces
- def __init__(self):
- self.cookieNo = -1
- self.connections = {}
-
- def EnumConnections(self):
- RaiseNotImpl("EnumConnections")
-
- def GetConnectionInterface(self):
- RaiseNotImpl("GetConnectionInterface")
-
- def GetConnectionPointContainer(self):
- return _wrap(self)
-
- def Advise(self, pUnk):
- # Creates a connection to the client. Simply allocate a new cookie,
- # find the clients interface, and store it in a dictionary.
- interface = pUnk.QueryInterface(axdebug.IID_IDebugDocumentTextEvents, 1)
- self.cookieNo = self.cookieNo + 1
- self.connections[self.cookieNo] = interface
- return self.cookieNo
-
- def Unadvise(self, cookie):
- # Destroy a connection - simply delete interface from the map.
- try:
- del self.connections[cookie]
- except KeyError:
- return Exception(scode=winerror.E_UNEXPECTED)
-
- # IConnectionPointContainer interfaces
- def EnumConnectionPoints(self):
- RaiseNotImpl("EnumConnectionPoints")
-
- def FindConnectionPoint(self, iid):
- # Find a connection we support. Only support the single event interface.
- if iid == axdebug.IID_IDebugDocumentTextEvents:
- return _wrap(self)
- raise Exception(scode=winerror.E_NOINTERFACE) # ??
-
-
- class RemoteDebugApplicationEvents:
- _public_methods_ = [
- "OnConnectDebugger",
- "OnDisconnectDebugger",
- "OnSetName",
- "OnDebugOutput",
- "OnClose",
- "OnEnterBreakPoint",
- "OnLeaveBreakPoint",
- "OnCreateThread",
- "OnDestroyThread",
- "OnBreakFlagChange",
- ]
- _com_interfaces_ = [axdebug.IID_IRemoteDebugApplicationEvents]
-
- def OnConnectDebugger(self, appDebugger):
- """appDebugger -- a PyIApplicationDebugger"""
- RaiseNotImpl("OnConnectDebugger")
-
- def OnDisconnectDebugger(self):
- RaiseNotImpl("OnDisconnectDebugger")
-
- def OnSetName(self, name):
- RaiseNotImpl("OnSetName")
-
- def OnDebugOutput(self, string):
- RaiseNotImpl("OnDebugOutput")
-
- def OnClose(self):
- RaiseNotImpl("OnClose")
-
- def OnEnterBreakPoint(self, rdat):
- """rdat -- PyIRemoteDebugApplicationThread"""
- RaiseNotImpl("OnEnterBreakPoint")
-
- def OnLeaveBreakPoint(self, rdat):
- """rdat -- PyIRemoteDebugApplicationThread"""
- RaiseNotImpl("OnLeaveBreakPoint")
-
- def OnCreateThread(self, rdat):
- """rdat -- PyIRemoteDebugApplicationThread"""
- RaiseNotImpl("OnCreateThread")
-
- def OnDestroyThread(self, rdat):
- """rdat -- PyIRemoteDebugApplicationThread"""
- RaiseNotImpl("OnDestroyThread")
-
- def OnBreakFlagChange(self, abf, rdat):
- """abf -- int - one of the axdebug.APPBREAKFLAGS constants
- rdat -- PyIRemoteDebugApplicationThread
- RaiseNotImpl("OnBreakFlagChange")
- """
-
-
- class DebugExpressionContext:
- _public_methods_ = ["ParseLanguageText", "GetLanguageInfo"]
- _com_interfaces_ = [axdebug.IID_IDebugExpressionContext]
-
- def __init__(self):
- pass
-
- def ParseLanguageText(self, code, radix, delim, flags):
- """
- result is IDebugExpression
- """
- RaiseNotImpl("ParseLanguageText")
-
- def GetLanguageInfo(self):
- """
- result is (string langName, iid langId)
- """
- RaiseNotImpl("GetLanguageInfo")
-
-
- class DebugExpression:
- _public_methods_ = [
- "Start",
- "Abort",
- "QueryIsComplete",
- "GetResultAsString",
- "GetResultAsDebugProperty",
- ]
- _com_interfaces_ = [axdebug.IID_IDebugExpression]
-
- def Start(self, callback):
- """
- callback -- an IDebugExpressionCallback
-
- result - void
- """
- RaiseNotImpl("Start")
-
- def Abort(self):
- """
- no params
- result -- void
- """
- RaiseNotImpl("Abort")
-
- def QueryIsComplete(self):
- """
- no params
- result -- void
- """
- RaiseNotImpl("QueryIsComplete")
-
- def GetResultAsString(self):
- RaiseNotImpl("GetResultAsString")
-
- def GetResultAsDebugProperty(self):
- RaiseNotImpl("GetResultAsDebugProperty")
-
-
- class ProvideExpressionContexts:
- _public_methods_ = ["EnumExpressionContexts"]
- _com_interfaces_ = [axdebug.IID_IProvideExpressionContexts]
-
- def EnumExpressionContexts(self):
- RaiseNotImpl("EnumExpressionContexts")
|