[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    KDE/kdebase/workspace/plasma/desktop/shell
From:       Aaron J. Seigo <aseigo () kde ! org>
Date:       2010-09-01 0:42:02
Message-ID: 20100901004202.3038BAC857 () svn ! kde ! org
[Download RAW message or body]

SVN commit 1170462 by aseigo:

FEATURE: load or use templates


 M  +44 -10    interactiveconsole.cpp  
 M  +1 -0      interactiveconsole.h  


--- trunk/KDE/kdebase/workspace/plasma/desktop/shell/interactiveconsole.cpp \
#1170461:1170462 @@ -85,20 +85,28 @@
     label->setFont(f);
     editorLayout->addWidget(label);
 
-    QToolButton *snippetsButton = new QToolButton(this);
-    snippetsButton->setPopupMode(QToolButton::InstantPopup);
-    snippetsButton->setMenu(m_snippetsMenu);
-    snippetsButton->setText(i18n("Templates"));
     connect(m_snippetsMenu, SIGNAL(aboutToShow()), this, \
                SLOT(populateTemplatesMenu()));
-    connect(m_snippetsMenu, SIGNAL(triggered(QAction*)), this, \
SLOT(loadTemplate(QAction*)));  
+    QToolButton *loadTemplateButton = new QToolButton(this);
+    loadTemplateButton->setPopupMode(QToolButton::InstantPopup);
+    loadTemplateButton->setMenu(m_snippetsMenu);
+    loadTemplateButton->setText(i18n("Load"));
+    connect(loadTemplateButton, SIGNAL(triggered(QAction*)), this, \
SLOT(loadTemplate(QAction*))); +
+    QToolButton *useTemplateButton = new QToolButton(this);
+    useTemplateButton->setPopupMode(QToolButton::InstantPopup);
+    useTemplateButton->setMenu(m_snippetsMenu);
+    useTemplateButton->setText(i18n("Use"));
+    connect(useTemplateButton, SIGNAL(triggered(QAction*)), this, \
SLOT(useTemplate(QAction*))); +
     KToolBar *toolBar = new KToolBar(this, true, false);
     toolBar->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);
     toolBar->addAction(m_loadAction);
     toolBar->addAction(m_saveAction);
     toolBar->addAction(m_clearAction);
     toolBar->addAction(m_executeAction);
-    toolBar->addWidget(snippetsButton);
+    toolBar->addWidget(loadTemplateButton);
+    toolBar->addWidget(useTemplateButton);
 
     editorLayout->addWidget(toolBar);
 
@@ -312,9 +320,8 @@
             Plasma::Package package(path, templateStructure);
             const QString scriptFile = package.filePath("mainscript");
             if (!scriptFile.isEmpty()) {
-                QAction *action = m_snippetsMenu->addAction(i18nc("A script template \
                name and the internal plugin name for use in the user's scripts",
-                                                                  "%1 (%2)", \
                info.name(), info.pluginName()));
-                action->setData(scriptFile);
+                QAction *action = m_snippetsMenu->addAction(info.name());
+                action->setData(info.pluginName());
             }
         }
     }
@@ -322,9 +329,36 @@
 
 void InteractiveConsole::loadTemplate(QAction *action)
 {
-    loadScriptFromUrl(KUrl(action->data().toString()));
+    Plasma::PackageStructure::Ptr templateStructure(new \
WorkspaceScripting::LayoutTemplatePackageStructure); +    const QString pluginName = \
action->data().toString(); +    const QString path = KStandardDirs::locate("data", \
templateStructure->defaultPackageRoot() + '/' + pluginName + '/'); +    if \
(!path.isEmpty()) { +        Plasma::Package package(path, templateStructure);
+        const QString scriptFile = package.filePath("mainscript");
+        if (!scriptFile.isEmpty()) {
+            loadScriptFromUrl(KUrl(scriptFile));
 }
+    }
+}
 
+void InteractiveConsole::useTemplate(QAction *action)
+{
+    QString code("var template = loadTemplate('" + action->data().toString() + \
"')"); +    if (m_editorPart) {
+        const QList<KTextEditor::View *> views = m_editorPart->views();
+        if (views.isEmpty()) {
+            m_editorPart->insertLines(m_editorPart->lines(), QStringList() << code);
+        } else {
+            KTextEditor::Cursor cursor = views.at(0)->cursorPosition();
+            m_editorPart->insertLines(cursor.line(), QStringList() << code);
+            cursor.setLine(cursor.line() + 1);
+            views.at(0)->setCursorPosition(cursor);
+        }
+    } else {
+        m_editor->insertPlainText(code);
+    }
+}
+
 void InteractiveConsole::scriptFileDataRecvd(KIO::Job *job, const QByteArray &data)
 {
     Q_ASSERT(m_editor);
--- trunk/KDE/kdebase/workspace/plasma/desktop/shell/interactiveconsole.h \
#1170461:1170462 @@ -79,6 +79,7 @@
     void loadScriptFromUrl(const KUrl &url);
     void populateTemplatesMenu();
     void loadTemplate(QAction *);
+    void useTemplate(QAction *);
 
 private:
     void onClose();


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic