All pastes #624803 Raw Edit

simple save/load pitivy

public text v1 · immutable
·published 2007-07-18 15:11 UTC
rendered paste body
Index: pitivi/pitivi.py
===================================================================
--- pitivi/pitivi.py	(Revision 1019)
+++ pitivi/pitivi.py	(Arbeitskopie)
@@ -36,6 +36,8 @@
 from threads import ThreadMaster
 import instance
 
+import string
+
 from gettext import gettext as _
 
 class Pitivi(gobject.GObject):
@@ -98,7 +100,59 @@
             # we're starting a GUI for the time being
             self.gui = mainwindow.PitiviMainWindow()
             self.gui.show()
+        for i in args:
+          if i == "-usetestsave":
+            # no checkings
+            print "########### ./testsave.cfg ###############"
+            for j in self.gui.actiongroup.list_actions():
+              if j.get_name() in [ "OpenProject", "SaveProject", "NewProject" ]:
+                j.set_sensitive(True)
 
+    def saveProject(self, uri=None, filepath=None):
+      """ Save the current project to the uri or filepath """
+      if 0 == 1: #this is more like a jungle
+        print "============= settings ======================="
+        for i in instance.PiTiVi.__dict__:
+          if i in ["gui", "effects" ]:
+            continue
+          print i, "=", instance.PiTiVi.__dict__[i]
+          if hasattr( instance.PiTiVi.__dict__[i], "__dict__" ):
+            for j in instance.PiTiVi.__dict__[i].__dict__:
+              print "\t", j, "=", instance.PiTiVi.__dict__[i].__dict__[j]
+              if hasattr( instance.PiTiVi.__dict__[i].__dict__[j], "__dict__" ):
+                for k in instance.PiTiVi.__dict__[i].__dict__[j].__dict__:
+                  print "\t\t", k, "=", instance.PiTiVi.__dict__[i].__dict__[j].__dict__[k]
+
+      filepath = "./testsave.cfg" 
+      gst.info("uri:%s, filepath:%s" %(uri, filepath))
+      if not uri and not filepath:
+        self.emit("not-project", "")
+        return
+      if filepath:
+        uri = "file://" + filepath
+      #if not file_is_project(uri):
+        #self.emit("not-project", uri)
+        #return
+      if self.current.settings:
+        for i in self.__dict__.keys():
+          print i, self.__dict__[i]
+        for i in self.current.__dict__.keys():
+          print i, self.current.__dict__[i]
+        filename = uri[7:]
+        file = open(filename, "w")
+        file.write( "#sources:#######################################\n")
+        for i in self.current.sources.sources.keys():
+          file.write( "source=%s\n" % ( i ) )
+        file.write( "#videosettings:#################################\n")
+        for i in [ "videopar", "videorate" ]:
+          file.write( "%s.denom=%s\n" % (i, self.current.settings.__dict__[i].__dict__['denom']) )
+          file.write( "%s.num=%s\n" % (i, self.current.settings.__dict__[i].__dict__['num']) )
+          file.write( "%s.type=%s\n" % (i, self.current.settings.__dict__[i].__dict__['type']) )
+        for i in ["aencoder","muxer", "vencoder", "audiorate", "audiochannels", "audiodepth", "videowidth", "videoheight"]:
+          file.write( "%s=%s\n" %(i, self.current.settings.__dict__[i]) )
+        file.close()
+      #print "---- end of save ---"
+
     def loadProject(self, uri=None, filepath=None):
         """ Load the given file through it's uri or filepath """
         gst.info("uri:%s, filepath:%s" % (uri, filepath))
@@ -112,9 +166,41 @@
             self.emit("not-project", uri)
             return
         # if current project, try to close it
