~ubuntu-branches/debian/sid/pgadmin3/sid

« back to all changes in this revision

Viewing changes to pgadmin/frm/frmOptions.cpp

  • Committer: Bazaar Package Importer
  • Author(s): Gerfried Fuchs
  • Date: 2009-07-30 12:27:16 UTC
  • mfrom: (1.1.6 upstream)
  • Revision ID: james.westby@ubuntu.com-20090730122716-fddbh42on721bbs2
Tags: 1.10.0-1
* New upstream release.
* Adjusted watch file to match release candidates.
* Updated to Standards-Version 3.8.2:
  - Moved to Section: database.
  - Add DEB_BUILD_OPTIONS support for parallel building.
  - Move from findstring to filter suggestion for DEB_BUILD_OPTIONS parsing.
* pgagent got split into its own separate source package by upstream.
* Exclude Docs.vcproj from installation.
* Move doc-base.enus from pgadmin3 to pgadmin3-data package, the files are
  in there too.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
//////////////////////////////////////////////////////////////////////////
2
2
//
3
3
// pgAdmin III - PostgreSQL Tools
4
 
// RCS-ID:      $Id: frmOptions.cpp 6930 2008-01-02 00:10:01Z dpage $
5
 
// Copyright (C) 2002 - 2008, The pgAdmin Development Team
6
 
// This software is released under the Artistic Licence
 
4
// RCS-ID:      $Id: frmOptions.cpp 7818 2009-04-24 08:45:42Z dpage $
 
5
// Copyright (C) 2002 - 2009, The pgAdmin Development Team
 
6
// This software is released under the BSD Licence
7
7
//
8
8
// frmOptions.cpp - The main options dialogue
9
9
//
29
29
 
30
30
#include "images/properties.xpm"
31
31
 
32
 
extern wxLocale *locale;
33
 
extern wxArrayInt existingLangs;
34
 
extern wxArrayString existingLangNames;
35
 
 
36
 
extern wxString pgBackupExecutable;
37
 
extern wxString pgBackupAllExecutable;
38
 
extern wxString pgRestoreExecutable;
39
 
 
40
 
extern wxString edbBackupExecutable;
41
 
extern wxString edbBackupAllExecutable;
42
 
extern wxString edbRestoreExecutable;
43
 
 
44
32
#define nbOptions                   CTRL_NOTEBOOK("nbOptions")
45
33
#define txtPgHelpPath               CTRL_TEXT("txtPgHelpPath")
46
34
#define txtEdbHelpPath              CTRL_TEXT("txtEdbHelpPath")
 
35
#define txtGpHelpPath               CTRL_TEXT("txtGpHelpPath")
47
36
#define txtSlonyHelpPath            CTRL_TEXT("txtSlonyHelpPath")
48
37
#define txtSlonyPath                CTRL_TEXT("txtSlonyPath")
49
38
#define txtPostgresqlPath           CTRL_TEXT("txtPostgresqlPath")
50
39
#define txtEnterprisedbPath         CTRL_TEXT("txtEnterprisedbPath")
 
40
#define txtGPDBPath                 CTRL_TEXT("txtGPDBPath")
51
41
#define txtSystemSchemas            CTRL_TEXT("txtSystemSchemas")
52
42
#define txtLogfile                  CTRL_TEXT("txtLogfile")
53
43
#define radLoglevel                 CTRL_RADIOBOX("radLoglevel")
64
54
#define cbCopyQuote                                     CTRL_COMBOBOX("cbCopyQuote")
65
55
#define cbCopyQuoteChar                         CTRL_COMBOBOX("cbCopyQuoteChar")
66
56
#define cbCopySeparator                         CTRL_COMBOBOX("cbCopySeparator")
67
 
#define chkTabForCompletion                     CTRL_CHECKBOX("chkTabForCompletion")
68
57
#define chkStickySql                CTRL_CHECKBOX("chkStickySql")
69
58
#define chkIndicateNull             CTRL_CHECKBOX("chkIndicateNull")
70
59
#define chkDoubleClickProperties    CTRL_CHECKBOX("chkDoubleClickProperties")
74
63
#define chkResetHints               CTRL_CHECKBOX("chkResetHints")
75
64
#define lstDisplay                                      CTRL_CHECKLISTBOX("lstDisplay")
76
65
#define chkSystemObjects            CTRL_CHECKBOX("chkSystemObjects")
 
