Skip to content

Commit

Permalink
add a button for libPaths and make the preferences a bit less ugly
Browse files Browse the repository at this point in the history
  • Loading branch information
JorisGoosen committed Oct 28, 2024
1 parent 3ff2856 commit 8d9c0d4
Show file tree
Hide file tree
Showing 5 changed files with 146 additions and 88 deletions.
194 changes: 109 additions & 85 deletions Desktop/components/JASP/Widgets/FileMenu/PrefsAdvanced.qml
Original file line number Diff line number Diff line change
Expand Up @@ -38,56 +38,7 @@ ScrollView
onCheckedChanged: preferencesModel.modulesRemember = checked
toolTip: qsTr("Continue where you left of the next time JASP starts.\nEnabling this option makes JASP remember which Modules you've enabled.")

KeyNavigation.tab: developerMode
}

CheckBox
{
id: developerMode
label: qsTr("Developer mode (Beta version)")
checked: preferencesModel.developerMode
onCheckedChanged: preferencesModel.developerMode = checked
toolTip: qsTr("To use JASP Modules enable this option.")

KeyNavigation.tab: browseDeveloperFolderButton
}

Item
{
id: editDeveloperFolder
enabled: preferencesModel.developerMode
width: parent.width
height: browseDeveloperFolderButton.height

RectangularButton
{
id: browseDeveloperFolderButton
text: qsTr("Select developer folder")
onClicked: preferencesModel.browseDeveloperFolder()
anchors.left: parent.left
anchors.leftMargin: jaspTheme.subOptionOffset
toolTip: qsTr("Browse to your JASP Module folder.")

KeyNavigation.tab: developerFolderText.textInput
activeFocusOnTab: true
}

PrefsTextInput
{
id: developerFolderText

text: preferencesModel.developerFolder
onEditingFinished: preferencesModel.developerFolder = text
nextEl: cranRepoUrl.textInput

height: browseDeveloperFolderButton.height
anchors
{
left: browseDeveloperFolderButton.right
right: parent.right
top: parent.top
}
}
KeyNavigation.tab: cranRepoUrl
}

Item
Expand All @@ -108,27 +59,28 @@ ScrollView
margins: jaspTheme.generalAnchorMargin
}
}

PrefsTextInput
{
id: cranRepoUrl

text: preferencesModel.cranRepoURL
onEditingFinished: preferencesModel.cranRepoURL = text
nextEl: githubPatDefault

height: browseDeveloperFolderButton.height
anchors
{
left: cranRepoUrlLabel.right
right: parent.right
margins: jaspTheme.generalAnchorMargin
}

KeyNavigation.tab: githubPatDefault
}
}


CheckBox
{
id: githubPatDefault
Expand All @@ -139,7 +91,7 @@ ScrollView

KeyNavigation.tab: githubPatCustomToken
}

Item
{
id: githubPatCustomTokenItem
Expand All @@ -159,16 +111,16 @@ ScrollView
leftMargin: jaspTheme.subOptionOffset
}
}

PrefsTextInput
{
id: githubPatCustomToken

text: preferencesModel.githubPatCustom
onEditingFinished: preferencesModel.githubPatCustom = text

nextEl: directLibpathDevModEnabled
nextEl: developerMode

height: browseDeveloperFolderButton.height
anchors
{
Expand All @@ -179,9 +131,20 @@ ScrollView

textInput.echoMode: TextInput.Password

KeyNavigation.tab: directLibpathDevModEnabled
KeyNavigation.tab: developerMode
}
}
}

CheckBox
{
id: developerMode
label: qsTr("Developer mode")
checked: preferencesModel.developerMode
onCheckedChanged: preferencesModel.developerMode = checked
toolTip: qsTr("To use JASP Modules enable this option.")

KeyNavigation.tab: generateMarkdown
}

CheckBox
{
Expand All @@ -191,42 +154,110 @@ ScrollView
checked: preferencesModel.generateMarkdown
onCheckedChanged: preferencesModel.generateMarkdown = checked
visible: preferencesModel.developerMode
enabled: preferencesModel.developerMode
KeyNavigation.tab: cleanModulesFolder

}


