Пример #1
0
    def __on_open(self):
        window = QMdiSubWindow()
        window.setAttribute(Qt.WA_DeleteOnClose, True)
        window.setWindowTitle('Sub Window ' + str(MyMainWindow.window_index))
        window.resize(300, 200)
        self.mdi_area.addSubWindow(window)
        window.show()

        MyMainWindow.window_index += 1
Пример #2
0
 def sendOnecard(self):
     '''
     随机一张牌,发出去。
     '''
     randomflag = self.randomsend(1)
     subcard = QMdiSubWindow()
     subcard.setWidget(Card(randomflag))
     self.mid.addSubWindow(subcard)
     subcard.setWindowFlags(Qt.WindowMinimizeButtonHint)
     # 设置窗口属性,让其只显示最小化按钮。
     subcard.resize(150, 200)
     subcard.show()
Пример #3
0
 def sendFivecards(self):
     '''
     随机5张牌
     '''
     randomflag = self.randomsend(5)
     for card in randomflag:
         # 遍历5张牌,发出去。
         subcard = QMdiSubWindow()
         subcard.setWidget(Card(card))
         self.mid.addSubWindow(subcard)
         subcard.setWindowFlags(Qt.WindowMinimizeButtonHint)
         # 设置窗口属性,让其只显示最小化按钮。
         subcard.resize(150, 200)
         subcard.show()
    def WindowTrig(self, p):

        #=====================================================================================================================================================================

        if p.text() == "Patron Memento":
            subState = QMdiSubWindow()
            subState.resize(400, 400)

            widgetState = QWidget()

            self.layoutState = QGridLayout(widgetState)
            self.layoutState.setContentsMargins(0, 0, 0, 0)
            self.layoutState.setObjectName("gridState")

            labelEstado = QLabel()
            labelEstado.setText("Memento")
            self.layoutState.addWidget(labelEstado, 0, 1, 1, 1)

            self.comboEstado = QComboBox()
            self.comboEstado.addItem("blue")
            self.comboEstado.addItem("yellow")
            self.comboEstado.addItem("red")
            self.comboEstado.addItem("green")
            self.layoutState.addWidget(self.comboEstado, 0, 2, 1, 1)

            btnanterior = QPushButton('Color Anterior')
            self.layoutState.addWidget(btnanterior, 1, 2, 1, 1)
            btnanterior.clicked.connect(self.button_anterior)

            btnnext = QPushButton('Color Siguiente')
            self.layoutState.addWidget(btnnext, 1, 4, 1, 1)
            btnnext.clicked.connect(self.button_next)

            btnver = QPushButton('Ver')
            self.layoutState.addWidget(btnver, 1, 6, 1, 1)
            btnver.clicked.connect(self.button_ver)

            subState.setWidget(widgetState)
            subState.setWindowTitle("Patrón Memento")
            self.mdi.addSubWindow(subState)
            subState.show()
Пример #5
0
class MainWindow(QMainWindow):
    def __init__(self, win_arg):
        super(MainWindow, self).__init__()
        loadUi(getcwd() + '/ui/main.ui', self)
        self.mdi.setBackground(QBrush(QImage(getcwd() + "/images/logo.png")))
        self.setWindowIcon(QIcon(getcwd() + "/images/icon.ico"))

        self.menu_3.setEnabled(False)

        if "-FS" in win_arg:
            self.arg_FS()

        logging.config.fileConfig(getcwd() + '/setting/logger_conf.ini')
        self.logger = logging.getLogger("MainLog")

        self.show()
        self.setDisabled(True)

        self.login = login_window.LoginWindow(self)
        # self.admin_login()

    def access(self):
        for item in User().access_list(self.__class__.__name__):
            a = getattr(self, item["atr1"])
            if item["atr2"]:
                a = getattr(a, item["atr2"])

            if item["value"]:
                try:
                    val = int(item["value"])
                except:
                    val = item["value"]
                a(val)
            else:
                a()

    def view_material(self):
        self.material = supply_material.MaterialSupplyList()
        self.sub_material = QMdiSubWindow()
        self.sub_material.setWidget(self.material)
        self.mdi.addSubWindow(self.sub_material)
        self.sub_material.resize(self.material.size())
        self.sub_material.show()

    def view_material_provider(self):
        self.mat_prov = provider.ProviderMaterial()
        self.sub_provider = QMdiSubWindow()
        self.sub_provider.setWidget(self.mat_prov)
        self.mdi.addSubWindow(self.sub_provider)
        self.sub_provider.resize(self.mat_prov.size())
        self.sub_provider.show()

    def view_material_name(self):
        self.material_neme = supply_material.MaterialName()
        self.sub_mater_name = QMdiSubWindow()
        self.sub_mater_name.setWidget(self.material_neme)
        self.mdi.addSubWindow(self.sub_mater_name)
        self.sub_mater_name.resize(self.material_neme.size())
        self.sub_mater_name.show()

    def view_comparing_name(self):
        self.comparing_name = comparing.ComparingName()
        self.sub_comp_name = QMdiSubWindow()
        self.sub_comp_name.setWidget(self.comparing_name)
        self.mdi.addSubWindow(self.sub_comp_name)
        self.sub_comp_name.resize(self.comparing_name.size())
        self.sub_comp_name.show()

    def view_accessories_name(self):
        self.accessories_name = supply_accessories.AccessoriesName()
        self.sub_accsess_name = QMdiSubWindow()
        self.sub_accsess_name.setWidget(self.accessories_name)
        self.mdi.addSubWindow(self.sub_accsess_name)
        self.sub_accsess_name.resize(self.accessories_name.size())
        self.sub_accsess_name.show()

    def view_accessories_provider(self):
        self.access_prov = provider.ProviderAccessories()
        self.sub_provider_access = QMdiSubWindow()
        self.sub_provider_access.setWidget(self.access_prov)
        self.mdi.addSubWindow(self.sub_provider_access)
        self.sub_provider_access.resize(self.access_prov.size())
        self.sub_provider_access.show()

    def view_accessories(self):
        self.accessories = supply_accessories.AccessoriesSupplyList()
        self.accessories.set_settings()
        self.sub_accessories = QMdiSubWindow()
        self.sub_accessories.setWidget(self.accessories)
        self.mdi.addSubWindow(self.sub_accessories)
        self.sub_accessories.resize(self.accessories.size())
        self.sub_accessories.show()

    def view_staff_country(self):
        self.staff_country = staff.Country()
        self.sub_staff_country = QMdiSubWindow()
        self.sub_staff_country.setWidget(self.staff_country)
        self.mdi.addSubWindow(self.sub_staff_country)
        self.sub_staff_country.resize(self.staff_country.size())
        self.sub_staff_country.show()

    def view_staff_position(self):
        self.staff_position = staff.StaffPosition()
        self.sub_staff_position = QMdiSubWindow()
        self.sub_staff_position.setWidget(self.staff_position)
        self.mdi.addSubWindow(self.sub_staff_position)
        self.sub_staff_position.resize(self.staff_position.size())
        self.sub_staff_position.show()

    def view_staff_list(self):
        self.staff_list = staff.Staff()
        self.sub_staff_list = QMdiSubWindow()
        self.sub_staff_list.setWidget(self.staff_list)
        self.mdi.addSubWindow(self.sub_staff_list)
        self.sub_staff_list.resize(self.staff_list.size())
        self.sub_staff_list.show()

    def view_staff_calendar(self):
        self.staff_calendar = notification.WorkCalendar()
        self.sub_staff_calendar = QMdiSubWindow()
        self.sub_staff_calendar.setWidget(self.staff_calendar)
        self.mdi.addSubWindow(self.sub_staff_calendar)
        self.sub_staff_calendar.resize(self.staff_calendar.size())
        self.sub_staff_calendar.show()

    def view_staff_card(self):
        self.staff_card = staff_traffic.StaffCardList()
        self.sub_staff_card = QMdiSubWindow()
        self.sub_staff_card.setWidget(self.staff_card)
        self.mdi.addSubWindow(self.sub_staff_card)
        self.sub_staff_card.resize(self.staff_card.size())
        self.sub_staff_card.show()

    def view_staff_traffic(self):
        self.staff_traffic = staff_traffic.StaffTraffic()
        self.sub_staff_traffic = QMdiSubWindow()
        self.sub_staff_traffic.setWidget(self.staff_traffic)
        self.mdi.addSubWindow(self.sub_staff_traffic)
        self.sub_staff_traffic.resize(self.staff_traffic.size())
        self.sub_staff_traffic.show()

    def view_settings_path(self):
        self.sett_path = program_settings.SettingsPath()
        self.sub_sett_path = QMdiSubWindow()
        self.sub_sett_path.setWidget(self.sett_path)
        self.mdi.addSubWindow(self.sub_sett_path)
        self.sub_sett_path.resize(self.sett_path.size())
        self.sub_sett_path.show()

    def view_settings_road(self):
        self.sett_road = program_settings.SettingsRoad()
        self.sub_sett_road = QMdiSubWindow()
        self.sub_sett_road.setWidget(self.sett_road)
        self.mdi.addSubWindow(self.sub_sett_road)
        self.sub_sett_road.resize(self.sett_road.size())
        self.sub_sett_road.show()

    def view_clients(self):
        self.clients = clients.ClientList()
        self.sub_clients = QMdiSubWindow()
        self.sub_clients.setWidget(self.clients)
        self.mdi.addSubWindow(self.sub_clients)
        self.sub_clients.resize(self.clients.size())
        self.sub_clients.show()

    def view_operation(self):
        self.operation_list = operation.OperationList()
        self.sub_operation_list = QMdiSubWindow()
        self.sub_operation_list.setWidget(self.operation_list)
        self.mdi.addSubWindow(self.sub_operation_list)
        self.sub_operation_list.resize(self.operation_list.size())
        self.sub_operation_list.show()

    def view_add_operation(self):
        self.add_operation_list = operation.OperationAddList()
        self.sub_add_operation_list = QMdiSubWindow()
        self.sub_add_operation_list.setWidget(self.add_operation_list)
        self.mdi.addSubWindow(self.sub_add_operation_list)
        self.sub_add_operation_list.resize(self.add_operation_list.size())
        self.sub_add_operation_list.show()

    def view_product(self):
        self.article_list = article.ArticleListOld()
        self.sub_article_list = QMdiSubWindow()
        self.sub_article_list.setWidget(self.article_list)
        self.mdi.addSubWindow(self.sub_article_list)
        self.sub_article_list.resize(self.article_list.size())
        self.sub_article_list.show()

    def view_order_ooo_list(self):
        self.order_list = order.OrderListOOO()
        self.sub_order_list = QMdiSubWindow()
        self.sub_order_list.setWidget(self.order_list)
        self.mdi.addSubWindow(self.sub_order_list)
        self.sub_order_list.resize(self.order_list.size())
        self.sub_order_list.show()

    def view_order_ip_list(self):
        self.order_list = order.OrderListIP()
        self.sub_order_list = QMdiSubWindow()
        self.sub_order_list.setWidget(self.order_list)
        self.mdi.addSubWindow(self.sub_order_list)
        self.sub_order_list.resize(self.order_list.size())
        self.sub_order_list.show()

    def view_cut_mission_list(self):
        self.cut_mission_list = cut.CutListMission()
        self.sub_cut_mission_list = QMdiSubWindow()
        self.sub_cut_mission_list.setWidget(self.cut_mission_list)
        self.mdi.addSubWindow(self.sub_cut_mission_list)
        self.sub_cut_mission_list.resize(self.cut_mission_list.size())
        self.sub_cut_mission_list.show()

    def view_cut_list(self):
        self.cut_list = cut.CutList()
        self.sub_cut_list = QMdiSubWindow()
        self.sub_cut_list.setWidget(self.cut_list)
        self.mdi.addSubWindow(self.sub_cut_list)
        self.sub_cut_list.resize(self.cut_list.size())
        self.sub_cut_list.show()

    def view_article_list(self):
        self.article_list_all = article.ArticleListAll()
        self.sub_article_list_all = QMdiSubWindow()
        self.sub_article_list_all.setWidget(self.article_list_all)
        self.mdi.addSubWindow(self.sub_article_list_all)
        self.sub_article_list_all.resize(self.article_list_all.size())
        self.sub_article_list_all.show()

    def view_article_test(self):
        self.article_test = article.ArticleList()
        self.sub_article_test = QMdiSubWindow()
        self.sub_article_test.setWidget(self.article_test)
        self.mdi.addSubWindow(self.sub_article_test)
        self.sub_article_test.resize(self.article_test.size())
        self.sub_article_test.show()

    def view_pack_list(self):
        self.pack_list = pack.PackList()
        self.sub_pack_list = QMdiSubWindow()
        self.sub_pack_list.setWidget(self.pack_list)
        self.mdi.addSubWindow(self.sub_pack_list)
        self.sub_pack_list.resize(self.pack_list.size())
        self.sub_pack_list.show()

    def view_pay_plus_minus(self):
        self.pay_plus_minus = pay.PayList()
        self.sub_pay_plus_minus = QMdiSubWindow()
        self.sub_pay_plus_minus.setWidget(self.pay_plus_minus)
        self.mdi.addSubWindow(self.sub_pay_plus_minus)
        self.sub_pay_plus_minus.resize(self.pay_plus_minus.size())
        self.sub_pay_plus_minus.show()

    def view_other_order_edi(self):
        self.input_order_edi = other.OrderEDI()
        self.sub_input_order_edi = QMdiSubWindow()
        self.sub_input_order_edi.setWidget(self.input_order_edi)
        self.mdi.addSubWindow(self.sub_input_order_edi)
        self.sub_input_order_edi.resize(self.input_order_edi.size())
        self.sub_input_order_edi.show()

    def view_audit_verification(self):
        self.audit_verification = audit.AuditVerification()
        self.sub_audit_verification = QMdiSubWindow()
        self.sub_audit_verification.setWidget(self.audit_verification)
        self.mdi.addSubWindow(self.sub_audit_verification)
        self.sub_audit_verification.resize(self.audit_verification.size())
        self.sub_audit_verification.show()

    def view_salary_work(self):
        self.salary_list = salary.SalaryList()
        self.sub_salary_list = QMdiSubWindow()
        self.sub_salary_list.setWidget(self.salary_list)
        self.mdi.addSubWindow(self.sub_salary_list)
        self.sub_salary_list.resize(self.salary_list.size())
        self.sub_salary_list.show()

    def view_pack_operation_list(self):
        self.operation_list = operation_list.PayList(no_start_set=True)
        self.sub_operation_list = QMdiSubWindow()
        self.sub_operation_list.setWidget(self.operation_list)
        self.mdi.addSubWindow(self.sub_operation_list)
        self.sub_operation_list.resize(self.operation_list.size())
        self.sub_operation_list.show()

    def view_product_warehouse(self):
        self.product_warehouse = warehouse_product.Warehouse()
        self.sub_product_warehouse = QMdiSubWindow()
        self.sub_product_warehouse.setWidget(self.product_warehouse)
        self.mdi.addSubWindow(self.sub_product_warehouse)
        self.sub_product_warehouse.resize(self.product_warehouse.size())
        self.sub_product_warehouse.show()

    def view_product_warehouse_2(self):
        self.product_warehouse2 = warehouse_product.Warehouse2()
        self.sub_product_warehouse2 = QMdiSubWindow()
        self.sub_product_warehouse2.setWidget(self.product_warehouse2)
        self.mdi.addSubWindow(self.sub_product_warehouse2)
        self.sub_product_warehouse2.resize(self.product_warehouse2.size())
        self.sub_product_warehouse2.show()

    def view_warehouse_rest(self):
        self.rest_warehouse = warehouse_rest.WarehouseRest()
        self.sub_rest_warehouse = QMdiSubWindow()
        self.sub_rest_warehouse.setWidget(self.rest_warehouse)
        self.mdi.addSubWindow(self.sub_rest_warehouse)
        self.sub_rest_warehouse.resize(self.rest_warehouse.size())
        self.sub_rest_warehouse.show()

    def view_warehouse_material(self):
        self.material_warehouse = warehouse_material.Warehouse()
        self.sub_material_warehouse = QMdiSubWindow()
        self.sub_material_warehouse.setWidget(self.material_warehouse)
        self.mdi.addSubWindow(self.sub_material_warehouse)
        self.sub_material_warehouse.resize(self.material_warehouse.size())
        self.sub_material_warehouse.show()

    def view_warehouse_accessories(self):
        self.accessories_warehouse = warehouse_accessories.Warehouse()
        self.sub_material_accessories = QMdiSubWindow()
        self.sub_material_accessories.setWidget(self.accessories_warehouse)
        self.mdi.addSubWindow(self.sub_material_accessories)
        self.sub_material_accessories.resize(self.accessories_warehouse.size())
        self.sub_material_accessories.show()

    def view_warehouse_adjustments_material(self):
        self.adjustments_material = warehouse_adjustments.MaterialAdjustmentsList(
        )
        self.sub_adjustments_material = QMdiSubWindow()
        self.sub_adjustments_material.setWidget(self.adjustments_material)
        self.mdi.addSubWindow(self.sub_adjustments_material)
        self.sub_adjustments_material.resize(self.adjustments_material.size())
        self.sub_adjustments_material.show()

    def view_transaction_warehouse(self):
        self.transaction_warehouse = transaction_warehouse.TransactionWarehouse(
        )
        self.sub_transaction_warehouse = QMdiSubWindow()
        self.sub_transaction_warehouse.setWidget(self.transaction_warehouse)
        self.mdi.addSubWindow(self.sub_transaction_warehouse)
        self.sub_transaction_warehouse.resize(
            self.transaction_warehouse.size())
        self.sub_transaction_warehouse.show()

    def view_test_warehouse_material(self):
        self.test_warehouse_material = test_warehouse.TestWarehouseMaterial()
        self.sub_test_warehouse_material = QMdiSubWindow()
        self.sub_test_warehouse_material.setWidget(
            self.test_warehouse_material)
        self.mdi.addSubWindow(self.sub_test_warehouse_material)
        self.sub_test_warehouse_material.resize(
            self.test_warehouse_material.size())
        self.sub_test_warehouse_material.show()

    def view_test_warehouse_accessories(self):
        self.test_warehouse_accessories = test_warehouse.TestWarehouseAccessories(
        )
        self.sub_test_warehouse_accessories = QMdiSubWindow()
        self.sub_test_warehouse_accessories.setWidget(
            self.test_warehouse_accessories)
        self.mdi.addSubWindow(self.sub_test_warehouse_accessories)
        self.sub_test_warehouse_accessories.resize(
            self.test_warehouse_accessories.size())
        self.sub_test_warehouse_accessories.show()

    def view_test_fast_warehouse(self):
        self.test_fast_warehouse = test_warehouse.TestFastWarehouse()
        self.sub_test_fast_warehouse = QMdiSubWindow()
        self.sub_test_fast_warehouse.setWidget(self.test_fast_warehouse)
        self.mdi.addSubWindow(self.sub_test_fast_warehouse)
        self.sub_test_fast_warehouse.resize(self.test_fast_warehouse.size())
        self.sub_test_fast_warehouse.show()

    def view_beika(self):
        self.beika = beika.BeikaList()
        self.sub_beika = QMdiSubWindow()
        self.sub_beika.setWidget(self.beika)
        self.mdi.addSubWindow(self.sub_beika)
        self.sub_beika.resize(self.beika.size())
        self.sub_beika.show()

    def view_supply_material(self):
        self.supply_material = supply_material.MaterialSupplyList()
        self.sub_supply_material = QMdiSubWindow()
        self.sub_supply_material.setWidget(self.supply_material)
        self.mdi.addSubWindow(self.sub_supply_material)
        self.sub_supply_material.resize(self.supply_material.size())
        self.sub_supply_material.show()

    def view_supply_accessories(self):
        self.supply_accessories = supply_accessories.AccessoriesSupplyList()
        self.sub_supply_accessories = QMdiSubWindow()
        self.sub_supply_accessories.setWidget(self.supply_accessories)
        self.mdi.addSubWindow(self.sub_supply_accessories)
        self.sub_supply_accessories.resize(self.supply_accessories.size())
        self.sub_supply_accessories.show()

    def view_scan_pack(self):
        self.scan_pack = scan_pack.ScanPack()
        self.sub_scan_pack = QMdiSubWindow()
        self.sub_scan_pack.setWidget(self.scan_pack)
        self.mdi.addSubWindow(self.sub_scan_pack)
        self.sub_scan_pack.resize(self.scan_pack.size())
        self.sub_scan_pack.show()

    def view_settings_access(self):
        self.settings_access = settings_access.Access()
        self.sub_settings_access = QMdiSubWindow()
        self.sub_settings_access.setWidget(self.settings_access)
        self.mdi.addSubWindow(self.sub_settings_access)
        self.sub_settings_access.resize(self.settings_access.size())
        self.sub_settings_access.show()

    def view_report_need_article_order(self):
        self.report_need_article = report_order.NeedArticleOrder()
        self.sub_report_need_article = QMdiSubWindow()
        self.sub_report_need_article.setWidget(self.report_need_article)
        self.mdi.addSubWindow(self.sub_report_need_article)
        self.sub_report_need_article.resize(self.report_need_article.size())
        self.sub_report_need_article.show()

    def view_report_supply(self):
        self.report_supply = report_supply.ReportSupply()
        self.sub_report_supply = QMdiSubWindow()
        self.sub_report_supply.setWidget(self.report_supply)
        self.mdi.addSubWindow(self.sub_report_supply)
        self.sub_report_supply.resize(self.report_supply.size())
        self.sub_report_supply.show()

    def view_report_cost_article(self):
        self.report_cost_article = report_cost_article.ReportCostArticle()
        self.sub_report_cost_article = QMdiSubWindow()
        self.sub_report_cost_article.setWidget(self.report_cost_article)
        self.mdi.addSubWindow(self.sub_report_cost_article)
        self.sub_report_cost_article.resize(self.report_cost_article.size())
        self.sub_report_cost_article.show()

    def view_report_sibestoimost(self):
        self.report_sibest = report_sibestoimost.ReportSibestoimost()
        self.sub_report_sibest = QMdiSubWindow()
        self.sub_report_sibest.setWidget(self.report_sibest)
        self.mdi.addSubWindow(self.sub_report_sibest)
        self.sub_report_sibest.resize(self.report_sibest.size())
        self.sub_report_sibest.show()

    def view_report_rest_for_work(self):
        self.report_rest_work = report_rest_work.ReportRestWork()
        self.sub_report_rest_work = QMdiSubWindow()
        self.sub_report_rest_work.setWidget(self.report_rest_work)
        self.mdi.addSubWindow(self.sub_report_rest_work)
        self.sub_report_rest_work.resize(self.report_rest_work.size())
        self.sub_report_rest_work.show()

    def view_report_pack_accept(self):
        self.report_pack_accept = report_accept_pack.ReportAcceptPack()
        self.sub_report_pack_accept = QMdiSubWindow()
        self.sub_report_pack_accept.setWidget(self.report_pack_accept)
        self.mdi.addSubWindow(self.sub_report_pack_accept)
        self.sub_report_pack_accept.resize(self.report_pack_accept.size())
        self.sub_report_pack_accept.show()

    def view_report_material_consumption(self):
        self.report_material_consumption = report_material_consumption.ReportMaterialConsumption(
        )
        self.sub_report_material_consumption = QMdiSubWindow()
        self.sub_report_material_consumption.setWidget(
            self.report_material_consumption)
        self.mdi.addSubWindow(self.sub_report_material_consumption)
        self.sub_report_material_consumption.resize(
            self.report_material_consumption.size())
        self.sub_report_material_consumption.show()

    def view_report_profit(self):
        self.report_profit = report_profit.ReportProfit()
        self.sub_report_profit = QMdiSubWindow()
        self.sub_report_profit.setWidget(self.report_profit)
        self.mdi.addSubWindow(self.sub_report_profit)
        self.sub_report_profit.resize(self.report_profit.size())
        self.sub_report_profit.show()

    def view_report_performance_company(self):
        self.report_performance_company = report_performance_company.ReportPerformanceCompany(
        )
        self.sub_report_performance_company = QMdiSubWindow()
        self.sub_report_performance_company.setWidget(
            self.report_performance_company)
        self.mdi.addSubWindow(self.sub_report_performance_company)
        self.sub_report_performance_company.resize(
            self.report_performance_company.size())
        self.sub_report_performance_company.show()

    def view_report_shipped_customer(self):
        self.report_shipped_customer = report_shipped_to_customer.ReportShippedCustomer(
        )
        self.sub_report_shipped_customer = QMdiSubWindow()
        self.sub_report_shipped_customer.setWidget(
            self.report_shipped_customer)
        self.mdi.addSubWindow(self.sub_report_shipped_customer)
        self.sub_report_shipped_customer.resize(
            self.report_shipped_customer.size())
        self.sub_report_shipped_customer.show()

    def view_report_warehouse_balance_date(self):
        self.report_warehouse_balance_date = report_warehouse_balance_date.ReportWarehouseBalanceDate(
        )
        self.sub_report_warehouse_balance_date = QMdiSubWindow()
        self.sub_report_warehouse_balance_date.setWidget(
            self.report_warehouse_balance_date)
        self.mdi.addSubWindow(self.sub_report_warehouse_balance_date)
        self.sub_report_warehouse_balance_date.resize(
            self.report_warehouse_balance_date.size())
        self.sub_report_warehouse_balance_date.show()

    def view_report_reject(self):
        self.report_reject = report_reject.ReportReject()
        self.sub_report_reject = QMdiSubWindow()
        self.sub_report_reject.setWidget(self.report_reject)
        self.mdi.addSubWindow(self.sub_report_reject)
        self.sub_report_reject.resize(self.report_reject.size())
        self.sub_report_reject.show()

    def view_report_all(self):
        self.report_all = report_all.ReportAll()
        self.sub_view_report_all = QMdiSubWindow()
        self.sub_view_report_all.setWidget(self.report_all)
        self.mdi.addSubWindow(self.sub_view_report_all)
        self.sub_view_report_all.resize(self.report_all.size())
        self.sub_view_report_all.show()

    def view_report_nalog(self):
        self.report_nalog = report_nalog.ReportNalog()
        self.sub_report_nalog = QMdiSubWindow()
        self.sub_report_nalog.setWidget(self.report_nalog)
        self.mdi.addSubWindow(self.sub_report_nalog)
        self.sub_report_nalog.resize(self.report_nalog.size())
        self.sub_report_nalog.show()

    def view_report_article_day(self):
        self.report_article_day = report_article_day.ReportArticleDay()
        self.sub_report_article_day = QMdiSubWindow()
        self.sub_report_article_day.setWidget(self.report_article_day)
        self.mdi.addSubWindow(self.sub_report_article_day)
        self.sub_report_article_day.resize(self.report_article_day.size())
        self.sub_report_article_day.show()

    def view_material_in_pack(self):
        self.material_in_pack = material_in_pack.MaterialInPack()
        self.sub_material_in_pack = QMdiSubWindow()
        self.sub_material_in_pack.setWidget(self.material_in_pack)
        self.mdi.addSubWindow(self.sub_material_in_pack)
        self.sub_material_in_pack.resize(self.material_in_pack.size())
        self.sub_material_in_pack.show()

    def view_shipment_order(self):
        self.shipment_order = shipment_order.ShipmentOrder()
        self.sub_shipment_order = QMdiSubWindow()
        self.sub_shipment_order.setWidget(self.shipment_order)
        self.mdi.addSubWindow(self.sub_shipment_order)
        self.sub_shipment_order.resize(self.shipment_order.size())
        self.sub_shipment_order.show()

    def view_test_window(self):
        self.test_window = test_window.TestWindow()
        self.sub_test_window = QMdiSubWindow()
        self.sub_test_window.setWidget(self.test_window)
        self.mdi.addSubWindow(self.sub_test_window)
        self.sub_test_window.resize(self.test_window.size())
        self.sub_test_window.show()

    def login_access(self):
        self.logger.info(u"[Пользователь {:04d}] {}".format(
            User().id(), "Зашел в программу"))
        self.statusBar().showMessage("Вы вошли как -= %s =-" %
                                     User().position_name())
        self.setEnabled(True)
        self.setFocus()
        self.access()

    def admin_login(self):
        self.statusBar().showMessage("Вы вошли как -= %s =-" %
                                     User().position_name())
        self.setEnabled(True)
        self.setFocus()
        self.access()

    def beika_no_finished(self):
        query = """SELECT COUNT(*) FROM beika WHERE Finished = 0"""
        sql_info = my_sql.sql_select(query)
        if "mysql.connector.errors" in str(type(sql_info)):
            beika_txt = "error sql"
        else:
            beika_txt = "Не зкарыто бейки: " + str(sql_info[0][0])
        beika = QLabel(beika_txt)
        self.statusBar().addPermanentWidget(beika)

    def closeEvent(self, e):
        try:
            self.logger.info(u"[Пользователь {:04d}] {}".format(
                User().id(), "Вышел из программы"))
        except:
            print("Нет логина")

        e.accept()
        self.close()
        self.destroy()
        sys.exit()

    def arg_FS(self):
        self.setWindowState(Qt.WindowMaximized)
