def getFormResults(self): """Reads form fields and sets self.config and self.converter. In setAndVerifyConfig() in app layer, the settings will be checked for inconsistencies. """ logger.debug(util.funcName('begin')) ## Converter self.converter = ConverterSettings(self.userVars) self.converter.loadUserVars() # for normForm self.converter.convName = self.dlgCtrls.txtConverterName.getText() self.converter.forward = ( self.dlgCtrls.chkDirectionReverse.getState() == 0) self.converter.storeUserVars() ## Radio buttons and the corresponding combo box selection self.config = ConversionSettings() searchConfig = self.config.searchConfig # shorthand name self.config.whichScope = dutil.whichSelected( self.dlgCtrls.radiosWhichScope) self.userVars.store('WhichScope', self.config.whichScope) if self.config.whichScope == 'Font': searchConfig.fontName = self.dlgCtrls.comboScopeFont.getText() searchConfig.fontType = dutil.whichSelected( self.dlgCtrls.radiosScopeFont) self.userVars.store('ScopeFontType', searchConfig.fontType) searchConfig.load_userVars(self.userVars) self.config.whichTarget = dutil.whichSelected( self.dlgCtrls.radiosWhichTarget) self.userVars.store('WhichTarget', self.config.whichTarget) ## Target font targetFontName = self.dlgCtrls.listTargetFont.getSelectedItem() if targetFontName == "(None)": targetFontName = None targetFontSize = FontSize() targetFontSize.loadCtrl(self.dlgCtrls.txtFontSize) if self.config.whichTarget == 'Font': self.userVars.store('TargetFontName', targetFontName) self.userVars.store('TargetFontSize', targetFontSize.getString()) targetFontType = dutil.whichSelected( self.dlgCtrls.radiosTargetFont) self.userVars.store('TargetFontType', targetFontType) self.config.targetFont = styles.FontDefStruct( targetFontName, targetFontType, targetFontSize) self.config.askEach = (self.dlgCtrls.chkVerify.getState() == 1) ## Save selections for next time for combo in self.dlgCtrls.combos: self.userVars.store(combo.varname, combo.ctrl.getText()) self.userVars.store('AskEachChange', str(self.dlgCtrls.chkVerify.getState())) logger.debug(util.funcName('end'))
def loadValues(self, userVars, paraStyleDispNames, charStyleDispNames): converter = ConverterSettings(userVars) converter.loadUserVars() self.txtConverterName.setText(converter.convName) self.chkDirectionReverse.setState(not converter.forward) self.chkVerify.setState( userVars.getInt('AskEachChange')) ## Option buttons dutil.selectRadio(self.radiosWhichScope, userVars.get('WhichScope')) dutil.selectRadio(self.radiosWhichTarget, userVars.get('WhichTarget')) dutil.selectRadio(self.radiosScopeFont, userVars.get('ScopeFontType')) dutil.selectRadio( self.radiosTargetFont, userVars.get('TargetFontType')) ## Combo box lists ComboTuple = collections.namedtuple( 'ComboTuple', ['ctrl', 'varname', 'data']) self.combos = [ ComboTuple(ctrl=self.comboScopeParaStyle, varname='ScopeParaStyle', data=paraStyleDispNames), ComboTuple(ctrl=self.comboScopeCharStyle, varname='ScopeCharStyle', data=charStyleDispNames), ComboTuple(ctrl=self.comboScopeFont, varname='ScopeFont', data=styles.getListOfFonts(self.unoObjs)), ComboTuple(ctrl=self.comboTargetParaStyle, varname='TargetParaStyle', data=paraStyleDispNames), ComboTuple(ctrl=self.comboTargetCharStyle, varname='TargetCharStyle', data=charStyleDispNames)] for combo in self.combos: dutil.fill_list_ctrl( combo.ctrl, combo.data, userVars.get(combo.varname)) dutil.fill_list_ctrl( self.listTargetStyleFont, styles.getListOfFonts(self.unoObjs, addBlank=True)) logger.debug("Finished populating font and styles lists.") ## Other fields varname = 'SFM_Markers' if userVars.isEmpty(varname): defaultCtrlText = "\\tx \\mb" userVars.store(varname, defaultCtrlText) userVarVal = defaultCtrlText else: userVarVal = userVars.get(varname) self.txtSFM.setText(userVarVal) self.addRemainingListeners()
def test1_single(self): """Test a single converter in the pool.""" self.addConverter(CONV_NAME) inputStr = "abCde" convPool = ConvPool(self.userVars, self.msgbox) conv_settings = ConverterSettings(self.userVars) conv_settings.convName = CONV_NAME conv_settings.forward = True SelectSettingsCache.converter = conv_settings dummy_fontChange = convPool.selectConverter(conv_settings) sec_call = convPool[CONV_NAME] convertedVal = sec_call.convert(inputStr) self.assertEqual(convertedVal, "ABCDE") self.assertEqual(len(convPool._secCallObjs), 1) conv_settings = ConverterSettings(self.userVars) conv_settings.convName = CONV_NAME conv_settings.forward = False sec_call = convPool.loadConverter(conv_settings) convertedVal = sec_call.convert(inputStr) self.assertEqual(convertedVal, "abcde") self.assertEqual(len(convPool._secCallObjs), 1) with self.assertRaises(KeyError): sec_call = convPool["doesn't exist"]
def loadValues(self, userVars): converter = ConverterSettings(userVars) converter.loadUserVars() self.txtConverterName.setText(converter.convName) self.chkDirectionReverse.setState(not converter.forward) ## Other fields self.txtSourceCol.setText(userVars.get("ConvSourceColumn")) self.txtTargetCol.setText(userVars.get("ConvTargetColumn")) varname = "SkipFirstRow" if not userVars.isEmpty(varname): self.chkSkipRow.setState(userVars.getInt(varname))
def test1_toUpper(self): """Keep it simple here -- a first test to see if basic conversion is working. Also tests the reverse checkbox. """ convName = "capsTest.tec" self.addConverter(convName) textContent = "abCde\rFghI jkl" for reverse in False, True: self.setTextContent(textContent) func = self._test1_make_useDialog(reverse, convName) self.runDlg(func) expectedContent = textContent.replace("\r", "\r\n") if reverse: expectedContent = expectedContent.lower() else: expectedContent = expectedContent.upper() self.verifyTextContent(expectedContent) # Set converter settings to default. conv = ConverterSettings(self.dlg.userVars) conv.storeUserVars()
def loadValues(self, userVars): converter = ConverterSettings(userVars) converter.loadUserVars() self.txtConverterName.setText(converter.convName) self.chkDirectionReverse.setState(not converter.forward) self.chkVerify.setState( userVars.getInt('AskEachChange')) ## Option buttons dutil.selectRadio(self.radiosWhichScope, userVars.get('WhichScope')) dutil.selectRadio(self.radiosWhichTarget, userVars.get('WhichTarget')) dutil.selectRadio(self.radiosScopeFont, userVars.get('ScopeFontType')) dutil.selectRadio( self.radiosTargetFont, userVars.get('TargetFontType')) ## Combo box lists ComboTuple = collections.namedtuple( 'ComboTuple', ['ctrl', 'varname', 'data']) self.combos = [ ComboTuple(ctrl=self.comboScopeFont, varname='ScopeFont', data=styles.getListOfFonts(self.unoObjs))] for combo in self.combos: logger.debug("Filling Scope Font list.") #XXX: Sometimes hangs here. dutil.fill_list_ctrl( combo.ctrl, combo.data, userVars.get(combo.varname)) logger.debug("Filling Target Font list.") dutil.fill_list_ctrl( self.listTargetFont, styles.getListOfFonts(self.unoObjs, addBlank=True)) logger.debug("Finished populating font and styles lists.") ## Other fields self.addRemainingListeners()
def __init__(self, style_from, userVars, varNum=0): """ :param style_from: StyleItem being converted from :param userVars: for persistent storage :param varNum: a user variable number unique to this change """ StyleInfo.__init__(self) Syncable.__init__(self, userVars) self.styleItem = style_from self.varNum = varNum # for storage in user variables self.converter = ConverterSettings(userVars) self.converted_data = dict() # key inputString, value convertedString self.remove_custom_formatting = True
def getFormResults(self): """ Reads form fields and stores user vars. returns: converter settings """ logger.debug(util.funcName('begin')) converter = ConverterSettings(self.userVars) converter.loadUserVars() # for normForm converter.convName = self.dlgCtrls.txtConverterName.getText() converter.forward = (self.dlgCtrls.chkDirectionReverse.getState() == 0) converter.storeUserVars() self.sourceCol = self.dlgCtrls.txtSourceCol.getText() self.targetCol = self.dlgCtrls.txtTargetCol.getText() self.skipFirstRow = bool(self.dlgCtrls.chkSkipRow.getState()) self.userVars.store("ConvSourceColumn", self.sourceCol) self.userVars.store("ConvTargetColumn", self.targetCol) self.userVars.store("SkipFirstRow", str(self.dlgCtrls.chkSkipRow.getState())) logger.debug(util.funcName('end')) return converter
class DlgDataConversion: """Main class for this dialog.""" def __init__(self, drawingUnoObjs): self.unoObjs = drawingUnoObjs finder = uservars.SettingsDocFinder( uservars.Prefix.DATA_CONV_DRAW, self.unoObjs) writerUnoObjs = finder.getWriterDoc() self.userVars = uservars.UserVars( uservars.Prefix.DATA_CONV_DRAW, writerUnoObjs.document, logger) self.msgbox = MessageBox(self.unoObjs) self.styleFonts = styles.StyleFonts(self.unoObjs) self.app = DataConversion(self.unoObjs, self.userVars, self.styleFonts) self.dlgCtrls = None self.evtHandler = None self.config = None self.converter = None self.convertOnClose = False self.dlgClose = None def showDlg(self): logger.debug(util.funcName(obj=self)) dlg = dutil.createDialog(self.unoObjs, _dlgdef) if not dlg: return ctrl_getter = dutil.ControlGetter(dlg) self.evtHandler = DlgEventHandler(self) self.dlgCtrls = None self.dlgCtrls = DlgControls( self.unoObjs, ctrl_getter, self.evtHandler) self.evtHandler.setCtrls(self.dlgCtrls) logger.debug("Getting styles...") self.dlgCtrls.loadValues(self.userVars) self.dlgCtrls.enableDisable(self) ## Display the dialog self.dlgClose = dlg.endExecute dlg.execute() if self.convertOnClose: self.app.doConversions_draw() dlg.dispose() def selectTargetFont(self): """Selects the font from user variables.""" logger.debug(util.funcName('begin')) listCtrl = self.dlgCtrls.listTargetFont # shorthand variable listValues = listCtrl.Items fontName = self.userVars.get('TargetFontName') fontSize = FontSize() fontSize.loadUserVar(self.userVars, 'TargetFontSize') if fontName and fontName in listValues: listCtrl.selectItem(fontName, True) else: listCtrl.selectItemPos(0, True) fontSize.changeCtrlVal(self.dlgCtrls.txtFontSize) def selectConverter(self): logger.debug(util.funcName('begin')) logger.debug("Selecting a converter...") converter = self.app.selectConverter() self.dlgCtrls.txtConverterName.setText(converter.convName) self.dlgCtrls.chkDirectionReverse.setState(not converter.forward) def noConverter(self): logger.debug(util.funcName('begin')) logger.debug("Clearing converter...") self.dlgCtrls.txtConverterName.setText("<No converter>") def closeAndConvert(self): logger.debug(util.funcName('begin')) logger.debug("Closing and Converting...") self.getFormResults() try: self.app.setAndVerifyConverter(self.converter) self.app.setAndVerifyConfig(self.config) self.convertOnClose = True self.dlgClose() except (exceptions.ChoiceProblem, exceptions.StyleError) as exc: self.msgbox.displayExc(exc) def getFormResults(self): """Reads form fields and sets self.config and self.converter. In setAndVerifyConfig() in app layer, the settings will be checked for inconsistencies. """ logger.debug(util.funcName('begin')) ## Converter self.converter = ConverterSettings(self.userVars) self.converter.loadUserVars() # for normForm self.converter.convName = self.dlgCtrls.txtConverterName.getText() self.converter.forward = ( self.dlgCtrls.chkDirectionReverse.getState() == 0) self.converter.storeUserVars() ## Radio buttons and the corresponding combo box selection self.config = ConversionSettings() searchConfig = self.config.searchConfig # shorthand name self.config.whichScope = dutil.whichSelected( self.dlgCtrls.radiosWhichScope) self.userVars.store('WhichScope', self.config.whichScope) if self.config.whichScope == 'Font': searchConfig.fontName = self.dlgCtrls.comboScopeFont.getText() searchConfig.fontType = dutil.whichSelected( self.dlgCtrls.radiosScopeFont) self.userVars.store('ScopeFontType', searchConfig.fontType) searchConfig.load_userVars(self.userVars) self.config.whichTarget = dutil.whichSelected( self.dlgCtrls.radiosWhichTarget) self.userVars.store('WhichTarget', self.config.whichTarget) ## Target font targetFontName = self.dlgCtrls.listTargetFont.getSelectedItem() if targetFontName == "(None)": targetFontName = None targetFontSize = FontSize() targetFontSize.loadCtrl(self.dlgCtrls.txtFontSize) if self.config.whichTarget == 'Font': self.userVars.store('TargetFontName', targetFontName) self.userVars.store('TargetFontSize', targetFontSize.getString()) targetFontType = dutil.whichSelected( self.dlgCtrls.radiosTargetFont) self.userVars.store('TargetFontType', targetFontType) self.config.targetFont = styles.FontDefStruct( targetFontName, targetFontType, targetFontSize) self.config.askEach = (self.dlgCtrls.chkVerify.getState() == 1) ## Save selections for next time for combo in self.dlgCtrls.combos: self.userVars.store(combo.varname, combo.ctrl.getText()) self.userVars.store('AskEachChange', str(self.dlgCtrls.chkVerify.getState())) logger.debug(util.funcName('end'))
def test2_double(self): """Test two converters in the pool.""" self.addConverter(CONV_NAME) inputStr = "abCde" convPool = ConvPool(self.userVars, self.msgbox) conv_settings1 = ConverterSettings(self.userVars) conv_settings1.convName = CONV_NAME conv_settings1.forward = False SelectSettingsCache.converter = conv_settings1 # This calls our modified funcSelectConverter() above, # which tells the ConvPool what EncConverters actually # contains after test1_single(). dummy_fontChange = convPool.selectConverter(conv_settings1) conv_settings1 = ConverterSettings(self.userVars) conv_settings1.convName = CONV_NAME conv_settings1.forward = True sec_call1 = convPool.loadConverter(conv_settings1) convertedVal = sec_call1.convert(inputStr) self.assertEqual(convertedVal, "ABCDE") CONV_NAME2 = "Any-Lower" self.addConverter(CONV_NAME2) conv_settings2 = ConverterSettings(self.userVars) conv_settings2.convName = CONV_NAME2 with self.assertRaises(KeyError): sec_call2 = convPool[CONV_NAME2] convPool.loadConverter(conv_settings2) sec_call2 = convPool[CONV_NAME2] convertedVal = sec_call2.convert(inputStr) self.assertEqual(convertedVal, "abcde") self.assertEqual(len(convPool._secCallObjs), 2) self.assertEqual(sec_call1.convert("f"), "F") self.assertEqual(sec_call2.convert("G"), "g")
class DlgDataConversion: """Main class for this dialog.""" def __init__(self, unoObjs): self.unoObjs = unoObjs self.userVars = uservars.UserVars( uservars.Prefix.DATA_CONVERSION, unoObjs.document, logger) self.msgbox = MessageBox(unoObjs) self.styleFonts = styles.StyleFonts(unoObjs) self.app = DataConversion(unoObjs, self.userVars, self.styleFonts) self.dlgCtrls = None self.evtHandler = None self.charStyleNames = [] self.paraStyleNames = [] self.config = None self.converter = None self.convertOnClose = False self.dlgClose = None def showDlg(self): logger.debug(util.funcName(obj=self)) dlg = dutil.createDialog(self.unoObjs, _dlgdef) if not dlg: return ctrl_getter = dutil.ControlGetter(dlg) self.evtHandler = DlgEventHandler(self) self.dlgCtrls = None self.dlgCtrls = DlgControls( self.unoObjs, ctrl_getter, self.evtHandler) self.evtHandler.setCtrls(self.dlgCtrls) logger.debug("Getting styles...") styleNames = styles.getListOfStyles('ParagraphStyles', self.unoObjs) self.paraStyleNames = dict(styleNames) paraStyleDispNames = tuple([dispName for dispName, name in styleNames]) styleNames = styles.getListOfStyles('CharacterStyles', self.unoObjs) self.charStyleNames = dict(styleNames) charStyleDispNames = tuple([dispName for dispName, name in styleNames]) self.dlgCtrls.loadValues( self.userVars, paraStyleDispNames, charStyleDispNames) self.dlgCtrls.enableDisable(self) ## Display the dialog self.dlgClose = dlg.endExecute dlg.execute() if self.convertOnClose: self.app.doConversions_writer() dlg.dispose() def selectTargetFont(self, control, styleType): """Selects the font based on the value specified in the control. If control is None (for initialization or testing), gets values from user variables instead. """ logger.debug(util.funcName('begin')) listCtrl = self.dlgCtrls.listTargetStyleFont # shorthand variable listValues = listCtrl.Items if control: fontType = 'Western' if self.dlgCtrls.optTargetFontComplex.getState() == 1: fontType = 'Complex' elif self.dlgCtrls.optTargetFontAsian.getState() == 1: fontType = 'Asian' displayName = control.getText() try: if styleType == 'Paragraph': styleName = self.paraStyleNames[displayName] elif styleType == 'Character': styleName = self.charStyleNames[displayName] except KeyError: # Perhaps a new style to be created logger.debug("%s is not a known style.", displayName) return fontName, fontSize = self.styleFonts.getFontOfStyle( styleType, fontType, styleName) else: fontName = self.userVars.get('TargetFontName') fontSize = FontSize() fontSize.loadUserVar(self.userVars, 'TargetFontSize') if fontName and fontName in listValues: listCtrl.selectItem(fontName, True) else: listCtrl.selectItemPos(0, True) fontSize.changeCtrlVal(self.dlgCtrls.txtFontSize) def selectConverter(self): logger.debug(util.funcName('begin')) logger.debug("Selecting a converter...") converter = self.app.selectConverter() self.dlgCtrls.txtConverterName.setText(converter.convName) self.dlgCtrls.chkDirectionReverse.setState(not converter.forward) def noConverter(self): logger.debug(util.funcName('begin')) logger.debug("Clearing converter...") self.dlgCtrls.txtConverterName.setText("<No converter>") def closeAndConvert(self): logger.debug(util.funcName('begin')) logger.debug("Closing and Converting...") self.getFormResults() try: self.app.setAndVerifyConverter(self.converter) self.app.setAndVerifyConfig(self.config) self.convertOnClose = True self.dlgClose() except (exceptions.ChoiceProblem, exceptions.StyleError) as exc: self.msgbox.displayExc(exc) def getFormResults(self): """Reads form fields and sets self.config and self.converter. In setAndVerifyConfig() in app layer, the settings will be checked for inconsistencies. """ logger.debug(util.funcName('begin')) ## Converter self.converter = ConverterSettings(self.userVars) self.converter.loadUserVars() # for normForm self.converter.convName = self.dlgCtrls.txtConverterName.getText() self.converter.forward = ( self.dlgCtrls.chkDirectionReverse.getState() == 0) self.converter.storeUserVars() ## Radio buttons and the corresponding combo box selection self.config = ConversionSettings() searchConfig = self.config.searchConfig # shorthand name self.config.whichScope = dutil.whichSelected( self.dlgCtrls.radiosWhichScope) self.userVars.store('WhichScope', self.config.whichScope) if self.config.whichScope == 'Font': searchConfig.fontName = self.dlgCtrls.comboScopeFont.getText() searchConfig.fontType = dutil.whichSelected( self.dlgCtrls.radiosScopeFont) self.userVars.store('ScopeFontType', searchConfig.fontType) elif self.config.whichScope == 'ParaStyle': displayName = self.dlgCtrls.comboScopeParaStyle.getText() # use display name when searching searchConfig.style = displayName elif self.config.whichScope == 'CharStyle': displayName = self.dlgCtrls.comboScopeCharStyle.getText() if displayName in self.charStyleNames: searchConfig.style = self.charStyleNames[displayName] else: searchConfig.style = displayName elif self.config.whichScope == 'SFMs': searchConfig.SFMs = self.dlgCtrls.txtSFM.getText() searchConfig.load_userVars(self.userVars) self.config.whichTarget = dutil.whichSelected( self.dlgCtrls.radiosWhichTarget) self.userVars.store('WhichTarget', self.config.whichTarget) self.config.targetStyle = '' if self.config.whichTarget == 'ParaStyle': displayName = self.dlgCtrls.comboTargetParaStyle.getText() if displayName in self.paraStyleNames: self.config.targetStyle = self.paraStyleNames[displayName] else: # Perhaps a new style to be created self.config.targetStyle = displayName elif self.config.whichTarget == 'CharStyle': displayName = self.dlgCtrls.comboTargetCharStyle.getText() if displayName in self.charStyleNames: self.config.targetStyle = self.charStyleNames[displayName] else: # Perhaps a new style to be created self.config.targetStyle = displayName ## Target font targetFontName = self.dlgCtrls.listTargetStyleFont.getSelectedItem() if targetFontName == "(None)": targetFontName = None targetFontSize = FontSize() targetFontSize.loadCtrl(self.dlgCtrls.txtFontSize) if self.config.whichTarget == 'FontOnly': self.userVars.store('TargetFontName', targetFontName) self.userVars.store('TargetFontSize', targetFontSize.getString()) targetFontType = dutil.whichSelected( self.dlgCtrls.radiosTargetFont) self.userVars.store('TargetFontType', targetFontType) self.config.targetFont = styles.FontDefStruct( targetFontName, targetFontType, targetFontSize) self.config.askEach = (self.dlgCtrls.chkVerify.getState() == 1) ## Save selections for next time for combo in self.dlgCtrls.combos: self.userVars.store(combo.varname, combo.ctrl.getText()) self.userVars.store('SFM_Markers', self.dlgCtrls.txtSFM.getText()) self.userVars.store('AskEachChange', str(self.dlgCtrls.chkVerify.getState())) logger.debug(util.funcName('end'))