save_details_widget.cc
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
#include "save_details_widget.h"
ladanyi@201
     2
#include "mapstorage.h"
ladanyi@201
     3
ladanyi@201
     4
SaveDetailsWidget::SaveDetailsWidget(MapStorage* ms) :
ladanyi@201
     5
  pMapStorage(ms)
ladanyi@201
     6
{
ladanyi@201
     7
  Gtk::Notebook* nb = Gtk::manage(new Gtk::Notebook);
ladanyi@201
     8
  pack_start(*nb, Gtk::PACK_EXPAND_WIDGET);
ladanyi@201
     9
ladanyi@201
    10
  nb->set_tab_pos(Gtk::POS_TOP);
ladanyi@201
    11
ladanyi@201
    12
  Gtk::VBox* vbNodeMaps = Gtk::manage(new Gtk::VBox(false, 18));
ladanyi@201
    13
  vbNodeMaps->set_border_width(12);
ladanyi@201
    14
ladanyi@201
    15
  Gtk::VBox* vbEdgeMaps = Gtk::manage(new Gtk::VBox(false, 18));
ladanyi@201
    16
  vbEdgeMaps->set_border_width(12);
ladanyi@201
    17
ladanyi@201
    18
  Gtk::VBox* vbSpecMaps = Gtk::manage(new Gtk::VBox(false, 18));
ladanyi@201
    19
  vbSpecMaps->set_border_width(12);
ladanyi@201
    20
ladanyi@201
    21
  Gtk::VBox* vbGuiSect = Gtk::manage(new Gtk::VBox(false, 18));
ladanyi@201
    22
  vbGuiSect->set_border_width(12);
ladanyi@201
    23
ladanyi@201
    24
  nb->append_page(*vbSpecMaps, "Special Maps");
ladanyi@201
    25
  nb->append_page(*vbNodeMaps, "Node Maps");
ladanyi@201
    26
  nb->append_page(*vbEdgeMaps, "Edge Maps");
ladanyi@201
    27
  nb->append_page(*vbGuiSect, "GUI Section");
ladanyi@201
    28
ladanyi@201
    29
  // child widgets of vbSpecMaps
ladanyi@201
    30
ladanyi@201
    31
  {
ladanyi@201
    32
    Gtk::VBox* box1 = Gtk::manage(new Gtk::VBox(false, 6));
ladanyi@201
    33
    vbSpecMaps->pack_start(*box1, Gtk::PACK_SHRINK);
ladanyi@201
    34
ladanyi@201
    35
    Gtk::Label* lblNodeCoordMap =
ladanyi@201
    36
      Gtk::manage(new Gtk::Label("<b>Node Coordinates</b>"));
ladanyi@201
    37
    lblNodeCoordMap->set_alignment(Gtk::ALIGN_LEFT, Gtk::ALIGN_CENTER);
ladanyi@201
    38
    lblNodeCoordMap->set_use_markup();
ladanyi@201
    39
    box1->pack_start(*lblNodeCoordMap, Gtk::PACK_SHRINK);
ladanyi@201
    40
ladanyi@201
    41
    Gtk::HBox* box2 = Gtk::manage(new Gtk::HBox);
ladanyi@201
    42
    box1->pack_start(*box2, Gtk::PACK_SHRINK);
ladanyi@201
    43
ladanyi@201
    44
    Gtk::Label* fill1 = Gtk::manage(new Gtk::Label("    "));
ladanyi@201
    45
    box2->pack_start(*fill1, Gtk::PACK_SHRINK);
ladanyi@201
    46
ladanyi@201
    47
    Gtk::VBox* box3 = Gtk::manage(new Gtk::VBox);
ladanyi@201
    48
    box2->pack_start(*box3, Gtk::PACK_SHRINK);
ladanyi@201
    49
ladanyi@201
    50
    rbNodeCoordGuiSection.set_label("Save to GUI section");
ladanyi@201
    51
    rbNodeCoordNodesetSection.set_label("Save to Nodeset section");
ladanyi@201
    52
    Gtk::RadioButtonGroup group = rbNodeCoordGuiSection.get_group();
ladanyi@201
    53
    rbNodeCoordNodesetSection.set_group(group);
ladanyi@201
    54
ladanyi@201
    55
    box3->pack_start(rbNodeCoordGuiSection, Gtk::PACK_SHRINK);
ladanyi@201
    56
    box3->pack_start(rbNodeCoordNodesetSection, Gtk::PACK_SHRINK);
ladanyi@201
    57
ladanyi@201
    58
    Gtk::HBox* box4 = Gtk::manage(new Gtk::HBox);
ladanyi@201
    59
    box3->pack_start(*box4, Gtk::PACK_SHRINK);
ladanyi@201
    60
ladanyi@201
    61
    Gtk::Label* fill2 = Gtk::manage(new Gtk::Label("    "));
ladanyi@201
    62
    box4->pack_start(*fill2, Gtk::PACK_SHRINK);
ladanyi@201
    63
ladanyi@201
    64
    Gtk::Table* table1 = Gtk::manage(new Gtk::Table(3, 2));
ladanyi@201
    65
    box4->pack_start(*table1, Gtk::PACK_SHRINK);
ladanyi@201
    66
ladanyi@201
    67
    rbNodeCoordOneMap.set_label("As one map");
ladanyi@201
    68
    rbNodeCoordTwoMaps.set_label("As two maps");
ladanyi@201
    69
    group = rbNodeCoordOneMap.get_group();
ladanyi@201
    70
    rbNodeCoordTwoMaps.set_group(group);
ladanyi@201
    71
ladanyi@201
    72
    table1->attach(rbNodeCoordOneMap, 0, 1, 0, 1);
ladanyi@201
    73
    table1->attach(rbNodeCoordTwoMaps, 0, 1, 1, 2);
ladanyi@201
    74
    table1->attach(entNodeCoordsOneMap, 1, 2, 0, 1);
ladanyi@201
    75
    table1->attach(entNodeCoordsTwoMaps1, 1, 2, 1, 2);
ladanyi@201
    76
    table1->attach(entNodeCoordsTwoMaps2, 1, 2, 2, 3);
ladanyi@201
    77
ladanyi@201
    78
    switch (pMapStorage->getNodeCoordsSaveDest())
ladanyi@201
    79
    {
ladanyi@201
    80
      case MapStorage::SpecMapSaveOpts::GUI_SECT:
ladanyi@201
    81
        rbNodeCoordGuiSection.set_active();
ladanyi@201
    82
        rbNodeCoordOneMap.set_sensitive(false);
ladanyi@201
    83
        rbNodeCoordTwoMaps.set_sensitive(false);
ladanyi@201
    84
        entNodeCoordsOneMap.set_sensitive(false);
ladanyi@201
    85
        entNodeCoordsTwoMaps1.set_sensitive(false);
ladanyi@201
    86
        entNodeCoordsTwoMaps2.set_sensitive(false);
ladanyi@201
    87
        break;
ladanyi@201
    88
      case MapStorage::SpecMapSaveOpts::NESET_SECT:
ladanyi@201
    89
        rbNodeCoordNodesetSection.set_active();
ladanyi@201
    90
        rbNodeCoordOneMap.set_sensitive(true);
ladanyi@201
    91
        rbNodeCoordTwoMaps.set_sensitive(true);
ladanyi@201
    92
        switch (pMapStorage->getNodeCoordsSaveMapNum())
ladanyi@201
    93
        {
ladanyi@201
    94
          case MapStorage::SpecMapSaveOpts::ONE_MAP:
ladanyi@201
    95
            rbNodeCoordOneMap.set_active();
ladanyi@201
    96
            entNodeCoordsOneMap.set_sensitive(true);
ladanyi@201
    97
            entNodeCoordsTwoMaps1.set_sensitive(false);
ladanyi@201
    98
            entNodeCoordsTwoMaps2.set_sensitive(false);
ladanyi@201
    99
            break;
ladanyi@201
   100
          case MapStorage::SpecMapSaveOpts::TWO_MAPS:
ladanyi@201
   101
            rbNodeCoordTwoMaps.set_active();
ladanyi@201
   102
            entNodeCoordsOneMap.set_sensitive(false);
ladanyi@201
   103
            entNodeCoordsTwoMaps1.set_sensitive(true);
ladanyi@201
   104
            entNodeCoordsTwoMaps2.set_sensitive(true);
ladanyi@201
   105
            break;
ladanyi@201
   106
        }
ladanyi@201
   107
        break;
ladanyi@201
   108
    }
ladanyi@201
   109
ladanyi@201
   110
    entNodeCoordsOneMap.set_text(pMapStorage->getNodeCoordsOneMapName());
ladanyi@201
   111
    entNodeCoordsTwoMaps1.set_text(pMapStorage->getNodeCoordsTwoMaps1Name());
ladanyi@201
   112
    entNodeCoordsTwoMaps2.set_text(pMapStorage->getNodeCoordsTwoMaps2Name());
ladanyi@201
   113
ladanyi@201
   114
    entNodeCoordsOneMap.signal_changed().connect(
ladanyi@201
   115
        sigc::mem_fun(*this, &SaveDetailsWidget::onNodeCoordsOneMapName));
ladanyi@201
   116
    entNodeCoordsTwoMaps1.signal_changed().connect(
ladanyi@201
   117
        sigc::mem_fun(*this, &SaveDetailsWidget::onNodeCoordsTwoMaps1Name));
ladanyi@201
   118
    entNodeCoordsTwoMaps2.signal_changed().connect(
ladanyi@201
   119
        sigc::mem_fun(*this, &SaveDetailsWidget::onNodeCoordsTwoMaps2Name));
ladanyi@201
   120
ladanyi@201
   121
    rbNodeCoordGuiSection.signal_toggled().connect(
ladanyi@201
   122
        sigc::mem_fun(*this, &SaveDetailsWidget::onNodeCoordSaveDestChanged));
ladanyi@201
   123
    rbNodeCoordNodesetSection.signal_toggled().connect(
ladanyi@201
   124
        sigc::mem_fun(*this, &SaveDetailsWidget::onNodeCoordSaveDestChanged));
ladanyi@201
   125
    rbNodeCoordOneMap.signal_toggled().connect(
ladanyi@201
   126
        sigc::mem_fun(*this, &SaveDetailsWidget::onNodeCoordMapNumChanged));
ladanyi@201
   127
    rbNodeCoordTwoMaps.signal_toggled().connect(
ladanyi@201
   128
        sigc::mem_fun(*this, &SaveDetailsWidget::onNodeCoordMapNumChanged));
ladanyi@201
   129
  }
ladanyi@201
   130
ladanyi@201
   131
  {
ladanyi@201
   132
    Gtk::VBox* box1 = Gtk::manage(new Gtk::VBox(false, 6));
ladanyi@201
   133
    vbSpecMaps->pack_start(*box1, Gtk::PACK_SHRINK);
ladanyi@201
   134
ladanyi@201
   135
    Gtk::Label* lblArrowCoordMap =
ladanyi@201
   136
      Gtk::manage(new Gtk::Label("<b>Arrow Coordinates</b>"));
ladanyi@201
   137
    lblArrowCoordMap->set_alignment(Gtk::ALIGN_LEFT, Gtk::ALIGN_CENTER);
ladanyi@201
   138
    lblArrowCoordMap->set_use_markup();
ladanyi@201
   139
    box1->pack_start(*lblArrowCoordMap, Gtk::PACK_SHRINK);
ladanyi@201
   140
ladanyi@201
   141
    Gtk::HBox* box2 = Gtk::manage(new Gtk::HBox);
ladanyi@201
   142
    box1->pack_start(*box2, Gtk::PACK_SHRINK);
ladanyi@201
   143
ladanyi@201
   144
    Gtk::Label* fill1 = Gtk::manage(new Gtk::Label("    "));
ladanyi@201
   145
    box2->pack_start(*fill1, Gtk::PACK_SHRINK);
ladanyi@201
   146
ladanyi@201
   147
    Gtk::VBox* box3 = Gtk::manage(new Gtk::VBox);
ladanyi@201
   148
    box2->pack_start(*box3, Gtk::PACK_SHRINK);
ladanyi@201
   149
ladanyi@201
   150
    rbArrowCoordGuiSection.set_label("Save to GUI section");
ladanyi@201
   151
    rbArrowCoordEdgesetSection.set_label("Save to Edgeset section");
ladanyi@201
   152
    Gtk::RadioButtonGroup group = rbArrowCoordGuiSection.get_group();
ladanyi@201
   153
    rbArrowCoordEdgesetSection.set_group(group);
ladanyi@201
   154
ladanyi@201
   155
    box3->pack_start(rbArrowCoordGuiSection, Gtk::PACK_SHRINK);
ladanyi@201
   156
    box3->pack_start(rbArrowCoordEdgesetSection, Gtk::PACK_SHRINK);
ladanyi@201
   157
ladanyi@201
   158
    Gtk::HBox* box4 = Gtk::manage(new Gtk::HBox);
ladanyi@201
   159
    box3->pack_start(*box4, Gtk::PACK_SHRINK);
ladanyi@201
   160
ladanyi@201
   161
    Gtk::Label* fill2 = Gtk::manage(new Gtk::Label("    "));
ladanyi@201
   162
    box4->pack_start(*fill2, Gtk::PACK_SHRINK);
ladanyi@201
   163
ladanyi@201
   164
    Gtk::Table* table1 = Gtk::manage(new Gtk::Table(3, 2));
ladanyi@201
   165
    box4->pack_start(*table1, Gtk::PACK_SHRINK);
ladanyi@201
   166
ladanyi@201
   167
    rbArrowCoordOneMap.set_label("As one map");
ladanyi@201
   168
    rbArrowCoordTwoMaps.set_label("As two maps");
ladanyi@201
   169
    group = rbArrowCoordOneMap.get_group();
ladanyi@201
   170
    rbArrowCoordTwoMaps.set_group(group);
ladanyi@201
   171
ladanyi@201
   172
    table1->attach(rbArrowCoordOneMap, 0, 1, 0, 1);
ladanyi@201
   173
    table1->attach(rbArrowCoordTwoMaps, 0, 1, 1, 2);
ladanyi@201
   174
    table1->attach(entArrowCoordsOneMap, 1, 2, 0, 1);
ladanyi@201
   175
    table1->attach(entArrowCoordsTwoMaps1, 1, 2, 1, 2);
ladanyi@201
   176
    table1->attach(entArrowCoordsTwoMaps2, 1, 2, 2, 3);
ladanyi@201
   177
ladanyi@201
   178
    switch (pMapStorage->getArrowCoordsSaveDest())
ladanyi@201
   179
    {
ladanyi@201
   180
      case MapStorage::SpecMapSaveOpts::GUI_SECT:
ladanyi@201
   181
        rbArrowCoordGuiSection.set_active();
ladanyi@201
   182
        rbArrowCoordOneMap.set_sensitive(false);
ladanyi@201
   183
        rbArrowCoordTwoMaps.set_sensitive(false);
ladanyi@201
   184
        entArrowCoordsOneMap.set_sensitive(false);
ladanyi@201
   185
        entArrowCoordsTwoMaps1.set_sensitive(false);
ladanyi@201
   186
        entArrowCoordsTwoMaps2.set_sensitive(false);
ladanyi@201
   187
        break;
ladanyi@201
   188
      case MapStorage::SpecMapSaveOpts::NESET_SECT:
ladanyi@201
   189
        rbArrowCoordEdgesetSection.set_active();
ladanyi@201
   190
        rbArrowCoordOneMap.set_sensitive(true);
ladanyi@201
   191
        rbArrowCoordTwoMaps.set_sensitive(true);
ladanyi@201
   192
        switch (pMapStorage->getArrowCoordsSaveMapNum())
ladanyi@201
   193
        {
ladanyi@201
   194
          case MapStorage::SpecMapSaveOpts::ONE_MAP:
ladanyi@201
   195
            rbArrowCoordOneMap.set_active();
ladanyi@201
   196
            entArrowCoordsOneMap.set_sensitive(true);
ladanyi@201
   197
            entArrowCoordsTwoMaps1.set_sensitive(false);
ladanyi@201
   198
            entArrowCoordsTwoMaps2.set_sensitive(false);
ladanyi@201
   199
            break;
ladanyi@201
   200
          case MapStorage::SpecMapSaveOpts::TWO_MAPS:
ladanyi@201
   201
            rbArrowCoordTwoMaps.set_active();
ladanyi@201
   202
            entArrowCoordsOneMap.set_sensitive(false);
ladanyi@201
   203
            entArrowCoordsTwoMaps1.set_sensitive(true);
ladanyi@201
   204
            entArrowCoordsTwoMaps2.set_sensitive(true);
ladanyi@201
   205
            break;
ladanyi@201
   206
        }
ladanyi@201
   207
        break;
ladanyi@201
   208
    }
ladanyi@201
   209
ladanyi@201
   210
    entArrowCoordsOneMap.set_text(pMapStorage->getArrowCoordsOneMapName());
ladanyi@201
   211
    entArrowCoordsTwoMaps1.set_text(pMapStorage->getArrowCoordsTwoMaps1Name());
ladanyi@201
   212
    entArrowCoordsTwoMaps2.set_text(pMapStorage->getArrowCoordsTwoMaps2Name());
ladanyi@201
   213
ladanyi@201
   214
    entArrowCoordsOneMap.signal_changed().connect(
ladanyi@201
   215
        sigc::mem_fun(*this, &SaveDetailsWidget::onArrowCoordsOneMapName));
ladanyi@201
   216
    entArrowCoordsTwoMaps1.signal_changed().connect(
ladanyi@201
   217
        sigc::mem_fun(*this, &SaveDetailsWidget::onArrowCoordsTwoMaps1Name));
ladanyi@201
   218
    entArrowCoordsTwoMaps2.signal_changed().connect(
ladanyi@201
   219
        sigc::mem_fun(*this, &SaveDetailsWidget::onArrowCoordsTwoMaps2Name));
ladanyi@201
   220
ladanyi@201
   221
    rbArrowCoordGuiSection.signal_toggled().connect(
ladanyi@201
   222
        sigc::mem_fun(*this, &SaveDetailsWidget::onArrowCoordSaveDestChanged));
ladanyi@201
   223
    rbArrowCoordEdgesetSection.signal_toggled().connect(
ladanyi@201
   224
        sigc::mem_fun(*this, &SaveDetailsWidget::onArrowCoordSaveDestChanged));
ladanyi@201
   225
    rbArrowCoordOneMap.signal_toggled().connect(
ladanyi@201
   226
        sigc::mem_fun(*this, &SaveDetailsWidget::onArrowCoordMapNumChanged));
ladanyi@201
   227
    rbArrowCoordTwoMaps.signal_toggled().connect(
ladanyi@201
   228
        sigc::mem_fun(*this, &SaveDetailsWidget::onArrowCoordMapNumChanged));
ladanyi@201
   229
  }
ladanyi@201
   230
ladanyi@201
   231
  // child widgets of vbGuiSect
ladanyi@201
   232
ladanyi@201
   233
  {
ladanyi@201
   234
    Gtk::VBox* box1 = Gtk::manage(new Gtk::VBox(false, 6));
ladanyi@201
   235
    vbGuiSect->pack_start(*box1, Gtk::PACK_SHRINK);
ladanyi@201
   236
ladanyi@201
   237
    Gtk::Label* lblGuiSectionSave =
ladanyi@201
   238
      Gtk::manage(new Gtk::Label("<b>Save Destination</b>"));
ladanyi@201
   239
    lblGuiSectionSave->set_alignment(Gtk::ALIGN_LEFT, Gtk::ALIGN_CENTER);
ladanyi@201
   240
    lblGuiSectionSave->set_use_markup();
ladanyi@201
   241
    box1->pack_start(*lblGuiSectionSave, Gtk::PACK_SHRINK);
ladanyi@201
   242
ladanyi@201
   243
    rbLgfFile.set_label("Lgf file");
ladanyi@201
   244
    rbConfFile.set_label("Conf file");
ladanyi@201
   245
ladanyi@201
   246
    Gtk::RadioButtonGroup group = rbLgfFile.get_group();
ladanyi@201
   247
    rbConfFile.set_group(group);
ladanyi@201
   248
ladanyi@201
   249
    switch (pMapStorage->getGUIDataSaveLocation())
ladanyi@201
   250
    {
ladanyi@201
   251
      case MapStorage::LGF_FILE:
ladanyi@201
   252
        rbLgfFile.set_active();
ladanyi@201
   253
        break;
ladanyi@201
   254
      case MapStorage::CONF_FILE:
ladanyi@201
   255
        rbConfFile.set_active();
ladanyi@201
   256
        break;
ladanyi@201
   257
    }
ladanyi@201
   258
ladanyi@201
   259
    Gtk::HBox* box2 = Gtk::manage(new Gtk::HBox);
ladanyi@201
   260
    box1->pack_start(*box2, Gtk::PACK_SHRINK);
ladanyi@201
   261
ladanyi@201
   262
    Gtk::Label* fill1 = Gtk::manage(new Gtk::Label("    "));
ladanyi@201
   263
    box2->pack_start(*fill1, Gtk::PACK_SHRINK);
ladanyi@201
   264
ladanyi@201
   265
    Gtk::VBox* box3 = Gtk::manage(new Gtk::VBox);
ladanyi@201
   266
    box2->pack_start(*box3, Gtk::PACK_SHRINK);
ladanyi@201
   267
ladanyi@201
   268
    box3->pack_start(rbLgfFile, Gtk::PACK_SHRINK);
ladanyi@201
   269
    box3->pack_start(rbConfFile, Gtk::PACK_SHRINK);
ladanyi@201
   270
ladanyi@201
   271
    rbLgfFile.signal_toggled().connect(
ladanyi@201
   272
        sigc::mem_fun(*this, &SaveDetailsWidget::onGuiSectSaveDestChanged));
ladanyi@201
   273
    rbConfFile.signal_toggled().connect(
ladanyi@201
   274
        sigc::mem_fun(*this, &SaveDetailsWidget::onGuiSectSaveDestChanged));
ladanyi@201
   275
  }
ladanyi@201
   276
ladanyi@201
   277
  // child widgets of vbNodeMaps
ladanyi@201
   278
ladanyi@201
   279
  {
ladanyi@201
   280
    Gtk::VBox* box1 = Gtk::manage(new Gtk::VBox(false, 6));
ladanyi@201
   281
    vbNodeMaps->pack_start(*box1, Gtk::PACK_SHRINK);
ladanyi@201
   282
ladanyi@201
   283
    Gtk::Label* label1 =
ladanyi@201
   284
      Gtk::manage(new Gtk::Label("<b>Save Destination</b>"));
ladanyi@201
   285
    label1->set_alignment(Gtk::ALIGN_LEFT, Gtk::ALIGN_CENTER);
ladanyi@201
   286
    label1->set_use_markup();
ladanyi@201
   287
    box1->pack_start(*label1, Gtk::PACK_SHRINK);
ladanyi@201
   288
ladanyi@201
   289
    Gtk::HBox* box2 = Gtk::manage(new Gtk::HBox);
ladanyi@201
   290
    box1->pack_start(*box2, Gtk::PACK_SHRINK);
ladanyi@201
   291
ladanyi@201
   292
    Gtk::Label* fill1 = Gtk::manage(new Gtk::Label("    "));
ladanyi@201
   293
    box2->pack_start(*fill1, Gtk::PACK_SHRINK);
ladanyi@201
   294
ladanyi@201
   295
    Gtk::Frame* frame = Gtk::manage(new Gtk::Frame);
ladanyi@201
   296
    box2->pack_start(*frame, Gtk::PACK_EXPAND_WIDGET);
ladanyi@201
   297
ladanyi@201
   298
    Gtk::ScrolledWindow* swNodeMaps = Gtk::manage(new Gtk::ScrolledWindow);
ladanyi@201
   299
    frame->add(*swNodeMaps);
ladanyi@201
   300
ladanyi@201
   301
    swNodeMaps->add(twNodeMaps);
ladanyi@201
   302
ladanyi@201
   303
    refNodeMapStore = Gtk::ListStore::create(NodeMapColumns);
ladanyi@201
   304
ladanyi@201
   305
    std::vector<std::string> node_maps = pMapStorage->getNodeMapList();
ladanyi@201
   306
    for (std::vector<std::string>::const_iterator it = node_maps.begin();
ladanyi@201
   307
        it != node_maps.end(); ++it)
ladanyi@201
   308
    {
ladanyi@201
   309
      Gtk::TreeModel::Row row = *(refNodeMapStore->append());
ladanyi@201
   310
      row[NodeMapColumns.colName] = *it;
ladanyi@201
   311
      switch (pMapStorage->getNodeMapSaveDest(*it))
ladanyi@201
   312
      {
ladanyi@201
   313
        case MapStorage::GUI_SECT:
ladanyi@201
   314
          row[NodeMapColumns.colSaveToMainSect] = false;
ladanyi@201
   315
          row[NodeMapColumns.colSaveToGuiSect] = true;
ladanyi@201
   316
          break;
ladanyi@201
   317
        case MapStorage::NESET_SECT:
ladanyi@201
   318
          row[NodeMapColumns.colSaveToMainSect] = true;
ladanyi@201
   319
          row[NodeMapColumns.colSaveToGuiSect] = false;
ladanyi@201
   320
          break;
ladanyi@201
   321
        case MapStorage::DONT_SAVE:
ladanyi@201
   322
          row[NodeMapColumns.colSaveToMainSect] = false;
ladanyi@201
   323
          row[NodeMapColumns.colSaveToGuiSect] = false;
ladanyi@201
   324
          break;
ladanyi@201
   325
      }
ladanyi@201
   326
    }
ladanyi@201
   327
ladanyi@201
   328
    twNodeMaps.set_model(refNodeMapStore);
ladanyi@201
   329
    twNodeMaps.append_column("Name", NodeMapColumns.colName);
ladanyi@201
   330
    twNodeMaps.append_column_editable("Nodeset section",
ladanyi@201
   331
        NodeMapColumns.colSaveToMainSect);
ladanyi@201
   332
    twNodeMaps.append_column_editable("GUI section",
ladanyi@201
   333
        NodeMapColumns.colSaveToGuiSect);
ladanyi@201
   334
ladanyi@201
   335
    swNodeMaps->set_size_request(-1, 200);
ladanyi@201
   336
    swNodeMaps->set_policy(Gtk::POLICY_AUTOMATIC, Gtk::POLICY_AUTOMATIC);
ladanyi@201
   337
ladanyi@201
   338
    refNodeMapStore->signal_row_changed().connect(
ladanyi@201
   339
        sigc::mem_fun(*this, &SaveDetailsWidget::onNodeMapRowChanged));
ladanyi@201
   340
  }
ladanyi@201
   341
ladanyi@201
   342
  // child widgets of vbEdgeMaps
ladanyi@201
   343
ladanyi@201
   344
  {
ladanyi@201
   345
    Gtk::VBox* box1 = Gtk::manage(new Gtk::VBox(false, 6));
ladanyi@201
   346
    vbEdgeMaps->pack_start(*box1, Gtk::PACK_SHRINK);
ladanyi@201
   347
ladanyi@201
   348
    Gtk::Label* label1 =
ladanyi@201
   349
      Gtk::manage(new Gtk::Label("<b>Save Destination</b>"));
ladanyi@201
   350
    label1->set_alignment(Gtk::ALIGN_LEFT, Gtk::ALIGN_CENTER);
ladanyi@201
   351
    label1->set_use_markup();
ladanyi@201
   352
    box1->pack_start(*label1, Gtk::PACK_SHRINK);
ladanyi@201
   353
ladanyi@201
   354
    Gtk::HBox* box2 = Gtk::manage(new Gtk::HBox);
ladanyi@201
   355
    box1->pack_start(*box2, Gtk::PACK_SHRINK);
ladanyi@201
   356
ladanyi@201
   357
    Gtk::Label* fill1 = Gtk::manage(new Gtk::Label("    "));
ladanyi@201
   358
    box2->pack_start(*fill1, Gtk::PACK_SHRINK);
ladanyi@201
   359
ladanyi@201
   360
    Gtk::Frame* frame = Gtk::manage(new Gtk::Frame);
ladanyi@201
   361
    box2->pack_start(*frame, Gtk::PACK_EXPAND_WIDGET);
ladanyi@201
   362
ladanyi@201
   363
    Gtk::ScrolledWindow* swEdgeMaps = Gtk::manage(new Gtk::ScrolledWindow);
ladanyi@201
   364
    frame->add(*swEdgeMaps);
ladanyi@201
   365
ladanyi@201
   366
    swEdgeMaps->add(twEdgeMaps);
ladanyi@201
   367
ladanyi@201
   368
    refEdgeMapStore = Gtk::ListStore::create(EdgeMapColumns);
ladanyi@201
   369
ladanyi@201
   370
    std::vector<std::string> edge_maps = pMapStorage->getEdgeMapList();
ladanyi@201
   371
    for (std::vector<std::string>::const_iterator it = edge_maps.begin();
ladanyi@201
   372
        it != edge_maps.end(); ++it)
ladanyi@201
   373
    {
ladanyi@201
   374
      Gtk::TreeModel::Row row = *(refEdgeMapStore->append());
ladanyi@201
   375
      row[EdgeMapColumns.colName] = *it;
ladanyi@201
   376
      switch (pMapStorage->getEdgeMapSaveDest(*it))
ladanyi@201
   377
      {
ladanyi@201
   378
        case MapStorage::GUI_SECT:
ladanyi@201
   379
          row[EdgeMapColumns.colSaveToMainSect] = false;
ladanyi@201
   380
          row[EdgeMapColumns.colSaveToGuiSect] = true;
ladanyi@201
   381
          break;
ladanyi@201
   382
        case MapStorage::NESET_SECT:
ladanyi@201
   383
          row[EdgeMapColumns.colSaveToMainSect] = true;
ladanyi@201
   384
          row[EdgeMapColumns.colSaveToGuiSect] = false;
ladanyi@201
   385
          break;
ladanyi@201
   386
        case MapStorage::DONT_SAVE:
ladanyi@201
   387
          row[EdgeMapColumns.colSaveToMainSect] = false;
ladanyi@201
   388
          row[EdgeMapColumns.colSaveToGuiSect] = false;
ladanyi@201
   389
          break;
ladanyi@201
   390
      }
ladanyi@201
   391
    }
ladanyi@201
   392
ladanyi@201
   393
    twEdgeMaps.set_model(refEdgeMapStore);
ladanyi@201
   394
    twEdgeMaps.append_column("Name", EdgeMapColumns.colName);
ladanyi@201
   395
    twEdgeMaps.append_column_editable("Edgeset section",
ladanyi@201
   396
        EdgeMapColumns.colSaveToMainSect);
ladanyi@201
   397
    twEdgeMaps.append_column_editable("GUI section",
ladanyi@201
   398
        EdgeMapColumns.colSaveToGuiSect);
ladanyi@201
   399
ladanyi@201
   400
    swEdgeMaps->set_size_request(-1, 200);
ladanyi@201
   401
    swEdgeMaps->set_policy(Gtk::POLICY_AUTOMATIC, Gtk::POLICY_AUTOMATIC);
ladanyi@201
   402
ladanyi@201
   403
    refEdgeMapStore->signal_row_changed().connect(
ladanyi@201
   404
        sigc::mem_fun(*this, &SaveDetailsWidget::onEdgeMapRowChanged));
ladanyi@201
   405
  }
ladanyi@201
   406
ladanyi@201
   407
  show_all_children();
ladanyi@201
   408
}
ladanyi@201
   409