-        if self._closeRunningProject():
-            self.current = Project(uri)
-            self.emit("new-project", self.current)
+        #if self._closeRunningProject(): #why this closes more and cannot be used to start a new project?
+        if 1 == 1:  #this is crap, because i still dont know the backgrounds, it works at program-startup only, from trial+error
+            #self.current = Project(name="testsave", uri=uri) #_("New Project"))    #create a new project dont works like expected
+            # 
+            # so this is using the old project, but resetting some values ...
+            #self.current = Project(_("New Project"))
+            self.newBlankProject()
+            self.current.name = "### usetestsave ###"
+            self.current.description = "a test, only a test, name and description is not saved\nand we use a hardcoded filename\ntestsave.cfg"
+            filename = uri[7:]
+            file = open(filename, "r")
+            lines = file.readlines()
+            file.close()
+            self.current.setSettings(self.current.getAutoSettings())
+            for line in (lines):
+              if line[0] == "#":
+                continue
+              key, value = string.split(line[:-1], "=", 2)
+              if key == "source":
+                self.current.sources.addUri(value)
+                continue
+              if key in [ "videopar.type", "videopar.denom", "videorate.type", "videorate.denom"]:
+                continue
+              if key in [ "muxer", "vencoder", "aencoder" ]:
+                self.current.settings.__dict__[key] = value
+                continue
+              if key[0:12] == "videopar.num":
+                self.current.settings.videopar = gst.Fraction( int(float(value)), 1 )
+                continue
+              if key[0:13] == "videorate.num":
+                self.current.settings.videorate = gst.Fraction( int(float(value)), 1 )
+                continue
+              self.current.settings.__dict__[key] = int(float(value))  #string.atoi(value)
+            #self.emit("settings-changed")
+            #print "--------- loaded"
 
     def _closeRunningProject(self):
         """ close the current project """
@@ -126,13 +212,17 @@
             self.current = None
         return True
 
-    def newBlankProject(self):
+    def newBlankProject(self): #try to setup a blank project - test-dr
         """ start up a new blank project """
         # if there's a running project we must close it
-        if self._closeRunningProject():
-            self.playground.pause()
-            self.current = Project(_("New Project"))
-            self.emit("new-project", self.current)
+        #if self._closeRunningProject():
+        self.playground.pause()
+          #self.current = Project(_("NewBlankProject"))
+        self.emit("new-project", self.current) # the signal works partly
+        for i in self.current.sources.sources.keys():
+          print "remove source", i
+          self.current.sources.__delitem__(i)
+        # the Timeline needs to be reset too - how?
 
     def shutdown(self):
         """ close PiTiVi """
@@ -153,6 +243,6 @@
 
 def main(argv):
     check.initial_checks()
-    ptv = Pitivi(argv)
+    ptv = Pitivi(*argv) #test-dr to read commandline args
     ptv.connect('shutdown', shutdownCb)
     gtk.main()
Index: pitivi/ui/mainwindow.py
===================================================================
--- pitivi/ui/mainwindow.py	(Revision 1019)
+++ pitivi/ui/mainwindow.py	(Arbeitskopie)
@@ -277,13 +277,15 @@
     ## Toolbar/Menu actions callback
 
     def _newProjectMenuCb(self, unused_action):
-        instance.PiTiVi.new_blank_project()
+        instance.PiTiVi.newBlankProject() #test-dr
 
     def _openProjectCb(self, unused_action):
-        raise NotImplementedError
+        #raise NotImplementedError
+        instance.PiTiVi.loadProject(filepath="./testsave.cfg")
 
     def _saveProjectCb(self, unused_action):
-        raise NotImplementedError
+        #raise NotImplementedError
+        instance.PiTiVi.saveProject(filepath="./testsave.cfg")
 
     def _saveProjectAsCb(self, unused_action):
         raise NotImplementedError
@@ -336,7 +338,8 @@
     ## PiTiVi main object callbacks
 
     def _newProjectCb(self, pitivi, project):
-        raise NotImplementedError
+        #raise NotImplementedError  
+        print "missing newProjectCb"
 
     def _closingProjectCb(self, pitivi, project):
         # Return True if we accept the project being close
@@ -347,8 +350,9 @@
         return True
 
     def _notProjectCb(self, pitivi, uri):
-        raise NotImplementedError
-
+        #raise NotImplementedError 
+        print "missing check for notProjectCb"
+        
 class EncodingDialog(GladeWindow):
     """ Encoding dialog box """
     glade_file = "encodingdialog.glade"