コード例 #1
0
ファイル: DlgNewProject.py プロジェクト: fahrstuhl/PFS
    def __init__(self, parent, title):
        wx.Dialog.__init__(self,
                           parent,
                           name=u'DlgNewProject',
                           style=wx.DEFAULT_DIALOG_STYLE,
                           title=title)

        self._InitCtrls()
        self._InitSizers()

        self.pnlHdr.SetTitle(title)
        self.pnlHdr.SetBitmap(wx.ArtProvider.GetBitmap('PFS_ICON_32'))

        self.choiceAspect.Append(Aspect.ASPECT_16_9)
        self.choiceAspect.Append(Aspect.ASPECT_4_3)
        self.choiceAspect.Append(Aspect.ASPECT_3_2)
        self.choiceAspect.Select(0)

        self.tcProject.SetMinSize(wx.Size(300, -1))
        self.tcFolder.SetMinSize(wx.Size(300, -1))
        self.choiceAspect.SetMinSize(wx.Size(300, -1))

        self.tcProject.SetValue(_(u"Unnamed project"))
        self.tcProject.SelectAll()
        self.tcProject.SetFocus()

        projPath = Settings().GetProjectPath()
        if not projPath:
            projPath = os.path.join(wx.GetHomeDir(), _(u"My PhotoFilmStrips"))
            Settings().SetProjectPath(projPath)
        self.tcFolder.SetValue(projPath)

        self.Fit()
        self.CenterOnParent()
        self.SetFocus()
コード例 #2
0
ファイル: PnlPfsProject.py プロジェクト: jensgoe/PFS
    def OnImportPics(self, event):
        dlg = wx.FileDialog(self, _("Import images"),
                            Settings().GetImagePath(), "",
                            _("Image files") + " (*.*)|*.*",
                            wx.FD_OPEN | wx.FD_MULTIPLE | wx.FD_PREVIEW)
        if dlg.ShowModal() == wx.ID_OK:
            pics = []
            for path in dlg.GetPaths():
                if not self._CheckImportedPic(path):
                    continue

                pic = Picture(path)
                pics.append(pic)
                ImageCache().RegisterPicture(pic)

            selItms = self.lvPics.GetSelected()
            self.InsertPictures(pics,
                                selItms[0] + 1 if selItms else None,
                                autopath=True)

            Settings().SetImagePath(os.path.dirname(path))

            selPics = self.lvPics.GetSelectedPictures()
            self.pnlEditPicture.SetPictures(selPics)
        dlg.Destroy()
コード例 #3
0
    def __init__(self, parent, rendererProvider, aspectRatio):
        self._init_ctrls(parent)
        self.Bind(wx.EVT_CLOSE, self.OnCmdCancelButton)

        self.pnlHdr.SetTitle(_('Configure output and start render process'))
        self.pnlHdr.SetBitmap(wx.ArtProvider.GetBitmap('PFS_RENDER_32'))

        self.cbDraft.SetToolTip(
            _(u"Activate this option to generate a preview of your PhotoFilmStrip. The rendering process will speed up dramatically, but results in lower quality."
              ))

        self.aspectRatio = aspectRatio
        self.__InitProfiles()
        self.choiceFormat.SetRendererProvider(rendererProvider)

        defaultFormat = rendererProvider.GetDefault()
        if isinstance(defaultFormat, str):
            self.choiceFormat.SetStringSelection(defaultFormat)
        elif isinstance(defaultFormat, int):
            self.choiceFormat.SetSelection(defaultFormat)
        self.OnChoiceFormat(None)

        settings = Settings()
        self.__SelectProfileByName(settings.GetLastProfile())

        self.SetEscapeId(wxID_DLGRENDERCMDCANCEL)
        self.SetInitialSize(self.GetEffectiveMinSize())
        self.Fit()
        self.CentreOnParent()
        self.SetFocus()

        self.profile = None
        self.draftMode = False
        self.formatData = None
コード例 #4
0
    def _SaveSettings(self):
        settings = Settings()
        settings.SetLastProfile(self.__profile.GetName())

        try:
            idxRenderer = RENDERERS.index(self.__rendererClass)
        except ValueError:
            return

        settings.SetUsedRenderer(idxRenderer)