ladanyi@201
   410
void SaveDetailsWidget::onGuiSectSaveDestChanged()
ladanyi@201
   411
{
ladanyi@201
   412
  if (rbLgfFile.get_active())
ladanyi@201
   413
  {
ladanyi@201
   414
    pMapStorage->setGUIDataSaveLocation(MapStorage::LGF_FILE);
ladanyi@201
   415
  }
ladanyi@201
   416
  else if (rbConfFile.get_active())
ladanyi@201
   417
  {
ladanyi@201
   418
    pMapStorage->setGUIDataSaveLocation(MapStorage::CONF_FILE);
ladanyi@201
   419
  }
ladanyi@201
   420
}
ladanyi@201
   421
ladanyi@201
   422
void SaveDetailsWidget::onEdgeMapRowChanged(const Gtk::TreeModel::Path& path,
ladanyi@201
   423
    const Gtk::TreeModel::iterator& iter)
ladanyi@201
   424
{
ladanyi@201
   425
  Gtk::TreeModel::Row row = *iter;
ladanyi@201
   426
  Glib::ustring map_name = row[EdgeMapColumns.colName];
ladanyi@201
   427
  if (row[EdgeMapColumns.colSaveToMainSect] &&
ladanyi@201
   428
      row[EdgeMapColumns.colSaveToGuiSect])
ladanyi@201
   429
  {
ladanyi@201
   430
    if (pMapStorage->getEdgeMapSaveDest(map_name) == MapStorage::NESET_SECT)
ladanyi@201
   431
    {
ladanyi@201
   432
      pMapStorage->setEdgeMapSaveDest(map_name, MapStorage::GUI_SECT);
ladanyi@201
   433
      row[EdgeMapColumns.colSaveToMainSect] = false;
ladanyi@201
   434
    }
ladanyi@201
   435
    else
ladanyi@201
   436
    {
ladanyi@201
   437
      pMapStorage->setEdgeMapSaveDest(map_name, MapStorage::NESET_SECT);
ladanyi@201
   438
      row[EdgeMapColumns.colSaveToGuiSect] = false;
ladanyi@201
   439
    }
ladanyi@201
   440
  }
ladanyi@201
   441
  else if (row[EdgeMapColumns.colSaveToMainSect])
ladanyi@201
   442
  {
ladanyi@201
   443
    pMapStorage->setEdgeMapSaveDest(map_name, MapStorage::NESET_SECT);
ladanyi@201
   444
  }
ladanyi@201
   445
  else if (row[EdgeMapColumns.colSaveToGuiSect])
ladanyi@201
   446
  {
ladanyi@201
   447
    pMapStorage->setEdgeMapSaveDest(map_name, MapStorage::GUI_SECT);
ladanyi@201
   448
  }
ladanyi@201
   449
  else
ladanyi@201
   450
  {
ladanyi@201
   451
    pMapStorage->setEdgeMapSaveDest(map_name, MapStorage::DONT_SAVE);
ladanyi@201
   452
  }
ladanyi@201
   453
}
ladanyi@201
   454
