mirror of
https://github.com/Rushilwiz/spaceout.git
synced 2025-04-08 14:00:16 -04:00
initialized desktop app and full login system along with STT
This commit is contained in:
parent
e8547edf0e
commit
cf5e75e8bd
289
app/login.ui
Executable file
289
app/login.ui
Executable file
|
@ -0,0 +1,289 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ui version="4.0">
|
||||
<class>Form</class>
|
||||
<widget class="QWidget" name="Form">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>500</width>
|
||||
<height>756</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string>Form</string>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="verticalLayout" stretch="0">
|
||||
<property name="leftMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="topMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="rightMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="bottomMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<item>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_3" stretch="0">
|
||||
<property name="spacing">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="QWidget" name="widget" native="true">
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>16777215</width>
|
||||
<height>16777215</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="styleSheet">
|
||||
<string notr="true">.QWidget{background-color: rgb(0,0,0);}</string>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="verticalLayout_2">
|
||||
<property name="leftMargin">
|
||||
<number>9</number>
|
||||
</property>
|
||||
<property name="topMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="rightMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="bottomMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<item>
|
||||
<layout class="QVBoxLayout" name="verticalLayout_3">
|
||||
<property name="topMargin">
|
||||
<number>15</number>
|
||||
</property>
|
||||
<item>
|
||||
<spacer name="verticalSpacer_3">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Vertical</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>20</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item alignment="Qt::AlignHCenter">
|
||||
<widget class="QLabel" name="label">
|
||||
<property name="text">
|
||||
<string><html><head/><body><p><img src=":/src/spaceout.png"/></p></body></html></string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QFormLayout" name="formLayout_2">
|
||||
<property name="leftMargin">
|
||||
<number>50</number>
|
||||
</property>
|
||||
<property name="topMargin">
|
||||
<number>35</number>
|
||||
</property>
|
||||
<property name="rightMargin">
|
||||
<number>59</number>
|
||||
</property>
|
||||
<item row="1" column="0">
|
||||
<widget class="QLabel" name="label_2">
|
||||
<property name="styleSheet">
|
||||
<string notr="true">color: rgb(231, 231, 231);
|
||||
font: 15pt "Verdana";</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string><html><head/><body><p><img src=":/src/user.png"/></p></body></html></string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="1">
|
||||
<widget class="QLineEdit" name="lineEdit">
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>0</width>
|
||||
<height>40</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="styleSheet">
|
||||
<string notr="true">QLineEdit {
|
||||
color: rgb(231, 231, 231);
|
||||
font: 15pt "Verdana";
|
||||
border: None;
|
||||
border-bottom-color: white;
|
||||
border-radius: 10px;
|
||||
padding: 0 8px;
|
||||
background: rgb(25, 25, 40);
|
||||
selection-background-color: darkgray;
|
||||
}</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="0" colspan="2">
|
||||
<widget class="Line" name="line">
|
||||
<property name="styleSheet">
|
||||
<string notr="true">border: 2px solid white;</string>
|
||||
</property>
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="5" column="0">
|
||||
<widget class="QLabel" name="label_3">
|
||||
<property name="styleSheet">
|
||||
<string notr="true">color: rgb(231, 231, 231);
|
||||
font: 15pt "Verdana";</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string><html><head/><body><p><img src=":/src/password.png"/></p></body></html></string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="5" column="1">
|
||||
<widget class="QLineEdit" name="lineEdit_2">
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>0</width>
|
||||
<height>40</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="styleSheet">
|
||||
<string notr="true">QLineEdit {
|
||||
color: orange;
|
||||
font: 15pt "Verdana";
|
||||
border: None;
|
||||
border-bottom-color: white;
|
||||
border-radius: 10px;
|
||||
padding: 0 8px;
|
||||
background: rgb(25, 25, 40);
|
||||
selection-background-color: darkgray;
|
||||
}</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="6" column="0" colspan="2">
|
||||
<widget class="Line" name="line_2">
|
||||
<property name="styleSheet">
|
||||
<string notr="true">border: 2px solid #03EEF3;</string>
|
||||
</property>
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="7" column="0" colspan="2">
|
||||
<spacer name="verticalSpacer">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Vertical</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>20</width>
|
||||
<height>40</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item row="8" column="0" colspan="2">
|
||||
<widget class="QPushButton" name="pushButton">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>0</width>
|
||||
<height>60</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="autoFillBackground">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="styleSheet">
|
||||
<string notr="true">color: rgb(231, 231, 231);
|
||||
font: 17pt "Verdana";
|
||||
border: 2px solid #03EEF3;
|
||||
padding: 5px;
|
||||
border-radius: 3px;
|
||||
opacity: 200;
|
||||
</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Sign In</string>
|
||||
</property>
|
||||
<property name="autoDefault">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="default">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="flat">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="9" column="0" colspan="2">
|
||||
<widget class="QPushButton" name="pushButton_2">
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>0</width>
|
||||
<height>60</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="styleSheet">
|
||||
<string notr="true">color: rgb(231, 231, 231);
|
||||
font: 17pt "Verdana";
|
||||
border: 2px solid #03EEF3;
|
||||
padding: 5px;
|
||||
border-radius: 3px;
|
||||
opacity: 200;
|
||||
</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Register</string>
|
||||
</property>
|
||||
<property name="default">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="flat">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<spacer name="verticalSpacer_2">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Vertical</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>20</width>
|
||||
<height>40</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<resources>
|
||||
<include location="spaceout.qrc"/>
|
||||
</resources>
|
||||
<connections/>
|
||||
</ui>
|
BIN
app/spaceout.png
Executable file
BIN
app/spaceout.png
Executable file
Binary file not shown.
After Width: | Height: | Size: 207 KiB |
198
app/spaceout.py
Executable file
198
app/spaceout.py
Executable file
|
@ -0,0 +1,198 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
|
||||
# Form implementation generated from reading ui file '.\login.ui'
|
||||
#
|
||||
# Created by: PyQt5 UI code generator 5.15.2
|
||||
#
|
||||
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
|
||||
# run again. Do not edit this file unless you know what you are doing.
|
||||
|
||||
|
||||
from PyQt5 import QtCore, QtGui, QtWidgets
|
||||
from PyQt5.QtWidgets import QDialog, QPushButton, QVBoxLayout, QApplication, QSplashScreen
|
||||
|
||||
import webbrowser
|
||||
import requests
|
||||
import keyring
|
||||
from requests.auth import HTTPBasicAuth
|
||||
|
||||
API_ENDPOINT = 'http://localhost:8000/api/'
|
||||
|
||||
class LoginForm(object):
|
||||
def setupUi(self, Form):
|
||||
Form.setObjectName("SpaceOut Login")
|
||||
Form.resize(500, 756)
|
||||
self.verticalLayout = QtWidgets.QVBoxLayout(Form)
|
||||
self.verticalLayout.setContentsMargins(0, 0, 0, 0)
|
||||
self.verticalLayout.setObjectName("verticalLayout")
|
||||
self.horizontalLayout_3 = QtWidgets.QHBoxLayout()
|
||||
self.horizontalLayout_3.setSpacing(0)
|
||||
self.horizontalLayout_3.setObjectName("horizontalLayout_3")
|
||||
self.widget = QtWidgets.QWidget(Form)
|
||||
self.widget.setMaximumSize(QtCore.QSize(16777215, 16777215))
|
||||
self.widget.setStyleSheet(".QWidget{background-color: rgb(0,0,0);}")
|
||||
self.widget.setObjectName("widget")
|
||||
self.verticalLayout_2 = QtWidgets.QVBoxLayout(self.widget)
|
||||
self.verticalLayout_2.setContentsMargins(9, 0, 0, 0)
|
||||
self.verticalLayout_2.setObjectName("verticalLayout_2")
|
||||
self.verticalLayout_3 = QtWidgets.QVBoxLayout()
|
||||
self.verticalLayout_3.setContentsMargins(-1, 15, -1, -1)
|
||||
self.verticalLayout_3.setObjectName("verticalLayout_3")
|
||||
spacerItem = QtWidgets.QSpacerItem(20, 20, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
|
||||
self.verticalLayout_3.addItem(spacerItem)
|
||||
self.label = QtWidgets.QLabel(self.widget)
|
||||
self.label.setObjectName("label")
|
||||
self.verticalLayout_3.addWidget(self.label, 0, QtCore.Qt.AlignHCenter)
|
||||
self.formLayout_2 = QtWidgets.QFormLayout()
|
||||
self.formLayout_2.setContentsMargins(50, 35, 59, -1)
|
||||
self.formLayout_2.setObjectName("formLayout_2")
|
||||
self.label_2 = QtWidgets.QLabel(self.widget)
|
||||
self.label_2.setStyleSheet("color: rgb(231, 231, 231);\n"
|
||||
"font: 15pt \"Verdana\";")
|
||||
self.label_2.setObjectName("label_2")
|
||||
self.formLayout_2.setWidget(1, QtWidgets.QFormLayout.LabelRole, self.label_2)
|
||||
self.username = QtWidgets.QLineEdit(self.widget)
|
||||
self.username.setMinimumSize(QtCore.QSize(0, 40))
|
||||
self.username.setStyleSheet("QLineEdit {\n"
|
||||
" color: rgb(231, 231, 231);\n"
|
||||
" font: 15pt \"Verdana\";\n"
|
||||
" border: None;\n"
|
||||
" border-bottom-color: white;\n"
|
||||
" border-radius: 10px;\n"
|
||||
" padding: 0 8px;\n"
|
||||
" background: rgb(25, 25, 40);\n"
|
||||
" selection-background-color: darkgray;\n"
|
||||
"}")
|
||||
self.username.setObjectName("lineEdit")
|
||||
self.formLayout_2.setWidget(1, QtWidgets.QFormLayout.FieldRole, self.username)
|
||||
self.line = QtWidgets.QFrame(self.widget)
|
||||
self.line.setStyleSheet("border: 2px solid white;")
|
||||
self.line.setFrameShape(QtWidgets.QFrame.HLine)
|
||||
self.line.setFrameShadow(QtWidgets.QFrame.Sunken)
|
||||
self.line.setObjectName("line")
|
||||
self.formLayout_2.setWidget(3, QtWidgets.QFormLayout.SpanningRole, self.line)
|
||||
self.label_3 = QtWidgets.QLabel(self.widget)
|
||||
self.label_3.setStyleSheet("color: rgb(231, 231, 231);\n"
|
||||
"font: 15pt \"Verdana\";")
|
||||
self.label_3.setObjectName("label_3")
|
||||
self.formLayout_2.setWidget(5, QtWidgets.QFormLayout.LabelRole, self.label_3)
|
||||
self.password = QtWidgets.QLineEdit(self.widget)
|
||||
self.password.setMinimumSize(QtCore.QSize(0, 40))
|
||||
self.password.setStyleSheet("QLineEdit {\n"
|
||||
" color: orange;\n"
|
||||
" font: 15pt \"Verdana\";\n"
|
||||
" border: None;\n"
|
||||
" border-bottom-color: white;\n"
|
||||
" border-radius: 10px;\n"
|
||||
" padding: 0 8px;\n"
|
||||
" background: rgb(25, 25, 40);\n"
|
||||
" selection-background-color: darkgray;\n"
|
||||
"}")
|
||||
self.password.setObjectName("password")
|
||||
self.password.setEchoMode(QtWidgets.QLineEdit.Password)
|
||||
self.formLayout_2.setWidget(5, QtWidgets.QFormLayout.FieldRole, self.password)
|
||||
self.line_2 = QtWidgets.QFrame(self.widget)
|
||||
self.line_2.setStyleSheet("border: 2px solid #03EEF3;")
|
||||
self.line_2.setFrameShape(QtWidgets.QFrame.HLine)
|
||||
self.line_2.setFrameShadow(QtWidgets.QFrame.Sunken)
|
||||
self.line_2.setObjectName("line_2")
|
||||
self.formLayout_2.setWidget(6, QtWidgets.QFormLayout.SpanningRole, self.line_2)
|
||||
spacerItem1 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
|
||||
self.formLayout_2.setItem(7, QtWidgets.QFormLayout.SpanningRole, spacerItem1)
|
||||
self.login = QtWidgets.QPushButton(self.widget)
|
||||
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Fixed)
|
||||
sizePolicy.setHorizontalStretch(0)
|
||||
sizePolicy.setVerticalStretch(0)
|
||||
sizePolicy.setHeightForWidth(self.login.sizePolicy().hasHeightForWidth())
|
||||
self.login.setSizePolicy(sizePolicy)
|
||||
self.login.setMinimumSize(QtCore.QSize(0, 60))
|
||||
self.login.setAutoFillBackground(False)
|
||||
self.login.setStyleSheet("color: rgb(231, 231, 231);\n"
|
||||
"font: 17pt \"Verdana\";\n"
|
||||
"border: 2px solid #03EEF3;\n"
|
||||
"padding: 5px;\n"
|
||||
"border-radius: 3px;\n"
|
||||
"opacity: 200;\n"
|
||||
"")
|
||||
self.login.setAutoDefault(False)
|
||||
self.login.setDefault(False)
|
||||
self.login.setFlat(False)
|
||||
self.login.setObjectName("login")
|
||||
self.formLayout_2.setWidget(8, QtWidgets.QFormLayout.SpanningRole, self.login)
|
||||
self.register = QtWidgets.QPushButton(self.widget)
|
||||
self.register.setMinimumSize(QtCore.QSize(0, 60))
|
||||
self.register.setStyleSheet("color: rgb(231, 231, 231);\n"
|
||||
"font: 17pt \"Verdana\";\n"
|
||||
"border: 2px solid #03EEF3;\n"
|
||||
"padding: 5px;\n"
|
||||
"border-radius: 3px;\n"
|
||||
"opacity: 200;\n"
|
||||
"")
|
||||
self.register.setDefault(False)
|
||||
self.register.setFlat(False)
|
||||
self.register.setObjectName("register")
|
||||
|
||||
self.register.clicked.connect(self.open_register_link)
|
||||
self.login.clicked.connect(self.check_password)
|
||||
|
||||
self.formLayout_2.setWidget(9, QtWidgets.QFormLayout.SpanningRole, self.register)
|
||||
self.verticalLayout_3.addLayout(self.formLayout_2)
|
||||
spacerItem2 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
|
||||
self.verticalLayout_3.addItem(spacerItem2)
|
||||
self.verticalLayout_2.addLayout(self.verticalLayout_3)
|
||||
self.horizontalLayout_3.addWidget(self.widget)
|
||||
self.verticalLayout.addLayout(self.horizontalLayout_3)
|
||||
|
||||
self.retranslateUi(Form)
|
||||
QtCore.QMetaObject.connectSlotsByName(Form)
|
||||
|
||||
def open_register_link(self):
|
||||
webbrowser.open('https://donot.space/out')
|
||||
|
||||
def check_password (self):
|
||||
QApplication.setOverrideCursor(QtCore.Qt.WaitCursor)
|
||||
r = requests.get(f'{API_ENDPOINT}profile', auth=HTTPBasicAuth(str(self.username.text()), str(self.password.text())))
|
||||
QApplication.restoreOverrideCursor()
|
||||
|
||||
if r.ok:
|
||||
keyring.set_password("spaceout", str(self.username.text()), str(self.password.text()))
|
||||
f = open('.userinfo', 'w')
|
||||
f.write(self.username.text())
|
||||
f.close()
|
||||
app.quit()
|
||||
else:
|
||||
msg = QtWidgets.QMessageBox()
|
||||
msg.setText('Incorrect Login')
|
||||
msg.exec_()
|
||||
|
||||
def retranslateUi(self, Form):
|
||||
_translate = QtCore.QCoreApplication.translate
|
||||
Form.setWindowTitle(_translate("Form", "Form"))
|
||||
self.label.setText(_translate("Form", "<html><head/><body><p><img src=\":/src/spaceout.png\"/></p></body></html>"))
|
||||
self.label_2.setText(_translate("Form", "<html><head/><body><p><img src=\":/src/user.png\"/></p></body></html>"))
|
||||
self.label_3.setText(_translate("Form", "<html><head/><body><p><img src=\":/src/password.png\"/></p></body></html>"))
|
||||
self.login.setText(_translate("Form", "Sign In"))
|
||||
self.register.setText(_translate("Form", "Register"))
|
||||
|
||||
import spaceout_rc
|
||||
|
||||
if __name__ == "__main__":
|
||||
import sys
|
||||
app = QtWidgets.QApplication(sys.argv)
|
||||
try:
|
||||
f = open('.userinfo')
|
||||
username = f.read()
|
||||
f.close()
|
||||
password = keyring.get_password('spaceout', username)
|
||||
r = requests.get(f'{API_ENDPOINT}profile', auth=HTTPBasicAuth(username, password))
|
||||
if not r.ok:
|
||||
raise Exception
|
||||
|
||||
except:
|
||||
Form = QtWidgets.QWidget()
|
||||
ui = LoginForm()
|
||||
ui.setupUi(Form)
|
||||
Form.show()
|
||||
|
||||
|
||||
sys.exit(app.exec_())
|
7
app/spaceout.qrc
Executable file
7
app/spaceout.qrc
Executable file
|
@ -0,0 +1,7 @@
|
|||
<RCC>
|
||||
<qresource prefix="src">
|
||||
<file>user.png</file>
|
||||
<file>password.png</file>
|
||||
<file>spaceout.png</file>
|
||||
</qresource>
|
||||
</RCC>
|
13534
app/spaceout_rc.py
Executable file
13534
app/spaceout_rc.py
Executable file
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user