コード例 #5
0
    def OnCmdBrowseAudioButton(self, event):  # pylint: disable=unused-argument
        dlg = wx.FileDialog(self, _("Select music"),
                            Settings().GetAudioPath(), "",
                            _("Audio files") + " (*.*)|*.*",
                            wx.FD_OPEN | wx.FD_MULTIPLE)
        if dlg.ShowModal() == wx.ID_OK:
            for path in dlg.GetPaths():
                Settings().SetAudioPath(os.path.dirname(path))
                self.__AddAudioItem(path, select=True)

        dlg.Destroy()
コード例 #6
0
    def OnCmdBrowseAudioButton(self, event):  # pylint: disable=unused-argument
        dlg = wx.FileDialog(self, _(u"Select music"),
                            Settings().GetAudioPath(), "",
                            _(u"Audio files") + " (*.*)|*.*",
                            wx.FD_OPEN | wx.FD_MULTIPLE)
        if dlg.ShowModal() == wx.ID_OK:
            path = dlg.GetPath()
            Settings().SetAudioPath(os.path.dirname(path))

            for path in dlg.GetPaths():
                self.lvAudio.Append(path)

        dlg.Destroy()
コード例 #7
0
    def Execute(self):
        audioFiles = []
        audioLength = 0
        for audioFile in self.__photoFilmStrip.GetAudioFiles():
            if CheckFile(audioFile):
                length = GPlayer(audioFile).GetLength()
                audioFiles.append(audioFile)
                logging.debug("Using audiofile '%s' with length: %s", audioFile, length)
                audioLength += length
            else:
                logging.warning("Missing audiofile '%s'!", audioFile)

        outFile = self._CheckAndGetOutFile()

        self._SaveSettings()

        savedProps = Settings().GetRenderProperties(self.__rendererClass.__name__)
        for prop in self.__rendererClass.GetProperties():
            value = savedProps.get(prop.lower(), self.__rendererClass.GetProperty(prop))
            self.__rendererClass.SetProperty(prop, value)

        totalLength = self.__photoFilmStrip.GetDuration(False)
        if totalLength == -1:
            totalLength = int(round((audioLength + 500) / 1000.0))

        renderer = self.__rendererClass()
        renderer.Init(self.__profile,
                      self.__photoFilmStrip.GetAspect(),
                      outFile)

        renderer.SetAudioFiles(audioFiles)

        if self.__photoFilmStrip.GetTimelapse():
            uxEvent = "RenderTimeLapse"
            renderEngine = RenderEngineTimelapse(self.__profile,
                                                 self.__photoFilmStrip.GetPictures(),
                                                 self.__draftMode)
        else:
            uxEvent = "RenderSlideshow"
            renderEngine = RenderEngineSlideshow(self.__profile,
                                                 self.__photoFilmStrip.GetPictures(),
                                                 self.__draftMode,
                                                 totalLength)

        name = "%s (%s)" % (self.__photoFilmStrip.GetName(),
                            self.__profile.GetName())

        self.__renderJob = RenderJob(name, renderer,
                                     renderEngine.GetTasks())
        self.__renderJob.AddUxEvent(uxEvent)
        self.__renderJob.AddUxEvent(self.__profile.GetName())
コード例 #8
0
ファイル: ActionRender.py プロジェクト: PhotoFilmStrip/PFS
    def Execute(self):
        audioFiles = []
        audioLength = 0
        for audioFile in self.__photoFilmStrip.GetAudioFiles():
            if self.CheckFile(audioFile):
                length = GPlayer(audioFile).GetLength()
                audioFiles.append(audioFile)
                logging.debug("Using audiofile '%s' with length: %s", audioFile, length)
                audioLength += length
            else:
                logging.warn("Missing audiofile '%s'!", audioFile)

        outpath = self._CheckAndGetOutpath()
        
        self._SaveSettings()
        
        savedProps = Settings().GetRenderProperties(self.__rendererClass.__name__)
        for prop in self.__rendererClass.GetProperties():
            value = savedProps.get(prop.lower(), self.__rendererClass.GetProperty(prop))
            self.__rendererClass.SetProperty(prop, value)
        
        totalLength = self.__photoFilmStrip.GetDuration(False)
        if totalLength == -1:
            totalLength = int(round((audioLength + 500) / 1000.0))
        
        renderer = self.__rendererClass()
        renderer.Init(self.__profile, 
                      self.__photoFilmStrip.GetAspect(),
                      outpath)
        
        renderer.SetAudioFiles(audioFiles)

        if self.__photoFilmStrip.GetTimelapse():
            renderEngine = RenderEngineTimelapse(outpath,
                                                 self.__profile,
                                                 self.__photoFilmStrip.GetPictures(),
                                                 self.__draftMode)
        else:
            renderEngine = RenderEngineSlideshow(outpath,
                                                 self.__profile,
                                                 self.__photoFilmStrip.GetPictures(),
                                                 self.__draftMode,
                                                 totalLength)

        name = "%s (%s)" % (self.__photoFilmStrip.GetName(),
                            self.__profile.GetName())

        self.__renderJob = RenderJob(name, renderer,
                                     renderEngine.GetTasks())