Пример #6
0
    def WindowTrig(self, p):

        #======================================================================================================================================================================
        #Factory Window
        #print("Eleccion " + p.text())
        if p.text() == "Factory":
            sub = QMdiSubWindow()
            widget = QWidget()
            sub.resize(400, 400)
            self.layoutFactory = QVBoxLayout(widget)
            self.layoutImagenes = QHBoxLayout()
            self.layoutImagenes.addStretch(1)

            labelTitulo = QLabel()
            labelTitulo.setText("Selecciona el carro")

            self.comboTipo = QComboBox()
            self.comboTipo.addItem("Nissan")
            self.comboTipo.addItem("Chevrolet")

            buttonCreate = QPushButton('Crear')
            buttonCreate.clicked.connect(self.button_factory_crear)
            self.layoutFactory.addWidget(labelTitulo)
            self.layoutFactory.addWidget(self.comboTipo)
            self.layoutFactory.addWidget(buttonCreate)
            self.layoutFactory.addLayout(self.layoutImagenes)

            sub.setWidget(widget)
            sub.setWindowTitle("Patrón Factory")
            self.mdi.addSubWindow(sub)
            sub.show()

#======================================================================================================================================================================
#Abstract Factory Window
        if p.text() == "AbstractFactory":
            subAbstractFactory = QMdiSubWindow()
            subAbstractFactory.resize(575, 443)
            widgetAbstractFactory = QWidget()
            self.gridAbstractLayout = QGridLayout(widgetAbstractFactory)
            self.gridAbstractLayout.setContentsMargins(0, 0, 0, 0)
            self.gridAbstractLayout.setObjectName("layoutAbstractFactory")

            labelFabricante = QLabel()
            labelFabricante.setText("Fabricante")
            self.gridAbstractLayout.addWidget(labelFabricante, 0, 0, 1, 1)

            labelTipo = QLabel()
            labelTipo.setText("Tipo")
            self.gridAbstractLayout.addWidget(labelTipo, 1, 0, 1, 1)

            self.comboFabricante = QComboBox()
            self.comboFabricante.addItem("Samsung")
            self.comboFabricante.addItem("Apple")
            self.gridAbstractLayout.addWidget(self.comboFabricante, 0, 1, 1, 1)

            self.comboTipo = QComboBox()
            self.comboTipo.addItem("Telefono")
            self.comboTipo.addItem("Tablet")
            self.gridAbstractLayout.addWidget(self.comboTipo, 1, 1, 1, 1)

            buttonCreate = QPushButton('Crear')
            buttonCreate.clicked.connect(self.button_abstractfactory_crear)
            self.gridAbstractLayout.addWidget(buttonCreate, 2, 1, 1, 1)

            subAbstractFactory.setWidget(widgetAbstractFactory)

            subAbstractFactory.setWindowTitle("Patrón Abstract Factory")
            self.mdi.addSubWindow(subAbstractFactory)
            subAbstractFactory.show()

#======================================================================================================================================================================
#Bridge Window
        if p.text().lower() == "bridge":
            subBridge = QMdiSubWindow()
            subBridge.resize(575, 443)
            widgetBridge = QWidget()

            self.gridLayout = QGridLayout(widgetBridge)
            self.gridLayout.setContentsMargins(0, 0, 0, 0)
            self.gridLayout.setObjectName("layoutBridge")

            labelTitulo = QLabel()
            labelTitulo.setText("Selecciona la figura")
            self.gridLayout.addWidget(labelTitulo, 0, 0, 1, 1)

            labelColor = QLabel()
            labelColor.setText("Selecciona el color")
            self.gridLayout.addWidget(labelColor, 1, 0, 1, 1)

            self.comboForma = QComboBox()
            self.comboForma.addItem("Cubo")
            self.comboForma.addItem("Esfera")
            self.gridLayout.addWidget(self.comboForma, 0, 1, 1, 1)

            self.comboColor = QComboBox()
            self.comboColor.addItem("Amarillo")
            self.comboColor.addItem("Azul")
            self.gridLayout.addWidget(self.comboColor, 1, 1, 1, 1)

            buttonDraw = QPushButton('Dibujar')
            buttonDraw.clicked.connect(self.button_bridge)
            self.gridLayout.addWidget(buttonDraw, 2, 1, 1, 1)

            subBridge.setWidget(widgetBridge)

            subBridge.setWindowTitle("Patrón Bridge")
            self.mdi.addSubWindow(subBridge)
            subBridge.show()
#======================================================================================================================================================================
#Command Window
        if p.text() == "Command":
            subCommand = QMdiSubWindow()
            subCommand.resize(350, 350)
            widgetCommand = QWidget()

            self.layoutCommand = QGridLayout(widgetCommand)
            self.layoutCommand.setContentsMargins(0, 0, 0, 0)
            self.layoutCommand.setObjectName("gridCommand")

            labelTitle = QLabel()
            labelTitle.setText("Laptop")
            self.layoutCommand.addWidget(labelTitle, 0, 0, 1, 1)

            labelAccion = QLabel()
            labelAccion.setText("Elije un comando")
            self.layoutCommand.addWidget(labelAccion, 1, 0, 1, 1)

            self.encenderradio = QRadioButton('Encender')
            self.encenderradio.setChecked(False)
            self.encenderradio.accion = "Encender"
            self.encenderradio.toggled.connect(self.onClickedAccion)
            self.layoutCommand.addWidget(self.encenderradio, 1, 1, 1, 1)

            self.suspenderradio = QRadioButton('Suspender')
            self.suspenderradio.setChecked(False)
            self.suspenderradio.accion = "Suspender"
            self.suspenderradio.toggled.connect(self.onClickedAccion)
            self.layoutCommand.addWidget(self.suspenderradio, 2, 1, 1, 1)

            self.apagarradio = QRadioButton('Apagar')
            self.apagarradio.setChecked(False)
            self.apagarradio.accion = "Apagar"
            self.apagarradio.toggled.connect(self.onClickedAccion)
            self.layoutCommand.addWidget(self.apagarradio, 3, 1, 1, 1)

            self.reiniciarradio = QRadioButton('Reiniciar')
            self.reiniciarradio.setChecked(False)
            self.reiniciarradio.accion = "Reiniciar"
            self.reiniciarradio.toggled.connect(self.onClickedAccion)
            self.layoutCommand.addWidget(self.reiniciarradio, 4, 1, 1, 1)

            self.labelMensaje = QLabel()

            self.labelMensaje.setText("MSJ: ")
            self.layoutCommand.addWidget(self.labelMensaje, 4, 0, 1, 1)

            subCommand.setWidget(widgetCommand)
            subCommand.setWindowTitle("Patrón Command")
            self.mdi.addSubWindow(subCommand)
            subCommand.show()

