[Top][All Lists]
[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
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Gnash-commit] /srv/bzr/gnash/trunk r10563: Add preferences dialog to Kde4 gui.,
John Wimer <=