コード例 #9
0
ファイル: FrmMain.py プロジェクト: tReMaker/PFS
 def OnProjectLoad(self, event):
     dlg = wx.FileDialog(self, _(u"Select %s-Project") % Constants.APP_NAME,
                         Settings().GetProjectPath(), "",
                         Constants.APP_NAME + u'-' + _(u"Files") + " (*.pfs;*.pfstory)|*.pfs;*.pfstory",
                         wx.FD_OPEN)
     if dlg.ShowModal() == wx.ID_OK:
         self.LoadProject(dlg.GetPath())
コード例 #10
0
    def RefreshPage(self, withHistory=True):
        if withHistory:
            htmlParts = []
            fileHistory = Settings().GetFileHistory()
            for recentFile in fileHistory:
                if ProjectFile(filename=recentFile).IsOk():
                    htmlPart = """<td align="center" valign="bottom">
                        <wxp module="photofilmstrip.gui.PnlWelcome" class="LinkOpenPfs">
                            <param name="filename" value="%s">
                        </wxp>
                    </td>""" % recentFile
                    htmlParts.append(htmlPart)

            breakAt = 4
            for idx in xrange((len(htmlParts) - 1) / breakAt):
                htmlParts.insert(idx + ((idx + 1) * breakAt), "</tr><tr>")

            if htmlParts:
                self.htmlTitle = _(u"Recent projects")
                self.htmlText = ""
            else:
                self.htmlTitle = _(u"How to start...")
                self.htmlText = _(u"Create a new project or load an existing one.")

            self.htmlRecentProjects = "".join(htmlParts)

        html = HTML_TEMPLATE % {'title': self.htmlTitle,
                                 'text': self.htmlText,
                                 'htmlRecentProjects': self.htmlRecentProjects,
                                 'htmlUpdate': self.htmlUpdate}

        self.htmlWin.SetPage(html)
コード例 #11
0
    def __NotifyUpdate(self):
        if not self.__updateChecker.IsDone():
            wx.CallLater(100, self.__NotifyUpdate)
            return
        if not self.__updateChecker.IsOk():
            return
#        if not self.__updateChecker.IsNewer(Settings().GetLastKnownVersion()):
#            return
        if not self.__updateChecker.IsNewer(Constants.APP_VERSION):
            return

        Settings().SetLastKnownVersion(self.__updateChecker.GetVersion())

        html = """<h3 align="center">%(title)s</h3>
  <center>
    <wxp module="photofilmstrip.gui.PnlWelcome" class="PfsHyperlink">
        <param name="label" value="Download %(appname)s %(version)s">
    </wxp>
  </center>
  <p>%(msg)s</p>
  <pre>%(changes)s</pre>""" % {"title": _("Update available"),
                               "appname": Constants.APP_NAME,
                               "version": self.__updateChecker.GetVersion(),
                               "msg": _(u'The following changes has been made:'),
                               "changes": self.__updateChecker.GetChanges(),
                               "url": Constants.APP_URL}

        self.htmlUpdate = html
        self.RefreshPage(withHistory=False)
コード例 #12
0
ファイル: PhotoFilmStripApp.py プロジェクト: tReMaker/PFS
    def OnInit(self):
        lang = Settings().GetLanguage()
        wxLangInfo = wx.Locale.FindLanguageInfo(lang)
        if wxLangInfo is None:
            wxLang = wx.Locale.GetSystemLanguage()
        else:
            wxLang = wxLangInfo.Language
            if not wx.Locale.IsAvailable(wxLang):
                wxLang = wx.Locale.GetSystemLanguage()
        self.locale = wx.Locale(wxLang)  # pylint: disable=attribute-defined-outside-init

        ArtProvider.Init()

        frame = FrmMain()
        frame.Show()
        frame.Maximize()
        self.SetTopWindow(frame)

        DlgBugReport.Initialize(frame)

        if len(sys.argv) > 1:
            for arg in sys.argv[1:]:
                if os.path.isfile(arg):
                    frame.LoadProject(arg)

        return True
