[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: playground/base/plasma/plasmate
From: Richard Dale <Richard_Dale () tipitina ! demon ! co ! uk>
Date: 2010-02-12 23:45:35
Message-ID: 1266018335.908451.28436.nullmailer () svn ! kde ! org
[Download RAW message or body]
SVN commit 1089361 by rdale:
* For Ruby convert the name of the project in camel case to a folder name and
main script name in snake case. For instance, if a project is given a name of
FooBar, the folder will be foo_bar and the main script main_foo_bar.rb.
M +21 -5 startpage.cpp
M +1 -0 startpage.h
--- trunk/playground/base/plasma/plasmate/startpage.cpp #1089360:1089361
@@ -119,6 +119,13 @@
// connect(ui->newProjectButton, SIGNAL(clicked()), this, \
SLOT(launchNewProjectWizard())); }
+// Convert FooBar to foo_bar
+QString StartPage::camelToSnakeCase(const QString& name)
+{
+ QString result(name);
+ return result.replace(QRegExp("([A-Z])"), \
"_\\1").toLower().replace(QRegExp("^_"), ""); +}
+
void StartPage::processProjectName(const QString& name)
{
QRegExp validatePluginName("[a-zA-Z0-9_.]*");
@@ -267,12 +274,11 @@
// packagePath -> projectPath
QString projectNameLowerCase = ui->projectName->text().toLower();
+ QString projectNameSnakeCase = camelToSnakeCase(ui->projectName->text());
QString projectName = ui->projectName->text();
QString projectFileExtension;
QString templateFilePath = KStandardDirs::locate("appdata", "templates/");
- QString projectFolderName = generateProjectFolderName(projectNameLowerCase);
- QString projectPath = KStandardDirs::locateLocal("appdata", projectFolderName + \
'/');
Plasma::PackageMetadata metadata;
@@ -291,25 +297,35 @@
templateFilePath.append("mainPlasmoid");
}
+ QString projectFolderName;
+ QString mainScriptName;
+
// Append the desired extension
if (ui->radioButtonPy->isChecked()) {
metadata.setImplementationApi("python");
+ projectFolderName = generateProjectFolderName(projectNameLowerCase);
projectFileExtension = ".py";
+ mainScriptName = projectNameLowerCase + projectFileExtension;
} else if (ui->radioButtonRb->isChecked()) {
metadata.setImplementationApi("ruby-script");
+ projectFolderName = generateProjectFolderName(projectNameSnakeCase);
projectFileExtension = ".rb";
+ mainScriptName = QString("main_") + projectNameSnakeCase + \
projectFileExtension; } else {
metadata.setImplementationApi("javascript");
+ projectFolderName = generateProjectFolderName(projectNameLowerCase);
projectFileExtension = ".js";
+ mainScriptName = projectNameLowerCase + projectFileExtension;
}
-
+
// Creating the corresponding folder
+ QString projectPath = KStandardDirs::locateLocal("appdata", projectFolderName + \
'/'); QDir packageSubDirs(projectPath);
packageSubDirs.mkpath("contents/code/");
// Create a QFile object that points to the template we need to copy
QFile sourceFile(templateFilePath + projectFileExtension);
- QFile destinationFile(projectPath + "contents/code/" + projectNameLowerCase + \
projectFileExtension); + QFile destinationFile(projectPath + "contents/code/" + \
mainScriptName);
// Now open these files, and substitute the main class, author, email and date \
fields sourceFile.open(QIODevice::ReadOnly);
@@ -381,7 +397,7 @@
// we add it manually until a patch is released.
KDesktopFile metaFile(projectPath + "metadata.desktop");
KConfigGroup metaDataGroup = metaFile.desktopGroup();
- metaDataGroup.writeEntry("X-Plasma-MainScript", "code/" + projectNameLowerCase + \
projectFileExtension); + metaDataGroup.writeEntry("X-Plasma-MainScript", "code/" + \
mainScriptName); metaDataGroup.writeEntry("X-Plasma-DefaultSize", QSize(200, 100));
metaFile.sync();
--- trunk/playground/base/plasma/plasmate/startpage.h #1089360:1089361
@@ -76,6 +76,7 @@
private:
void setupWidgets();
void refreshRecentProjectsList();
+ static QString camelToSnakeCase(const QString& name);
const QString generateProjectFolderName(const QString& suggestion);
Ui::StartPage *ui;
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic