file_import_dialog.h
author ladanyi
Wed, 02 Jan 2008 21:03:09 +0000
changeset 201 879e47e5b731
permissions -rw-r--r--
Merge branches/akos to trunk.
ladanyi@201
     1
#ifndef FILE_IMPORT_DIALOG
ladanyi@201
     2
#define FILE_IMPORT_DIALOG
ladanyi@201
     3
ladanyi@201
     4
#include <gtkmm/dialog.h>
ladanyi@201
     5
#include <gtkmm/radiobutton.h>
ladanyi@201
     6
#include <gtkmm/comboboxtext.h>
ladanyi@201
     7
#include <gtkmm/sizegroup.h>
ladanyi@201
     8
#include <gtkmm/treemodel.h>
ladanyi@201
     9
#include <gtkmm/liststore.h>
ladanyi@201
    10
#include <gtkmm/treeview.h>
ladanyi@201
    11
#include <gtkmm/scrolledwindow.h>
ladanyi@201
    12
ladanyi@201
    13
class FileImportDialog : public Gtk::Dialog
ladanyi@201
    14
{
ladanyi@201
    15
  public:
ladanyi@201
    16
    struct ImportData
ladanyi@201
    17
    {
ladanyi@201
    18
        ImportData(
ladanyi@201
    19
            const std::vector<std::string>& _node_map_names,
ladanyi@201
    20
            const std::vector<std::string>& _edge_map_names);
ladanyi@201
    21
ladanyi@201
    22
        ~ImportData();
ladanyi@201
    23
ladanyi@201
    24
        std::vector<std::string> node_map_names;
ladanyi@201
    25
        std::vector<std::string> edge_map_names;
ladanyi@201
    26
ladanyi@201
    27
        std::vector<std::string> xy_node_map_names;
ladanyi@201
    28
        std::vector<std::string> xy_edge_map_names;
ladanyi@201
    29
ladanyi@201
    30
        bool contains(
ladanyi@201
    31
            const std::vector<std::string>& vec,
ladanyi@201
    32
            const std::string& str);
ladanyi@201
    33
ladanyi@201
    34
        std::string node_coord_one_map_name;
ladanyi@201
    35
        std::string node_coord_two_maps_1_name;
ladanyi@201
    36
        std::string node_coord_two_maps_2_name;
ladanyi@201
    37
        std::string arrow_coord_one_map_name;
ladanyi@201
    38
        std::string arrow_coord_two_maps_1_name;
ladanyi@201
    39
        std::string arrow_coord_two_maps_2_name;
ladanyi@201
    40
ladanyi@201
    41
        enum ReadOpts { ONE_MAP, TWO_MAPS, DONT_READ };
ladanyi@201
    42
        ReadOpts node_coord_load_from;
ladanyi@201
    43
        ReadOpts arrow_coord_load_from;
ladanyi@201
    44
ladanyi@201
    45
        bool isXYNodeMap(const std::string& name);
ladanyi@201
    46
        bool isXYEdgeMap(const std::string& name);
ladanyi@201
    47
        bool isNodeMap(const std::string& name);
ladanyi@201
    48
        bool isEdgeMap(const std::string& name);
ladanyi@201
    49
ladanyi@201
    50
        std::vector<std::string> numeric_node_map_names;
ladanyi@201
    51
        std::vector<std::string> string_node_map_names;
ladanyi@201
    52
        std::vector<std::string> numeric_edge_map_names;
ladanyi@201
    53
        std::vector<std::string> string_edge_map_names;
ladanyi@201
    54
    };
ladanyi@201
    55
ladanyi@201
    56
    ImportData* p_data;
ladanyi@201
    57
ladanyi@201
    58
    Gtk::RadioButton rbNodeCoordNone;
ladanyi@201
    59
    Gtk::RadioButton rbNodeCoordOneMap;
ladanyi@201
    60
    Gtk::RadioButton rbNodeCoordTwoMaps;
ladanyi@201
    61
ladanyi@201
    62
    Gtk::RadioButton rbArrowCoordNone;
ladanyi@201
    63
    Gtk::RadioButton rbArrowCoordOneMap;
ladanyi@201
    64
    Gtk::RadioButton rbArrowCoordTwoMaps;
ladanyi@201
    65
ladanyi@201
    66
    Gtk::ComboBoxText cbNodeCoordOneMap;
ladanyi@201
    67
    Gtk::ComboBoxText cbNodeCoordTwoMaps1;
ladanyi@201
    68
    Gtk::ComboBoxText cbNodeCoordTwoMaps2;
ladanyi@201
    69
ladanyi@201
    70
    Gtk::ComboBoxText cbArrowCoordOneMap;
ladanyi@201
    71
    Gtk::ComboBoxText cbArrowCoordTwoMaps1;
ladanyi@201
    72
    Gtk::ComboBoxText cbArrowCoordTwoMaps2;
ladanyi@201
    73
ladanyi@201
    74
    void onNodeCoordMapNumToggled();
ladanyi@201
    75
    void onArrowCoordMapNumToggled();
ladanyi@201
    76
ladanyi@201
    77
    void onResponse(int id);
ladanyi@201
    78
ladanyi@201
    79
    void onNodeCoordOneMapChanged();
ladanyi@201
    80
    void onNodeCoordTwoMaps1Changed();
ladanyi@201
    81
    void onNodeCoordTwoMaps2Changed();
ladanyi@201
    82
ladanyi@201
    83
    void onArrowCoordOneMapChanged();
ladanyi@201
    84
    void onArrowCoordTwoMaps1Changed();
ladanyi@201
    85
    void onArrowCoordTwoMaps2Changed();
ladanyi@201
    86
ladanyi@201
    87
    struct MapModelColumns : public Gtk::TreeModel::ColumnRecord
ladanyi@201
    88
    {
ladanyi@201
    89
      MapModelColumns()
ladanyi@201
    90
      {
ladanyi@201
    91
        add(colName);
ladanyi@201
    92
        add(colReadAsNumeric);
ladanyi@201
    93
        add(colReadAsString);
ladanyi@201
    94
      }
ladanyi@201
    95
      Gtk::TreeModelColumn<Glib::ustring> colName;
ladanyi@201
    96
      Gtk::TreeModelColumn<bool> colReadAsNumeric;
ladanyi@201
    97
      Gtk::TreeModelColumn<bool> colReadAsString;
ladanyi@201
    98
    };
ladanyi@201
    99
ladanyi@201
   100
    Gtk::TreeView twNodeMaps;
ladanyi@201
   101
    MapModelColumns NodeMapColumns;
ladanyi@201
   102
    Glib::RefPtr<Gtk::ListStore> refNodeMapStore;
ladanyi@201
   103
    void onNodeMapNumericToggled(const Glib::ustring& path);
ladanyi@201
   104
    void onNodeMapStringToggled(const Glib::ustring& path);
ladanyi@201
   105
ladanyi@201
   106
    Gtk::TreeView twEdgeMaps;
ladanyi@201
   107
    MapModelColumns EdgeMapColumns;
ladanyi@201
   108
    Glib::RefPtr<Gtk::ListStore> refEdgeMapStore;
ladanyi@201
   109
    void onEdgeMapNumericToggled(const Glib::ustring& path);
ladanyi@201
   110
    void onEdgeMapStringToggled(const Glib::ustring& path);
ladanyi@201
   111
ladanyi@201
   112
    struct tree_view_record
ladanyi@201
   113
    {
ladanyi@201
   114
      tree_view_record(const std::string& _name, bool _numeric, bool _string,
ladanyi@201
   115
          bool _visible) :
ladanyi@201
   116
        name(_name),
ladanyi@201
   117
        numeric(_numeric),
ladanyi@201
   118
        string(_string),
ladanyi@201
   119
        visible(_visible) {}
ladanyi@201
   120
      std::string name;
ladanyi@201
   121
      bool numeric;
ladanyi@201
   122
      bool string;
ladanyi@201
   123
      bool visible;
ladanyi@201
   124
    };
ladanyi@201
   125
ladanyi@201
   126
    std::vector<tree_view_record> node_tree_view_records;
ladanyi@201
   127
    void update_node_tree_view();
ladanyi@201
   128
ladanyi@201
   129
    std::vector<tree_view_record> edge_tree_view_records;
ladanyi@201
   130
    void update_edge_tree_view();
ladanyi@201
   131
ladanyi@201
   132
  public:
ladanyi@201
   133
    FileImportDialog(ImportData* d);
ladanyi@201
   134
    ~FileImportDialog();
ladanyi@201
   135
};
ladanyi@201
   136
ladanyi@201
   137
#endif