From 5c26c1b898102abc9d7fb13154cc28dfc5ee03b8 Mon Sep 17 00:00:00 2001 From: Sergey Kalinin Date: Tue, 14 Mar 2017 14:09:31 +0300 Subject: [PATCH] Added icons. Added tableview for selected data --- dm.py | 2 +- gui.py | 131 ++++++++++++++++++++++++++++++++++++++------ img/archive.gif | Bin 0 -> 399 bytes img/back.gif | Bin 0 -> 613 bytes img/copy.gif | Bin 0 -> 297 bytes img/cut.gif | Bin 0 -> 360 bytes img/delete.gif | Bin 0 -> 1199 bytes img/exit.gif | Bin 0 -> 1358 bytes img/find.gif | Bin 0 -> 1199 bytes img/forward.gif | Bin 0 -> 625 bytes img/help.gif | Bin 0 -> 777 bytes img/new.gif | Bin 0 -> 279 bytes img/open.gif | Bin 0 -> 737 bytes img/paste.gif | Bin 0 -> 360 bytes img/pdf.gif | Bin 0 -> 515 bytes img/pdf_preview.gif | Bin 0 -> 1221 bytes img/print.gif | Bin 0 -> 344 bytes img/refresh.gif | Bin 0 -> 1106 bytes img/save.gif | Bin 0 -> 262 bytes img/save_all.gif | Bin 0 -> 318 bytes img/save_as.gif | Bin 0 -> 708 bytes img/table.gif | Bin 0 -> 127 bytes img/top.gif | Bin 0 -> 1060 bytes img/undo.gif | Bin 0 -> 478 bytes tables.json | 41 ++++++++++++++ 25 files changed, 155 insertions(+), 19 deletions(-) create mode 100644 img/archive.gif create mode 100644 img/back.gif create mode 100644 img/copy.gif create mode 100644 img/cut.gif create mode 100644 img/delete.gif create mode 100644 img/exit.gif create mode 100644 img/find.gif create mode 100644 img/forward.gif create mode 100644 img/help.gif create mode 100644 img/new.gif create mode 100644 img/open.gif create mode 100644 img/paste.gif create mode 100644 img/pdf.gif create mode 100644 img/pdf_preview.gif create mode 100644 img/print.gif create mode 100644 img/refresh.gif create mode 100644 img/save.gif create mode 100644 img/save_all.gif create mode 100644 img/save_as.gif create mode 100644 img/table.gif create mode 100644 img/top.gif create mode 100644 img/undo.gif diff --git a/dm.py b/dm.py index c7bffa2..2f9baf3 100644 --- a/dm.py +++ b/dm.py @@ -29,7 +29,7 @@ def createTables(tbl_list): x = x + 1 qwery_create = qwery_create + index + ");" - #print(qwery_create) + print(qwery_create) i = i + 1 return tbl_names_list diff --git a/gui.py b/gui.py index 95de5a0..5e28b8c 100644 --- a/gui.py +++ b/gui.py @@ -5,18 +5,29 @@ import sys from PyQt5.QtWidgets import (QWidget, QHBoxLayout, QFrame, QSplitter, QStyleFactory, QApplication) from PyQt5.QtCore import Qt -from PyQt5.QtWidgets import QMainWindow, QTextEdit, QAction, QApplication, QListView, QListWidget, QTableWidget , QTableView +from PyQt5.QtWidgets import QMainWindow, QTextEdit, QAction, QApplication, QListView, QListWidget, QTableWidget , QTableView, QTableWidgetItem from PyQt5.QtGui import QIcon -from PyQt5 import QtSql +from PyQt5.QtSql import * +import pymysql import dm +conn = pymysql.connect( +db='ats', +user='dba', +passwd='AlsprofilinE', +host='kis', +charset='utf8') +c = conn.cursor() + class MainWin(QMainWindow): def __init__(self): super().__init__() self.initUI() - + #заглушка + def qqqq(self): + print("ddddddddd") def initUI(self): @@ -25,27 +36,99 @@ class MainWin(QMainWindow): self.setCentralWidget(splitter) #self.setCentralWidget(textEdit) - exitAction = QAction(QIcon('img/close.gif'), 'Выход', self) + newAction = QAction(QIcon('img/new.gif'), 'Добавить', self) + newAction.setShortcut('Ins') + newAction.setStatusTip('Добавить') + newAction.triggered.connect(self.qqqq) + + deleteAction = QAction(QIcon('img/delete.gif'), 'Удалить', self) + deleteAction.setShortcut('Del') + deleteAction.setStatusTip('Удалить') + deleteAction.triggered.connect(self.qqqq) + + exitAction = QAction(QIcon('img/exit.gif'), 'Выход', self) exitAction.setShortcut('Ctrl+Q') exitAction.setStatusTip('Выход') exitAction.triggered.connect(self.close) + cutAction = QAction(QIcon('img/cut.gif'), 'Вырезать', self) + cutAction.setShortcut('Ctrl+X') + cutAction.setStatusTip('Вырезать') + #cutAction.triggered.connect(self.close) + + copyAction = QAction(QIcon('img/copy.gif'), 'Копировать', self) + copyAction.setShortcut('Ctrl+С') + copyAction.setStatusTip('Копировать') + #copyAction.triggered.connect(self.close) + + pasteAction = QAction(QIcon('img/paste.gif'), 'Вставить', self) + pasteAction.setShortcut('Ctrl+V') + pasteAction.setStatusTip('Вставить') + #pasteAction.triggered.connect(self.close) + + findAction = QAction(QIcon('img/find.gif'), 'Копировать', self) + findAction.setShortcut('Ctrl+F') + findAction.setStatusTip('Искать') + # findAction.triggered.connect(self.close) + + printAction = QAction(QIcon('img/print.gif'), 'Печатать', self) + printAction.setShortcut('Ctrl+P') + printAction.setStatusTip('Печатать') + # printAction.triggered.connect(self.close) + + self.statusBar() menubar = self.menuBar() fileMenu = menubar.addMenu('&Файл') + fileMenu.addAction(newAction) + fileMenu.addAction(deleteAction) + fileMenu.addAction(printAction) fileMenu.addAction(exitAction) editMenu = menubar.addMenu('&Редактирование') + editMenu.addAction(copyAction) + editMenu.addAction(cutAction) + editMenu.addAction(pasteAction) + editMenu.addAction(printAction) + helpMenu = menubar.addMenu('&Помощь') - toolbar = self.addToolBar('Выход') - toolbar.addAction(exitAction) + #toolbar = self.addToolBar('Редактирование') + + toolbar = self.addToolBar('Панель инструментов') + toolbar.addAction(newAction) + toolbar.addAction(deleteAction) + toolbar.addAction(copyAction) + toolbar.addAction(cutAction) + toolbar.addAction(pasteAction) + toolbar.addAction(findAction) + toolbar.addAction(printAction) + #toolbar.addAction(exitAction) self.setGeometry(300, 300, 850, 650) self.setWindowTitle('Ацкый быдлокод') self.show() +class MyTable(QTableWidget): + def __init__(self, thestruct, *args): + QTableWidget.__init__(self, *args) + self.data = thestruct + self.setmydata() + + def setmydata(self): + n = 0 + + for key in self.data: + #print(key) + m = 0 + for item in key: + #print(item) + newitem = QTableWidgetItem(item) + self.setItem(m, n, newitem) + n += 1 + m += 1 + class WorkArea(QWidget): @@ -81,22 +164,34 @@ class WorkArea(QWidget): listTablesWidget.addItem(i) # заполняем правый список данными из выбранной таблицы - def addList(tbl_name): - # модель для таблицы - #model = QtSql.QSqlQueryModel(parent=None) - #qwery = "SELECT * FROM " + tbl_name - #model.setQuery(qwery) - #tablesDataWidget.setModel(model) + def addData(tbl_name): + qwery = "SELECT * FROM " + tbl_name + c.execute(qwery) + # удаляем предыдущий виджет таблицы + item = splitter1.widget(1) + if item is not None: + #print(item) + item.deleteLater() - #tablesDataWidget.setWindowTitle("ddd ddd") - #tablesDataWidget.show() - for j in dm.selectData(tbl_name): - print(j) - #tablesDataWidget.addItem(j) + #tablesDataWidget.deleteLater() + # rows = message.count('id') # считает количество строк в таблице + # print(c.fetchall()) + data = c.fetchall() + # проверка на наличие записей в таблице + if data: + # количество строк + rows = len(data) + # КОЛИЧЕСТВО КОЛОНОК + cols = len(data[0]) + table = MyTable(data, rows, cols) + table.setFrameShape(QFrame.StyledPanel) + splitter1.addWidget(table) + #table.show() + #sys.exit(app.exec_()) # обработка нажатия мышой на списке #listTablesWidget.itemClicked.connect(lambda: dm.selectData(listTablesWidget.currentItem)) - listTablesWidget.itemClicked.connect(lambda: addList(listTablesWidget.model().data(listTablesWidget.currentIndex()))) + listTablesWidget.itemClicked.connect(lambda: addData(listTablesWidget.model().data(listTablesWidget.currentIndex()))) def onChanged(self, text): diff --git a/img/archive.gif b/img/archive.gif new file mode 100644 index 0000000000000000000000000000000000000000..ff40c602ec711da5b3696d9b076ad0f1c59d48d3 GIT binary patch literal 399 zcmZ?wbhEHblwgoxSjxa4ap1rBwm)L4eu&KfCOq}CVCQ>*`nP<=uXr<_bH_g63VOid zevjSuHmlJM7WJ#*TfU2~_#iy{rBMGPfu>u0WtVxg&Tz*bpjRar7}zEsm|x(bBh_!u_k4wmkfm&Y(W*Z+)6OkncbOZt@n+g5Es^wYnNN~8 zbNvs$`)0}Oc71Z8<-e1RKmIc?GBLBTviYWYHZ--gv2$>8aeH@qHMg?$Pvqv|>-lwa-a)xa+xC?qT*Dki?bzkbcS4V%OzB&DX5dhJ-har0g&>8&-(l9srYdBCaM*=!`x>qgE+4(bV{i}o}cVg#X4WD)@plhdZ%Oji0NlSCLHu@-R#}4#=Ux}OX)nvg6VeI6RguZVi#PGntdU#dzVM` zQrEJ1)@hxV$!+1&PJ;bCC7*MQ=Lf&EZJeN%HwYg>CqXIFPmZ!be% z2g8JktqhElXU>}0Ih~P-nT3^&or9B$n`cVfJjR8*OE~zr_yq(Rgw`_CX>@2HRA^-&M@dak03rDV0SW*Q04x9i z000;O7ytkSz3@p1roAuV&8xrwAPfUB7HC=osqtOIfynec3x{EaV|l75LF<*6#B8;s z;h>NdCk3RmW9s=|XHAb}I60kgaz%?ZcP;xbK zcY$zSiC`axSPy)Ib_iMzjRbm$NH~;^j|78DlMI{>1P=;adz+72D4&^O2cwmoX0SGD vR}&4fkp~1Q3j+oY6LGgPI%Ew~{LGoH#3RLjqRvIBi6yBi3gww4844j8sS56%z5xu1KUo;L z7~~mrfK~#XBEi7Gdgg(8UrHoXngBzS!3Gx{;f9z6OA}ST{z0FxZc&jIe@6u&9f{{AReLqQaP%@yKCo^z_wgN!?g77Va$0*?TX6D} z)MvRR2m2*5l;s%mRJ15*@Nsr#cLdp3xK6BRaAHqUVVGUVX~MRA;i_y?d4487m062& zHp?gSDl_lOW#iFP+Ah!Rx6y=~$;Y+e;3~tdhUb;qHl`=;y>R+a#wmHe_0u1w-&f{k WVb*{5!65p)fa+ael~+oN4AuanfREMy literal 0 HcmV?d00001 diff --git a/img/delete.gif b/img/delete.gif new file mode 100644 index 0000000000000000000000000000000000000000..e59d02dcdfdd7781f085aa0d78449a4dd0a9c5fb GIT binary patch literal 1199 zcmeH`-A`I~06;HDGe8>!wUPpQ`KYaJ-Q1uF?NX-|DNwbYtJVjztVWpKW~|Q4%$fx& z>eYP|YFqp%YzUQE(7+r66);q|^0_X$H7ahEiCU8Gp_{An^Nq+g{+CpWjBopC~9TE%naL{a^u;CX?3) zye7cma1x0GB`a&i28>#*NdvytXvT(tQ3DLa!-)`Ju~;z&aN6w=J6N>?=hPI5L<%~c ze<_<5wb~b+flw&)w;w$7sOC}hVb_N-7~Uv278)FEYipBArRxqbe&a^4qT*K=j!~)p z%1X2Hi|;x*mQHYigcI=lf3c}t21E3n$_+Ywi$+~Ke}03LA19Oj-Q6peTW*(Y(+Prs zz;ho6yIjB5m2Fa~@dKH^ojA7ZzY`9JQLooG4$KC_q8j<}(xt5&`s4KU)xtuj)jI2N zL~LMf8W;eW=tII{@j9Kp#$-NXGB+q$gM$*=we~Rp?0PUUI{L&7{3yDt>tCp@jxiWN zOKPUo>Ic`FB0SzIm-{`^?yy?pvmh7@?#vB5l*^yw=Wepu&zh>kZnw|l`9s|vJ#}jB z%$aTdCjk^?v)QP_vC`GNbne`vkLqXc-CLLh4x4StY+hBgubw`=l}%feN+Tx4^0%sS zmCD@PYZwBfLqkS2F!yvj8ylU9-U+>)%jHIAz>L*8H95I#12&6g-UJ+W`%VBDjmACy zfBq}L*v%|ykz8(-)WdC8S{vYt4HEdQsQd!Nc#gvmp#*e%Z;8ECC=i6-g%Sjs@M(_h zIzBm@Pk~1~z1VCb4k~g(SPJL8TRe-bGYL;VBDBahWLR3_)rM#kBY%lhTc{|&jPi+@ z$7|gROjpnTgZQgsdEb;^Q*(+s@C>XRk4^81l=0@EK5}k_R;VmOWh0ezam{^Q_orD9 z){QhP-7*`2;2$j3_k2#}wZs(`ebX8#nIMiXczmgFu{?#r)FMij@MaqF&zk{qZn-+` zV{(!>BT1A}CJ+_{Gmch`*WSN=C^;pcVY_;=U?z&Z{PwJjz!LZ-758el@QJ36H$xd!UK!+ZPS!-%b6hP`uN+gWy)kXQGUe}N@b zHXObSUm=fjZr8N*9lEXV6y*+mpc6FWnr{{z{_^5eQAd9VR(wSFS)B$)5V?ypa(eJ} r8Fy(4ERj}FLrlR5;ZEq4*-X9QpoX8;MJq48P?AUR#@@hSpx6Hev^Zk? literal 0 HcmV?d00001 diff --git a/img/exit.gif b/img/exit.gif new file mode 100644 index 0000000000000000000000000000000000000000..abe8e8fdb9a5bcd304a1593a6e7f1dc928c326fd GIT binary patch literal 1358 zcmZ?wbhEHblwgoxcs`3kS65e0PfuT8-@w4Y(9qDx$jI2(*u=!d)YR0>%*@=}+`_`b z($dn(%F5c>+Q!Dl*4Ea}&d%Q6-oe4a(b3V#$;sK-+0D((-QC^8!^6|l)62`t+uPgM z*Vo_QKOi6=FfcGABqS^>EFvNzDk>^EIyyEsHa^qprEj@u&Ai0xVX5aq@=X8w5+VGyu7@kqN1|0vZ|`8y1Kfywzj^$zM-L^ zv9YnKsj0cSxuvD0wY9aat*yPiy`!U}tE;QKySt~Sr?ygb5QTPMkDp(&WjL zr%s(ZZQ8Wy)2GjzIdk^x*>mR1nLBsx{Q2`2ELgB`;lia$mo8hjZ29u#t5&UAy?XV! zb?erzU%z3)hK(CHZrZeI^XARlw{PFEW5=#tyY}tdcj(Ze!-o$aJ$m%mv17-NA3t&8 z#L1HWzi{Eg#fuj&UAlDn^5rX6u3W!<{pQV^w{G3K zef##EJ9qBhy?gK8z5Dm?KX~xq;lqcI9zA;UKYslD`SaJWU%!9<{`2S0-@kwV{rmTS6p$DKIt)Mn$_oq} z{}@!SHa>pFD`Q#o?1-bp@-=aWuZ54#%~hf35s78{$c*%vW!>WYi<5i+rhSeEoI^NDimx$De$h=q&u-ws_T zRUtK>ey;}0H7bWKef-1^VIvWZ!CNC4?VYS$Bw`{WMfxEnZ zYaJUH8x90EF!m)ZI?4WlH$s7#IpX0JaW(^q_VP4~t4A3`7lkcgZrI}P%*4u~#Lmcl zzh z2A!(YEtHON@`ea7%S@I@<6z^nC~%m-wWP8^U{Xv{XK+bcl8Taoj=;f5O(!lsV-}ED z;3RV{_0qiH$vp=f=QS89oRHzP5oqkK+Z*7fG{fW3aZx3Q3k*wZ_A#ztSu%;Mk%>cQ zLPPEnw}31bQ;laE9oZzVtU9<>D(Aq#wUQYQ*=r>V9ylsa=6U3<(7<4HVp9``Q-?yc Si8RNi29`(eic?uw7_0$(?-4ry literal 0 HcmV?d00001 diff --git a/img/find.gif b/img/find.gif new file mode 100644 index 0000000000000000000000000000000000000000..ed860d9bfb0e645d8aaf34be2d6551586e70bfe9 GIT binary patch literal 1199 zcmd_pjZ>O+0KoAF#5d$hoi<&x5aq;|ZcB0J+`J=G5OdCTQ=3;#HgVL|j!aK?YwZC& zdz`p2Zu6cWf+C0_2%+fnz(A5$d25%uc229C)mq+lb!%ByosIlI`u+>w`*3-j@}vAL zC=2=tf&c&rf>c*m)9Li4rX~o2{_um9MgHl}bMb3`+2o6&%RUcG_&4IQSX|P8@gO_(L1W&CNwVl|v9c8jb!N z2H{XBEiJ9Hv$MCiH-e&P&h)pRz5Ipww$I}!D=Pzn($Uc%Kz*1Q$IMHCi6!pSXo})zyN#&Q7VH`tLYBr@yu!#O!iIh(&FMnE>|=$p<}UF;kl``we`m? zZ7_ImCu(-PqhY%@7~E~IZwRigZeqaYaA?)@_wVTKn0sTz;2NKWQ7TbX@NtiH!C+p{TTHrnlg=`$o|_#1++g_jG^b(P1p-D;T-+>|`=@T*b~~3h z+-8@Y9v?&tG2xcB|E8RAy(F zGZ-g?!Z8Y^m`bH%S}?5u^Ru%!hRNk9o85%tcuGo1wl#A zpja}swvh%)lJ=!jWKYx{3GrYZwOp<750glc2(>_jxI{KR39w%i55>Q5Sh%Hj$Bm}a zYf;*(Itd}8u+buN6BAOhS;rUc?JEh-y;#w=^@K1mkV+mZq`_<-V$7>UnIF>mHAIq2 zQ=10C*D{M+ZGGa@mE91-z*N+ou1)sFBzNOr>=XMyy{8fviot1ZpO^J5;g05 z-rj#XJAYUFzDG$t#~EEWH;s>slcAH2D_3MnzP|kPXzVu3+UY8*Sgue zab5O~@0nXZrEhqfvgUcxibn}c?#3;+5k2=($izcIy?cFIH+eU%^{idtR=GHR!<&R9 zcVZV@kDhZWa>kjkDaS)5917~$8_==cvv#>#<)Yl&+_VjEQr0|6TJbP`$(`sq7egi- z4C>kA-?81dWs`Tq8jqUgZWW7CRzFKx{xE*=?b!L(qGw->m<}}RSRhE*Hs6+wULa-5 z+$t6(E`Ja;`$EL@(_xd31@|BDZ{OzIywR(EwQKnTaQIO~DE?$&>Qk2+;iLJGx6~9 z@e2qFtrQj!UDGn3M@*bwLQ+UdT1Hk*USW3=gQAkMiiE0~l)8qdoR+qZ?imI>eFH-y zV-wRGX6D)!mR8og8T4(Q*xK1UI667IymfVB=o4XTQ0bhcYB%Fa_M<19Q#68>vE;Ze z?V73`u_+^SQ>(YQe*6KS9MNZsW*DZNsxc^L^F1+ft;tCrX5otyXIm7830Y(YoSo;; L%q1$t!C(ylk}3hA literal 0 HcmV?d00001 diff --git a/img/help.gif b/img/help.gif new file mode 100644 index 0000000000000000000000000000000000000000..d770ae0aabab0a185f15478077992d07196405d5 GIT binary patch literal 777 zcmc)H+fR~V0D$oq)Q_VlRQys&Fe;Z_SgS2DH;OIuB2%l)$}!Yv*k!YIm*A1owCPfE zEe}m*G^b8LL{vZ&haV0RJPqdw&!~wyLKO19=(&7uf2nB??j+^H00yG~_yA~VZ3RrG z&*x*a*_@8^0ZvX%+-`TuyEd20b#!!eczEdXcur4GyrxudlAIE-x=HE-o%CEZA(exw*NSnVFT9 z6}#O&KR-V`Jv}uwwY0P}IXP)EnIdAE27|?7v0AOOv$IB{acpdCWMsr_HtTdc ztyZhiXb=P$92``sRC>LBXlSUvzh9wH3=a>Fj*cpoO1WGvlgWB|demyQR4VQ2>gw$5 z92gkr?(UXIBn$?lx3{;iuMe=<@kvRUe14`-h*haTR#x%a$iy37ZmcS zPkCHwYTBa=Ky&+}@Sq4>KleDNf&svI`9;MgrDf%1s3Npql^?pa@-w=w#2+0{2|*Za z&8MoyYS9l|1Nu82A`t5WgP`ClF|N2x6!JS1B87$h!eTLjJu_ zj)o&HKvB^MDFzCqP^PRGW231M4Ix7?98R)}x1hL7bR;$koSliJ?cbECS|%SI9Gl);iBjPd6E`$xgZ+Jfz^Wi zvZ3L42RCmEQ8c97=5Xa-6vs7I#oW^p zAJ)>-lM9JA64XKx9jZ^vCDVm9A5u0M&uggy!PSgr_@g!ipV9Gzl*1G8@n5gu$S+!) giY|VF$Un3Gw0*Hni^AX(07oD{uE-m&reHzxKNlE?>Hq)$ literal 0 HcmV?d00001 diff --git a/img/new.gif b/img/new.gif new file mode 100644 index 0000000000000000000000000000000000000000..60dae2691dafba2312a828e8104d26b0df692ef3 GIT binary patch literal 279 zcmZ?wbhEHblwgoxXklQOIdf)5M~91xOK51Ql9Cbw1H=E*GtZnkV{B~v|NnnMLBZ2A zW|Wtgr=_LMOf{Y{BX!lPRX}m#f#OdVMlJ?<1|6WuKpQ0(7+9w~Q15%fJ|&}ak>jg< zhqRd*3R3TqvCg9?l7c_QPQ9ryzcHNtyqC#o_{NobtZQ9N5U rex~F6>bbQXnjDL~mI&~$aBwhf%HLvT<)X60CRRn)O=-WpB7-#mX;y-P literal 0 HcmV?d00001 diff --git a/img/open.gif b/img/open.gif new file mode 100644 index 0000000000000000000000000000000000000000..a50d09d5016e8b2df114d16cd6f8621c1710a76d GIT binary patch literal 737 zcmcJM+fUMQ9EQJgP%tgfLQqrqfrW)>B4(?VA((d2tmRspxs1u!>ZZo#TAQSZVQ$)( zTYLb=(o{rKPW~Vf=Ty$rNZUMgQOjJlTI<5LY?kp)^j^G|&-T3U`P%A=lTA#-L;-{V zK&#bCB$E32dJMx5Lc39jL?S=^5DWyi{2-M|1AhPN6gbDn7p>qJ8(SO$p-{NHyPM5o zy>Y@wf4|iP79&{uVc2Noa=Gt3;B~v#-7w>JzfH8qL#NaKL?99l$6~Q)H2OOPB9Ulu zety{rFPzRb9HM%COG}GfF6Z<4qh|An0fr4QWH5{;m?qPx37}b6R#x_Y8m3(?kHfL# z0H4RRio=}Gw>bl$U~t(1lNQUXN$@zGUL2qGde`v;0fvl5y}o(GWO5I}^P!=ybFkuq zxE)**6M-@KJPX@F_!We3DCD-=SEk^#13vixAB1o?jN5EGVX#`Q3EBS?&NeA26{(OQ zv3%kYCPFEHAE?^Z9V(>JY94Bnx_WvEz3m7Qh$KB2bZT;P3Wb_VeM%vcO{zU<>3jFl z=(NdV>zyp$m<6P2IHsMy)Tx;yUj;&wH;H}6cVk``|xKW6hNybSzhN89bS z#s*ip7{dtSPFms3XY+Ihr$JDqlW2otOsS|7s{^{6IsFaAhmX|0ntYAq4%=VTTWD{* z^rdbS#l?gQxv)vo$LCzNDNXuHDWm8#p1U@`5lk%-T)(`LA?r-Pe>O`IQJYX2-hzkCKG%+--%D;SDIe7}URY0y&N0)F zneRGZ!%#|t>*$+8#h_lU9@axEb;a!38dnyuaxZX~QL>COVBtBsC`aYLi-mkeN`Y&A zlM*)vUp~KK;bL}HX1)#b zEb>XSle5y}E%vdqWbtk&%iqU#P>G+5laggdmN>4T7zQk%MGFSruDMgN? literal 0 HcmV?d00001 diff --git a/img/pdf.gif b/img/pdf.gif new file mode 100644 index 0000000000000000000000000000000000000000..be7ea6ed95f2b373d20017d9c85aef4c80d1af98 GIT binary patch literal 515 zcmV+e0{s0)Nk%w1VHf}y0Hpu`<>R-&zNFp0nb)0vmzI0XXH>lz714lbz$hZfP(q4{ zZq3ZGxwxI4or0yLiL0uRx(Nxaa9*BwVW(?Z@7b%{*}vDqtJi#E$Yom4lY+xLF~K)6 zz#tpllXc5ZKhvw1qf3U+zGb)jfb;iY()zrBn zA|lMp%>T=o{{R4YcXz(NzGh}-Gcz+pL`3)&7MW!;5fKrYnVHL&n23moRaI60|Nj60 z0RR90A^8LW3IIOrF@_Oq9h#^B@h=Tn|geolLiGRd?g_$DIRnovvCfS zQ!1WvBO`JvEW67>KM+4ZEiNzK-Y_sOG2q`V+v(daFEZaR;^H&!-stMvH0Cbj-!(8c zFwWgu*N)yd7&LAuREQ(TzYO(YeBMy z$&)`k1`KG9olBV8YV4y)kH#TQoIiXR4Ege8jvO^MVqCfusM8-co^EqEaEDZ!RDlKo F06X)X+sgm| literal 0 HcmV?d00001 diff --git a/img/pdf_preview.gif b/img/pdf_preview.gif new file mode 100644 index 0000000000000000000000000000000000000000..3db04ce653cea3a043f83fa069f4d878b41ee029 GIT binary patch literal 1221 zcmZ?wbhEHblwgoxc+SA^^zrrs`YU6|Z-*xK-* zx#0l?>ARClPy5+lUOjzruqC>#RptW4ZI%UIIAu1WmQtQvN{8U(!~DK zgX<@FyJW=1cFmY^dh6B~k&(?=nRPENFIQ4hI&3-SeQ>3m2}f zS+i;0yh|%q+)`F{+P80CPtUX$hW2kYjGroK7ZufgzPNSk)`#xy1xuE!GB!3oW$JbD z;`L|y7N0nADJ3Q6g{r~Hy6GoQ{7LZftFB(RcJ01Tr&b(0cIlU?RcL79tfH_b6Q*0L zY0OMD78DemIdf)lanJ183%a|f*3@+5=U2PB23A$gS+(k}f`aM!{rh!v!X`~RdV1y5 z%a^bGxw5Xfxcc(ewOm}f|NsAIU|;~^I5DHr(&bG}8&^(Wxpe8#qM~Uw7I#*)HJ@neoaS5M@vhOt!+kFScATPgtm4d&<&%2 zU&9EwLz0Rc*wWETO*^NiiI7LtF2mhh{^(I+2 z1ZtVx`DCptzI^zYY|?vvgZ<9%#3^hH4C++Xk8zq)`8=^Gj(29pr$cIf|C*P!&M6TRV6X-N-mkuQ literal 0 HcmV?d00001 diff --git a/img/print.gif b/img/print.gif new file mode 100644 index 0000000000000000000000000000000000000000..9be61a773279a5aaf78bb55cd540af78c4c71e05 GIT binary patch literal 344 zcmZ?wbhEHblwgoxXklQOIdf)5M~91xi;|L3XlN({1H=E*GtZnkGc(or|NsBS#>Rqz zf<_E8X3qSdmX=mtUVeH85TveJwd(HOy9|o|{{z+I1&aSfor_WvOHxx5$}>wc6hbmm z72G|20~i#4vM_Qn$TR2wtpqwnf`Nf`&jaUw&!MZSr`3svKfNQaS(%lUDMWB`j1%{KB~~FJrnrzf zt6Ak2F!in9&a~5Y{+_-2_V3|f6+UwG*zps)Pno!j%> T4m{jnrBwaw`HO0KMFwjCjR2S{ literal 0 HcmV?d00001 diff --git a/img/refresh.gif b/img/refresh.gif new file mode 100644 index 0000000000000000000000000000000000000000..9b7e5993311f6546e3a71fa228106224890f7be4 GIT binary patch literal 1106 zcmZ?wbhEHblwgoxc+LOL#l?Muey4{00Tq^x<7yz+74vitFiZ%5C)6gBHy?w&t6JAPzs{hYDs zecJlhDQli5ffU?}Uvw*W{Utsqx|MqRZEt|X>*Ll{h^r&9yRnS2o(OMZ zXnW$}u%u(6vd1Ki$U{pyC#whCQ|npO&@@FeWL3n@Ce`j~x-q*d1m{d_YS&LV)FJ7- ztY@Zi#-$aJhuc2cGvsRRs$^F0lQAiNab;sMdw*s-Bg2!6o7?^6?dus>g-kjE7T(_3 zDq+>4F>#S=kCbIqiHwpHLxZC0B$Lh{RqyEr20#CtRGqxccaBx%FBYvUKjz1}Z5A}` h3egOHUmvxmLd*UT0|Q%!w3}h1`-4UfBM|`xYXB@ci{JnN literal 0 HcmV?d00001 diff --git a/img/save.gif b/img/save.gif new file mode 100644 index 0000000000000000000000000000000000000000..b1b2ac22396884bc4b47fa07c5ae02af4b3da482 GIT binary patch literal 262 zcmV+h0r~z%Nk%w1VHf}y0OJ4vnVFeYRaHbpL^CrpA|fKp%*_AGng9I!0002GxVU$A zc9@r!W@Tlns;Y>Hh%+-YA^sIZa%Ew3Wn>_CX>@2HRA^-&M@dak03rDV0SW*Q04x9i z000;O7ytkSn(#>=tF`p%eZvKS5ClVMo+d$TL17ewI~;T!8;CZ%#ttV6)4_+k++Z?V zY<3)EBt+kA*rUpfE@X9B8fFJZUbLnZW5p;F4;C&Yvg`QOa#P6Tix-$~2&U5v3wsqe zL~w9YZAW)ngHSSzVtR^)a)oDxcZqyjm0xp&ke-qS0v7^$qn||*4FrF%DFhx8D;yj- M77n)@yAKfnJ5>x|9{>OV literal 0 HcmV?d00001 diff --git a/img/save_all.gif b/img/save_all.gif new file mode 100644 index 0000000000000000000000000000000000000000..13304510e726c8e496ae5367722cfd172e91a502 GIT binary patch literal 318 zcmZ?wbhEHblwgoxXklOo4Gnd1aWOVFR#H+rbLPzd(=-47`NP1#FmvY2T|0J^mzAZZ zrp}l?-PF|7!otGD#Khd(+|Jh4+S(eZj2NW&lZBCsL7qVeXeQ7`2?hq%-4E3JQaqWS zi8C}j*!RJjN7F&1rGVQlpMfp*p+eNwB#(nW4bojX7K-Pu3(MtM9%{7@$~M^wS2p71qK$y*4kABRTq0!ST;pla7Oq}n#9D-lNN2x zHF>T%Ph(+!Lbt*6j#;Vm=9cuu@J^W*RJD?C_0)wkWB4~t*__(hvwAHHW3#~C$@^Va l3T!X7VAM0#3OrfkC-1_%RF6+kh~LOW`HAN9GfIjK)&T!ijjaFx literal 0 HcmV?d00001 diff --git a/img/save_as.gif b/img/save_as.gif new file mode 100644 index 0000000000000000000000000000000000000000..bcc93ded88c47078f493507e79929bbf198ba8dc GIT binary patch literal 708 zcmZ?wbhEHblwgoxIL5#*bLPy@&`=i_7h_{%B_*XZXU_aTJ@fycKMV{EyLRj-FDsid zeR^7I>YtM{j~_es_1Mf)r%sugnjSuM==jFDn>KDdyJhZ*sCWwCUouIajyO*|l@$qkXgP z?U}u5<;vAd7A#q`X!)WA&-c$dapJ`D1GDz-*>iK}oGaVsoZd8d zt+lmvM@I+HJA)P}{u6aBN=+;o|MgolRTTE#AEL$f9lYb{yS2b@NH)ZEFrL-F4~2r5V%KEV#(Z zdGhwd<88~i9zEoqf8hz+#+x^JxL>y}XXfSO7kGZ?uAq>xh*rdo2E}GpUg=k{k1rfN z%r2nl(jXw1#KKwkhHHvJA=A;;M%LgMgM}03XozY@%*c57=yEr&zQLv6EXr*?k|tR< z4iqrE_q9BJQQ5RGnY~}mPNnIC;iGnK#&(t!%t9_F1Y}$cL=1~smMjlxnjlb7-svo) as%j)yppqf1?8ceEty_6IG!K%yXd2Bv^H{VPwuJ>M{A%O#ek zbGv@?C0vV0T+qPfuxgp2)3HfAH?Dr&^~r29GnE#9j-j(X~IoIN<}81wP; a(|pTAo^M&&L)z|x&7_0#otTpZc literal 0 HcmV?d00001 diff --git a/img/top.gif b/img/top.gif new file mode 100644 index 0000000000000000000000000000000000000000..76b4cab29f8e11e0be332cb88ef653aef0bdbd64 GIT binary patch literal 1060 zcmZ?wbhEHblwgoxc+S93eDi=dH27_6;D0dw)El>y=|M6p>z6y|GpEBcy{jcXxr}Avcejr;rE$G; z-D+uLH_wh8Zq1urf!z8vj#W!N+P1khZ*gf@>sYaS3JVW6GIEF*6g)^g)WIR75pm#v(!mZXX^RR5#irx+j4D10 z0uCNx<&iYW*)U@gQ#+rWT?2<=5=*BLpRa~Rqta1UQSFE=1s|E*cqH0nPR(#!+}0~? zQS{=*!NU{6+ii_nK73^M5KwgP5b6ANp`%0DW0FSXp%$0PTgB!YT>Z%6C88O;A|&zk zg;P^yBQ|B+JhZfXx_*mrlc)4DPI1HJ6H{JhUF7LB4!*D?aC4ilwE0BApc#jr_DWe4 zKFOKUd`qcaujG}%hRe_R=GjyQ$=^A=ynnt~y%z(QipGwkj)oiuXZXpwDL!Q1n|1%+ Q*CpTIKRC?9&ca{~0P5IKasU7T literal 0 HcmV?d00001 diff --git a/img/undo.gif b/img/undo.gif new file mode 100644 index 0000000000000000000000000000000000000000..0f832bf9d75505f7348e97c58f8f771d51e7f445 GIT binary patch literal 478 zcmZ?wbhEHblwgoxSjxaKbLPyBjt&e{cqx*t_Ie@)4{Hh;z^O}>xnJU=P|zc?vXnx z>sNoakV;ESyLIktgSOWk%^0FKN literal 0 HcmV?d00001 diff --git a/tables.json b/tables.json index 7717d84..3982842 100644 --- a/tables.json +++ b/tables.json @@ -88,6 +88,47 @@ "autoIncrement": "no" } ] + }, + { + "tableName": "address", + "tableDescription": "Список адресов", + "fieldList": [ + { + "fName": "id", + "fDescr": "Номер п.п.", + "fType": "int(6)", + "index": "PRIMARY KEY", + "autoIncrement": "yes" + }, + { + "fName": "region", + "fDescr": "Регион", + "fType": "varchar(100)", + "index": "yes", + "autoIncrement": "no" + }, + { + "fName": "city", + "fDescr": "Населеннй пункт", + "fType": "varchar(200)", + "index": "no", + "autoIncrement": "no" + }, + { + "fName": "street", + "fDescr": "Улица", + "fType": "varchar(100)", + "index": "no", + "autoIncrement": "no" + }, + { + "fName": "house", + "fDescr": "Дом", + "fType": "char(6)", + "index": "no", + "autoIncrement": "no" + } + ] } ] }