From bae49b5fccfc1a336c41f8eec99f67322d852d8e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jakub=20=C5=A0tercl?= <Jakub Štercl> Date: Sun, 12 Mar 2017 18:09:19 +0100 Subject: [PATCH] mend --- Implementation/.gitignore => .gitignore | 0 .../Nov\303\275 textov\303\275 dokument.txt" | 0 Implementace/controllers/base_controller.py | 5 ++ .../controllers/mainwindow_controller.py | 20 ++++++ Implementace/database.py | 18 +++++ Implementace/database_create.py | 33 +++++++++ Implementace/main.py | 17 +++++ Implementace/model/group.py | 6 ++ Implementace/windows/mainwindow.py | 59 ++++++++++++++++ Implementace/windows/qt/mainwindow.ui | 69 +++++++++++++++++++ 10 files changed, 227 insertions(+) rename Implementation/.gitignore => .gitignore (100%) create mode 100644 "Implementace/Nov\303\275 textov\303\275 dokument.txt" create mode 100644 Implementace/controllers/base_controller.py create mode 100644 Implementace/controllers/mainwindow_controller.py create mode 100644 Implementace/database.py create mode 100644 Implementace/database_create.py create mode 100644 Implementace/main.py create mode 100644 Implementace/model/group.py create mode 100644 Implementace/windows/mainwindow.py create mode 100644 Implementace/windows/qt/mainwindow.ui diff --git a/Implementation/.gitignore b/.gitignore similarity index 100% rename from Implementation/.gitignore rename to .gitignore diff --git "a/Implementace/Nov\303\275 textov\303\275 dokument.txt" "b/Implementace/Nov\303\275 textov\303\275 dokument.txt" new file mode 100644 index 0000000..e69de29 diff --git a/Implementace/controllers/base_controller.py b/Implementace/controllers/base_controller.py new file mode 100644 index 0000000..809d6a7 --- /dev/null +++ b/Implementace/controllers/base_controller.py @@ -0,0 +1,5 @@ + + +class BaseController: + def __init__(self, db): + self.db = db diff --git a/Implementace/controllers/mainwindow_controller.py b/Implementace/controllers/mainwindow_controller.py new file mode 100644 index 0000000..4445a54 --- /dev/null +++ b/Implementace/controllers/mainwindow_controller.py @@ -0,0 +1,20 @@ +from controllers.base_controller import BaseController +from windows import mainwindow +from PyQt5 import QtWidgets as Qt + + +class Mainwindow(Qt.QMainWindow, mainwindow.Ui_MainWindow, BaseController): + def __init__(self, db, parent=None): + super(Mainwindow, self).__init__(parent) + BaseController.__init__(self, db) + self.setupUi(self) + print(self.db.get_groups()) + for group in self.db.get_groups(): + self.listGroups.addItem(group.name) + self.listGroups.currentItemChanged.connect(self.show_people) + #self.btnBrowse.clicked.connect(self.browse_folder) + #self.list1.currentItemChanged.connect(self.show_content) + + def show_people(self, current): + self.listPeople.clear() + diff --git a/Implementace/database.py b/Implementace/database.py new file mode 100644 index 0000000..e9d0fce --- /dev/null +++ b/Implementace/database.py @@ -0,0 +1,18 @@ +import sqlite3 as sqlite +from model.group import Group + + +class Database: + def __init__(self): + self.connection = sqlite.connect('database.db') + self.connection.isolation_level = None # so we don't have to use self.connection.commit() + + def get_groups(self, person_id = None): + if person_id is not None: + curs = self.connection.execute("SELECT * FROM GROUPS WHERE person_id=?", person_id) + else: + curs = self.connection.execute("SELECT * FROM GROUPS") + res = [] + for row in curs: + res.append(Group(row)) + return res \ No newline at end of file diff --git a/Implementace/database_create.py b/Implementace/database_create.py new file mode 100644 index 0000000..d7da7ef --- /dev/null +++ b/Implementace/database_create.py @@ -0,0 +1,33 @@ +#!/usr/bin/env python3 + +import sqlite3 as sqlite + +conn = sqlite.connect('database.db') +conn.isolation_level = None # so we don't have to use self.connection.commit() +curs = conn.cursor() + +curs.execute( + '''CREATE TABLE Person ( + person_id INTEGER PRIMARY KEY AUTOINCREMENT, + name VARCHAR, + surname VARCHAR + );''') + +curs.execute( + '''CREATE TABLE Groups ( + id INTEGER PRIMARY KEY, + name VARCHAR UNIQUE + NOT NULL + );''' +) + +curs.execute( + '''CREATE TABLE Person_to_group ( + person_id INTEGER REFERENCES Person (person_id), + group_id INTEGER REFERENCES Groups (group_id), + PRIMARY KEY ( + person_id, + group_id + ) + );''' +) diff --git a/Implementace/main.py b/Implementace/main.py new file mode 100644 index 0000000..5cd23ed --- /dev/null +++ b/Implementace/main.py @@ -0,0 +1,17 @@ +#!/usr/bin/env python3 + +import sys +from PyQt5 import QtWidgets as Qt +from controllers.mainwindow_controller import Mainwindow +from database import Database + + +def main(): + db = Database() + app = Qt.QApplication(sys.argv) + form = Mainwindow(db) + form.show() + app.exec_() + +if __name__ == '__main__': + main() \ No newline at end of file diff --git a/Implementace/model/group.py b/Implementace/model/group.py new file mode 100644 index 0000000..582b041 --- /dev/null +++ b/Implementace/model/group.py @@ -0,0 +1,6 @@ + + +class Group: + def __init__(self, db_row): + self.id = db_row[0] + self.name = db_row[1] diff --git a/Implementace/windows/mainwindow.py b/Implementace/windows/mainwindow.py new file mode 100644 index 0000000..e32eba5 --- /dev/null +++ b/Implementace/windows/mainwindow.py @@ -0,0 +1,59 @@ +# -*- coding: utf-8 -*- + +# Form implementation generated from reading ui file 'mainwindow.ui' +# +# Created by: PyQt5 UI code generator 5.8.1 +# +# WARNING! All changes made in this file will be lost! + +from PyQt5 import QtCore, QtGui, QtWidgets + +class Ui_MainWindow(object): + def setupUi(self, MainWindow): + MainWindow.setObjectName("MainWindow") + MainWindow.resize(748, 464) + self.centralWidget = QtWidgets.QWidget(MainWindow) + self.centralWidget.setObjectName("centralWidget") + self.verticalLayout_2 = QtWidgets.QVBoxLayout(self.centralWidget) + self.verticalLayout_2.setContentsMargins(11, 11, 11, 11) + self.verticalLayout_2.setSpacing(6) + self.verticalLayout_2.setObjectName("verticalLayout_2") + self.horizontalLayout_2 = QtWidgets.QHBoxLayout() + self.horizontalLayout_2.setContentsMargins(11, 11, 11, 11) + self.horizontalLayout_2.setSpacing(6) + self.horizontalLayout_2.setObjectName("horizontalLayout_2") + self.btnAddGroup = QtWidgets.QPushButton(self.centralWidget) + self.btnAddGroup.setFlat(False) + self.btnAddGroup.setObjectName("btnAddGroup") + self.horizontalLayout_2.addWidget(self.btnAddGroup, 0, QtCore.Qt.AlignLeft) + self.verticalLayout_2.addLayout(self.horizontalLayout_2) + self.horizontalLayout = QtWidgets.QHBoxLayout() + self.horizontalLayout.setContentsMargins(11, 11, 11, 11) + self.horizontalLayout.setSpacing(6) + self.horizontalLayout.setObjectName("horizontalLayout") + self.listGroups = QtWidgets.QListWidget(self.centralWidget) + self.listGroups.setViewMode(QtWidgets.QListView.ListMode) + self.listGroups.setObjectName("listGroups") + self.horizontalLayout.addWidget(self.listGroups) + self.tablePeople = QtWidgets.QTableWidget(self.centralWidget) + self.tablePeople.setObjectName("tablePeople") + self.tablePeople.setColumnCount(0) + self.tablePeople.setRowCount(0) + self.horizontalLayout.addWidget(self.tablePeople) + self.verticalLayout_2.addLayout(self.horizontalLayout) + MainWindow.setCentralWidget(self.centralWidget) + self.menuBar = QtWidgets.QMenuBar(MainWindow) + self.menuBar.setGeometry(QtCore.QRect(0, 0, 748, 21)) + self.menuBar.setObjectName("menuBar") + MainWindow.setMenuBar(self.menuBar) + + self.retranslateUi(MainWindow) + QtCore.QMetaObject.connectSlotsByName(MainWindow) + + def retranslateUi(self, MainWindow): + _translate = QtCore.QCoreApplication.translate + MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow")) + self.btnAddGroup.setText(_translate("MainWindow", "Vytvořit skupinu")) + self.listGroups.setSortingEnabled(True) + self.tablePeople.setSortingEnabled(True) + diff --git a/Implementace/windows/qt/mainwindow.ui b/Implementace/windows/qt/mainwindow.ui new file mode 100644 index 0000000..5a2de86 --- /dev/null +++ b/Implementace/windows/qt/mainwindow.ui @@ -0,0 +1,69 @@ +<?xml version="1.0" encoding="UTF-8"?> +<ui version="4.0"> + <class>MainWindow</class> + <widget class="QMainWindow" name="MainWindow"> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>748</width> + <height>464</height> + </rect> + </property> + <property name="windowTitle"> + <string>MainWindow</string> + </property> + <widget class="QWidget" name="centralWidget"> + <layout class="QVBoxLayout" name="verticalLayout_2"> + <item> + <layout class="QHBoxLayout" name="horizontalLayout_2"> + <item alignment="Qt::AlignLeft"> + <widget class="QPushButton" name="btnAddGroup"> + <property name="text"> + <string>Vytvořit skupinu</string> + </property> + <property name="flat"> + <bool>false</bool> + </property> + </widget> + </item> + </layout> + </item> + <item> + <layout class="QHBoxLayout" name="horizontalLayout"> + <item> + <widget class="QListWidget" name="listGroups"> + <property name="viewMode"> + <enum>QListView::ListMode</enum> + </property> + <property name="sortingEnabled"> + <bool>true</bool> + </property> + </widget> + </item> + <item> + <widget class="QTableWidget" name="tablePeople"> + <property name="sortingEnabled"> + <bool>true</bool> + </property> + </widget> + </item> + </layout> + </item> + </layout> + </widget> + <widget class="QMenuBar" name="menuBar"> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>748</width> + <height>21</height> + </rect> + </property> + </widget> + </widget> + <layoutdefault spacing="6" margin="11"/> + <resources/> + <connections/> +</ui> -- GitLab