コード例 #13
0
ファイル: DlgRendererProps.py プロジェクト: tReMaker/PFS
    def OnCmdOkButton(self, event):
        propDict = {}
        for prop in self.rendererClass.GetProperties():
            if self.rendererClass.GetProperty(prop) != self.rendererClass.GetDefaultProperty(prop):
                propDict[prop] = self.rendererClass.GetProperty(prop)

        Settings().SetRenderProperties(self.rendererClass.__name__, propDict)
        self.EndModal(wx.ID_OK)
コード例 #14
0
ファイル: PnlPfsProject.py プロジェクト: jensgoe/PFS
    def OnProjectImport(self, event):
        dlg = wx.FileDialog(
            self, _("Import Slideshow"),
            Settings().GetProjectPath(), "",
            "%s %s" % (_("Portable slideshow"), "(*.ppfs)|*.ppfs"), wx.FD_OPEN)
        if dlg.ShowModal() == wx.ID_OK:
            filepath = dlg.GetPath()

            prjFile = WxProjectFile(self, filename=filepath)
            prjFile.Load()
コード例 #15
0
ファイル: DlgNewProject.py プロジェクト: jensgoe/PFS
 def OnCmdBrowseFolderButton(self, event):
     dlg = wx.DirDialog(self,
                        _("Browse for folder"),
                        defaultPath=self.tcFolder.GetValue())
     if dlg.ShowModal() == wx.ID_OK:
         path = dlg.GetPath()
         if self.__ValidateOutDir(path):
             self.tcFolder.SetValue(path)
             Settings().SetProjectPath(path)
     dlg.Destroy()
コード例 #16
0
ファイル: FrmMain.py プロジェクト: tReMaker/PFS
 def OnChangeLanguage(self, event):
     lang = ActionManager.LANG_MAP.get(event.GetId(), "en")
     Settings().SetLanguage(lang)
     ActionI18N().Execute()
     dlg = wx.MessageDialog(self,
                            _(u"You must restart %s for your new language setting to take effect.") % Constants.APP_NAME,
                            _(u"Information"),
                            wx.ICON_INFORMATION | wx.OK)
     dlg.ShowModal()
     dlg.Destroy()
コード例 #17
0
ファイル: FrmMain.py プロジェクト: tReMaker/PFS
    def AddFileToHistory(self, filename):
        if os.path.splitext(filename)[1].lower() != ".pfs":
            return

        fileList = Settings().GetFileHistory()
        if filename in fileList:
            fileList.remove(filename)
        fileList.insert(0, filename)
        Settings().SetFileHistory(fileList)
コード例 #18
0
ファイル: DlgRendererProps.py プロジェクト: tReMaker/PFS
    def __init__(self, parent, rendererClass):
        self._init_ctrls(parent)
        self.Bind(wx.EVT_CLOSE, self.OnCmdCancelButton)

        self.pnlHdr.SetTitle(_(u'Edit extended output properties'))
        self.pnlHdr.SetBitmap(wx.ArtProvider.GetBitmap('PFS_VIDEO_FORMAT_32'))
        self.rendererClass = rendererClass

        self.lcProps.DeleteAllItems()
        savedProps = Settings().GetRenderProperties(rendererClass.__name__)
        for prop in rendererClass.GetProperties():
            value = savedProps.get(prop.lower(), rendererClass.GetProperty(prop))
            self.lcProps.Append([prop, value])

            rendererClass.SetProperty(prop, value)

        self.SetAffirmativeId(wxID_DLGRENDERERPROPSCMDOK)
        self.SetEscapeId(wxID_DLGRENDERERPROPSCMDCANCEL)
        self.SetInitialSize(self.GetEffectiveMinSize())
        self.CentreOnParent()
        self.SetFocus()