ladanyi@201
   455
void SaveDetailsWidget::onNodeMapRowChanged(const Gtk::TreeModel::Path& path,
ladanyi@201
   456
    const Gtk::TreeModel::iterator& iter)
ladanyi@201
   457
{
ladanyi@201
   458
  Gtk::TreeModel::Row row = *iter;
ladanyi@201
   459
  Glib::ustring map_name = row[NodeMapColumns.colName];
ladanyi@201
   460
  if (row[NodeMapColumns.colSaveToMainSect] &&
ladanyi@201
   461
      row[NodeMapColumns.colSaveToGuiSect])
ladanyi@201
   462
  {
ladanyi@201
   463
    if (pMapStorage->getNodeMapSaveDest(map_name) == MapStorage::NESET_SECT)
ladanyi@201
   464
    {
ladanyi@201
   465
      pMapStorage->setNodeMapSaveDest(map_name, MapStorage::GUI_SECT);
ladanyi@201
   466
      row[NodeMapColumns.colSaveToMainSect] = false;
ladanyi@201
   467
    }
ladanyi@201
   468
    else
ladanyi@201
   469
    {
ladanyi@201
   470
      pMapStorage->setNodeMapSaveDest(map_name, MapStorage::NESET_SECT);
ladanyi@201
   471
      row[NodeMapColumns.colSaveToGuiSect] = false;
ladanyi@201
   472
    }
ladanyi@201
   473
  }
ladanyi@201
   474
  else if (row[NodeMapColumns.colSaveToMainSect])
ladanyi@201
   475
  {
ladanyi@201
   476
    pMapStorage->setNodeMapSaveDest(map_name, MapStorage::NESET_SECT);
ladanyi@201
   477
  }
ladanyi@201
   478
  else if (row[NodeMapColumns.colSaveToGuiSect])
ladanyi@201
   479
  {
ladanyi@201
   480
    pMapStorage->setNodeMapSaveDest(map_name, MapStorage::GUI_SECT);
ladanyi@201
   481
  }
ladanyi@201
   482
  else
ladanyi@201
   483
  {
ladanyi@201
   484
    pMapStorage->setNodeMapSaveDest(map_name, MapStorage::DONT_SAVE);
ladanyi@201
   485
  }
ladanyi@201
   486
}
ladanyi@201
   487