RoundedButton
{
id: cleanModulesFolder
text: qsTr("Clear installed modules and packages")
toolTip: qsTr("This will erase the 'renv' and 'Modules' folders in the appdata.")
onClicked: mainWindow.clearModulesFoldersUser();

KeyNavigation.tab: directLibpathDevModEnabled
activeFocusOnTab: true
}
}

PrefsGroupRect
{
id: editDeveloperFolder
title: qsTr("Development module")
visible: preferencesModel.developerMode
enabled: preferencesModel.developerMode

CheckBox
{
id: directLibpathDevModEnabled
label: qsTr("Enable direct libpath mode")
checked: preferencesModel.directLibpathEnabled
onCheckedChanged: preferencesModel.directLibpathEnabled = checked
toolTip: qsTr("To use JASP Modules enable this option.")
toolTip: qsTr("Load modules from a binary in an R-library instead of installing it from sources.")
visible: preferencesModel.developerMode

KeyNavigation.tab: directLibpathFolder
KeyNavigation.tab: editDeveloperFolder
}


Item
{
width: parent.width
height: browseDeveloperFolderButton.height
enabled: preferencesModel.developerMode && !preferencesModel.directLibpathEnabled
visible: preferencesModel.developerMode && !preferencesModel.directLibpathEnabled


RectangularButton
{
id: browseDeveloperFolderButton
text: qsTr("Source folder:")
onClicked: preferencesModel.browseDeveloperFolder()
anchors.left: parent.left
anchors.leftMargin: jaspTheme.subOptionOffset
toolTip: qsTr("Browse to your JASP Module folder.")

KeyNavigation.tab: developerFolderText.textInput
activeFocusOnTab: true

}

PrefsTextInput
{
id: developerFolderText

text: preferencesModel.developerFolder
onEditingFinished: preferencesModel.developerFolder = text
nextEl: directLibPathLabel

height: browseDeveloperFolderButton.height
anchors
{
left: browseDeveloperFolderButton.right
right: parent.right
margins: jaspTheme.generalAnchorMargin
}
}
}

Item
{
id: directLibpath
enabled: preferencesModel.directLibpathEnabled
visible: preferencesModel.developerMode && preferencesModel.directLibpathEnabled
width: parent.width
height: cranRepoUrl.height
visible: preferencesModel.developerMode && preferencesModel.directLibpathEnabled

Label
RectangularButton
{
id: directLibPathLabel
text: qsTr("DevModule libpath:")
id: directLibPathLabel
text: qsTr("Libpath:")
width: Math.max(directDevModName.implicitWidth, directLibPathLabel.implicitWidth)
onClicked: preferencesModel.browseDeveloperLibPathFolder()
activeFocusOnTab: true
KeyNavigation.tab: directLibpathFolder.textInput
KeyNavigation.backtab: directLibpathDevModEnabled

anchors
{
left: parent.left
verticalCenter: parent.verticalCenter
leftMargin: jaspTheme.subOptionOffset
}


}

PrefsTextInput
Expand All @@ -247,21 +278,24 @@ ScrollView
}

KeyNavigation.tab: moduleName

toolTip: qsTr("Choose the R library where you installed the development module")
}
}

Item {

id: directDevMod
enabled: preferencesModel.directLibpathEnabled
enabled: preferencesModel.developerMode &&preferencesModel.directLibpathEnabled
visible: preferencesModel.developerMode && preferencesModel.directLibpathEnabled
width: parent.width
height: cranRepoUrl.height
visible: preferencesModel.developerMode && preferencesModel.directLibpathEnabled

Label
{
id: directDevModName
text: qsTr("Developer module name:")
text: qsTr("Module name:")
width: Math.max(directDevModName.implicitWidth, directLibPathLabel.implicitWidth)

anchors
{
Expand All @@ -278,7 +312,7 @@ ScrollView
text: preferencesModel.directDevModName
onEditingFinished: preferencesModel.directDevModName = text

nextEl: cleanModulesFolder
nextEl: logToFile

height: browseDeveloperFolderButton.height
anchors
Expand All @@ -288,20 +322,10 @@ ScrollView
margins: jaspTheme.generalAnchorMargin
}

KeyNavigation.tab: cleanModulesFolder
KeyNavigation.tab: logToFile
toolTip: qsTr("Enter the (package)name of the development module you want to load")
}
}