コード例 #19
0
    def __init__(self, parent, rendererClass):
        self._init_ctrls(parent)
        self.Bind(wx.EVT_CLOSE, self.OnCmdCancelButton)

        self.pnlHdr.SetTitle(_(u"Edit extended output properties"))
        self.pnlHdr.SetBitmap(wx.ArtProvider.GetBitmap("wxART_EXECUTABLE_FILE", wx.ART_TOOLBAR, (32, 32)))

        self.rendererClass = rendererClass

        self.lcProps.DeleteAllItems()
        savedProps = Settings().GetRenderProperties(rendererClass.__name__)
        for prop in rendererClass.GetProperties():
            value = savedProps.get(prop.lower(), rendererClass.GetProperty(prop))
            self.lcProps.Append([prop, value])

            rendererClass.SetProperty(prop, value)

        self.SetAffirmativeId(wxID_DLGRENDERERPROPSCMDOK)
        self.SetEscapeId(wxID_DLGRENDERERPROPSCMDCANCEL)
        self.SetInitialSize(self.GetEffectiveMinSize())
        self.CentreOnParent()
        self.SetFocus()
コード例 #20
0
ファイル: PnlPfsProject.py プロジェクト: jensgoe/PFS
    def OnProjectExport(self, event):
        prj = self.__project
        curFilePath = prj.GetFilename()
        dlg = wx.FileDialog(
            self, _("Export slideshow"),
            Settings().GetProjectPath(), curFilePath,
            "%s %s" % (_("Portable slideshow"), "(*.ppfs)|*.ppfs"), wx.FD_SAVE)
        if dlg.ShowModal() == wx.ID_OK:
            filepath = dlg.GetPath()
            if os.path.splitext(filepath)[1].lower() != ".ppfs":
                filepath += ".ppfs"

            prjFile = WxProjectFile(self, self.__project, filepath)
            prjFile.Save(True)
コード例 #21
0
    def _OnAddMedia(self, event):  # pylint: disable=unused-argument
        dlg = wx.FileDialog(self, _(u"Add media"),
                            Settings().GetProjectPath(), "",
                            _(u"Media files") + " (*.*)|*.*",
                            wx.FD_OPEN | wx.FD_PREVIEW | wx.FD_MULTIPLE)
        if dlg.ShowModal() == wx.ID_OK:
            itmParent, offset = self.treeCtrlr.GetInsertInfo()
            for idx, path in enumerate(dlg.GetPaths()):
                media = Media(path)
                media.AddObserver(self)

                itmNew = self.treeCtrlr.AddMedia(itmParent, media, offset + idx)
                self.pnlMedias.SelectItem(itmNew)

        dlg.Destroy()
コード例 #22
0
    def OnImportPics(self, event):
        dlg = wx.FileDialog(self, _(u"Import images"),
                            Settings().GetImagePath(), "",
                            _(u"Imagefiles") + " (*.*)|*.*",
                            wx.FD_OPEN | wx.FD_MULTIPLE | wx.FD_PREVIEW)
        if dlg.ShowModal() == wx.ID_OK:
            pics = []
            for path in dlg.GetPaths():

                if self.__project.GetTimelapse():
                    picPattern = PicturePattern.Create(path)
                    if not picPattern.IsOk():
                        dlgErr = wx.MessageDialog(
                            self,
                            _(u"Filename '%s' does not match a number pattern "
                              u"which is necessary for a time lapse slide "
                              u"show!") % path, _(u"Error"),
                            wx.OK | wx.ICON_ERROR)
                        dlgErr.ShowModal()
                        dlgErr.Destroy()
                        continue

                pic = Picture(path)
                pics.append(pic)
                ImageCache().RegisterPicture(pic)

            selItms = self.lvPics.GetSelected()
            self.InsertPictures(pics,
                                selItms[0] + 1 if selItms else None,
                                autopath=True)

            Settings().SetImagePath(os.path.dirname(path))

            selPics = self.lvPics.GetSelectedPictures()
            self.pnlEditPicture.SetPictures(selPics)
        dlg.Destroy()
コード例 #23
0
ファイル: DlgRender.py プロジェクト: bandy101/PFS
    def OnChoiceFormat(self, event):
        if event is None:
            formatData = self.__GetChoiceDataSelected(self.choiceFormat)
        else:
            formatData = event.GetClientData()

        if isinstance(formatData, FormatData):
            self.cmdStart.Enable(formatData.IsOk())
            if formatData.IsMPEG():
                self.__InitProfiles(
                    formatData.GetRendererClass().GetName().split(" ")[0],
                    GetMPEGProfiles())
            else:
                self.__InitProfiles()

        self.__SelectProfileByName(Settings().GetLastProfile())
