diff options
-rw-r--r-- | wizards/com/sun/star/wizards/common/ConfigGroup.py | 1 | ||||
-rw-r--r-- | wizards/com/sun/star/wizards/common/ConfigNode.py | 2 | ||||
-rw-r--r-- | wizards/com/sun/star/wizards/common/ConfigSet.py | 26 | ||||
-rw-r--r-- | wizards/com/sun/star/wizards/common/FileAccess.py | 2 | ||||
-rw-r--r-- | wizards/com/sun/star/wizards/common/SystemDialog.py | 4 | ||||
-rw-r--r-- | wizards/com/sun/star/wizards/document/OfficeDocument.py | 13 | ||||
-rw-r--r-- | wizards/com/sun/star/wizards/ui/WizardDialog.py | 26 | ||||
-rw-r--r-- | wizards/com/sun/star/wizards/ui/event/DataAware.py | 26 | ||||
-rw-r--r-- | wizards/com/sun/star/wizards/ui/event/UnoDataAware.py | 2 | ||||
-rw-r--r-- | wizards/com/sun/star/wizards/web/WWD_Events.py | 273 | ||||
-rw-r--r-- | wizards/com/sun/star/wizards/web/WWD_General.py | 62 | ||||
-rw-r--r-- | wizards/com/sun/star/wizards/web/WWD_Startup.py | 299 | ||||
-rw-r--r-- | wizards/com/sun/star/wizards/web/data/CGDocument.py | 124 | ||||
-rw-r--r-- | wizards/com/sun/star/wizards/web/data/CGExporter.py | 4 | ||||
-rw-r--r-- | wizards/com/sun/star/wizards/web/data/CGSettings.py | 35 |
15 files changed, 510 insertions, 389 deletions
diff --git a/wizards/com/sun/star/wizards/common/ConfigGroup.py b/wizards/com/sun/star/wizards/common/ConfigGroup.py index d7a24ad6b5c0..2e0fd9434699 100644 --- a/wizards/com/sun/star/wizards/common/ConfigGroup.py +++ b/wizards/com/sun/star/wizards/common/ConfigGroup.py @@ -28,6 +28,7 @@ class ConfigGroup(ConfigNode): propertyName = field[len(prefix):] child = getattr(self, field) if isinstance(child, ConfigNode): + child.root = self.root child.readConfiguration(configView.getByName(propertyName), prefix) else: diff --git a/wizards/com/sun/star/wizards/common/ConfigNode.py b/wizards/com/sun/star/wizards/common/ConfigNode.py index 0dc38c018d9a..892e6e3277c7 100644 --- a/wizards/com/sun/star/wizards/common/ConfigNode.py +++ b/wizards/com/sun/star/wizards/common/ConfigNode.py @@ -2,6 +2,8 @@ from abc import ABCMeta, abstractmethod class ConfigNode(object): + root = None + @abstractmethod def readConfiguration(self, configurationView, param): pass diff --git a/wizards/com/sun/star/wizards/common/ConfigSet.py b/wizards/com/sun/star/wizards/common/ConfigSet.py index 7851fea45556..26b051adf2ef 100644 --- a/wizards/com/sun/star/wizards/common/ConfigSet.py +++ b/wizards/com/sun/star/wizards/common/ConfigSet.py @@ -70,6 +70,7 @@ class ConfigSet(ConfigNode): for i in names: try: child = type(self.childClass)() + child.root = self.root child.readConfiguration( configurationView.getByName(i), param) self.add(i, child) @@ -118,27 +119,13 @@ class ConfigSet(ConfigNode): i += 1 return parent - def getKey(self, object): - i = self.childrenMap.entrySet().iterator() - while i.hasNext(): - me = i.next() - if me.getValue() == object: - return me.getKey() + def getKey(self, _object): + for k,v in self.childrenMap.items(): + if v == _object: + return k return None - def getKey(self, i): - c = 0 - while i > -1: - if getElementAt(c) != None: - i -= 1 - - c += 1 - if c == 0: - return None - else: - return getKey(getElementAt(c - 1)) - def getElementAt(self, i): return self.childrenList[i] @@ -148,9 +135,6 @@ class ConfigSet(ConfigNode): def getSize(self): return len(self.childrenList) - def keys(self): - return self.childrenMap.keySet() - def getIndexOf(self, item): return self.childrenList.index(item) diff --git a/wizards/com/sun/star/wizards/common/FileAccess.py b/wizards/com/sun/star/wizards/common/FileAccess.py index 5c288a7c149b..64c78cac93f0 100644 --- a/wizards/com/sun/star/wizards/common/FileAccess.py +++ b/wizards/com/sun/star/wizards/common/FileAccess.py @@ -468,7 +468,7 @@ class FileAccess(object): except Exception: traceback.print_exc() - #return defe + return defe ''' @author rpiterman diff --git a/wizards/com/sun/star/wizards/common/SystemDialog.py b/wizards/com/sun/star/wizards/common/SystemDialog.py index 54febcbf5180..a04c0272c96b 100644 --- a/wizards/com/sun/star/wizards/common/SystemDialog.py +++ b/wizards/com/sun/star/wizards/common/SystemDialog.py @@ -25,8 +25,6 @@ class SystemDialog(object): self.xMSF = xMSF self.systemDialog = xMSF.createInstance(ServiceName) self.xStringSubstitution = self.createStringSubstitution(xMSF) - if self.systemDialog != None: - self.systemDialog.initialize(Type) except Exception, exception: traceback.print_exc() @@ -105,7 +103,7 @@ class SystemDialog(object): def callOpenDialog(self, multiSelect, displayDirectory): try: self.systemDialog.setMultiSelectionMode(multiSelect) - self.systemDialog.setDisplayDirectory(subst(displayDirectory)) + self.systemDialog.setDisplayDirectory(self.subst(displayDirectory)) if self.execute(self.systemDialog): return self.systemDialog.getFiles() diff --git a/wizards/com/sun/star/wizards/document/OfficeDocument.py b/wizards/com/sun/star/wizards/document/OfficeDocument.py index 62f385a61265..a5eef40992dd 100644 --- a/wizards/com/sun/star/wizards/document/OfficeDocument.py +++ b/wizards/com/sun/star/wizards/document/OfficeDocument.py @@ -242,19 +242,20 @@ class OfficeDocument(object): except Exception, e: traceback.print_exc() + @classmethod def getFileMediaDecriptor(self, xmsf, url): typeDetect = xmsf.createInstance( "com.sun.star.document.TypeDetection") mediaDescr = range(1) - mediaDescr[0][0] = uno.createUnoStruct( + mediaDescr[0] = uno.createUnoStruct( 'com.sun.star.beans.PropertyValue') - mediaDescr[0][0].Name = "URL" - mediaDescr[0][0].Value = url - Type = typeDetect.queryTypeByDescriptor(mediaDescr, True) - if Type.equals(""): + mediaDescr[0].Name = "URL" + mediaDescr[0].Value = url + Type = typeDetect.queryTypeByDescriptor(tuple(mediaDescr), True)[0] + if Type == "": return None else: - return typeDetect.getByName(type) + return typeDetect.getByName(Type) @classmethod def getTypeMediaDescriptor(self, xmsf, type): diff --git a/wizards/com/sun/star/wizards/ui/WizardDialog.py b/wizards/com/sun/star/wizards/ui/WizardDialog.py index 8d5907dd6737..b2a687d1de5a 100644 --- a/wizards/com/sun/star/wizards/ui/WizardDialog.py +++ b/wizards/com/sun/star/wizards/ui/WizardDialog.py @@ -289,10 +289,14 @@ class WizardDialog(UnoDialog2): for index, item in enumerate(items): self.insertRoadmapItem(index, enabled[index], item, index + 1) - def setStepEnabled(self, _nStep, bEnabled, enableNextButton): - setStepEnabled(_nStep, bEnabled) - if self.getNextAvailableStep() > 0: - self.enableNextButton(bEnabled) + def setStepEnabled(self, _nStep, bEnabled, enableNextButton=None): + xRoadmapItem = self.getRoadmapItemByID(_nStep) + if xRoadmapItem is not None: + Helper.setUnoPropertyValue(xRoadmapItem, + PropertyNames.PROPERTY_ENABLED, bEnabled) + if enableNextButton is not None: + if self.getNextAvailableStep() > 0: + self.enableNextButton(bEnabled) def enableNavigationButtons( self, _bEnableBack, _bEnableNext, _bEnableFinish): @@ -312,18 +316,10 @@ class WizardDialog(UnoDialog2): self.setControlProperty("btnWizardFinish", PropertyNames.PROPERTY_ENABLED, enabled) - def setStepEnabled(self, _nStep, bEnabled): - xRoadmapItem = getRoadmapItemByID(_nStep) - if xRoadmapItem != None: - Helper.setUnoPropertyValue(xRoadmapItem, - PropertyNames.PROPERTY_ENABLED, bEnabled) - def enablefromStep(self, _iStep, _bDoEnable): if _iStep <= self.nMaxStep: - i = _iStep - while i <= self.nMaxStep: - setStepEnabled(i, _bDoEnable) - i += 1 + for i in xrange(_iStep, self.nMaxStep): + self.setStepEnabled(i, _bDoEnable) enableFinishButton(_bDoEnable) if not _bDoEnable: enableNextButton(_iStep > getCurrentStep() + 1) @@ -334,7 +330,7 @@ class WizardDialog(UnoDialog2): try: xRoadmapItem = self.getRoadmapItemByID(_nStep) # Todo: In this case an exception should be thrown - if (xRoadmapItem == None): + if xRoadmapItem is None: return False bIsEnabled = bool(Helper.getUnoPropertyValue(xRoadmapItem, PropertyNames.PROPERTY_ENABLED)) diff --git a/wizards/com/sun/star/wizards/ui/event/DataAware.py b/wizards/com/sun/star/wizards/ui/event/DataAware.py index b611c3a79069..5975dcad9d55 100644 --- a/wizards/com/sun/star/wizards/ui/event/DataAware.py +++ b/wizards/com/sun/star/wizards/ui/event/DataAware.py @@ -69,6 +69,22 @@ class DataAware(object): self.enableControls(data) ''' + sets a new data object. Optionally + update the UI. + @param obj the new data object. + @param updateUI if true updateUI() will be called. + ''' + + def setDataObject(self, obj, updateUI): + if obj is not None and not isinstance(obj, type(self._field)): + return + + self._dataObject = obj + + if updateUI: + self.updateUI() + + ''' updates the DataObject according to the current state of the UI control. ''' @@ -85,3 +101,13 @@ class DataAware(object): self.enableControls(ui) except Exception: traceback.print_exc() + ''' + given a collection containing DataAware objects, + calls updateUI() on each memebr of the collection. + @param dataAwares a collection containing DataAware objects. + ''' + + @classmethod + def updateUIs(self, dataAwares): + for i in dataAwares: + i.updateUI() diff --git a/wizards/com/sun/star/wizards/ui/event/UnoDataAware.py b/wizards/com/sun/star/wizards/ui/event/UnoDataAware.py index 83c61db5a6a1..8afef0a08152 100644 --- a/wizards/com/sun/star/wizards/ui/event/UnoDataAware.py +++ b/wizards/com/sun/star/wizards/ui/event/UnoDataAware.py @@ -26,7 +26,7 @@ class UnoDataAware(DataAware): def enableControls(self, value): for i in self.disableObjects: Helper.setUnoPropertyValue( - i.Model, PropertyNames.PROPERTY_ENABLED, value) + i.Model, PropertyNames.PROPERTY_ENABLED, bool(value)) def setToUI(self, value): if self.isShort: diff --git a/wizards/com/sun/star/wizards/web/WWD_Events.py b/wizards/com/sun/star/wizards/web/WWD_Events.py index 447a0b6b29dc..9623d9a17884 100644 --- a/wizards/com/sun/star/wizards/web/WWD_Events.py +++ b/wizards/com/sun/star/wizards/web/WWD_Events.py @@ -1,6 +1,6 @@ import traceback from common.Desktop import Desktop -from WWD_Startup import WWD_Startup +from WWD_Startup import * ''' This class implements the ui-events of the @@ -13,8 +13,6 @@ session methods. ''' class WWD_Events(WWD_Startup): - EMPTY_SHORT_ARRAY = range(0) - EMPTY_STRING_ARRAY = range(0) ''' He - my constructor ! @@ -50,12 +48,12 @@ class WWD_Events(WWD_Startup): def enterStep(self, old, newStep): if (old == 1): sessionToLoad = "" - s = Helper.getUnoPropertyValue(lstLoadSettings.Model, "SelectedItems") + s = Helper.getUnoPropertyValue(lstLoadWWD_Startup.settings.Model, "SelectedItems") if s.length == 0 or s[0] == 0: sessionToLoad = "" else: sessionToLoad = \ - settings.cp_SavedSessions.getElementAt(s[0]).cp_Name + WWD_Startup.settings.cp_SavedSessions.getElementAt(s[0]).cp_Name if not sessionToLoad.equals(self.currentSession): loadSession(sessionToLoad) @@ -81,10 +79,10 @@ class WWD_Events(WWD_Startup): def loadSession(self, sessionToLoad): try: sd = self.getStatusDialog() - task = Task("LoadDocs", "", 10) + #task = Task("LoadDocs", "", 10) sd.execute(this, task, resources.resLoadingSession) - task.start() - setSelectedDoc(WWD_Events.EMPTY_SHORT_ARRAY) + #task.start() + self.setSelectedDoc(WWD_Events.EMPTY_SHORT_ARRAY) Helper.setUnoPropertyValue( lstDocuments.Model, "SelectedItems", WWD_Events.EMPTY_SHORT_ARRAY) Helper.setUnoPropertyValue( @@ -97,20 +95,20 @@ class WWD_Events(WWD_Startup): xMSF, CONFIG_PATH + "/SavedSessions", False) view = Configuration.getNode(sessionToLoad, view) - session = CGSession.CGSession() - session.setRoot(settings) + session = CGSession() + session.root = settings session.readConfiguration(view, CONFIG_READ_PARAM) - task.setMax(session.cp_Content.cp_Documents.getSize() * 5 + 7) - task.advance(True) - if sessionToLoad.equals(""): + #task.setMax(session.cp_Content.cp_Documents.getSize() * 5 + 7) + #task.advance(True) + if sessionToLoad == "": setSaveSessionName(session) mount(session, task, False, sd.xControl) checkSteps() self.currentSession = sessionToLoad - while task.getStatus() <= task.getMax(): + '''while task.getStatus() <= task.getMax(): task.advance(False) - task.removeTaskListener(sd) + task.removeTaskListener(sd)''' except Exception, ex: unexpectedError(ex) @@ -127,7 +125,7 @@ class WWD_Events(WWD_Startup): def delSession(self): selected = Helper.getUnoPropertyValue( - lstLoadSettings.Model, "SelectedItems") + lstLoadWWD_Startup.settings.Model, "SelectedItems") if selected.length == 0: return @@ -139,16 +137,16 @@ class WWD_Events(WWD_Startup): ErrorHandler.ERROR_QUESTION_NO) if confirm: try: - name = settings.cp_SavedSessions.getKey(selected[0]) + name = WWD_Startup.settings.cp_SavedSessions.getKey(selected[0]) # first delete the session from the registry/configuration. Configuration.removeNode( self.xMSF, CONFIG_PATH + "/SavedSessions", name) - # then delete settings.cp_SavedSessions - settings.cp_SavedSessions.remove(selected[0]) - settings.savedSessions.remove(selected[0] - 1) + # then delete WWD_Startup.settings.cp_SavedSessions + WWD_Startup.settings.cp_SavedSessions.remove(selected[0]) + WWD_Startup.settings.savedSessions.remove(selected[0] - 1) nextSelected = [0] # We try to select the same item index again, if possible - if settings.cp_SavedSessions.getSize() > selected[0]: + if WWD_Startup.settings.cp_SavedSessions.getSize() > selected[0]: nextSelected[0] = selected[0] else: # this will always be available because @@ -163,7 +161,7 @@ class WWD_Events(WWD_Startup): # select... Helper.setUnoPropertyValue( - lstLoadSettings.Model, "SelectedItems", nextSelected) + lstLoadWWD_Startup.settings.Model, "SelectedItems", nextSelected) except Exception, ex: ex.printStackTrace() @@ -184,20 +182,18 @@ class WWD_Events(WWD_Startup): ''' def setSelectedDoc(self, s): - oldDoc = getDoc(selectedDoc) - doc = getDoc(s) - if doc == None: - fillExportList(WWD_Events.EMPTY_STRING_ARRAY) + oldDoc = self.getDoc([WWD_Startup.selectedDoc]) + doc = self.getDoc(s) + if doc is None: + self.fillExportList([]) #I try to avoid refreshing the export list if #the same type of document is chosen. - elif oldDoc == None or (not oldDoc.appType.equals(doc.appType)): - fillExportList(settings.getExporters(doc.appType)) - else: - - # do nothing - selectedDoc = s - mount(doc, docAware) - disableDocUpDown() + elif oldDoc is None or oldDoc.appType != doc.appType: + self.fillExportList(WWD_Startup.settings.getExporters(doc.appType)) + # do nothing + WWD_Startup.selectedDoc = s + self.mountList(doc, self.docAware) + self.disableDocUpDown() ''' The user clicks the "Add" button. @@ -207,49 +203,51 @@ class WWD_Events(WWD_Startup): ''' def addDocument(self): - files = getDocAddDialog().callOpenDialog( - True, settings.cp_DefaultSession.cp_InDirectory) - if files is None: - return + try: + files = self.getDocAddDialog().callOpenDialog( + True, WWD_Startup.settings.cp_DefaultSession.cp_InDirectory) + if files is None: + return - task = Task.Task_unknown("", "", files.length * 5) - ''' - If more than a certain number - of documents have been added, - open the status dialog. - ''' - if (files.length > MIN_ADD_FILES_FOR_DIALOG): - sd = getStatusDialog() - sd.setLabel(resources.resValidatingDocuments) - sd.execute(this, task, resources.prodName) - # new LoadDocs( sd.xControl, files, task ) - oLoadDocs = LoadDocs.LoadDocs_unknown(self.xControl, files, task) - oLoadDocs.loadDocuments() - task.removeTaskListener(sd) - else: + task = None #Task("", "", len(files) * 5) ''' - When adding a single document, do not use a - status dialog... + If more than a certain number + of documents have been added, + open the status dialog. ''' - oLoadDocs = LoadDocs.LoadDocs_unknown(self.xControl, files, task) - oLoadDocs.loadDocuments() + if (len(files) > MIN_ADD_FILES_FOR_DIALOG): + sd = self.getStatusDialog() + sd.setLabel(resources.resValidatingDocuments) + sd.execute(this, task, resources.prodName) + oLoadDocs = self.LoadDocs(self.xMSF, self.xUnoDialog, files, self) + oLoadDocs.loadDocuments() + #task.removeTaskListener(sd) + else: + ''' + When adding a single document, do not use a + status dialog... + ''' + oLoadDocs = self.LoadDocs(self.xMSF, self.xUnoDialog, files, self) + oLoadDocs.loadDocuments() + except Exception: + traceback.print_exc() ''' The user clicked delete. ''' def removeDocument(self): - if selectedDoc.length == 0: + if WWD_Startup.selectedDoc.length == 0: return - settings.cp_DefaultSession.cp_Content.cp_Documents.remove( - selectedDoc[0]) + WWD_Startup.settings.cp_DefaultSession.cp_Content.cp_Documents.remove( + WWD_Startup.selectedDoc[0]) # update the selected document - while selectedDoc[0] >= getDocsCount(): - selectedDoc[0] -= 1 + while WWD_Startup.selectedDoc[0] >= getDocsCount(): + WWD_Startup.selectedDoc[0] -= 1 # if there are no documents... - if selectedDoc[0] == -1: - selectedDoc = WWD_Events.EMPTY_SHORT_ARRAY + if WWD_Startup.selectedDoc[0] == -1: + WWD_Startup.selectedDoc = WWD_Events.EMPTY_SHORT_ARRAY # update the list to show the right selection. docListDA.updateUI() @@ -262,28 +260,28 @@ class WWD_Events(WWD_Startup): ''' def docUp(self): - doc = settings.cp_DefaultSession.cp_Content.cp_Documents.getElementAt( - selectedDoc[0]) - settings.cp_DefaultSession.cp_Content.cp_Documents.remove( - selectedDoc[0]) - settings.cp_DefaultSession.cp_Content.cp_Documents.add( - selectedDoc[0] - 1, doc) + doc = WWD_Startup.settings.cp_DefaultSession.cp_Content.cp_Documents.getElementAt( + WWD_Startup.selectedDoc[0]) + WWD_Startup.settings.cp_DefaultSession.cp_Content.cp_Documents.remove( + WWD_Startup.selectedDoc[0]) + WWD_Startup.settings.cp_DefaultSession.cp_Content.cp_Documents.add( + WWD_Startup.selectedDoc[0] - 1, doc) docListDA.updateUI() - disableDocUpDown() + self.disableDocUpDown() ''' doc down ''' def docDown(self): - doc = settings.cp_DefaultSession.cp_Content.cp_Documents.getElementAt( - selectedDoc[0]) - settings.cp_DefaultSession.cp_Content.cp_Documents.remove( - selectedDoc[0]) - settings.cp_DefaultSession.cp_Content.cp_Documents.add( - (selectedDoc[0] + 1), doc) + doc = WWD_Startup.settings.cp_DefaultSession.cp_Content.cp_Documents.getElementAt( + WWD_Startup.selectedDoc[0]) + WWD_Startup.settings.cp_DefaultSession.cp_Content.cp_Documents.remove( + WWD_Startup.selectedDoc[0]) + WWD_Startup.settings.cp_DefaultSession.cp_Content.cp_Documents.add( + (WWD_Startup.selectedDoc[0] + 1), doc) docListDA.updateUI() - disableDocUpDown() + self.disableDocUpDown() ''' ************** @@ -300,11 +298,11 @@ class WWD_Events(WWD_Startup): setEnabled(btnBackgrounds, False) if self.bgDialog == None: self.bgDialog = BackgroundsDialog( - self.xMSF, settings.cp_BackgroundImages, resources) + self.xMSF, WWD_Startup.settings.cp_BackgroundImages, resources) self.bgDialog.createWindowPeer(xControl.Peer) self.bgDialog.setSelected( - settings.cp_DefaultSession.cp_Design.cp_BackgroundImage) + WWD_Startup.settings.cp_DefaultSession.cp_Design.cp_BackgroundImage) i = self.bgDialog.executeDialog(WWD_Events.this) if i == 1: #ok @@ -322,7 +320,7 @@ class WWD_Events(WWD_Startup): if background == None: background = "" - settings.cp_DefaultSession.cp_Design.cp_BackgroundImage = background + WWD_Startup.settings.cp_DefaultSession.cp_Design.cp_BackgroundImage = background refreshStylePreview() ''' @@ -334,11 +332,11 @@ class WWD_Events(WWD_Startup): setEnabled(btnIconSets, False) if self.iconsDialog == None: self.iconsDialog = IconsDialog( - self.xMSF, settings.cp_IconSets, resources) + self.xMSF, WWD_Startup.settings.cp_IconSets, resources) self.iconsDialog.createWindowPeer(xControl.Peer) self.iconsDialog.setIconset( - settings.cp_DefaultSession.cp_Design.cp_IconSet) + WWD_Startup.settings.cp_DefaultSession.cp_Design.cp_IconSet) i = self.iconsDialog.executeDialog(WWD_Events.this) if i == 1: #ok @@ -353,7 +351,7 @@ class WWD_Events(WWD_Startup): ''' def setIconset(self, icon): - settings.cp_DefaultSession.cp_Design.cp_IconSet = icon + WWD_Startup.settings.cp_DefaultSession.cp_Design.cp_IconSet = icon updateIconsetText() ''' @@ -395,7 +393,7 @@ class WWD_Events(WWD_Startup): def setPublishLocalDir(self): dir = showFolderDialog( "Local destination directory", "", - settings.cp_DefaultSession.cp_OutDirectory) + WWD_Startup.settings.cp_DefaultSession.cp_OutDirectory) #if ok was pressed... setPublishUrl(LOCAL_PUBLISHER, dir, 0) @@ -430,7 +428,7 @@ class WWD_Events(WWD_Startup): def setZipFilename(self): sd = getZipDialog() zipFile = sd.callStoreDialog( - settings.cp_DefaultSession.cp_OutDirectory, + WWD_Startup.settings.cp_DefaultSession.cp_OutDirectory, resources.resDefaultArchiveFilename) setPublishUrl(ZIP_PUBLISHER, zipFile, 4) getPublisher @@ -620,7 +618,7 @@ class WWD_Events(WWD_Startup): node = None name = getSessionSaveName() #set documents index field. - docs = settings.cp_DefaultSession.cp_Content.cp_Documents + docs = WWD_Startup.settings.cp_DefaultSession.cp_Content.cp_Documents i = 0 while i < docs.getSize(): (docs.getElementAt(i)).cp_Index = i @@ -642,32 +640,32 @@ class WWD_Events(WWD_Startup): except NoSuchElementException, nsex: traceb - settings.cp_DefaultSession.cp_Index = 0; + WWD_Startup.settings.cp_DefaultSession.cp_Index = 0; node = Configuration.addConfigNode(conf, name) - settings.cp_DefaultSession.cp_Name = name; - settings.cp_DefaultSession.writeConfiguration( + WWD_Startup.settings.cp_DefaultSession.cp_Name = name; + WWD_Startup.settings.cp_DefaultSession.writeConfiguration( node, CONFIG_READ_PARAM) - settings.cp_SavedSessions.reindexSet(conf, name, "Index") + WWD_Startup.settings.cp_SavedSessions.reindexSet(conf, name, "Index") Configuration.commit(conf) # now I reload the sessions to actualize the list/combo # boxes load/save sessions. - settings.cp_SavedSessions.clear() + WWD_Startup.settings.cp_SavedSessions.clear() confView = Configuration.getConfigurationRoot( self.xMSF, CONFIG_PATH + "/SavedSessions", False) - settings.cp_SavedSessions.readConfiguration( + WWD_Startup.settings.cp_SavedSessions.readConfiguration( confView, CONFIG_READ_PARAM) - settings.cp_LastSavedSession = name; + WWD_Startup.settings.cp_LastSavedSession = name; self.currentSession = name # now save the name of the last saved session... - settings.cp_LastSavedSession = name; + WWD_Startup.settings.cp_LastSavedSession = name; # TODO add the <none> session... prepareSessionLists() ListModelBinder.fillList( - lstLoadSettings, settings.cp_SavedSessions.items(), None) + lstLoadSettings, WWD_Startup.settings.cp_SavedSessions.items(), None) ListModelBinder.fillComboBox( - cbSaveSettings, settings.savedSessions.items(), None) + cbSaveSettings, WWD_Startup.settings.savedSessions.items(), None) selectSession() - self.currentSession = settings.cp_LastSavedSession + self.currentSession = WWD_Startup.settings.cp_LastSavedSession return True except Exception, ex: ex.printStackTrace() @@ -787,12 +785,12 @@ class WWD_Events(WWD_Startup): return else: - settings.cp_LastSavedSession = "" + WWD_Startup.settings.cp_LastSavedSession = "" try: conf = Configuration.getConfigurationRoot(xMSF, CONFIG_PATH, True) Configuration.set( - settings.cp_LastSavedSession, "LastSavedSession", conf) + WWD_Startup.settings.cp_LastSavedSession, "LastSavedSession", conf) Configuration.commit(conf) except Exception, ex: ex.printStackTrace() @@ -852,3 +850,78 @@ class WWD_Events(WWD_Startup): except Exception, ex: traceback.print_exc() + + class LoadDocs(object): + + def __init__(self,xmsf, xC_, files_, parent_): + self.xMSF = xmsf + self.xC = xC_ + self.files = files_ + self.parent = parent_ + + def loadDocuments(self): + if len(WWD_Startup.selectedDoc) > 0: + offset = WWD_Startup.selectedDoc[0] + 1 + else: + offset = WWD_General.getDocsCount() + + ''' + if the user chose one file, the list starts at 0, + if he chose more than one, the first entry is a directory name, + all the others are filenames. + ''' + if len(self.files) > 1: + start = 1 + else: + start = 0 + + #Number of documents failed to validate. + failed = 0 + + # store the directory + if start == 1: + WWD_General.settings.cp_DefaultSession.cp_InDirectory = files[0] + else: + WWD_General.settings.cp_DefaultSession.cp_InDirectory = \ + FileAccess.getParentDir(self.files[0]) + + ''' + Here i go through each file, and validate it. + If its ok, I add it to the ListModel/ConfigSet + ''' + + for i in xrange(start, len(self.files)): + doc = CGDocument() + + if start == 0: + doc.cp_URL = self.files[i] + else: + doc.cp_URL = FileAccess.connectURLs(files[0], files[i]) + + ''' + so - i check each document and if it is ok I add it. + The failed variable is used only to calculate the place to add - + Error reporting to the user is (or should (-: )done in the checkDocument(...) method + ''' + if WWD_Startup.checkDocument(self.xMSF, doc, None, self.xC): + WWD_General.settings.cp_DefaultSession.cp_Content.cp_Documents.add(offset + i - failed - start, doc) + else: + failed += 1 + + # if any documents where added, + # set the first one to be the current-selected document. + if len(self.files) > start + failed: + self.parent.setSelectedDoc([offset]) + + # update the ui... + self.parent.docListDA.updateUI(); + # this enables/disables the next steps. + # when no documents in the list, all next steps are disabled + self.parent.checkSteps() + ''' + a small insurance that the status dialog will + really close... + ''' + + #while (self.task.getStatus() < self.task.getMax()): + # self.task.advance(false) diff --git a/wizards/com/sun/star/wizards/web/WWD_General.py b/wizards/com/sun/star/wizards/web/WWD_General.py index 356268d6b2e2..c3df6588fffc 100644 --- a/wizards/com/sun/star/wizards/web/WWD_General.py +++ b/wizards/com/sun/star/wizards/web/WWD_General.py @@ -1,5 +1,6 @@ from WebWizardDialog import * from common.SystemDialog import SystemDialog +from ui.event.ListModelBinder import ListModelBinder ''' @author rpiterman @@ -9,9 +10,7 @@ This class implements general methods, used by different sub-classes class WWD_General(WebWizardDialog): - ''' - @param xmsf - ''' + settings = None def __init__(self, xmsf): super(WWD_General, self).__init__(xmsf) @@ -20,13 +19,13 @@ class WWD_General(WebWizardDialog): def getStatusDialog(self): statusDialog = StatusDialog( self.xMSF, StatusDialog.STANDARD_WIDTH, - resources.resLoadingSession, False, - [resources.prodName, "", "", "", "", ""], + self.resources.resLoadingSession, False, + [self.resources.prodName, "", "", "", "", ""], HelpIds.getHelpIdString(HID0_STATUS_DIALOG)) try: statusDialog.createWindowPeer(xControl.Peer) - except Exception, e: - e.printStackTrace() + except Exception: + traceback.print_exc() return statusDialog @@ -35,20 +34,19 @@ class WWD_General(WebWizardDialog): ''' def getDocAddDialog(self): - self.docAddDialog = SystemDialog.createOpenDialog(xMSF) - i = 0 - while i < self.settings.cp_Filters.getSize(): - f = (self.settings.cp_Filters.getElementAt(i)) - self.docAddDialog.addFilter( - f.cp_Name.replace("%PRODNAME", resources.prodName), - f.cp_Filter, i == 0) - i += 1 + self.docAddDialog = SystemDialog.createOpenDialog(self.xMSF) + for i in xrange(WWD_General.settings.cp_Filters.getSize()): + f = WWD_General.settings.cp_Filters.getElementAt(i) + if f is not None: + self.docAddDialog.addFilter( + f.cp_Name.replace("%PRODNAME", self.resources.prodName), + f.cp_Filter, i == 0) return self.docAddDialog def getZipDialog(self): if self.zipDialog is None: self.zipDialog = SystemDialog.createStoreDialog(xMSF) - self.zipDialog.addFilter(resources.resZipFiles, "*.zip", True) + self.zipDialog.addFilter(self.resources.resZipFiles, "*.zip", True) return self.zipDialog @@ -57,8 +55,8 @@ class WWD_General(WebWizardDialog): try: self.ftpDialog = FTPDialog.FTPDialog_unknown(xMSF, pub) self.ftpDialog.createWindowPeer(xControl.getPeer()) - except Exception, ex: - ex.printStackTrace() + except Exception: + traceback.print_exc() return self.ftpDialog @@ -68,15 +66,6 @@ class WWD_General(WebWizardDialog): return self.folderDialog.callFolderDialog(title, description, dir) - def getFileAccess(self): - if self.fileAccess is None: - try: - self.fileAccess = FileAccess(xMSF) - except Exception, ex: - ex.printStackTrace() - - return self.fileAccess - ''' returns the document specified by the given short array. @@ -84,21 +73,24 @@ class WWD_General(WebWizardDialog): @return ''' + @classmethod def getDoc(self, s): - if s.length == 0: + if len(s) == 0: return None - elif self.settings.cp_DefaultSession.cp_Content.cp_Documents.getSize() <= s[0]: + elif WWD_General.settings.cp_DefaultSession.cp_Content.cp_Documents.getSize() <= s[0]: return None else: - return self.settings.cp_DefaultSession.cp_Content.cp_Documents.getElementAt(s[0]) + return \ + WWD_General.settings.cp_DefaultSession.cp_Content.cp_Documents.getElementAt(s[0]) ''' how many documents are in the list? @return the number of documents in the docs list. ''' + @classmethod def getDocsCount(self): - return self.settings.cp_DefaultSession.cp_Content.cp_Documents.getSize() + return WWD_General.settings.cp_DefaultSession.cp_Content.cp_Documents.getSize() ''' fills the export listbox. @@ -106,7 +98,7 @@ class WWD_General(WebWizardDialog): ''' def fillExportList(self, listContent): - ListModelBinder.fillList(lstDocTargetType, listContent, None) + ListModelBinder.fillList(self.lstDocTargetType, listContent, None) ''' returns a publisher object for the given name @@ -115,7 +107,7 @@ class WWD_General(WebWizardDialog): ''' def getPublisher(self, name): - return self.settings.cp_DefaultSession.cp_Publishing.getElement(name) + return WWD_General.settings.cp_DefaultSession.cp_Publishing.getElement(name) ''' @return true if the checkbox "save session" is checked. @@ -175,7 +167,7 @@ class WWD_General(WebWizardDialog): ''' def checkDocList(self): - if self.settings.cp_DefaultSession.cp_Content.cp_Documents.getSize() \ + if WWD_General.settings.cp_DefaultSession.cp_Content.cp_Documents.getSize() \ == 0: self.enableSteps(False) return False @@ -250,7 +242,7 @@ class WWD_General(WebWizardDialog): ex.printStackTrace() peer = xControl.getPeer() AbstractErrorHandler.showMessage( - self.xMSF, peer, resources.resErrUnexpected, + self.xMSF, peer, self.resources.resErrUnexpected, ErrorHandler.ERROR_PROCESS_FATAL) ''' diff --git a/wizards/com/sun/star/wizards/web/WWD_Startup.py b/wizards/com/sun/star/wizards/web/WWD_Startup.py index 5709de9125e0..ccb10500159c 100644 --- a/wizards/com/sun/star/wizards/web/WWD_Startup.py +++ b/wizards/com/sun/star/wizards/web/WWD_Startup.py @@ -9,6 +9,9 @@ from ui.event.RadioDataAware import RadioDataAware from data.CGDocument import CGDocument from ui.DocumentPreview import DocumentPreview from StylePreview import StylePreview +from ui.event.DataAware import DataAware + +from com.sun.star.lang import IllegalArgumentException ''' Web Wizard Dialog implementation : Startup. @@ -23,10 +26,10 @@ A Value is either a JavaBean property with a Getter and a Setter or a public class Memeber. </P> When the UI Control changes, the Value changes correspondingly. -This depends on WWD_Startup.settings a Listener which calls the updateData() +This depends on WWD_General.settings a Listener which calls the updateData() method od the DataAware object. When the Value changes, the UI Control changes respopndingly. -This also depends on WWD_Startup.settings a Listener which calls the updateUI +This also depends on WWD_General.settings a Listener which calls the updateUI method of the DataAware object. </P> <P> @@ -53,7 +56,7 @@ are the controller inbetween. class WWD_Startup(WWD_General): - settings = None + selectedDoc = () ''' He - my constructor ! @@ -62,7 +65,7 @@ class WWD_Startup(WWD_General): ftp if it is.<br/> draw NaviBar and steps 1 to 7, incl. Step X, which is the Layouts ImageList on step 3.<br/> - load the WWD_Startup.settings from the configuration. <br/> + load the WWD_General.settings from the configuration. <br/> set the default save session name to the first available one (sessionX or something like that). <br/> set the Layouts ImageList ListModel, and call @@ -79,7 +82,10 @@ class WWD_Startup(WWD_General): def __init__(self, xmsf): super(WWD_Startup, self).__init__(xmsf) self.sda = None - self.selectedDoc = 0 + self.docAware = [] + self.designAware = [] + self.genAware = [] + self.pubAware = [] self.proxies = self.getOOProxies() soTemplateDir = FileAccess.getOfficePath2( xmsf, "Template", "share", "/wizard") @@ -100,21 +106,21 @@ class WWD_Startup(WWD_General): doc = OfficeDocument.createNewDocument( self.myFrame, "swriter", False, True) self.loadSettings(doc) - self.setSaveSessionName(WWD_Startup.settings.cp_DefaultSession) - self.ilLayouts.listModel = WWD_Startup.settings.cp_Layouts + self.setSaveSessionName(WWD_General.settings.cp_DefaultSession) + self.ilLayouts.listModel = WWD_General.settings.cp_Layouts self.ilLayouts.create(self) #COMMENTED - #self.checkContent(WWD_Startup.settings.cp_DefaultSession.cp_Content, Task ("", "", 99999), self.xControl) + #self.checkContent(WWD_General.settings.cp_DefaultSession.cp_Content, Task("", "", 99999), self.xUnoDialog) #saved sessions, styles, combobox save session. # also set the chosen saved session... self.fillLists() self.makeDataAware() - self.checkPublish() + #self.updateUI() # fill the documents listbox. - #COMMENTED - #self.mount(self.settings.cp_DefaultSession.cp_Content) + self.fillDocumentList(self.settings.cp_DefaultSession.cp_Content) + if self.proxies: self.setEnabled(btnFTP, False) self.setEnabled(chkFTP, False) @@ -151,9 +157,9 @@ class WWD_Startup(WWD_General): length = self.resources.resSessionName # traverse between the sessions and find the one that # has the biggest number. - for i in xrange(WWD_Startup.settings.cp_SavedSessions.getSize()): + for i in xrange(WWD_General.settings.cp_SavedSessions.getSize()): sessionName = \ - WWD_Startup.settings.cp_SavedSessions.getElementAt(i).cp_Name + WWD_General.settings.cp_SavedSessions.getElementAt(i).cp_Name if sessionName.startswith(self.resources.resSessionName): maxValue = max(maxValue, int(sessionName[length:])) @@ -177,6 +183,20 @@ class WWD_Startup(WWD_General): self.enableFinishButton(False) ''' + This method goes through all + the DataAware vectors and objects and + calls their updateUI() method. + In response, the UI is synchronized to + the state of the corresponding data objects. + ''' + def updateUI(self): + DataAware.updateUIs(self.designAware) + DataAware.updateUIs(self.genAware) + DataAware.updateUIs(self.pubAware) + self.sessionNameDA.updateUI() + checkPublish() + + ''' create the peer, add roadmap, add roadmap items, add style-preview, disable the steps 3 to 7 if no documents are @@ -204,49 +224,49 @@ class WWD_Startup(WWD_General): try: self.dpStylePreview = DocumentPreview(self.xMSF, self.imgPreview) self.stylePreview = StylePreview( - self.xMSF, WWD_Startup.settings.workPath) + self.xMSF, WWD_General.settings.workPath) self.stylePreview.refresh( - WWD_Startup.settings.cp_DefaultSession.getStyle( - WWD_Startup.settings.cp_Styles), - WWD_Startup.settings.cp_DefaultSession.cp_Design.cp_BackgroundImage) + WWD_General.settings.cp_DefaultSession.getStyle( + WWD_General.settings.cp_Styles), + WWD_General.settings.cp_DefaultSession.cp_Design.cp_BackgroundImage) self.dpStylePreview.setDocument( self.stylePreview.htmlFilename, DocumentPreview.PREVIEW_MODE) except Exception: traceback.print_exc() ''' - Loads the web wizard WWD_Startup.settings from the registry. + Loads the web wizard WWD_General.settings from the registry. ''' def loadSettings(self, document): try: # instanciate - WWD_Startup.settingsResources = \ + WWD_General.settingsResources = \ [self.resources.resPages, self.resources.resSlides, self.resources.resCreatedTemplate, self.resources.resUpdatedTemplate, self.resources.resSizeTemplate] - WWD_Startup.settings = CGSettings( - self.xMSF, WWD_Startup.settingsResources, document) + WWD_General.settings = CGSettings( + self.xMSF, WWD_General.settingsResources, document) # get configuration view confRoot = Configuration.getConfigurationRoot( self.xMSF, CONFIG_PATH, False) # read - WWD_Startup.settings.readConfiguration( + WWD_General.settings.readConfiguration( confRoot, CONFIG_READ_PARAM) - configSet = WWD_Startup.settings.cp_DefaultSession.cp_Publishing + configSet = WWD_General.settings.cp_DefaultSession.cp_Publishing # now if path variables are used in publisher pathes, they # are getting replaced here... for i in xrange(configSet.getSize()): p = configSet.getElementAt(i) p.cp_URL = self.substitute(p.cp_URL) - # initialize the WWD_Startup.settings. - WWD_Startup.settings.configure(self.xMSF) + # initialize the WWD_General.settings. + WWD_General.settings.configure(self.xMSF) # set resource needed for web page. # sort the styles alphabetically #COMMENTED - WWD_Startup.settings.cp_Styles.sort(None) + WWD_General.settings.cp_Styles.sort(None) self.prepareSessionLists() if self.proxies: self.__ftp = self.getPublisher(FTP_PUBLISHER).cp_Publish @@ -257,16 +277,16 @@ class WWD_Startup(WWD_General): def prepareSessionLists(self): # now copy the sessions list... - sessions = WWD_Startup.settings.cp_SavedSessions.childrenList + sessions = WWD_General.settings.cp_SavedSessions.childrenList - WWD_Startup.settings.savedSessions.clear() + WWD_General.settings.savedSessions.clear() for index,item in enumerate(sessions): - WWD_Startup.settings.savedSessions.add(index, item) + WWD_General.settings.savedSessions.add(index, item) # add an empty session to the saved session # list which apears in step 1 sn = CGSessionName() sn.cp_Name = self.resources.resSessionNameNone - WWD_Startup.settings.cp_SavedSessions.add(0, sn) + WWD_General.settings.cp_SavedSessions.add(0, sn) ''' fills the saved session list, the styles list, @@ -279,25 +299,25 @@ class WWD_Startup(WWD_General): # fill the saved session list. ListModelBinder.fillList(self.lstLoadSettings, - WWD_Startup.settings.cp_SavedSessions.childrenList, None) + WWD_General.settings.cp_SavedSessions.childrenList, None) # set the selected session to load. (step 1) self.selectSession() # fill the styles list. ListModelBinder.fillList(self.lstStyles, - WWD_Startup.settings.cp_Styles.childrenList, None) + WWD_General.settings.cp_Styles.childrenList, None) # fill the save session combobox (step 7) ListModelBinder.fillComboBox(self.cbSaveSettings, - WWD_Startup.settings.savedSessions.childrenList, None) + WWD_General.settings.savedSessions.childrenList, None) def selectSession(self): selectedSession = 0 - if WWD_Startup.settings.cp_LastSavedSession is not None \ - and not WWD_Startup.settings.cp_LastSavedSession == "": - ses = WWD_Startup.settings.cp_SavedSessions.getElement( + if WWD_General.settings.cp_LastSavedSession is not None \ + and not WWD_General.settings.cp_LastSavedSession == "": + ses = WWD_General.settings.cp_SavedSessions.getElement( settings.cp_LastSavedSession) if ses is not None: selectedSession = \ - WWD_Startup.settings.cp_SavedSessions.getIndexOf(ses) + WWD_General.settings.cp_SavedSessions.getIndexOf(ses) Helper.setUnoPropertyValue( self.lstLoadSettings.Model, "SelectedItems", (selectedSession,)) @@ -311,7 +331,7 @@ class WWD_Startup(WWD_General): def makeDataAware(self): #page 1 ListModelBinder( - self.lstLoadSettings, WWD_Startup.settings.cp_SavedSessions) + self.lstLoadSettings, WWD_General.settings.cp_SavedSessions) #page 2 : document properties self.docListDA = UnoDataAware.attachListBox( self, "selectedDoc", self.lstDocuments, False) @@ -324,82 +344,82 @@ class WWD_Startup(WWD_General): doc = CGDocument #dummy self.docsBinder = ListModelBinder(self.lstDocuments, - WWD_Startup.settings.cp_DefaultSession.cp_Content.cp_Documents) - UnoDataAware.attachEditControl( - doc, "cp_Title", self.txtDocTitle, True) - UnoDataAware.attachEditControl( - doc, "cp_Description", self.txtDocInfo, True) - UnoDataAware.attachEditControl( - doc, "cp_Author", self.txtDocAuthor, True) - UnoDataAware.attachListBox( - doc, "Exporter", self.lstDocTargetType, False) + WWD_General.settings.cp_DefaultSession.cp_Content.cp_Documents) + self.docAware.append(UnoDataAware.attachEditControl( + doc, "cp_Title", self.txtDocTitle, True)) + self.docAware.append(UnoDataAware.attachEditControl( + doc, "cp_Description", self.txtDocInfo, True)) + self.docAware.append(UnoDataAware.attachEditControl( + doc, "cp_Author", self.txtDocAuthor, True)) + self.docAware.append(UnoDataAware.attachListBox( + doc, "Exporter", self.lstDocTargetType, False)) #page 3 : Layout - design = WWD_Startup.settings.cp_DefaultSession.cp_Design + design = WWD_General.settings.cp_DefaultSession.cp_Design #COMMENTED #self.sda = SimpleDataAware.SimpleDataAware_unknown(design, DataAware.PropertyValue ("Layout", design), ilLayouts, DataAware.PropertyValue ("Selected", ilLayouts)) #self.ilLayouts.addItemListener(None) #page 4 : layout 2 - UnoDataAware.attachCheckBox( - design, "cp_DisplayDescription", self.chbDocDesc, True) - UnoDataAware.attachCheckBox( - design, "cp_DisplayAuthor", self.chbDocAuthor, True) - UnoDataAware.attachCheckBox( - design, "cp_DisplayCreateDate", self.chkDocCreated, True) - UnoDataAware.attachCheckBox( - design, "cp_DisplayUpdateDate", self.chkDocChanged, True) - UnoDataAware.attachCheckBox( - design, "cp_DisplayFilename", self.chkDocFilename, True) - UnoDataAware.attachCheckBox( - design, "cp_DisplayFileFormat", self.chkDocFormat, True) - UnoDataAware.attachCheckBox( - design, "cp_DisplayFormatIcon", self.chkDocFormatIcon, True) - UnoDataAware.attachCheckBox( - design, "cp_DisplayPages", self.chkDocPages, True) - UnoDataAware.attachCheckBox( - design, "cp_DisplaySize", self.chkDocSize, True) - RadioDataAware.attachRadioButtons( - WWD_Startup.settings.cp_DefaultSession.cp_Design, + self.designAware.append(UnoDataAware.attachCheckBox( + design, "cp_DisplayDescription", self.chbDocDesc, True)) + self.designAware.append(UnoDataAware.attachCheckBox( + design, "cp_DisplayAuthor", self.chbDocAuthor, True)) + self.designAware.append(UnoDataAware.attachCheckBox( + design, "cp_DisplayCreateDate", self.chkDocCreated, True)) + self.designAware.append(UnoDataAware.attachCheckBox( + design, "cp_DisplayUpdateDate", self.chkDocChanged, True)) + self.designAware.append(UnoDataAware.attachCheckBox( + design, "cp_DisplayFilename", self.chkDocFilename, True)) + self.designAware.append(UnoDataAware.attachCheckBox( + design, "cp_DisplayFileFormat", self.chkDocFormat, True)) + self.designAware.append(UnoDataAware.attachCheckBox( + design, "cp_DisplayFormatIcon", self.chkDocFormatIcon, True)) + self.designAware.append(UnoDataAware.attachCheckBox( + design, "cp_DisplayPages", self.chkDocPages, True)) + self.designAware.append(UnoDataAware.attachCheckBox( + design, "cp_DisplaySize", self.chkDocSize, True)) + self.designAware.append(RadioDataAware.attachRadioButtons( + WWD_General.settings.cp_DefaultSession.cp_Design, "cp_OptimizeDisplaySize", (self.optOptimize640x480, self.optOptimize800x600, - self.optOptimize1024x768), True) + self.optOptimize1024x768), True)) #page 5 : Style ''' note : on style change, i do not call here refresh ,but rather on a special method which will perform some display, background and Iconsets changes. ''' - UnoDataAware.attachListBox( - WWD_Startup.settings.cp_DefaultSession.cp_Design, - "Style", self.lstStyles, False) + self.designAware.append(UnoDataAware.attachListBox( + WWD_General.settings.cp_DefaultSession.cp_Design, + "Style", self.lstStyles, False)) #page 6 : site general props - UnoDataAware.attachEditControl( - WWD_Startup.settings.cp_DefaultSession.cp_GeneralInfo, - "cp_Title", self.txtSiteTitle, True) - UnoDataAware.attachEditControl( - WWD_Startup.settings.cp_DefaultSession.cp_GeneralInfo, - "cp_Description", self.txtSiteDesc, True) - UnoDataAware.attachDateControl( - WWD_Startup.settings.cp_DefaultSession.cp_GeneralInfo, - "CreationDate", self.dateSiteCreated, False) - UnoDataAware.attachDateControl( - WWD_Startup.settings.cp_DefaultSession.cp_GeneralInfo, - "UpdateDate", self.dateSiteUpdate, False) - UnoDataAware.attachEditControl( - WWD_Startup.settings.cp_DefaultSession.cp_GeneralInfo, - "cp_Email", self.txtEmail, True) - UnoDataAware.attachEditControl( - WWD_Startup.settings.cp_DefaultSession.cp_GeneralInfo, - "cp_Copyright", self.txtCopyright, True) + self.genAware.append(UnoDataAware.attachEditControl( + WWD_General.settings.cp_DefaultSession.cp_GeneralInfo, + "cp_Title", self.txtSiteTitle, True)) + self.genAware.append(UnoDataAware.attachEditControl( + WWD_General.settings.cp_DefaultSession.cp_GeneralInfo, + "cp_Description", self.txtSiteDesc, True)) + self.genAware.append(UnoDataAware.attachDateControl( + WWD_General.settings.cp_DefaultSession.cp_GeneralInfo, + "CreationDate", self.dateSiteCreated, False)) + self.genAware.append(UnoDataAware.attachDateControl( + WWD_General.settings.cp_DefaultSession.cp_GeneralInfo, + "UpdateDate", self.dateSiteUpdate, False)) + self.genAware.append(UnoDataAware.attachEditControl( + WWD_General.settings.cp_DefaultSession.cp_GeneralInfo, + "cp_Email", self.txtEmail, True)) + self.genAware.append(UnoDataAware.attachEditControl( + WWD_General.settings.cp_DefaultSession.cp_GeneralInfo, + "cp_Copyright", self.txtCopyright, True)) #page 7 : publishing - self.pubAware( - LOCAL_PUBLISHER, self.chkLocalDir, self.txtLocalDir, False) - self.pubAware( - FTP_PUBLISHER, self.chkFTP, self.lblFTP, True) - self.pubAware( - ZIP_PUBLISHER, self.chkZip, self.txtZip, False) + self.pubAware.append(self.pubAware_( + LOCAL_PUBLISHER, self.chkLocalDir, self.txtLocalDir, False)) + self.pubAware.append(self.pubAware_( + FTP_PUBLISHER, self.chkFTP, self.lblFTP, True)) + self.pubAware.append(self.pubAware_( + ZIP_PUBLISHER, self.chkZip, self.txtZip, False)) self.sessionNameDA = UnoDataAware.attachEditControl( - WWD_Startup.settings.cp_DefaultSession, "cp_Name", + WWD_General.settings.cp_DefaultSession, "cp_Name", self.cbSaveSettings, True) ''' @@ -410,8 +430,8 @@ class WWD_Startup(WWD_General): @param textbox ''' - def pubAware(self, publish, checkbox, textbox, isLabel): - p = WWD_Startup.settings.cp_DefaultSession.cp_Publishing.getElement(publish) + def pubAware_(self, publish, checkbox, textbox, isLabel): + p = WWD_General.settings.cp_DefaultSession.cp_Publishing.getElement(publish) uda = UnoDataAware.attachCheckBox(p, "cp_Publish", checkbox, True) uda.Inverse = True uda.disableObjects = [textbox] @@ -472,9 +492,9 @@ class WWD_Startup(WWD_General): @param i the number of the object (0 = local, 1 = ftp, 2 = zip) ''' - def mount(self, data, i): - (self.pubAware.get(i * 2)).setDataObject(data, True) - (self.pubAware.get(i * 2 + 1)).setDataObject(data, True) + def mountDataAware(self, data, i): + self.pubAware.get(i * 2).setDataObject(data, True) + self.pubAware.get(i * 2 + 1).setDataObject(data, True) ''' Fills the documents listbox. @@ -482,10 +502,11 @@ class WWD_Startup(WWD_General): that contains the documents (a ListModel) ''' - def mount(self, root): - ListModelBinder.fillList(lstDocuments, root.cp_Documents.items(), None) - self.docsBinder.setListModel(root.cp_Documents) - disableDocUpDown() + def fillDocumentList(self, root): + ListModelBinder.fillList(self.lstDocuments, root.cp_Documents.childrenList, None) + #COMMENTED + #self.docsBinder.setListModel(root.cp_Documents) + self.disableDocUpDown() ''' changes the DataAwares Objects' (in @@ -494,11 +515,9 @@ class WWD_Startup(WWD_General): @param list ''' - def mount(self, data, list): - i = 0 - while i < list.size(): - (list.get(i)).setDataObject(data, True) - i += 1 + def mountList(self, data, _list): + for i in _list: + i.setDataObject(data, True) ''' Checks if the document specified by the given CGDocument @@ -512,23 +531,23 @@ class WWD_Startup(WWD_General): @return true if the document is ok (a file exists in the given url). ''' - def checkDocument(self, doc, task, xC): - try: - doc.validate(xMSF, task) - return True - except FileNotFoundException, ex: + @classmethod + def checkDocument(self,xmsf, doc, task, xC): + doc.validate(xmsf, task) + return True + '''except IOError: relocate = SystemDialog.showMessageBox( self.xMSF, xC.Peer, "WarningBox", VclWindowPeerAttribute.YES_NO + VclWindowPeerAttribute.DEF_NO, getFileAccess().getPath(doc.cp_URL, "") + "\n\n" + \ self.resources.resSpecifyNewFileLocation) if relocate == 2: - file = getDocAddDialog().callOpenDialog( + _file = getDocAddDialog().callOpenDialog( False, FileAccess.getParentDir(doc.cp_URL)) - if file is None: + if _file is None: return False else: - doc.cp_URL = file[0] + doc.cp_URL = _file[0] return checkDocument(doc, task, xC) else: @@ -536,21 +555,22 @@ class WWD_Startup(WWD_General): except IllegalArgumentException, iaex: #file is a directory - AbstractErrorHandler.showMessage( + SystemDialog.showMessage( self.xMSF, xControl.Peer, self.resources.resErrIsDirectory.replace( "%FILENAME", getFileAccess().getPath(doc.cp_URL, "")), ErrorHandler.ERROR_PROCESS_FATAL) return False - except Exceptionp: + except Exception: #something went wrong. - exp.printStackTrace() - AbstractErrorHandler.showMessage( + traceback.print_exc() + SystemDialog.showMessage( self.xMSF, xControl.Peer, self.resources.resErrDocValidate.replace( "%FILENAME", getFileAccess().getPath(doc.cp_URL, "")), ErrorHandler.ERROR_PROCESS_FATAL) return False + ''' ''' Checks the documents contained in this content. @@ -577,14 +597,29 @@ class WWD_Startup(WWD_General): def disableDocUpDown(self): try: - '''setEnabled(btnDocUp, self.selectedDoc.length == 0 ? Boolean.FALSE : (self.selectedDoc[0] == 0 ? Boolean.FALSE : Boolean.TRUE)) - setEnabled(btnDocDown, self.selectedDoc.length == 0 ? Boolean.FALSE : (self.selectedDoc[0] + 1 < WWD_Startup.settings.cp_DefaultSession.cp_Content.cp_Documents.getSize() ? Boolean.TRUE : Boolean.FALSE))''' - except Exception, e: - e.printStackTrace() + if len(WWD_Startup.selectedDoc) == 0: + aux = False + aux2 = False + else: + if WWD_Startup.selectedDoc[0] == 0: + aux = False + else: + aux = True + + if WWD_Startup.selectedDoc[0] + 1 < \ + WWD_General.settings.cp_DefaultSession.cp_Content.cp_Documents.getSize(): + aux2 = True + else: + aux2 = False + + self.setEnabled(self.btnDocUp, aux) + self.setEnabled(self.btnDocDown, aux2) + except Exception: + traceback.print_exc() def updateBackgroundText(self): bg = \ - WWD_Startup.settings.cp_DefaultSession.cp_Design.cp_BackgroundImage + WWD_General.settings.cp_DefaultSession.cp_Design.cp_BackgroundImage if bg is None or bg.equals(""): bg = self.resources.resBackgroundNone else: @@ -594,11 +629,11 @@ class WWD_Startup(WWD_General): txtBackground.Model, PropertyNames.PROPERTY_LABEL, bg) def updateIconsetText(self): - iconset = WWD_Startup.settings.cp_DefaultSession.cp_Design.cp_IconSet + iconset = WWD_General.settings.cp_DefaultSession.cp_Design.cp_IconSet if iconset is None or iconset.equals(""): iconsetName = self.resources.resIconsetNone else: - IconSet = WWD_Startup.settings.cp_IconSets.getElement(iconset) + IconSet = WWD_General.settings.cp_IconSets.getElement(iconset) if IconSet is None: iconsetName = self.resources.resIconsetNone else: @@ -617,7 +652,7 @@ class WWD_Startup(WWD_General): def refreshStylePreview(self): try: updateBackgroundText() - self.stylePreview.refresh(settings.cp_DefaultSession.getStyle(), WWD_Startup.settings.cp_DefaultSession.cp_Design.cp_BackgroundImage) + self.stylePreview.refresh(settings.cp_DefaultSession.getStyle(), WWD_General.settings.cp_DefaultSession.cp_Design.cp_BackgroundImage) self.dpStylePreview.reload(xMSF) except Exception: - ex.printStackTrace() + traceback.print_exc() diff --git a/wizards/com/sun/star/wizards/web/data/CGDocument.py b/wizards/com/sun/star/wizards/web/data/CGDocument.py index cc8ff9818f34..11f6daedabbf 100644 --- a/wizards/com/sun/star/wizards/web/data/CGDocument.py +++ b/wizards/com/sun/star/wizards/web/data/CGDocument.py @@ -1,4 +1,14 @@ +from os import sep as separator from common.ConfigGroup import ConfigGroup +from document.OfficeDocument import OfficeDocument +from common.Properties import Properties +from common.PropertyNames import PropertyNames +from common.FileAccess import FileAccess +from TypeDetection import * +from common.Desktop import Desktop + +from com.sun.star.document.MacroExecMode import NEVER_EXECUTE +from com.sun.star.document.UpdateDocMode import NO_UPDATE ''' About the member fields Title, Decription and Author: @@ -16,6 +26,7 @@ The same is valid for *description* and *author*. ''' class CGDocument(ConfigGroup): + cp_Exporter = None cp_Index = -1 PAGE_TYPE_PAGE = 1 PAGE_TYPE_SLIDE = 2 @@ -30,6 +41,7 @@ class CGDocument(ConfigGroup): sizeBytes = -1 pages = -1 valid = False + appType = None ''' the task will advance 5 times during validate. @@ -39,30 +51,30 @@ class CGDocument(ConfigGroup): ''' def validate(self, xmsf, task): - if not getSettings().getFileAccess(xmsf).exists(self.cp_URL, False): + if not self.root.getFileAccess(xmsf).exists(self.cp_URL, False): raise FileNotFoundException ( "The given URL does not point to a file"); - if getSettings().getFileAccess(xmsf).isDirectory(self.cp_URL): + if self.root.getFileAccess(xmsf).isDirectory(self.cp_URL): raise IllegalArgumentException ( "The given URL points to a directory"); #create a TypeDetection service - mediaDescriptor = OfficeDocument.getFileMediaDecriptor( + self.mediaDescriptor = OfficeDocument.getFileMediaDecriptor( xmsf, self.cp_URL) - task.advance(True) + #task.advance(True) #1 - analyzeFileType(self.mediaDescriptor) - task.advance(True) + self.analyzeFileType(self.mediaDescriptor) + #task.advance(True) #2 - path = getSettings().getFileAccess(xmsf).getPath(self.cp_URL, "") - localFilename = FileAccess.getFilename(path, File.separator) + path = self.root.getFileAccess(xmsf).getPath(self.cp_URL, "") + localFilename = FileAccess.getFilename(path, separator) ''' if the type is a star office convertable document We try to open the document to get some properties ''' xProps = None - task.advance(True) + #task.advance(True) #3 if self.isSOOpenable: # for documents which are openable through SO, @@ -71,22 +83,22 @@ class CGDocument(ConfigGroup): props = range(3) props[0] = Properties.createProperty("Hidden", True) props[1] = Properties.createProperty( - "MacroExecutionMode", MacroExecMode.NEVER_EXECUTE) + "MacroExecutionMode", NEVER_EXECUTE) props[2] = Properties.createProperty( - "UpdateDocMode", UpdateDocMode.NO_UPDATE) + "UpdateDocMode", NO_UPDATE) component = desktop.loadComponentFromURL( - self.cp_URL, "_default", 0, props) - xProps = component.getDocumentProperties() + self.cp_URL, "_default", 0, tuple(props)) + xProps = component.DocumentProperties - task.advance(True) + #task.advance(True) #4 #now use the object to read some document properties. if xProps != None: - title = xProps.getTitle() - description = xProps.getDescription() - author = xProps.getAuthor() - createDate = xProps.getCreationDate() - updateDate = xProps.getModificationDate() + title = xProps.Title + description = xProps.Description + author = xProps.Author + createDate = xProps.CreationDate + updateDate = xProps.ModificationDate else: #get some information from OS. @@ -94,24 +106,24 @@ class CGDocument(ConfigGroup): updateDate = \ getSettings().getFileAccess(xmsf).getLastModified(self.cp_URL) - task.advance(True) + #task.advance(True) #5 valid = True - if self.cp_Title.equals(""): + if self.cp_Title == "": cp_Title = self.title - if self.cp_Title.equals(""): + if self.cp_Title == "": cp_Title = self.localFilename - if self.cp_Description.equals(""): + if self.cp_Description == "": cp_Description = self.description - if self.cp_Author.equals(""): + if self.cp_Author == "": cp_Author = self.author if self.cp_Exporter == None or self.cp_Exporter == "": cp_Exporter = \ - getSettings().cp_Exporters.getKey(getSettings().getExporters(self.appType)[0]) + self.root.cp_Exporters.getKey(self.root.getExporters(CGDocument.appType)) ''' Analyzes a type-detection string, returned from the TypeDetection service, @@ -122,46 +134,46 @@ class CGDocument(ConfigGroup): if mediaDesc is None: media = "" else: - mediaProperties.getPropertyValue( + media = Properties.getPropertyValue( self.mediaDescriptor, PropertyNames.PROPERTY_NAME) - appType = getDocType(media) - isSOOpenable = (self.appType == TypeDetection.WRITER_DOC or self.appType == TypeDetection.CALC_DOC or self.appType == TypeDetection.IMPRESS_DOC or self.appType == TypeDetection.DRAW_DOC) or self.appType == TypeDetection.HTML_DOC - parts = JavaTools.ArrayoutofString(media, "_") - if parts.length < 2: - isSODocument = False + CGDocument.appType = self.getDocType(media) + self.isSOOpenable = (CGDocument.appType == WRITER_DOC or CGDocument.appType == CALC_DOC or CGDocument.appType == IMPRESS_DOC or CGDocument.appType == DRAW_DOC) or CGDocument.appType == HTML_DOC + parts = media.split("_") + if len(parts) < 2: + self.isSODocument = False else: - isSODocument = self.isSOOpenable and (parts[1].startsWith("Star")) + self.isSODocument = self.isSOOpenable and (parts[1].startswith("Star")) ''' @param media is the media description string returned by an UNO TypeDetection object. - @return one of the constants in the interface TypeDetection. + @return one of the constants in the interface ''' def getDocType(self, media): - if media.equals(""): - return TypeDetection.NO_TYPE + if media == "": + return NO_TYPE - if media.startsWith("writer"): - if media.startsWith("writer_web_HTML"): - return TypeDetection.HTML_DOC + if media.startswith("writer"): + if media.startswith("writer_web_HTML"): + return HTML_DOC else: - return TypeDetection.WRITER_DOC - - elif media.startsWith("calc"): - return TypeDetection.CALC_DOC - elif media.startsWith("draw"): - return TypeDetection.DRAW_DOC - elif media.startsWith("impress"): - return TypeDetection.IMPRESS_DOC - elif media.startsWith("pdf"): - return TypeDetection.PDF_DOC - elif media.startsWith("gif") or media.startsWith("jpg"): - return TypeDetection.WEB_GRAPHICS - elif media.startsWith("wav"): - return TypeDetection.SOUND_FILE + return WRITER_DOC + + elif media.startswith("calc"): + return CALC_DOC + elif media.startswith("draw"): + return DRAW_DOC + elif media.startswith("impress"): + return IMPRESS_DOC + elif media.startswith("pdf"): + return PDF_DOC + elif media.startswith("gif") or media.startswith("jpg"): + return WEB_GRAPHICS + elif media.startswith("wav"): + return SOUND_FILE else: - return TypeDetection.NO_TYPE + return NO_TYPE def createDOM(self, parent): d = getSettings().cp_DefaultSession.cp_Design @@ -214,7 +226,7 @@ class CGDocument(ConfigGroup): def getIcon(self, exporter): if exporter.cp_Icon == "": - return getIcon(self.appType) + return getIcon(CGDocument.appType) else: return exporter.cp_Icon @@ -237,7 +249,7 @@ class CGDocument(ConfigGroup): ''' def setExporter(self, exporter_): - exp = getSettings().getExporters(self.appType)[exporter_[0]] + exp = getSettings().getExporters(CGDocument.appType)[exporter_[0]] cp_Exporter = getSettings().cp_Exporters.getKey(exp) ''' @@ -250,7 +262,7 @@ class CGDocument(ConfigGroup): return 0 exporter = getSettings().cp_Exporters.getElement(self.cp_Exporter) - exporters = getSettings().getExporters(self.appType) + exporters = getSettings().getExporters(CGDocument.appType) i = 0 while i < exporters.length: if exporters[i] == exporter: diff --git a/wizards/com/sun/star/wizards/web/data/CGExporter.py b/wizards/com/sun/star/wizards/web/data/CGExporter.py index dee2165be79f..882091ab9e5f 100644 --- a/wizards/com/sun/star/wizards/web/data/CGExporter.py +++ b/wizards/com/sun/star/wizards/web/data/CGExporter.py @@ -19,5 +19,5 @@ class CGExporter(ConfigGroup): cp_Arguments = ConfigSet(CGArgument()) def supports(self, mime): - return cp_SupportedMimeTypes == "" or \ - cp_SupportedMimeTypes.index(mime) > -1 + return CGExporter.cp_SupportedMimeTypes == "" or \ + CGExporter.cp_SupportedMimeTypes.index(mime) > -1 diff --git a/wizards/com/sun/star/wizards/web/data/CGSettings.py b/wizards/com/sun/star/wizards/web/data/CGSettings.py index 919145a2a5e0..d79fa1e94942 100644 --- a/wizards/com/sun/star/wizards/web/data/CGSettings.py +++ b/wizards/com/sun/star/wizards/web/data/CGSettings.py @@ -35,6 +35,7 @@ class CGSettings(ConfigGroup): savedSessions = ConfigSet(CGSessionName()) cp_DefaultSession = CGSession() cp_LastSavedSession = str() + fileAccess = None def __init__(self, xmsf_, resources_, document): self.xmsf = xmsf_ @@ -43,7 +44,7 @@ class CGSettings(ConfigGroup): self.xmsf, "Config", "", "") self.soGalleryDir = FileAccess.getOfficePath2( self.xmsf, "Gallery", "share", "") - root = self + ConfigGroup.root = self self.formatter = self.Formatter(self.xmsf, document) self.resources = resources_ self.workPath = None @@ -54,23 +55,23 @@ class CGSettings(ConfigGroup): def getExporters(self, mime): exps = self.exportersMap.get(mime) if exps is None: - self.exportersMap.put(mime, exps = createExporters(mime)) + exps = self.createExporters(mime) + self.exportersMap[mime] = exps return exps def createExporters(self, mime): - exporters = self.cp_Exporters.items() - v = Vector.Vector() - i = 0 - while i < exporters.length: - if (exporters[i]).supports(mime): - try: - v.add(exporters[i]) - except Exception, ex: - ex.printStackTrace() - - i += 1 - return v.toArray(self.__class__.EMPTY_ARRAY_1) + exporters = self.cp_Exporters.childrenList + v = [] + for i in exporters: + if i is not None: + if i.supports(mime): + try: + v.append(i) + except Exception, ex: + traceback.print_exc() + + return v ''' call after read. @@ -100,10 +101,10 @@ class CGSettings(ConfigGroup): def getFileAccess(self, xmsf = None): if xmsf is None: xmsf = self.xmsf - if self.fileAccess is None: - self.fileAccess = FileAccess.FileAccess_unknown(xmsf) + if CGSettings.fileAccess is None: + CGSettings.fileAccess = FileAccess(xmsf) - return self.fileAccess + return CGSettings.fileAccess class Formatter(object): def __init__(self, xmsf, document): |