#=====================================================================================================================================================================
#State Window
        if p.text() == "State":
            subState = QMdiSubWindow()
            subState.resize(450, 450)
            widgetState = QWidget()

            self.layoutState = QGridLayout(widgetState)
            self.layoutState.setContentsMargins(0, 0, 0, 0)
            self.layoutState.setObjectName("gridState")

            labelAgua = QLabel()
            labelAgua.setText("Agua")
            self.layoutState.addWidget(labelAgua, 1, 0, 1, 1)

            self.solidoradio = QRadioButton('Solido')
            self.solidoradio.setChecked(False)
            self.solidoradio.estado = "Solido"
            self.solidoradio.toggled.connect(self.onClickedEstado)
            self.layoutState.addWidget(self.solidoradio, 1, 1, 1, 1)

            self.liquidoradio = QRadioButton('Liquido')
            self.liquidoradio.setChecked(False)
            self.liquidoradio.estado = "Liquido"
            self.liquidoradio.toggled.connect(self.onClickedEstado)
            self.layoutState.addWidget(self.liquidoradio, 2, 1, 1, 1)

            self.gaseosoradio = QRadioButton('Gaseoso')
            self.gaseosoradio.setChecked(False)
            self.gaseosoradio.estado = "Gaseoso"
            self.gaseosoradio.toggled.connect(self.onClickedEstado)
            self.layoutState.addWidget(self.gaseosoradio, 3, 1, 1, 1)

            self.labelMensaje = QLabel()

            self.labelMensaje.setText("MSJ: ")
            self.layoutState.addWidget(self.labelMensaje, 4, 0, 1, 1)

            subState.setWidget(widgetState)
            subState.setWindowTitle("Patrón State")
            self.mdi.addSubWindow(subState)
            subState.show()
#=====================================================================================================================================================================
#Prototype Window
        if p.text() == "Prototype":
            subPrototype = QMdiSubWindow()
            subPrototype.resize(575, 443)
            widgetPrototype = QWidget()
            self.gridPrototypeLayout = QGridLayout(widgetPrototype)
            self.gridPrototypeLayout.setContentsMargins(0, 0, 0, 0)
            self.gridPrototypeLayout.setObjectName("layoutPrototype")

            labelMouse = QLabel()
            labelMouse.setText("Mouse")
            self.gridPrototypeLayout.addWidget(labelMouse, 0, 0, 1, 1)

            self.comboMouse = QComboBox()
            self.comboMouse.addItem("Alambrico")
            self.comboMouse.addItem("Inalambrico")
            self.gridPrototypeLayout.addWidget(self.comboMouse, 0, 1, 1, 1)

            buttonCreate = QPushButton('Crear')
            buttonCreate.clicked.connect(self.button_prototype_crear)
            self.gridPrototypeLayout.addWidget(buttonCreate, 2, 1, 1, 1)

            buttonClone = QPushButton('Clonar')
            buttonClone.clicked.connect(self.button_prototype_clonar)
            self.gridPrototypeLayout.addWidget(buttonClone, 3, 1, 1, 1)

            subPrototype.setWidget(widgetPrototype)
            subPrototype.setWindowTitle("Patrón Prototype")
            self.mdi.addSubWindow(subPrototype)
            subPrototype.show()

#=====================================================================================================================================================================
#Decorator Window
        if p.text() == "Decorator":
            subDecorator = QMdiSubWindow()
            subDecorator.resize(575, 443)
            widgetDecorator = QWidget()
            self.gridDecoratorLayout = QGridLayout(widgetDecorator)
            self.gridDecoratorLayout.setContentsMargins(0, 0, 0, 0)
            self.gridDecoratorLayout.setObjectName("layoutDecorator")

            labelCondimentos = QLabel()
            labelCondimentos.setText("Elije un condimento")
            self.gridDecoratorLayout.addWidget(labelCondimentos, 0, 0, 1, 1)

            self.comboCondimentos = QComboBox()
            self.comboCondimentos.addItem("Cueritos")
            self.comboCondimentos.addItem("Jicama")
            self.comboCondimentos.addItem("Pepino")
            self.comboCondimentos.addItem("Mango")
            self.comboCondimentos.addItem("Cacahuate")
            self.comboCondimentos.addItem("DulcesTamarindo")
            self.comboCondimentos.addItem("Chamoy")
            self.comboCondimentos.addItem("Salsa")
            self.comboCondimentos.addItem("Limon")

            self.gridDecoratorLayout.addWidget(self.comboCondimentos, 0, 1, 1,
                                               1)

            buttonAdd = QPushButton('Agregar')
            buttonAdd.clicked.connect(self.button_decorator_agregar)
            self.gridDecoratorLayout.addWidget(buttonAdd, 2, 1, 1, 1)

            subDecorator.setWidget(widgetDecorator)
            subDecorator.setWindowTitle("Patrón Decorator")
            self.mdi.addSubWindow(subDecorator)
            subDecorator.show()
