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