COOPY » Guide
version 0.6.5
|
00001 00002 #include <coopy/FormatSniffer.h> 00003 #include <coopy/SocialCalcTextBook.h> 00004 #include <coopy/CsvRead.h> 00005 #include <coopy/JsWrap.h> 00006 #include <coopy/FileIO.h> 00007 #include <coopy/SocialCalcSheet.h> 00008 #include "jsapi.h" 00009 00010 using namespace coopy::store; 00011 using namespace coopy::format; 00012 using namespace coopy::store::socialcalc; 00013 using namespace coopy::js; 00014 using namespace std; 00015 00016 class SCCSV : public CsvSheetReader { 00017 public: 00018 CsvSheet *sheet; 00019 virtual CsvSheet *nextSheet(const char *name, bool named) { 00020 return sheet; 00021 } 00022 }; 00023 00024 bool SocialCalcTextBook::open(const Property& config) { 00025 if (!config.check("file")) return false; 00026 if (config.check("name")) { 00027 name = config.get("name").asString(); 00028 } 00029 00030 FormatSniffer f; 00031 if (!f.open(config.get("file").asString().c_str(),true)) return false; 00032 return sheet.fromSocialCalcString(f.read()); 00033 } 00034 00035 00036 bool SocialCalcTextBook::write(TextBook *book, const Property& config) { 00037 if (!book) return false; 00038 SocialCalcTextBook *prev = dynamic_cast<SocialCalcTextBook *>(book); 00039 if (prev) { 00040 FileIO io; 00041 string txt = prev->sheet.toSocialCalcString(config); 00042 return io.openAndWrite(txt,config); 00043 } 00044 if (book->getNames().size()>1) { 00045 fprintf(stderr,"* socialcalc plugin cannot currently deal with multiple sheets\n"); 00046 return false; 00047 } 00048 SocialCalcSheet sheet; 00049 if (!sheet.fromCsvString(book->readSheetByIndex(0).toString())) return false; 00050 FileIO io; 00051 return io.openAndWrite(sheet.toSocialCalcString(config),config); 00052 }