Пример #7
0
class MainWindow(QMainWindow, Ui_MainWindow):
    
	def __init__(self, parent=None):

		QMainWindow.__init__(self, parent=parent)
		Ui_MainWindow.__init__(self)
		self.setupUi(self)

		#area exclusiva para a imagem
		self.R = []
		self.G = []
		self.B = []
		self.R_noise = []
		self.G_noise = []
		self.B_noise = []
		self.R_envio = []
		self.G_envio = []
		self.B_envio = []
		self.R_envio_noise = []
		self.G_envio_noise = []
		self.B_envio_noise = []
		#criando o label da imagem
		self.labelIMAGE = QLabel()		
		self.labelIMAGE.setBackgroundRole(QPalette.Base)
		self.labelIMAGE.setSizePolicy(QSizePolicy.Ignored, QSizePolicy.Ignored)
		self.labelIMAGE.setScaledContents(True)
		#criando uma area para por o label e configurar sua escala
		self.scrollAreaIMAGE = QScrollArea()
		self.scrollAreaIMAGE.setBackgroundRole(QPalette.Dark)
		self.scrollAreaIMAGE.setWidget(self.labelIMAGE)
		self.scrollAreaIMAGE.setVisible(False)
		#self.mdi = QMdiArea()      	
		self.sub = QMdiSubWindow()
		self.sub.setWidget(self.scrollAreaIMAGE)
		self.sub.resize(400,400)
		self.sub.setWindowTitle("Image Viewer")
		self.mdiArea.addSubWindow(self.sub)
		#criando menus para imagem
		self.createActions()
		self.createMenus()
		#deixando menu grafico indisponivel
		self.fileMenu.setEnabled(False)
		self.viewMenu.setEnabled(False)

		self.x = []
		self.y = []
		self.x_bin = []
		self.y_bin = []
		self.x_noise = []
		self.y_noise = []
		self.binario = []
		self.binario_noise = []		
		self.listaPortas = []	

		#variaveis para a resolucao da tela
		self.width = 1080
		self.height = 950
		self.height_main = 500
		self.controle = False #variavel que controla a exclusao do grafico
		self.controleReceive = False	
		self.controleSend = False	

		self.timer = QTimer(self)	

		self.actions()
		self.incializationMain()	
		self.createGraph()		
		#caso escolha a opcao ASCII
		self.pushButton1.clicked.connect(self.optionASCII)
		self.pushButton2.clicked.connect(self.optionIMAGE)
		self.pushButton6.clicked.connect(self.browseASCII)
		self.pushButton7.clicked.connect(self.lerEntrada)
		self.pushButton8.clicked.connect(self.lerEntradaRecebida)
		self.pushButton10.clicked.connect(self.lerEntradaIMG)
		self.pushButton11.clicked.connect(self.lerEntradaRecebidaIMG)
		self.pushButtonCRC.clicked.connect(self.verificaCRC_ASCII)
		self.pushButtonCRC_IMG.clicked.connect(self.verificaCRC_IMG)
		#fixando o tamanho da janela inicial
		self.resize(self.width, self.height_main)		
		self.events()

		self.timer.setInterval(300)
		self.timer.start()		

	def events(self):
		self.timer.timeout.connect(self.update)

	def selectSerialPort(self):		
		#deixando menu de opcoes disponiveis
		self.label1.setEnabled(not False)
		self.label1.setText("Select an Option to Emissor or Receptor")		
		self.pushButton1.setEnabled(not False)
		self.pushButton2.setEnabled(not False)
		self.pushButton3.setEnabled(False)

	def unselectSerialPort(self):		
		return

	def recebePortasSeriais(self):		
		self.listaPortas = serialPorts()		

	def activateMain(self):	
		#deixando desativado
		self.checkBoxASCII.setChecked(False)
		self.checkBoxIMAGE.setChecked(False)

		#limpando comboBox
		self.comboBox2.clear()
		self.comboBox2.addItem("Selecione")
		self.comboBox2.addItem("Entrada em Texto")
		self.comboBox2.addItem("Entrada em Arquivo")		

		#limpando coisas digitadas
		self.lineEdit1.clear()
		self.label2.clear()			
		self.labelIMAGE.clear()
		self.x = []
		self.y = []
		self.R = []
		self.G = []
		self.B = []
		self.R_envio = []
		self.G_envio = []
		self.B_envio = []
		self.R_envio_noise = []
		self.G_envio_noise = []
		self.B_envio_noise = []
		self.texto = []
		self.binario = []
		#deixando menu grafico indisponivel
		self.visualizar_grafico.setEnabled(False)		
		self.fileMenu.setEnabled(False)
		self.viewMenu.setEnabled(False)
		#variavel de controle para a func atualizaOpcoesASCII
		self.controleSend = False
		self.controleReceive = False
		#voltando a habilitar serial e apagando menu
		self.select.setEnabled(not False)
		self.select.clear()
		self.select.removeAction(self.serialPort)				
		#fixando o tamanho da janela inicial
		self.resize(self.width, self.height_main)
		#colocando opcoes do menu principal visiveis
		self.label1.setText("Select an Option to Emissor or Receptor")
		self.label1.setHidden(False)		
		self.pushButton1.setHidden(False)
		self.pushButton2.setHidden(False)
		self.pushButton3.setHidden(False)
		#deixando menu de opcoes indisponiveis ate ser escolhida a porta serial
		self.pushButton1.setEnabled(False)
		self.pushButton2.setEnabled(False)
		self.pushButton3.setEnabled(False)		
		#ocultando itens que nao pertencem ao menu principal		
		self.pushButton4.setHidden(not False)
		self.pushButton5.setHidden(not False)

		self.pushButton10.setHidden(not False)
		self.pushButton11.setHidden(not False)

		self.label2.setHidden(not False)	
		self.label2.setStyleSheet('color: black')	
		self.lineEdit1.setHidden(not False)
		self.comboBox1.setHidden(not False)
		self.comboBox2.setHidden(not False)		
		self.pushButton6.setHidden(not False)
		self.pushButton7.setHidden(not False)
		self.pushButton8.setHidden(not False)
		self.checkBox6.setHidden(not False)
		self.checkBox1.setHidden(not False)
		self.scrollArea1.setHidden(not False)		
		self.mdiArea.setHidden(not False)
		self.labelPORCENTAGEM.setHidden(not False)
		self.spinBoxPORCENTAGEM.setHidden(not False)
		self.labelRGB.setHidden(not False)
		self.radioButtonR.setHidden(not False)
		self.radioButtonG.setHidden(not False)
		self.radioButtonB.setHidden(not False)
		self.pushButtonCRC.setHidden(not False)		
		self.pushButtonCRC_IMG.setHidden(not False)
		self.pushButtonCRC.setEnabled(False)
		self.pushButtonCRC_IMG.setEnabled(False)		
		self.labelDeteccao1.setHidden(not False)
		self.labelDeteccao2.setHidden(not False)		
		
		self.label5.setHidden(not False)
		self.label6.setHidden(not False)
		self.label7.setHidden(not False)
		self.label8.setHidden(not False)
		self.label9.setHidden(not False)
		self.label10.setHidden(not False)	
		self.label11.setHidden(not False)
		self.label12.setHidden(not False)	
		self.spinBox1.setHidden(not False)	
		self.comboBox3.setHidden(not False)
		self.comboBox4.setHidden(not False)
		self.radioButton1.setHidden(not False)
		self.radioButton2.setHidden(not False)
		self.checkBox2.setHidden(not False)
		self.checkBox3.setHidden(not False)
		self.checkBox4.setHidden(not False)
		self.checkBox5.setHidden(not False)
		self.checkBoxIMAGE.setHidden(not False)
		self.checkBoxASCII.setHidden(not False)
		self.horizontalSlider1.setHidden(not False)
		self.horizontalSlider2.setHidden(not False)

		#apagando grafico
		if (self.checkBox1.isChecked() and self.controle == True):
			#tirando a opcao de esta ativado
			self.checkBox1.setChecked(False)
			#apagando grafico caso esteja ativado
			self.graphLayout.removeWidget(self.canvas)
			sip.delete(self.canvas)
			self.canvas = None
			self.graphLayout.removeWidget(self.toolbar)
			sip.delete(self.toolbar)
			self.toolbar = None
			self.controle = False

		#recriando menu da porta serial		
		self.select.addAction(self.serialPort)	

	def functionViewsGraph(self):
		#deixando ativado
		self.checkBox1.setChecked(not False)
		self.horizontalSlider2.setHidden(False)	

	def functionClearGraph(self):
		#tirando a opcao de esta ativado
		self.checkBox1.setChecked(False)
		self.horizontalSlider2.setHidden(not False)	

	def functionViewPainel(self):
		self.label5.setHidden(False)
		self.label6.setHidden(False)
		self.label7.setHidden(False)
		self.label8.setHidden(False)
		self.label9.setHidden(False)
		self.label10.setHidden(False)
		self.label11.setHidden(False)	
		self.label12.setHidden(False)	
		self.spinBox1.setHidden(False)		
		self.comboBox3.setHidden(False)
		self.comboBox4.setHidden(False)
		self.radioButton1.setHidden(False)
		self.radioButton2.setHidden(False)
		self.checkBox2.setHidden(False)
		self.checkBox3.setHidden(False)
		self.checkBox4.setHidden(False)
		if(self.controleReceive == False):
			self.checkBox5.setHidden(False)
		else:
			self.checkBox5.setHidden(not False)
		self.horizontalSlider1.setHidden(False)
		
	def functionClearPainel(self):
		self.label5.setHidden(not False)
		self.label6.setHidden(not False)
		self.label7.setHidden(not False)
		self.label8.setHidden(not False)
		self.label9.setHidden(not False)
		self.label11.setHidden(not False)
		self.label12.setHidden(not False)		
		self.spinBox1.setHidden(not False)
		self.comboBox3.setHidden(not False)
		self.comboBox4.setHidden(not False)
		self.radioButton1.setHidden(not False)
		self.radioButton2.setHidden(not False)
		self.checkBox2.setHidden(not False)
		self.checkBox3.setHidden(not False)
		self.checkBox4.setHidden(not False)
		self.checkBox5.setHidden(not False)
		self.horizontalSlider1.setHidden(not False)			

	@staticmethod
	def open_help():		
		Help().exec_()  
		
	def actions(self):	
		#carregando porta serial
		self.recebePortasSeriais()
		#print self.listaPortas			
		if(len(self.listaPortas) > 0): self.serialPort = QAction("&"+self.listaPortas[0], self, triggered=self.selectSerialPort)	
		else: self.serialPort = QAction("&no serial ports", self, triggered=self.unselectSerialPort)
		self.Main = QAction("&Main...", self, shortcut="Ctrl+M", triggered=self.activateMain)
		self.viewGraph = QAction("&View Graph", self, shortcut="Ctrl+G", triggered=self.functionViewsGraph)	
		self.clearGraph = QAction("&Clear Graph", self, shortcut="Ctrl+K", triggered=self.functionClearGraph)
		self.viewPainel = QAction("&View customization panel", self, shortcut="Ctrl+P", triggered=self.functionViewPainel)	
		self.clearPainel = QAction("&Clear customization panel", self, shortcut="Ctrl+L", triggered=self.functionClearPainel)
		self.instrucoes = QAction("&Uso do Software", self, shortcut="Ctrl+H", triggered=self.open_help)
	
	def incializationMain(self):
		#variavel de controle para a func atualizaOpcoesASCII
		self.controleSend = False
		self.controleReceive = False	
		#ativando main
		#deixando menu de opcoes indisponiveis ate ser escolhida a porta serial
		self.pushButton1.setEnabled(False)
		self.pushButton2.setEnabled(False)
		self.pushButton3.setEnabled(False)		
		#ocultando itens que nao pertencem ao menu principal		
		self.pushButton4.setHidden(not False)
		self.pushButton5.setHidden(not False)

		self.pushButton10.setHidden(not False)
		self.pushButton11.setHidden(not False)

		self.label2.setHidden(not False)		
		self.lineEdit1.setHidden(not False)
		self.comboBox1.setHidden(not False)
		self.comboBox2.setHidden(not False)		
		self.pushButton6.setHidden(not False)
		self.pushButton7.setHidden(not False)
		self.pushButton8.setHidden(not False)
		self.checkBox6.setHidden(not False)
		self.checkBox1.setHidden(not False)
		self.scrollArea1.setHidden(not False)		
		self.mdiArea.setHidden(not False)
		self.labelPORCENTAGEM.setHidden(not False)
		self.spinBoxPORCENTAGEM.setHidden(not False)
		self.labelRGB.setHidden(not False)
		self.radioButtonR.setHidden(not False)
		self.radioButtonG.setHidden(not False)
		self.radioButtonB.setHidden(not False)
		self.pushButtonCRC.setHidden(not False)		
		self.pushButtonCRC_IMG.setHidden(not False)
		self.pushButtonCRC.setEnabled(False)
		self.pushButtonCRC_IMG.setEnabled(False)		
		self.labelDeteccao1.setHidden(not False)
		self.labelDeteccao2.setHidden(not False)
		
		self.label5.setHidden(not False)
		self.label6.setHidden(not False)
		self.label7.setHidden(not False)
		self.label8.setHidden(not False)
		self.label9.setHidden(not False)
		self.label10.setHidden(not False)	
		self.label11.setHidden(not False)
		self.label12.setHidden(not False)	
		self.spinBox1.setHidden(not False)
		self.comboBox3.setHidden(not False)
		self.comboBox4.setHidden(not False)
		self.radioButton1.setHidden(not False)
		self.radioButton2.setHidden(not False)
		self.checkBox2.setHidden(not False)
		self.checkBox3.setHidden(not False)
		self.checkBox4.setHidden(not False)
		self.checkBox5.setHidden(not False)
		self.checkBoxIMAGE.setHidden(not False)
		self.checkBoxASCII.setHidden(not False)
		self.horizontalSlider1.setHidden(not False)
		self.horizontalSlider2.setHidden(not False)
		#criando menu da porta serial
		self.tools = QMenu("&Tools", self)
		self.menuBar().addMenu(self.tools)
		self.tools.addSeparator()

		self.select = self.tools.addMenu(" Select Serial Port ")
		self.select.addAction(self.serialPort)		
		self.tools.addSeparator()

		self.visualizar_grafico = self.tools.addMenu(" Graph ")
		self.visualizar_grafico.addAction(self.viewGraph)
		self.visualizar_grafico.addSeparator()
		self.visualizar_grafico.addAction(self.clearGraph)
		self.visualizar_grafico.addSeparator()
		self.visualizar_grafico.addAction(self.viewPainel)
		self.visualizar_grafico.addSeparator()
		self.visualizar_grafico.addAction(self.clearPainel)		
		#deixando menu grafico indisponivel
		self.visualizar_grafico.setEnabled(False)				

		self.tools.addSeparator()		
		self.returnMain = self.tools.addMenu(" Return Main ")
		self.returnMain.addAction(self.Main)        
		self.tools.addSeparator()

		#criando menu help
		self.help = QMenu("&Help", self)
		self.menuBar().addMenu(self.help)
		self.help.addSeparator()

		self.selectHelp = self.help.addMenu(" Instrucoes de Uso ")
		self.selectHelp.addAction(self.instrucoes)		
		self.help.addSeparator()		

	def optionSendASCII(self):
		#deixando ativado ASCII e sativando Imagem
		self.checkBoxASCII.setChecked(not False)
		self.checkBoxIMAGE.setChecked(False)
		#variavel de controle para a func atualizaOpcoesASCII	
		self.controleSend = True	
		#ajustando janela
		self.resize(self.width, self.height_main)
		#ocultando menus que nao pertencem ao menu selecionado		
		self.label1.setHidden(not False)
		self.pushButton4.setHidden(not False)
		self.pushButton5.setHidden(not False)
		self.mdiArea.setHidden(not False)
		self.checkBoxIMAGE.setHidden(not False)
		self.labelPORCENTAGEM.setHidden(not False)
		self.spinBoxPORCENTAGEM.setHidden(not False)
		self.labelRGB.setHidden(not False)
		self.radioButtonR.setHidden(not False)
		self.radioButtonG.setHidden(not False)
		self.radioButtonB.setHidden(not False)
		self.pushButton8.setHidden(not False)
		self.pushButton10.setHidden(not False)
		self.pushButton11.setHidden(not False)

		#mostrando itens pertencentes ao menu
		self.label2.setHidden(False)		
		self.label10.setHidden(False)
		self.lineEdit1.setHidden(False)
		self.comboBox1.setHidden(False)
		self.comboBox2.setHidden(False)
		self.pushButton6.setHidden(False)
		self.pushButton7.setHidden(False)
		self.checkBox6.setHidden(False)
		self.checkBox1.setHidden(not False)	
		self.scrollArea1.setHidden(False)		

	def optionSendIMAGE(self):
		#deixando ativado Imagem e desativando ASCII
		self.checkBoxIMAGE.setChecked(not False)
		self.checkBoxASCII.setChecked(False)		
		#deixando menu grafico disponivel
		self.fileMenu.setEnabled(not False)
		self.viewMenu.setEnabled(not False)
		#ajustando janela
		self.resize(self.width, self.height)
		#ocultando menus que nao pertencem ao menu selecionado		
		self.label1.setHidden(not False)
		self.pushButton4.setHidden(not False)
		self.pushButton5.setHidden(not False)					
		self.lineEdit1.setHidden(not False)		
		self.comboBox2.setHidden(not False)
		self.pushButton6.setHidden(not False)		
		self.checkBox1.setHidden(not False)		
		self.checkBoxIMAGE.setHidden(not False)
		self.pushButton8.setHidden(not False)

		#mostrando itens pertencentes ao menu	
		self.scrollArea1.setHidden(False)
		self.label2.setHidden(False)
		self.mdiArea.setHidden(False)	
		self.label10.setHidden(False)		
		self.comboBox1.setHidden(False)			
		self.pushButton7.setHidden(not False)
		self.pushButton10.setHidden(False)
		self.pushButton11.setHidden(not False)
		self.checkBox6.setHidden(False)		
		self.labelPORCENTAGEM.setHidden(False)
		self.spinBoxPORCENTAGEM.setHidden(False)
		self.labelRGB.setHidden(False)
		self.radioButtonR.setHidden(False)
		self.radioButtonG.setHidden(False)
		self.radioButtonB.setHidden(False)				

	def optionReceiveASCII(self):
		#variavel de controle para a func atualizaOpcoesASCII
		self.controleReceive = True
		#ajustando janela
		self.resize(self.width, self.height_main)
		#ocultando menus que nao pertencem ao menu selecionado		
		self.label1.setHidden(not False)
		self.pushButton4.setHidden(not False)
		self.pushButton5.setHidden(not False)
		self.pushButton10.setHidden(not False)
		self.pushButton11.setHidden(not False)

		self.mdiArea.setHidden(not False)
		self.comboBox2.setHidden(not False)
		self.pushButton6.setHidden(not False)
		self.pushButton7.setHidden(not False)
		self.checkBox6.setHidden(not False)
		self.checkBoxIMAGE.setHidden(not False)
		self.labelPORCENTAGEM.setHidden(not False)
		self.spinBoxPORCENTAGEM.setHidden(not False)
		self.labelRGB.setHidden(not False)
		self.radioButtonR.setHidden(not False)
		self.radioButtonG.setHidden(not False)
		self.radioButtonB.setHidden(not False)	

		#mostrando itens pertencentes ao menu
		self.lineEdit1.setHidden(False)
		self.lineEdit1.setEnabled(False)		
		self.label2.setHidden(False)
		self.scrollArea1.setHidden(False)		
		self.label10.setHidden(False)		
		self.comboBox1.setHidden(False)	
		self.pushButton8.setHidden(False)		
		self.checkBox1.setHidden(not False)		
		self.pushButtonCRC.setHidden(False)		
		self.pushButtonCRC_IMG.setHidden(not False)		
		self.labelDeteccao1.setHidden(False)
		self.labelDeteccao2.setHidden(not False)		

	def optionReceiveIMAGE(self):
		#deixando ativado Imagem e desativando ASCII
		self.checkBoxIMAGE.setChecked(not False)
		self.checkBoxASCII.setChecked(False)		
		#deixando menu grafico disponivel
		self.fileMenu.setEnabled(not False)
		self.viewMenu.setEnabled(not False)
		#ajustando janela
		self.resize(self.width, self.height)
		#ocultando menus que nao pertencem ao menu selecionado		
		self.label1.setHidden(not False)
		self.pushButton4.setHidden(not False)
		self.pushButton5.setHidden(not False)					
		self.lineEdit1.setHidden(not False)		
		self.comboBox2.setHidden(not False)
		self.pushButton6.setHidden(not False)		
		self.checkBox1.setHidden(not False)		
		self.checkBoxIMAGE.setHidden(not False)
		self.pushButton8.setHidden(not False)		

		#mostrando itens pertencentes ao menu	
		self.scrollArea1.setHidden(False)
		self.label2.setHidden(False)
		self.mdiArea.setHidden(False)	
		self.label10.setHidden(False)		
		self.comboBox1.setHidden(False)
		self.pushButton10.setHidden(not False)
		self.pushButton11.setHidden(False)			
		self.pushButton8.setHidden(not False)
		self.checkBox6.setHidden(not False)		
		self.labelPORCENTAGEM.setHidden(not False)
		self.spinBoxPORCENTAGEM.setHidden(not False)
		self.labelRGB.setHidden(not False)
		self.radioButtonR.setHidden(not False)
		self.radioButtonG.setHidden(not False)
		self.radioButtonB.setHidden(not False)
		self.pushButtonCRC_IMG.setHidden(False)		
		self.pushButtonCRC.setHidden(not False)		
		self.labelDeteccao1.setHidden(not False)
		self.labelDeteccao2.setHidden(False)

	def optionASCII(self):
		#por seguranca deixando menu da serial desabilitado
		self.select.setEnabled(False)						
		#apagando Menu anterior
		self.pushButton1.setHidden(not False)
		self.pushButton2.setHidden(not False)
		self.pushButton3.setHidden(not False)		
		#ativando opcoes do proximo menu		
		self.label1.setText("Select an Option to Emissor or Receptor")
		self.pushButton4.setHidden(False)
		self.pushButton5.setHidden(False)
		#caso escolha uma das opcoes disponiveis
		self.pushButton4.clicked.connect(self.optionSendASCII)	
		self.pushButton5.clicked.connect(self.optionReceiveASCII)

	def optionIMAGE(self):
		#por seguranca deixando menu da serial desabilitado
		self.select.setEnabled(False)						
		#apagando Menu anterior
		self.pushButton1.setHidden(not False)
		self.pushButton2.setHidden(not False)
		self.pushButton3.setHidden(not False)			
		#ativando opcoes do proximo menu		
		self.label1.setText("Select an Option to Emissor or Receptor")
		self.pushButton4.setHidden(False)
		self.pushButton5.setHidden(False)
		#caso escolha uma das opcoes disponiveis
		self.pushButton4.clicked.connect(self.optionSendIMAGE)	
		self.pushButton5.clicked.connect(self.optionReceiveIMAGE)	

	def atualizaOpcoesASCII(self):		
		if(self.controleSend == True):				
			if(self.comboBox2.currentText() == "Selecione"):
				self.lineEdit1.setHidden(not False)	
				self.label2.setHidden(not False)				
				self.pushButton6.setHidden(not False)

			elif(self.comboBox2.currentText() == "Entrada em Texto"):
				self.lineEdit1.setEnabled(not False)
				self.lineEdit1.setHidden(False)	
				self.label2.setHidden(False)					
				self.pushButton6.setHidden(not False)			

			elif(self.comboBox2.currentText() == "Entrada em Arquivo"):
				self.lineEdit1.setEnabled(False)
				self.lineEdit1.setHidden(False)	
				self.label2.setHidden(False)				
				self.pushButton6.setHidden(False)
		if(self.controleSend == True or self.controleReceive == True):
			#deixando menu grafico indisponivel
			self.visualizar_grafico.setEnabled(not False)		

	def browseASCII(self):
		filename = QFileDialog.getOpenFileName(self, 'Open File', os.getenv('HOME'))
		with open(filename[0], 'r') as f:
			file_text = f.read()
			self.lineEdit1.setText(file_text)

	def printColor(self):
		if(self.comboBox4.currentText() == 'blue'):
			return 'b'
		if(self.comboBox4.currentText() == 'cian'):
			return 'c'
		elif(self.comboBox4.currentText() == 'yellow'):
			return 'y'
		elif(self.comboBox4.currentText() == 'pink'):
			return 'm'
		elif(self.comboBox4.currentText() == 'green'):
			return 'g'
		elif(self.comboBox4.currentText() == 'red'):
			return 'r'
		elif(self.comboBox4.currentText() == 'white'):
			return 'white'
		elif(self.comboBox4.currentText() == 'purple'):
			return 'purple'
		elif(self.comboBox4.currentText() == 'orange'):
			return 'orange'
		return 'white'

	def linesWidth(self):		
		self.label9.setNum(self.horizontalSlider1.value()/20.)
		return self.horizontalSlider1.value()/20.

	def clearGrafico(self):
		self.graphLayout.removeWidget(self.canvas)
		sip.delete(self.canvas)
		self.canvas = None
		self.graphLayout.removeWidget(self.toolbar)
		sip.delete(self.toolbar)
		self.toolbar = None
		self.controle = False

	def createGraph(self):  
		if self.checkBox1.isChecked():      
			self.figure = plt.figure()
			self.figure.subplots_adjust(left=0.070, bottom=0.085, right=0.99, top=0.97, hspace=0.13)
			self.canvas = FigureCanvas(self.figure)
			self.toolbar = NavigationToolbar(self.canvas, self)
			self.graphLayout.addWidget(self.canvas)
			self.graphLayout.addWidget(self.toolbar)
			self.controle = True		

	#apenas para teste do grafico
	def plot(self):
		self.figure.clear()	
		
		if(len(self.x) > 0):
			#controle para imprimir a quantidade de bits desajado
			self.horizontalSlider2.setMaximum(100)	
			value = (self.x[-1] - 19*self.spinBox1.value()/20)*self.horizontalSlider2.value()/99
			start = value - self.spinBox1.value()/20
			end = start + 21*self.spinBox1.value()/20
			#nao deixando ultrapassar o numero maximo de bits para visualizacao
			if(self.spinBox1.value()+1 > len(self.y)): self.spinBox1.setValue(len(self.y))
			else:
				if(self.checkBox4.isChecked() and self.checkBox5.isChecked()): self.ax = self.figure.add_subplot(313)
				elif(self.checkBox4.isChecked() or self.checkBox5.isChecked()): self.ax = self.figure.add_subplot(212)			
				else:
					#primeiro grafico default
					self.ax = self.figure.add_subplot(111)
				#ajustando eixo de visualizacao			
				self.ax.set_xlim(start, end)			
				self.ax.step(self.x, self.y, color=self.printColor(), linewidth=self.linesWidth()) #opcao ativa imprime grafico				
				self.ax.yaxis.set_major_locator(MaxNLocator(integer=True))
				self.ax.xaxis.set_major_locator(MaxNLocator(integer=True))		
				self.ax.xaxis.grid(color='gray', linestyle='--', linewidth=0.5)
				self.ax.xaxis.grid(self.checkBox3.isChecked())	
				self.ax.yaxis.grid(color='gray', linestyle='--', linewidth=0.5)			
				self.ax.yaxis.grid(self.checkBox2.isChecked())
				self.ax.set_facecolor((39./256.,40./256.,34./256.))	
				self.figure.set_facecolor((39./256.,40./256.,34./256.))
				color = "white"	
				self.ax.set_ylabel(self.comboBox3.currentText(), color=color, size=15)
				self.ax.spines['bottom'].set_color(color)
				self.ax.spines['top'].set_color(color)
				self.ax.spines['left'].set_color(color)
				self.ax.spines['right'].set_color(color)
				for t in self.ax.xaxis.get_ticklines(): t.set_color(color)
				for t in self.ax.yaxis.get_ticklines(): t.set_color(color)
				for t in self.ax.xaxis.get_ticklines(): t.set_color(color)
				for t in self.ax.yaxis.get_ticklines(): t.set_color(color)
				for label in self.ax.get_yticklabels():
					label.set_color(color)
				for label in self.ax.get_xticklabels():
					label.set_color(color)			

				#caso se deseje o grafico binario	
				if self.checkBox4.isChecked():							
					if self.checkBox5.isChecked(): self.ax1 = self.figure.add_subplot(311)	
					else: self.ax1 = self.figure.add_subplot(211)							
					#ajustando eixo de visualizacao			
					self.ax1.set_xlim(start, end)			
					self.ax1.step(self.x_bin, self.y_bin, color=self.printColor(), linewidth=self.linesWidth()) #opcao ativa imprime grafico	
					self.ax1.yaxis.set_major_locator(MaxNLocator(integer=True))
					self.ax1.xaxis.set_major_locator(MaxNLocator(integer=True))		
					self.ax1.xaxis.grid(color='gray', linestyle='--', linewidth=0.5)
					self.ax1.xaxis.grid(self.checkBox3.isChecked())	
					self.ax1.yaxis.grid(color='gray', linestyle='--', linewidth=0.5)			
					self.ax1.yaxis.grid(self.checkBox2.isChecked())
					self.ax1.set_facecolor((39./256.,40./256.,34./256.))	
					self.figure.set_facecolor((39./256.,40./256.,34./256.))
					color = "white"	
					self.ax1.set_ylabel("Binario", color=color, size=15)
					self.ax1.spines['bottom'].set_color(color)
					self.ax1.spines['top'].set_color(color)
					self.ax1.spines['left'].set_color(color)
					self.ax1.spines['right'].set_color(color)
					for t in self.ax1.xaxis.get_ticklines(): t.set_color(color)
					for t in self.ax1.yaxis.get_ticklines(): t.set_color(color)
					for t in self.ax1.xaxis.get_ticklines(): t.set_color(color)
					for t in self.ax1.yaxis.get_ticklines(): t.set_color(color)
					for label in self.ax1.get_yticklabels():
						label.set_color(color)
					for label in self.ax1.get_xticklabels():
						label.set_color(color)	
					#ocultando valores do eixo x				
					self.ax1.set_xticklabels([])		

				#caso se deseje o grafico do ruido	
				if self.checkBox5.isChecked():							
					if self.checkBox4.isChecked(): self.ax2 = self.figure.add_subplot(312)
					else: self.ax2 = self.figure.add_subplot(211)							
					#ajustando eixo de visualizacao			
					self.ax2.set_xlim(start, end)			
					self.ax2.step(self.x_noise, self.y_noise, color=self.printColor(), linewidth=self.linesWidth()) #opcao ativa imprime grafico	
					self.ax2.yaxis.set_major_locator(MaxNLocator(integer=True))
					self.ax2.xaxis.set_major_locator(MaxNLocator(integer=True))		
					self.ax2.xaxis.grid(color='gray', linestyle='--', linewidth=0.5)
					self.ax2.xaxis.grid(self.checkBox3.isChecked())	
					self.ax2.yaxis.grid(color='gray', linestyle='--', linewidth=0.5)			
					self.ax2.yaxis.grid(self.checkBox2.isChecked())
					self.ax2.set_facecolor((39./256.,40./256.,34./256.))	
					self.figure.set_facecolor((39./256.,40./256.,34./256.))
					color = "white"	
					self.ax2.set_ylabel("Ruido", color=color, size=15)
					self.ax2.spines['bottom'].set_color(color)
					self.ax2.spines['top'].set_color(color)
					self.ax2.spines['left'].set_color(color)
					self.ax2.spines['right'].set_color(color)
					for t in self.ax2.xaxis.get_ticklines(): t.set_color(color)
					for t in self.ax2.yaxis.get_ticklines(): t.set_color(color)
					for t in self.ax2.xaxis.get_ticklines(): t.set_color(color)
					for t in self.ax2.yaxis.get_ticklines(): t.set_color(color)
					for label in self.ax2.get_yticklabels():
						label.set_color(color)
					for label in self.ax2.get_xticklabels():
						label.set_color(color)	
					#ocultando valores do eixo x				
					self.ax2.set_xticklabels([])	

				self.canvas.draw()	
		else: return

	#faz o controle tanto das opcoes quanto do tamanho da tela quando o grafico for solicitado
	def checkBoxGraph(self):
		if (self.checkBox1.isChecked() and self.controle == False):			
			self.createGraph() #ativa caixa do grafico	
			self.plot()				
			#fixando o tamanho da janela inicial
			self.resize(self.width, self.height)

		elif (not(self.checkBox1.isChecked()) and self.controle == True):			
			self.clearGrafico()				
			#fixando o tamanho da janela inicial
			if (self.checkBoxIMAGE.isChecked()): self.resize(self.width, self.height)	
			else: self.resize(self.width, self.height_main)

	def update(self):
		if(self.comboBox3.currentText() == 'NRZ'): self.plot_NRZ()	
		if(self.comboBox3.currentText() == 'NRZ-L'): self.plot_NRZ_L()
		if(self.comboBox3.currentText() == 'NRZ-I'): self.plot_NRZ_I()
		if self.controle == True: self.plot()
		self.checkBoxGraph()
		self.gravaMensagem()	
		self.actions()	
		if (self.checkBoxASCII.isChecked()): self.atualizaOpcoesASCII()
		if (self.checkBoxIMAGE.isChecked()): self.convertIMAGE_to_Binary_in_label()
		if (self.lineEdit1.text() != ""):
			self.pushButtonCRC.setEnabled(not False)
		if (self.label2.text() != ""):
			self.pushButtonCRC_IMG.setEnabled(not False)		

	def gravaMensagem(self):
		global texto			

		if(self.lineEdit1.text() != ""):			 			
			texto = self._hex_to_binary(self._word_to_hex(self.lineEdit1.text()))	
			self.binario = self.return_bin(texto) #pegando valores binario e jogando em uma lista

			if(len(self.binario) != len(self.binario_noise)):
				self.lista_ASCII_error = [i for i in self.lineEdit1.text()]
				#print self.lista_ASCII_error
				self.noise_ASCII(10)
				texto = self._hex_to_binary(self._word_to_hex(self.lista_ASCII_error))				
				self.binario_noise = self.return_bin(texto) #pegando valores binario e jogando em uma lista
				#print self.binario_noise
				#print self.binario											
			self.label2.setText(texto)		

	def ASCII_to_Bin(self, texto):		
		return bin(int(binascii.hexlify(texto), 16))	

	def plot_NRZ(self):	
		self.radioButton1.setHidden(not False)
		self.radioButton2.setHidden(not False)	#oculta opcao do bit anterior				
		#valores para grafico	
		if((self.lineEdit1.text() != "" and len(self.binario) > 0) or (self.checkBoxIMAGE.isChecked() and len(self.binario) > 0)) :	
			self.y = [int(i) for i in self.binario]
			self.y = [self.y[0]] + self.y
			self.x = [ int(i) for i in range(len(self.y)) ]

			self.y_bin = [int(i) for i in self.binario]
			self.y_bin = [self.y_bin[0]] + self.y_bin
			self.x_bin = [ int(i) for i in range(len(self.y_bin)) ]

			if(len(self.binario_noise) > 0):
				self.y_noise = [int(i) for i in self.binario_noise]
				self.y_noise = [self.y_noise[0]] + self.y_noise
				self.x_noise = [ int(i) for i in range(len(self.y_noise))]

	def plot_NRZ_L(self):
		#valores para grafico		
		self.plot_NRZ()

		for i in range(len(self.y)):
			if(self.y[i] == 0): self.y[i] = 1
			elif(self.y[i] == 1): self.y[i] = -1	
		self.x = [ i for i in range(len(self.y)) ]	

	def plot_NRZ_I_1(self):		
		self.plot_NRZ()
		self.radioButton1.setHidden(not True)
		self.radioButton2.setHidden(not True)
		for i in range(1,len(self.y)):	
			if(self.y[i] == 1):
				if(self.y[i-1] == 0): self.y[i] = 1
				else: self.y[i] = 0
			else: self.y[i] = self.y[i-1]

		for i in range(len(self.y)):
			if(self.y[i] == 0): self.y[i] = -1 

	def plot_NRZ_I(self):
		
		self.radioButton1.setHidden(not True)
		self.radioButton2.setHidden(not True)
			
		if(self.radioButton1.isChecked()):
			self.plot_NRZ_I_1()

		if(self.radioButton2.isChecked()):
			self.plot_NRZ_I_1()	
			for i in range(len(self.y)):
				if(self.y[i] == 1): self.y[i] = -1
				else: self.y[i] = 1 

	@staticmethod
	def return_bin(value): #dado um int bin eh retornado uma lista dos valores
		return [int(i) for i in value]

	@staticmethod
	def _word_to_hex(word):
		values = ''
		for letter in word:
			values += '{:2x}'.format(ord(letter))
		return values

	@staticmethod
	def _hex_to_binary(hex_):
		try:
			values = ""
			for hex_char in hex_:
					values += "{:0=4b}".format(int(hex_char, 16))
		except ValueError:
			return None
		return values

	#funcoes apenas para a visualizacao da imagem
	def zoomIn(self):
		self.scaleImage(1.25)

	def zoomOut(self):
		self.scaleImage(0.8)

	def normalSize(self):
		self.labelIMAGE.adjustSize()
		self.scaleFactor = 1.0

	def fitToWindow(self):
		fitToWindow = self.fitToWindowAct.isChecked()
		self.scrollAreaIMAGE.setWidgetResizable(fitToWindow)
		if not fitToWindow:
			self.normalSize()

		self.updateActions()

	def open(self):
		#limpando tela
		self.label2.clear()			
		self.labelIMAGE.clear()
		self.x = []
		self.y = []
		self.x_bin = []
		self.y_bin = []		
		self.R = []
		self.G = []
		self.B = []
		self.R_envio = []
		self.G_envio = []
		self.B_envio = []
		self.texto = []		
		self.x_noise = []
		self.y_noise = []	
		self.binario = []	
		self.binario_noise = []
		self.R_noise = []
		self.G_noise = []
		self.B_noise = []		
		self.R_envio_noise = []
		self.G_envio_noise = []
		self.B_envio_noise = []

		if (self.checkBoxIMAGE.isChecked()):		    
		    options = QFileDialog.Options()
		    # fileName = QFileDialog.getOpenFileName(self, "Open File", QDir.currentPath())
		    fileName, _ = QFileDialog.getOpenFileName(self, 'QFileDialog.getOpenFileName()', '','Images (*.png *.jpeg *.jpg *.bmp *.gif)', options=options)

		    if(fileName != ' '):		    	
		        image = QImage(fileName)		        
		        if image.isNull():
		            QMessageBox.information(self, "Image Viewer", "Cannot load %s." % fileName)
		            return		            
		        self.labelIMAGE.setPixmap(QPixmap.fromImage(image))
		        self.scaleFactor = 1.0

		        self.scrollAreaIMAGE.setVisible(True)
		        self.fitToWindowAct.setEnabled(True)
		        self.updateActions()

	            if not self.fitToWindowAct.isChecked():
		            self.labelIMAGE.adjustSize()	           
		        #carregando a imagem e salvando em lista R,G e B
	            im = Image.open(fileName)
	            rgb_im = im.convert('RGB')
	            self.image_width = image.width()
	            self.image_height = image.height()
	            #print image_width, image_height 	            
	            #guardando imagem de impressao inicial na tela          
	            for i in range(0,self.image_width):
	            	for j in range(0,self.image_height):
						r,g,b = rgb_im.getpixel((i,j))
						#print i,j,r,g,b
						self.R_envio.append(r)
						self.G_envio.append(g)
						self.B_envio.append(b)														      		
	            I = np.array(im) #convetendo em vertor numpy	            
	            arr2im = Image.fromarray(I) #voltando para imagem   
	            #arr2im.show() #imprimindo imagem
	            #print self.return_bin(self._hex_to_binary(hex(R[0])[2:]))

	            self.R = self.R_envio[:int((self.spinBoxPORCENTAGEM.value()/100.)*len(self.R_envio))]
	            self.G = self.G_envio[:int((self.spinBoxPORCENTAGEM.value()/100.)*len(self.G_envio))]
	            self.B = self.B_envio[:int((self.spinBoxPORCENTAGEM.value()/100.)*len(self.B_envio))]
	            #print self.R_envio
	            #print len(self.R_envio)

	            if(self.R == self.G == self.B):	            	
		            self.lista_ASCII_error = self.R_envio[:]
		            self.noise_img(10)
		            self.R_envio_noise = self.lista_ASCII_error[:]
		            #print len(self.R_envio_noise)
		            self.G_envio_noise = self.lista_ASCII_error[:]
		            self.B_envio_noise = self.lista_ASCII_error[:]
		            self.R_noise = self.R_envio_noise[:int((self.spinBoxPORCENTAGEM.value()/100.)*len(self.R_envio_noise))]
		            self.G_noise = self.R_envio_noise[:int((self.spinBoxPORCENTAGEM.value()/100.)*len(self.R_envio_noise))]
		            self.B_noise = self.R_envio_noise[:int((self.spinBoxPORCENTAGEM.value()/100.)*len(self.R_envio_noise))]

	            else:
	            	self.lista_ASCII_error = self.R_envio[:]
	            	self.noise_img(10)
	            	self.R_envio_noise = self.lista_ASCII_error[:]
	            	self.R_noise = self.R_envio_noise[:int((self.spinBoxPORCENTAGEM.value()/100.)*len(self.R_envio_noise))]

	            	self.lista_ASCII_error = self.G_envio[:]
	            	self.noise_img(10)
	            	self.G_envio_noise = self.lista_ASCII_error[:]
	            	self.G_noise = self.G_envio_noise[:int((self.spinBoxPORCENTAGEM.value()/100.)*len(self.G_envio_noise))]

	            	self.lista_ASCII_error = self.B_envio[:]
	            	self.noise_img(10)
	            	self.B_envio_noise = self.lista_ASCII_error[:]
	            	self.B_noise = self.B_envio_noise[:int((self.spinBoxPORCENTAGEM.value()/100.)*len(self.B_envio_noise))] 

	def convertIMAGE_to_Binary_in_label(self):		
		if(self.radioButtonR.isChecked()):
			if(len(self.R) > 0):
				texto = self._hex_to_binary([hex(x)[2:] for x in self.R])				
				#print self.R	
				self.binario = []
				self.binario = self.return_bin(texto) #pegando valores binario e jogando em uma lista				
				#print self.texto			
				self.label2.setText(texto)

				texto = self._hex_to_binary([hex(x)[2:] for x in self.R_noise])	

				if(len(texto) > len(self.binario)):
					texto = texto[:len(self.binario)]
				elif(len(texto) < len(self.binario)):
					self.binario = self.binario[:len(texto)]

				self.binario_noise = self.return_bin(texto) #pegando valores binario e jogando em uma lista				
				self.plot_NRZ()				

		elif(self.radioButtonG.isChecked()):
			if(len(self.G) > 0):
				texto = self._hex_to_binary([hex(x)[2:] for x in self.G])
				self.binario = []	
				self.binario = self.return_bin(texto) #pegando valores binario e jogando em uma lista
				#print self.binario			
				self.label2.setText(texto)

				texto = self._hex_to_binary([hex(x)[2:] for x in self.G_noise])

				if(len(texto) > len(self.binario)):
					texto = texto[:len(self.binario)]
				elif(len(texto) < len(self.binario)):
					self.binario = self.binario[:len(texto)]

				self.binario_noise = self.return_bin(texto) #pegando valores binario e jogando em uma lista
				self.plot_NRZ()

		elif(self.radioButtonB.isChecked()):
			if(len(self.B) > 0):
				texto = self._hex_to_binary([hex(x)[2:] for x in self.B])	
				self.binario = []
				self.binario = self.return_bin(texto) #pegando valores binario e jogando em uma lista
				#print self.binario			
				self.label2.setText(texto)

				texto = self._hex_to_binary([hex(x)[2:] for x in self.B_noise])	

				if(len(texto) > len(self.binario)):
					texto = texto[:len(self.binario)]
				elif(len(texto) < len(self.binario)):
					self.binario = self.binario[:len(texto)]

				self.binario_noise = self.return_bin(texto) #pegando valores binario e jogando em uma lista
				self.plot_NRZ()				

	def functionViewsImage(self):
		#ajustando janela
		if(self.checkBoxIMAGE.isChecked()): self.resize(self.width, self.height)
		else: self.resize(self.width, self.height_main)		
		self.mdiArea.setHidden(False)

	def functionClearImage(self):
		#ajustando janela
		if(self.checkBox1.isChecked()): self.resize(self.width, self.height)
		else: self.resize(self.width, self.height_main)
		self.mdiArea.setHidden(not False)               	               

	def createActions(self):
		self.openAct = QAction("&Open...", self, shortcut="Ctrl+O", triggered=self.open)
		self.exitAct = QAction("E&xit", self, shortcut="Ctrl+Q", triggered=self.close)
		self.zoomInAct = QAction("Zoom &In (25%)", self, shortcut="Ctrl++", enabled=False, triggered=self.zoomIn)
		self.zoomOutAct = QAction("Zoom &Out (25%)", self, shortcut="Ctrl+-", enabled=False, triggered=self.zoomOut)
		self.normalSizeAct = QAction("&Normal Size", self, shortcut="Ctrl+S", enabled=False, triggered=self.normalSize)
		self.fitToWindowAct = QAction("&Fit to Window", self, enabled=False, checkable=True, shortcut="Ctrl+F", triggered=self.fitToWindow)
		self.viewImage = QAction("&View Image", self, shortcut="Ctrl+I", triggered=self.functionViewsImage)	
		self.clearImage = QAction("&Clear Image", self, shortcut="Ctrl+U", triggered=self.functionClearImage)

	def createMenus(self):
		self.fileMenu = QMenu("&File", self)
		self.fileMenu.addSeparator()
		self.fileMenu.addAction(self.openAct)        
		self.fileMenu.addSeparator()
		self.fileMenu.addAction(self.exitAct)
		self.fileMenu.addSeparator()

		self.viewMenu = QMenu("&View", self)
		self.viewMenu.addSeparator()
		self.viewMenu.addAction(self.viewImage)
		self.viewMenu.addSeparator()
		self.viewMenu.addAction(self.clearImage)
		self.viewMenu.addSeparator()
		self.viewMenu.addAction(self.zoomInAct)
		self.viewMenu.addSeparator()
		self.viewMenu.addAction(self.zoomOutAct)
		self.viewMenu.addSeparator()
		self.viewMenu.addAction(self.normalSizeAct)
		self.viewMenu.addSeparator()
		self.viewMenu.addAction(self.fitToWindowAct)
		self.viewMenu.addSeparator()

		self.menuBar().addMenu(self.fileMenu)
		self.menuBar().addMenu(self.viewMenu)

	def updateActions(self):
		self.zoomInAct.setEnabled(not self.fitToWindowAct.isChecked())
		self.zoomOutAct.setEnabled(not self.fitToWindowAct.isChecked())
		self.normalSizeAct.setEnabled(not self.fitToWindowAct.isChecked())

	def scaleImage(self, factor):
		self.scaleFactor *= factor
		self.labelIMAGE.resize(self.scaleFactor * self.labelIMAGE.pixmap().size())

		self.adjustScrollBar(self.scrollAreaIMAGE.horizontalScrollBar(), factor)
		self.adjustScrollBar(self.scrollAreaIMAGE.verticalScrollBar(), factor)

		self.zoomInAct.setEnabled(self.scaleFactor < 3.0)
		self.zoomOutAct.setEnabled(self.scaleFactor > 0.333)

	def adjustScrollBar(self, scrollBar, factor):
		scrollBar.setValue(int(factor * scrollBar.value() + ((factor - 1) * scrollBar.pageStep() / 2)))

	#funcoes para o emissor em ASCII
	def enviaCaracter(self, PARAM_CARACTER):
		# Time entre a conexao serial e o tempo para escrever (enviar algo)
		time.sleep(0.2)
		self.comport.write(str.encode(PARAM_CARACTER))		

	def lerEntrada(self):		
		# Iniciando conexao serial		
		self.comport = serial.Serial(self.listaPortas[0], self.comboBox1.currentText(), timeout=0.2, write_timeout=0.2)			
		#PARAM_STRING="Ola como vai? Oi estou bem, e voce?" #recebe a entrada	
		value_CRC = CRCCCITT().calculate(str(self.lineEdit1.text())) #calculando valor CRC				

		if(self.checkBox6.isChecked()):	
			PARAM_STRING = "   " + ">" + str(value_CRC) + ">" + str(''.join(self.lista_ASCII_error)) + "<" + "   "
		else:
			PARAM_STRING = "   " + ">" + str(value_CRC) + ">" + str(self.lineEdit1.text()) + "<" + "   "			
		
		if(len(PARAM_STRING) > 0):				
			for i in range(0,len(PARAM_STRING)):
				self.enviaCaracter(PARAM_STRING[i])				
		# Fechando conexao serial
		self.comport.close()

	#funcoes para o receptor em ASCII
	def recebeCaracter(self):
		controle_entrada = 0		
		self.myText = []
		self.myCRC = []
		# Time entre a conexao serial e o tempo para escrever (enviar algo)
		time.sleep(0.2)
		VALUE_SERIAL=self.comport.readline()
		while(VALUE_SERIAL.encode("hex")[:2] != self._word_to_hex("<")):

			if(VALUE_SERIAL.encode("hex")[:2] == self._word_to_hex(">")): controle_entrada += 1
			elif(controle_entrada == 1 and (VALUE_SERIAL.encode("hex")[:2] != self._word_to_hex("\n"))): self.myCRC += VALUE_SERIAL[:1]
			elif(controle_entrada == 2 and (VALUE_SERIAL.encode("hex")[:2] != self._word_to_hex("\n"))): self.myText += VALUE_SERIAL[:1] 	
			# Time entre a conexao serial e o tempo para escrever (enviar algo)
			time.sleep(0.2)
			VALUE_SERIAL=self.comport.readline()		
			#print VALUE_SERIAL
		self.myCRC = int(''.join(self.myCRC))	
		#print myText
		#print CRCCCITT().calculate(str(''.join(myText)))
		self.label2.setStyleSheet('color: black')					
		return(''.join(self.myText))		

	def lerEntradaRecebida(self):		
		# Iniciando conexao serial		
		self.comport = serial.Serial(self.listaPortas[0], self.comboBox1.currentText(), timeout=0.2, write_timeout=0.2)				
		Frase = self.recebeCaracter()			
		self.lineEdit1.setText(str(Frase))
		self.comport.close()

		texto = self._hex_to_binary(self._word_to_hex(self.lineEdit1.text()))	
		self.binario = self.return_bin(texto) #pegando valores binario e jogando em uma lista	
		self.label2.setText(texto)	
		self.plot_NRZ() 

	#funcoes para o emissor em imagem
	def lerEntradaIMG(self):		
		# Iniciando conexao serial		
		self.comport = serial.Serial(self.listaPortas[0], self.comboBox1.currentText(), timeout=0.2, write_timeout=0.2)	
		self.strIMAGE = [] #vetor que guardara o valor inteiro da imagem como um char
		#print len(self.R_envio_noise)
		#print len(self.R_envio)	
		#print self.R	
		list_check_CRC = []
		for i in range(0, len(self.R_envio)):
			if(self.checkBox6.isChecked()):	
				self.strIMAGE.append(hex(self.R_envio_noise[i])[2:])
				if(hex(self.R_envio_noise[i])[2:] == '0'): self.strIMAGE.append(hex(self.R_envio_noise[i])[2:])	
			else:	
				self.strIMAGE.append(hex(self.R_envio[i])[2:])
				if(hex(self.R_envio[i])[2:] == '0'): self.strIMAGE.append(hex(self.R_envio[i])[2:])	 
			list_check_CRC.append(hex(self.R_envio[i])[2:])
			if(hex(self.R_envio[i])[2:] == '0'): list_check_CRC.append(hex(self.R_envio[i])[2:])

		#print len(self.strIMAGE)
		#print ''.join(self.strIMAGE)
		value_CRC = CRCCCITT().calculate(str(''.join(list_check_CRC)))
		if(self.image_height <= 10 or self.image_width <= 10):
			PARAM_STRING = "   " + ">" + str(value_CRC) + ">" + "0" + hex(self.image_height)[2:] + "0" + hex(self.image_width)[2:] + str(''.join(self.strIMAGE)) + "<" + "   "	
		else:
			PARAM_STRING = "   " + ">" + str(value_CRC) + ">" + hex(self.image_height)[2:] + hex(self.image_width)[2:] + str(''.join(self.strIMAGE)) + "<" + "   "		
		#print PARAM_STRING	
		
		if(len(PARAM_STRING) > 0):				
			for i in range(0,len(PARAM_STRING)):
				self.enviaCaracter(PARAM_STRING[i])				
		# Fechando conexao serial
		self.comport.close()

	#funcoes para o receptor em imagem
	def recebeIMG(self):
		controle_entrada = 0		
		self.myText = []
		self.myCRC = []
		# Time entre a conexao serial e o tempo para escrever (enviar algo)
		time.sleep(0.2)
		VALUE_SERIAL=self.comport.readline()
		while(VALUE_SERIAL.encode("hex")[:2] != self._word_to_hex("<")):

			if(VALUE_SERIAL.encode("hex")[:2] == self._word_to_hex(">")): controle_entrada += 1
			elif(controle_entrada == 1 and (VALUE_SERIAL.encode("hex")[:2] != self._word_to_hex("\n"))): self.myCRC += VALUE_SERIAL[:1] 
			elif(controle_entrada == 2 and (VALUE_SERIAL.encode("hex")[:2] != self._word_to_hex("\n"))): self.myText += VALUE_SERIAL[:1] 	
			# Time entre a conexao serial e o tempo para escrever (enviar algo)
			time.sleep(0.2)
			VALUE_SERIAL=self.comport.readline()
		#print len(self.myText)		
		#print ''.join(self.myText)
		self.myCRC = int(''.join(self.myCRC))
		#print self.myCRC
		#print CRCCCITT().calculate(str(''.join(self.myText)[4:]))						
		return(''.join(self.myText))		

	def lerEntradaRecebidaIMG(self):		
		# Iniciando conexao serial		
		self.comport = serial.Serial(self.listaPortas[0], self.comboBox1.currentText(), timeout=0.2, write_timeout=0.2)				
		Frase = self.recebeIMG()
		#print Frase
		#print len(Frase)			
		self.comport.close()

		self.vetorINT = [] #vetor servira para recuperar a imagem recebida
		for i in range(0, len(Frase), 2):
			self.vetorINT.append(int(Frase[i:i+2], 16))
		#print self.vetorINT
		#print len(self.vetorINT)	

		list_aux = self.vetorINT[2:]
		texto = self._hex_to_binary([hex(x)[2:] for x in list_aux])
		self.binario = []	
		self.binario = self.return_bin(texto) #pegando valores binario e jogando em uma lista
		#print self.binario
		self.label2.setStyleSheet('color: black')						
		self.label2.setText(texto)
		self.plot_NRZ()

		#gerando imagem
		self.recuperaIMG()

	def recuperaIMG(self):	
		#print len(self.vetorINT)
		#print self.vetorINT[0],self.vetorINT[1]
		self.vetorIMG = np.zeros((self.vetorINT[0],self.vetorINT[1]))
		incremento = 0
		lista_teste = []
		for i in range(0,self.vetorINT[1]):
			for j in range(0,self.vetorINT[0]):
				self.vetorIMG[j][i] = self.vetorINT[j+incremento+2]
				lista_teste.append(self.vetorIMG[j][i])				
			incremento += self.vetorINT[0]
		image = QImage()
		arr2im = Image.fromarray(self.vetorIMG) #convertendo matriz para imagem		#
		arr2im.save("recebido.gif")
		#print lista_teste
		#print len(lista_teste)

		self.labelIMAGE.setPixmap(QPixmap('recebido.gif'))		
		self.scaleFactor = 1.0
		self.scrollAreaIMAGE.setVisible(True)
		self.fitToWindowAct.setEnabled(True)
		self.updateActions()
		if not self.fitToWindowAct.isChecked():
			self.labelIMAGE.adjustSize()

	#Deteccao de Erros
	def verificaCRC_ASCII(self):
		if(CRCCCITT().calculate(str(''.join(self.myText))) == self.myCRC):
			self.label2.setStyleSheet('color: green')
		else:
			self.label2.setStyleSheet('color: red')	
	
	def verificaCRC_IMG(self):
		if(CRCCCITT().calculate(str(''.join(self.myText)[4:])) == self.myCRC):
			self.label2.setStyleSheet('color: green')
		else:
			self.label2.setStyleSheet('color: red')	

	#Insercao de Erro		
	def noise_ASCII(self, max_):
		if(len(self.lista_ASCII_error) > 1):
			noise = np.random.normal(0, max_, 100)
			tam = len(self.lista_ASCII_error)

			var = random.randint(1,tam-1)

			for i in range(0, var):
				value = random.randint(0, tam-1)
				value_noise = random.randint(0, 99)
				aux = abs(ord(self.lista_ASCII_error[value]) + int(noise[value_noise])) 	
				if(aux == 76 or aux == 74):
					aux = aux + 1
				self.lista_ASCII_error[value] = chr(aux)	

	def noise_img(self,max_):
		if(len(self.lista_ASCII_error) > 1):
			noise = np.random.normal(0, max_, 100)
			tam = len(self.lista_ASCII_error)

			var = random.randint(1, tam-1)

			for i in range(0,var):
				value = random.randint(0, tam-1)
				value_noise = random.randint(0, 99)
				aux = abs(self.lista_ASCII_error[value] + int(noise[value_noise])) 	
				if(aux > 255 or aux < 150):
					aux = 255 
				self.lista_ASCII_error[value] = aux	 		
