diff options
Diffstat (limited to 'recorded.py')
-rw-r--r-- | recorded.py | 180 |
1 files changed, 180 insertions, 0 deletions
diff --git a/recorded.py b/recorded.py new file mode 100644 index 0000000..9296742 --- /dev/null +++ b/recorded.py @@ -0,0 +1,180 @@ +#Copyright (c) 2008, Media Modifications Ltd. + +#Permission is hereby granted, free of charge, to any person obtaining a copy +#of this software and associated documentation files (the "Software"), to deal +#in the Software without restriction, including without limitation the rights +#to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +#copies of the Software, and to permit persons to whom the Software is +#furnished to do so, subject to the following conditions: + +#The above copyright notice and this permission notice shall be included in +#all copies or substantial portions of the Software. + +#THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +#IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +#FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +#AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +#LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +#OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +#THE SOFTWARE. + +import os +import gtk + +import constants +from instance import Instance +import utils +import serialize + +class Recorded: + def __init__( self ): + self.type = -1 + self.time = None + self.recorderName = None + self.recorderHash = None + self.title = None + self.colorStroke = None + self.colorFill = None + self.mediaMd5 = None + self.thumbMd5 = None + self.mediaBytes = None + self.thumbBytes = None + self.tags = None + + #flag to alert need to re-datastore the title + self.metaChange = False + + #when you are datastore-serialized, you get one of these ids... + self.datastoreId = None + self.datastoreOb = None + + #if not from the datastore, then your media is here... + self.mediaFilename = None + self.thumbFilename = None + self.audioImageFilename = None + + #for flagging when you are being saved to the datastore for the first time... + #and just because you have a datastore id, doesn't mean you're saved + self.savedMedia = False + self.savedXml = False + + #assume you took the picture + self.buddy = False + self.downloadedFromBuddy = False + self.triedMeshBuddies = [] + self.meshDownloading = False + self.meshDownloadingFrom = "" + self.meshDownloadingFromNick = "" + self.meshDownlodingPercent = 0.0 + self.meshDownloadingProgress = False + #if someone is downloading this, then hold onto it + self.meshUploading = False + self.meshReqCallbackId = 0 + + self.deleted = False + + + def setTitle( self, newTitle ): + if self.title == newTitle: + return + self.title = newTitle + self.metaChange = True + + + def setTags( self, newTags ): + self.tags = newTags + self.metaChange = True + + + def isClipboardCopyable( self ): + copyme = True + if (self.buddy): + if (not self.downloadedFromBuddy): + return False + return copyme + + + #scenarios: + #launch, your new thumb -- Journal/session + #launch, your new media -- Journal/session + #launch, their new thumb -- Journal/session/buddy + #launch, their new media -- ([request->]) Journal/session/buddy + #relaunch, your old thumb -- metadataPixbuf on request (or save to Journal/session..?) + #relaunch, your old media -- datastoreObject->file (hold onto the datastore object, delete if deleted) + #relaunch, their old thumb -- metadataPixbuf on request (or save to Journal/session..?) + #relaunch, their old media -- datastoreObject->file (hold onto the datastore object, delete if deleted) | ([request->]) Journal/session/buddy + + def getThumbPixbuf( self ): + thumbFilepath = self.getThumbFilepath() + if thumbFilepath and os.path.isfile(thumbFilepath): + return gtk.gdk.pixbuf_new_from_file(thumbFilepath) + else: + return None + + + def getThumbFilepath( self ): + if not self.thumbFilename: + return None + return os.path.join(Instance.instancePath, self.thumbFilename) + + def make_thumb_path(self): + thumbFilename = self.mediaFilename + "_thumb.jpg" + thumbFilepath = os.path.join(Instance.instancePath, thumbFilename) + thumbFilepath = utils.getUniqueFilepath(thumbFilepath, 0) + self.thumbFilename = os.path.basename(thumbFilepath) + return self.getThumbFilepath() + + def getAudioImagePixbuf( self ): + audioPixbuf = None + + if self.audioImageFilename == None: + audioPixbuf = self.getThumbPixbuf() + else: + audioFilepath = self.getAudioImageFilepath() + if (audioFilepath != None): + audioPixbuf = gtk.gdk.pixbuf_new_from_file(audioFilepath) + + return audioPixbuf + + + def getAudioImageFilepath( self ): + if (self.audioImageFilename != None): + audioFilepath = os.path.join(Instance.instancePath, self.audioImageFilename) + return os.path.abspath(audioFilepath) + else: + return self.getThumbFilepath() + + + def getMediaFilepath(self): + if (self.datastoreId == None): + if (not self.buddy): + #just taken by you, so it is in the tempSessionDir + mediaFilepath = os.path.join(Instance.instancePath, self.mediaFilename) + return os.path.abspath(mediaFilepath) + else: + if (self.downloadedFromBuddy): + #the user has requested the high-res version, and it has downloaded + mediaFilepath = os.path.join(Instance.instancePath, self.mediaFilename) + return os.path.abspath(mediaFilepath) + else: + if self.mediaFilename == None: + #creating a new filepath, probably just got here from the mesh + ext = constants.MEDIA_INFO[self.type]['ext'] + recdPath = os.path.join(Instance.instancePath, "recdFile_"+self.mediaMd5+"."+ext) + recdPath = utils.getUniqueFilepath(recdPath, 0) + self.mediaFilename = os.path.basename(recdPath) + mediaFilepath = os.path.join(Instance.instancePath, self.mediaFilename) + return os.path.abspath(mediaFilepath) + else: + mediaFilepath = os.path.join(Instance.instancePath, self.mediaFilename) + return os.path.abspath(mediaFilepath) + + else: #pulling from the datastore, regardless of who took it, cause we got it + #first, get the datastoreObject and hold the reference in this Recorded instance + if (self.datastoreOb == None): + self.datastoreOb = serialize.getMediaFromDatastore( self ) + if (self.datastoreOb == None): + print("RecordActivity error -- unable to get datastore object in getMediaFilepath") + return None + + return self.datastoreOb.file_path |