feat: добавлен пункт "Использование" (#108)

Closes #70
This commit is contained in:
Maxim Slipenko 2024-02-03 17:57:49 +03:00 committed by GitHub
parent 30447a801a
commit aafa5a0ebb
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
30 changed files with 375 additions and 22 deletions

View File

@ -1,17 +0,0 @@
#preview-page {
margin-top: 0px;
margin-bottom: 0px;
}
#readme {
border: none;
}
#readme > .Box-header {
border: none;
display: none !important;
}
#readme > .Box-body {
border: none;
}

156
environment.yml Normal file
View File

@ -0,0 +1,156 @@
name: statapp
channels:
- conda-forge
- defaults
dependencies:
- _libgcc_mutex=0.1=conda_forge
- _openmp_mutex=4.5=2_gnu
- alsa-lib=1.2.10=hd590300_0
- attr=2.5.1=h166bdaf_1
- bzip2=1.0.8=hd590300_5
- ca-certificates=2024.2.2=hbcca054_0
- cairo=1.16.0=h6cf1ce9_1008
- dbus=1.13.6=h48d8840_2
- expat=2.5.0=hcb278e6_1
- font-ttf-dejavu-sans-mono=2.37=hab24e00_0
- font-ttf-inconsolata=3.000=h77eed37_0
- font-ttf-source-code-pro=2.038=h77eed37_0
- font-ttf-ubuntu=0.83=h77eed37_1
- fontconfig=2.14.2=h14ed4e7_0
- fonts-conda-ecosystem=1=0
- fonts-conda-forge=1=0
- freetype=2.12.1=h267a509_2
- gettext=0.21.1=h27087fc_0
- glib=2.68.4=h9c3ff4c_0
- glib-tools=2.68.4=h9c3ff4c_0
- graphite2=1.3.13=h58526e2_1001
- gst-plugins-base=1.18.4=h29181c9_0
- gstreamer=1.18.5=h76c114f_0
- harfbuzz=3.0.0=h83ec7ef_1
- icu=68.2=h9c3ff4c_0
- jpeg=9e=h166bdaf_2
- keyutils=1.6.1=h166bdaf_0
- krb5=1.19.3=h3790be6_0
- lame=3.100=h166bdaf_1003
- ld_impl_linux-64=2.38=h1181459_1
- libcap=2.69=h0f662aa_0
- libclang=11.1.0=default_ha53f305_1
- libclang13=14.0.6=default_h9986a30_1
- libcups=2.3.3=h3e49a29_2
- libedit=3.1.20191231=he28a2e2_2
- libevent=2.1.10=h9b69904_4
- libexpat=2.5.0=hcb278e6_1
- libffi=3.3=h58526e2_2
- libflac=1.4.3=h59595ed_0
- libgcc-ng=13.2.0=h807b86a_5
- libgcrypt=1.10.3=hd590300_0
- libglib=2.68.4=h3e27bee_0
- libgomp=13.2.0=h807b86a_5
- libgpg-error=1.47=h71f35ed_0
- libiconv=1.17=hd590300_2
- libjpeg-turbo=2.1.4=h166bdaf_0
- libllvm11=11.1.0=he0ac6c6_5
- libllvm14=14.0.6=hcd5def8_4
- libogg=1.3.4=h7f98852_1
- libopus=1.3.1=h7f98852_1
- libpng=1.6.42=h2797004_0
- libpq=13.8=hd77ab85_0
- libsndfile=1.2.2=hc60ed4a_1
- libsqlite=3.44.2=h2797004_0
- libstdcxx-ng=13.2.0=h7e041cc_5
- libsystemd0=255=h3516f8a_0
- libuuid=2.38.1=h0b41bf4_0
- libvorbis=1.3.7=h9c3ff4c_0
- libxcb=1.15=h0b41bf4_0
- libxkbcommon=1.0.3=he3ba5ed_0
- libxml2=2.9.12=h72842e0_0
- libxslt=1.1.33=h15afd5d_2
- libzlib=1.2.13=hd590300_5
- lz4-c=1.9.4=hcb278e6_0
- mpg123=1.32.4=h59595ed_0
- mysql-common=8.0.32=h14678bc_0
- mysql-libs=8.0.32=h54cf53e_0
- ncurses=6.4=h6a678d5_0
- nspr=4.35=h27087fc_0
- nss=3.97=h1d7d5a4_0
- openssl=1.1.1w=hd590300_0
- pcre=8.45=h9c3ff4c_0
- pcre2=10.42=hcad00b1_0
- pip=23.3.1=py38h06a4308_0
- pixman=0.43.2=h59595ed_0
- pthread-stubs=0.4=h36c2ea0_1001
- pyside2=5.13.2=py38h2009f50_7
- python=3.8.10=h49503c6_1_cpython
- python_abi=3.8=2_cp38
- qt=5.12.9=hda022c4_4
- readline=8.2=h5eee18b_0
- setuptools=68.2.2=py38h06a4308_0
- sqlite=3.41.2=h5eee18b_0
- tk=8.6.12=h1ccaba5_0
- wheel=0.41.2=py38h06a4308_0
- xcb-util=0.4.0=hd590300_1
- xcb-util-image=0.4.0=h8ee46fc_1
- xcb-util-keysyms=0.4.0=h8ee46fc_1
- xcb-util-renderutil=0.3.9=hd590300_1
- xcb-util-wm=0.4.1=h8ee46fc_1
- xkeyboard-config=2.40=hd590300_0
- xorg-kbproto=1.0.7=h7f98852_1002
- xorg-libice=1.1.1=hd590300_0
- xorg-libsm=1.2.4=h7391055_0
- xorg-libx11=1.8.7=h8ee46fc_0
- xorg-libxau=1.0.11=hd590300_0
- xorg-libxdmcp=1.1.3=h7f98852_0
- xorg-libxext=1.3.4=h0b41bf4_2
- xorg-libxrender=0.9.11=hd590300_0
- xorg-renderproto=0.11.1=h7f98852_1002
- xorg-xextproto=7.3.0=h0b41bf4_1003
- xorg-xf86vidmodeproto=2.3.1=h7f98852_1002
- xorg-xproto=7.0.31=h7f98852_1007
- xz=5.4.5=h5eee18b_0
- zlib=1.2.13=hd590300_5
- zstd=1.5.5=hfc55251_0
- pip:
- altgraph==0.17.4
- astroid==2.15.8
- cfgv==3.4.0
- contourpy==1.1.1
- cycler==0.12.1
- dill==0.3.7
- distlib==0.3.7
- filelock==3.12.4
- fonttools==4.43.1
- identify==2.5.30
- importlib-metadata==6.8.0
- importlib-resources==6.1.0
- isort==5.12.0
- kiwisolver==1.4.5
- lazy-object-proxy==1.9.0
- matplotlib==3.7.3
- mccabe==0.7.0
- mpmath==1.3.0
- nodeenv==1.8.0
- numpy==1.24.4
- packaging==23.2
- pandas==2.0.3
- pillow==9.5.0
- platformdirs==3.11.0
- pre-commit==3.5.0
- pyinstaller==6.1.0
- pyinstaller-hooks-contrib==2023.10
- pylint==2.17.7
- pyparsing==3.1.1
- python-dateutil==2.8.2
- pytz==2023.3.post1
- pyyaml==6.0.1
- setuptools-scm==8.0.4
- six==1.16.0
- statapp==0.10.2
- sympy==1.12
- tomli==2.0.1
- tomlkit==0.12.1
- typing-extensions==4.8.0
- tzdata==2023.3
- virtualenv==20.24.5
- wrapt==1.15.0
- zipp==3.17.0
prefix: /home/maxim/miniconda3/envs/statapp

