gnash-commit
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Gnash-commit] /srv/bzr/gnash/trunk r10563: Add preferences dialog to Kd


From: John Wimer
Subject: [Gnash-commit] /srv/bzr/gnash/trunk r10563: Add preferences dialog to Kde4 gui.
Date: Sun, 08 Feb 2009 22:11:17 +0100
User-agent: Bazaar (1.5)

------------------------------------------------------------
revno: 10563
committer: John Wimer <address@hidden>
branch nick: trunk
timestamp: Sun 2009-02-08 22:11:17 +0100
message:
  Add preferences dialog to Kde4 gui.
  The layout can be improved, but the functionality works.
modified:
  gui/Kde4Gui.cpp
  gui/Kde4Gui.h
=== modified file 'gui/Kde4Gui.cpp'
--- a/gui/Kde4Gui.cpp   2009-01-22 20:10:39 +0000
+++ b/gui/Kde4Gui.cpp   2009-02-08 21:11:17 +0000
@@ -44,6 +44,14 @@
 #include <QTreeWidget>
 #include <QTreeWidgetItem>
 #include <QStack>
+#include <QTabWidget>
+#include <QFrame>
+#include <QLabel>
+#include <QSlider>
+#include <QLineEdit>
+#include <QCheckBox>
+#include <QLCDNumber>
+#include <QSpinBox>
 
 #include "Range2d.h"
 
@@ -459,6 +467,20 @@
     propsDialog->activateWindow();
 }
 