66
#define chkIgnoreVersion            CTRL_CHECKBOX("chkIgnoreVersion")
77
67
 
78
68
BEGIN_EVENT_TABLE(frmOptions, pgDialog)
79
69
    EVT_MENU(MNU_HELP,                        frmOptions::OnHelp)
83
73
    EVT_BUTTON (XRCID("btnSlonyPath"),        frmOptions::OnSlonyPathSelect)
84
74
    EVT_BUTTON (XRCID("btnPostgresqlPath"),   frmOptions::OnPostgresqlPathSelect)
85
75
    EVT_BUTTON (XRCID("btnEnterprisedbPath"), frmOptions::OnEnterprisedbPathSelect)
 
76
    EVT_BUTTON (XRCID("btnGPDBPath"),         frmOptions::OnGPDBPathSelect)
86
77
    EVT_BUTTON (XRCID("btnDefault"),          frmOptions::OnDefault)
87
78
    EVT_CHECKBOX(XRCID("chkSuppressHints"),   frmOptions::OnSuppressHints)
88
79
    EVT_CHECKBOX(XRCID("chkResetHints"),      frmOptions::OnResetHints)
109
100
    wxAcceleratorTable accel(1, entries);
110
101
    SetAcceleratorTable(accel);
111
102
 
112
 
 
113
103
    wxTextValidator numval(wxFILTER_NUMERIC);
114
104
    txtMaxRows->SetValidator(numval);
115
105
    txtMaxColSize->SetValidator(numval);
126
116
    txtAutoRowCount->SetValue(NumToStr(settings->GetAutoRowCountThreshold()));
127
117
    txtIndent->SetValue(NumToStr(settings->GetIndentSpaces()));
128
118
    chkSpacesForTabs->SetValue(settings->GetSpacesForTabs());
129
 
        cbCopyQuote->SetSelection(settings->GetCopyQuoting());
130
 
        cbCopyQuoteChar->SetValue(settings->GetCopyQuoteChar());
 
119
    cbCopyQuote->SetSelection(settings->GetCopyQuoting());
 
120
    cbCopyQuoteChar->SetValue(settings->GetCopyQuoteChar());
131
121
 
132
122
    wxString copySeparator = settings->GetCopyColSeparator();
133
123
    if (copySeparator == wxT("\t"))
134
124
        copySeparator = _("Tab");
135
125
    cbCopySeparator->SetValue(copySeparator);
136
126
 
137
 
        chkTabForCompletion->SetValue(settings->GetTabForCompletion());
138
127
    chkStickySql->SetValue(settings->GetStickySql());
139
128
    chkIndicateNull->SetValue(settings->GetIndicateNull());
140
129
    chkDoubleClickProperties->SetValue(settings->GetDoubleClickProperties());
141
130
 
142
131
    txtPgHelpPath->SetValue(settings->GetPgHelpPath());
143
132
    txtEdbHelpPath->SetValue(settings->GetEdbHelpPath());
 
133
    txtGpHelpPath->SetValue(settings->GetGpHelpPath());
144
134
    txtSlonyHelpPath->SetValue(settings->GetSlonyHelpPath());
145
135
    
146
136
    txtSystemSchemas->SetValue(settings->GetSystemSchemas());
149
139
    txtSlonyPath->SetValue(settings->GetSlonyPath());
150
140
    txtPostgresqlPath->SetValue(settings->GetPostgresqlPath());
151
141
    txtEnterprisedbPath->SetValue(settings->GetEnterprisedbPath());
 
142
    txtGPDBPath->SetValue(settings->GetGPDBPath());
 
143
    chkIgnoreVersion->SetValue(settings->GetIgnoreVersion());
152
144
 
153
145
    cbLanguage->Append(_("Default"));
154
146
    int sel=0;
155
 
    int langId=settings->Read(wxT("LanguageId"), wxLANGUAGE_UNKNOWN);
 
147
    wxLanguage langId=settings->GetCanonicalLanguage();
156
148
 
157
149
    int langCount=existingLangs.GetCount();
158
150
    if (langCount)
175
167
    currentSqlFont=settings->GetSQLFont();
176
168
    txtSqlFont->SetValue(currentSqlFont.GetNativeFontInfoUserDesc());
177
169
 
178
 
        // Load the display options
