Go to the documentation of this file. 1 #ifndef CNOID_BASE_ITEM_FILE_IO_H
2 #define CNOID_BASE_ITEM_FILE_IO_H
5 #include <cnoid/Referenced>
8 #include "exportdecl.h"
16 class ItemFileIOExtenderBase;
26 OptionPanelForLoading = 1 << 2,
28 OptionPanelForSaving = 1 << 4,
37 bool isFormat(
const std::string&
id)
const;
39 void setApi(
int apiSet);
40 bool hasApi(
int api)
const;
41 void setCaption(
const std::string& caption);
42 const std::string& caption()
const;
43 void setFileTypeCaption(
const std::string& caption);
44 const std::string& fileTypeCaption()
const;
45 void addFormatIdAlias(
const std::string& formatId);
46 void addExtensions(
const std::vector<std::string>& extensions);
51 void setExtensionFunction(std::function<std::string()> func);
53 std::vector<std::string> extensions()
const;
55 void setInterfaceLevel(InterfaceLevel level);
56 int interfaceLevel()
const;
58 virtual Item* createItem() = 0;
62 void setInvocationType(
int type);
66 const std::string& filename,
67 Item* parentItem =
nullptr,
bool doAddition =
true,
Item* nextItem =
nullptr,
68 const Mapping* options =
nullptr);
71 Item* item,
const std::string& filename,
72 Item* parentItem =
nullptr,
bool doAddition =
true,
Item* nextItem =
nullptr,
73 const Mapping* options =
nullptr);
76 bool saveItem(
Item* item,
const std::string& filename,
const Mapping* options =
nullptr);
79 virtual void resetOptions();
80 virtual void storeOptions(
Mapping* options);
81 virtual bool restoreOptions(
const Mapping* options);
84 virtual QWidget* getOptionPanelForLoading();
85 virtual void fetchOptionPanelForLoading();
93 virtual QWidget* getOptionPanelForSaving(
Item* item);
94 virtual void fetchOptionPanelForSaving();
97 int invocationType()
const;
99 bool isRegisteredForSingletonItem()
const;
100 Item* findSingletonItemInstance()
const;
105 static std::vector<std::string> separateExtensions(
const std::string& multiExtString);
108 ItemFileIO(
const std::string& formatId,
int api);
113 void setExtension(
const std::string& extension);
114 void setExtensions(
const std::vector<std::string>& extensions);
117 virtual bool load(
Item* item,
const std::string& filename);
120 virtual bool save(
Item* item,
const std::string& filename);
123 void putWarning(
const std::string& message);
124 void putError(
const std::string& message);
131 void setActuallyLoadedItem(
Item* item);
142 template<
class ItemType>
152 virtual bool load(
Item* item,
const std::string& filename)
override final {
153 if(
auto derived =
dynamic_cast<ItemType*
>(item)){
154 return load(derived, filename);
158 virtual bool load(ItemType* ,
const std::string& ) {
161 virtual bool save(
Item* item,
const std::string& filename)
override final {
162 if(
auto derived =
dynamic_cast<ItemType*
>(item)){
163 return save(derived, filename);
167 virtual bool save(ItemType* ,
const std::string& ) {
187 bool isAvailable()
const;
188 virtual bool load(
Item* item,
const std::string& filename)
override final;
189 virtual void resetOptions()
override;
190 virtual void storeOptions(
Mapping* options)
override;
191 virtual bool restoreOptions(
const Mapping* options)
override;
192 virtual QWidget* getOptionPanelForLoading()
override;
193 virtual void fetchOptionPanelForLoading()
override;
194 virtual bool save(
Item* item,
const std::string& filename)
override final;
195 virtual QWidget* getOptionPanelForSaving(
Item* item)
override final;
196 virtual void fetchOptionPanelForSaving()
override;
200 template<
class ItemType,
class BaseItemType = ItemType>
209 const std::string& filename,
211 const Mapping* options =
nullptr) {
212 return static_cast<ItemType*
>(
220 virtual bool load(ItemType* item,
const std::string& filename) {
223 virtual bool save(ItemType* item,
const std::string& filename) {
Definition: ItemFileIO.h:20
virtual QWidget * getOptionPanelForSaving(ItemType *item)
Definition: ItemFileIO.h:226
virtual bool save(Item *item, const std::string &filename) override final
Definition: ItemFileIO.cpp:586
Definition: ValueTree.h:251
Definition: ItemFileIO.h:143
InterfaceLevel
Definition: ItemFileIO.h:30
ItemFileIoExtender(const std::string &formatId="")
Definition: ItemFileIO.h:204
virtual QWidget * getOptionPanelForSaving(ItemType *item)
Definition: ItemFileIO.h:173
virtual bool load(Item *item, const std::string &filename) override final
Definition: ItemFileIO.cpp:530
Definition: ItemFileIO.h:179
virtual QWidget * getOptionPanelForSaving(Item *item) override final
Definition: ItemFileIO.cpp:572
virtual bool load(Item *item, const std::string &filename) override final
Definition: ItemFileIO.h:152
Definition: ItemFileDialog.h:11
virtual bool save(ItemType *item, const std::string &filename)
Definition: ItemFileIO.h:223
virtual Item * createItem() override
Definition: ItemFileIO.h:149
virtual bool save(Item *item, const std::string &filename) override final
Definition: ItemFileIO.h:161
virtual QWidget * getOptionPanelForSaving(Item *item) override final
Definition: ItemFileIO.h:170
API
Definition: ItemFileIO.h:23
virtual bool load(ItemType *, const std::string &)
Definition: ItemFileIO.h:158
Definition: AbstractSceneLoader.h:11
ItemFileIoBase(const std::string &formatId, int api)
Definition: ItemFileIO.h:146
virtual bool save(ItemType *, const std::string &)
Definition: ItemFileIO.h:167
@ Standard
Definition: ItemFileIO.h:30
Definition: Referenced.h:54
Item * parentItem()
Definition: ItemFileIO.cpp:473
Definition: ItemFileIO.h:201
virtual bool load(ItemType *item, const std::string &filename)
Definition: ItemFileIO.h:220
ItemType * loadItem(const std::string &filename, Item *parentItem=nullptr, bool doAddition=true, Item *nextItem=nullptr, const Mapping *options=nullptr)
Definition: ItemFileIO.h:208
ref_ptr< ItemFileIO > ItemFileIOPtr
Definition: ItemFileIO.h:140
Definition: ItemManager.h:53
int api() const
Definition: ItemFileIO.cpp:131
InvocationType
Definition: ItemFileIO.h:31
Item * loadItem(const std::string &filename, Item *parentItem=nullptr, bool doAddition=true, Item *nextItem=nullptr, const Mapping *options=nullptr)
Definition: ItemFileIO.cpp:275
virtual Item * createItem() override
Definition: ItemFileIO.h:217