View File

@ -17,7 +17,11 @@ parser = argparse.ArgumentParser()
parser.add_argument("--one-file", action="store_true") parser.add_argument("--one-file", action="store_true")
options = parser.parse_args() options = parser.parse_args()
datas = [('statapp/ui/images/*', 'ui/images')] datas = [
('statapp/ui/images/*', 'ui/images'),
('statapp/docs/files/*', 'docs/files'),
('statapp/docs/README.html', 'docs')
]
datas += copy_metadata('statapp') datas += copy_metadata('statapp')

View File

@ -26,15 +26,14 @@ from statapp.main_window import MainWindow
def main(): def main():
QtCore.QCoreApplication.setAttribute(QtCore.Qt.AA_ShareOpenGLContexts)
app = QApplication(sys.argv) app = QApplication(sys.argv)
translator = QtCore.QTranslator(app) translator = QtCore.QTranslator(app)
locale = QtCore.QLocale.system().name() locale = QtCore.QLocale.system().name()
path = QtCore.QLibraryInfo.location(QtCore.QLibraryInfo.TranslationsPath) path = QtCore.QLibraryInfo.location(QtCore.QLibraryInfo.TranslationsPath)
translator.load(f'qt_{locale}', path) translator.load(f'qt_{locale}', path)
translator.load(f'qtbase_{locale}', path) translator.load(f'qtbase_{locale}', path)
app.installTranslator(translator) app.installTranslator(translator)
window = MainWindow() window = MainWindow()
window.show() window.show()
return app.exec_() return app.exec_()