Пример #8
0
class MDIWindow(QMainWindow):
    count = 0

    def __init__(self):
        super().__init__()

        self.data_dict = {}
        self.mdi = QMdiArea()
        self.setCentralWidget(self.mdi)
        #        self.mdi.resize(950,950)

        bar = self.menuBar()

        self.current_dir = None
        self.opened_wd_names = []
        file = bar.addMenu("File")
        file.addAction("New")
        file.addAction("cascade")
        file.addAction("Tiled")
        file.triggered[QAction].connect(self.WindowTrig)

        load = bar.addMenu("Load")
        load.addAction("2D")
        load.addAction("3D")
        load.triggered[QAction].connect(self.dir_open)

        toolbar = QToolBar()
        self.addToolBar(toolbar)

        bw_button_action = QAction('base_wnd', self)
        bw_button_action.setStatusTip('base window button')
        bw_button_action.triggered.connect(self.onclicktb)
        toolbar.addAction(bw_button_action)

        self.setWindowTitle("MDI Application")

        self.base_wd = QMdiSubWindow()
        self.base_wd.setAttribute(Qt.WA_DeleteOnClose, False)
        self.base_wd.resize(400, 400)
        self.base_wd.plt_i = pg.PlotItem(labels={
            'left': ('slits', 'degrees'),
            'bottom': ('Kin. Energy', 'eV')
        })
        self.base_wd.plt_iv = pg.ImageView(view=self.base_wd.plt_i)
        self.base_wd.setWidget(self.base_wd.plt_iv)
        self.base_wd.setWindowTitle("plot window")
        self.mdi.addSubWindow(self.base_wd)
        self.base_wd.show()

        data_DockWidget = QDockWidget('data', self)
        data_DockWidget.setObjectName(('data window'))
        data_DockWidget.setAllowedAreas(Qt.RightDockWidgetArea)

        self.data_list = QListWidget()
        data_DockWidget.setWidget(self.data_list)
        self.addDockWidget(Qt.RightDockWidgetArea, data_DockWidget)

        self.data_list.itemClicked.connect(self.show_data)
        self.data_list.itemDoubleClicked.connect(self.get_data)
        self.mdi.subWindowActivated.connect(self.get_data)

    def WindowTrig(self, p):
        if p.text() == "New":
            MDIWindow.count = MDIWindow.count + 1
            sub = QMdiSubWindow()
            sub.setWidget(QTextEdit())
            sub.setWindowTitle("Sub Window" + str(MDIWindow.count))
            self.mdi.addSubWindow(sub)
            sub.show()

        if p.text() == "cascade":
            self.mdi.cascadeSubWindows()

        if p.text() == "Tiled":
            self.mdi.tileSubWindows()

    def dir_open(self, p):
        self.current_dir = dlg.File_dlg.openDirNameDialog(self)
        print(self.current_dir)
        if p.text() == "2D":
            print('2D')
            files_ls = glob.glob(self.current_dir + '/*.ibw')
            fls = [f[len(self.current_dir) + 1:] for f in files_ls]
            print(files_ls)
            self.data_list.addItems(fls)
        if p.text() == "3D":
            zip_ls = glob.glob(self.current_dir + '/*.zip')
            zp = [f[len(self.current_dir) + 1:] for f in zip_ls]
            print(zp)
            self.data_list.addItems(zp)

    def show_data(self, s):
        print('show data')
        file_name = s.text()
        self.data_dict = ut.ibw2dict(self.current_dir + '/' + file_name)

        e_sc = self.data_dict['E_axis'][1] - self.data_dict['E_axis'][0]
        a_sc = self.data_dict['A_axis'][1] - self.data_dict['A_axis'][0]
        e_str = self.data_dict['E_axis'][0]
        a_str = self.data_dict['A_axis'][0]
        self.base_wd.plt_i.setRange(xRange=[self.data_dict['E_axis'][0], self.data_dict['E_axis'][-1]], \
                            yRange=[self.data_dict['A_axis'][0], self.data_dict['A_axis'][-1]], update=True, padding = 0)

        self.base_wd.plt_i.getViewBox().setLimits(xMin= e_str, xMax = self.data_dict['E_axis'][-1],\
                                          yMin=self.data_dict['A_axis'][0], yMax=self.data_dict['A_axis'][-1])

        self.base_wd.plt_iv.setImage(
            self.data_dict['data'],
            pos=[self.data_dict['E_axis'][0], self.data_dict['A_axis'][0]],
            scale=[e_sc, a_sc])
        #        self.base_wd.plt_iv.ui.histogram.hide()
        self.base_wd.plt_iv.ui.roiBtn.hide()
        self.base_wd.plt_iv.ui.menuBtn.hide()

    def get_data(self, s):
        if isinstance(s, QMdiSubWindow) and str(
                s.objectName()) in self.opened_wd_names:
            sub = self.mdi.currentSubWindow()
            self.data_dict = ut.ibw2dict(self.current_dir + '/' +
                                         str(s.objectName()))
        elif isinstance(s, QListWidgetItem):
            file_name = s.text()
            self.opened_wd_names.append(file_name)
            MDIWindow.count = MDIWindow.count + 1
            sub = QMdiSubWindow()
            sub.resize(550, 550)
            sub.setWindowTitle(file_name)
            sub.setObjectName(file_name)
            self.data_dict = ut.ibw2dict(self.current_dir + '/' + file_name)
        else:
            print(isinstance(s, QMdiSubWindow), isinstance(s, QListWidgetItem))
            print(type(s))
            return
        e_sc = self.data_dict['E_axis'][1] - self.data_dict['E_axis'][0]
        a_sc = self.data_dict['A_axis'][1] - self.data_dict['A_axis'][0]
        e_rg = self.data_dict['E_axis'][-1] - self.data_dict['E_axis'][0]
        a_rg = self.data_dict['A_axis'][-1] - self.data_dict['A_axis'][0]

        e_str = self.data_dict['E_axis'][0]
        a_str = self.data_dict['A_axis'][0]
        e_end = self.data_dict['E_axis'][-1]
        a_end = self.data_dict['A_axis'][-1]
        print(e_str, a_str)
        print(e_end, a_end)
        print(e_rg, a_rg)
        print(e_sc, a_sc)

        gr_v = pg.GraphicsView()
        l = pg.GraphicsLayout()
        gr_v.setCentralWidget(l)
        sub.setWidget(gr_v)
        self.mdi.addSubWindow(sub)
        sub.show()

        p1 = l.addPlot(x=[1, 2],
                       y=[1, 2],
                       name="Plot1",
                       title="EDC",
                       pen="r",
                       row=0,
                       col=0)
        #       label1 = pg.LabelItem(justify='right')
        #        p1.addItem(label1)

        plt_i = pg.PlotItem(labels={
            'left': ('slits', 'degrees'),
            'bottom': ('Kin. Energy', 'eV')
        })
        plt_i.setRange(xRange=[e_str, e_end],
                       yRange=[a_str, a_end],
                       update=True,
                       padding=0)

        vb = plt_i.getViewBox()
        vb.setLimits(xMin=e_str, xMax=e_end, yMin=a_str, yMax=a_end)
        vb.setMouseMode(vb.RectMode)

        l.addItem(plt_i, row=1, col=0)
        img_i = pg.ImageItem(self.data_dict['data'], border=None)
        qrect = vb.viewRect()
        img_i.setRect(qrect)
        vb.addItem(img_i)
        vb.autoRange()
        #        vb.invertX()
        vb.invertY()
        hist = pg.HistogramLUTItem(image=img_i)

        l.addItem(hist, row=0, col=1)

        p2 = l.addPlot(x=[1, 2],
                       y=[2, 1],
                       name="Plot2",
                       title="MDC",
                       pen="g",
                       row=1,
                       col=1)
        #        label2 = pg.LabelItem(justify='left')
        #        plt_i.addItem(label2)

        # cross hair
        vLine = pg.InfiniteLine(angle=90, movable=False)
        hLine = pg.InfiniteLine(angle=0, movable=False)
        p1.addItem(vLine, ignoreBounds=False)
        p1.addItem(hLine, ignoreBounds=False)

        vb1 = p1.vb

        pcv = plt_i.addLine(x=e_end, pen='r')
        pch = plt_i.addLine(y=a_str, pen='r')

        #        lROI = pg.ROI(((e_str+e_end)/2,a_str), size=(5*e_sc,a_rg))
        #        vb.addItem(lROI)
        #        slice, coor = lROI.getArrayRegion(self.data_dict['data'], img_i ,returnMappedCoords = True)

        #        print('slice')
        #        sl_sum=np.sum(slice, axis=0)
        #        print(sl_sum[0:10])
        #        print(type(slice), slice.shape)
        #        print(type(coor), coor.shape)
        #        print(coor[1,0,0:10])
        #        p2.invertY()
        #        p2.setYLink(plt_i)
        #        p2.plot(y=coor[1,0,:], x=sl_sum)

        def onMouseMoved(point):
            p = vb.mapSceneToView(point)
            pcv.setValue(p.x())
            pch.setValue(p.y())
            #            print(p.x(), p.y())

            hROI = pg.ROI((e_str, p.y()), size=(e_rg, 5 * a_sc))
            vb.addItem(hROI)
            hROI.hide()
            sl, co = hROI.getArrayRegion(self.data_dict['data'],
                                         img_i,
                                         returnMappedCoords=True)
            sl_sum = np.sum(sl, axis=1)
            p1.setXLink(plt_i)
            p1.plot(x=co[0, :, 0], y=sl_sum, clear=True)

            vROI = pg.ROI((p.x(), a_str), size=(5 * e_sc, a_rg))
            vb.addItem(vROI)
            vROI.hide()
            slc, coo = vROI.getArrayRegion(self.data_dict['data'],
                                           img_i,
                                           returnMappedCoords=True)
            sl_sum = np.sum(slc, axis=0)
            p2.invertY()
            p2.setYLink(plt_i)
            p2.plot(y=coo[1, 0, :], x=sl_sum, clear=True)


