diff --git a/mythplugins/mytharchive/mytharchive/archivesettings.cpp b/mythplugins/mytharchive/mytharchive/archivesettings.cpp
index be35649..0e04b55 100644
--- a/mythplugins/mytharchive/mytharchive/archivesettings.cpp
+++ b/mythplugins/mytharchive/mytharchive/archivesettings.cpp
@@ -12,29 +12,31 @@
 #include "archivesettings.h"
 
 
-static HostLineEdit *MythArchiveTempDir()
+static HostFileBrowserSetting *MythArchiveTempDir()
 {
-    HostLineEdit *gc = new HostLineEdit("MythArchiveTempDir");
-    gc->setLabel(QObject::tr("MythArchive Temp Directory"));
+    HostFileBrowserSetting *gc = new HostFileBrowserSetting("MythArchiveTempDir");
+    gc->setLabel(QObject::tr("Temporary Directory"));
     gc->setValue("");
     gc->setHelpText(QObject::tr("Location where MythArchive should create its "
             "temporory work files. LOTS of free space required here."));
+    gc->SetTypeFilter(QDir::AllDirs | QDir::Hidden);
     return gc;
 };
 
-static HostLineEdit *MythArchiveShareDir()
+static HostFileBrowserSetting *MythArchiveShareDir()
 {
-    HostLineEdit *gc = new HostLineEdit("MythArchiveShareDir");
-    gc->setLabel(QObject::tr("MythArchive Share Directory"));
+    HostFileBrowserSetting *gc = new HostFileBrowserSetting("MythArchiveShareDir");
+    gc->setLabel(QObject::tr("Share Directory"));
     gc->setValue(GetShareDir() + "mytharchive/");
     gc->setHelpText(QObject::tr("Location where MythArchive stores its scripts, "
             "intro movies and theme files"));
+    gc->SetTypeFilter(QDir::AllDirs | QDir::Hidden);
     return gc;
 };
 
-static HostComboBox *PALNTSC()
+static HostComboBoxSetting *PALNTSC()
 {
-    HostComboBox *gc = new HostComboBox("MythArchiveVideoFormat");
+    HostComboBoxSetting *gc = new HostComboBoxSetting("MythArchiveVideoFormat");
     gc->setLabel(QObject::tr("Video format"));
     gc->addSelection("PAL");
     gc->addSelection("NTSC");
@@ -42,27 +44,29 @@ static HostComboBox *PALNTSC()
     return gc;
 };
 
-static HostLineEdit *MythArchiveFileFilter()
+static HostTextEditSetting *MythArchiveFileFilter()
 {
-    HostLineEdit *gc = new HostLineEdit("MythArchiveFileFilter");
+    HostTextEditSetting *gc = new HostTextEditSetting("MythArchiveFileFilter");
     gc->setLabel(QObject::tr("File Selector Filter"));
     gc->setValue("*.mpg *.mov *.avi *.mpeg *.nuv");
     gc->setHelpText(QObject::tr("The file name filter to use in the file selector."));
     return gc;
 };
 
-static HostLineEdit *MythArchiveDVDLocation()
+static HostFileBrowserSetting *MythArchiveDVDLocation()
 {
-    HostLineEdit *gc = new HostLineEdit("MythArchiveDVDLocation");
+    HostFileBrowserSetting *gc = new HostFileBrowserSetting("MythArchiveDVDLocation");
     gc->setLabel(QObject::tr("Location of DVD"));
     gc->setValue("/dev/dvd");
     gc->setHelpText(QObject::tr("Which DVD drive to use when burning discs."));
+    //TODO does not work with symlink
+    gc->SetTypeFilter(QDir::AllDirs | QDir::Hidden);
     return gc;
 };
 