179
 
        lstDisplay->Append(_("Databases"));
180
 
        lstDisplay->Append(_("Tablespaces"));
181
 
        lstDisplay->Append(_("pgAgent jobs"));
182
 
        lstDisplay->Append(_("Groups/group roles"));
183
 
        lstDisplay->Append(_("Users/login roles"));
184
 
        lstDisplay->Append(_("Catalogs"));
185
 
        lstDisplay->Append(_("Casts"));
186
 
        lstDisplay->Append(_("Languages"));
187
 
        lstDisplay->Append(_("Public synonyms"));
188
 
        lstDisplay->Append(_("Schemas"));
189
 
        lstDisplay->Append(_("Slony-I clusters"));
190
 
        lstDisplay->Append(_("Aggregates"));
191
 
        lstDisplay->Append(_("Conversions"));
192
 
        lstDisplay->Append(_("Domains"));
193
 
        lstDisplay->Append(_("Functions"));
194
 
        lstDisplay->Append(_("Trigger functions"));
195
 
        lstDisplay->Append(_("Packages"));
196
 
        lstDisplay->Append(_("Procedures"));
197
 
        lstDisplay->Append(_("Operators"));
198
 
        lstDisplay->Append(_("Operator classes"));
199
 
        lstDisplay->Append(_("Operator families"));
200
 
        lstDisplay->Append(_("Rules"));
201
 
        lstDisplay->Append(_("Sequences"));
202
 
        lstDisplay->Append(_("Tables"));
203
 
        lstDisplay->Append(_("Types"));
204
 
        lstDisplay->Append(_("Views"));
 
170
    // Load the display options
 
171
    lstDisplay->Append(_("Databases"));
 
172
    lstDisplay->Append(_("Tablespaces"));
 
173
    lstDisplay->Append(_("pgAgent Jobs"));
 
174
    lstDisplay->Append(_("Groups/group Roles"));
 
175
    lstDisplay->Append(_("Users/login Roles"));
 
176
    lstDisplay->Append(_("Resource Queues"));
 
177
    lstDisplay->Append(_("Catalogs"));
 
178
    lstDisplay->Append(_("Casts"));
 
179
    lstDisplay->Append(_("Languages"));
 
180
    lstDisplay->Append(_("Public Synonyms"));
 
181
    lstDisplay->Append(_("Schemas"));
 
182
    lstDisplay->Append(_("Slony-I Clusters"));
 
183
    lstDisplay->Append(_("Aggregates"));
 
184
    lstDisplay->Append(_("Conversions"));
 
185
    lstDisplay->Append(_("Domains"));
 
186
    lstDisplay->Append(_("Functions"));
 
187
    lstDisplay->Append(_("Trigger Functions"));
 
188
    lstDisplay->Append(_("Packages"));
 
189
    lstDisplay->Append(_("Procedures"));
 
190
    lstDisplay->Append(_("Operators"));
 
191
    lstDisplay->Append(_("Operator Classes"));
 
192
    lstDisplay->Append(_("Operator Families"));
 
193
    lstDisplay->Append(_("Sequences"));
 
194
    lstDisplay->Append(_("Tables"));
 
195
    lstDisplay->Append(_("External Tables"));
 
196
    lstDisplay->Append(_("FTS Configurations"));
 
197
    lstDisplay->Append(_("FTS Dictionaries"));
 
198
    lstDisplay->Append(_("FTS Parsers"));
 
199
    lstDisplay->Append(_("FTS Templates"));
 
200
    lstDisplay->Append(_("Types"));
 
201
    lstDisplay->Append(_("Views"));
205
202
 
206
 
        for (unsigned int x=0; x < lstDisplay->GetCount(); x++)
207
 
                lstDisplay->Check(x, settings->GetDisplayOption(lstDisplay->GetString(x)));
 
203
    for (unsigned int x=0; x < lstDisplay->GetCount(); x++)
 
204
        lstDisplay->Check(x, settings->GetDisplayOption(lstDisplay->GetString(x)));
208
205
 
209
206
    chkSystemObjects->SetValue(settings->GetShowSystemObjects());
210
207
 
211
 
        wxCommandEvent e;
212
 
        OnChangeCopyQuote(e);
 
208
    wxCommandEvent e;
 
209
    OnChangeCopyQuote(e);
213
210
}
214
211
 
215
212
 