+
+
+void
+Kde4Gui::showPreferences()
+{
+    Kde4GuiPrefs::PreferencesDialog* prefsDialog = new 
Kde4GuiPrefs::PreferencesDialog(_drawingWidget);
+
+    prefsDialog->setAttribute(Qt::WA_DeleteOnClose);
+    prefsDialog->show();
+    prefsDialog->raise();
+    prefsDialog->activateWindow();
+}
+
+
 void
 Kde4Gui::quit()
 {
@@ -480,6 +502,11 @@
     _drawingWidget->connect(quitAction, SIGNAL(triggered()),
                      _application.get(), SLOT(quit()));
 
+    // Edit Menu actions
+    preferencesAction = new QAction(_("Preferences"), _window.get());
+    _drawingWidget->connect(preferencesAction, SIGNAL(triggered()),
+                     _drawingWidget, SLOT(preferences()));
+
     // Movie Control Menu actions
     playAction = new QAction(_("Play"), _window.get());
     _drawingWidget->connect(playAction, SIGNAL(triggered()),
@@ -521,6 +548,10 @@
     fileMenu->addAction(propertiesAction);
     fileMenu->addAction(quitAction);
 
+    // Set up the Edit menu.
+    editMenu = new QMenu(_("Edit"), _window.get());
+    editMenu->addAction(preferencesAction);
+
     // Set up the Movie Control menu
     movieControlMenu = new QMenu(_("Movie Control"), _window.get());
     movieControlMenu->addAction(playAction);
@@ -542,6 +573,7 @@
 
     // Set up the menu bar.
     mainMenu->addMenu(fileMenu);
+    mainMenu->addMenu(editMenu);
     mainMenu->addMenu(movieControlMenu);
     mainMenu->addMenu(viewMenu);
 
@@ -668,6 +700,13 @@
 
 
 void
+DrawingWidget::preferences()
+{
+    _gui.showPreferences();
+}
+
+
+void
 DrawingWidget::play()
 {
     _gui.play();
@@ -712,6 +751,286 @@
     }
 }
 
+namespace Kde4GuiPrefs {
+
+PreferencesDialog::PreferencesDialog(QWidget* parent)
+    :
+    QDialog(parent),
+    _rcfile(RcInitFile::getDefaultInstance())
+{
+    setWindowTitle(_("Gnash preferences"));
+    setAttribute(Qt::WA_DeleteOnClose);
+
+    QDialogButtonBox *buttons = new QDialogButtonBox(
+                          QDialogButtonBox::Ok | QDialogButtonBox::Cancel);
+
+    QVBoxLayout *vLayout = new QVBoxLayout(this);
+
+    QLabel* tmpLabel;
+
+    // Make notebook pages.
+    QTabWidget *tabs = new QTabWidget;
+
+    // Logging tab
+    QFrame* loggingTab = new QFrame();
+    tabs->addTab(loggingTab, _("Logging"));
+    QVBoxLayout* layout = new QVBoxLayout (loggingTab);
+
+    tmpLabel = new QLabel(_("<b>Logging options</b>"), loggingTab);
+    layout->addWidget(tmpLabel);
+
+    tmpLabel = new QLabel(_("Verbosity level"), loggingTab);
+    layout->addWidget(tmpLabel);
+
+    QLCDNumber* lcd = new QLCDNumber(loggingTab);
+    lcd->display(_rcfile.verbosityLevel());
+    lcd->setNumDigits(2);
+    layout->addWidget(lcd);
+
+    _verbositySlider = new QSlider(loggingTab);
+    _verbositySlider->setOrientation(Qt::Horizontal);
+    _verbositySlider->setMaximum(10);
+    _verbositySlider->setSingleStep(1);
+    _verbositySlider->setPageStep(1);
+    _verbositySlider->setValue(_rcfile.verbosityLevel());
+    connect(_verbositySlider, SIGNAL(valueChanged(int)),
+            lcd, SLOT(display(int)));
+    layout->addWidget(_verbositySlider);
+
+    _logToFileToggle = new QCheckBox(_("Log to file"), loggingTab);
+    _logToFileToggle->setChecked(_rcfile.useWriteLog());
+    layout->addWidget(_logToFileToggle);
+
+    _logFileName = new QLineEdit(_rcfile.getDebugLog().c_str(), loggingTab);
+    layout->addWidget(_logFileName);
+
+    _parserDumpToggle = new QCheckBox(_("Log parser output"), loggingTab);
+    _parserDumpToggle->setChecked(_rcfile.useParserDump());
+    layout->addWidget(_parserDumpToggle);
+
+    _actionDumpToggle = new QCheckBox(_("Log SWF actions"), loggingTab);
+    _actionDumpToggle->setChecked(_rcfile.useActionDump());
+    layout->addWidget(_actionDumpToggle);
+
+    _malformedSWFToggle = new QCheckBox(_("Log malformed SWF errors"),
+                                        loggingTab);
+    _malformedSWFToggle->setChecked(_rcfile.showMalformedSWFErrors());
+    layout->addWidget(_malformedSWFToggle);
+
+    _ASCodingErrorToggle = new QCheckBox(_("Log ActionScript coding errors"),
+                                        loggingTab);
+    _ASCodingErrorToggle->setChecked(_rcfile.showASCodingErrors());
+    layout->addWidget(_ASCodingErrorToggle);
+
+    _lcTraceToggle = new QCheckBox(_("Log Local Connection activity"),
+                                        loggingTab);
+    _lcTraceToggle->setChecked(_rcfile.getLCTrace());
+    layout->addWidget(_lcTraceToggle);
+    layout->addStretch();
+
+    // Security tab
+    QFrame* securityTab = new QFrame(tabs);
+    tabs->addTab(securityTab, _("Security"));
+    layout = new QVBoxLayout (securityTab);
+
+    tmpLabel = new QLabel(_("<b>Network connections</b>"), securityTab);
+    layout->addWidget(tmpLabel);
+
+    _localHostToggle = new QCheckBox(_("Connect only to local host"),
+                                     securityTab);
+    _localHostToggle->setChecked(_rcfile.useLocalHost());
+    layout->addWidget(_localHostToggle);
+
+    _localDomainToggle = new QCheckBox(_("Connect only to local domain"),
+                                       securityTab);
+    _localDomainToggle->setChecked(_rcfile.useLocalDomain());
+    layout->addWidget(_localDomainToggle);
+
+    _insecureSSLToggle = new QCheckBox(_("Disable SSL verification"),
+                                       securityTab);
+    _insecureSSLToggle->setChecked(_rcfile.insecureSSL());
+    layout->addWidget(_insecureSSLToggle);
+
+    tmpLabel = new QLabel(_("<b>Privacy</b>"), securityTab);
+    layout->addWidget(tmpLabel);
+
+    tmpLabel = new QLabel(_("Shared objects directory:"), securityTab);
+    layout->addWidget(tmpLabel);
+    _solSandboxDir = new QLineEdit(_rcfile.getSOLSafeDir().c_str(),
+                                   securityTab);
+    layout->addWidget(_solSandboxDir);
+
+    _solReadOnlyToggle = new QCheckBox(_("Do not write Shared Object files"),
+                                       securityTab);
+    _solReadOnlyToggle->setChecked(_rcfile.getSOLReadOnly());
+    layout->addWidget(_solReadOnlyToggle);
+
+    _solLocalDomainToggle = new QCheckBox(
+            _("Only access local Shared Object files"), securityTab);
+    _solLocalDomainToggle->setChecked(_rcfile.getSOLLocalDomain());
+    layout->addWidget(_solLocalDomainToggle);
+
+    _localConnectionToggle = new QCheckBox(
+            _("Disable Local Connection object"), securityTab);
+    _localConnectionToggle->setChecked(_rcfile.getLocalConnection());
+    layout->addWidget(_localConnectionToggle);
+    layout->addStretch();
+
+    // Network tab
+    QFrame* networkTab = new QFrame(tabs);
+    tabs->addTab(networkTab, _("Network"));
+    layout = new QVBoxLayout (networkTab);
+
+    tmpLabel = new QLabel(_("<b>Network preferences</b>"), networkTab);
+    layout->addWidget(tmpLabel);
+
+    tmpLabel = new QLabel(_("Network timeout in seconds"), networkTab);
+    layout->addWidget(tmpLabel);
+
+    _streamsTimeoutScale = new QSpinBox(networkTab);
+    _streamsTimeoutScale->setMinimum(0);
+    _streamsTimeoutScale->setMaximum(300);
+    _streamsTimeoutScale->setValue(_rcfile.getStreamsTimeout());
+    layout->addWidget(_streamsTimeoutScale);
+    layout->addStretch();
+
+    // Network tab
+    QFrame* mediaTab = new QFrame(tabs);
+    tabs->addTab(mediaTab, _("Media"));
+    layout = new QVBoxLayout (mediaTab);
+
+    tmpLabel = new QLabel(_("<b>Sound</b>"), mediaTab);
+    layout->addWidget(tmpLabel);
+
+    _soundToggle = new QCheckBox(_("Use sound handler"), mediaTab);
+    _soundToggle->setChecked(_rcfile.useSound());
+    layout->addWidget(_soundToggle);
+
+    _saveStreamingMediaToggle = new QCheckBox(_("Save media streams to disk"),
+                                              mediaTab);
+    _saveStreamingMediaToggle->setChecked(_rcfile.saveStreamingMedia());
+    layout->addWidget(_saveStreamingMediaToggle);
+
+    _saveLoadedMediaToggle = new QCheckBox(
+                        _("Save dynamically loaded media to disk"), mediaTab);
+    _saveLoadedMediaToggle->setChecked(_rcfile.saveLoadedMedia());
+    layout->addWidget(_saveLoadedMediaToggle);
+
+    tmpLabel = new QLabel(_("Saved media directory:"), mediaTab);
+    layout->addWidget(tmpLabel);
+
+    _mediaDir = new QLineEdit(_rcfile.getMediaDir().c_str(), mediaTab);
+    layout->addWidget(_mediaDir);
+    layout->addStretch();
+
+    // Player tab
+    QFrame* playerTab = new QFrame(tabs);
+    tabs->addTab(playerTab, _("Player"));
+    layout = new QVBoxLayout (playerTab);
+
+    tmpLabel = new QLabel(_("<b>Player description</b>"), playerTab);
+    layout->addWidget(tmpLabel);
+
+    tmpLabel = new QLabel(_("Player version:"), playerTab);
+    layout->addWidget(tmpLabel);
+    _versionText = new QLineEdit(_rcfile.getFlashVersionString().c_str(),
+                                 playerTab);
+    layout->addWidget(_versionText);
+
+    tmpLabel = new QLabel(_("Operating system:"), playerTab);
+    layout->addWidget(tmpLabel);
+
+    _osText = new QLineEdit(playerTab);
+    if (_rcfile.getFlashSystemOS().empty()) {
+        _osText->setText(_("<Autodetect>"));
+    } else {
+        _osText->setText(_rcfile.getFlashSystemOS().c_str());
+    }
+    layout->addWidget(_osText);
+
+    tmpLabel = new QLabel(_("URL opener:"), playerTab);
+    layout->addWidget(tmpLabel);
+
+    _urlOpenerText = new QLineEdit(_rcfile.getURLOpenerFormat().c_str(),
+                                 playerTab);
+    layout->addWidget(_urlOpenerText);
+
+    tmpLabel = new QLabel(_("<b>Performance</b>"), playerTab);
+    layout->addWidget(tmpLabel);
+
+    tmpLabel = new QLabel(_("Max size of movie library:"), playerTab);
+    layout->addWidget(tmpLabel);
+
+    _librarySize = new QSpinBox(playerTab);
+    _librarySize->setMinimum(0);
+    _librarySize->setMaximum(100);
+    _librarySize->setValue(_rcfile.getMovieLibraryLimit());
+    layout->addWidget(_librarySize);
+
+    _startStoppedToggle = new QCheckBox(_("Start Gnash in pause mode"),
+                                        playerTab);
+    _startStoppedToggle->setChecked(_rcfile.startStopped());
+    layout->addWidget(_startStoppedToggle);
+    layout->addStretch();
+    // End of notebook tabs
+
+    vLayout->addWidget(tabs);
+    vLayout->addStretch();
+    vLayout->addWidget(buttons);
+
+    // Connect the dialog buttons.
+    connect(buttons, SIGNAL(accepted()), this, SLOT(savePreferences()));
+    connect(buttons, SIGNAL(rejected()), this, SLOT(reject()));
+}
+
+void PreferencesDialog::savePreferences()
+{
+    // Logging tab widgets
+    _rcfile.verbosityLevel(_verbositySlider->value());
+    _rcfile.useWriteLog(_logToFileToggle->isChecked());
+    _rcfile.setDebugLog(_logFileName->text().toStdString());
+    _rcfile.useParserDump(_parserDumpToggle->isChecked());
+    _rcfile.useActionDump(_actionDumpToggle->isChecked());
+    _rcfile.showMalformedSWFErrors(_malformedSWFToggle->isChecked());
+    _rcfile.showASCodingErrors(_ASCodingErrorToggle->isChecked());
+    _rcfile.setLCTrace(_lcTraceToggle->isChecked());
+
+    // Security tab widgets
+    _rcfile.useLocalHost(_localHostToggle->isChecked());
+    _rcfile.useLocalDomain(_localDomainToggle->isChecked());
+    _rcfile.insecureSSL(_insecureSSLToggle->isChecked());
+    _rcfile.setSOLSafeDir(_solSandboxDir->text().toStdString());
+    _rcfile.setSOLReadOnly(_solReadOnlyToggle->isChecked());
+    _rcfile.setSOLLocalDomain(_solLocalDomainToggle->isChecked());
+    _rcfile.setLocalConnection(_localConnectionToggle->isChecked());
+
+    // Network tab widgets
+    _rcfile.setStreamsTimeout(_streamsTimeoutScale->value());
+
+    // Media tab widgets
+    _rcfile.useSound(_soundToggle->isChecked());
+    _rcfile.saveStreamingMedia(_saveStreamingMediaToggle->isChecked());
+    _rcfile.saveLoadedMedia(_saveLoadedMediaToggle->isChecked());
+    _rcfile.setMediaDir(_mediaDir->text().toStdString());
+
+    // Player tab widgets
+    _rcfile.setFlashVersionString(_versionText->text().toStdString());
+    if (_osText->text() != _("<Autodetect>")) {
+        _rcfile.setFlashSystemOS(_osText->text().toStdString());
+    }
+    _rcfile.setURLOpenerFormat(_urlOpenerText->text().toStdString());
+    _rcfile.setMovieLibraryLimit(_librarySize->value());
+    _rcfile.startStopped(_startStoppedToggle->isChecked());
+
+    // Save the file.
+    _rcfile.updateFile();
+
+    // Allow the dialog to close normally.
+    emit accept();
+}
+
+
+} // End of Kde4GuiPrefs namespace
 
 
 }

