file_import_dialog.h
changeset 1 67188bd752db
equal deleted inserted replaced
-1:000000000000 0:62d309fde8aa
       
     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