ladanyi@201
   488
void SaveDetailsWidget::onNodeCoordSaveDestChanged()
ladanyi@201
   489
{
ladanyi@201
   490
  if (rbNodeCoordGuiSection.get_active())
ladanyi@201
   491
  {
ladanyi@201
   492
    pMapStorage->setNodeCoordsSaveDest(MapStorage::SpecMapSaveOpts::GUI_SECT);
ladanyi@201
   493
    rbNodeCoordOneMap.set_sensitive(false);
ladanyi@201
   494
    rbNodeCoordTwoMaps.set_sensitive(false);
ladanyi@201
   495
    entNodeCoordsOneMap.set_sensitive(false);
ladanyi@201
   496
    entNodeCoordsTwoMaps1.set_sensitive(false);
ladanyi@201
   497
    entNodeCoordsTwoMaps2.set_sensitive(false);
ladanyi@201
   498
  }
ladanyi@201
   499
  else if (rbNodeCoordNodesetSection.get_active())
ladanyi@201
   500
  {
ladanyi@201
   501
    pMapStorage->setNodeCoordsSaveDest(MapStorage::SpecMapSaveOpts::NESET_SECT);
ladanyi@201
   502
    rbNodeCoordOneMap.set_sensitive(true);
ladanyi@201
   503
    rbNodeCoordTwoMaps.set_sensitive(true);
ladanyi@201
   504
    switch (pMapStorage->getNodeCoordsSaveMapNum())
ladanyi@201
   505
    {
ladanyi@201
   506
      case MapStorage::SpecMapSaveOpts::ONE_MAP:
ladanyi@201
   507
        entNodeCoordsOneMap.set_sensitive(true);
ladanyi@201
   508
        entNodeCoordsTwoMaps1.set_sensitive(false);
ladanyi@201
   509
        entNodeCoordsTwoMaps2.set_sensitive(false);
ladanyi@201
   510
        break;
ladanyi@201
   511
      case MapStorage::SpecMapSaveOpts::TWO_MAPS:
ladanyi@201
   512
        entNodeCoordsOneMap.set_sensitive(false);
ladanyi@201
   513
        entNodeCoordsTwoMaps1.set_sensitive(true);
ladanyi@201
   514
        entNodeCoordsTwoMaps2.set_sensitive(true);
ladanyi@201
   515
        break;
ladanyi@201
   516
    }
ladanyi@201
   517
  }
ladanyi@201
   518
}
ladanyi@201
   519