=== modified file 'gui/Kde4Gui.h'
--- a/gui/Kde4Gui.h     2009-01-22 20:10:39 +0000
+++ b/gui/Kde4Gui.h     2009-02-08 21:11:17 +0000
@@ -23,8 +23,10 @@
 #endif
 
 #include "gui.h"
+#include "rc.h"
 
 #include <QX11EmbedWidget>
+#include <QDialog>
 
 #ifdef RENDERER_OPENGL
 # error "OGL not supported yet for KDE4!"
@@ -39,6 +41,10 @@
 class QMenuBar;
 class QMenu;
 class QRect;
+class QCheckBox;
+class QSlider;
+class QLineEdit;
+class QSpinBox;
 
 namespace gnash {
     class Kde4Gui;
@@ -63,6 +69,7 @@
 public slots:
 
     void properties();
+    void preferences();
     void play();
     void pause();
     void stop();
@@ -108,6 +115,7 @@
     void setInvalidatedRegions(const InvalidatedRanges& ranges);
     void resize(int width, int height);
     void showProperties();
+    void showPreferences();
     void quit();
 
     bool want_multiple_regions() { return true; }
@@ -164,6 +172,10 @@
     QAction* propertiesAction;
     QAction* quitAction;
     
+    // Edit Menu
+    QMenu* editMenu;
+    QAction* preferencesAction;
+
     // Movie Control Menu;
     QMenu* movieControlMenu;
     QAction* playAction;
@@ -178,6 +190,63 @@
 
 };
 
