Main Page | Namespace List | Class Hierarchy | Class List | Directories | File List | Namespace Members | Class Members

UIDocument.h

00001 // Copyright (C) 2001 Jean-Marc Valin
00002 
00003 #ifndef UIDOCUMENT_H
00004 #define UIDOCUMENT_H
00005 
00006 #include <vector>
00007 #include <string>
00008 #include <libxml/tree.h>
00009 #include <map>
00010 #include "UINetwork.h"
00011 #include "UINodeParameters.h"
00012 #include <set>
00013 #include "Object.h"
00014 #include "UINodeRepository.h"
00015 
00016 namespace FD {
00017 
00018 class UINodeMenu;
00019 class Network;
00020 class ParameterSet;
00021 
00022 //FIXME: Should replace with ItemInfo
00023 class DocParameterDataText {
00024   public:
00025    std::string name;
00026    std::string value;
00027    std::string type;
00028 };
00029 
00034 class UIDocument : public Object {
00035    
00036 protected:
00038    std::vector<UINetwork *> networks;
00039 
00041    bool modified;
00042    
00044    UINodeRepository subnetInfo;
00045 
00047    std::vector<DocParameterDataText *> textParams;
00048 
00050    std::vector<ParameterText *> docInputs;
00051 
00053    std::vector<ParameterText *> docOutputs;
00054 
00056    std::vector<ParameterText *> docParams;
00057 
00059    std::string docName;
00060    
00062    std::string path;
00063    
00065    bool untitled;
00066 
00068    bool destroyed;
00069 
00071    std::string category;
00072 
00074    std::string m_comments;
00075 
00076 public:
00077 
00079    UIDocument(std::string _name);
00080 
00082    virtual ~UIDocument();
00083 
00085    virtual void load();
00086 
00088    virtual void loadXML(xmlNodePtr root);
00089 
00091    virtual void loadFromMemory(const char *mem, int size);
00092    
00094    void setCategory(const std::string &cat) {category = cat;}
00095 
00097    const std::string &getCategory() {return category;}
00098 
00100    void setComments(const std::string &comments) {m_comments = comments;}
00101 
00103    const std::string &getComments() {return m_comments;}
00104    
00106    void setModified() {modified=true;}
00107    
00109    void resetModified() {modified=false;}
00110    
00112    bool isModified() {return modified;}
00113    
00115    UINetwork *addNetwork(std::string name, UINetwork::Type type);
00116    
00118    UINetwork *addNetwork(xmlNodePtr xmlNet);
00119    
00121    void removeNetwork(UINetwork *toRemove);
00122    
00124    bool isUntitled() {return untitled;}
00125    
00127    virtual const std::string &getName() {return docName;}
00128    
00130    const std::string &getPath() {return path;}
00131    
00133    virtual void save();
00134    
00136    char *saveToMemory(int &size);
00137    
00138    void addParameterText(std::string name, std::string value, std::string type);
00139    
00140    UINetwork *getNetworkNamed(const std::string &n);
00141    
00142    std::vector<ItemInfo *> getNetInputs(const std::string &netName);
00143    
00144    std::vector<ItemInfo *> getNetOutputs(const std::string &netName);
00145    
00146    std::vector<ItemInfo *> getNetParams(const std::string &netName);
00147    
00148    std::string getDescription(const std::string &type);
00149    
00151    void printOn(std::ostream &out=std::cout) const;
00152 
00153    std::vector<UINetwork *> get_networks() {return networks;}
00154 
00155    std::vector<DocParameterDataText *> get_textParams() {return textParams;}
00156 
00157    virtual UINetwork *newNetwork(const std::string &_name, UINetwork::Type type);
00158    
00159    virtual UINetwork *newNetwork(xmlNodePtr _net);
00160    
00161    Network *build(const std::string &_name, const ParameterSet &params);
00162 
00164    std::set<std::string> genCode(std::ostream &out, const std::string &functName, bool localIncludes=false);
00165 
00171    void exportNetwork(const std::string &networkName, const std::string &fileName);
00172 
00173    
00178    void importNetwork(const std::string &fileName);
00179 
00180 
00181    static Network *buildExternal(const std::string &type, const std::string &_name, const ParameterSet &params);
00182 
00183    virtual void run();
00184 
00185    virtual void run(ParameterSet &p);
00186 
00187    virtual void setFullPath(const std::string &fullpath);
00188 
00189    void updateNetInfo(UINetwork *net); 
00190 
00191    void updateAllNetworks();
00192    
00193    static std::string findExternal(const std::string &filename, char *searchPath="FLOWDESIGNER_PATH", bool include_home=true, bool fullPathOutput=true);
00194 
00195    static void genCodeExternal(const std::string &type, std::ostream &out, int &id, std::set<std::string> &nodeList);
00196 
00197    virtual void updateAllSubnetTerminals(const std::string _nettype, const std::string _terminalname, 
00198                                          UINetTerminal::NetTermType _terminaltype, bool _remove); 
00199 
00200    UINodeRepository &getRepository() {return subnetInfo;}
00201    
00202  protected:
00203    
00204    virtual void error(char *err);
00205 
00206  private:
00207 
00208    static bool findExternalRecursive(const std::string &basePath, const std::string &path, const std::string &type, std::string &fullname, bool fullPathOutput);
00209 };
00210 
00211 
00212 }//namespace FD
00213 
00214 #endif

Generated on Wed Oct 5 14:28:56 2005 for FlowDesigner by  doxygen 1.4.4