ladanyi@201
   520
void SaveDetailsWidget::onNodeCoordMapNumChanged()
ladanyi@201
   521
{
ladanyi@201
   522
  if (rbNodeCoordOneMap.get_active())
ladanyi@201
   523
  {
ladanyi@201
   524
    pMapStorage->setNodeCoordsSaveMapNum(MapStorage::SpecMapSaveOpts::ONE_MAP);
ladanyi@201
   525
    entNodeCoordsOneMap.set_sensitive(true);
ladanyi@201
   526
    entNodeCoordsTwoMaps1.set_sensitive(false);
ladanyi@201
   527
    entNodeCoordsTwoMaps2.set_sensitive(false);
ladanyi@201
   528
  }
ladanyi@201
   529
  else if (rbNodeCoordTwoMaps.get_active())
ladanyi@201
   530
  {
ladanyi@201
   531
    pMapStorage->setNodeCoordsSaveMapNum(MapStorage::SpecMapSaveOpts::TWO_MAPS);
ladanyi@201
   532
    entNodeCoordsOneMap.set_sensitive(false);
ladanyi@201
   533
    entNodeCoordsTwoMaps1.set_sensitive(true);
ladanyi@201
   534
    entNodeCoordsTwoMaps2.set_sensitive(true);
ladanyi@201
   535
  }
ladanyi@201
   536
}
ladanyi@201
   537
