class ZMshtmlEditControl(ZBaseXHTMLEditControl) : RICHTEXT_FORMAT_COMMANDS = {} RICHTEXT_FORMAT_COMMANDS[IZRichTextEditControl.ZCAPABILITY_BOLD] = u"Bold" #$NON-NLS-1$ RICHTEXT_FORMAT_COMMANDS[IZRichTextEditControl.ZCAPABILITY_ITALIC] = u"Italic" #$NON-NLS-1$ RICHTEXT_FORMAT_COMMANDS[IZRichTextEditControl.ZCAPABILITY_UNDERLINE] = u"Underline" #$NON-NLS-1$ RICHTEXT_FORMAT_COMMANDS[IZRichTextEditControl.ZCAPABILITY_STRIKETHRU] = u"StrikeThrough" #$NON-NLS-1$ RICHTEXT_FORMAT_COMMANDS[IZRichTextEditControl.ZCAPABILITY_ALIGN_LEFT] = u"JustifyLeft" #$NON-NLS-1$ RICHTEXT_FORMAT_COMMANDS[IZRichTextEditControl.ZCAPABILITY_ALIGN_RIGHT] = u"JustifyRight" #$NON-NLS-1$ RICHTEXT_FORMAT_COMMANDS[IZRichTextEditControl.ZCAPABILITY_ALIGN_CENTER] = u"JustifyCenter" #$NON-NLS-1$ RICHTEXT_FORMAT_COMMANDS[IZRichTextEditControl.ZCAPABILITY_JUSTIFY] = u"JustifyFull" #$NON-NLS-1$ RICHTEXT_FORMAT_COMMANDS[IZRichTextEditControl.ZCAPABILITY_ORDERED_LIST] = u"InsertOrderedList" #$NON-NLS-1$ RICHTEXT_FORMAT_COMMANDS[IZRichTextEditControl.ZCAPABILITY_UNORDERED_LIST] = u"InsertUnorderedList" #$NON-NLS-1$ RICHTEXT_FORMAT_COMMANDS[IZRichTextEditControl.ZCAPABILITY_INDENT] = u"Indent" #$NON-NLS-1$ RICHTEXT_FORMAT_COMMANDS[IZRichTextEditControl.ZCAPABILITY_OUTDENT] = u"Outdent" #$NON-NLS-1$ RICHTEXT_FORMAT_COMMANDS[IZRichTextEditControl.ZCAPABILITY_FONT_NAME] = u"FontName" #$NON-NLS-1$ RICHTEXT_FORMAT_COMMANDS[IZRichTextEditControl.ZCAPABILITY_FONT_SIZE] = u"FontSize" #$NON-NLS-1$ RICHTEXT_FORMAT_COMMANDS[IZRichTextEditControl.ZCAPABILITY_COLOR] = u"ForeColor" #$NON-NLS-1$ RICHTEXT_FORMAT_COMMANDS[IZRichTextEditControl.ZCAPABILITY_BACKGROUND] = u"BackColor" #$NON-NLS-1$ def __init__(self, parent): ZBaseXHTMLEditControl.__init__(self, parent) self.mshtmlCtrl = None self.linkContext = None self.imageContext = None self.tableContext = None self._createWidgets() self._layoutWidgets() self._bindWidgetEvents() # end __init__() def _getCapabilityIdList(self): u"""_getCapabilityIdList() -> list Returns list of supported capabilites.""" #$NON-NLS-1$ rval = ZBaseXHTMLEditControl._getCapabilityIdList(self) # editor capabilities rval.append(IZEditControl.ZCAPABILITY_CUT) rval.append(IZEditControl.ZCAPABILITY_COPY) rval.append(IZEditControl.ZCAPABILITY_PASTE) rval.append(IZEditControl.ZCAPABILITY_UNDO) rval.append(IZEditControl.ZCAPABILITY_REDO) rval.append(IZEditControl.ZCAPABILITY_SELECT_ALL) rval.append(IZEditControl.ZCAPABILITY_SELECT_NONE) # text editor capabilities rval.append(IZTextEditControl.ZCAPABILITY_FIND_TEXT) rval.append(IZTextEditControl.ZCAPABILITY_FINDREPLACE) rval.append(IZTextEditControl.ZCAPABILITY_SPELLCHECK) # rich text editor capabilities rval.append(IZRichTextEditControl.ZCAPABILITY_FONT_NAME) rval.append(IZRichTextEditControl.ZCAPABILITY_FONT_SIZE) rval.append(IZRichTextEditControl.ZCAPABILITY_COLOR) rval.append(IZRichTextEditControl.ZCAPABILITY_BACKGROUND) rval.append(IZRichTextEditControl.ZCAPABILITY_BOLD) rval.append(IZRichTextEditControl.ZCAPABILITY_ITALIC) rval.append(IZRichTextEditControl.ZCAPABILITY_UNDERLINE) rval.append(IZRichTextEditControl.ZCAPABILITY_STRIKETHRU) rval.append(IZRichTextEditControl.ZCAPABILITY_ALIGN_LEFT) rval.append(IZRichTextEditControl.ZCAPABILITY_ALIGN_RIGHT) rval.append(IZRichTextEditControl.ZCAPABILITY_ALIGN_CENTER) rval.append(IZRichTextEditControl.ZCAPABILITY_JUSTIFY) rval.append(IZRichTextEditControl.ZCAPABILITY_ORDERED_LIST) rval.append(IZRichTextEditControl.ZCAPABILITY_UNORDERED_LIST) rval.append(IZRichTextEditControl.ZCAPABILITY_INDENT) rval.append(IZRichTextEditControl.ZCAPABILITY_OUTDENT) # html domain capabilities rval.append(IZXHTMLEditControl.ZCAPABILITY_PASTE_HTML) rval.append(IZXHTMLEditControl.ZCAPABILITY_INSERT_IMAGE) rval.append(IZXHTMLEditControl.ZCAPABILITY_EDIT_IMAGE) rval.append(IZXHTMLEditControl.ZCAPABILITY_INSERT_LINK) rval.append(IZXHTMLEditControl.ZCAPABILITY_EDIT_LINK) rval.append(IZXHTMLEditControl.ZCAPABILITY_INSERT_TABLE) rval.append(IZXHTMLEditControl.ZCAPABILITY_EDIT_TABLE) rval.append(IZXHTMLEditControl.ZCAPABILITY_INSERT_HTML) rval.append(IZXHTMLEditControl.ZCAPABILITY_FORMAT_HTML) rval.append(IZXHTMLEditControl.ZCAPABILITY_SCHEMA_AWARE) return rval # end _getCapabilityIdList() def SetFocus(self): self._getMshtmlControl().SetFocus() # end SetFocus() def _getMshtmlControl(self): return self.mshtmlCtrl # end _getMshtmlControl() def _createWidgets(self): self.mshtmlCtrl = ZMSHTMLControl(self, wx.NewId()) # end _createWidgets() def _layoutWidgets(self): box = wx.BoxSizer(wx.VERTICAL) box.Add(self.mshtmlCtrl, 1, wx.EXPAND) self.SetAutoLayout(True) self.SetSizer(box) self.Layout() # end _layoutWidgets() def _bindWidgetEvents(self): self.Bind(IZMshtmlEvents.ZEVT_MSHTML_UPDATE_UI, self.onUpdateUI, self._getMshtmlControl()) self.Bind(IZMshtmlEvents.ZEVT_MSHTML_SELECTION_CHANGE, self.onSelectionChange, self._getMshtmlControl()) self.Bind(IZMshtmlEvents.ZEVT_MSHTML_CONTEXT_MENU, self.onContextMenu, self._getMshtmlControl()) self.Bind(IZMshtmlEvents.ZEVT_MSHTML_CLICK, self.onClick, self._getMshtmlControl()) self.Bind(IZMshtmlEvents.ZEVT_MSHTML_DBL_CLICK, self.onDoubleClick, self._getMshtmlControl()) self.Bind(IZMshtmlEvents.ZEVT_MSHTML_CONTENT_MODIFIED, self.onContentModified, self._getMshtmlControl()) #self.Bind(IZMshtmlEvents.ZEVT_MSHTML_KEYPRESS, self.onKeyPress, self._getMshtmlControl()) rootWindow = getRootWindowOrDialog(self) self.Bind(wx.EVT_ACTIVATE, self.onActivate, rootWindow) # end _bindWidgetEvents() def onActivate(self, event): if event.GetActive(): fireUIExecEvent(ZMethodRunnable(self.onActivateStageTwo), self) event.Skip() # end onActivate() def onActivateStageTwo(self): rootWindow = getRootWindowOrDialog(self) focusWindow = rootWindow.FindFocus() if focusWindow == self.mshtmlCtrl.getIHTMLDocument(): self.mshtmlCtrl.SetFocus() # end onActivateStageTwo() def onUpdateUI(self, event): #@UnusedVariable self._fireUpdateUIEvent() # end onUpdateUI() def onContentModified(self, event): #@UnusedVariable if self._getMshtmlControl()._getOriginalHtmlContent() and self._getMshtmlControl()._isModified(): # Note: current mshtml code for _isModified is to compare the current content # with the original content instead of checking for key strokes or looking at the changes at # document object model. Hence, for now, fire "content-modified" event to notify parents # and call mshtml::_setOriginalHtmlContent(None) so that subsequent calls to mshtml_isModified() # return false. Bottom line: _getMshtmlControl()._isModified() should be invoked only once. self._getMshtmlControl()._setOriginalHtmlContent(None) self._fireContentModifiedEvent() # end onContentModified def onKeyPress(self, event): #@UnusedVariable pass # end onKeyPress def onSelectionChange(self, event): #@UnusedVariable selection = self.getCurrentSelection() self._fireSelectionChangeEvent(selection) # end onSelectionChange() def onContextMenu(self, event): # FIXME (PJ) SEL_CHANGE context menu - support for querying current selection. self._fireContextMenuEvent(event.getParentWindow(), event.getXYPoint()) # end onContextMenu() def onClick(self, event): #@UnusedVariable event = ZEditControlClickEvent(self.GetId(), self) self._fireEvent(event) # end onDoubleClick def onDoubleClick(self, event): #@UnusedVariable event = ZEditControlDoubleClickEvent(self.GetId(), self) self._fireEvent(event) # end onDoubleClick def getCurrentSelection(self): mshtmlElem = self._getMshtmlControl().getSelectedElement(True) selectedText = None izXhtmlElementImpl = None if mshtmlElem: selectedText = self._getMshtmlControl().getSelectedText() # izXhtmlElementImpl is either IZXhtmlElement, IZXhtmlLink or IZXhtmlImage izXhtmlElementImpl = createIZXhtmlElementFromIHTMLElement(mshtmlElem) styleCtx = ZMshtmlEditControlStyleContext(self._getMshtmlControl(), mshtmlElem, self._getMshtmlControl().getSelectedTextRange() ) selection = ZMshtmlEditControlSelection(selectedText, izXhtmlElementImpl, styleCtx) return selection # end getCurrentSelection def setValue(self, value): self._getMshtmlControl().setHtmlValue(value) # end setValue() def getValue(self): return self._getMshtmlControl().getHtmlValue() # end getValue() def clearState(self): self._getMshtmlControl()._createInitialContentSnapshot() # end clearState() def canCut(self): return self._getMshtmlControl().queryCommandEnabled(u"Cut") #$NON-NLS-1$ # end canCut() def cut(self): self._getMshtmlControl().execCommand(u"Cut") #$NON-NLS-1$ # end cut() def canCopy(self): bCopy = self._getMshtmlControl().queryCommandEnabled(u"Copy") #$NON-NLS-1$ # Feb 23, 2005. # work around bug where IE returns Copy state enabled when the control receives focus. # (eg: place the cursor on the document and Copy is enabled.) (seen since ZBW build 57). bCopy = self.canCut() and bCopy return bCopy # end canCopy() def copy(self): self._getMshtmlControl().execCommand(u"Copy") #$NON-NLS-1$ # end copy() def canPaste(self): rval = self._getMshtmlControl().queryCommandEnabled(u"Paste") #$NON-NLS-1$ if not rval: # test for clipboard image rval = hasClipboardBitmap() return rval # end canPaste() def paste(self): self._getMshtmlControl().paste() #$NON-NLS-1$ # end paste() def canPasteXhtml(self): return self.canPaste() # end canPasteXhtml() def pasteXhtml(self): content = getTextFromClipboard() return self._getMshtmlControl().paste(content, True) # end pasteXhtml() def canInsertXhtml(self): return True # end canInsertXhtml def insertXhtml(self, xhtmlString): #@UnusedVariable return self._getMshtmlControl().insertHtml(xhtmlString, u"afterEnd") #$NON-NLS-1$ # end insertXhtml def canSelectAll(self): return True # end canSelectAll() def selectAll(self): self._getMshtmlControl().selectAll() # end selectAll() def selectNone(self): self._getMshtmlControl().selectNone() # selectNone() def canUndo(self): return self._getMshtmlControl().queryCommandEnabled(u"Undo") #$NON-NLS-1$ # end canUndo() def undo(self): self._getMshtmlControl().execCommand(u"Undo") #$NON-NLS-1$ # end undo() def canRedo(self): return self._getMshtmlControl().queryCommandEnabled(u"Redo") #$NON-NLS-1$ # end canRedo() def redo(self): self._getMshtmlControl().execCommand(u"Redo") #$NON-NLS-1$ # end redo() def isFormattingEnabled(self, capabilityId): if ZMshtmlEditControl.RICHTEXT_FORMAT_COMMANDS.has_key(capabilityId): return True return False # end isFormattingEnabled() def getFormattingState(self, capabilityId): if ZMshtmlEditControl.RICHTEXT_FORMAT_COMMANDS.has_key(capabilityId): return self._getMshtmlControl().queryCommandState( ZMshtmlEditControl.RICHTEXT_FORMAT_COMMANDS[capabilityId] ) return False # end getFormattingState() def applyFormatting(self, capabilityId, customData): #@UnusedVariable if ZMshtmlEditControl.RICHTEXT_FORMAT_COMMANDS.has_key(capabilityId): return self._getMshtmlControl().execCommand( ZMshtmlEditControl.RICHTEXT_FORMAT_COMMANDS[capabilityId] ) elif IZXHTMLEditControl.ZCAPABILITY_FORMAT_HTML == capabilityId: return self._getMshtmlControl().execCommand(u"FormatHtmlTag", customData) #$NON-NLS-1$ # end applyFormatting() def getLinkContext(self): if self.linkContext is None: self.linkContext = ZMshtmlEditControlLinkContext( self ) return self.linkContext # end getLinkContext def getImageContext(self): if self.imageContext is None: self.imageContext = ZMshtmlEditControlImageContext( self ) return self.imageContext # end getImageContext def getTableContext(self): if self.tableContext is None: self.tableContext = ZMshtmlEditControlTableContext( self ) return self.tableContext # end getTableContext() def createSpellCheckContext(self): return ZMshtmlEditControlSpellCheckContext(self) # end createSpellCheckContext() def createFindReplaceContext(self): selectedText = self._getMshtmlControl().getSelectedText() return ZMshtmlEditControlFindReplaceTextContext(self, selectedText)
class ZMshtmlEditControl(ZBaseXHTMLEditControl): RICHTEXT_FORMAT_COMMANDS = {} RICHTEXT_FORMAT_COMMANDS[ IZRichTextEditControl.ZCAPABILITY_BOLD] = u"Bold" #$NON-NLS-1$ RICHTEXT_FORMAT_COMMANDS[ IZRichTextEditControl.ZCAPABILITY_ITALIC] = u"Italic" #$NON-NLS-1$ RICHTEXT_FORMAT_COMMANDS[ IZRichTextEditControl. ZCAPABILITY_UNDERLINE] = u"Underline" #$NON-NLS-1$ RICHTEXT_FORMAT_COMMANDS[ IZRichTextEditControl. ZCAPABILITY_STRIKETHRU] = u"StrikeThrough" #$NON-NLS-1$ RICHTEXT_FORMAT_COMMANDS[ IZRichTextEditControl. ZCAPABILITY_ALIGN_LEFT] = u"JustifyLeft" #$NON-NLS-1$ RICHTEXT_FORMAT_COMMANDS[ IZRichTextEditControl. ZCAPABILITY_ALIGN_RIGHT] = u"JustifyRight" #$NON-NLS-1$ RICHTEXT_FORMAT_COMMANDS[ IZRichTextEditControl. ZCAPABILITY_ALIGN_CENTER] = u"JustifyCenter" #$NON-NLS-1$ RICHTEXT_FORMAT_COMMANDS[ IZRichTextEditControl. ZCAPABILITY_JUSTIFY] = u"JustifyFull" #$NON-NLS-1$ RICHTEXT_FORMAT_COMMANDS[ IZRichTextEditControl. ZCAPABILITY_ORDERED_LIST] = u"InsertOrderedList" #$NON-NLS-1$ RICHTEXT_FORMAT_COMMANDS[ IZRichTextEditControl. ZCAPABILITY_UNORDERED_LIST] = u"InsertUnorderedList" #$NON-NLS-1$ RICHTEXT_FORMAT_COMMANDS[ IZRichTextEditControl.ZCAPABILITY_INDENT] = u"Indent" #$NON-NLS-1$ RICHTEXT_FORMAT_COMMANDS[ IZRichTextEditControl.ZCAPABILITY_OUTDENT] = u"Outdent" #$NON-NLS-1$ RICHTEXT_FORMAT_COMMANDS[IZRichTextEditControl. ZCAPABILITY_FONT_NAME] = u"FontName" #$NON-NLS-1$ RICHTEXT_FORMAT_COMMANDS[IZRichTextEditControl. ZCAPABILITY_FONT_SIZE] = u"FontSize" #$NON-NLS-1$ RICHTEXT_FORMAT_COMMANDS[ IZRichTextEditControl.ZCAPABILITY_COLOR] = u"ForeColor" #$NON-NLS-1$ RICHTEXT_FORMAT_COMMANDS[ IZRichTextEditControl. ZCAPABILITY_BACKGROUND] = u"BackColor" #$NON-NLS-1$ def __init__(self, parent): ZBaseXHTMLEditControl.__init__(self, parent) self.mshtmlCtrl = None self.linkContext = None self.imageContext = None self.tableContext = None self._createWidgets() self._layoutWidgets() self._bindWidgetEvents() # end __init__() def _getCapabilityIdList(self): u"""_getCapabilityIdList() -> list Returns list of supported capabilites.""" #$NON-NLS-1$ rval = ZBaseXHTMLEditControl._getCapabilityIdList(self) # editor capabilities rval.append(IZEditControl.ZCAPABILITY_CUT) rval.append(IZEditControl.ZCAPABILITY_COPY) rval.append(IZEditControl.ZCAPABILITY_PASTE) rval.append(IZEditControl.ZCAPABILITY_UNDO) rval.append(IZEditControl.ZCAPABILITY_REDO) rval.append(IZEditControl.ZCAPABILITY_SELECT_ALL) rval.append(IZEditControl.ZCAPABILITY_SELECT_NONE) # text editor capabilities rval.append(IZTextEditControl.ZCAPABILITY_FIND_TEXT) rval.append(IZTextEditControl.ZCAPABILITY_FINDREPLACE) rval.append(IZTextEditControl.ZCAPABILITY_SPELLCHECK) # rich text editor capabilities rval.append(IZRichTextEditControl.ZCAPABILITY_FONT_NAME) rval.append(IZRichTextEditControl.ZCAPABILITY_FONT_SIZE) rval.append(IZRichTextEditControl.ZCAPABILITY_COLOR) rval.append(IZRichTextEditControl.ZCAPABILITY_BACKGROUND) rval.append(IZRichTextEditControl.ZCAPABILITY_BOLD) rval.append(IZRichTextEditControl.ZCAPABILITY_ITALIC) rval.append(IZRichTextEditControl.ZCAPABILITY_UNDERLINE) rval.append(IZRichTextEditControl.ZCAPABILITY_STRIKETHRU) rval.append(IZRichTextEditControl.ZCAPABILITY_ALIGN_LEFT) rval.append(IZRichTextEditControl.ZCAPABILITY_ALIGN_RIGHT) rval.append(IZRichTextEditControl.ZCAPABILITY_ALIGN_CENTER) rval.append(IZRichTextEditControl.ZCAPABILITY_JUSTIFY) rval.append(IZRichTextEditControl.ZCAPABILITY_ORDERED_LIST) rval.append(IZRichTextEditControl.ZCAPABILITY_UNORDERED_LIST) rval.append(IZRichTextEditControl.ZCAPABILITY_INDENT) rval.append(IZRichTextEditControl.ZCAPABILITY_OUTDENT) # html domain capabilities rval.append(IZXHTMLEditControl.ZCAPABILITY_PASTE_HTML) rval.append(IZXHTMLEditControl.ZCAPABILITY_INSERT_IMAGE) rval.append(IZXHTMLEditControl.ZCAPABILITY_EDIT_IMAGE) rval.append(IZXHTMLEditControl.ZCAPABILITY_INSERT_LINK) rval.append(IZXHTMLEditControl.ZCAPABILITY_EDIT_LINK) rval.append(IZXHTMLEditControl.ZCAPABILITY_INSERT_TABLE) rval.append(IZXHTMLEditControl.ZCAPABILITY_EDIT_TABLE) rval.append(IZXHTMLEditControl.ZCAPABILITY_INSERT_HTML) rval.append(IZXHTMLEditControl.ZCAPABILITY_FORMAT_HTML) rval.append(IZXHTMLEditControl.ZCAPABILITY_SCHEMA_AWARE) return rval # end _getCapabilityIdList() def SetFocus(self): self._getMshtmlControl().SetFocus() # end SetFocus() def _getMshtmlControl(self): return self.mshtmlCtrl # end _getMshtmlControl() def _createWidgets(self): self.mshtmlCtrl = ZMSHTMLControl(self, wx.NewId()) # end _createWidgets() def _layoutWidgets(self): box = wx.BoxSizer(wx.VERTICAL) box.Add(self.mshtmlCtrl, 1, wx.EXPAND) self.SetAutoLayout(True) self.SetSizer(box) self.Layout() # end _layoutWidgets() def _bindWidgetEvents(self): self.Bind(IZMshtmlEvents.ZEVT_MSHTML_UPDATE_UI, self.onUpdateUI, self._getMshtmlControl()) self.Bind(IZMshtmlEvents.ZEVT_MSHTML_SELECTION_CHANGE, self.onSelectionChange, self._getMshtmlControl()) self.Bind(IZMshtmlEvents.ZEVT_MSHTML_CONTEXT_MENU, self.onContextMenu, self._getMshtmlControl()) self.Bind(IZMshtmlEvents.ZEVT_MSHTML_CLICK, self.onClick, self._getMshtmlControl()) self.Bind(IZMshtmlEvents.ZEVT_MSHTML_DBL_CLICK, self.onDoubleClick, self._getMshtmlControl()) self.Bind(IZMshtmlEvents.ZEVT_MSHTML_CONTENT_MODIFIED, self.onContentModified, self._getMshtmlControl()) #self.Bind(IZMshtmlEvents.ZEVT_MSHTML_KEYPRESS, self.onKeyPress, self._getMshtmlControl()) rootWindow = getRootWindowOrDialog(self) self.Bind(wx.EVT_ACTIVATE, self.onActivate, rootWindow) # end _bindWidgetEvents() def onActivate(self, event): if event.GetActive(): fireUIExecEvent(ZMethodRunnable(self.onActivateStageTwo), self) event.Skip() # end onActivate() def onActivateStageTwo(self): rootWindow = getRootWindowOrDialog(self) focusWindow = rootWindow.FindFocus() if focusWindow == self.mshtmlCtrl.getIHTMLDocument(): self.mshtmlCtrl.SetFocus() # end onActivateStageTwo() def onUpdateUI(self, event): #@UnusedVariable self._fireUpdateUIEvent() # end onUpdateUI() def onContentModified(self, event): #@UnusedVariable if self._getMshtmlControl()._getOriginalHtmlContent( ) and self._getMshtmlControl()._isModified(): # Note: current mshtml code for _isModified is to compare the current content # with the original content instead of checking for key strokes or looking at the changes at # document object model. Hence, for now, fire "content-modified" event to notify parents # and call mshtml::_setOriginalHtmlContent(None) so that subsequent calls to mshtml_isModified() # return false. Bottom line: _getMshtmlControl()._isModified() should be invoked only once. self._getMshtmlControl()._setOriginalHtmlContent(None) self._fireContentModifiedEvent() # end onContentModified def onKeyPress(self, event): #@UnusedVariable pass # end onKeyPress def onSelectionChange(self, event): #@UnusedVariable selection = self.getCurrentSelection() self._fireSelectionChangeEvent(selection) # end onSelectionChange() def onContextMenu(self, event): # FIXME (PJ) SEL_CHANGE context menu - support for querying current selection. self._fireContextMenuEvent(event.getParentWindow(), event.getXYPoint()) # end onContextMenu() def onClick(self, event): #@UnusedVariable event = ZEditControlClickEvent(self.GetId(), self) self._fireEvent(event) # end onDoubleClick def onDoubleClick(self, event): #@UnusedVariable event = ZEditControlDoubleClickEvent(self.GetId(), self) self._fireEvent(event) # end onDoubleClick def getCurrentSelection(self): mshtmlElem = self._getMshtmlControl().getSelectedElement(True) selectedText = None izXhtmlElementImpl = None if mshtmlElem: selectedText = self._getMshtmlControl().getSelectedText() # izXhtmlElementImpl is either IZXhtmlElement, IZXhtmlLink or IZXhtmlImage izXhtmlElementImpl = createIZXhtmlElementFromIHTMLElement( mshtmlElem) styleCtx = ZMshtmlEditControlStyleContext( self._getMshtmlControl(), mshtmlElem, self._getMshtmlControl().getSelectedTextRange()) selection = ZMshtmlEditControlSelection(selectedText, izXhtmlElementImpl, styleCtx) return selection # end getCurrentSelection def setValue(self, value): self._getMshtmlControl().setHtmlValue(value) # end setValue() def getValue(self): return self._getMshtmlControl().getHtmlValue() # end getValue() def clearState(self): self._getMshtmlControl()._createInitialContentSnapshot() # end clearState() def canCut(self): return self._getMshtmlControl().queryCommandEnabled( u"Cut") #$NON-NLS-1$ # end canCut() def cut(self): self._getMshtmlControl().execCommand(u"Cut") #$NON-NLS-1$ # end cut() def canCopy(self): bCopy = self._getMshtmlControl().queryCommandEnabled( u"Copy") #$NON-NLS-1$ # Feb 23, 2005. # work around bug where IE returns Copy state enabled when the control receives focus. # (eg: place the cursor on the document and Copy is enabled.) (seen since ZBW build 57). bCopy = self.canCut() and bCopy return bCopy # end canCopy() def copy(self): self._getMshtmlControl().execCommand(u"Copy") #$NON-NLS-1$ # end copy() def canPaste(self): rval = self._getMshtmlControl().queryCommandEnabled( u"Paste") #$NON-NLS-1$ if not rval: # test for clipboard image rval = hasClipboardBitmap() return rval # end canPaste() def paste(self): self._getMshtmlControl().paste() #$NON-NLS-1$ # end paste() def canPasteXhtml(self): return self.canPaste() # end canPasteXhtml() def pasteXhtml(self): content = getTextFromClipboard() return self._getMshtmlControl().paste(content, True) # end pasteXhtml() def canInsertXhtml(self): return True # end canInsertXhtml def insertXhtml(self, xhtmlString): #@UnusedVariable return self._getMshtmlControl().insertHtml(xhtmlString, u"afterEnd") #$NON-NLS-1$ # end insertXhtml def canSelectAll(self): return True # end canSelectAll() def selectAll(self): self._getMshtmlControl().selectAll() # end selectAll() def selectNone(self): self._getMshtmlControl().selectNone() # selectNone() def canUndo(self): return self._getMshtmlControl().queryCommandEnabled( u"Undo") #$NON-NLS-1$ # end canUndo() def undo(self): self._getMshtmlControl().execCommand(u"Undo") #$NON-NLS-1$ # end undo() def canRedo(self): return self._getMshtmlControl().queryCommandEnabled( u"Redo") #$NON-NLS-1$ # end canRedo() def redo(self): self._getMshtmlControl().execCommand(u"Redo") #$NON-NLS-1$ # end redo() def isFormattingEnabled(self, capabilityId): if ZMshtmlEditControl.RICHTEXT_FORMAT_COMMANDS.has_key(capabilityId): return True return False # end isFormattingEnabled() def getFormattingState(self, capabilityId): if ZMshtmlEditControl.RICHTEXT_FORMAT_COMMANDS.has_key(capabilityId): return self._getMshtmlControl().queryCommandState( ZMshtmlEditControl.RICHTEXT_FORMAT_COMMANDS[capabilityId]) return False # end getFormattingState() def applyFormatting(self, capabilityId, customData): #@UnusedVariable if ZMshtmlEditControl.RICHTEXT_FORMAT_COMMANDS.has_key(capabilityId): return self._getMshtmlControl().execCommand( ZMshtmlEditControl.RICHTEXT_FORMAT_COMMANDS[capabilityId]) elif IZXHTMLEditControl.ZCAPABILITY_FORMAT_HTML == capabilityId: return self._getMshtmlControl().execCommand( u"FormatHtmlTag", customData) #$NON-NLS-1$ # end applyFormatting() def getLinkContext(self): if self.linkContext is None: self.linkContext = ZMshtmlEditControlLinkContext(self) return self.linkContext # end getLinkContext def getImageContext(self): if self.imageContext is None: self.imageContext = ZMshtmlEditControlImageContext(self) return self.imageContext # end getImageContext def getTableContext(self): if self.tableContext is None: self.tableContext = ZMshtmlEditControlTableContext(self) return self.tableContext # end getTableContext() def createSpellCheckContext(self): return ZMshtmlEditControlSpellCheckContext(self) # end createSpellCheckContext() def createFindReplaceContext(self): selectedText = self._getMshtmlControl().getSelectedText() return ZMshtmlEditControlFindReplaceTextContext(self, selectedText)
def _createWidgets(self): self.mshtmlCtrl = ZMSHTMLControl(self, wx.NewId())