#            label2.setText("{}-{}".format(p.x(), p.y()))

        img_i.scene().sigMouseMoved.connect(onMouseMoved)

    def onclicktb(self):
        self.base_wd.plt_i = pg.PlotItem(labels={
            'left': ('slits', 'degrees'),
            'bottom': ('Kin. Energy', 'eV')
        })
        self.base_wd.plt_iv = pg.ImageView(view=self.base_wd.plt_i)
        self.base_wd.setWidget(self.base_wd.plt_iv)
        self.base_wd.show()
Пример #9
0
    def get_data(self, s):
        if isinstance(s, QMdiSubWindow) and str(
                s.objectName()) in self.opened_wd_names:
            sub = self.mdi.currentSubWindow()
            self.data_dict = ut.ibw2dict(self.current_dir + '/' +
                                         str(s.objectName()))
        elif isinstance(s, QListWidgetItem):
            file_name = s.text()
            self.opened_wd_names.append(file_name)
            MDIWindow.count = MDIWindow.count + 1
            sub = QMdiSubWindow()
            sub.resize(550, 550)
            sub.setWindowTitle(file_name)
            sub.setObjectName(file_name)
            self.data_dict = ut.ibw2dict(self.current_dir + '/' + file_name)
        else:
            print(isinstance(s, QMdiSubWindow), isinstance(s, QListWidgetItem))
            print(type(s))
            return
        e_sc = self.data_dict['E_axis'][1] - self.data_dict['E_axis'][0]
        a_sc = self.data_dict['A_axis'][1] - self.data_dict['A_axis'][0]
        e_rg = self.data_dict['E_axis'][-1] - self.data_dict['E_axis'][0]
        a_rg = self.data_dict['A_axis'][-1] - self.data_dict['A_axis'][0]

        e_str = self.data_dict['E_axis'][0]
        a_str = self.data_dict['A_axis'][0]
        e_end = self.data_dict['E_axis'][-1]
        a_end = self.data_dict['A_axis'][-1]
        print(e_str, a_str)
        print(e_end, a_end)
        print(e_rg, a_rg)
        print(e_sc, a_sc)

        gr_v = pg.GraphicsView()
        l = pg.GraphicsLayout()
        gr_v.setCentralWidget(l)
        sub.setWidget(gr_v)
        self.mdi.addSubWindow(sub)
        sub.show()

        p1 = l.addPlot(x=[1, 2],
                       y=[1, 2],
                       name="Plot1",
                       title="EDC",
                       pen="r",
                       row=0,
                       col=0)
        #       label1 = pg.LabelItem(justify='right')
        #        p1.addItem(label1)

        plt_i = pg.PlotItem(labels={
            'left': ('slits', 'degrees'),
            'bottom': ('Kin. Energy', 'eV')
        })
        plt_i.setRange(xRange=[e_str, e_end],
                       yRange=[a_str, a_end],
                       update=True,
                       padding=0)

        vb = plt_i.getViewBox()
        vb.setLimits(xMin=e_str, xMax=e_end, yMin=a_str, yMax=a_end)
        vb.setMouseMode(vb.RectMode)

        l.addItem(plt_i, row=1, col=0)
        img_i = pg.ImageItem(self.data_dict['data'], border=None)
        qrect = vb.viewRect()
        img_i.setRect(qrect)
        vb.addItem(img_i)
        vb.autoRange()
        #        vb.invertX()
        vb.invertY()
        hist = pg.HistogramLUTItem(image=img_i)

        l.addItem(hist, row=0, col=1)

        p2 = l.addPlot(x=[1, 2],
                       y=[2, 1],
                       name="Plot2",
                       title="MDC",
                       pen="g",
                       row=1,
                       col=1)
        #        label2 = pg.LabelItem(justify='left')
        #        plt_i.addItem(label2)

        # cross hair
        vLine = pg.InfiniteLine(angle=90, movable=False)
        hLine = pg.InfiniteLine(angle=0, movable=False)
        p1.addItem(vLine, ignoreBounds=False)
        p1.addItem(hLine, ignoreBounds=False)

        vb1 = p1.vb

        pcv = plt_i.addLine(x=e_end, pen='r')
        pch = plt_i.addLine(y=a_str, pen='r')

        #        lROI = pg.ROI(((e_str+e_end)/2,a_str), size=(5*e_sc,a_rg))
        #        vb.addItem(lROI)
        #        slice, coor = lROI.getArrayRegion(self.data_dict['data'], img_i ,returnMappedCoords = True)

        #        print('slice')
        #        sl_sum=np.sum(slice, axis=0)
        #        print(sl_sum[0:10])
        #        print(type(slice), slice.shape)
        #        print(type(coor), coor.shape)
        #        print(coor[1,0,0:10])
        #        p2.invertY()
        #        p2.setYLink(plt_i)
        #        p2.plot(y=coor[1,0,:], x=sl_sum)

        def onMouseMoved(point):
            p = vb.mapSceneToView(point)
            pcv.setValue(p.x())
            pch.setValue(p.y())
            #            print(p.x(), p.y())

            hROI = pg.ROI((e_str, p.y()), size=(e_rg, 5 * a_sc))
            vb.addItem(hROI)
            hROI.hide()
            sl, co = hROI.getArrayRegion(self.data_dict['data'],
                                         img_i,
                                         returnMappedCoords=True)
            sl_sum = np.sum(sl, axis=1)
            p1.setXLink(plt_i)
            p1.plot(x=co[0, :, 0], y=sl_sum, clear=True)

            vROI = pg.ROI((p.x(), a_str), size=(5 * e_sc, a_rg))
            vb.addItem(vROI)
            vROI.hide()
            slc, coo = vROI.getArrayRegion(self.data_dict['data'],
                                           img_i,
                                           returnMappedCoords=True)
            sl_sum = np.sum(slc, axis=0)
            p2.invertY()
            p2.setYLink(plt_i)
            p2.plot(y=coo[1, 0, :], x=sl_sum, clear=True)