コード例 #24
0
ファイル: ActionManager.py プロジェクト: tReMaker/PFS
    def __init__(self, frame, menuBar, toolBar):
        self._frame = frame
        self._menuBar = menuBar
        self._toolBar = toolBar

        self._prevEditor = None
        self._toolFix = 0

        menuFile = self.__CreateMenuFile()
        menuEdit = self.__CreateMenuEdit()
        menuHelp = self.__CreateMenuHelp()
        self._menuBar.Append(menuFile, _(u'&File'))
        self._menuBar.Append(menuEdit, _(u'&Edit'))
        self._menuBar.Append(menuHelp, _(u'&Help'))

        self.__MakeToolBar(toolBar)
        self.__SelectLanguage(Settings().GetLanguage())
コード例 #25
0
    def Execute(self):
        curLang = Settings().GetLanguage()

        localeDir = None
        for localeDir in (os.path.join(Constants.APP_DIR, "share", "locale"),
                          os.path.join(Constants.APP_DIR, "locale"),):
            if os.path.isdir(localeDir):
                break

        if localeDir is None:
            gettext.install(Constants.APP_NAME, unicode=True)
            return

        try:
            lang = gettext.translation(Constants.APP_NAME,
                                       localeDir,
                                       languages=[curLang, "en"])
            lang.install(True)
        except IOError:
            gettext.install(Constants.APP_NAME, unicode=True)
コード例 #26
0
    def _OnRender(self, event):  # pylint: disable=unused-argument
        dlg = DlgRender(self, RendererProvider(), Aspect.ASPECT_16_9)
        try:
            if dlg.ShowModal() != wx.ID_OK:
                return

            profile = dlg.GetProfile()
            gstElements = dlg.GetFormatData().GetData()
        finally:
            dlg.Destroy()

        dlg = wx.FileDialog(self, _("Video file"),
                            Settings().GetProjectPath(), "",
                            _("Video files") + " (*.*)|*.*", wx.FD_SAVE)
        try:
            if dlg.ShowModal() == wx.ID_OK:
                self._OnStart(dlg.GetPath(), profile, gstElements)
            else:
                return
        finally:
            dlg.Destroy()
コード例 #27
0
    def OnProcess(self, wxParent):
        dlg = wx.MessageDialog(
            wxParent,
            _(u"Some images does not exist in the folder '%s' anymore. If the files has moved you can select the new path. Do you want to select a new path?"
              ) % self.__imgPath, _(u"Question"), wx.YES_NO | wx.ICON_QUESTION)
        try:
            if dlg.ShowModal() == wx.ID_NO:
                self.GetJob().SetAltPath(self.__imgPath, self.__imgPath)
                return
        finally:
            dlg.Destroy()

        dlg = wx.DirDialog(wxParent, defaultPath=Settings().GetImagePath())
        try:
            if dlg.ShowModal() == wx.ID_OK:
                path = dlg.GetPath()
                self.GetJob().SetAltPath(self.__imgPath, path)
                return
            else:
                self.Skip()
        finally:
            dlg.Destroy()