+namespace Kde4GuiPrefs
+{
+
+class PreferencesDialog : public QDialog
+{
+Q_OBJECT
+
+public:
+    PreferencesDialog(QWidget* parent);
+
+private slots:
+    void savePreferences();
+
+private:
+    PreferencesDialog(const PreferencesDialog&);
+
+    // Logging tab widgets
+    QSlider* _verbositySlider;
+    QCheckBox* _logToFileToggle;
+    QLineEdit* _logFileName;
+    QCheckBox* _parserDumpToggle;
+    QCheckBox* _actionDumpToggle;
+    QCheckBox* _malformedSWFToggle;
+    QCheckBox* _ASCodingErrorToggle;
+    QCheckBox* _lcTraceToggle;
+
+    // Security tab widgets
+    QCheckBox* _localHostToggle;
+    QCheckBox* _localDomainToggle;
+    QCheckBox* _insecureSSLToggle;
+    QLineEdit* _solSandboxDir;
+    QCheckBox* _solReadOnlyToggle;
+    QCheckBox* _solLocalDomainToggle;
+    QCheckBox* _localConnectionToggle;
+
+    // Network tab widgets
+    QSpinBox* _streamsTimeoutScale;
+
+    // Media tab widgets
+    QCheckBox* _soundToggle;
+    QCheckBox* _saveStreamingMediaToggle;
+    QCheckBox* _saveLoadedMediaToggle;
+    QLineEdit* _mediaDir;
+
+    // Player tab widgets
+    QLineEdit* _versionText;
+    QLineEdit* _osText;
+    QLineEdit* _urlOpenerText;
+    QSpinBox* _librarySize;
+    QCheckBox* _startStoppedToggle;
+
+    // The config storage.
+    RcInitFile& _rcfile;
+};
+
+}
+
 }
 
 #endif


reply via email to

[Prev in Thread] Current Thread [Next in Thread]