RoundedButton
{
id: cleanModulesFolder
text: qsTr("Clear installed modules and packages")
toolTip: qsTr("This will erase the 'renv' and 'Modules' folders in the appdata.")
onClicked: mainWindow.clearModulesFoldersUser();

KeyNavigation.tab: logToFile
activeFocusOnTab: true
}
}

PrefsGroupRect
Expand Down Expand Up @@ -339,7 +363,7 @@ ScrollView
defaultValue: 10
stepSize: 1

KeyNavigation.tab: showLogs
KeyNavigation.tab: showLogs
text: qsTr("Max logfiles to keep: ")

anchors
Expand Down
14 changes: 14 additions & 0 deletions Desktop/components/JASP/Widgets/FileMenu/PrefsTextInput.qml
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import QtQuick.Controls 2.15
Rectangle
{
property alias text: textInput.text
property string toolTip: ""
property alias textInput: textInput
property var nextEl: null

Expand All @@ -24,6 +25,19 @@ Rectangle
onFocusChanged: if(focus) textInput.focus = true;
activeFocusOnTab: true

ToolTip.visible: toolTip != "" && toolTipMouseArea.containsMouse
ToolTip.text: toolTip
ToolTip.timeout: 3000
ToolTip.delay: 500

MouseArea
{
id: toolTipMouseArea
hoverEnabled: toolTip != ""
acceptedButtons: Qt.NoButton
anchors.fill: parent
}

TextInput
{
id: textInput
Expand Down
23 changes: 21 additions & 2 deletions Desktop/gui/preferencesmodel.cpp.in
Original file line number Diff line number Diff line change
Expand Up @@ -85,10 +85,29 @@ void PreferencesModel::browseDeveloperFolder()
QString folder = MessageForwarder::browseOpenFolder(tr("Select a folder..."), defaultfolder);

if (!folder.isEmpty())
setDeveloperFolder(folder);

setDeveloperFolder(folder);
}


void PreferencesModel::browseDeveloperLibPathFolder()
{
QString defaultfolder = directLibpathFolder();
if (defaultfolder.isEmpty())
{
#ifdef _WIN32
defaultfolder = "c:\\";
#else
defaultfolder = "~";
#endif
}

QString folder = MessageForwarder::browseOpenFolder(tr("Select a R-library..."), defaultfolder);

if (!folder.isEmpty())
setDirectLibpathFolder(folder);
}


#define GET_PREF_FUNC(TYPE, NAME, SETTING, TO_FUNC) TYPE PreferencesModel::NAME() const { return Settings::value(SETTING).TO_FUNC; }
#define GET_PREF_FUNC_BOOL(NAME, SETTING) GET_PREF_FUNC(bool, NAME, SETTING, toBool())
#define GET_PREF_FUNC_INT(NAME, SETTING) GET_PREF_FUNC(int, NAME, SETTING, toInt())
Expand Down
1 change: 1 addition & 0 deletions Desktop/gui/preferencesmodel.h
Original file line number Diff line number Diff line change
Expand Up @@ -177,6 +177,7 @@ public slots:
void setUseDefaultEditor( bool useDefaultEditor);
void browseSpreadsheetEditor();
void browseDeveloperFolder();
void browseDeveloperLibPathFolder();
void removeEmptyValue( QString value);
void addEmptyValue( QString value);
void resetEmptyValues();
Expand Down
Loading

0 comments on commit 8d9c0d4

Please sign in to comment.