mirror of
https://github.com/nomic-ai/gpt4all.git
synced 2025-04-28 11:44:17 +00:00
Signed-off-by: Adam Treat <treat.adam@gmail.com> Signed-off-by: AT <manyoso@users.noreply.github.com> Signed-off-by: Jared Van Bortel <jared@nomic.ai> Co-authored-by: Jared Van Bortel <jared@nomic.ai>
165 lines
4.3 KiB
QML
165 lines
4.3 KiB
QML
import QtCore
|
|
import QtQuick
|
|
import QtQuick.Controls
|
|
import QtQuick.Controls.Basic
|
|
import QtQuick.Layouts
|
|
import QtQuick.Dialogs
|
|
import Qt.labs.folderlistmodel
|
|
import Qt5Compat.GraphicalEffects
|
|
import llm
|
|
import chatlistmodel
|
|
import download
|
|
import modellist
|
|
import network
|
|
import gpt4all
|
|
import mysettings
|
|
import localdocs
|
|
|
|
Rectangle {
|
|
id: addModelView
|
|
|
|
Theme {
|
|
id: theme
|
|
}
|
|
|
|
color: theme.viewBackground
|
|
signal modelsViewRequested()
|
|
|
|
ToastManager {
|
|
id: messageToast
|
|
}
|
|
|
|
PopupDialog {
|
|
id: downloadingErrorPopup
|
|
anchors.centerIn: parent
|
|
shouldTimeOut: false
|
|
}
|
|
|
|
ColumnLayout {
|
|
id: mainArea
|
|
anchors.left: parent.left
|
|
anchors.right: parent.right
|
|
anchors.top: parent.top
|
|
anchors.bottom: parent.bottom
|
|
anchors.margins: 30
|
|
spacing: 10
|
|
|
|
ColumnLayout {
|
|
Layout.fillWidth: true
|
|
Layout.alignment: Qt.AlignTop
|
|
spacing: 10
|
|
|
|
MyButton {
|
|
id: backButton
|
|
Layout.alignment: Qt.AlignTop | Qt.AlignLeft
|
|
text: qsTr("\u2190 Existing Models")
|
|
|
|
borderWidth: 0
|
|
backgroundColor: theme.lighterButtonBackground
|
|
backgroundColorHovered: theme.lighterButtonBackgroundHovered
|
|
backgroundRadius: 5
|
|
padding: 15
|
|
topPadding: 8
|
|
bottomPadding: 8
|
|
textColor: theme.lighterButtonForeground
|
|
fontPixelSize: theme.fontSizeLarge
|
|
fontPixelBold: true
|
|
|
|
onClicked: {
|
|
modelsViewRequested()
|
|
}
|
|
}
|
|
|
|
Text {
|
|
id: welcome
|
|
text: qsTr("Explore Models")
|
|
font.pixelSize: theme.fontSizeBanner
|
|
color: theme.titleTextColor
|
|
}
|
|
}
|
|
|
|
RowLayout {
|
|
id: bar
|
|
implicitWidth: 600
|
|
spacing: 10
|
|
MyTabButton {
|
|
text: qsTr("GPT4All")
|
|
isSelected: gpt4AllModelView.isShown()
|
|
onPressed: {
|
|
gpt4AllModelView.show();
|
|
}
|
|
}
|
|
MyTabButton {
|
|
text: qsTr("Remote Providers")
|
|
isSelected: remoteModelView.isShown()
|
|
onPressed: {
|
|
remoteModelView.show();
|
|
}
|
|
}
|
|
MyTabButton {
|
|
text: qsTr("HuggingFace")
|
|
isSelected: huggingfaceModelView.isShown()
|
|
onPressed: {
|
|
huggingfaceModelView.show();
|
|
}
|
|
}
|
|
}
|
|
|
|
StackLayout {
|
|
id: stackLayout
|
|
Layout.fillWidth: true
|
|
Layout.fillHeight: true
|
|
|
|
AddGPT4AllModelView {
|
|
id: gpt4AllModelView
|
|
Layout.fillWidth: true
|
|
Layout.fillHeight: true
|
|
|
|
function show() {
|
|
stackLayout.currentIndex = 0;
|
|
}
|
|
function isShown() {
|
|
return stackLayout.currentIndex === 0;
|
|
}
|
|
}
|
|
|
|
AddRemoteModelView {
|
|
id: remoteModelView
|
|
Layout.fillWidth: true
|
|
Layout.fillHeight: true
|
|
|
|
function show() {
|
|
stackLayout.currentIndex = 1;
|
|
}
|
|
function isShown() {
|
|
return stackLayout.currentIndex === 1;
|
|
}
|
|
}
|
|
|
|
AddHFModelView {
|
|
id: huggingfaceModelView
|
|
Layout.fillWidth: true
|
|
Layout.fillHeight: true
|
|
// FIXME: This generates a warning and should not be used inside a layout, but without
|
|
// it the text field inside this qml does not display at full width so it looks like
|
|
// a bug in stacklayout
|
|
anchors.fill: parent
|
|
|
|
function show() {
|
|
stackLayout.currentIndex = 2;
|
|
}
|
|
function isShown() {
|
|
return stackLayout.currentIndex === 2;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
Connections {
|
|
target: Download
|
|
function onToastMessage(message) {
|
|
messageToast.show(message);
|
|
}
|
|
}
|
|
}
|