diff --git a/db/odd.db b/db/odd.db
index ca32ec9..9470118 100644
Binary files a/db/odd.db and b/db/odd.db differ
diff --git a/gui/SecondPage.py b/gui/SecondPage.py
index a0a2150..519d737 100644
--- a/gui/SecondPage.py
+++ b/gui/SecondPage.py
@@ -1,26 +1,48 @@
import wx
import random
-import os
import controller
+import os
+import logging
+import platform
-class SeconPageFrame(wx.Frame):
+class SecondPageFrame(wx.Frame):
+ #Логирование
+ #срез 18
def __init__(self, *args, **kwds):
- # begin wxGlade: SeconPageFrame.__init__
+
+ logging.basicConfig(filename="..\\app.log",
+ filemode='a',
+ format='%(asctime)s,%(msecs)d %(name)s %(levelname)s %(message)s',
+ datefmt='%H:%M:%S',
+ level=logging.DEBUG)
+
+ logging.info("second page runing")
+
kwds["style"] = kwds.get("style", 0) | wx.DEFAULT_FRAME_STYLE
wx.Frame.__init__(self, *args, **kwds)
- self.SetSize((800, 600))
+ self.SetSize((600, 800))
self.panel_1 = wx.Panel(self, wx.ID_ANY)
- #self.panel_1.SetBackgroundColour(self.color)
- self.radio_btn_2 = wx.RadioButton(self.panel_1, wx.ID_ANY, u"Крестообразный")
- self.radio_btn_3 = wx.RadioButton(self.panel_1, wx.ID_ANY, u"Т-образный")
- self.text_ctrl_1 = wx.TextCtrl(self.panel_1, wx.ID_ANY, "", style = wx.TE_PROCESS_ENTER)
- self.text_ctrl_2 = wx.TextCtrl(self.panel_1, wx.ID_ANY, "", style = wx.TE_PROCESS_ENTER)
- self.text_ctrl_1.Bind(wx.EVT_TEXT_ENTER, self.proverka_vvoda)
- self.text_ctrl_2.Bind(wx.EVT_TEXT_ENTER, self.proverka_vvoda)
- self.radio_btn_2.SetValue(True)
+
+
+ # self.panel_1.SetBackgroundColour(self.color)
+ self.radio_krest = wx.RadioButton(self.panel_1, wx.ID_ANY, u"Крестообразный")
+ self.radio_t_obr = wx.RadioButton(self.panel_1, wx.ID_ANY, u"Т-образный")
+ self.shir_horiz = wx.TextCtrl(self.panel_1, wx.ID_ANY, "", style=wx.TE_PROCESS_ENTER)
+ self.shir_vert = wx.TextCtrl(self.panel_1, wx.ID_ANY, "", style=wx.TE_PROCESS_ENTER)
+ self.radio_krest.SetValue(True)
+
+ self.shir_horiz.Bind(wx.EVT_TEXT_ENTER, self.proverka_vvoda)
+ self.shir_vert.Bind(wx.EVT_TEXT_ENTER, self.proverka_vvoda)
+
+
+ self.runPath = os.path.abspath(__file__)
+ print(self.runPath)
+ if platform.system() == "Windows":
+ self.imgPath = "..\\img\\"
+
self.__set_properties()
self.__do_layout()
@@ -29,10 +51,10 @@ class SeconPageFrame(wx.Frame):
def scale_bitmap(self, bitmap, width, height):
self.w = width
self.h = height
- image = wx.Image(bitmap)
- image = image.Scale(self.w, self.h, wx.IMAGE_QUALITY_HIGH)
- result = wx.Bitmap(image)
- return result
+ self.image = wx.Image(bitmap)
+ self.image = self.image.Scale(self.w, self.h, wx.IMAGE_QUALITY_HIGH)
+ self.result = wx.Bitmap(self.image)
+ return self.result
def __set_properties(self):
# begin wxGlade: SeconPageFrame.__set_properties
@@ -41,94 +63,90 @@ class SeconPageFrame(wx.Frame):
self.color = controller.setBacgroundColor()
self.SetBackgroundColour(self.color)
self.btnColor = controller.setBckgroundButtonColor()
- #self.btn2.SetBackgroundColour(self.btnColor)
+ # self.btn2.SetBackgroundColour(self.btnColor)
def __do_layout(self):
- # begin wxGlade: SeconPageFrame.__do_layout
- sizer_1 = wx.BoxSizer(wx.VERTICAL)
- sizer_2 = wx.StaticBoxSizer(wx.StaticBox(self.panel_1, wx.ID_ANY, "sizer_2"), wx.VERTICAL)
- grid_sizer_2 = wx.FlexGridSizer(1, 6, 0, 0)
- grid_sizer_3 = wx.GridSizer(0, 2, 0, 0)
- grid_sizer_1 = wx.GridSizer(0, 4, 0, 0)
- label_1 = wx.StaticText(self.panel_1, wx.ID_ANY, u"Исходные данные для расчета")
- label_1.SetFont(wx.Font(18, wx.DEFAULT, wx.NORMAL, wx.BOLD, 0, ""))
- sizer_2.Add(label_1, 0, wx.ALIGN_CENTER | wx.ALL, 10)
+ print(self.runPath)
+ print(self.imgPath)
+ print(platform.system())
- label_7 = wx.StaticText(self.panel_1, wx.ID_ANY, u"Категория \n Горизональной улицы")
- grid_sizer_1.Add(label_7, 0, wx.ALIGN_CENTER | wx.ALL, 10)
+ self.sizer_1 = wx.BoxSizer(wx.VERTICAL)
+ self.sizer_2 = wx.StaticBoxSizer(wx.StaticBox(self.panel_1, wx.ID_ANY, ""), wx.VERTICAL)
+ self.grid_sizer_2 = wx.FlexGridSizer(1, 6, 0, 0)
+ self.grid_sizer_3 = wx.GridSizer(0, 2, 0, 0)
+ self.grid_sizer_1 = wx.GridSizer(0, 4, 0, 0)
+
+ self.label_ish_dan = wx.StaticText(self.panel_1, wx.ID_ANY, u"Исходные данные для расчета")
+ self.label_ish_dan.SetFont(wx.Font(18, wx.DEFAULT, wx.NORMAL, wx.BOLD, 0, ""))
+ self.sizer_2.Add(self.label_ish_dan, 0, wx.ALIGN_CENTER | wx.ALL, 10)
+
+ self.label_kat_horiz = wx.StaticText(self.panel_1, wx.ID_ANY, u"Категория \n Горизональной улицы")
+ self.grid_sizer_1.Add(self.label_kat_horiz, 0, wx.ALIGN_CENTER | wx.ALL, 10)
self.katHorizont = wx.StaticText(self.panel_1, wx.ID_ANY, "", style=wx.ALIGN_CENTER)
- grid_sizer_1.Add(self.katHorizont, 0, wx.ALIGN_CENTER, 0)
+ self.grid_sizer_1.Add(self.katHorizont, 0, wx.ALIGN_CENTER, 0)
- label_9 = wx.StaticText(self.panel_1, wx.ID_ANY, u"Категория \n Вертикальной улицы")
- grid_sizer_1.Add(label_9, 0, wx.ALIGN_CENTER, 0)
+ self.label_kat_vert = wx.StaticText(self.panel_1, wx.ID_ANY, u"Категория \n Вертикальной улицы")
+ self.grid_sizer_1.Add(self.label_kat_vert, 0, wx.ALIGN_CENTER, 0)
self.katVertical = wx.StaticText(self.panel_1, wx.ID_ANY, "")
- grid_sizer_1.Add(self.katVertical, 0, wx.ALIGN_CENTER, 0)
+ self.katVertical = wx.StaticText(self.panel_1, wx.ID_ANY, "")
+ self.grid_sizer_1.Add(self.katVertical, 0, wx.ALIGN_CENTER, 0)
- label_11 = wx.StaticText(self.panel_1, wx.ID_ANY, u"Количество полос \n Горизонтальной улицы")
- grid_sizer_1.Add(label_11, 0, wx.ALIGN_CENTER, 0)
+ self.label_11 = wx.StaticText(self.panel_1, wx.ID_ANY, u"Количество полос \n Горизонтальной улицы")
+ self.grid_sizer_1.Add(self.label_11, 0, wx.ALIGN_CENTER, 0)
self.kolvoPolosHorizont = wx.StaticText(self.panel_1, wx.ID_ANY, "", style=wx.ALIGN_CENTER)
- grid_sizer_1.Add(self.kolvoPolosHorizont, 0, wx.ALIGN_CENTER, 0)
+ self.grid_sizer_1.Add(self.kolvoPolosHorizont, 0, wx.ALIGN_CENTER, 0)
- label_13 = wx.StaticText(self.panel_1, wx.ID_ANY, u"Количество полос \n Вертикальной улицы")
- grid_sizer_1.Add(label_13, 0, wx.ALIGN_CENTER, 0)
+ self.label_13 = wx.StaticText(self.panel_1, wx.ID_ANY, u"Количество полос \n Вертикальной улицы")
+ self.grid_sizer_1.Add(self.label_13, 0, wx.ALIGN_CENTER, 0)
self.kolvoPolosVert = wx.StaticText(self.panel_1, wx.ID_ANY, "")
- grid_sizer_1.Add(self.kolvoPolosVert, 0, wx.ALIGN_CENTER, 0)
- sizer_2.Add(grid_sizer_1, 1, wx.EXPAND, 0)
+ self.grid_sizer_1.Add(self.kolvoPolosVert, 0, wx.ALIGN_CENTER, 0)
+ self.sizer_2.Add(self.grid_sizer_1, 1, wx.EXPAND, 0)
- label_18 = wx.StaticText(self.panel_1, wx.ID_ANY, u"Выберите тип пересечения")
- label_18.SetFont(wx.Font(14, wx.DEFAULT, wx.NORMAL, wx.BOLD, 0, ""))
- sizer_2.Add(label_18, 0, wx.ALL, 9)
- grid_sizer_3.Add(self.radio_btn_2, 0, wx.ALIGN_CENTER_HORIZONTAL, 0)
- grid_sizer_3.Add(self.radio_btn_3, 0, wx.ALIGN_CENTER_HORIZONTAL, 0)
+ self.label_18 = wx.StaticText(self.panel_1, wx.ID_ANY, u"Выберите тип пересечения")
+ self.label_18.SetFont(wx.Font(14, wx.DEFAULT, wx.NORMAL, wx.BOLD, 0, ""))
+ self.sizer_2.Add(self.label_18, 0, wx.ALL, 9)
+ self.grid_sizer_3.Add(self.radio_krest, 0, wx.ALIGN_CENTER_HORIZONTAL, 0)
+ self.grid_sizer_3.Add(self.radio_t_obr, 0, wx.ALIGN_CENTER_HORIZONTAL, 0)
- self.imgor = "..\\img\\perekr-4.jpg"
- self.img = self.scale_bitmap(self.imgor, 150, 150)
- self.bitmap_4 = wx.StaticBitmap(self.panel_1, wx.ID_ANY, wx.Bitmap(100, 100, wx.BITMAP_TYPE_ANY), style=wx.BORDER_NONE)
- self.bitmap_4.SetBitmap(wx.Bitmap(self.img))
- grid_sizer_3.Add(self.bitmap_4, 0, wx.ALIGN_CENTER, 0)
- self.bitmap_5 = wx.StaticBitmap(self.panel_1, wx.ID_ANY, wx.Bitmap(100, 100, wx.BITMAP_TYPE_ANY))
- grid_sizer_3.Add(self.bitmap_5, 0, 0, 0)
- sizer_2.Add(grid_sizer_3, 1, wx.EXPAND, 0)
+ self.label_15 = wx.StaticText(self.panel_1, wx.ID_ANY, u"Необходимо расчитать:")
+ self.label_15.SetFont(wx.Font(14, wx.DEFAULT, wx.NORMAL, wx.BOLD, 0, ""))
+ self.sizer_2.Add(self.label_15, 0, 0, 0)
+ self.label_16 = wx.StaticText(self.panel_1, wx.ID_ANY, u"Ширину проезжей части \n Горизонтальной улицы")
+ self.grid_sizer_2.Add(self.label_16, 0, wx.ALIGN_CENTER_VERTICAL | wx.LEFT | wx.RIGHT, 0)
+ self.grid_sizer_2.Add(self.shir_horiz, 0, wx.ALIGN_CENTER, 0)
- label_15 = wx.StaticText(self.panel_1, wx.ID_ANY, u"Необходимо расчитать:")
- label_15.SetFont(wx.Font(14, wx.DEFAULT, wx.NORMAL, wx.BOLD, 0, ""))
- sizer_2.Add(label_15, 0, 0, 0)
- label_16 = wx.StaticText(self.panel_1, wx.ID_ANY, u"Ширину проезжей части \n Горизонтальной улицы")
- grid_sizer_2.Add(label_16, 0, wx.ALIGN_CENTER_VERTICAL | wx.LEFT | wx.RIGHT, 0)
- grid_sizer_2.Add(self.text_ctrl_1, 0, wx.ALIGN_CENTER, 0)
+ self.bitmap_2 = wx.StaticBitmap(self.panel_1, wx.ID_ANY, wx.Bitmap(100, 100, wx.BITMAP_TYPE_ANY))
+ self.bitmap_2.Hide()
+ self.grid_sizer_2.Add(self.bitmap_2, 0, 0, 0)
- bitmap_2 = wx.StaticBitmap(self.panel_1, wx.ID_ANY, wx.Bitmap(100, 100, wx.BITMAP_TYPE_ANY))
- bitmap_2.Hide()
- grid_sizer_2.Add(bitmap_2, 0, 0, 0)
+ self.label_17 = wx.StaticText(self.panel_1, wx.ID_ANY, u"Ширину проезжей части \n Вертикальной улицы")
+ self.grid_sizer_2.Add(self.label_17, 0, 0, 0)
+ self.grid_sizer_2.Add(self.shir_vert, 0, wx.ALIGN_CENTER, 0)
- label_17 = wx.StaticText(self.panel_1, wx.ID_ANY, u"Ширину проезжей части \n Вертикальной улицы")
- grid_sizer_2.Add(label_17, 0, 0, 0)
- grid_sizer_2.Add(self.text_ctrl_2, 0, wx.ALIGN_CENTER, 0)
-
- bitmap_3 = wx.StaticBitmap(self.panel_1, wx.ID_ANY, wx.Bitmap(100, 100, wx.BITMAP_TYPE_ANY))
- grid_sizer_2.Add(bitmap_3, 0, 0, 0)
- sizer_2.Add(grid_sizer_2, 1, wx.EXPAND, 0)
+ self.bitmap_3 = wx.StaticBitmap(self.panel_1, wx.ID_ANY, wx.Bitmap(100, 100, wx.BITMAP_TYPE_ANY))
+ self.grid_sizer_2.Add(self.bitmap_3, 0, 0, 0)
+ self.sizer_2.Add(self.grid_sizer_2, 1, wx.EXPAND, 0)
self.button_1 = wx.Button(self.panel_1, wx.ID_ANY, "Далее")
- sizer_2.Add(self.button_1, 0, wx.ALIGN_RIGHT, 0)
+ self.sizer_2.Add(self.button_1, 0, wx.ALIGN_RIGHT, 0)
- self.panel_1.SetSizer(sizer_2)
- sizer_1.Add(self.panel_1, 1, wx.EXPAND, 0)
- self.SetSizer(sizer_1)
+ self.panel_1.SetSizer(self.sizer_2)
+ self.sizer_1.Add(self.panel_1, 1, wx.EXPAND, 0)
+ self.SetSizer(self.sizer_1)
self.Layout()
def good(self):
- self.img1 = "../img/123.jpg"
+ self.img1 = self.imgPath + "123.jpg"
self.img4 = self.scale_bitmap(self.img1, 50, 50)
self.bitmap_2.SetBitmap(wx.Bitmap(self.img1))
self.bitmap_2.Show()
self.Refresh()
def bad(self):
- self.img2 = "../img/bad.jpg"
- self.img3 = self.scale_bitmap(self.img2, 70, 50)
+ self.img1 = self.imgPath + "bad.jpg"
+ self.img3 = self.scale_bitmap(self.img1, 70, 50)
self.bitmap_3.SetBitmap(wx.Bitmap(self.img3))
self.bitmap_3.Show()
self.Refresh()
@@ -145,15 +163,15 @@ class SeconPageFrame(wx.Frame):
print(self.pr_hor)
print(self.pr_Vert)
- if len(self.text_ctrl_1.GetValue()) > 0:
- if str(self.pr_hor) == self.text_ctrl_1.GetValue():
+ if len(self.shir_horiz.GetValue()) > 0:
+ if str(self.pr_hor) == self.shir_horiz.GetValue():
self.file = open("123", "w").close()
self.file = open("123", "w")
- self.file.writelines(self.text_ctrl_1.GetValue() + "\n")
+ self.file.writelines(self.shir_horiz.GetValue() + "\n")
self.file.close()
print("good")
self.bitmap_2.Hide()
- self.img1 = "../img/123.jpg"
+ self.img1 = self.imgPath + "123.jpg"
self.img4 = self.scale_bitmap(self.img1, 50, 50)
self.bitmap_2.SetBitmap(wx.Bitmap(self.img4))
self.bitmap_2.Show()
@@ -161,18 +179,18 @@ class SeconPageFrame(wx.Frame):
else:
print("bad")
self.bitmap_2.Hide()
- self.img2 = "../img/bad.jpg"
- self.img3 = self.scale_bitmap(self.img2, 70, 50)
+ self.img1 = self.imgPath + "bad.jpg"
+ self.img3 = self.scale_bitmap(self.img1, 70, 50)
self.bitmap_2.SetBitmap(wx.Bitmap(self.img3))
self.bitmap_2.Show()
- self.text_ctrl_1.SetValue(str(self.pr_hor))
+ self.shir_horiz.SetValue(str(self.pr_hor))
self.Refresh()
- if len(self.text_ctrl_2.GetValue()) > 0:
- if str(self.pr_Vert) == self.text_ctrl_2.GetValue() and len(self.text_ctrl_2.GetValue()) > 0:
+ if len(self.shir_vert.GetValue()) > 0:
+ if str(self.pr_Vert) == self.shir_vert.GetValue() and len(self.shir_vert.GetValue()) > 0:
print("good")
self.bitmap_3.Hide()
- self.img1 = "../img/123.jpg"
+ self.img1 = self.imgPath + "123.jpg"
self.img4 = self.scale_bitmap(self.img1, 50, 50)
self.bitmap_3.SetBitmap(wx.Bitmap(self.img4))
self.bitmap_3.Show()
@@ -180,18 +198,18 @@ class SeconPageFrame(wx.Frame):
else:
print("Bad")
self.bitmap_3.Hide()
- self.img2 = "../img/bad.jpg"
- self.img3 = self.scale_bitmap(self.img2, 70, 50)
+ self.img1 = self.imgPath + "bad.jpg"
+ self.img3 = self.scale_bitmap(self.img1, 70, 50)
self.bitmap_3.SetBitmap(wx.Bitmap(self.img3))
self.bitmap_3.Show()
- self.text_ctrl_2.SetValue(str(self.pr_Vert))
+ self.shir_vert.SetValue(str(self.pr_Vert))
self.Refresh()
def proverka_radiobtn(self):
self.s = 1
- print(self.radio_btn_2.GetValue())
- print(self.radio_btn_3.GetValue())
- if self.radio_btn_2.GetValue() == self.radio_btn_2.GetValue():
+ print(self.radio_krest.GetValue())
+ print(self.radio_t_obr.GetValue())
+ if self.radio_krest.GetValue() == self.radio_krest.GetValue():
self.error_radio_btn()
self.s = 0
return self.s
@@ -201,13 +219,15 @@ class SeconPageFrame(wx.Frame):
page3.Page3.OnInit(page3)
self.Destroy()
+
class SecondPage(wx.App):
def OnInit(self):
- self.frame = SeconPageFrame(None, wx.ID_ANY, "")
+ self.frame = SecondPageFrame(None, wx.ID_ANY)
self.frame.Show()
+ self.frame.Center()
+
return True
-# end of class SecondPage
if __name__ == "__main__":
SeconPage = SecondPage(0)
diff --git a/gui/page3.py b/gui/page3.py
index 97039ec..ba0a271 100755
--- a/gui/page3.py
+++ b/gui/page3.py
@@ -618,9 +618,11 @@ class Page3Frame(wx.Frame):
self.text_ctrl_1.SetValue(str(self.s1))
self.Refresh()
def gopage4(self, event):
- from gui import page4
- page4.MyApp.OnInit(page4)
- self.Destroy()
+ #from gui import page4
+ #page4.MyApp.OnInit(page4)
+ #self.Destroy()
+ pass
+
class Page3(wx.App):
diff --git a/img/bad.png b/img/bad.png
new file mode 100644
index 0000000..9783ba7
Binary files /dev/null and b/img/bad.png differ
diff --git a/img/perekr-4.jpg b/img/perekr4.jpg
similarity index 100%
rename from img/perekr-4.jpg
rename to img/perekr4.jpg
diff --git a/main.py b/main.py
index 3d5137e..4db5fcf 100644
--- a/main.py
+++ b/main.py
@@ -5,21 +5,26 @@ from db.models import Student
from sqlalchemy import exists
from db.models import Session
from gui import SecondPage
-
import logging
+import platform
import os
-logging.basicConfig(filename="app.log",
+
+#\ - винда | - другие ос
+
+
+class MyFrame(wx.Frame):
+ def __init__(self, *args, **kwds):
+
+ logging.basicConfig(filename="app.log",
filemode='a',
format='%(asctime)s,%(msecs)d %(name)s %(levelname)s %(message)s',
datefmt='%H:%M:%S',
level=logging.DEBUG)
-logging.info("Running Urban Planning")
+ logging.info("main page runing")
-class MyFrame(wx.Frame):
- def __init__(self, *args, **kwds):
# begin wxGlade: MyFrame.__init__
kwds["style"] = kwds.get("style", 0) | wx.DEFAULT_FRAME_STYLE
wx.Frame.__init__(self, *args, **kwds)
@@ -28,7 +33,7 @@ class MyFrame(wx.Frame):
self.inpt_familia = wx.TextCtrl(self.panel_1, wx.ID_ANY, "")
self.inpt_group = wx.TextCtrl(self.panel_1, wx.ID_ANY, "")
self.inpt_zachetka = wx.TextCtrl(self.panel_1, wx.ID_ANY, "")
- self.btn_settings = wx.Button(self.panel_1, wx.ID_ANY, u"\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438")
+ self.btn_settings = wx.Button(self.panel_1, wx.ID_ANY, u"Настройки")
self.btn_next = wx.Button(self.panel_1, wx.ID_ANY, u"\u0414\u0430\u043b\u0435\u0435")
self.btn_settings.Bind(wx.EVT_BUTTON, self.setup)
@@ -103,9 +108,6 @@ class MyFrame(wx.Frame):
dlg.Destroy()
def go_page2(self, event):
-
-
-
name = self.inpt_name.GetValue()
name = name.replace(' ', '')
@@ -136,13 +138,10 @@ class MyFrame(wx.Frame):
new_session.add(student)
new_session.commit()
-
+ from gui import SecondPage
SecondPage.SecondPage.OnInit(SecondPage)
self.Destroy()
-
-
-
# todo Перенести весь функционал из main.py
# todo Подключить логирование
# todo Настроить относительные пути к ресурсам
@@ -150,7 +149,7 @@ class MyFrame(wx.Frame):
def setup(self):
- pass
+ print("Setup pressed")
class MyApp(wx.App):
diff --git a/src/page1.wxg b/src/page1.wxg
new file mode 100644
index 0000000..87b1ac3
--- /dev/null
+++ b/src/page1.wxg
@@ -0,0 +1,227 @@
+
+
+
+
+
+
diff --git a/src/page1.wxg.bak b/src/page1.wxg.bak
new file mode 100644
index 0000000..22835d0
--- /dev/null
+++ b/src/page1.wxg.bak
@@ -0,0 +1,226 @@
+
+
+
+
+
+ 1200, 600
+ frame
+
+
+ wxVERTICAL
+
+
+ 0
+ wxEXPAND
+
+
+ wxVERTICAL
+
+
+ 20
+ wxLEFT|wxRIGHT|wxBOTTOM|wxALIGN_CENTER
+
+
+ 14
+ default
+
+ normal
+ 0
+
+
+
+
+
+
+
+ 0
+ wxALIGN_CENTER
+
+
+ 12
+ default
+
+ normal
+ 0
+
+
+
+
+
+
+
+ 0
+
+
+ 12
+ default
+
+ normal
+ 0
+
+
+
+
+
+
+
+ 0
+ wxEXPAND
+
+ 0
+ 2
+ 0
+ 0
+
+
+ 0
+ wxALIGN_CENTER
+
+
+ 12
+ default
+
+ normal
+ 0
+
+
+
+
+
+
+
+ 0
+ wxALIGN_CENTER
+
+
+ 12
+ default
+
+ normal
+ 0
+
+
+
+
+
+
+ 0
+ wxALIGN_CENTER
+
+
+ 12
+ default
+
+ normal
+ 0
+
+
+
+
+
+
+
+ 0
+ wxALIGN_CENTER
+
+
+ 12
+ default
+
+ normal
+ 0
+
+
+
+
+
+
+ 0
+ wxALIGN_CENTER
+
+
+ 12
+ default
+
+ normal
+ 0
+
+
+
+
+
+
+
+ 0
+ wxALIGN_CENTER
+
+
+
+
+
+ 0
+ wxALIGN_CENTER
+
+
+ 12
+ default
+
+ normal
+ 0
+
+
+
+
+
+
+
+ 0
+ wxALIGN_CENTER
+
+
+ 12
+ default
+
+ normal
+ 0
+
+
+
+
+
+
+
+
+ 0
+ wxEXPAND
+
+ 0
+ 2
+ 0
+ 0
+
+
+ 0
+ wxALIGN_BOTTOM
+
+ 100, 50
+
+
+
+
+
+ 0
+ wxALIGN_RIGHT|wxALIGN_BOTTOM
+
+ 100, 50
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/second_page.py b/src/second_page.py
new file mode 100644
index 0000000..a87c300
--- /dev/null
+++ b/src/second_page.py
@@ -0,0 +1,130 @@
+#!/usr/bin/env python3
+# -*- coding: UTF-8 -*-
+#
+# generated by wxGlade 1.1.0pre on Sun Jun 6 15:00:40 2021
+#
+
+import wx
+
+# begin wxGlade: dependencies
+# end wxGlade
+
+# begin wxGlade: extracode
+# end wxGlade
+
+
+class SeconPageFrame(wx.Frame):
+ def __init__(self, *args, **kwds):
+ # begin wxGlade: SeconPageFrame.__init__
+ kwds["style"] = kwds.get("style", 0) | wx.DEFAULT_FRAME_STYLE
+ wx.Frame.__init__(self, *args, **kwds)
+ self.SetSize((800, 780))
+ self.SetTitle("frame")
+
+ sizer_1 = wx.BoxSizer(wx.VERTICAL)
+
+ self.panel_1 = wx.Panel(self, wx.ID_ANY)
+ sizer_1.Add(self.panel_1, 1, wx.EXPAND, 0)
+
+ sizer_2 = wx.StaticBoxSizer(wx.StaticBox(self.panel_1, wx.ID_ANY, "sizer_2"), wx.VERTICAL)
+
+ label_1 = wx.StaticText(self.panel_1, wx.ID_ANY, u"Исходные данные для расчета\n")
+ label_1.SetFont(wx.Font(18, wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_BOLD, 0, ""))
+ sizer_2.Add(label_1, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALL, 0)
+
+ grid_sizer_1 = wx.GridSizer(0, 4, 0, 0)
+ sizer_2.Add(grid_sizer_1, 1, wx.EXPAND, 0)
+
+ label_7 = wx.StaticText(self.panel_1, wx.ID_ANY, u"Категория\nГоризональной улицы")
+ grid_sizer_1.Add(label_7, 0, wx.ALIGN_CENTER | wx.ALL, 10)
+
+ label_8 = wx.StaticText(self.panel_1, wx.ID_ANY, "", style=wx.ALIGN_CENTER_HORIZONTAL)
+ grid_sizer_1.Add(label_8, 0, wx.ALIGN_CENTER, 0)
+
+ label_9 = wx.StaticText(self.panel_1, wx.ID_ANY, u"Категория \nВертикальной улицы")
+ grid_sizer_1.Add(label_9, 0, wx.ALIGN_CENTER, 0)
+
+ label_10 = wx.StaticText(self.panel_1, wx.ID_ANY, "")
+ grid_sizer_1.Add(label_10, 0, wx.ALIGN_CENTER, 0)
+
+ label_11 = wx.StaticText(self.panel_1, wx.ID_ANY, u"Количество полос\nГоризонтальной улицы")
+ grid_sizer_1.Add(label_11, 0, wx.ALIGN_CENTER, 0)
+
+ label_12 = wx.StaticText(self.panel_1, wx.ID_ANY, "", style=wx.ALIGN_CENTER_HORIZONTAL)
+ grid_sizer_1.Add(label_12, 0, wx.ALIGN_CENTER, 0)
+
+ label_13 = wx.StaticText(self.panel_1, wx.ID_ANY, u"Количество полос \nВертикальной улицы")
+ grid_sizer_1.Add(label_13, 0, wx.ALIGN_CENTER, 0)
+
+ label_14 = wx.StaticText(self.panel_1, wx.ID_ANY, "")
+ grid_sizer_1.Add(label_14, 0, wx.ALIGN_CENTER, 0)
+
+ label_18 = wx.StaticText(self.panel_1, wx.ID_ANY, u"Выберите тип пересечения")
+ label_18.SetFont(wx.Font(14, wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_BOLD, 0, ""))
+ sizer_2.Add(label_18, 0, wx.ALL, 9)
+
+ grid_sizer_3 = wx.GridSizer(0, 2, 0, 0)
+ sizer_2.Add(grid_sizer_3, 1, wx.EXPAND, 0)
+
+ self.radio_btn_2 = wx.RadioButton(self.panel_1, wx.ID_ANY, u"Крестооборазный\n")
+ grid_sizer_3.Add(self.radio_btn_2, 0, wx.ALIGN_CENTER_HORIZONTAL, 0)
+
+ self.radio_btn_3 = wx.RadioButton(self.panel_1, wx.ID_ANY, u"Т-образный")
+ grid_sizer_3.Add(self.radio_btn_3, 0, wx.ALIGN_CENTER_HORIZONTAL, 0)
+
+ bitmap_4 = wx.StaticBitmap(self.panel_1, wx.ID_ANY, wx.Bitmap("D:\\Programming\\PythonProjects\\odd-perekrestok\\img\\perekr4.jpg", wx.BITMAP_TYPE_ANY), style=wx.BORDER_NONE)
+ grid_sizer_3.Add(bitmap_4, 0, wx.ALIGN_CENTER, 0)
+
+ bitmap_5 = wx.StaticBitmap(self.panel_1, wx.ID_ANY, wx.Bitmap("D:\\Programming\\PythonProjects\\odd-perekrestok\\img\\perekr-t.jpg", wx.BITMAP_TYPE_ANY), style=wx.BORDER_NONE)
+ grid_sizer_3.Add(bitmap_5, 0, wx.ALIGN_CENTER, 0)
+
+ label_15 = wx.StaticText(self.panel_1, wx.ID_ANY, u"Необходимо расчитать:")
+ label_15.SetFont(wx.Font(14, wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_BOLD, 0, ""))
+ sizer_2.Add(label_15, 0, wx.ALL, 0)
+
+ grid_sizer_2 = wx.FlexGridSizer(1, 9, 0, 0)
+ sizer_2.Add(grid_sizer_2, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALL, 0)
+
+ label_16 = wx.StaticText(self.panel_1, wx.ID_ANY, u"Ширину проезжей части\nГоризонтальной улицы")
+ grid_sizer_2.Add(label_16, 0, wx.ALIGN_CENTER_VERTICAL | wx.LEFT | wx.RIGHT, 0)
+
+ self.text_ctrl_1 = wx.TextCtrl(self.panel_1, wx.ID_ANY, "")
+ grid_sizer_2.Add(self.text_ctrl_1, 0, wx.ALIGN_CENTER, 0)
+
+ bitmap_2 = wx.StaticBitmap(self.panel_1, wx.ID_ANY, wx.Bitmap("D:\\Programming\\PythonProjects\\odd-perekrestok\\img\\123.jpg", wx.BITMAP_TYPE_ANY))
+ bitmap_2.Hide()
+ grid_sizer_2.Add(bitmap_2, 0, 0, 0)
+
+ label_17 = wx.StaticText(self.panel_1, wx.ID_ANY, u"Ширину проезжей части\nВертикальной улицы")
+ grid_sizer_2.Add(label_17, 0, 0, 0)
+
+ self.text_ctrl_2 = wx.TextCtrl(self.panel_1, wx.ID_ANY, "")
+ grid_sizer_2.Add(self.text_ctrl_2, 0, wx.ALIGN_CENTER, 0)
+
+ bitmap_3 = wx.StaticBitmap(self.panel_1, wx.ID_ANY, wx.Bitmap("D:\\Programming\\PythonProjects\\odd-perekrestok\\img\\123.jpg", wx.BITMAP_TYPE_ANY))
+ grid_sizer_2.Add(bitmap_3, 0, 0, 0)
+
+ self.button_1 = wx.Button(self.panel_1, wx.ID_ANY, "button_1")
+ sizer_2.Add(self.button_1, 0, wx.ALIGN_RIGHT, 0)
+
+ self.panel_1.SetSizer(sizer_2)
+
+ self.SetSizer(sizer_1)
+
+ self.Layout()
+ # end wxGlade
+
+# end of class SeconPageFrame
+
+class SecondPage(wx.App):
+ def OnInit(self):
+ self.frame = SeconPageFrame(None, wx.ID_ANY, "")
+ self.SetTopWindow(self.frame)
+ self.frame.Show()
+ return True
+
+# end of class SecondPage
+
+if __name__ == "__main__":
+ SeconPage = SecondPage(0)
+ SeconPage.MainLoop()
diff --git a/src/second_page.py.bak b/src/second_page.py.bak
new file mode 100644
index 0000000..6aba0c0
--- /dev/null
+++ b/src/second_page.py.bak
@@ -0,0 +1,134 @@
+#!/usr/bin/env python3
+# -*- coding: UTF-8 -*-
+#
+# generated by wxGlade 1.1.0pre on Sun Jun 6 15:00:40 2021
+#
+
+import wx
+
+# begin wxGlade: dependencies
+# end wxGlade
+
+# begin wxGlade: extracode
+# end wxGlade
+
+
+class SeconPageFrame(wx.Frame):
+ def __init__(self, *args, **kwds):
+ # begin wxGlade: SeconPageFrame.__init__
+ kwds["style"] = kwds.get("style", 0) | wx.DEFAULT_FRAME_STYLE
+ wx.Frame.__init__(self, *args, **kwds)
+ self.SetSize((800, 780))
+ self.SetTitle("frame")
+
+ sizer_1 = wx.BoxSizer(wx.VERTICAL)
+
+ self.panel_1 = wx.Panel(self, wx.ID_ANY)
+ sizer_1.Add(self.panel_1, 1, wx.EXPAND, 0)
+
+ sizer_2 = wx.StaticBoxSizer(wx.StaticBox(self.panel_1, wx.ID_ANY, "sizer_2"), wx.VERTICAL)
+
+ label_1 = wx.StaticText(self.panel_1, wx.ID_ANY, u"Исходные данные для расчета\n")
+ label_1.SetFont(wx.Font(18, wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_BOLD, 0, ""))
+ sizer_2.Add(label_1, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALL, 0)
+
+ grid_sizer_1 = wx.GridSizer(0, 4, 0, 0)
+ sizer_2.Add(grid_sizer_1, 1, wx.EXPAND, 0)
+
+ label_7 = wx.StaticText(self.panel_1, wx.ID_ANY, u"Категория\nГоризональной улицы")
+ grid_sizer_1.Add(label_7, 0, wx.ALIGN_CENTER | wx.ALL, 10)
+
+ label_8 = wx.StaticText(self.panel_1, wx.ID_ANY, "", style=wx.ALIGN_CENTER_HORIZONTAL)
+ grid_sizer_1.Add(label_8, 0, wx.ALIGN_CENTER, 0)
+
+ label_9 = wx.StaticText(self.panel_1, wx.ID_ANY, u"Категория \nВертикальной улицы")
+ grid_sizer_1.Add(label_9, 0, wx.ALIGN_CENTER, 0)
+
+ label_10 = wx.StaticText(self.panel_1, wx.ID_ANY, "")
+ grid_sizer_1.Add(label_10, 0, wx.ALIGN_CENTER, 0)
+
+ label_11 = wx.StaticText(self.panel_1, wx.ID_ANY, u"Количество полос\nГоризонтальной улицы")
+ grid_sizer_1.Add(label_11, 0, wx.ALIGN_CENTER, 0)
+
+ label_12 = wx.StaticText(self.panel_1, wx.ID_ANY, "", style=wx.ALIGN_CENTER_HORIZONTAL)
+ grid_sizer_1.Add(label_12, 0, wx.ALIGN_CENTER, 0)
+
+ label_13 = wx.StaticText(self.panel_1, wx.ID_ANY, u"Количество полос \nВертикальной улицы")
+ grid_sizer_1.Add(label_13, 0, wx.ALIGN_CENTER, 0)
+
+ label_14 = wx.StaticText(self.panel_1, wx.ID_ANY, "")
+ grid_sizer_1.Add(label_14, 0, wx.ALIGN_CENTER, 0)
+
+ label_18 = wx.StaticText(self.panel_1, wx.ID_ANY, u"Выберите тип пересечения")
+ label_18.SetFont(wx.Font(14, wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_BOLD, 0, ""))
+ sizer_2.Add(label_18, 0, wx.ALL, 9)
+
+ grid_sizer_3 = wx.GridSizer(0, 2, 0, 0)
+ sizer_2.Add(grid_sizer_3, 1, wx.EXPAND, 0)
+
+ self.radio_btn_2 = wx.RadioButton(self.panel_1, wx.ID_ANY, u"Крестооборазный\n")
+ grid_sizer_3.Add(self.radio_btn_2, 0, wx.ALIGN_CENTER_HORIZONTAL, 0)
+
+ self.radio_btn_3 = wx.RadioButton(self.panel_1, wx.ID_ANY, u"Т-образный")
+ grid_sizer_3.Add(self.radio_btn_3, 0, wx.ALIGN_CENTER_HORIZONTAL, 0)
+
+ bitmap_4 = wx.StaticBitmap(self.panel_1, wx.ID_ANY, wx.Bitmap("D:\\Programming\\PythonProjects\\odd-perekrestok\\img\\perekr4.jpg", wx.BITMAP_TYPE_ANY), style=wx.BORDER_NONE)
+ grid_sizer_3.Add(bitmap_4, 0, wx.ALIGN_CENTER, 0)
+
+ bitmap_5 = wx.StaticBitmap(self.panel_1, wx.ID_ANY, wx.Bitmap("D:\\Programming\\PythonProjects\\odd-perekrestok\\img\\perekr-t.png", wx.BITMAP_TYPE_ANY), style=wx.BORDER_NONE)
+ grid_sizer_3.Add(bitmap_5, 0, wx.ALIGN_CENTER, 0)
+
+ label_15 = wx.StaticText(self.panel_1, wx.ID_ANY, u"Необходимо расчитать:")
+ label_15.SetFont(wx.Font(14, wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_BOLD, 0, ""))
+ sizer_2.Add(label_15, 0, wx.ALL, 0)
+
+ grid_sizer_2 = wx.FlexGridSizer(1, 9, 0, 0)
+ sizer_2.Add(grid_sizer_2, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALL, 0)
+
+ label_16 = wx.StaticText(self.panel_1, wx.ID_ANY, u"Ширину проезжей части\nГоризонтальной улицы")
+ grid_sizer_2.Add(label_16, 0, wx.ALIGN_CENTER_VERTICAL | wx.LEFT | wx.RIGHT, 0)
+
+ self.text_ctrl_1 = wx.TextCtrl(self.panel_1, wx.ID_ANY, "")
+ grid_sizer_2.Add(self.text_ctrl_1, 0, wx.ALIGN_CENTER, 0)
+
+ bitmap_2 = wx.StaticBitmap(self.panel_1, wx.ID_ANY, wx.Bitmap("/Users/danamir/PycharmProjects/odd-perekrestok/img/good.jpg", wx.BITMAP_TYPE_ANY))
+ bitmap_2.Hide()
+ grid_sizer_2.Add(bitmap_2, 0, 0, 0)
+
+ grid_sizer_2.Add((20, 20), 0, 0, 0)
+
+ label_17 = wx.StaticText(self.panel_1, wx.ID_ANY, u"Ширину проезжей части\nВертикальной улицы")
+ grid_sizer_2.Add(label_17, 0, 0, 0)
+
+ self.text_ctrl_2 = wx.TextCtrl(self.panel_1, wx.ID_ANY, "")
+ grid_sizer_2.Add(self.text_ctrl_2, 0, wx.ALIGN_CENTER, 0)
+
+ bitmap_3 = wx.StaticBitmap(self.panel_1, wx.ID_ANY, wx.Bitmap("/Users/danamir/PycharmProjects/odd-perekrestok/img/good.jpg", wx.BITMAP_TYPE_ANY))
+ grid_sizer_2.Add(bitmap_3, 0, 0, 0)
+
+ grid_sizer_2.Add((20, 20), 0, 0, 0)
+
+ self.button_1 = wx.Button(self.panel_1, wx.ID_ANY, "button_1")
+ sizer_2.Add(self.button_1, 0, wx.ALIGN_RIGHT, 0)
+
+ self.panel_1.SetSizer(sizer_2)
+
+ self.SetSizer(sizer_1)
+
+ self.Layout()
+ # end wxGlade
+
+# end of class SeconPageFrame
+
+class SecondPage(wx.App):
+ def OnInit(self):
+ self.frame = SeconPageFrame(None, wx.ID_ANY, "")
+ self.SetTopWindow(self.frame)
+ self.frame.Show()
+ return True
+
+# end of class SecondPage
+
+if __name__ == "__main__":
+ SeconPage = SecondPage(0)
+ SeconPage.MainLoop()
diff --git a/src/second_page.wxg.bak b/src/second_page.wxg.bak
new file mode 100644
index 0000000..b82420f
--- /dev/null
+++ b/src/second_page.wxg.bak
@@ -0,0 +1,172 @@
+
+
+
+
+
+ 658, 331
+ frame
+
+
+ wxVERTICAL
+
+
+ 0
+ wxALIGN_CENTER_HORIZONTAL
+
+
+ 16
+ default
+
+ bold
+ 0
+
+
+
+
+
+
+
+ 0
+ wxEXPAND
+
+ 0
+ 4
+ 0
+ 0
+
+
+ 0
+ wxALIGN_CENTER
+
+
+
+
+
+
+ 0
+ wxALIGN_CENTER
+
+
+
+
+
+
+ 0
+ wxALIGN_CENTER
+
+
+
+
+
+
+ 0
+ wxALIGN_CENTER
+
+
+
+
+
+ 0
+ wxALIGN_CENTER
+
+
+
+
+
+
+ 0
+ wxALIGN_CENTER
+
+
+
+
+
+
+ 0
+ wxALIGN_CENTER
+
+
+
+
+
+
+ 0
+ wxALIGN_CENTER
+
+
+
+
+
+
+
+ 0
+
+
+ 14
+ default
+
+ bold
+ 0
+
+
+
+
+
+
+
+ 0
+ wxEXPAND
+
+ 0
+ 3
+ 0
+ 0
+
+
+ 0
+ wxLEFT|wxRIGHT|wxALIGN_CENTER_VERTICAL
+
+
+
+
+
+
+ 0
+ wxALIGN_CENTER
+
+
+
+
+
+ 0
+
+ 1
+ /Users/danamir/PycharmProjects/odd-perekrestok/img/good.jpg
+
+
+
+
+ 0
+
+
+
+
+
+
+ 0
+ wxALIGN_CENTER
+
+
+
+
+
+ 0
+
+ /Users/danamir/PycharmProjects/odd-perekrestok/img/good.jpg
+
+
+
+
+
+
+
diff --git a/src/second_page1.wxg b/src/second_page1.wxg
index 35b7cc5..952086c 100644
--- a/src/second_page1.wxg
+++ b/src/second_page1.wxg
@@ -1,5 +1,5 @@
-
+
@@ -152,7 +152,7 @@
wxALIGN_CENTER
- D:\Programming\PythonProjects\odd-perekrestok\img\perekr-4.jpg
+ D:\Programming\PythonProjects\odd-perekrestok\img\perekr4.jpg
@@ -161,7 +161,7 @@
wxALIGN_CENTER
- D:\Programming\PythonProjects\odd-perekrestok\img\perekr-t.png
+ D:\Programming\PythonProjects\odd-perekrestok\img\perekr-t.jpg
@@ -211,15 +211,7 @@
0
1
- /Users/danamir/PycharmProjects/odd-perekrestok/img/good.jpg
-
-
-
-
- 0
-
- 20
- 20
+ D:\Programming\PythonProjects\odd-perekrestok\img\123.jpg
@@ -240,15 +232,7 @@
0
- /Users/danamir/PycharmProjects/odd-perekrestok/img/good.jpg
-
-
-
-
- 0
-
- 20
- 20
+ D:\Programming\PythonProjects\odd-perekrestok\img\123.jpg
diff --git a/src/second_page1.wxg.bak b/src/second_page1.wxg.bak
new file mode 100644
index 0000000..35b7cc5
--- /dev/null
+++ b/src/second_page1.wxg.bak
@@ -0,0 +1,269 @@
+
+
+
+
+
+ 800, 780
+ frame
+
+
+ wxVERTICAL
+
+
+ 0
+ wxEXPAND
+
+
+ wxVERTICAL
+
+
+
+ 0
+ wxALL|wxALIGN_CENTER_HORIZONTAL
+
+
+ 18
+ default
+
+ bold
+ 0
+
+
+
+
+
+
+
+ 0
+ wxEXPAND
+
+ 0
+ 4
+ 0
+ 0
+
+
+ 10
+ wxALL|wxALIGN_CENTER
+
+
+
+
+
+
+ 0
+ wxALIGN_CENTER
+
+
+
+
+
+
+ 0
+ wxALIGN_CENTER
+
+
+
+
+
+
+ 0
+ wxALIGN_CENTER
+
+
+
+
+
+ 0
+ wxALIGN_CENTER
+
+
+
+
+
+
+ 0
+ wxALIGN_CENTER
+
+
+
+
+
+
+ 0
+ wxALIGN_CENTER
+
+
+
+
+
+
+ 0
+ wxALIGN_CENTER
+
+
+
+
+
+
+
+ 9
+ wxALL
+
+
+ 14
+ default
+
+ bold
+ 0
+
+
+
+
+
+
+
+ 0
+ wxEXPAND
+
+ 0
+ 2
+ 0
+ 0
+
+
+ 0
+ wxALIGN_CENTER_HORIZONTAL
+
+
+
+
+
+
+ 0
+ wxALIGN_CENTER_HORIZONTAL
+
+
+
+
+
+
+ 0
+ wxALIGN_CENTER
+
+
+ D:\Programming\PythonProjects\odd-perekrestok\img\perekr-4.jpg
+
+
+
+
+ 0
+ wxALIGN_CENTER
+
+
+ D:\Programming\PythonProjects\odd-perekrestok\img\perekr-t.png
+
+
+
+
+
+
+ 0
+ wxALL
+
+
+ 14
+ default
+
+ bold
+ 0
+
+
+
+
+
+
+
+ 0
+ wxALL|wxALIGN_CENTER_HORIZONTAL
+
+ 1
+ 9
+ 0
+ 0
+
+
+ 0
+ wxLEFT|wxRIGHT|wxALIGN_CENTER_VERTICAL
+
+
+
+
+
+
+ 0
+ wxALIGN_CENTER
+
+
+
+
+
+ 0
+
+ 1
+ /Users/danamir/PycharmProjects/odd-perekrestok/img/good.jpg
+
+
+
+
+ 0
+
+ 20
+ 20
+
+
+
+
+ 0
+
+
+
+
+
+
+ 0
+ wxALIGN_CENTER
+
+
+
+
+
+ 0
+
+ /Users/danamir/PycharmProjects/odd-perekrestok/img/good.jpg
+
+
+
+
+ 0
+
+ 20
+ 20
+
+
+
+
+
+
+ 0
+ wxALIGN_RIGHT
+
+
+
+
+
+
+
+
+
+