View File

@ -1,4 +1,23 @@
<!DOCTYPE html> <!DOCTYPE html>
<!--
-- Copyright (c) 2024 Maxim Slipenko, Eugene Lazurenko.
--
-- This file is part of Statapp
-- (see https://github.com/shizand/statapp).
--
-- This program is free software: you can redistribute it and/or modify
-- it under the terms of the GNU General Public License as published by
-- the Free Software Foundation, either version 3 of the License, or
-- (at your option) any later version.
--
-- This program is distributed in the hope that it will be useful,
-- but WITHOUT ANY WARRANTY; without even the implied warranty of
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-- GNU General Public License for more details.
--
-- You should have received a copy of the GNU General Public License
-- along with this program. If not, see <http://www.gnu.org/licenses/>.
-->
<html lang="en"> <html lang="en">
<head> <head>
<meta charset="utf-8" /> <meta charset="utf-8" />

View File

@ -1,3 +1,22 @@
<!--
Copyright (c) 2024 Maxim Slipenko, Eugene Lazurenko.
This file is part of Statapp
(see https://github.com/shizand/statapp).
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
-->
# Руководство пользователя для программы "Statapp" # Руководство пользователя для программы "Statapp"
## Условные обозначения ## Условные обозначения

View File

Before

Width:  |  Height:  |  Size: 7.8 KiB

After

Width:  |  Height:  |  Size: 7.8 KiB

View File

Before

Width:  |  Height:  |  Size: 7.4 KiB

After

Width:  |  Height:  |  Size: 7.4 KiB

View File

Before

Width:  |  Height:  |  Size: 9.7 KiB

After

Width:  |  Height:  |  Size: 9.7 KiB

View File

Before

Width:  |  Height:  |  Size: 30 KiB

After

Width:  |  Height:  |  Size: 30 KiB

View File

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 16 KiB

View File

Before

Width:  |  Height:  |  Size: 3.4 KiB

After

Width:  |  Height:  |  Size: 3.4 KiB

View File

Before

Width:  |  Height:  |  Size: 2.5 KiB

After

Width:  |  Height:  |  Size: 2.5 KiB

36
statapp/docs/grip.css Normal file
View File

@ -0,0 +1,36 @@
/*
Copyright (c) 2024 Maxim Slipenko, Eugene Lazurenko.
This file is part of Statapp
(see https://github.com/shizand/statapp).
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#preview-page {
margin-top: 0px;
margin-bottom: 0px;
}
#readme {
border: none;
}
#readme > .Box-header {
border: none;
display: none !important;
}
#readme > .Box-body {
border: none;
}

View File

@ -33,6 +33,7 @@ from statapp.about_window import AboutWindow
from statapp.models.fileslc_model import FileSLCModel from statapp.models.fileslc_model import FileSLCModel
from statapp.polynoms.squared_polynom_window import SquaredPolynomWindow from statapp.polynoms.squared_polynom_window import SquaredPolynomWindow
from statapp.ui.ui_main_window import Ui_MainWindow from statapp.ui.ui_main_window import Ui_MainWindow
from statapp.usage_window import UsageWindow
from statapp.utils import buildMessageBox, addIcon, FloatDelegate, onError from statapp.utils import buildMessageBox, addIcon, FloatDelegate, onError
from statapp.variance_analysis import VarianceAnalysisWindow from statapp.variance_analysis import VarianceAnalysisWindow
from statapp.correlation_analysis import CorrelationAnalysisWindow from statapp.correlation_analysis import CorrelationAnalysisWindow
@ -61,6 +62,7 @@ class MainWindow(QMainWindow):
] ]
self.aboutWindow = None self.aboutWindow = None
self.usageWindow = None
self.isDataChanged = False self.isDataChanged = False
self.model = InputValuesModel() self.model = InputValuesModel()
@ -210,6 +212,11 @@ class MainWindow(QMainWindow):
self.aboutWindow = AboutWindow() self.aboutWindow = AboutWindow()
self.aboutWindow.show() self.aboutWindow.show()
@Slot()
def on_usageaction_triggered(self):
self.usageWindow = UsageWindow()
self.usageWindow.show()
@Slot() @Slot()
def on_varianceAnalysisAction_triggered(self): def on_varianceAnalysisAction_triggered(self):
try: try:

View File

@ -40,7 +40,7 @@
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>800</width> <width>800</width>
<height>21</height> <height>22</height>
</rect> </rect>
</property> </property>
<widget class="QMenu" name="filemenu"> <widget class="QMenu" name="filemenu">
@ -77,6 +77,7 @@
<property name="title"> <property name="title">
<string>Справка</string> <string>Справка</string>
</property> </property>
<addaction name="usageaction"/>
<addaction name="aboutmenuaction"/> <addaction name="aboutmenuaction"/>
</widget> </widget>
<addaction name="filemenu"/> <addaction name="filemenu"/>
@ -141,6 +142,11 @@
<string>Преобразования</string> <string>Преобразования</string>
</property> </property>
</action> </action>
<action name="usageaction">
<property name="text">
<string>Использование</string>
</property>
</action>
</widget> </widget>
<resources/> <resources/>
<connections/> <connections/>

View File

@ -60,6 +60,8 @@ class Ui_MainWindow(object):
self.squaredPolynomAction.setObjectName(u"squaredPolynomAction") self.squaredPolynomAction.setObjectName(u"squaredPolynomAction")
self.transformPolynomAction = QAction(MainWindow) self.transformPolynomAction = QAction(MainWindow)
self.transformPolynomAction.setObjectName(u"transformPolynomAction") self.transformPolynomAction.setObjectName(u"transformPolynomAction")
self.usageaction = QAction(MainWindow)
self.usageaction.setObjectName(u"usageaction")
self.centralwidget = QWidget(MainWindow) self.centralwidget = QWidget(MainWindow)
self.centralwidget.setObjectName(u"centralwidget") self.centralwidget.setObjectName(u"centralwidget")
self.gridLayout = QGridLayout(self.centralwidget) self.gridLayout = QGridLayout(self.centralwidget)
@ -79,7 +81,7 @@ class Ui_MainWindow(object):
MainWindow.setCentralWidget(self.centralwidget) MainWindow.setCentralWidget(self.centralwidget)
self.menubar = QMenuBar(MainWindow) self.menubar = QMenuBar(MainWindow)
self.menubar.setObjectName(u"menubar") self.menubar.setObjectName(u"menubar")
self.menubar.setGeometry(QRect(0, 0, 800, 21)) self.menubar.setGeometry(QRect(0, 0, 800, 22))
self.filemenu = QMenu(self.menubar) self.filemenu = QMenu(self.menubar)
self.filemenu.setObjectName(u"filemenu") self.filemenu.setObjectName(u"filemenu")
self.generatemenu = QMenu(self.menubar) self.generatemenu = QMenu(self.menubar)
@ -110,6 +112,7 @@ class Ui_MainWindow(object):
self.modelmenu.addAction(self.linearPolynomAction) self.modelmenu.addAction(self.linearPolynomAction)
self.modelmenu.addAction(self.squaredPolynomAction) self.modelmenu.addAction(self.squaredPolynomAction)
self.modelmenu.addAction(self.transformPolynomAction) self.modelmenu.addAction(self.transformPolynomAction)
self.helpmenu.addAction(self.usageaction)
self.helpmenu.addAction(self.aboutmenuaction) self.helpmenu.addAction(self.aboutmenuaction)
self.retranslateUi(MainWindow) self.retranslateUi(MainWindow)
@ -130,6 +133,7 @@ class Ui_MainWindow(object):
self.linearPolynomAction.setText(QCoreApplication.translate("MainWindow", u"\u041b\u0438\u043d\u0435\u0439\u043d\u044b\u0439 \u043f\u043e\u043b\u0438\u043d\u043e\u043c", None)) self.linearPolynomAction.setText(QCoreApplication.translate("MainWindow", u"\u041b\u0438\u043d\u0435\u0439\u043d\u044b\u0439 \u043f\u043e\u043b\u0438\u043d\u043e\u043c", None))
self.squaredPolynomAction.setText(QCoreApplication.translate("MainWindow", u"\u041a\u0432\u0430\u0434\u0440\u0430\u0442\u0438\u0447\u043d\u044b\u0439 \u043f\u043e\u043b\u0438\u043d\u043e\u043c", None)) self.squaredPolynomAction.setText(QCoreApplication.translate("MainWindow", u"\u041a\u0432\u0430\u0434\u0440\u0430\u0442\u0438\u0447\u043d\u044b\u0439 \u043f\u043e\u043b\u0438\u043d\u043e\u043c", None))
self.transformPolynomAction.setText(QCoreApplication.translate("MainWindow", u"\u041f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f", None)) self.transformPolynomAction.setText(QCoreApplication.translate("MainWindow", u"\u041f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f", None))
self.usageaction.setText(QCoreApplication.translate("MainWindow", u"\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435", None))
self.label.setText(QCoreApplication.translate("MainWindow", u"\u0421\u0422\u0410\u0422\u0418\u0421\u0422\u0418\u0427\u0415\u0421\u041a\u0418\u0415 \u0414\u0410\u041d\u041d\u042b\u0415", None)) self.label.setText(QCoreApplication.translate("MainWindow", u"\u0421\u0422\u0410\u0422\u0418\u0421\u0422\u0418\u0427\u0415\u0421\u041a\u0418\u0415 \u0414\u0410\u041d\u041d\u042b\u0415", None))
self.filemenu.setTitle(QCoreApplication.translate("MainWindow", u"\u0424\u0430\u0439\u043b", None)) self.filemenu.setTitle(QCoreApplication.translate("MainWindow", u"\u0424\u0430\u0439\u043b", None))
self.generatemenu.setTitle(QCoreApplication.translate("MainWindow", u"\u0413\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044f \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u0435\u0439", None)) self.generatemenu.setTitle(QCoreApplication.translate("MainWindow", u"\u0413\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044f \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u0435\u0439", None))

56
statapp/ui/ui_usage_window.py generated Normal file
View File

@ -0,0 +1,56 @@
# -*- coding: utf-8 -*-
#
# Copyright (c) 2024 Maxim Slipenko, Eugene Lazurenko.
#
# This file is part of Statapp
# (see https://github.com/shizand/statapp).
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
################################################################################
## Form generated from reading UI file 'usage_window.ui'
##
## Created by: Qt User Interface Compiler version 5.15.2
##
## WARNING! All changes made in this file will be lost when recompiling UI file!
################################################################################
from PySide2.QtCore import *
from PySide2.QtGui import *
from PySide2.QtWidgets import *
class Ui_UsageWindow(object):
def setupUi(self, UsageWindow):
if not UsageWindow.objectName():
UsageWindow.setObjectName(u"UsageWindow")
UsageWindow.resize(400, 300)
self.gridLayout = QGridLayout(UsageWindow)
self.gridLayout.setObjectName(u"gridLayout")
self.browserContainer = QVBoxLayout()
self.browserContainer.setObjectName(u"browserContainer")
self.gridLayout.addLayout(self.browserContainer, 0, 0, 1, 1)
self.retranslateUi(UsageWindow)
QMetaObject.connectSlotsByName(UsageWindow)
# setupUi
def retranslateUi(self, UsageWindow):
UsageWindow.setWindowTitle(QCoreApplication.translate("UsageWindow", u"\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435", None))
# retranslateUi

View File

@ -0,0 +1,24 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>UsageWindow</class>
<widget class="QDialog" name="UsageWindow">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>400</width>
<height>300</height>
</rect>
</property>
<property name="windowTitle">
<string>Использование</string>
</property>
<layout class="QGridLayout" name="gridLayout">
<item row="0" column="0">
<layout class="QVBoxLayout" name="browserContainer"/>
</item>
</layout>
</widget>
<resources/>
<connections/>
</ui>

40
statapp/usage_window.py Normal file
View File

@ -0,0 +1,40 @@
#
# Copyright (c) 2024 Maxim Slipenko, Eugene Lazurenko.
#
# This file is part of Statapp
# (see https://github.com/shizand/statapp).
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
from PySide2.QtCore import QUrl
from PySide2.QtWebEngineWidgets import QWebEngineView
from PySide2.QtWidgets import QMainWindow, QVBoxLayout, QWidget
from statapp.utils import addIcon, resourcePath
class UsageWindow(QMainWindow):
def __init__(self):
super().__init__()
self.setWindowTitle("Использование")
addIcon(self)
layout = QVBoxLayout()
self.browser = QWebEngineView()
layout.addWidget(self.browser)
self.browser.load(QUrl.fromLocalFile(resourcePath("docs/README.html")))
widget = QWidget()
widget.setLayout(layout)
self.setCentralWidget(widget)