ladanyi@201: #ifndef FILE_IMPORT_DIALOG ladanyi@201: #define FILE_IMPORT_DIALOG ladanyi@201: ladanyi@201: #include ladanyi@201: #include ladanyi@201: #include ladanyi@201: #include ladanyi@201: #include ladanyi@201: #include ladanyi@201: #include ladanyi@201: #include ladanyi@201: ladanyi@201: class FileImportDialog : public Gtk::Dialog ladanyi@201: { ladanyi@201: public: ladanyi@201: struct ImportData ladanyi@201: { ladanyi@201: ImportData( ladanyi@201: const std::vector& _node_map_names, ladanyi@201: const std::vector& _edge_map_names); ladanyi@201: ladanyi@201: ~ImportData(); ladanyi@201: ladanyi@201: std::vector node_map_names; ladanyi@201: std::vector edge_map_names; ladanyi@201: ladanyi@201: std::vector xy_node_map_names; ladanyi@201: std::vector xy_edge_map_names; ladanyi@201: ladanyi@201: bool contains( ladanyi@201: const std::vector& vec, ladanyi@201: const std::string& str); ladanyi@201: ladanyi@201: std::string node_coord_one_map_name; ladanyi@201: std::string node_coord_two_maps_1_name; ladanyi@201: std::string node_coord_two_maps_2_name; ladanyi@201: std::string arrow_coord_one_map_name; ladanyi@201: std::string arrow_coord_two_maps_1_name; ladanyi@201: std::string arrow_coord_two_maps_2_name; ladanyi@201: ladanyi@201: enum ReadOpts { ONE_MAP, TWO_MAPS, DONT_READ }; ladanyi@201: ReadOpts node_coord_load_from; ladanyi@201: ReadOpts arrow_coord_load_from; ladanyi@201: ladanyi@201: bool isXYNodeMap(const std::string& name); ladanyi@201: bool isXYEdgeMap(const std::string& name); ladanyi@201: bool isNodeMap(const std::string& name); ladanyi@201: bool isEdgeMap(const std::string& name); ladanyi@201: ladanyi@201: std::vector numeric_node_map_names; ladanyi@201: std::vector string_node_map_names; ladanyi@201: std::vector numeric_edge_map_names; ladanyi@201: std::vector string_edge_map_names; ladanyi@201: }; ladanyi@201: ladanyi@201: ImportData* p_data; ladanyi@201: ladanyi@201: Gtk::RadioButton rbNodeCoordNone; ladanyi@201: Gtk::RadioButton rbNodeCoordOneMap; ladanyi@201: Gtk::RadioButton rbNodeCoordTwoMaps; ladanyi@201: ladanyi@201: Gtk::RadioButton rbArrowCoordNone; ladanyi@201: Gtk::RadioButton rbArrowCoordOneMap; ladanyi@201: Gtk::RadioButton rbArrowCoordTwoMaps; ladanyi@201: ladanyi@201: Gtk::ComboBoxText cbNodeCoordOneMap; ladanyi@201: Gtk::ComboBoxText cbNodeCoordTwoMaps1; ladanyi@201: Gtk::ComboBoxText cbNodeCoordTwoMaps2; ladanyi@201: ladanyi@201: Gtk::ComboBoxText cbArrowCoordOneMap; ladanyi@201: Gtk::ComboBoxText cbArrowCoordTwoMaps1; ladanyi@201: Gtk::ComboBoxText cbArrowCoordTwoMaps2; ladanyi@201: ladanyi@201: void onNodeCoordMapNumToggled(); ladanyi@201: void onArrowCoordMapNumToggled(); ladanyi@201: ladanyi@201: void onResponse(int id); ladanyi@201: ladanyi@201: void onNodeCoordOneMapChanged(); ladanyi@201: void onNodeCoordTwoMaps1Changed(); ladanyi@201: void onNodeCoordTwoMaps2Changed(); ladanyi@201: ladanyi@201: void onArrowCoordOneMapChanged(); ladanyi@201: void onArrowCoordTwoMaps1Changed(); ladanyi@201: void onArrowCoordTwoMaps2Changed(); ladanyi@201: ladanyi@201: struct MapModelColumns : public Gtk::TreeModel::ColumnRecord ladanyi@201: { ladanyi@201: MapModelColumns() ladanyi@201: { ladanyi@201: add(colName); ladanyi@201: add(colReadAsNumeric); ladanyi@201: add(colReadAsString); ladanyi@201: } ladanyi@201: Gtk::TreeModelColumn colName; ladanyi@201: Gtk::TreeModelColumn colReadAsNumeric; ladanyi@201: Gtk::TreeModelColumn colReadAsString; ladanyi@201: }; ladanyi@201: ladanyi@201: Gtk::TreeView twNodeMaps; ladanyi@201: MapModelColumns NodeMapColumns; ladanyi@201: Glib::RefPtr refNodeMapStore; ladanyi@201: void onNodeMapNumericToggled(const Glib::ustring& path); ladanyi@201: void onNodeMapStringToggled(const Glib::ustring& path); ladanyi@201: ladanyi@201: Gtk::TreeView twEdgeMaps; ladanyi@201: MapModelColumns EdgeMapColumns; ladanyi@201: Glib::RefPtr refEdgeMapStore; ladanyi@201: void onEdgeMapNumericToggled(const Glib::ustring& path); ladanyi@201: void onEdgeMapStringToggled(const Glib::ustring& path); ladanyi@201: ladanyi@201: struct tree_view_record ladanyi@201: { ladanyi@201: tree_view_record(const std::string& _name, bool _numeric, bool _string, ladanyi@201: bool _visible) : ladanyi@201: name(_name), ladanyi@201: numeric(_numeric), ladanyi@201: string(_string), ladanyi@201: visible(_visible) {} ladanyi@201: std::string name; ladanyi@201: bool numeric; ladanyi@201: bool string; ladanyi@201: bool visible; ladanyi@201: }; ladanyi@201: ladanyi@201: std::vector node_tree_view_records; ladanyi@201: void update_node_tree_view(); ladanyi@201: ladanyi@201: std::vector edge_tree_view_records; ladanyi@201: void update_edge_tree_view(); ladanyi@201: ladanyi@201: public: ladanyi@201: FileImportDialog(ImportData* d); ladanyi@201: ~FileImportDialog(); ladanyi@201: }; ladanyi@201: ladanyi@201: #endif