ladanyi@201
   538
void SaveDetailsWidget::onNodeCoordsOneMapName()
ladanyi@201
   539
{
ladanyi@201
   540
  pMapStorage->setNodeCoordsOneMapName(entNodeCoordsOneMap.get_text());
ladanyi@201
   541
}
ladanyi@201
   542
void SaveDetailsWidget::onNodeCoordsTwoMaps1Name()
ladanyi@201
   543
{
ladanyi@201
   544
  pMapStorage->setNodeCoordsTwoMaps1Name(entNodeCoordsTwoMaps1.get_text());
ladanyi@201
   545
}
ladanyi@201
   546
void SaveDetailsWidget::onNodeCoordsTwoMaps2Name()
ladanyi@201
   547
{
ladanyi@201
   548
  pMapStorage->setNodeCoordsTwoMaps2Name(entNodeCoordsTwoMaps2.get_text());
ladanyi@201
   549
}
ladanyi@201
   550
ladanyi@201
   551
void SaveDetailsWidget::onArrowCoordSaveDestChanged()
ladanyi@201
   552
{
ladanyi@201
   553
  if (rbArrowCoordGuiSection.get_active())
ladanyi@201
   554
  {
ladanyi@201
   555
    pMapStorage->setArrowCoordsSaveDest(MapStorage::SpecMapSaveOpts::GUI_SECT);
ladanyi@201
   556
    rbArrowCoordOneMap.set_sensitive(false);
ladanyi@201
   557
    rbArrowCoordTwoMaps.set_sensitive(false);
ladanyi@201
   558
    entArrowCoordsOneMap.set_sensitive(false);
ladanyi@201
   559
    entArrowCoordsTwoMaps1.set_sensitive(false);
ladanyi@201
   560
    entArrowCoordsTwoMaps2.set_sensitive(false);
ladanyi@201
   561
  }
ladanyi@201
   562
  else if (rbArrowCoordEdgesetSection.get_active())
ladanyi@201
   563
  {
ladanyi@201
   564
    pMapStorage->setArrowCoordsSaveDest(MapStorage::SpecMapSaveOpts::NESET_SECT);
ladanyi@201
   565
    rbArrowCoordOneMap.set_sensitive(true);
ladanyi@201
   566
    rbArrowCoordTwoMaps.set_sensitive(true);
ladanyi@201
   567
    switch (pMapStorage->getArrowCoordsSaveMapNum())
ladanyi@201
   568
    {
ladanyi@201
   569
      case MapStorage::SpecMapSaveOpts::ONE_MAP:
ladanyi@201
   570
        entArrowCoordsOneMap.set_sensitive(true);
ladanyi@201
   571
        entArrowCoordsTwoMaps1.set_sensitive(false);
ladanyi@201
   572
        entArrowCoordsTwoMaps2.set_sensitive(false);
ladanyi@201
   573
        break;
ladanyi@201
   574
      case MapStorage::SpecMapSaveOpts::TWO_MAPS:
ladanyi@201
   575
        entArrowCoordsOneMap.set_sensitive(false);
ladanyi@201
   576
        entArrowCoordsTwoMaps1.set_sensitive(true);
ladanyi@201
   577
        entArrowCoordsTwoMaps2.set_sensitive(true);
ladanyi@201
   578
        break;
ladanyi@201
   579
    }
ladanyi@201
   580
  }
ladanyi@201
   581
}
ladanyi@201
   582
