UI tweaks for GPT4All v3.0.0-rc2 (#2474)

* clickable link to get API key with hand-style mouse cursor
* remove "Force Metal" setting
* allow typing incorrect API keys (but don't accept them), add placeholder text

Signed-off-by: Jared Van Bortel <jared@nomic.ai>
This commit is contained in:
Jared Van Bortel 2024-06-27 11:08:32 -04:00 committed by GitHub
parent bed92046d0
commit 6506ba161b
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 21 additions and 10 deletions

View File

@ -420,7 +420,7 @@ MySettingsTab {
Accessible.description: ToolTip.text Accessible.description: ToolTip.text
} }
MySettingsLabel { /*MySettingsLabel {
id: gpuOverrideLabel id: gpuOverrideLabel
text: qsTr("Force Metal (macOS+arm)") text: qsTr("Force Metal (macOS+arm)")
Layout.row: 13 Layout.row: 13
@ -437,7 +437,7 @@ MySettingsTab {
} }
ToolTip.text: qsTr("WARNING: On macOS with arm (M1+) this setting forces usage of the GPU. Can cause crashes if the model requires more RAM than the system supports. Because of crash possibility the setting will not persist across restarts of the application. This has no effect on non-macs or intel.") ToolTip.text: qsTr("WARNING: On macOS with arm (M1+) this setting forces usage of the GPU. Can cause crashes if the model requires more RAM than the system supports. Because of crash possibility the setting will not persist across restarts of the application. This has no effect on non-macs or intel.")
ToolTip.visible: hovered ToolTip.visible: hovered
} }*/
MySettingsLabel { MySettingsLabel {
id: updatesLabel id: updatesLabel

View File

@ -117,24 +117,29 @@ MySettingsTab {
MySettingsLabel { MySettingsLabel {
id: apiKeyLabel id: apiKeyLabel
text: qsTr("Nomic API Key") text: qsTr("Nomic API Key")
helpText: qsTr("API key to use for Nomic Embed. Get one at https://atlas.nomic.ai/") helpText: qsTr('API key to use for Nomic Embed. Get one from the Atlas <a href="https://atlas.nomic.ai/cli-login">API keys page</a>.')
onLinkActivated: function(link) { Qt.openUrlExternally(link) }
} }
MyTextField { MyTextField {
id: apiKeyField id: apiKeyField
property bool isValid: validate()
onTextChanged: { isValid = validate(); }
function validate() { return /^(nk-[a-zA-Z0-9_-]{43})?$/.test(apiKeyField.text); }
placeholderText: "nk-" + "X".repeat(43)
text: MySettings.localDocsNomicAPIKey text: MySettings.localDocsNomicAPIKey
color: apiKeyField.acceptableInput ? theme.textColor : theme.textErrorColor color: apiKeyField.isValid ? theme.textColor : theme.textErrorColor
font.pixelSize: theme.fontSizeLarge font.pixelSize: theme.fontSizeLarge
Layout.alignment: Qt.AlignRight Layout.alignment: Qt.AlignRight
Layout.minimumWidth: 200 Layout.minimumWidth: 200
enabled: useNomicAPIBox.checked enabled: useNomicAPIBox.checked
validator: RegularExpressionValidator {
// may be empty
regularExpression: /|nk-[a-zA-Z0-9_-]{43}/
}
onEditingFinished: { onEditingFinished: {
MySettings.localDocsNomicAPIKey = apiKeyField.text; if (apiKeyField.isValid) {
MySettings.localDocsUseRemoteEmbed = useNomicAPIBox.checked && MySettings.localDocsNomicAPIKey !== ""; MySettings.localDocsNomicAPIKey = apiKeyField.text;
MySettings.localDocsUseRemoteEmbed = useNomicAPIBox.checked && MySettings.localDocsNomicAPIKey !== "";
}
focus = false; focus = false;
} }
Accessible.role: Accessible.EditableText Accessible.role: Accessible.EditableText

View File

@ -37,5 +37,11 @@ ColumnLayout {
onLinkActivated: function(link) { onLinkActivated: function(link) {
root.linkActivated(link); root.linkActivated(link);
} }
MouseArea {
anchors.fill: parent
acceptedButtons: Qt.NoButton // pass clicks to parent
cursorShape: parent.hoveredLink ? Qt.PointingHandCursor : Qt.ArrowCursor
}
} }
} }