229
226
    // Reset the display options to the defaults.
230
227
    // Clear them all first
231
228
    for (unsigned int x=0; x < lstDisplay->GetCount(); x++)
232
 
                lstDisplay->Check(x, settings->GetDisplayOption(lstDisplay->GetString(x), true));
 
229
        lstDisplay->Check(x, settings->GetDisplayOption(lstDisplay->GetString(x), true));
233
230
}
234
231
 
235
232
void frmOptions::OnSlonyPathSelect(wxCommandEvent &ev)
253
250
        txtEnterprisedbPath->SetValue(dlg.GetPath());
254
251
}
255
252
 
 
253
void frmOptions::OnGPDBPathSelect(wxCommandEvent &ev)
 
254
{
 
255
    wxDirDialog dlg(this, _("Select directory with GreenplumDB utilities"), txtGPDBPath->GetValue());
 
256
    if (dlg.ShowModal() == wxID_OK)
 
257
        txtGPDBPath->SetValue(dlg.GetPath());
 
258
}
 
259
 
256
260
void frmOptions::OnSuppressHints(wxCommandEvent &ev)
257
261
{
258
262
    if (chkSuppressHints->GetValue())
292
296
        return;
293
297
    }
294
298
 
 
299
#ifdef __WXMSW__
 
300
    if (!txtGPDBPath->GetValue().IsEmpty() && !isGpApp(txtGPDBPath->GetValue() + wxT("\\pg_dump.exe")))
 
301
#else
 
302
    if (!txtGPDBPath->GetValue().IsEmpty() && !isGpApp(txtGPDBPath->GetValue() + wxT("/pg_dump")))
 
303
#endif
 
304
    {
 
305
        wxMessageBox(_("The Greenplum bin path specified is not valid or does not contain a Greenplum pg_dump executable.\n\nPlease select another directory, or leave the path blank."), _("Error"), wxICON_ERROR); 
 
306
        txtGPDBPath->SetFocus();
 
307
        return;
 
308
    }
 
309
 
295
310
    // Clean and check the help paths
296
311
    txtPgHelpPath->SetValue(CleanHelpPath(txtPgHelpPath->GetValue()));
297
312
    if (!HelpPathValid(txtPgHelpPath->GetValue()))
309
324
        return;
310
325
    }
311
326
 
 
327
    txtGpHelpPath->SetValue(CleanHelpPath(txtGpHelpPath->GetValue()));
 
328
    if (!HelpPathValid(txtGpHelpPath->GetValue()))
 
329
    {
 
330
        wxMessageBox(_("An invalid GreenplumDB help path was specified.\n\nPlease enter another filename, directory or URL, or leave the path blank."), _("Error"), wxICON_ERROR);
 
331
        txtGpHelpPath->SetFocus();
 
332
        return;
 
333
    }
 
334
 
312
335
    txtSlonyHelpPath->SetValue(CleanHelpPath(txtSlonyHelpPath->GetValue()));
313
336
    if (!HelpPathValid(txtSlonyHelpPath->GetValue()))
314
337
    {
358
381
    settings->SetAutoRowCountThreshold(StrToLong(txtAutoRowCount->GetValue()));
359
382
    settings->SetIndentSpaces(StrToLong(txtIndent->GetValue()));
360
383
    settings->SetSpacesForTabs(chkSpacesForTabs->GetValue());
361
 
        settings->SetCopyQuoting(cbCopyQuote->GetCurrentSelection());
362
 
        settings->SetCopyQuoteChar(cbCopyQuoteChar->GetValue());
363
 
        
 
384
    settings->SetCopyQuoting(cbCopyQuote->GetCurrentSelection());
 
385
    settings->SetCopyQuoteChar(cbCopyQuoteChar->GetValue());
 
386
    
364
387
    wxString copySeparator = cbCopySeparator->GetValue();
365
388
    if (copySeparator == _("Tab"))
366
389
        copySeparator = wxT("\t");
367
390
    settings->SetCopyColSeparator(copySeparator);
368
391
 
369
 
        settings->SetTabForCompletion(chkTabForCompletion->GetValue());
370
392
    settings->SetStickySql(chkStickySql->GetValue());
371
393
    settings->SetIndicateNull(chkIndicateNull->GetValue());
372
394
    settings->SetDoubleClickProperties(chkDoubleClickProperties->GetValue());
373
395
    settings->SetUnicodeFile(chkUnicodeFile->GetValue());
374
 
    settings->SetFont(currentFont);
 
396
    settings->SetSystemFont(currentFont);
375
397
    settings->SetSQLFont(currentSqlFont);
376
398
    settings->SetSuppressGuruHints(chkSuppressHints->GetValue());
377
399
    settings->SetSlonyPath(txtSlonyPath->GetValue());
378
400
    settings->SetPostgresqlPath(txtPostgresqlPath->GetValue());
379
401
    settings->SetEnterprisedbPath(txtEnterprisedbPath->GetValue());
 
402
    settings->SetGPDBPath(txtGPDBPath->GetValue());
380
403
 
381
404
    // Setup PostgreSQL/EnterpriseDB working paths
382
405
#if defined(__WXMSW__)
387
410
    edbBackupExecutable  = settings->GetEnterprisedbPath() + wxT("\\pg_dump.exe");
388
411
    edbBackupAllExecutable  = settings->GetEnterprisedbPath() + wxT("\\pg_dumpall.exe");
389
412
    edbRestoreExecutable = settings->GetEnterprisedbPath() + wxT("\\pg_restore.exe");
 
413
 
 
414
    gpBackupExecutable  = settings->GetGPDBPath() + wxT("\\pg_dump.exe");
 
415
    gpBackupAllExecutable  = settings->GetGPDBPath() + wxT("\\pg_dumpall.exe");
 
416
    gpRestoreExecutable = settings->GetGPDBPath() + wxT("\\pg_restore.exe");
390
417
#else
391
418
    pgBackupExecutable  = settings->GetPostgresqlPath() + wxT("/pg_dump");
392
 
        pgBackupAllExecutable  = settings->GetPostgresqlPath() + wxT("/pg_dumpall");
 
419
    pgBackupAllExecutable  = settings->GetPostgresqlPath() + wxT("/pg_dumpall");
393
420
    pgRestoreExecutable = settings->GetPostgresqlPath() + wxT("/pg_restore");
394
421
 
395
422
    edbBackupExecutable  = settings->GetEnterprisedbPath() + wxT("/pg_dump");
396
 
        edbBackupAllExecutable  = settings->GetEnterprisedbPath() + wxT("/pg_dumpall");
 
423
    edbBackupAllExecutable  = settings->GetEnterprisedbPath() + wxT("/pg_dumpall");
397
424
    edbRestoreExecutable = settings->GetEnterprisedbPath() + wxT("/pg_restore");
 
425
 
 
426
    gpBackupExecutable  = settings->GetGPDBPath() + wxT("/pg_dump");
 
427
    gpBackupAllExecutable  = settings->GetGPDBPath() + wxT("/pg_dumpall");
 
428
    gpRestoreExecutable = settings->GetGPDBPath() + wxT("/pg_restore");
398
429
#endif
399
430
 
400
431
    if (!wxFile::Exists(pgBackupExecutable))
411
442
    if (!wxFile::Exists(edbRestoreExecutable))
412
443
        edbRestoreExecutable = wxEmptyString;
413
444
 
 
445
    if (!wxFile::Exists(gpBackupExecutable))
 
446
        gpBackupExecutable = wxEmptyString;
 
447
    if (!wxFile::Exists(gpBackupAllExecutable))
 
448
        gpBackupAllExecutable = wxEmptyString;
 
449
    if (!wxFile::Exists(gpRestoreExecutable))
 
450
        gpRestoreExecutable = wxEmptyString;
 
451
 
 
452
 
 
453
    settings->SetIgnoreVersion(chkIgnoreVersion->GetValue());
 
454
 
414
455
    if (chkResetHints->GetValue())
415
456
        frmHint::ResetHints();
416
457
 
417
458
    // Set the help paths
418
459
    settings->SetPgHelpPath(txtPgHelpPath->GetValue());
419
460
    settings->SetEdbHelpPath(txtEdbHelpPath->GetValue());
 
461
    settings->SetGpHelpPath(txtGpHelpPath->GetValue());
420
462
    settings->SetSlonyHelpPath(txtSlonyHelpPath->GetValue());
421
463
 
422
464
    settings->SetSystemSchemas(txtSystemSchemas->GetValue());
423
465
 
 
466
    // Save the display options
 
467
    int changed = false;
 
468
    for (unsigned int x=0; x < lstDisplay->GetCount(); x++)
 
469
    {
 
470
        if (lstDisplay->IsChecked(x) != settings->GetDisplayOption(lstDisplay->GetString(x)))
 
471
        {
 
472
            changed = true;
 
473
            settings->SetDisplayOption(lstDisplay->GetString(x), lstDisplay->IsChecked(x));
 
474
        }
 
475
    }
 
476
 
 
477
    if (chkSystemObjects->GetValue() != settings->GetShowSystemObjects())
 
478
    {
 
479
        changed = true;
 
480
        settings->SetShowSystemObjects(chkSystemObjects->GetValue());
 
481
    }
 
482
 
 
483
    // Change the language last, as it will affect our tests for changes
 
484
    // in the display object types.
424
485
    int langNo=cbLanguage->GetCurrentSelection();
425
486
    if (langNo >= 0)
426
487
    {
432
493
            const wxLanguageInfo *langInfo=wxLocale::GetLanguageInfo(existingLangs.Item(langNo-1));
433
494
            langId = (wxLanguage) langInfo->Language;
434
495
        }
435
 
        if (langId != (wxLanguage)settings->Read(wxT("LanguageId"), wxLANGUAGE_UNKNOWN))
436
 
        {
437
 
            delete locale;
438
 
            locale = new wxLocale();
439
 
            if (locale->Init(langId))
440
 
            {
441
 
#ifdef __LINUX__
442
 
                {
443
 
                    wxLogNull noLog;
444
 
                    locale->AddCatalog(wxT("fileutils"));
445
 
                }
446
 
#endif
447
 
                locale->AddCatalog(wxT("pgadmin3"));
448
 
                settings->Write(wxT("LanguageId"), (long)langId);
449
 
            }
450
 
        }
451
 
 
452
 
    }