ladanyi@201
   583
void SaveDetailsWidget::onArrowCoordMapNumChanged()
ladanyi@201
   584
{
ladanyi@201
   585
  if (rbArrowCoordOneMap.get_active())
ladanyi@201
   586
  {
ladanyi@201
   587
    pMapStorage->setArrowCoordsSaveMapNum(MapStorage::SpecMapSaveOpts::ONE_MAP);
ladanyi@201
   588
    entArrowCoordsOneMap.set_sensitive(true);
ladanyi@201
   589
    entArrowCoordsTwoMaps1.set_sensitive(false);
ladanyi@201
   590
    entArrowCoordsTwoMaps2.set_sensitive(false);
ladanyi@201
   591
  }
ladanyi@201
   592
  else if (rbArrowCoordTwoMaps.get_active())
ladanyi@201
   593
  {
ladanyi@201
   594
    pMapStorage->setArrowCoordsSaveMapNum(MapStorage::SpecMapSaveOpts::TWO_MAPS);
ladanyi@201
   595
    entArrowCoordsOneMap.set_sensitive(false);
ladanyi@201
   596
    entArrowCoordsTwoMaps1.set_sensitive(true);
ladanyi@201
   597
    entArrowCoordsTwoMaps2.set_sensitive(true);
ladanyi@201
   598
  }
ladanyi@201
   599
}
ladanyi@201
   600
ladanyi@201
   601
void SaveDetailsWidget::onArrowCoordsOneMapName()
ladanyi@201
   602
{
ladanyi@201
   603
  pMapStorage->setArrowCoordsOneMapName(entArrowCoordsOneMap.get_text());
ladanyi@201
   604
}
ladanyi@201
   605
void SaveDetailsWidget::onArrowCoordsTwoMaps1Name()
ladanyi@201
   606
{
ladanyi@201
   607
  pMapStorage->setArrowCoordsTwoMaps1Name(entArrowCoordsTwoMaps1.get_text());
ladanyi@201
   608
}
ladanyi@201
   609
void SaveDetailsWidget::onArrowCoordsTwoMaps2Name()
ladanyi@201
   610
{
ladanyi@201
   611
  pMapStorage->setArrowCoordsTwoMaps2Name(entArrowCoordsTwoMaps2.get_text());
ladanyi@201
   612
}
ladanyi@201
   613
ladanyi@201
   614
SaveDetailsWidget::~SaveDetailsWidget()
ladanyi@201
   615
{
ladanyi@201
   616
}