]> git.sesse.net Git - kdenlive/commitdiff
New: change application color scheme (Settings->themes)
authorJean-Baptiste Mardelle <jb@kdenlive.org>
Fri, 9 Oct 2009 19:54:23 +0000 (19:54 +0000)
committerJean-Baptiste Mardelle <jb@kdenlive.org>
Fri, 9 Oct 2009 19:54:23 +0000 (19:54 +0000)
svn path=/trunk/kdenlive/; revision=4025

src/customtrackview.cpp
src/kdenliveui.rc
src/mainwindow.cpp
src/mainwindow.h
src/recmonitor.cpp
src/widgets/effectlist_ui.ui

index cd49a86b41ad2b8d14deed6476af7d650c41c1a6..74bb73ff69a9cb023a122f7fe06e5124544a3e55 100644 (file)
@@ -143,7 +143,7 @@ CustomTrackView::CustomTrackView(KdenliveDoc *doc, CustomTrackScene* projectscen
 
     QPen pen1 = QPen();
     pen1.setWidth(1);
-    pen1.setColor(Qt::black);
+    pen1.setColor(palette().text().color());
     m_cursorLine->setPen(pen1);
     m_cursorLine->setFlag(QGraphicsItem::ItemIgnoresTransformations, true);
 
index cfe35999e64d10a154c25a5b59e394dd65d49c43..bbeafd6c3eecf2043134186836e52131b0683f5c 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE kpartgui SYSTEM "kpartgui.dtd">
-<gui name="kdenlive" version="46">
+<gui name="kdenlive" version="47">
   <ToolBar name="extraToolBar" >
     <text>Extra Toolbar</text>
        <Action name="project_render" />
       <Action name="get_new_profiles" />
       <Action name="get_new_mlt_profiles" />
       <Action name="run_wizard" />
+      <Menu name="themes_menu" ><text>Themes</text>
+      </Menu>
 </Menu>
   </MenuBar>
 </gui>
index 08b5afb4d4e470dd47d64962f530883f6532875f..7d71aeebecd9baaf78e12cf7f0c6bed91dc0e741 100644 (file)
@@ -88,6 +88,7 @@
 #include <QAction>
 #include <QKeyEvent>
 #include <QInputDialog>
+#include <QDesktopWidget>
 
 #include <stdlib.h>
 
@@ -249,8 +250,23 @@ MainWindow::MainWindow(const QString &MltPath, const KUrl & Url, QWidget *parent
     m_clipMonitor->setupMenu(static_cast<QMenu*>(factory()->container("monitor_go", this)), m_playZone, m_loopZone, static_cast<QMenu*>(factory()->container("marker_menu", this)));
     m_projectList->setupGeneratorMenu(static_cast<QMenu*>(factory()->container("generators", this)), static_cast<QMenu*>(factory()->container("transcoders", this)));
 
-    // build effects menus
     QAction *action;
+    // build themes menus
+    QMenu *themesMenu = static_cast<QMenu*>(factory()->container("themes_menu", this));
+    action = new QAction(i18n("Default"), this);
+    themesMenu->addAction(action);
+    fprintf(stderr, "THEMES: %s\n", KStandardDirs::installPath("data").toUtf8().data());
+    KGlobal::dirs()->addResourceDir("themes", KStandardDirs::installPath("data") + QString("kdenlive/themes"));
+    QStringList themes = KGlobal::dirs()->findAllResources("themes", QString(), KStandardDirs::Recursive | KStandardDirs::NoDuplicates);
+    for (QStringList::const_iterator it = themes.constBegin(); it != themes.constEnd(); ++it) {
+        QFileInfo fi(*it);
+        action = new QAction(fi.fileName(), this);
+        action->setData(*it);
+        themesMenu->addAction(action);
+    }
+    connect(themesMenu, SIGNAL(triggered(QAction *)), this, SLOT(slotChangePalette(QAction*)));
+
+    // build effects menus
     QMenu *videoEffectsMenu = static_cast<QMenu*>(factory()->container("video_effects_menu", this));
 
     QStringList effectInfo;
@@ -688,7 +704,7 @@ void MainWindow::setupActions()
     toolbar->setMovable(false);
     m_toolGroup = new QActionGroup(this);
     statusBar()->setStyleSheet(QString("QStatusBar QLabel {font-size:%1pt;} QStatusBar::item { border: 0px; font-size:%1pt;padding:0px; }").arg(statusBar()->font().pointSize()));
-    QString style1 = "QToolBar { border: 0px } QToolButton {background-color: rgba(230, 230, 230, 220); border-style: inset; border:1px solid #999999;border-radius: 3px;margin: 0px 3px;padding: 0px;} QToolButton:checked { background-color: rgba(224, 224, 0, 100); border-style: inset; border:1px solid #cc6666;border-radius: 3px;}";
+    QString style1 = "QToolBar { border: 0px } QToolButton { border-style: inset; border:1px solid #999999;border-radius: 3px;margin: 0px 3px;padding: 0px;} QToolButton:checked { background-color: rgba(224, 224, 0, 100); border-style: inset; border:1px solid #cc6666;border-radius: 3px;}";
 
     m_buttonSelectTool = new KAction(KIcon("kdenlive-select-tool"), i18n("Selection tool"), this);
     m_buttonSelectTool->setShortcut(i18nc("Selection tool shortcut", "s"));
@@ -2903,4 +2919,82 @@ void MainWindow::slotUpdateTrackInfo()
         m_transitionConfig->updateProjectFormat(m_activeDocument->mltProfile(), m_activeDocument->timecode(), m_activeDocument->tracksList());
 }
 
+void MainWindow::slotChangePalette(QAction *action)
+{
+    // Load the theme file
+    QString theme = action->data().toString();
+
+    // Make palette for all widgets.
+    QPalette plt;
+    if (theme.isEmpty())
+        plt = QApplication::desktop()->palette();
+    else {
+        KConfig confFile(theme, KConfig::SimpleConfig);
+        plt = kapp->palette();
+        int h, s, v;
+        const QColor fg(confFile.entryMap().value("TextRegularColor"));
+        const QColor bg(confFile.entryMap().value("BaseColor"));
+
+        bg.getHsv(&h, &s, &v);
+        v += (v < 128) ? + 50 : -50;
+        v &= 255; //ensures 0 <= v < 256
+        const QColor highlight = QColor::fromHsv(h, s, v);
+
+        fg.getHsv(&h, &s, &v);
+        v += (v < 128) ? + 150 : -150;
+        v &= 255; //ensures 0 <= v < 256
+        const QColor alternate = QColor::fromHsv(h, s, v);
+
+        plt.setColor(QPalette::Active,   QPalette::Base,            bg);
+        plt.setColor(QPalette::Active,   QPalette::AlternateBase,   alternate);
+        plt.setColor(QPalette::Active,   QPalette::Background,      bg.dark(115));
+        plt.setColor(QPalette::Active,   QPalette::Foreground,      fg);
+        plt.setColor(QPalette::Active,   QPalette::Highlight,       highlight);
+        plt.setColor(QPalette::Active,   QPalette::HighlightedText, confFile.entryMap().value("TextSelectedColor"));
+        plt.setColor(QPalette::Active,   QPalette::Dark,            Qt::darkGray);
+        plt.setColor(QPalette::Active,   QPalette::Button,          bg);
+        plt.setColor(QPalette::Active,   QPalette::ButtonText,      fg);
+        plt.setColor(QPalette::Active,   QPalette::Text,            fg);
+        plt.setColor(QPalette::Active,   QPalette::Link,            confFile.entryMap().value("TextSpecialRegularColor"));
+        plt.setColor(QPalette::Active,   QPalette::LinkVisited,     confFile.entryMap().value("TextSpecialSelectedColor"));
+
+        plt.setColor(QPalette::Inactive, QPalette::Base,            bg);
+        plt.setColor(QPalette::Inactive,   QPalette::AlternateBase, alternate);
+        plt.setColor(QPalette::Inactive, QPalette::Background,      bg.dark(115));
+        plt.setColor(QPalette::Inactive, QPalette::Foreground,      fg);
+        plt.setColor(QPalette::Inactive, QPalette::Highlight,       highlight);
+        plt.setColor(QPalette::Inactive, QPalette::HighlightedText, confFile.entryMap().value("TextSelectedColor"));
+        plt.setColor(QPalette::Inactive, QPalette::Dark,            Qt::darkGray);
+        plt.setColor(QPalette::Inactive, QPalette::Button,          bg);
+        plt.setColor(QPalette::Inactive, QPalette::ButtonText,      fg);
+        plt.setColor(QPalette::Inactive, QPalette::Text,            fg);
+        plt.setColor(QPalette::Inactive, QPalette::Link,            confFile.entryMap().value("TextSpecialRegularColor"));
+        plt.setColor(QPalette::Inactive, QPalette::LinkVisited,     confFile.entryMap().value("TextSpecialSelectedColor"));
+
+        plt.setColor(QPalette::Disabled, QPalette::Base,            bg);
+        plt.setColor(QPalette::Disabled,   QPalette::AlternateBase, alternate);
+        plt.setColor(QPalette::Disabled, QPalette::Background,      bg.dark(115));
+        plt.setColor(QPalette::Disabled, QPalette::Foreground,      fg);
+        plt.setColor(QPalette::Disabled, QPalette::Highlight,       highlight);
+        plt.setColor(QPalette::Disabled, QPalette::HighlightedText, confFile.entryMap().value("TextSelectedColor"));
+        plt.setColor(QPalette::Disabled, QPalette::Dark,            Qt::darkGray);
+        plt.setColor(QPalette::Disabled, QPalette::Button,          bg);
+        plt.setColor(QPalette::Disabled, QPalette::ButtonText,      fg);
+        plt.setColor(QPalette::Disabled, QPalette::Text,            fg);
+        plt.setColor(QPalette::Disabled, QPalette::Link,            confFile.entryMap().value("TextSpecialRegularColor"));
+        plt.setColor(QPalette::Disabled, QPalette::LinkVisited,     confFile.entryMap().value("TextSpecialSelectedColor"));
+
+        /*
+        cg.setColor(QColorGroup::Light,           ThemeEngine::instance()->textRegColor());
+        cg.setColor(QColorGroup::Midlight,        ThemeEngine::instance()->textRegColor());
+        cg.setColor(QColorGroup::Mid,             ThemeEngine::instance()->textRegColor());
+        cg.setColor(QColorGroup::Shadow,          ThemeEngine::instance()->textRegColor());
+        */
+    }
+
+    kapp->setPalette(plt);
+}
+
+
 #include "mainwindow.moc"
+
index 12d22c23dd7cb0083011cca7eed9165bc8f13ccf..c9ed882253966f519b5e532a8cea8a386568e8ee 100644 (file)
@@ -203,7 +203,6 @@ private:
     QByteArray m_timelineState;
     void loadTranscoders();
 
-
 public slots:
     void openFile(const KUrl &url);
     void slotGotProgressInfo(const QString &message, int progress);
@@ -320,6 +319,8 @@ private slots:
     void slotRevert();
     void slotShutdown();
     void slotUpdateTrackInfo();
+    /** \brief Change color scheme */
+    void slotChangePalette(QAction *action);
 
 signals:
     Q_SCRIPTABLE void abortRenderJob(const QString &url);
index 84a7ecf728e3a5eb6f5916bb24556e9e4f456f6b..98234d2e4895e6315acb5666f600301f4b42dab4 100644 (file)
@@ -31,6 +31,7 @@
 #include <KIO/NetAccess>
 #include <KFileItem>
 #include <KMessageBox>
+#include <KApplication>
 
 #if KDE_IS_VERSION(4,2,0)
 #include <KDiskFreeSpaceInfo>
@@ -254,6 +255,7 @@ QPixmap RecMonitor::mergeSideBySide(const QPixmap& pix, const QString txt)
     res.fill(Qt::transparent);
     p.begin(&res);
     p.drawPixmap(0, 0, pix);
+    p.setPen(kapp->palette().text().color());
     p.drawText(QRect(pixWidth + 8, 0, strWidth, strHeight), 0, txt);
     p.end();
     return res;
index 7b9b8449fabe0dc0d5ea69cca0231ce73f4e3e2d..3cd5c58c4cbb95a1706893b0ce05d207414c87ff 100644 (file)
@@ -1,7 +1,8 @@
-<ui version="4.0" >
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
  <class>EffectList_UI</class>
- <widget class="QWidget" name="EffectList_UI" >
-  <property name="geometry" >
+ <widget class="QWidget" name="EffectList_UI">
+  <property name="geometry">
    <rect>
     <x>0</x>
     <y>0</y>
     <height>296</height>
    </rect>
   </property>
-  <layout class="QGridLayout" name="gridLayout" >
-   <item row="0" column="0" >
-    <widget class="KComboBox" name="type_combo" >
+  <layout class="QGridLayout" name="gridLayout">
+   <item row="0" column="0">
+    <widget class="KComboBox" name="type_combo">
      <item>
-      <property name="text" >
+      <property name="text">
        <string>All</string>
       </property>
      </item>
      <item>
-      <property name="text" >
+      <property name="text">
        <string>Video</string>
       </property>
      </item>
      <item>
-      <property name="text" >
+      <property name="text">
        <string>Audio</string>
       </property>
      </item>
      <item>
-      <property name="text" >
+      <property name="text">
        <string>Custom</string>
       </property>
      </item>
     </widget>
    </item>
-   <item row="0" column="1" >
-    <widget class="KListWidgetSearchLine" name="search_effect" />
+   <item row="0" column="1">
+    <widget class="KListWidgetSearchLine" name="search_effect"/>
    </item>
-   <item row="0" column="2" >
-    <widget class="QToolButton" name="buttonInfo" >
-     <property name="enabled" >
+   <item row="0" column="2">
+    <widget class="QToolButton" name="buttonInfo">
+     <property name="enabled">
       <bool>true</bool>
      </property>
-     <property name="text" >
+     <property name="text">
       <string/>
      </property>
     </widget>
    </item>
-   <item row="1" column="0" colspan="3" >
-    <widget class="QSplitter" name="splitter" >
-     <property name="orientation" >
+   <item row="1" column="0" colspan="3">
+    <widget class="QSplitter" name="splitter">
+     <property name="orientation">
       <enum>Qt::Vertical</enum>
      </property>
-     <widget class="QFrame" name="effectlistframe" >
-      <property name="frameShape" >
-       <enum>QFrame::StyledPanel</enum>
+     <widget class="QFrame" name="effectlistframe">
+      <property name="frameShape">
+       <enum>QFrame::NoFrame</enum>
       </property>
-      <property name="frameShadow" >
+      <property name="frameShadow">
        <enum>QFrame::Raised</enum>
       </property>
      </widget>
-     <widget class="QLabel" name="infopanel" >
-      <property name="sizePolicy" >
-       <sizepolicy vsizetype="Fixed" hsizetype="Preferred" >
+     <widget class="QLabel" name="infopanel">
+      <property name="sizePolicy">
+       <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
         <horstretch>0</horstretch>
         <verstretch>0</verstretch>
        </sizepolicy>
       </property>
-      <property name="frameShape" >
+      <property name="frameShape">
        <enum>QFrame::StyledPanel</enum>
       </property>
-      <property name="frameShadow" >
+      <property name="frameShadow">
        <enum>QFrame::Raised</enum>
       </property>
-      <property name="text" >
+      <property name="text">
        <string/>
       </property>
-      <property name="alignment" >
+      <property name="alignment">
        <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>
       </property>
-      <property name="wordWrap" >
+      <property name="wordWrap">
        <bool>true</bool>
       </property>
      </widget>
     </widget>
    </item>
   </layout>
-  <zorder>type_combo</zorder>
-  <zorder>search_effect</zorder>
-  <zorder>buttonInfo</zorder>
-  <zorder>effectlistframe</zorder>
-  <zorder>infopanel</zorder>
-  <zorder>infopanel</zorder>
-  <zorder>splitter</zorder>
  </widget>
  <customwidgets>
+  <customwidget>
+   <class>KLineEdit</class>
+   <extends>QLineEdit</extends>
+   <header>klineedit.h</header>
+  </customwidget>
   <customwidget>
    <class>KComboBox</class>
    <extends>QComboBox</extends>
    <header>klistwidgetsearchline.h</header>
   </customwidget>
  </customwidgets>
+ <tabstops>
+  <tabstop>type_combo</tabstop>
+  <tabstop>search_effect</tabstop>
+  <tabstop>buttonInfo</tabstop>
+ </tabstops>
  <resources/>
  <connections/>
 </ui>