file_import_dialog.h
author Peter Hegyi <hegyi@tmit.bme.hu>
Mon, 07 Jul 2008 08:10:39 -0500
changeset 1 67188bd752db
permissions -rw-r--r--
SVN revision 3500 made compilable with Lemon 1.0.
     1 #ifndef FILE_IMPORT_DIALOG
     2 #define FILE_IMPORT_DIALOG
     3 
     4 #include <gtkmm/dialog.h>
     5 #include <gtkmm/radiobutton.h>
     6 #include <gtkmm/comboboxtext.h>
     7 #include <gtkmm/sizegroup.h>
     8 #include <gtkmm/treemodel.h>
     9 #include <gtkmm/liststore.h>
    10 #include <gtkmm/treeview.h>
    11 #include <gtkmm/scrolledwindow.h>
    12 
    13 class FileImportDialog : public Gtk::Dialog
    14 {
    15   public:
    16     struct ImportData
    17     {
    18         ImportData(
    19             const std::vector<std::string>& _node_map_names,
    20             const std::vector<std::string>& _arc_map_names);
    21 
    22         ~ImportData();
    23 
    24         std::vector<std::string> node_map_names;
    25         std::vector<std::string> arc_map_names;
    26 
    27         std::vector<std::string> xy_node_map_names;
    28         std::vector<std::string> xy_arc_map_names;
    29 
    30         bool contains(
    31             const std::vector<std::string>& vec,
    32             const std::string& str);
    33 
    34         std::string node_coord_one_map_name;
    35         std::string node_coord_two_maps_1_name;
    36         std::string node_coord_two_maps_2_name;
    37         std::string arrow_coord_one_map_name;
    38         std::string arrow_coord_two_maps_1_name;
    39         std::string arrow_coord_two_maps_2_name;
    40 
    41         enum ReadOpts { ONE_MAP, TWO_MAPS, DONT_READ };
    42         ReadOpts node_coord_load_from;
    43         ReadOpts arrow_coord_load_from;
    44 
    45         bool isXYNodeMap(const std::string& name);
    46         bool isXYArcMap(const std::string& name);
    47         bool isNodeMap(const std::string& name);
    48         bool isArcMap(const std::string& name);
    49 
    50         std::vector<std::string> numeric_node_map_names;
    51         std::vector<std::string> string_node_map_names;
    52         std::vector<std::string> numeric_arc_map_names;
    53         std::vector<std::string> string_arc_map_names;
    54     };
    55 
    56     ImportData* p_data;
    57 
    58     Gtk::RadioButton rblueCoordNone;
    59     Gtk::RadioButton rblueCoordOneMap;
    60     Gtk::RadioButton rblueCoordTwoMaps;
    61 
    62     Gtk::RadioButton rbArrowCoordNone;
    63     Gtk::RadioButton rbArrowCoordOneMap;
    64     Gtk::RadioButton rbArrowCoordTwoMaps;
    65 
    66     Gtk::ComboBoxText cblueCoordOneMap;
    67     Gtk::ComboBoxText cblueCoordTwoMaps1;
    68     Gtk::ComboBoxText cblueCoordTwoMaps2;
    69 
    70     Gtk::ComboBoxText cbArrowCoordOneMap;
    71     Gtk::ComboBoxText cbArrowCoordTwoMaps1;
    72     Gtk::ComboBoxText cbArrowCoordTwoMaps2;
    73 
    74     void onNodeCoordMapNumToggled();
    75     void onArrowCoordMapNumToggled();
    76 
    77     void onResponse(int id);
    78 
    79     void onNodeCoordOneMapChanged();
    80     void onNodeCoordTwoMaps1Changed();
    81     void onNodeCoordTwoMaps2Changed();
    82 
    83     void onArrowCoordOneMapChanged();
    84     void onArrowCoordTwoMaps1Changed();
    85     void onArrowCoordTwoMaps2Changed();
    86 
    87     struct MapModelColumns : public Gtk::TreeModel::ColumnRecord
    88     {
    89       MapModelColumns()
    90       {
    91         add(colName);
    92         add(colReadAsNumeric);
    93         add(colReadAsString);
    94       }
    95       Gtk::TreeModelColumn<Glib::ustring> colName;
    96       Gtk::TreeModelColumn<bool> colReadAsNumeric;
    97       Gtk::TreeModelColumn<bool> colReadAsString;
    98     };
    99 
   100     Gtk::TreeView twNodeMaps;
   101     MapModelColumns NodeMapColumns;
   102     Glib::RefPtr<Gtk::ListStore> refNodeMapStore;
   103     void onNodeMapNumericToggled(const Glib::ustring& path);
   104     void onNodeMapStringToggled(const Glib::ustring& path);
   105 
   106     Gtk::TreeView twArcMaps;
   107     MapModelColumns ArcMapColumns;
   108     Glib::RefPtr<Gtk::ListStore> refArcMapStore;
   109     void onArcMapNumericToggled(const Glib::ustring& path);
   110     void onArcMapStringToggled(const Glib::ustring& path);
   111 
   112     struct tree_view_record
   113     {
   114       tree_view_record(const std::string& _name, bool _numeric, bool _string,
   115           bool _visible) :
   116         name(_name),
   117         numeric(_numeric),
   118         string(_string),
   119         visible(_visible) {}
   120       std::string name;
   121       bool numeric;
   122       bool string;
   123       bool visible;
   124     };
   125 
   126     std::vector<tree_view_record> node_tree_view_records;
   127     void update_node_tree_view();
   128 
   129     std::vector<tree_view_record> arc_tree_view_records;
   130     void update_arc_tree_view();
   131 
   132   public:
   133     FileImportDialog(ImportData* d);
   134     ~FileImportDialog();
   135 };
   136 
   137 #endif