-static HostSpinBox *MythArchiveDriveSpeed()
+static HostSpinBoxSetting *MythArchiveDriveSpeed()
 {
-    HostSpinBox *gc = new HostSpinBox("MythArchiveDriveSpeed", 0, 48, 1);
+    HostSpinBoxSetting *gc = new HostSpinBoxSetting("MythArchiveDriveSpeed", 0, 48, 1);
     gc->setLabel(QObject::tr("DVD Drive Write Speed"));
     gc->setValue(0);
     gc->setHelpText(QObject::tr("This is the write speed to use when burning a DVD. "
@@ -70,9 +74,9 @@ static HostSpinBox *MythArchiveDriveSpeed()
     return gc;
 };
 
-static HostLineEdit *MythArchiveDVDPlayerCmd()
+static HostTextEditSetting *MythArchiveDVDPlayerCmd()
 {
-    HostLineEdit *gc = new HostLineEdit("MythArchiveDVDPlayerCmd");
+    HostTextEditSetting *gc = new HostTextEditSetting("MythArchiveDVDPlayerCmd");
     gc->setLabel(QObject::tr("Command to play DVD"));
     gc->setValue("Internal");
     gc->setHelpText(QObject::tr("Command to run when test playing a created DVD. "
@@ -81,9 +85,9 @@ static HostLineEdit *MythArchiveDVDPlayerCmd()
     return gc;
 };
 
-static HostCheckBox *MythArchiveCopyRemoteFiles()
+static HostCheckBoxSetting *MythArchiveCopyRemoteFiles()
 {
-    HostCheckBox *gc = new HostCheckBox("MythArchiveCopyRemoteFiles");
+    HostCheckBoxSetting *gc = new HostCheckBoxSetting("MythArchiveCopyRemoteFiles");
     gc->setLabel(QObject::tr("Copy remote files"));
     gc->setValue(false);
     gc->setHelpText(QObject::tr("If set files on remote filesystems "
@@ -92,9 +96,9 @@ static HostCheckBox *MythArchiveCopyRemoteFiles()
     return gc;
 };
 
-static HostCheckBox *MythArchiveAlwaysUseMythTranscode()
+static HostCheckBoxSetting *MythArchiveAlwaysUseMythTranscode()
 {
-    HostCheckBox *gc = new HostCheckBox("MythArchiveAlwaysUseMythTranscode");
+    HostCheckBoxSetting *gc = new HostCheckBoxSetting("MythArchiveAlwaysUseMythTranscode");
     gc->setLabel(QObject::tr("Always Use Mythtranscode"));
     gc->setValue(true);
     gc->setHelpText(QObject::tr("If set mpeg2 files will always be passed"
@@ -103,9 +107,9 @@ static HostCheckBox *MythArchiveAlwaysUseMythTranscode()
     return gc;
 };
 
-static HostCheckBox *MythArchiveUseProjectX()
+static HostCheckBoxSetting *MythArchiveUseProjectX()
 {
-    HostCheckBox *gc = new HostCheckBox("MythArchiveUseProjectX");
+    HostCheckBoxSetting *gc = new HostCheckBoxSetting("MythArchiveUseProjectX");
     gc->setLabel(QObject::tr("Use ProjectX"));
     gc->setValue(false);
     gc->setHelpText(QObject::tr("If set ProjectX will be used to cut"
@@ -114,9 +118,9 @@ static HostCheckBox *MythArchiveUseProjectX()
     return gc;
 };
 
-static HostCheckBox *MythArchiveUseFIFO()
+static HostCheckBoxSetting *MythArchiveUseFIFO()
 {
-    HostCheckBox *gc = new HostCheckBox("MythArchiveUseFIFO");
+    HostCheckBoxSetting *gc = new HostCheckBoxSetting("MythArchiveUseFIFO");
     gc->setLabel(QObject::tr("Use FIFOs"));
     gc->setValue(true);
     gc->setHelpText(QObject::tr("The script will use FIFOs to pass the output"
@@ -126,9 +130,9 @@ static HostCheckBox *MythArchiveUseFIFO()
     return gc;
 };
 
-static HostCheckBox *MythArchiveAddSubtitles()
+static HostCheckBoxSetting *MythArchiveAddSubtitles()
 {
-    HostCheckBox *gc = new HostCheckBox("MythArchiveAddSubtitles");
+    HostCheckBoxSetting *gc = new HostCheckBoxSetting("MythArchiveAddSubtitles");
     gc->setLabel(QObject::tr("Add Subtitles"));
     gc->setValue(false);
     gc->setHelpText(QObject::tr("If available this option will add subtitles "
@@ -136,9 +140,9 @@ static HostCheckBox *MythArchiveAddSubtitles()
     return gc;
 };
 
-static HostComboBox *MainMenuAspectRatio()
+static HostComboBoxSetting *MainMenuAspectRatio()
 {
-    HostComboBox *gc = new HostComboBox("MythArchiveMainMenuAR");
+    HostComboBoxSetting *gc = new HostComboBoxSetting("MythArchiveMainMenuAR");
     gc->setLabel(QObject::tr("Main Menu Aspect Ratio"));
     gc->addSelection("4:3");
     gc->addSelection("16:9");
@@ -147,9 +151,9 @@ static HostComboBox *MainMenuAspectRatio()
     return gc;
 };
 
-static HostComboBox *ChapterMenuAspectRatio()
+static HostComboBoxSetting *ChapterMenuAspectRatio()
 {
-    HostComboBox *gc = new HostComboBox("MythArchiveChapterMenuAR");
+    HostComboBoxSetting *gc = new HostComboBoxSetting("MythArchiveChapterMenuAR");
     gc->setLabel(QObject::tr("Chapter Menu Aspect Ratio"));
     gc->addSelection("4:3");
     gc->addSelection("16:9");
@@ -160,9 +164,9 @@ static HostComboBox *ChapterMenuAspectRatio()
     return gc;
 };
 
-static HostComboBox *MythArchiveDateFormat()
+static HostComboBoxSetting *MythArchiveDateFormat()
 {
-    HostComboBox *gc = new HostComboBox("MythArchiveDateFormat");
+    HostComboBoxSetting *gc = new HostComboBoxSetting("MythArchiveDateFormat");
     gc->setLabel(QObject::tr("Date format"));
 
     QDate sampdate = QDate::currentDate();
@@ -193,9 +197,9 @@ static HostComboBox *MythArchiveDateFormat()
     return gc;
 }
 
-static HostComboBox *MythArchiveTimeFormat()
+static HostComboBoxSetting *MythArchiveTimeFormat()
 {
-    HostComboBox *gc = new HostComboBox("MythArchiveTimeFormat");
+    HostComboBoxSetting *gc = new HostComboBoxSetting("MythArchiveTimeFormat");
     gc->setLabel(QObject::tr("Time format"));
 
     QTime samptime = QTime::currentTime();
@@ -208,9 +212,9 @@ static HostComboBox *MythArchiveTimeFormat()
     return gc;
 }
 
-static HostComboBox *MythArchiveDefaultEncProfile()
+static HostComboBoxSetting *MythArchiveDefaultEncProfile()
 {
-    HostComboBox *gc = new HostComboBox("MythArchiveDefaultEncProfile");
+    HostComboBoxSetting *gc = new HostComboBoxSetting("MythArchiveDefaultEncProfile");
     gc->setLabel(QObject::tr("Default Encoder Profile"));
 
     gc->addSelection("HQ", "HQ");
@@ -223,81 +227,81 @@ static HostComboBox *MythArchiveDefaultEncProfile()
     return gc;
 }
 
-static HostLineEdit *MythArchiveMplexCmd()
+static HostTextEditSetting *MythArchiveMplexCmd()
 {
-    HostLineEdit *gc = new HostLineEdit("MythArchiveMplexCmd");
+    HostTextEditSetting *gc = new HostTextEditSetting("MythArchiveMplexCmd");
     gc->setLabel(QObject::tr("mplex Command"));
     gc->setValue("mplex");
     gc->setHelpText(QObject::tr("Command to run mplex"));
     return gc;
 };
 
-static HostLineEdit *MythArchiveDvdauthorCmd()
+static HostTextEditSetting *MythArchiveDvdauthorCmd()
 {
-    HostLineEdit *gc = new HostLineEdit("MythArchiveDvdauthorCmd");
+    HostTextEditSetting *gc = new HostTextEditSetting("MythArchiveDvdauthorCmd");
     gc->setLabel(QObject::tr("dvdauthor command"));
     gc->setValue("dvdauthor");
     gc->setHelpText(QObject::tr("Command to run dvdauthor."));
     return gc;
 };
 
-static HostLineEdit *MythArchiveMkisofsCmd()
+static HostTextEditSetting *MythArchiveMkisofsCmd()
 {
-    HostLineEdit *gc = new HostLineEdit("MythArchiveMkisofsCmd");
+    HostTextEditSetting *gc = new HostTextEditSetting("MythArchiveMkisofsCmd");
     gc->setLabel(QObject::tr("mkisofs command"));
     gc->setValue("mkisofs");
     gc->setHelpText(QObject::tr("Command to run mkisofs. (Used to create ISO images)"));
     return gc;
 };
 
-static HostLineEdit *MythArchiveGrowisofsCmd()
+static HostTextEditSetting *MythArchiveGrowisofsCmd()
 {
-    HostLineEdit *gc = new HostLineEdit("MythArchiveGrowisofsCmd");
+    HostTextEditSetting *gc = new HostTextEditSetting("MythArchiveGrowisofsCmd");
     gc->setLabel(QObject::tr("growisofs command"));
     gc->setValue("growisofs");
     gc->setHelpText(QObject::tr("Command to run growisofs. (Used to burn DVD's)"));
     return gc;
 };
 
-static HostLineEdit *MythArchiveM2VRequantiserCmd()
+static HostTextEditSetting *MythArchiveM2VRequantiserCmd()
 {
-    HostLineEdit *gc = new HostLineEdit("MythArchiveM2VRequantiserCmd");
+    HostTextEditSetting *gc = new HostTextEditSetting("MythArchiveM2VRequantiserCmd");
     gc->setLabel(QObject::tr("M2VRequantiser command"));
     gc->setValue("M2VRequantiser");
     gc->setHelpText(QObject::tr("Command to run M2VRequantiser. Optional - leave blank if you don't have M2VRequantiser installed."));
     return gc;
 };
 
-static HostLineEdit *MythArchiveJpeg2yuvCmd()
+static HostTextEditSetting *MythArchiveJpeg2yuvCmd()
 {
-    HostLineEdit *gc = new HostLineEdit("MythArchiveJpeg2yuvCmd");
+    HostTextEditSetting *gc = new HostTextEditSetting("MythArchiveJpeg2yuvCmd");
     gc->setLabel(QObject::tr("jpeg2yuv command"));
     gc->setValue("jpeg2yuv");
     gc->setHelpText(QObject::tr("Command to run jpeg2yuv. Part of mjpegtools package"));
     return gc;
 };
 
-static HostLineEdit *MythArchiveSpumuxCmd()
+static HostTextEditSetting *MythArchiveSpumuxCmd()
 {
-    HostLineEdit *gc = new HostLineEdit("MythArchiveSpumuxCmd");
+    HostTextEditSetting *gc = new HostTextEditSetting("MythArchiveSpumuxCmd");
     gc->setLabel(QObject::tr("spumux command"));
     gc->setValue("spumux");
     gc->setHelpText(QObject::tr("Command to run spumux. Part of dvdauthor package"));
     return gc;
 };
 
-static HostLineEdit *MythArchiveMpeg2encCmd()
+static HostTextEditSetting *MythArchiveMpeg2encCmd()
 {
-    HostLineEdit *gc = new HostLineEdit("MythArchiveMpeg2encCmd");
+    HostTextEditSetting *gc = new HostTextEditSetting("MythArchiveMpeg2encCmd");
     gc->setLabel(QObject::tr("mpeg2enc command"));
     gc->setValue("mpeg2enc");
     gc->setHelpText(QObject::tr("Command to run mpeg2enc. Part of mjpegtools package"));
     return gc;
 };
 
-static HostLineEdit *MythArchiveProjectXCmd()
+static HostTextEditSetting *MythArchiveProjectXCmd()
 {
-    HostLineEdit *gc = new HostLineEdit("MythArchiveProjectXCmd");
+    HostTextEditSetting *gc = new HostTextEditSetting("MythArchiveProjectXCmd");
     gc->setLabel(QObject::tr("projectx command"));
     gc->setValue("projectx");
     gc->setHelpText(QObject::tr("Command to run ProjectX. Will be used to cut "
@@ -307,49 +311,39 @@ static HostLineEdit *MythArchiveProjectXCmd()
 
 ArchiveSettings::ArchiveSettings()
 {
-    VerticalConfigurationGroup* vcg1 = new VerticalConfigurationGroup(false);
-    vcg1->setLabel(QObject::tr("MythArchive Settings"));
-    vcg1->addChild(MythArchiveTempDir());
-    vcg1->addChild(MythArchiveShareDir());
-    vcg1->addChild(PALNTSC());
-    vcg1->addChild(MythArchiveFileFilter());
-    vcg1->addChild(MythArchiveDVDLocation());
-    vcg1->addChild(MythArchiveDriveSpeed());
-    vcg1->addChild(MythArchiveDVDPlayerCmd());
-    addChild(vcg1);
-
-    VerticalConfigurationGroup* vcg2 = new VerticalConfigurationGroup(false);
-    vcg2->setLabel(QObject::tr("MythArchive Settings (2)"));
-    vcg2->addChild(MythArchiveCopyRemoteFiles());
-    vcg2->addChild(MythArchiveAlwaysUseMythTranscode());
-    vcg2->addChild(MythArchiveUseProjectX());
-    vcg2->addChild(MythArchiveAddSubtitles());
-    vcg2->addChild(MythArchiveUseFIFO());
-    vcg2->addChild(MythArchiveDefaultEncProfile());
-    addChild(vcg2);
-
-    VerticalConfigurationGroup* vcg3 = new VerticalConfigurationGroup(false);
-    vcg3->setLabel(QObject::tr("DVD Menu Settings"));
-    vcg3->addChild(MainMenuAspectRatio());
-    vcg3->addChild(ChapterMenuAspectRatio());
-    vcg3->addChild(MythArchiveDateFormat());
-    vcg3->addChild(MythArchiveTimeFormat());
-    addChild(vcg3);
-
-    VerticalConfigurationGroup* vcg4 = new VerticalConfigurationGroup(false);
-    vcg4->setLabel(QObject::tr("MythArchive External Commands (1)"));
-    vcg4->addChild(MythArchiveMplexCmd());
-    vcg4->addChild(MythArchiveDvdauthorCmd());
-    vcg4->addChild(MythArchiveSpumuxCmd());
-    vcg4->addChild(MythArchiveMpeg2encCmd());
-    addChild(vcg4);
-
-    VerticalConfigurationGroup* vcg5 = new VerticalConfigurationGroup(false);
-    vcg5->setLabel(QObject::tr("MythArchive External Commands (2)"));
-    vcg5->addChild(MythArchiveMkisofsCmd());
-    vcg5->addChild(MythArchiveGrowisofsCmd());
-    vcg5->addChild(MythArchiveM2VRequantiserCmd());
-    vcg5->addChild(MythArchiveJpeg2yuvCmd());
-    vcg5->addChild(MythArchiveProjectXCmd());
-    addChild(vcg5);
+    setLabel(QObject::tr("MythArchive Settings"));
+    addChild(MythArchiveTempDir());
+    addChild(MythArchiveShareDir());
+    addChild(PALNTSC());
+    addChild(MythArchiveFileFilter());
+    addChild(MythArchiveDVDLocation());
+    addChild(MythArchiveDriveSpeed());
+    addChild(MythArchiveDVDPlayerCmd());
+    addChild(MythArchiveCopyRemoteFiles());
+    addChild(MythArchiveAlwaysUseMythTranscode());
+    addChild(MythArchiveUseProjectX());
+    addChild(MythArchiveAddSubtitles());
+    addChild(MythArchiveUseFIFO());
+    addChild(MythArchiveDefaultEncProfile());
+
+    GroupSetting* DVDSettings = new GroupSetting();
+    DVDSettings->setLabel(QObject::tr("DVD Menu Settings"));
+    DVDSettings->addChild(MainMenuAspectRatio());
+    DVDSettings->addChild(ChapterMenuAspectRatio());
+    DVDSettings->addChild(MythArchiveDateFormat());
+    DVDSettings->addChild(MythArchiveTimeFormat());
+    addChild(DVDSettings);
+
+    GroupSetting* externalCmdSettings = new GroupSetting();
+    externalCmdSettings->setLabel(QObject::tr("MythArchive External Commands"));
+    externalCmdSettings->addChild(MythArchiveMplexCmd());
+    externalCmdSettings->addChild(MythArchiveDvdauthorCmd());
+    externalCmdSettings->addChild(MythArchiveSpumuxCmd());
+    externalCmdSettings->addChild(MythArchiveMpeg2encCmd());
+    externalCmdSettings->addChild(MythArchiveMkisofsCmd());
+    externalCmdSettings->addChild(MythArchiveGrowisofsCmd());
+    externalCmdSettings->addChild(MythArchiveM2VRequantiserCmd());
+    externalCmdSettings->addChild(MythArchiveJpeg2yuvCmd());
+    externalCmdSettings->addChild(MythArchiveProjectXCmd());
+    addChild(externalCmdSettings);
 }
diff --git a/mythplugins/mytharchive/mytharchive/archivesettings.h b/mythplugins/mytharchive/mytharchive/archivesettings.h
index 72dfe6f..6f58baf 100644
--- a/mythplugins/mytharchive/mytharchive/archivesettings.h
+++ b/mythplugins/mytharchive/mytharchive/archivesettings.h
@@ -5,10 +5,10 @@
 #ifndef ARCHIVESETTINGS_H
 #define ARCHIVESETTINGS_H
 
-#include <settings.h>
+#include <standardsettings.h>
 
 
-class ArchiveSettings : public ConfigurationWizard
+class ArchiveSettings : public GroupSetting
 {
   public:
     ArchiveSettings();
diff --git a/mythplugins/mytharchive/mytharchive/main.cpp b/mythplugins/mytharchive/mytharchive/main.cpp
index 5eb05d7..0cffe5f 100644
--- a/mythplugins/mytharchive/mytharchive/main.cpp
+++ b/mythplugins/mytharchive/mytharchive/main.cpp
@@ -347,8 +347,16 @@ int mythplugin_run(void)
 
 int mythplugin_config(void)
 {
-    ArchiveSettings settings;
-    settings.exec();
+    MythScreenStack *mainStack = GetMythMainWindow()->GetMainStack();
+    StandardSettingDialog *ssd = new StandardSettingDialog(mainStack, "archivesettings");
+
+    if (ssd->Create())
+    {
+        ssd->loadSettings(new ArchiveSettings());
+        mainStack->AddScreen(ssd);
+    }
+    else
+        delete ssd;
 
     return 0;
 }
diff --git a/mythplugins/mythgallery/mythgallery/gallerysettings.cpp b/mythplugins/mythgallery/mythgallery/gallerysettings.cpp
index c23db74..94afac0 100644
--- a/mythplugins/mythgallery/mythgallery/gallerysettings.cpp
+++ b/mythplugins/mythgallery/mythgallery/gallerysettings.cpp
@@ -12,9 +12,9 @@
 
 // General Settings
 
-static HostLineEdit *MythGalleryFilter()
+static HostTextEditSetting *MythGalleryFilter()
 {
-    HostLineEdit *gc = new HostLineEdit("GalleryFilterDirectory");
+    HostTextEditSetting *gc = new HostTextEditSetting("GalleryFilterDirectory");
     gc->setLabel(QObject::tr("Directory filter"));
     gc->setValue("");
     gc->setHelpText(QObject::tr("Enter directory names to be excluded in "
@@ -23,9 +23,9 @@ static HostLineEdit *MythGalleryFilter()
     return gc;
 };
 
-static HostComboBox *MythGalleryFilterType()
+static HostComboBoxSetting *MythGalleryFilterType()
 {
-    HostComboBox *gc = new HostComboBox("GalleryFilterType");
+    HostComboBoxSetting *gc = new HostComboBoxSetting("GalleryFilterType");
     gc->setLabel(QObject::tr("Type filter"));
     gc->addSelection("All", QString::number(kTypeFilterAll));
     gc->addSelection("Images only", QString::number(kTypeFilterImagesOnly));
@@ -35,9 +35,9 @@ static HostComboBox *MythGalleryFilterType()
     return gc;
 };
 
-static HostLineEdit *MythGalleryDir()
+static HostFileBrowserSetting *MythGalleryDir()
 {
-    HostLineEdit *gc = new HostLineEdit("GalleryDir");
+    HostFileBrowserSetting *gc = new HostFileBrowserSetting("GalleryDir");
     gc->setLabel(QObject::tr("Directory that holds images"));
 #ifdef Q_WS_MACX
     gc->setValue(QDir::homePath() + "/Pictures");
@@ -49,18 +49,18 @@ static HostLineEdit *MythGalleryDir()
     return gc;
 };
 
-static HostCheckBox *MythGalleryThumbnailLocation()
+static HostCheckBoxSetting *MythGalleryThumbnailLocation()
 {
-    HostCheckBox *gc = new HostCheckBox("GalleryThumbnailLocation");
+    HostCheckBoxSetting *gc = new HostCheckBoxSetting("GalleryThumbnailLocation");
     gc->setLabel(QObject::tr("Store thumbnails in image directory"));
     gc->setValue(true);
     gc->setHelpText(QObject::tr("If set, thumbnails are stored in '.thumbcache' directories within the above directory. If cleared, they are stored in your home directory."));
     return gc;
 };
 
-static HostComboBox *MythGallerySortOrder()
+static HostComboBoxSetting *MythGallerySortOrder()
 {
-    HostComboBox *gc = new HostComboBox("GallerySortOrder");
+    HostComboBoxSetting *gc = new HostComboBoxSetting("GallerySortOrder");
     gc->setLabel(QObject::tr("Sort order when browsing"));
     gc->addSelection("Unsorted", QString::number(kSortOrderUnsorted));
     gc->addSelection("Name (A-Z alpha)", QString::number(kSortOrderNameAsc));
@@ -83,9 +83,9 @@ static HostComboBox *MythGallerySortOrder()
     return gc;
 };
 
-static HostSpinBox *MythGalleryOverlayCaption()
+static HostSpinBoxSetting *MythGalleryOverlayCaption()
 {
-    HostSpinBox *gc = new HostSpinBox("GalleryOverlayCaption", 0, 600, 1);
+    HostSpinBoxSetting *gc = new HostSpinBoxSetting("GalleryOverlayCaption", 0, 600, 1);
     gc->setLabel(QObject::tr("Overlay caption"));
     gc->setValue(0);
     gc->setHelpText(QObject::tr("This is the number of seconds to show a caption "
@@ -93,9 +93,9 @@ static HostSpinBox *MythGalleryOverlayCaption()
     return gc;
 };
 
-static HostLineEdit *MythGalleryImportDirs()
+static HostTextEditSetting *MythGalleryImportDirs()
 {
-    HostLineEdit *gc = new HostLineEdit("GalleryImportDirs");
+    HostTextEditSetting *gc = new HostTextEditSetting("GalleryImportDirs");
     gc->setLabel(QObject::tr("Paths to import images from"));
     gc->setValue("/mnt/cdrom:/mnt/camera");
     gc->setHelpText(QObject::tr("This is a colon separated list of paths. "
@@ -104,30 +104,42 @@ static HostLineEdit *MythGalleryImportDirs()
     return gc;
 };
 
-static HostCheckBox *MythGalleryAutoLoad()
+static HostCheckBoxSetting *MythGalleryAutoLoad()
 {
-    HostCheckBox *gc = new HostCheckBox("GalleryAutoLoad");
+    HostCheckBoxSetting *gc = new HostCheckBoxSetting("GalleryAutoLoad");
     gc->setLabel(QObject::tr("Automatically load MythGallery to display pictures"));
     gc->setValue(false);
     gc->setHelpText(QObject::tr("When a new CD-Rom or removable storage device containing pictures is detected then load MythGallery to display the content."));
     return gc;
 }
 
+static HostComboBoxSetting *SlideShowTransitionMode()
+{
+    //use to be a checkbox
+    HostComboBoxSetting *gc = new HostComboBoxSetting("SlideshowUseOpenGL");
+    gc->setLabel(QObject::tr("Transition mode"));
+    gc->addSelection(QObject::tr("Standard"),"0");
 #ifdef USING_OPENGL
+    gc->addSelection(QObject::tr("OpenGL"),"1");
+#endif
+    return gc;
+};
 
-static HostCheckBox *SlideshowUseOpenGL()
+#ifdef USING_OPENGL
+/*
+static HostCheckBoxSetting *SlideshowUseOpenGL()
 {
-    HostCheckBox *gc = new HostCheckBox("SlideshowUseOpenGL");
+    HostCheckBoxSetting *gc = new HostCheckBoxSetting("SlideshowUseOpenGL");
     gc->setLabel(QObject::tr("Use OpenGL transitions"));
     gc->setValue(false);
     gc->setHelpText(QObject::tr("Check this to enable OpenGL "
                                 "based slideshow transitions"));
     return gc;
-};
+};*/
 
-static HostComboBox *SlideshowOpenGLTransition()
+static HostComboBoxSetting *SlideshowOpenGLTransition()
 {
-    HostComboBox *gc = new HostComboBox("SlideshowOpenGLTransition");
+    HostComboBoxSetting *gc = new HostComboBoxSetting("SlideshowOpenGLTransition");
     gc->setLabel(QObject::tr("Type of OpenGL transition"));
     gc->addSelection("none");
     gc->addSelection("blend (gl)");
@@ -146,9 +158,9 @@ static HostComboBox *SlideshowOpenGLTransition()
     return gc;
 };
 
-static HostSpinBox *SlideshowOpenGLTransitionLength()
+static HostSpinBoxSetting *SlideshowOpenGLTransitionLength()
 {
-    HostSpinBox *gc = new HostSpinBox(
+    HostSpinBoxSetting *gc = new HostSpinBoxSetting(
         "SlideshowOpenGLTransitionLength", 500, 120000, 500);
     gc->setLabel(QObject::tr("Duration of OpenGL Transition (milliseconds)"));
     gc->setValue(2000);
@@ -157,9 +169,9 @@ static HostSpinBox *SlideshowOpenGLTransitionLength()
 
 #endif /* USING_OPENGL */
 
-static HostComboBox *SlideshowTransition()
+static HostComboBoxSetting *SlideshowTransition()
 {
-    HostComboBox *gc = new HostComboBox("SlideshowTransition");
+    HostComboBoxSetting *gc = new HostComboBoxSetting("SlideshowTransition");
     gc->setLabel(QObject::tr("Type of transition"));
     gc->addSelection("none");
     gc->addSelection("chess board");
@@ -180,9 +192,9 @@ static HostComboBox *SlideshowTransition()
     return gc;
 };
 
-static HostComboBox *SlideshowBackground()
+static HostComboBoxSetting *SlideshowBackground()
 {
-    HostComboBox *gc = new HostComboBox("SlideshowBackground");
+    HostComboBoxSetting *gc = new HostComboBoxSetting("SlideshowBackground");
     gc->setLabel(QObject::tr("Type of background"));
     // use names from /etc/X11/rgb.txt
     gc->addSelection("theme","");
@@ -193,9 +205,9 @@ static HostComboBox *SlideshowBackground()
     return gc;
 };
 
-static HostSpinBox *SlideshowDelay()
+static HostSpinBoxSetting *SlideshowDelay()
 {
-    HostSpinBox *gc = new HostSpinBox("SlideshowDelay", 0, 86400, 1);
+    HostSpinBoxSetting *gc = new HostSpinBoxSetting("SlideshowDelay", 0, 86400, 1);
     gc->setLabel(QObject::tr("Slideshow Delay"));
     gc->setValue(5);
     gc->setHelpText(QObject::tr("This is the number of seconds to display each "
@@ -203,62 +215,41 @@ static HostSpinBox *SlideshowDelay()
     return gc;
 };
 
-static HostCheckBox *SlideshowRecursive()
+static HostCheckBoxSetting *SlideshowRecursive()
 {
-    HostCheckBox *gc = new HostCheckBox("GalleryRecursiveSlideshow");
+    HostCheckBoxSetting *gc = new HostCheckBoxSetting("GalleryRecursiveSlideshow");
     gc->setLabel(QObject::tr("Recurse into directories"));
     gc->setHelpText(QObject::tr("Check this to let the slideshow recurse into "
                                 "sub-directories."));
     return gc;
 };
 
-class GalleryConfigurationGroup : public TriggeredConfigurationGroup
-{
-  public:
-    GalleryConfigurationGroup() :
-        TriggeredConfigurationGroup(false, true, false, false)
-    {
-        setLabel(QObject::tr("MythGallery Settings (Slideshow)"));
-        setUseLabel(false);
-
+GallerySettings::GallerySettings()
+    :GroupSetting()
+{
+    setLabel(QObject::tr("MythGallery Settings"));
+    addChild(MythGalleryDir());
+    addChild(MythGalleryThumbnailLocation());
+    addChild(MythGallerySortOrder());
+    addChild(MythGalleryImportDirs());
+    addChild(MythGalleryAutoLoad());
+    addChild(MythGalleryFilter());
+    addChild(MythGalleryFilterType());
+
+    HostComboBoxSetting* transitionMode = SlideShowTransitionMode();
+    addChild(transitionMode);
+    //no opengl
+    transitionMode->addTargetedChild("0",MythGalleryOverlayCaption());
+    transitionMode->addTargetedChild("0",SlideshowTransition());
+    transitionMode->addTargetedChild("0",SlideshowBackground());
 #ifdef USING_OPENGL
-        HostCheckBox* useOpenGL = SlideshowUseOpenGL();
-        addChild(useOpenGL);
-        setTrigger(useOpenGL);
-
-        ConfigurationGroup* openGLConfig = new VerticalConfigurationGroup(false);
-        openGLConfig->addChild(SlideshowOpenGLTransition());
-        openGLConfig->addChild(SlideshowOpenGLTransitionLength());
-        addTarget("1", openGLConfig);
+        transitionMode->addTargetedChild("1",SlideshowOpenGLTransition());
+        transitionMode->addTargetedChild("1",SlideshowOpenGLTransitionLength());
 #endif
 
-        ConfigurationGroup* regularConfig = new VerticalConfigurationGroup(false);
-        regularConfig->addChild(MythGalleryOverlayCaption());
-        regularConfig->addChild(SlideshowTransition());
-        regularConfig->addChild(SlideshowBackground());
-        addTarget("0", regularConfig);
-
-        addChild(SlideshowDelay());
-        addChild(SlideshowRecursive());
-    }
-
-};
-
 
-GallerySettings::GallerySettings()
-{
-    VerticalConfigurationGroup* general = new VerticalConfigurationGroup(false);
-    general->setLabel(QObject::tr("MythGallery Settings (General)"));
-    general->addChild(MythGalleryDir());
-    general->addChild(MythGalleryThumbnailLocation());
-    general->addChild(MythGallerySortOrder());
-    general->addChild(MythGalleryImportDirs());
-    general->addChild(MythGalleryAutoLoad());
-    general->addChild(MythGalleryFilter());
-    general->addChild(MythGalleryFilterType());
-    addChild(general);
 
-    GalleryConfigurationGroup* config = new GalleryConfigurationGroup();
-    addChild(config);
+    addChild(SlideshowDelay());
+    addChild(SlideshowRecursive());
 }
 
diff --git a/mythplugins/mythgallery/mythgallery/gallerysettings.h b/mythplugins/mythgallery/mythgallery/gallerysettings.h
index cd1d27e..82fccbc 100644
--- a/mythplugins/mythgallery/mythgallery/gallerysettings.h
+++ b/mythplugins/mythgallery/mythgallery/gallerysettings.h
@@ -1,10 +1,10 @@
 #ifndef GALLERYSETTINGS_H
 #define GALLERYSETTINGS_H
 
-#include "mythtv/settings.h"
+#include "mythtv/standardsettings.h"
 #include "mythtv/mythcontext.h"
 
-class GallerySettings : public ConfigurationWizard
+class GallerySettings : public GroupSetting
 {
   public:  
     GallerySettings();
diff --git a/mythplugins/mythgallery/mythgallery/iconview.cpp b/mythplugins/mythgallery/mythgallery/iconview.cpp
index 1e05dde..f236a00 100644
--- a/mythplugins/mythgallery/mythgallery/iconview.cpp
+++ b/mythplugins/mythgallery/mythgallery/iconview.cpp
@@ -1051,10 +1051,23 @@ void IconView::DoDeleteCurrent(bool doDelete)
 
 void IconView::HandleSettings(void)
 {
-    GallerySettings settings;
-    settings.exec();
-    gCoreContext->ClearSettingsCache();
+    MythScreenStack *mainStack = GetMythMainWindow()->GetMainStack();
+    StandardSettingDialog *ssd = new StandardSettingDialog(mainStack, "gallerysettings");
+
+    if (ssd->Create())
+    {
+        ssd->loadSettings(new GallerySettings());
+        mainStack->AddScreen(ssd);
+        connect(ssd,SIGNAL(Close()),this, SLOT(ReloadSettings()));
+    }
+    else
+        delete ssd;
 
+}
+
+void IconView::ReloadSettings(void)
+{
+    gCoreContext->ClearSettingsCache();
     // reload settings
     m_showcaption = gCoreContext->GetNumSetting("GalleryOverlayCaption", 0);
     m_sortorder   = gCoreContext->GetNumSetting("GallerySortOrder", 0);
diff --git a/mythplugins/mythgallery/mythgallery/iconview.h b/mythplugins/mythgallery/mythgallery/iconview.h
index b9c5a33..6243394 100644
--- a/mythplugins/mythgallery/mythgallery/iconview.h
+++ b/mythplugins/mythgallery/mythgallery/iconview.h
@@ -88,6 +88,7 @@ class IconView : public MythScreenType
     void HandleDeleteCurrent(void);
     void HandleSlideShow(void);
     void HandleSettings(void);
+    void ReloadSettings(void);
     void HandleEject(void);
     void HandleImport(void);
     void HandleShowDevices(void);
diff --git a/mythplugins/mythgallery/mythgallery/main.cpp b/mythplugins/mythgallery/mythgallery/main.cpp
index 396c9d6..35f7765 100644
--- a/mythplugins/mythgallery/mythgallery/main.cpp
+++ b/mythplugins/mythgallery/mythgallery/main.cpp
@@ -162,9 +162,16 @@ int mythplugin_run(void)
 
 int mythplugin_config(void)
 {
-    GallerySettings settings;
-    settings.exec();
+    MythScreenStack *mainStack = GetMythMainWindow()->GetMainStack();
+    StandardSettingDialog *ssd = new StandardSettingDialog(mainStack, "gallerysettings");
 
+    if (ssd->Create())
+    {
+        ssd->loadSettings(new GallerySettings());
+        mainStack->AddScreen(ssd);
+    }
+    else
+        delete ssd;
     return 0;
 }
 
diff --git a/mythplugins/mythzoneminder/mythzoneminder/main.cpp b/mythplugins/mythzoneminder/mythzoneminder/main.cpp
index 8437437..d6e8117 100644
--- a/mythplugins/mythzoneminder/mythzoneminder/main.cpp
+++ b/mythplugins/mythzoneminder/mythzoneminder/main.cpp
@@ -160,8 +160,16 @@ int mythplugin_run(void)
 
 int mythplugin_config(void)
 {
-    ZMSettings settings;
-    settings.exec();
+    MythScreenStack *mainStack = GetMythMainWindow()->GetMainStack();
+    StandardSettingDialog *ssd = new StandardSettingDialog(mainStack, "zonemindersettings");
+
+    if (ssd->Create())
+    {
+        ssd->loadSettings(new ZMSettings());
+        mainStack->AddScreen(ssd);
+    }
+    else
+        delete ssd;
 
     return 0;
 }
diff --git a/mythplugins/mythzoneminder/mythzoneminder/zmsettings.cpp b/mythplugins/mythzoneminder/mythzoneminder/zmsettings.cpp
index 702e434..be024cd 100644
--- a/mythplugins/mythzoneminder/mythzoneminder/zmsettings.cpp
+++ b/mythplugins/mythzoneminder/mythzoneminder/zmsettings.cpp
@@ -11,9 +11,9 @@
 #include "zmsettings.h"
 
 
-static HostLineEdit *ZMServerIP()
+static HostTextEditSetting *ZMServerIP()
 {
-    HostLineEdit *gc = new HostLineEdit("ZoneMinderServerIP");
+    HostTextEditSetting *gc = new HostTextEditSetting("ZoneMinderServerIP");
     gc->setLabel(QObject::tr("IP address of the MythZoneMinder server"));
     gc->setValue("127.0.0.1");
     gc->setHelpText(QObject::tr("Enter the IP address of the MythZoneMinder server "
@@ -21,9 +21,9 @@ static HostLineEdit *ZMServerIP()
     return gc;
 };
 
-static HostLineEdit *ZMServerPort()
+static HostTextEditSetting *ZMServerPort()
 {
-    HostLineEdit *gc = new HostLineEdit("ZoneMinderServerPort");
+    HostTextEditSetting *gc = new HostTextEditSetting("ZoneMinderServerPort");
     gc->setLabel(QObject::tr("Port the server runs on"));
     gc->setValue("6548");
     gc->setHelpText(QObject::tr("Unless you've got good reason to, don't "
@@ -31,9 +31,9 @@ static HostLineEdit *ZMServerPort()
     return gc;
 };
 
-static HostComboBox *ZMDateFormat()
+static HostComboBoxSetting *ZMDateFormat()
 {
-    HostComboBox *gc = new HostComboBox("ZoneMinderDateFormat");
+    HostComboBoxSetting *gc = new HostComboBoxSetting("ZoneMinderDateFormat");
     gc->setLabel(QObject::tr("Date format"));
 
     QDate sampdate = QDate::currentDate();
@@ -65,9 +65,9 @@ static HostComboBox *ZMDateFormat()
     return gc;
 }
 
-static HostComboBox *ZMTimeFormat()
+static HostComboBoxSetting *ZMTimeFormat()
 {
-    HostComboBox *gc = new HostComboBox("ZoneMinderTimeFormat");
+    HostComboBoxSetting *gc = new HostComboBoxSetting("ZoneMinderTimeFormat");
     gc->setLabel(QObject::tr("Time format"));
 
     QTime samptime = QTime::currentTime();
@@ -83,11 +83,9 @@ static HostComboBox *ZMTimeFormat()
 
 ZMSettings::ZMSettings()
 {
-    VerticalConfigurationGroup* vcg1 = new VerticalConfigurationGroup(false);
-    vcg1->setLabel(QObject::tr("MythZoneMinder Settings"));
-    vcg1->addChild(ZMServerIP());
-    vcg1->addChild(ZMServerPort());
-    vcg1->addChild(ZMDateFormat());
-    vcg1->addChild(ZMTimeFormat());
-    addChild(vcg1);
+    setLabel(QObject::tr("MythZoneMinder Settings"));
+    addChild(ZMServerIP());
+    addChild(ZMServerPort());
+    addChild(ZMDateFormat());
+    addChild(ZMTimeFormat());
 }
diff --git a/mythplugins/mythzoneminder/mythzoneminder/zmsettings.h b/mythplugins/mythzoneminder/mythzoneminder/zmsettings.h
index b6f2ad5..6c5cc7c 100644
--- a/mythplugins/mythzoneminder/mythzoneminder/zmsettings.h
+++ b/mythplugins/mythzoneminder/mythzoneminder/zmsettings.h
@@ -5,9 +5,9 @@
 #ifndef ZMSETTINGS_H
 #define ZMSETTINGS_H
 
-#include <settings.h>
+#include <standardsettings.h>
 
-class ZMSettings : public ConfigurationWizard
+class ZMSettings : public GroupSetting
 {
   public:
     ZMSettings();
