[Igarden-commit] Garden/source/Document ClientDocument.cp, 1.37.2.1, 1.37.2.2 ClientDocument.h, 1.1
Status: Beta
Brought to you by:
jlbedell
|
From: Jeffrey B. <jlb...@us...> - 2006-12-03 02:09:57
|
Update of /cvsroot/igarden/Garden/source/Document In directory sc8-pr-cvs2.sourceforge.net:/tmp/cvs-serv28677 Modified Files: Tag: Release_branch_v1 ClientDocument.cp ClientDocument.h Log Message: Add preference panel for document format Index: ClientDocument.cp =================================================================== RCS file: /cvsroot/igarden/Garden/source/Document/ClientDocument.cp,v retrieving revision 1.37.2.1 retrieving revision 1.37.2.2 diff -C2 -d -r1.37.2.1 -r1.37.2.2 *** ClientDocument.cp 26 Nov 2006 01:25:47 -0000 1.37.2.1 --- ClientDocument.cp 3 Dec 2006 02:09:55 -0000 1.37.2.2 *************** *** 23,26 **** --- 23,27 ---- #include <CGardenForm.h> #include <XCursorUtil.h> + #include <XModifiers.h> #include "RGXMLWriter.h" #include "SourceQuery.h" // For generating test material *************** *** 51,54 **** --- 52,57 ---- #include "GardenErrors.h" #include "ActiveMaterial.h" + #include "RGZipFile.h" + #include "Preferences.h" using namespace yaaf; *************** *** 89,98 **** if(UserCreatesNewFile()) { ! SaveAsXML(_spec); } } else if(IsDocumentNamed()) { ! SaveAsXML(_spec); } else --- 92,101 ---- if(UserCreatesNewFile()) { ! result = SaveToFileSpec(_spec); } } else if(IsDocumentNamed()) { ! result = SaveToFileSpec(_spec); } else *************** *** 100,104 **** if(UserCreatesNewFile()) { ! SaveAsXML(_spec); #if OPT_MACOS == 1 OSStatus status2 = SetWindowProxyFSSpec (_win->GetWindowPtr(), &(_spec.GetFileName())); --- 103,107 ---- if(UserCreatesNewFile()) { ! result = SaveToFileSpec(_spec); #if OPT_MACOS == 1 OSStatus status2 = SetWindowProxyFSSpec (_win->GetWindowPtr(), &(_spec.GetFileName())); *************** *** 142,146 **** if(valid) { ! SaveAsXML(spec); } --- 145,149 ---- if(valid) { ! valid = SaveToFileSpec(spec); } *************** *** 148,168 **** } // --------------------------------------------------------------------------- /// SaveAsXML // ! void ClientDocument::SaveAsXML(XGFileSpecifier &spec) { ! ErrorCode ec; ! XGFile file; ! RGXMLWriter writer; ! UInt32 numRows, n; InfoSupplier *supplier; materialID_t id; GardenDatabaseFile *db; - _spec = spec; _isNamed = true; - ec = file.Create(&spec, RSGardenDocType, RSGrdenCreator); writer.StartXMLWriter(&file); writer.WriteRaw("<?xml version=\"1.0\"?>\n"); --- 151,214 ---- } + // --------------------------------------------------------------------------- + /// SaveToFileSpec + // + bool ClientDocument::SaveToFileSpec(XGFileSpecifier &spec) + { + ErrorCode ec; + char *mimeTypeStr = "application/gardensketch"; + bool valid = true; + bool useCompound = GetActivePreferences(this)->GetBoolPref(kUseCompoundFileFormat); + + _spec = spec; + if(useCompound) + { + RGZipFile file; + + ec = file.Create(&spec, RSGardenDocType, RSGrdenCreator); + if(ec == KYAAFNoError) + { + file.CreateSubFile("mimetype", kNoCompression); + file.Write(strlen(mimeTypeStr), mimeTypeStr); + file.CloseSubFile(); + file.CreateSubFile("content.xml", kDefaultCompression); + WriteXML(file); + file.CloseSubFile(); + file.Close(); + } + else + valid = false; + } + else + { + XGFile file; + + ec = file.Create(&spec, RSGardenDocType, RSGrdenCreator); + if(ec == KYAAFNoError) + { + WriteXML(file); + file.Close(); + } + else + valid = false; + } + + + return valid; + } // --------------------------------------------------------------------------- /// SaveAsXML // ! void ClientDocument::WriteXML(XGFile &file) { ! ErrorCode ec; ! UInt32 numRows, n; ! RGXMLWriter writer; InfoSupplier *supplier; materialID_t id; GardenDatabaseFile *db; _isNamed = true; writer.StartXMLWriter(&file); writer.WriteRaw("<?xml version=\"1.0\"?>\n"); *************** *** 224,228 **** writer.WriteEndTag(); writer.EndXMLWriter(); - file.Close(); #if OPT_MACOS == 1 --- 270,273 ---- *************** *** 234,238 **** if(_fileAlias == NULL) { ! fssp = spec.GetFileName(); err = NewAlias(NULL, &fssp, &_fileAlias); } --- 279,283 ---- if(_fileAlias == NULL) { ! fssp = _spec.GetFileName(); err = NewAlias(NULL, &fssp, &_fileAlias); } *************** *** 288,291 **** --- 333,337 ---- ErrorCode ClientDocument::Open( XGFileSpecifier& filename, OSType creator, long &errLine ) { + RGZipFile inZipFile; XGFile inFile; ErrorCode ec; *************** *** 294,326 **** errLine = 0; - ec = inFile.Open(&filename, false); - if(ec != KYAAFNoError) - return ec; - _spec = filename; ! _isNamed = true; ! _layout = new Layout(this); ! ! bytesRead = inFile.Read(sizeof(buf), buf); ! if(strncmp(buf, "<?xml version=\"1.0\"?>", 21) == 0) { ! buf[sizeof(buf)-1] = '\0'; ! if(strstr(buf, "<iGarden") != NULL) { ! inFile.SetFilePos(21); ! ec = XMLDocumentOpen(&inFile, errLine); } else { inFile.Close(); ! ec = KYAAFFileOpenError; } } - else - { - // !!! Move in some things from CGardenForm - inFile.Close(); - ec = DBDocumentOpen(filename, creator); - } if(ec == KYAAFNoError) --- 340,382 ---- errLine = 0; _spec = filename; ! ec = inZipFile.Open(&filename, false); ! if(ec == KYAAFNoError) { ! inZipFile.LocateSubFile("content.xml"); ! ec = XMLDocumentOpen(&inZipFile, errLine); ! inZipFile.CloseSubFile(); ! } ! else ! { ! ec = inFile.Open(&filename, false); ! if(ec != KYAAFNoError) ! return ec; ! ! _isNamed = true; ! _layout = new Layout(this); ! ! bytesRead = inFile.Read(sizeof(buf), buf); ! if(strncmp(buf, "<?xml version=\"1.0\"?>", 21) == 0) { ! buf[sizeof(buf)-1] = '\0'; ! if(strstr(buf, "<iGarden") != NULL) ! { ! inFile.SetFilePos(21); ! ec = XMLDocumentOpen(&inFile, errLine); ! } ! else ! { ! inFile.Close(); ! ec = KYAAFFileOpenError; ! } } else { + // !!! Move in some things from CGardenForm inFile.Close(); ! ec = DBDocumentOpen(filename, creator); } } if(ec == KYAAFNoError) Index: ClientDocument.h =================================================================== RCS file: /cvsroot/igarden/Garden/source/Document/ClientDocument.h,v retrieving revision 1.18 retrieving revision 1.18.2.1 diff -C2 -d -r1.18 -r1.18.2.1 *** ClientDocument.h 21 Sep 2005 00:44:30 -0000 1.18 --- ClientDocument.h 3 Dec 2006 02:09:55 -0000 1.18.2.1 *************** *** 70,74 **** virtual bool DoDocumentSaveAs(); virtual void DoDocumentRevert(); - void SaveAsXML(XGFileSpecifier &spec); Layout* GetLayout(); OSType GetFileType(); --- 70,73 ---- *************** *** 101,104 **** --- 100,106 ---- private: + bool SaveToFileSpec(XGFileSpecifier &spec); + void WriteXML(XGFile &file); + // methods ErrorCode DBDocumentOpen(XGFileSpecifier& filename, OSType creator); |