QMap <QString,QImage> MainWindow::m_lumacache;
+static bool sortByNames(const QPair<QString, KAction*> &a, const QPair<QString, KAction*> &b)
+{
+ return a.first < b.first;
+}
+
MainWindow::MainWindow(const QString &MltPath, const KUrl & Url, const QString & clipsToLoad, QWidget *parent) :
KXmlGuiWindow(parent),
m_activeDocument(NULL),
slotConnectMonitors();
- // Open or create a file. Command line argument passed in Url has
- // precedence, then "openlastproject", then just a plain empty file.
- // If opening Url fails, openlastproject will _not_ be used.
- if (!Url.isEmpty()) {
- // delay loading so that the window shows up
- m_startUrl = Url;
- QTimer::singleShot(500, this, SLOT(openFile()));
- } else if (KdenliveSettings::openlastproject()) {
- QTimer::singleShot(500, this, SLOT(openLastFile()));
- } else { //if (m_timelineArea->count() == 0) {
- newFile(false);
- }
-
- if (!clipsToLoad.isEmpty() && m_activeDocument) {
- QStringList list = clipsToLoad.split(',');
- QList <QUrl> urls;
- foreach(const QString &path, list) {
- kDebug() << QDir::current().absoluteFilePath(path);
- urls << QUrl::fromLocalFile(QDir::current().absoluteFilePath(path));
- }
- m_projectList->slotAddClip(urls);
- }
-
#ifdef USE_JOGSHUTTLE
activateShuttleDevice();
#endif
actionCollection()->addAssociatedWidget(m_clipMonitor->container());
actionCollection()->addAssociatedWidget(m_projectMonitor->container());
- QMap <QString, KAction *> viewActions;
+ QList<QPair<QString, KAction *> > viewActions;
+ QPair <QString, KAction *> pair;
KAction *showTimeline = new KAction(i18n("Timeline"), this);
showTimeline->setCheckable(true);
showTimeline->setChecked(true);
connect(showTimeline, SIGNAL(triggered(bool)), this, SLOT(slotShowTimeline(bool)));
- viewActions.insert(showTimeline->text(), showTimeline);
+
+ KMenu *viewMenu = static_cast<KMenu*>(factory()->container("dockwindows", this));
+ pair.first = showTimeline->text();
+ pair.second = showTimeline;
+ viewActions.append(pair);
QList <QDockWidget *> docks = findChildren<QDockWidget *>();
for (int i = 0; i < docks.count(); i++) {
QDockWidget* dock = docks.at(i);
+ QAction * a = dock->toggleViewAction();
+ if (!a) continue;
KAction* dockInformations = new KAction(this);
- dockInformations->setText(dock->windowTitle());
+ dockInformations->setText(a->text());
dockInformations->setCheckable(true);
dockInformations->setChecked(!dock->isHidden());
- connect(dockInformations,SIGNAL(toggled(bool)), dock, SLOT(setVisible(bool)));
- viewActions.insert(dockInformations->text(), dockInformations);
- }
-
-
- KMenu *viewMenu = static_cast<KMenu*>(factory()->container("dockwindows", this));
- //const QList<QAction *> viewActions = createPopupMenu()->actions();
- QMap<QString, KAction *>::const_iterator i = viewActions.constBegin();
- while (i != viewActions.constEnd()) {
- viewMenu->addAction(guiActions->addAction(i.key(), i.value()));
- ++i;
+ // HACK: since QActions cannot be used in KActionCategory to allow shortcut, we create a duplicate KAction of the dock QAction and link them
+ connect(a,SIGNAL(toggled(bool)), dockInformations, SLOT(setChecked(bool)));
+ connect(dockInformations,SIGNAL(triggered(bool)), a, SLOT(trigger()));
+ pair.first = dockInformations->text();
+ pair.second = dockInformations;
+ viewActions.append(pair);
}
+ // Sort dock view action by name
+ qSort(viewActions.begin(), viewActions.end(), sortByNames);
+ // Populate view menu
+ for (int i = 0; i < viewActions.count(); i++)
+ viewMenu->addAction(guiActions->addAction(viewActions.at(i).first, viewActions.at(i).second));
+
// Populate encoding profiles
KConfig conf("encodingprofiles.rc", KConfig::FullConfig, "appdata");
if (KdenliveSettings::proxyparams().isEmpty() || KdenliveSettings::proxyextension().isEmpty()) {
}
connect (KGlobalSettings::self(), SIGNAL(kdisplayPaletteChanged()), this, SLOT(slotChangePalette()));
+
+ // Open or create a file. Command line argument passed in Url has
+ // precedence, then "openlastproject", then just a plain empty file.
+ // If opening Url fails, openlastproject will _not_ be used.
+ if (!Url.isEmpty()) {
+ // delay loading so that the window shows up
+ m_startUrl = Url;
+ QTimer::singleShot(500, this, SLOT(openFile()));
+ } else if (KdenliveSettings::openlastproject()) {
+ QTimer::singleShot(500, this, SLOT(openLastFile()));
+ } else { //if (m_timelineArea->count() == 0) {
+ newFile(false);
+ }
+
+ if (!clipsToLoad.isEmpty() && m_activeDocument) {
+ QStringList list = clipsToLoad.split(',');
+ QList <QUrl> urls;
+ foreach(const QString &path, list) {
+ kDebug() << QDir::current().absoluteFilePath(path);
+ urls << QUrl::fromLocalFile(QDir::current().absoluteFilePath(path));
+ }
+ m_projectList->slotAddClip(urls);
+ }
+
}
MainWindow::~MainWindow()