Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

SuperCollider projects V2 #3278

Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
37 changes: 37 additions & 0 deletions SCClassLibrary/Common/Core/LanguageConfig.sc
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,34 @@ LanguageConfig {
^this.primitiveFailed
}

*currentDirectory {
_LanguageConfig_getCurrentConfigDirectory
^this.primitiveFailed
}

*prMakeAbsoluteToProjectRoot { |paths|
var root;
^if( LanguageConfig.projectOpen ) {
root = this.currentDirectory;
paths.collect{ |p|
if( PathName(p).isRelativePath ) {
root +/+ p
} {
p
}
}
} {
paths
}
}

*includePaths {
_LanguageConfig_getIncludePaths
^this.primitiveFailed
}
*includePathsAbsolute {
^this.prMakeAbsoluteToProjectRoot(this.includePaths)
}
*addIncludePath {|aPath|
_LanguageConfig_addIncludePath
^this.primitiveFailed
Expand All @@ -26,6 +50,9 @@ LanguageConfig {
_LanguageConfig_getExcludePaths
^this.primitiveFailed
}
*excludePathsAbsolute {
^this.prMakeAbsoluteToProjectRoot(this.excludePaths)
}
*addExcludePath {|aPath|
_LanguageConfig_addExcludePath
^this.primitiveFailed
Expand All @@ -43,4 +70,14 @@ LanguageConfig {
_LanguageConfig_setPostInlineWarnings
^this.primitiveFailed
}

*projectOpen {
_LanguageConfig_getProjectOpen
^this.primitiveFailed
}

*defaultPathsExcluded {
_LanguageConfig_getExcludeDefaultPaths
^this.primitiveFailed
}
}
29 changes: 19 additions & 10 deletions SCClassLibrary/Common/Quarks/Quarks.sc
Original file line number Diff line number Diff line change
Expand Up @@ -153,12 +153,12 @@ Quarks {
});
}
*installed {
^LanguageConfig.includePaths
^LanguageConfig.includePathsAbsolute
.collect(Quark.fromLocalPath(_))
}
*installedPaths {
^installedPaths ?? {
installedPaths = LanguageConfig.includePaths.collect({ |apath|
installedPaths = LanguageConfig.includePathsAbsolute.collect({ |apath|
apath.withoutTrailingSlash
});
}
Expand Down Expand Up @@ -214,11 +214,17 @@ Quarks {
^true
}

*getLinkPath { |path|
^if(LanguageConfig.projectOpen && path.beginsWith(LanguageConfig.currentDirectory))
{path[(LanguageConfig.currentDirectory.size+1)..]}{path};
}

*link { |path|
path = path.withoutTrailingSlash;
if(LanguageConfig.includePaths.includesEqual(path).not, {
path.debug("Adding path");
LanguageConfig.addIncludePath(path);
if(LanguageConfig.includePathsAbsolute.includesEqual(path).not, {
var linkPath = Quarks.getLinkPath(path);
linkPath.debug("Adding path");
LanguageConfig.addIncludePath(linkPath);
LanguageConfig.store(LanguageConfig.currentPath);
installedPaths = installedPaths.add(path.withoutTrailingSlash);
^true
Expand All @@ -227,9 +233,10 @@ Quarks {
}
*unlink { |path|
path = path.withoutTrailingSlash;
if(LanguageConfig.includePaths.includesEqual(path), {
path.debug("Removing path");
LanguageConfig.removeIncludePath(path);
if(LanguageConfig.includePathsAbsolute.includesEqual(path), {
var linkPath = Quarks.getLinkPath(path);
linkPath.debug("Removing path");
LanguageConfig.removeIncludePath(linkPath);
LanguageConfig.store(LanguageConfig.currentPath);
installedPaths.remove(path.withoutTrailingSlash);
^true
Expand All @@ -238,7 +245,9 @@ Quarks {
}

*initClass {
folder = Platform.userAppSupportDir +/+ "downloaded-quarks";
folder = if(LanguageConfig.projectOpen){
LanguageConfig.currentDirectory
}{ Platform.userAppSupportDir } +/+ "downloaded-quarks";
additionalFolders = additionalFolders ? [];
if(File.exists(folder).not, {
folder.mkdir();
Expand Down Expand Up @@ -306,7 +315,7 @@ Quarks {
additionalFolders.do({ |folder|
(folder +/+ "*").pathMatch.do(f);
});
LanguageConfig.includePaths.do(f);
LanguageConfig.includePathsAbsolute.do(f);
^all.atAll(all.order)
}
*fetchDirectory { |force=true|
Expand Down
14 changes: 11 additions & 3 deletions SCClassLibrary/Platform/Platform.sc
Original file line number Diff line number Diff line change
Expand Up @@ -120,9 +120,17 @@ Platform {
}
}

loadStartupFiles { this.startupFiles.do{|afile|
afile = afile.standardizePath;
if(File.exists(afile), {afile.load})
loadStartupFiles {
var file;
if (LanguageConfig.defaultPathsExcluded.not && LanguageConfig.projectOpen.not) {
this.startupFiles.do{|afile|
afile = afile.standardizePath;
if(File.exists(afile), {afile.load})
}
};
if (LanguageConfig.projectOpen) {
file = LanguageConfig.currentDirectory ++ "/startup.scd";
if(File.exists(file), {file.load})
}
}

Expand Down
5 changes: 5 additions & 0 deletions editors/sc-ide/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,7 @@ set ( ide_moc_hdr
core/session_manager.hpp
widgets/cmd_line.hpp
widgets/doc_list.hpp
widgets/file_tree.hpp
widgets/documents_dialog.hpp
widgets/editor_box.hpp
widgets/find_replace_tool.hpp
Expand All @@ -89,6 +90,7 @@ set ( ide_moc_hdr
widgets/settings/dialog.hpp
widgets/settings/general_page.hpp
widgets/settings/sclang_page.hpp
widgets/settings/sclang_project_page.hpp
widgets/settings/editor_page.hpp
widgets/settings/shortcuts_page.hpp
widgets/util/path_chooser_widget.hpp
Expand Down Expand Up @@ -120,6 +122,7 @@ set ( ide_src
core/util/scdoc_log.cpp
widgets/cmd_line.cpp
widgets/doc_list.cpp
widgets/file_tree.cpp
widgets/documents_dialog.cpp
widgets/editor_box.cpp
widgets/find_replace_tool.cpp
Expand All @@ -141,6 +144,7 @@ set ( ide_src
widgets/settings/dialog.cpp
widgets/settings/general_page.cpp
widgets/settings/sclang_page.cpp
widgets/settings/sclang_project_page.cpp
widgets/settings/editor_page.cpp
widgets/settings/shortcuts_page.cpp
widgets/util/gui_utilities.cpp
Expand Down Expand Up @@ -171,6 +175,7 @@ set( ide_forms
forms/settings_dialog.ui
forms/settings_general.ui
forms/settings_sclang.ui
forms/settings_sclang_project.ui
forms/settings_editor.ui
forms/settings_shortcuts.ui
)
Expand Down
18 changes: 15 additions & 3 deletions editors/sc-ide/core/main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -30,9 +30,6 @@
#include "../../../QtCollider/hacks/hacks_mac.hpp"
#include "../primitives/localsocket_utils.hpp"

#include <yaml-cpp/node/node.h>
#include <yaml-cpp/parser.h>

#include <QAction>
#include <QApplication>
#include <QBuffer>
Expand Down Expand Up @@ -327,3 +324,18 @@ void Main::findReferences(const QString &string, QWidget * parent)
dialog.exec();
}

bool Main::useLanguageConfigFromSession() {
return settings()->value("IDE/useLanguageConfigFromSession").toBool() && (sessionManager()->currentSession() != nullptr);
}

SettingsInterface *Main::settingsForLanguageConfig(){
if( useLanguageConfigFromSession() )
return sessionManager()->currentSession();
else
return settings();
}

QString Main::getConfigFile()
{
return settingsForLanguageConfig()->getConfigFile();
}
5 changes: 5 additions & 0 deletions editors/sc-ide/core/main.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -100,6 +100,11 @@ class Main:
static void openCommandLine(const QString &string);
static void findReferences(const QString &string, QWidget * parent);

static bool useLanguageConfigFromSession();
static SettingsInterface *settingsForLanguageConfig();
static QString getConfigFile();


public Q_SLOTS:
void storeSettings() {
Q_EMIT(storeSettingsRequest(mSettings));
Expand Down
14 changes: 7 additions & 7 deletions editors/sc-ide/core/sc_process.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -115,6 +115,11 @@ void ScProcess::updateToggleRunningAction()
mActions[ToggleRunning]->setShortcut( targetAction->shortcut() );
}

bool ScProcess::running()
{
return state() == QProcess::Running;
}

void ScProcess::toggleRunning()
{
switch(state()) {
Expand All @@ -134,13 +139,10 @@ void ScProcess::startLanguage (void)
}

Settings::Manager *settings = Main::settings();
settings->beginGroup("IDE/interpreter");

QString workingDirectory = settings->value("runtimeDir").toString();
QString configFile = settings->value("configFile").toString();
bool standalone = settings->value("standalone").toBool();
QString workingDirectory = settings->value("IDE/interpreter/runtimeDir").toString();

settings->endGroup();
QString configFile = Main::instance()->getConfigFile();

QString sclangCommand;
#ifdef Q_OS_MAC
Expand All @@ -153,8 +155,6 @@ void ScProcess::startLanguage (void)
if(!configFile.isEmpty())
sclangArguments << "-l" << configFile;
sclangArguments << "-i" << "scqt";
if(standalone)
sclangArguments << "-a";

if(!workingDirectory.isEmpty())
setWorkingDirectory(workingDirectory);
Expand Down
1 change: 1 addition & 0 deletions editors/sc-ide/core/sc_process.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,7 @@ class ScProcess:
void updateSelectionMirrorForDocument ( class Document * doc, int start, int range);

public slots:
bool running();
void toggleRunning();
void startLanguage (void);
void stopLanguage (void);
Expand Down
9 changes: 8 additions & 1 deletion editors/sc-ide/core/session_manager.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -26,11 +26,13 @@
#include <QStringList>
#include <QSettings>

#include "settings_interface.hpp"

namespace ScIDE {

class DocumentManager;

struct Session : public QSettings
struct Session : public QSettings, public SettingsInterface
{
Session( const QString & file, const QString & name, Format format, QObject * parent = 0 ):
QSettings(file, format, parent),
Expand All @@ -39,6 +41,11 @@ struct Session : public QSettings

const QString & name() const { return mName; }

void beginGroup ( const QString & prefix ) override { QSettings::beginGroup(prefix); }
void endGroup () override { QSettings::endGroup(); }

QVariant value ( const QString & key ) const override { return QSettings::value(key); }
void setValue ( const QString & key, const QVariant & value ) override { QSettings::setValue(key, value); }
private:
QString mName;
};
Expand Down
4 changes: 3 additions & 1 deletion editors/sc-ide/core/settings/manager.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -29,11 +29,13 @@
#include <QAction>
#include <QTextCharFormat>

#include "../settings_interface.hpp"

namespace ScIDE { namespace Settings {

class Theme;

class Manager : public QObject
class Manager : public QObject, public SettingsInterface
{
Q_OBJECT

Expand Down
29 changes: 29 additions & 0 deletions editors/sc-ide/core/settings_interface.hpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
#ifndef SCIDE_SETTINGS_INTERFACE_HPP_INCLUDED
#define SCIDE_SETTINGS_INTERFACE_HPP_INCLUDED

#include <QVariant>

namespace ScIDE {

class SettingsInterface
{
public:
virtual void beginGroup ( const QString & prefix ) = 0;
virtual void endGroup () = 0;

virtual QVariant value ( const QString & key ) const = 0;
virtual void setValue ( const QString & key, const QVariant & value ) = 0;

QString getConfigFile()
{
return value("IDE/interpreter/configFile").toString();
}

void setConfigFile(QString path)
{
setValue("IDE/interpreter/configFile", path);
}
};

}
#endif // SCIDE_SETTINGS_INTERFACE_HPP_INCLUDED