gui/mapstorage.h
author hegyi
Fri, 06 Jan 2006 13:58:49 +0000
changeset 1881 f40cdc2057c2
parent 1878 409a31271efd
child 1888 eed01ce27087
permissions -rw-r--r--
Result of KruskalGUIAlgo is refreshed if displayed, but no more setin a forced way.
     1 // -*- C++ -*- //
     2 
     3 #ifndef MAPSTORAGE_H
     4 #define MAPSTORAGE_H
     5 
     6 class Mapstorage;
     7 
     8 #include "all_include.h"
     9 #include "xymap.h"
    10 #include <libgnomecanvasmm.h>
    11 
    12 ///Class MapStorage is responsible for storing
    13 ///NodeMaps and EdgeMaps that can be shown later
    14 ///on GUI. Therefore maps can be added to it,
    15 ///and datas over the added maps can be queried.
    16 ///The maps will be stored in an std::map,
    17 ///referenced with their names. Unfortunately at
    18 ///the moment it works only with double type maps
    19 ///
    20 ///\todo too many things are public!!
    21 class MapStorage
    22 {
    23 public:
    24 
    25   Graph graph;
    26   /// the coordinates of the nodes
    27   XYMap<Graph::NodeMap<double> > coords;
    28   /// the coordinates of the arrows on the edges
    29   XYMap<Graph::EdgeMap<double> > arrow_pos;
    30 
    31   bool modified;
    32   std::string file_name;
    33 
    34   ///Stores double type NodeMaps
    35   std::map< std::string,Graph::NodeMap<double> * > nodemap_storage;
    36 
    37   ///Stores double type EdgeMaps
    38   std::map< std::string,Graph::EdgeMap<double> * > edgemap_storage;
    39 
    40   //Stores the default values for the different visualization node attributes
    41   std::vector<Graph::NodeMap<double> > default_nodemaps;
    42 
    43   //Stores the default values for the different visualization edge attributes
    44   std::vector<Graph::EdgeMap<double> > default_edgemaps;
    45 
    46   //Stores the active maps for the different visualization node attributes
    47   std::vector< std::string > active_nodemaps;
    48 
    49   //Stores the active maps for the different visualization edge attributes
    50   std::vector< std::string > active_edgemaps;
    51 
    52   // Default values for the maps
    53   std::map< std::string, double > nodemap_default;
    54 
    55   // Default values for the maps
    56   std::map< std::string, double > edgemap_default;
    57 
    58   bool arrow_pos_read_ok;
    59 
    60 protected:
    61   typedef sigc::signal<void, bool, int> Signal_Prop;
    62   Signal_Prop signal_prop;
    63   sigc::signal<void, std::string> signal_node_map;
    64   sigc::signal<void, std::string> signal_edge_map;
    65 
    66 public:
    67   ///Constructor of MapStorage. Expects the Graph of
    68   ///which maps will be stored in it.
    69   ///Its all activity is initializing default values
    70   ///for different visualization attributes
    71   ///
    72   ///\param graph is the graph for which the maps are stored in this object.
    73   MapStorage();
    74 
    75   ~MapStorage();
    76 
    77   void changeActiveMap(bool, int, std::string);
    78 
    79   std::string getActiveEdgeMap(int);
    80   std::string getActiveNodeMap(int);
    81 
    82   std::vector<std::string> getEdgeMapList();
    83   std::vector<std::string> getNodeMapList();
    84 
    85   Signal_Prop signal_prop_ch();
    86 
    87   sigc::signal<void, std::string> signal_node_map_ch(){return signal_node_map;};
    88   sigc::signal<void, std::string> signal_edge_map_ch(){return signal_edge_map;};
    89 
    90   ///Adds given map to storage. A name and the map itself has to be provided.
    91   ///\param name is the name of map
    92   ///\nodemap is the pointer of the given nodemap
    93   ///\todo map should be given by reference!
    94   int addNodeMap(const std::string &,Graph::NodeMap<double> *, double);
    95 
    96   ///Adds given map to storage. A name and the map itself has to be provided.
    97   ///\param name is the name of map
    98   ///\edgemap is the pointer of the given edgemap
    99   ///\todo map should be given by reference!
   100   int addEdgeMap(const std::string &,Graph::EdgeMap<double> *, double);
   101 
   102   ///Returns how much nodemaps is stored in \ref MapStorage
   103   int numOfNodeMaps() {return nodemap_storage.size();};
   104 
   105   ///Returns how much edgemaps is stored in \ref MapStorage
   106   int numOfEdgeMaps() {return edgemap_storage.size();};
   107 
   108   ///Returns the maximum value of the given NodeMap. NodeMap has to be given by its name.
   109   ///\param name is the name of map of which maximum is searched
   110   double maxOfNodeMap(const std::string &);
   111 
   112   ///Returns the maximum value of the given EdgeMap. EdgeMap has to be given by its name.
   113   ///\param name is the name of map of which maximum is searched
   114   double maxOfEdgeMap(const std::string &);
   115 
   116   ///Returns the minimum value of the given NodeMap. NodeMap has to be given by its name.
   117   ///\param name is the name of map of which minimum is searched
   118   double minOfNodeMap(const std::string &);
   119 
   120   ///Returns the minimum value of the given EdgeMap. EdgeMap has to be given by its name.
   121   ///\param name is the name of map of which minimum is searched
   122   double minOfEdgeMap(const std::string &);
   123 
   124   ///To be able to iterate through each maps this function returns an iterator pointing to the first nodemap in the storage.
   125   std::map< std::string,Graph::NodeMap<double> * >::iterator beginOfNodeMaps(){return nodemap_storage.begin();};
   126 
   127   ///To be able to iterate through each maps this function returns an iterator pointing to the first edgemap in the storage.
   128   std::map< std::string,Graph::EdgeMap<double> * >::iterator beginOfEdgeMaps(){return edgemap_storage.begin();};
   129 
   130   ///To be able to iterate through each maps this function returns an iterator pointing to the last nodemap in the storage.
   131   std::map< std::string,Graph::NodeMap<double> * >::iterator endOfNodeMaps(){return nodemap_storage.end();};
   132 
   133   ///To be able to iterate through each maps this function returns an iterator pointing to the last edgemap in the storage.
   134   std::map< std::string,Graph::EdgeMap<double> * >::iterator endOfEdgeMaps(){return edgemap_storage.end();};
   135 
   136   void mapChanged(bool, std::string);
   137 
   138   int readFromFile(const std::string &);
   139   void writeToFile(const std::string &);
   140 
   141   void clear();
   142 
   143   void ArrowPosReadOK();
   144 };
   145 
   146 #endif //MAPSTORAGE_H