453
 
 
454
 
        // Save the display options
455
 
        int changed = false;
456
 
        for (unsigned int x=0; x < lstDisplay->GetCount(); x++)
457
 
        {
458
 
                if (lstDisplay->IsChecked(x) != settings->GetDisplayOption(lstDisplay->GetString(x)))
459
 
        {
460
 
                        changed = true;
461
 
                    settings->SetDisplayOption(lstDisplay->GetString(x), lstDisplay->IsChecked(x));
462
 
        }
463
 
        }
464
 
 
465
 
    if (chkSystemObjects->GetValue() != settings->GetShowSystemObjects())
466
 
    {
467
 
        changed = true;
468
 
        settings->SetShowSystemObjects(chkSystemObjects->GetValue());
469
 
    }
470
 
 
471
 
        if (changed)
472
 
                wxMessageBox(_("Changes to the display options may not be visible until the browser tree is refreshed."), _("Display options"), wxICON_INFORMATION);
473
 
 
474
 
    settings->Save();
 
496
 
 
497
        settings->SetCanonicalLanguage(langId);
 
498
    }
 
499
 
 
500
    // Did any display options change? Display this message last, so it's
 
501
    // in the selected language.
 
502
    if (changed)
 
503
        wxMessageBox(_("Changes to the display options may not be visible until the browser tree is refreshed."), _("Display options"), wxICON_INFORMATION);
 
504
 
475
505
    Destroy();
476
506
}
477
507
 
518
548
}
519
549
 
520
550
 
521
 
optionsFactory::optionsFactory(menuFactoryList *list, wxMenu *mnu, wxToolBar *toolbar) : actionFactory(list)
 
551
optionsFactory::optionsFactory(menuFactoryList *list, wxMenu *mnu, ctlMenuToolbar *toolbar) : actionFactory(list)
522
552
{
523
553
    mnu->Append(id, _("&Options..."), _("Show options dialog."));
524
554
}
534
564
// Enable/disable the copy quote option as required.
535
565
void frmOptions::OnChangeCopyQuote(wxCommandEvent& WXUNUSED(ev))
536
566
{
537
 
        if (cbCopyQuote->GetValue() == _("None"))
538
 
                cbCopyQuoteChar->Disable();
539
 
        else
540
 
                cbCopyQuoteChar->Enable();
 
567
    if (cbCopyQuote->GetValue() == _("None"))
 
568
        cbCopyQuoteChar->Disable();
 
569
    else
 
570
        cbCopyQuoteChar->Enable();
541
571
}