コード例 #28
0
    def __init__(self, parent, project=None):
        wx.Dialog.__init__(self,
                           parent,
                           name=u'DlgProjectProps',
                           style=wx.DEFAULT_DIALOG_STYLE,
                           title=_(u'Project properties'))
        self.Bind(wx.EVT_CLOSE, self.OnDlgProjectPropsClose)

        self._InitCtrls(parent)

        self.SetSizeHints(700, 250)
        self.szCtrls.AddGrowableCol(1)

        self.pnlHdr.SetTitle(_(u'PhotoFilmStrip project'))
        self.pnlHdr.SetBitmap(
            wx.ArtProvider.GetBitmap('PFS_ICON_48', wx.ART_TOOLBAR, (32, 32)))

        self.choiceAspect.Append(Aspect.ASPECT_16_9)
        self.choiceAspect.Append(Aspect.ASPECT_4_3)
        self.choiceAspect.Append(Aspect.ASPECT_3_2)
        self.choiceAspect.Select(0)

        self.tcProject.SetMinSize(wx.Size(300, -1))
        self.tcFolder.SetMinSize(wx.Size(300, -1))
        self.choiceAspect.SetMinSize(wx.Size(300, -1))
        self.timeCtrlTotalLength.SetMinSize(wx.Size(300, -1))
        self.lvAudio.SetMinSize(wx.Size(300, -1))

        defTime = wx.DateTime.Now()
        defTime.SetHMS(0, 0, 30)
        minTime = wx.DateTime.Now()
        minTime.SetHMS(0, 0, 1)
        maxTime = wx.DateTime.Now()
        maxTime.SetHMS(1, 59, 59)
        self.timeCtrlTotalLength.SetValue(defTime)
        self.timeCtrlTotalLength.SetMin(minTime)
        self.timeCtrlTotalLength.SetMax(maxTime)
        self.timeCtrlTotalLength.SetLimited(True)

        self.mediaCtrl = None

        self.__project = project

        if project is None:
            projName = _(u"Unnamed PhotoFilmStrip")
            self.tcProject.SetValue(projName)
            self.tcProject.SelectAll()
            self.tcProject.SetFocus()

            projPath = Settings().GetProjectPath()
            if not projPath:
                projPath = os.path.join(wx.GetHomeDir(),
                                        _(u"My PhotoFilmStrips"))
                Settings().SetProjectPath(projPath)
            self.tcFolder.SetValue(projPath)

            self.cbTotalLength.SetValue(False)
            self.rbManual.SetValue(True)
        else:
            projName = os.path.splitext(os.path.basename(
                project.GetFilename()))[0]
            self.tcProject.SetValue(projName)
            self.tcProject.Enable(False)

            self.tcFolder.SetValue(os.path.dirname(project.GetFilename()))
            self.tcFolder.Enable(False)
            self.cmdBrowseFolder.Enable(False)

            self.choiceAspect.SetStringSelection(project.GetAspect())
            self.choiceAspect.Enable(False)

            pfsDur = project.GetDuration(calc=True)
            duration = project.GetDuration(calc=False)
            if project.GetTimelapse():
                self.cbTotalLength.SetValue(True)
                self.rbTimelapse.SetValue(True)
            elif duration is None:
                self.cbTotalLength.SetValue(False)
            elif duration <= 0:
                self.cbTotalLength.SetValue(True)
                self.rbAudio.SetValue(True)
            else:
                self.cbTotalLength.SetValue(True)
                self.rbManual.SetValue(True)
                pfsDur = duration

            pfsDur = int(round(pfsDur))

            dur = wx.DateTime.Now()
            dur.SetHMS(0, pfsDur // 60, pfsDur % 60)
            try:
                self.timeCtrlTotalLength.SetWxDateTime(dur)
            except ValueError:
                # duration is invalid if there are no photos
                pass

            for audioFile in project.GetAudioFiles():
                idx = self.lvAudio.Append(audioFile)
                self.lvAudio.Select(idx)

        self.__ControlStatusTotalLength()
        self.__ControlStatusAudio()

        self.Fit()
        self.CenterOnParent()
        self.SetFocus()
コード例 #29
0
 def _GetDefaultSaveFolder(self):
     return Settings().GetProjectPath()
コード例 #30
0
 def AddFileToHistory(self, filename):
     fileList = Settings().GetFileHistory()
     if filename in fileList:
         fileList.remove(filename)
     fileList.insert(0, filename)
     Settings().SetFileHistory(fileList)
コード例 #31
0
ファイル: PnlPfsProject.py プロジェクト: jensgoe/PFS
 def GetDefault(self):
     settings = Settings()
     if settings.GetUsedRenderer() is None:
         return self.DEFAULT_FORMAT
     else:
         return settings.GetUsedRenderer()
コード例 #32
0
ファイル: FrmMain.py プロジェクト: PhotoFilmStrip/PFS
 def AddFileToHistory(self, filename):
     fileList = Settings().GetFileHistory()
     if filename in fileList:
         fileList.remove(filename)
     fileList.insert(0, filename)
     Settings().SetFileHistory(fileList)
コード例 #33
0
ファイル: ActionRender.py プロジェクト: bandy101/PFS
    def _SaveSettings(self):
        settings = Settings()
        settings.SetLastProfile(self.__profile.GetName())

        idxRenderer = RENDERERS.index(self.__rendererClass)
        settings.SetUsedRenderer(idxRenderer)