#            label2.setText("{}-{}".format(p.x(), p.y()))

        img_i.scene().sigMouseMoved.connect(onMouseMoved)
Пример #10
0
class MainWindow(QMainWindow):
    def __init__(self, win_arg):
        super(MainWindow, self).__init__()
        loadUi(getcwd() + '/ui/main.ui', self)
        self.mdi.setBackground(QBrush(QImage(getcwd() + "/images/logo.png")))
        self.setWindowIcon(QIcon(getcwd() + "/images/icon.ico"))

        self.menu_3.setEnabled(False)

        if "-FS" in win_arg:
            self.arg_FS()

        logging.config.fileConfig(getcwd() + '/setting/logger_conf.ini')
        self.logger = logging.getLogger("MainLog")

        self.show()
        self.setDisabled(True)

        self.login = login_window.LoginWindow(self)
        # self.admin_login()

    def access(self):
        for item in User().access_list(self.__class__.__name__):
            a = getattr(self, item["atr1"])
            if item["atr2"]:
                a = getattr(a, item["atr2"])

            if item["value"]:
                try:
                    val = int(item["value"])
                except:
                    val = item["value"]
                a(val)
            else:
                a()

    def view_material(self):
        self.material = supply_material.MaterialSupplyList()
        self.sub_material = QMdiSubWindow()
        self.sub_material.setWidget(self.material)
        self.mdi.addSubWindow(self.sub_material)
        self.sub_material.resize(self.material.size())
        self.sub_material.show()

    def view_material_provider(self):
        self.mat_prov = provider.ProviderMaterial()
        self.sub_provider = QMdiSubWindow()
        self.sub_provider.setWidget(self.mat_prov)
        self.mdi.addSubWindow(self.sub_provider)
        self.sub_provider.resize(self.mat_prov.size())
        self.sub_provider.show()

    def view_material_name(self):
        self.material_neme = supply_material.MaterialName()
        self.sub_mater_name = QMdiSubWindow()
        self.sub_mater_name.setWidget(self.material_neme)
        self.mdi.addSubWindow(self.sub_mater_name)
        self.sub_mater_name.resize(self.material_neme.size())
        self.sub_mater_name.show()

    def view_comparing_name(self):
        self.comparing_name = comparing.ComparingName()
        self.sub_comp_name = QMdiSubWindow()
        self.sub_comp_name.setWidget(self.comparing_name)
        self.mdi.addSubWindow(self.sub_comp_name)
        self.sub_comp_name.resize(self.comparing_name.size())
        self.sub_comp_name.show()

    def view_accessories_name(self):
        self.accessories_name = supply_accessories.AccessoriesName()
        self.sub_accsess_name = QMdiSubWindow()
        self.sub_accsess_name.setWidget(self.accessories_name)
        self.mdi.addSubWindow(self.sub_accsess_name)
        self.sub_accsess_name.resize(self.accessories_name.size())
        self.sub_accsess_name.show()

    def view_accessories_provider(self):
        self.access_prov = provider.ProviderAccessories()
        self.sub_provider_access = QMdiSubWindow()
        self.sub_provider_access.setWidget(self.access_prov)
        self.mdi.addSubWindow(self.sub_provider_access)
        self.sub_provider_access.resize(self.access_prov.size())
        self.sub_provider_access.show()

    def view_accessories(self):
        self.accessories = supply_accessories.AccessoriesSupplyList()
        self.accessories.set_settings()
        self.sub_accessories = QMdiSubWindow()
        self.sub_accessories.setWidget(self.accessories)
        self.mdi.addSubWindow(self.sub_accessories)
        self.sub_accessories.resize(self.accessories.size())
        self.sub_accessories.show()

    def view_staff_country(self):
        self.staff_country = staff.Country()
        self.sub_staff_country = QMdiSubWindow()
        self.sub_staff_country.setWidget(self.staff_country)
        self.mdi.addSubWindow(self.sub_staff_country)
        self.sub_staff_country.resize(self.staff_country.size())
        self.sub_staff_country.show()

    def view_staff_position(self):
        self.staff_position = staff.StaffPosition()
        self.sub_staff_position = QMdiSubWindow()
        self.sub_staff_position.setWidget(self.staff_position)
        self.mdi.addSubWindow(self.sub_staff_position)
        self.sub_staff_position.resize(self.staff_position.size())
        self.sub_staff_position.show()

    def view_staff_list(self):
        self.staff_list = staff.Staff()
        self.sub_staff_list = QMdiSubWindow()
        self.sub_staff_list.setWidget(self.staff_list)
        self.mdi.addSubWindow(self.sub_staff_list)
        self.sub_staff_list.resize(self.staff_list.size())
        self.sub_staff_list.show()

    def view_staff_calendar(self):
        self.staff_calendar = notification.WorkCalendar()
        self.sub_staff_calendar = QMdiSubWindow()
        self.sub_staff_calendar.setWidget(self.staff_calendar)
        self.mdi.addSubWindow(self.sub_staff_calendar)
        self.sub_staff_calendar.resize(self.staff_calendar.size())
        self.sub_staff_calendar.show()

    def view_staff_card(self):
        self.staff_card = staff_traffic.StaffCardList()
        self.sub_staff_card = QMdiSubWindow()
        self.sub_staff_card.setWidget(self.staff_card)
        self.mdi.addSubWindow(self.sub_staff_card)
        self.sub_staff_card.resize(self.staff_card.size())
        self.sub_staff_card.show()

    def view_staff_traffic(self):
        self.staff_traffic = staff_traffic.StaffTraffic()
        self.sub_staff_traffic = QMdiSubWindow()
        self.sub_staff_traffic.setWidget(self.staff_traffic)
        self.mdi.addSubWindow(self.sub_staff_traffic)
        self.sub_staff_traffic.resize(self.staff_traffic.size())
        self.sub_staff_traffic.show()

    def view_settings_path(self):
        self.sett_path = program_settings.SettingsPath()
        self.sub_sett_path = QMdiSubWindow()
        self.sub_sett_path.setWidget(self.sett_path)
        self.mdi.addSubWindow(self.sub_sett_path)
        self.sub_sett_path.resize(self.sett_path.size())
        self.sub_sett_path.show()

    def view_settings_road(self):
        self.sett_road = program_settings.SettingsRoad()
        self.sub_sett_road = QMdiSubWindow()
        self.sub_sett_road.setWidget(self.sett_road)
        self.mdi.addSubWindow(self.sub_sett_road)
        self.sub_sett_road.resize(self.sett_road.size())
        self.sub_sett_road.show()

    def view_clients(self):
        self.clients = clients.ClientList()
        self.sub_clients = QMdiSubWindow()
        self.sub_clients.setWidget(self.clients)
        self.mdi.addSubWindow(self.sub_clients)
        self.sub_clients.resize(self.clients.size())
        self.sub_clients.show()

    def view_operation(self):
        self.operation_list = operation.OperationList()
        self.sub_operation_list = QMdiSubWindow()
        self.sub_operation_list.setWidget(self.operation_list)
        self.mdi.addSubWindow(self.sub_operation_list)
        self.sub_operation_list.resize(self.operation_list.size())
        self.sub_operation_list.show()

    def view_add_operation(self):
        self.add_operation_list = operation.OperationAddList()
        self.sub_add_operation_list = QMdiSubWindow()
        self.sub_add_operation_list.setWidget(self.add_operation_list)
        self.mdi.addSubWindow(self.sub_add_operation_list)
        self.sub_add_operation_list.resize(self.add_operation_list.size())
        self.sub_add_operation_list.show()

    def view_product(self):
        self.article_list = article.ArticleListOld()
        self.sub_article_list = QMdiSubWindow()
        self.sub_article_list.setWidget(self.article_list)
        self.mdi.addSubWindow(self.sub_article_list)
        self.sub_article_list.resize(self.article_list.size())
        self.sub_article_list.show()

    def view_order_ooo_list(self):
        self.order_list = order.OrderListOOO()
        self.sub_order_list = QMdiSubWindow()
        self.sub_order_list.setWidget(self.order_list)
        self.mdi.addSubWindow(self.sub_order_list)
        self.sub_order_list.resize(self.order_list.size())
        self.sub_order_list.show()

    def view_order_ip_list(self):
        self.order_list = order.OrderListIP()
        self.sub_order_list = QMdiSubWindow()
        self.sub_order_list.setWidget(self.order_list)
        self.mdi.addSubWindow(self.sub_order_list)
        self.sub_order_list.resize(self.order_list.size())
        self.sub_order_list.show()

    def view_cut_mission_list(self):
        self.cut_mission_list = cut.CutListMission()
        self.sub_cut_mission_list = QMdiSubWindow()
        self.sub_cut_mission_list.setWidget(self.cut_mission_list)
        self.mdi.addSubWindow(self.sub_cut_mission_list)
        self.sub_cut_mission_list.resize(self.cut_mission_list.size())
        self.sub_cut_mission_list.show()

    def view_cut_list(self):
        self.cut_list = cut.CutList()
        self.sub_cut_list = QMdiSubWindow()
        self.sub_cut_list.setWidget(self.cut_list)
        self.mdi.addSubWindow(self.sub_cut_list)
        self.sub_cut_list.resize(self.cut_list.size())
        self.sub_cut_list.show()

    def view_article_list(self):
        self.article_list_all = article.ArticleListAll()
        self.sub_article_list_all = QMdiSubWindow()
        self.sub_article_list_all.setWidget(self.article_list_all)
        self.mdi.addSubWindow(self.sub_article_list_all)
        self.sub_article_list_all.resize(self.article_list_all.size())
        self.sub_article_list_all.show()

    def view_article_test(self):
        self.article_test = article.ArticleList()
        self.sub_article_test = QMdiSubWindow()
        self.sub_article_test.setWidget(self.article_test)
        self.mdi.addSubWindow(self.sub_article_test)
        self.sub_article_test.resize(self.article_test.size())
        self.sub_article_test.show()

    def view_pack_list(self):
        self.pack_list = pack.PackList()
        self.sub_pack_list = QMdiSubWindow()
        self.sub_pack_list.setWidget(self.pack_list)
        self.mdi.addSubWindow(self.sub_pack_list)
        self.sub_pack_list.resize(self.pack_list.size())
        self.sub_pack_list.show()

    def view_pay_plus_minus(self):
        self.pay_plus_minus = pay.PayList()
        self.sub_pay_plus_minus = QMdiSubWindow()
        self.sub_pay_plus_minus.setWidget(self.pay_plus_minus)
        self.mdi.addSubWindow(self.sub_pay_plus_minus)
        self.sub_pay_plus_minus.resize(self.pay_plus_minus.size())
        self.sub_pay_plus_minus.show()

    def view_other_order_edi(self):
        self.input_order_edi = other.OrderEDI()
        self.sub_input_order_edi = QMdiSubWindow()
        self.sub_input_order_edi.setWidget(self.input_order_edi)
        self.mdi.addSubWindow(self.sub_input_order_edi)
        self.sub_input_order_edi.resize(self.input_order_edi.size())
        self.sub_input_order_edi.show()

    def view_audit_verification(self):
        self.audit_verification = audit.AuditVerification()
        self.sub_audit_verification = QMdiSubWindow()
        self.sub_audit_verification.setWidget(self.audit_verification)
        self.mdi.addSubWindow(self.sub_audit_verification)
        self.sub_audit_verification.resize(self.audit_verification.size())
        self.sub_audit_verification.show()

    def view_salary_work(self):
        self.salary_list = salary.SalaryList()
        self.sub_salary_list = QMdiSubWindow()
        self.sub_salary_list.setWidget(self.salary_list)
        self.mdi.addSubWindow(self.sub_salary_list)
        self.sub_salary_list.resize(self.salary_list.size())
        self.sub_salary_list.show()

    def view_pack_operation_list(self):
        self.operation_list = operation_list.PayList(no_start_set=True)
        self.sub_operation_list = QMdiSubWindow()
        self.sub_operation_list.setWidget(self.operation_list)
        self.mdi.addSubWindow(self.sub_operation_list)
        self.sub_operation_list.resize(self.operation_list.size())
        self.sub_operation_list.show()

    def view_product_warehouse(self):
        self.product_warehouse = warehouse_product.Warehouse()
        self.sub_product_warehouse = QMdiSubWindow()
        self.sub_product_warehouse.setWidget(self.product_warehouse)
        self.mdi.addSubWindow(self.sub_product_warehouse)
        self.sub_product_warehouse.resize(self.product_warehouse.size())
        self.sub_product_warehouse.show()

    def view_product_warehouse_2(self):
        self.product_warehouse2 = warehouse_product.Warehouse2()
        self.sub_product_warehouse2 = QMdiSubWindow()
        self.sub_product_warehouse2.setWidget(self.product_warehouse2)
        self.mdi.addSubWindow(self.sub_product_warehouse2)
        self.sub_product_warehouse2.resize(self.product_warehouse2.size())
        self.sub_product_warehouse2.show()

    def view_warehouse_rest(self):
        self.rest_warehouse = warehouse_rest.WarehouseRest()
        self.sub_rest_warehouse = QMdiSubWindow()
        self.sub_rest_warehouse.setWidget(self.rest_warehouse)
        self.mdi.addSubWindow(self.sub_rest_warehouse)
        self.sub_rest_warehouse.resize(self.rest_warehouse.size())
        self.sub_rest_warehouse.show()

    def view_warehouse_material(self):
        self.material_warehouse = warehouse_material.Warehouse()
        self.sub_material_warehouse = QMdiSubWindow()
        self.sub_material_warehouse.setWidget(self.material_warehouse)
        self.mdi.addSubWindow(self.sub_material_warehouse)
        self.sub_material_warehouse.resize(self.material_warehouse.size())
        self.sub_material_warehouse.show()

    def view_warehouse_accessories(self):
        self.accessories_warehouse = warehouse_accessories.Warehouse()
        self.sub_material_accessories = QMdiSubWindow()
        self.sub_material_accessories.setWidget(self.accessories_warehouse)
        self.mdi.addSubWindow(self.sub_material_accessories)
        self.sub_material_accessories.resize(self.accessories_warehouse.size())
        self.sub_material_accessories.show()

    def view_warehouse_adjustments_material(self):
        self.adjustments_material = warehouse_adjustments.MaterialAdjustmentsList()
        self.sub_adjustments_material = QMdiSubWindow()
        self.sub_adjustments_material.setWidget(self.adjustments_material)
        self.mdi.addSubWindow(self.sub_adjustments_material)
        self.sub_adjustments_material.resize(self.adjustments_material.size())
        self.sub_adjustments_material.show()

    def view_transaction_warehouse(self):
        self.transaction_warehouse = transaction_warehouse.TransactionWarehouse()
        self.sub_transaction_warehouse = QMdiSubWindow()
        self.sub_transaction_warehouse.setWidget(self.transaction_warehouse)
        self.mdi.addSubWindow(self.sub_transaction_warehouse)
        self.sub_transaction_warehouse.resize(self.transaction_warehouse.size())
        self.sub_transaction_warehouse.show()

    def view_test_warehouse_material(self):
        self.test_warehouse_material = test_warehouse.TestWarehouseMaterial()
        self.sub_test_warehouse_material = QMdiSubWindow()
        self.sub_test_warehouse_material.setWidget(self.test_warehouse_material)
        self.mdi.addSubWindow(self.sub_test_warehouse_material)
        self.sub_test_warehouse_material.resize(self.test_warehouse_material.size())
        self.sub_test_warehouse_material.show()

    def view_test_warehouse_accessories(self):
        self.test_warehouse_accessories = test_warehouse.TestWarehouseAccessories()
        self.sub_test_warehouse_accessories = QMdiSubWindow()
        self.sub_test_warehouse_accessories.setWidget(self.test_warehouse_accessories)
        self.mdi.addSubWindow(self.sub_test_warehouse_accessories)
        self.sub_test_warehouse_accessories.resize(self.test_warehouse_accessories.size())
        self.sub_test_warehouse_accessories.show()

    def view_test_fast_warehouse(self):
        self.test_fast_warehouse = test_warehouse.TestFastWarehouse()
        self.sub_test_fast_warehouse = QMdiSubWindow()
        self.sub_test_fast_warehouse.setWidget(self.test_fast_warehouse)
        self.mdi.addSubWindow(self.sub_test_fast_warehouse)
        self.sub_test_fast_warehouse.resize(self.test_fast_warehouse.size())
        self.sub_test_fast_warehouse.show()

    def view_beika(self):
        self.beika = beika.BeikaList()
        self.sub_beika = QMdiSubWindow()
        self.sub_beika.setWidget(self.beika)
        self.mdi.addSubWindow(self.sub_beika)
        self.sub_beika.resize(self.beika.size())
        self.sub_beika.show()

    def view_supply_material(self):
        self.supply_material = supply_material.MaterialSupplyList()
        self.sub_supply_material = QMdiSubWindow()
        self.sub_supply_material.setWidget(self.supply_material)
        self.mdi.addSubWindow(self.sub_supply_material)
        self.sub_supply_material.resize(self.supply_material.size())
        self.sub_supply_material.show()

    def view_supply_accessories(self):
        self.supply_accessories = supply_accessories.AccessoriesSupplyList()
        self.sub_supply_accessories = QMdiSubWindow()
        self.sub_supply_accessories.setWidget(self.supply_accessories)
        self.mdi.addSubWindow(self.sub_supply_accessories)
        self.sub_supply_accessories.resize(self.supply_accessories.size())
        self.sub_supply_accessories.show()

    def view_scan_pack(self):
        self.scan_pack = scan_pack.ScanPack()
        self.sub_scan_pack = QMdiSubWindow()
        self.sub_scan_pack.setWidget(self.scan_pack)
        self.mdi.addSubWindow(self.sub_scan_pack)
        self.sub_scan_pack.resize(self.scan_pack.size())
        self.sub_scan_pack.show()

    def view_settings_access(self):
        self.settings_access = settings_access.Access()
        self.sub_settings_access = QMdiSubWindow()
        self.sub_settings_access.setWidget(self.settings_access)
        self.mdi.addSubWindow(self.sub_settings_access)
        self.sub_settings_access.resize(self.settings_access.size())
        self.sub_settings_access.show()

    def view_report_need_article_order(self):
        self.report_need_article = report_order.NeedArticleOrder()
        self.sub_report_need_article = QMdiSubWindow()
        self.sub_report_need_article.setWidget(self.report_need_article)
        self.mdi.addSubWindow(self.sub_report_need_article)
        self.sub_report_need_article.resize(self.report_need_article.size())
        self.sub_report_need_article.show()

    def view_report_supply(self):
        self.report_supply = report_supply.ReportSupply()
        self.sub_report_supply = QMdiSubWindow()
        self.sub_report_supply.setWidget(self.report_supply)
        self.mdi.addSubWindow(self.sub_report_supply)
        self.sub_report_supply.resize(self.report_supply.size())
        self.sub_report_supply.show()

    def view_report_cost_article(self):
        self.report_cost_article = report_cost_article.ReportCostArticle()
        self.sub_report_cost_article = QMdiSubWindow()
        self.sub_report_cost_article.setWidget(self.report_cost_article)
        self.mdi.addSubWindow(self.sub_report_cost_article)
        self.sub_report_cost_article.resize(self.report_cost_article.size())
        self.sub_report_cost_article.show()

    def view_report_sibestoimost(self):
        self.report_sibest = report_sibestoimost.ReportSibestoimost()
        self.sub_report_sibest = QMdiSubWindow()
        self.sub_report_sibest.setWidget(self.report_sibest)
        self.mdi.addSubWindow(self.sub_report_sibest)
        self.sub_report_sibest.resize(self.report_sibest.size())
        self.sub_report_sibest.show()

    def view_report_rest_for_work(self):
        self.report_rest_work = report_rest_work.ReportRestWork()
        self.sub_report_rest_work = QMdiSubWindow()
        self.sub_report_rest_work.setWidget(self.report_rest_work)
        self.mdi.addSubWindow(self.sub_report_rest_work)
        self.sub_report_rest_work.resize(self.report_rest_work.size())
        self.sub_report_rest_work.show()

    def view_report_pack_accept(self):
        self.report_pack_accept = report_accept_pack.ReportAcceptPack()
        self.sub_report_pack_accept = QMdiSubWindow()
        self.sub_report_pack_accept.setWidget(self.report_pack_accept)
        self.mdi.addSubWindow(self.sub_report_pack_accept)
        self.sub_report_pack_accept.resize(self.report_pack_accept.size())
        self.sub_report_pack_accept.show()

    def view_report_material_consumption(self):
        self.report_material_consumption = report_material_consumption.ReportMaterialConsumption()
        self.sub_report_material_consumption = QMdiSubWindow()
        self.sub_report_material_consumption.setWidget(self.report_material_consumption)
        self.mdi.addSubWindow(self.sub_report_material_consumption)
        self.sub_report_material_consumption.resize(self.report_material_consumption.size())
        self.sub_report_material_consumption.show()

    def view_report_profit(self):
        self.report_profit = report_profit.ReportProfit()
        self.sub_report_profit = QMdiSubWindow()
        self.sub_report_profit.setWidget(self.report_profit)
        self.mdi.addSubWindow(self.sub_report_profit)
        self.sub_report_profit.resize(self.report_profit.size())
        self.sub_report_profit.show()

    def view_report_performance_company(self):
        self.report_performance_company = report_performance_company.ReportPerformanceCompany()
        self.sub_report_performance_company = QMdiSubWindow()
        self.sub_report_performance_company.setWidget(self.report_performance_company)
        self.mdi.addSubWindow(self.sub_report_performance_company)
        self.sub_report_performance_company.resize(self.report_performance_company.size())
        self.sub_report_performance_company.show()

    def view_report_shipped_customer(self):
        self.report_shipped_customer = report_shipped_to_customer.ReportShippedCustomer()
        self.sub_report_shipped_customer = QMdiSubWindow()
        self.sub_report_shipped_customer.setWidget(self.report_shipped_customer)
        self.mdi.addSubWindow(self.sub_report_shipped_customer)
        self.sub_report_shipped_customer.resize(self.report_shipped_customer.size())
        self.sub_report_shipped_customer.show()

    def view_report_warehouse_balance_date(self):
        self.report_warehouse_balance_date = report_warehouse_balance_date.ReportWarehouseBalanceDate()
        self.sub_report_warehouse_balance_date = QMdiSubWindow()
        self.sub_report_warehouse_balance_date.setWidget(self.report_warehouse_balance_date)
        self.mdi.addSubWindow(self.sub_report_warehouse_balance_date)
        self.sub_report_warehouse_balance_date.resize(self.report_warehouse_balance_date.size())
        self.sub_report_warehouse_balance_date.show()

    def view_report_reject(self):
        self.report_reject = report_reject.ReportReject()
        self.sub_report_reject = QMdiSubWindow()
        self.sub_report_reject.setWidget(self.report_reject)
        self.mdi.addSubWindow(self.sub_report_reject)
        self.sub_report_reject.resize(self.report_reject.size())
        self.sub_report_reject.show()

    def view_report_all(self):
        self.report_all = report_all.ReportAll()
        self.sub_view_report_all = QMdiSubWindow()
        self.sub_view_report_all.setWidget(self.report_all)
        self.mdi.addSubWindow(self.sub_view_report_all)
        self.sub_view_report_all.resize(self.report_all.size())
        self.sub_view_report_all.show()

    def view_report_nalog(self):
        self.report_nalog = report_nalog.ReportNalog()
        self.sub_report_nalog = QMdiSubWindow()
        self.sub_report_nalog.setWidget(self.report_nalog)
        self.mdi.addSubWindow(self.sub_report_nalog)
        self.sub_report_nalog.resize(self.report_nalog.size())
        self.sub_report_nalog.show()

    def view_report_article_day(self):
        self.report_article_day = report_article_day.ReportArticleDay()
        self.sub_report_article_day = QMdiSubWindow()
        self.sub_report_article_day.setWidget(self.report_article_day)
        self.mdi.addSubWindow(self.sub_report_article_day)
        self.sub_report_article_day.resize(self.report_article_day.size())
        self.sub_report_article_day.show()

    def view_material_in_pack(self):
        self.material_in_pack = material_in_pack.MaterialInPack()
        self.sub_material_in_pack = QMdiSubWindow()
        self.sub_material_in_pack.setWidget(self.material_in_pack)
        self.mdi.addSubWindow(self.sub_material_in_pack)
        self.sub_material_in_pack.resize(self.material_in_pack.size())
        self.sub_material_in_pack.show()

    def view_shipment_order(self):
        self.shipment_order = shipment_order.ShipmentOrder()
        self.sub_shipment_order = QMdiSubWindow()
        self.sub_shipment_order.setWidget(self.shipment_order)
        self.mdi.addSubWindow(self.sub_shipment_order)
        self.sub_shipment_order.resize(self.shipment_order.size())
        self.sub_shipment_order.show()

    def view_test_window(self):
        self.test_window = test_window.TestWindow()
        self.sub_test_window = QMdiSubWindow()
        self.sub_test_window.setWidget(self.test_window)
        self.mdi.addSubWindow(self.sub_test_window)
        self.sub_test_window.resize(self.test_window.size())
        self.sub_test_window.show()

    def login_access(self):
        self.logger.info(u"[Пользователь {:04d}] {}".format(User().id(), "Зашел в программу"))
        self.statusBar().showMessage("Вы вошли как -= %s =-" % User().position_name())
        self.setEnabled(True)
        self.setFocus()
        self.access()

    def admin_login(self):
        self.statusBar().showMessage("Вы вошли как -= %s =-" % User().position_name())
        self.setEnabled(True)
        self.setFocus()
        self.access()

    def beika_no_finished(self):
        query = """SELECT COUNT(*) FROM beika WHERE Finished = 0"""
        sql_info = my_sql.sql_select(query)
        if "mysql.connector.errors" in str(type(sql_info)):
            beika_txt = "error sql"
        else:
            beika_txt = "Не зкарыто бейки: " + str(sql_info[0][0])
        beika = QLabel(beika_txt)
        self.statusBar().addPermanentWidget(beika)

    def closeEvent(self, e):
        try:
            self.logger.info(u"[Пользователь {:04d}] {}".format(User().id(), "Вышел из программы"))
        except:
            print("Нет логина")

        e.accept()
        self.close()
        self.destroy()
        sys.exit()

    def arg_FS(self):
        self.setWindowState(Qt.WindowMaximized)