def setDeviceStatusArea(self): form_box = FormGroupBox("Device Status", self) form_box.frame_layout.addRow(DeviceDetection.ALERT_PRESENT.value) # Alert type inner group box alert_form_box = FormGroupBox("Check all that apply:", self) alert_grid = QWidget(self) alert_lay = QGridLayout(alert_grid) alert_lay.setContentsMargins(0, 0, 0, 0) alert_lay.addWidget(DeviceDetection.AUDIO_AT_DEVICE.value, 0, 0) alert_lay.addWidget(DeviceDetection.IN_APP_ALERT.value, 0, 1) alert_lay.addWidget(DeviceDetection.AUTO_CALL.value, 0, 2) alert_lay.addWidget(DeviceDetection.VISUAL_AT_DEVICE.value, 1, 0) alert_lay.addWidget(DeviceDetection.TEXT_MSG.value, 1, 1) alert_lay.addWidget(DeviceDetection.CALL_BY_RETAILER.value, 1, 2) alert_lay.addWidget(DeviceDetection.PUSH_NOTIFY.value, 2, 0) alert_lay.addWidget(DeviceDetection.EMAIL.value, 2, 1) other_row = QWidget(self) other_lay = QFormLayout(other_row) other_lay.setContentsMargins(0, 0, 0, 0) other_lay.addRow("Other?", DeviceDetection.OTHER.value) alert_lay.addWidget(other_row, 2, 2) alert_form_box.frame_layout.addRow(alert_grid) form_box.frame_layout.addRow(alert_form_box) self._scroll_layout.addRow(form_box)
def setReasonsArea(self): form_box = FormGroupBox("Client Reasoning", self) form_box.frame_layout.addRow("Reason for Detection System:", Motivations.CUST_MOTIVE.value) rank_box = FormGroupBox("Client's Reasons by Ranking:", self) rank_box.frame_layout.addRow("1st:", Motivations.REASON_1.value) rank_box.frame_layout.addRow("2nd:", Motivations.REASON_2.value) rank_box.frame_layout.addRow("3rd:", Motivations.REASON_3.value) form_box.frame_layout.addRow(rank_box) self._scroll_layout.addRow(form_box)
def setDeviceSetupArea(self): formbox = FormGroupBox("Device Setup", self) formbox.frame_layout.addRow(Installation.FUNCTIONAL.value) formbox.frame_layout.addRow(Installation.SETUP_ON_PHONE.value) ratebox = FormGroupBox( "Rate on a scale 1-5 (1 being the most difficult):", self) ratebox.frame_layout.addRow("Ease of Physical Install:", Installation.EASE_OF_PHYS_INSTALL.value) ratebox.frame_layout.addRow("Ease of App Install", Installation.EASE_OF_APP_INSTALL.value) ratebox.frame_layout.addRow("Ease of App Use:", Installation.EASE_OF_APP_USE.value) formbox.frame_layout.addRow(ratebox) self._scroll_layout.addRow(formbox)
def setPeopleArea(self): form_box = FormGroupBox("Occupant Information", self) form_box.frame_layout.addRow("Number of Occupants:", People.PEOPLE_COUNT.value) form_box.frame_layout.addRow("Occupant Ages:", People.AGES.value) form_box.frame_layout.addRow("Highest Education:", People.HIGHEST_EDU.value) self._scroll_layout.addRow(form_box)
def setInstallInfoArea(self): form_box = FormGroupBox("Install Information", self) form_box.frame_layout.addRow(Installation.SELF_INSTALLED.value) form_box.frame_layout.addRow("Other Installer:", Installation.OTHER_INSTALLER.value) form_box.frame_layout.addRow("Install Cost ($):", Installation.INSTALL_COST.value) self._scroll_layout.addRow(form_box)
def setDeviceArea(self): form_box = FormGroupBox("Device Information", self) form_box.frame_layout.addRow("Name:", Device.NAME.value) form_box.frame_layout.addRow("Model:", Device.MODEL.value) form_box.frame_layout.addRow("Serial:", Device.SERIAL.value) form_box.frame_layout.addRow("Location:", Device.LOCATION.value) self._scroll_layout.addRow(form_box)
def setRepArea(self): form_box = FormGroupBox("SNWA Represenative", self) #form_box = FormBox("SNWA Represenative", self) name_row = QWidget(self) name_layout = SmartHFormLayout(name_row) name_layout.addRow(["First Name:", "Last Name:"], [ Client.SNWA_REP_FIRST_NAME.value, Client.SNWA_REP_LAST_NAME.value ]) form_box.frame_layout.addRow(name_row) self._scroll_layout.addRow(form_box)
def setRoomsArea(self): form_box = FormGroupBox("Client Room Information", self) form_box.frame_layout.addRow("Number of Full Bathrooms:", Rooms.NUM_OF_FULL_BATHS.value) form_box.frame_layout.addRow("Number of Half Bathrooms:", Rooms.NUM_OF_HALF_BATHS.value) form_box.frame_layout.addRow("Number of Bedrooms:", Rooms.NUM_OF_BEDROOMS.value) self._scroll_layout.addRow(form_box)
def setEvaluationArea(self): form_box = FormGroupBox("Evaluation", self) #form_box = FormBox("Evaluation", self) only_int = QIntValidator(self) only_int.setTop(999999) Client.AP_PHASE_ID.value.setValidator(only_int) form_box.frame_layout.addRow("ApPhase ID:", Client.AP_PHASE_ID.value) form_box.frame_layout.addRow("Date:", Client.DATE.value) form_box.frame_layout.addRow("Address:", Client.ADDRESS.value) self._scroll_layout.addRow(form_box)
def setGeneralMotivationsArea(self): form_box = FormGroupBox("General Motivations Questionaire", self) form_box.frame_layout.addRow("Other Water Conservation Programs:", Motivations.OTHER_PROG.value) form_box.frame_layout.addRow("Reason for this Device Brand:", Motivations.DEVICE_CHOICE.value) form_box.frame_layout.addRow("Client's General Interests:", Motivations.GEN_INTEREST.value) form_box.frame_layout.addRow("Feedback From Client:", Motivations.FEEDBACK.value) self._scroll_layout.addRow(form_box)
def setPrevLeakArea(self): form_box = FormGroupBox("Previous Leak Information", self) form_box.frame_layout.addRow(PrevLeak.INFLUENCE.value) form_box.frame_layout.addRow("Location:", PrevLeak.LOC.value) form_box.frame_layout.addRow("Cost to Repair ($):", PrevLeak.COST_TO_REPAIR.value) vol_unit = QWidget() vol_unit_lay = QHBoxLayout(vol_unit) vol_unit_lay.setContentsMargins(0, 0, 0, 0) vol_unit_lay.addWidget(QLabel("Volume (if known):", self)) vol_unit_lay.addWidget(PrevLeak.VOL.value) vol_unit_lay.addWidget(QLabel("Unit:", self)) vol_unit_lay.addWidget(PrevLeak.UNIT.value) vol_unit_lay.addWidget(HorizontalFiller(self)) form_box.frame_layout.addRow(vol_unit) claim_box = FormGroupBox("Claim Information:", self) claim_box.frame_layout.addRow(PrevLeak.CLAIM_FILED.value) claim_box.frame_layout.addRow("Total Claim Amount ($):", PrevLeak.CLAIM_AMT.value) claim_box.frame_layout.addRow("Deductible ($):", PrevLeak.DEDUCT.value) form_box.frame_layout.addRow(claim_box) self._scroll_layout.addRow(form_box)
def setRepLeakArea(self): form_box = FormGroupBox("Leak Discovered By SNWA Represenative", self) form_box.frame_layout.addRow(RepLeak.LEAK_SHOWING.value) vol_unit = QWidget(self) vol_unit_row = SmartHFormLayout(vol_unit) vol_unit_row.addRow(["Volume at Meter:", "Unit:"], [RepLeak.VOL.value, RepLeak.UNIT.value]) form_box.frame_layout.addRow(vol_unit) form_box.frame_layout.addRow("Leak Location:", RepLeak.LOCS.value) metdev_box = FormGroupBox("Meter and Device", self) metdev_box.frame_layout.addRow(RepLeak.MET_DEV_AGREE.value) metdev_box.frame_layout.addRow("Which has a Higher Volume?", RepLeak.MET_OR_DEV_HIGHER.value) metdev_box.frame_layout.addRow(RepLeak.CUS_INFORM.value) metdev_box.frame_layout.addRow("If No, Explain:", RepLeak.REA_CUS_NOT_INFORM.value) metdev_box.frame_layout.addRow("Expected Resolution (If Known):", RepLeak.RESOLUTION.value) form_box.frame_layout.addRow(metdev_box) form_box.frame_layout.addRow(VerticalFiller(self)) self._scroll_layout.addRow(form_box)
def setDetectedLeakArea(self): form_box = FormGroupBox("Detected Leak from Device", self) form_box.frame_layout.addRow(DeviceDetection.SHOWS_LEAK.value) vol_unit_row = QWidget(self) vol_unit_lay = QHBoxLayout(vol_unit_row) vol_unit_lay.setContentsMargins(0, 0, 0, 0) vol_unit_lay.addWidget(QLabel("Volume:", self)) vol_unit_lay.addWidget(DeviceDetection.LEAK_VOL.value) vol_unit_lay.addWidget(QLabel("Unit:", self)) vol_unit_lay.addWidget(DeviceDetection.UNIT.value) vol_unit_lay.addWidget(HorizontalFiller(self)) form_box.frame_layout.addRow(vol_unit_row) form_box.frame_layout.addRow("Leak Location:", DeviceDetection.LEAK_LOC.value) self._scroll_layout.addRow(form_box)
def setLeakDiscoveredArea(self): form_box = FormGroupBox("Leak Discovered when Device was Installed", self) form_box.frame_layout.addRow(DeviceDetection.LEAK_DISCOVERED.value) vol_unit_row = QWidget(self) vol_unit_lay = QHBoxLayout(vol_unit_row) vol_unit_lay.setContentsMargins(0, 0, 0, 0) vol_unit_lay.addWidget(QLabel("Volume:", self)) vol_unit_lay.addWidget(DeviceDetection.LEAK_DIS_VOL.value) vol_unit_lay.addWidget(QLabel("Unit:", self)) vol_unit_lay.addWidget(DeviceDetection.LEAK_DIS_UNIT.value) vol_unit_lay.addWidget(HorizontalFiller(self)) form_box.frame_layout.addRow(vol_unit_row) form_box.frame_layout.addRow("Discovered Leak Location:", DeviceDetection.LEAK_DIS_LOC.value) self._scroll_layout.addRow(form_box)
def setClientArea(self): form_box = FormGroupBox("Client", self) #form_box = FormBox("Client", self) client_name_row = QWidget(self) other_name_row = QWidget(self) client_name_layout = SmartHFormLayout(client_name_row) other_name_layout = SmartHFormLayout(other_name_row) client_name_layout.addRow( ["First Name:", "Last Name:"], [Client.FIRST_NAME.value, Client.LAST_NAME.value]) other_name_layout.addRow( ["First Name:", "Last Name:"], [Client.OTHER_FIRST_NAME.value, Client.OTHER_LAST_NAME.value]) form_box.frame_layout.addRow(client_name_row) form_box.frame_layout.addRow(Client.OTHER_NAME.value) form_box.frame_layout.addRow(other_name_row) self._scroll_layout.addRow(form_box)
def setSupscriptionArea(self): form_box = FormGroupBox("Subscription", self) form_box.frame_layout.addRow(Installation.SUBSCRIPTION.value) form_box.frame_layout.addRow("Subscription Cost ($):", Installation.SUBSCRIPTION_COST.value) self._scroll_layout.addRow(form_box)
def setFixAppArea(self): form_box = FormGroupBox("Fixture and Appliance Counts", self) fix_and_app = QWidget(self) fix_and_app_lay = QGridLayout(fix_and_app) toilet_box = FormGroupBox("Toilets:", self) toilet_box.frame_layout.addRow(FixAndApp.TOILETS.value) fix_and_app_lay.addWidget(toilet_box, 0, 0) soft_box = FormGroupBox("Softeners:", self) soft_box.frame_layout.addRow(FixAndApp.SOFTENERS.value) fix_and_app_lay.addWidget(soft_box, 0, 1) sink_box = FormGroupBox("Sinks:", self) sink_box.frame_layout.addRow(FixAndApp.SINKS.value) fix_and_app_lay.addWidget(sink_box, 1, 0) ro_box = FormGroupBox("RO:", self) ro_box.frame_layout.addRow(FixAndApp.RO.value) fix_and_app_lay.addWidget(ro_box, 1, 1) shower_box = FormGroupBox("Showers:", self) shower_box.frame_layout.addRow(FixAndApp.SHOWERS.value) fix_and_app_lay.addWidget(shower_box, 2, 0) tub_box = FormGroupBox("Tubs:", self) tub_box.frame_layout.addRow(FixAndApp.TUBS.value) fix_and_app_lay.addWidget(tub_box, 2, 1) fix_and_app_lay.addWidget(QLabel(""), 3, 0) spa_box = FormGroupBox("Spa:", self) spa_box.frame_layout.addRow(FixAndApp.SPA.value) fix_and_app_lay.addWidget(spa_box, 4, 0) pool_box = FormGroupBox("Pools", self) pool_box.frame_layout.addRow(FixAndApp.POOL.value) fix_and_app_lay.addWidget(pool_box, 4, 1) fix_and_app_lay.addWidget(FixAndApp.AUTO_REFILL.value, 4, 2) fix_and_app_lay.addWidget(HorizontalFiller(self), 4, 3) dish_box = FormGroupBox("Dishwashers:", self) dish_box.frame_layout.addRow(FixAndApp.DISHWASHERS.value) fix_and_app_lay.addWidget(dish_box, 5, 0) clothes_box = FormGroupBox("Clothes Washer", self) clothes_box.frame_layout.addRow(FixAndApp.CLOTHES_WASHERS.value) fix_and_app_lay.addWidget(clothes_box, 5, 1) spray_box = FormGroupBox("Spray Stations:", self) spray_box.frame_layout.addRow(FixAndApp.SPRAY_STATIONS.value) fix_and_app_lay.addWidget(spray_box, 6, 0) drip_box = FormGroupBox("Drip Stations", self) drip_box.frame_layout.addRow(FixAndApp.DRIP_STATIONS.value) fix_and_app_lay.addWidget(drip_box, 6, 1) tank_box = FormGroupBox("Tank Water Heater:", self) tank_box.frame_layout.addRow(FixAndApp.WATER_HEATERS.value) fix_and_app_lay.addWidget(tank_box, 7, 0) tankless_box = FormGroupBox("Tankless Water Header", self) tankless_box.frame_layout.addRow(FixAndApp.TANKLESS_HEATERS.value) fix_and_app_lay.addWidget(tankless_box) fix_and_app_lay.addWidget(QLabel(""), 15, 0) form_box.frame_layout.addRow(fix_and_app) last_chk_boxes = QWidget(self) last_chk_boxes_lay = QHBoxLayout(last_chk_boxes) last_chk_boxes_lay.addWidget(FixAndApp.SMART_CONTROLLER.value) last_chk_boxes_lay.addWidget(FixAndApp.SMART_MODE_ACT.value) last_chk_boxes_lay.addWidget(FixAndApp.FIRE_SPRINKLER.value) last_chk_boxes_lay.addWidget(HorizontalFiller(self)) form_box.frame_layout.addRow(last_chk_boxes) form_box.frame_layout.addRow("Other Water Use:", FixAndApp.OTHER.value) self._scroll_layout.addRow(form_box)
def setEconomicArea(self): form_box = FormGroupBox("Economic Information", self) form_box.frame_layout.addRow("Employment Status:", Economic.POC.value) form_box.frame_layout.addRow("Home Value:", Economic.HOME_VAL.value) form_box.frame_layout.addRow("Income:", Economic.INCOME.value) self._scroll_layout.addRow(form_box)
def __init__(self, tables, database, parent=None): super().__init__(parent) try: self._tables = tables self._database = database self.setWindowTitle("Search for Records") self._main_widget = QWidget(self) self._bas_search_tab = QWidget(self) self._bas_search_lay = QVBoxLayout(self._bas_search_tab) self._adv_search_tab = QWidget(self) self._adv_search_lay = QVBoxLayout(self._adv_search_tab) self._search_tabs = QTabWidget(self) self._search_tabs.addTab(self._bas_search_tab, "Search") self._search_tabs.addTab(self._adv_search_tab, "Advance Search") layout = QVBoxLayout(self._main_widget) layout.setContentsMargins(0,0,0,0) layout.addWidget(self._search_tabs) # ---------------------------------------------------------------------------------------- # ADVANCE SEARCH sql_form_box = FormGroupBox("Enter SQL Command:") self._sql_cmd_box = SQLCommandBox() self._highlighter = Highlighter(self._sql_cmd_box.document()) self._field_names = {} self._field_names = {table.name:getFieldNames(table.name) for table in Tables} for table in ExclusiveDbTables: self._field_names[table.name] = table.fields self._adv_search_button = QPushButton("Run SQL") self._adv_search_button.clicked.connect(self.sqlSearch) search_button_row = QWidget(self) search_button_lay = QHBoxLayout(search_button_row) search_button_lay.setContentsMargins(0,0,0,0) search_button_lay.addWidget(HorizontalFiller()) search_button_lay.addWidget(self._adv_search_button) sql_results_box = FormGroupBox("Results:") self._adv_table_label = QLabel("Number of Results:") self._adv_results_table = DataTable(use_max_height=False, stretch=False) self._export_results_button = QPushButton("Export Table (CSV)") self._export_results_button.clicked.connect(self.exportTable) self._export_results_button.setDisabled(True) res_row = QWidget(self) res_lay = QHBoxLayout(res_row) res_lay.setContentsMargins(0,0,0,0) res_lay.addWidget(HorizontalFiller()) res_lay.addWidget(self._export_results_button) sql_form_box.frame_layout.addRow(self._sql_cmd_box) sql_form_box.frame_layout.addRow(search_button_row) self._adv_search_lay.addWidget(sql_form_box) sql_results_box.frame_layout.addRow(self._adv_table_label) sql_results_box.frame_layout.addRow(self._adv_results_table) sql_results_box.frame_layout.addRow(res_row) self._adv_search_lay.addWidget(sql_results_box) # ---------------------------------------------------------------------------------------- # BASIC SEARCH form_box = FormGroupBox("Search for Record by Value", self) results_box = FormGroupBox("Results", self) self._table_combo = FormCombo(self) table_names = [table.name for table in self._tables] table_names.extend([table.name for table in ExclusiveDbTables]) self._table_combo.addItems(table_names) self._field_combo = FormCombo(self) self._condition_combo = FormCombo(self) self._condition_combo.setMinimumWidth(150) self._value_entry = ExtendedComboBox(self) self._value_entry.setMinimumWidth(250) self._range_entry = FormEntry(self) self._range_entry.setMinimumWidth(250) self._table_label = QLabel("Number of Results:") self._result_table = DataTable(use_max_height=False, stretch=False, parent=self) self._search_button = QPushButton(" Search ") self._search_button.clicked.connect(self.searchForData) self._export_button = QPushButton("Export CSV") self._export_button.clicked.connect(self.exportCSV) self._export_button.setEnabled(False) self._value_type = None form_box.frame_layout.addRow("Table:", self._table_combo) condition_row = QWidget(self) condition_lay = QGridLayout(condition_row) condition_lay.addWidget(QLabel("Field:"), 0,0) condition_lay.addWidget(QLabel("Condition:"), 0,1) condition_lay.addWidget(QLabel("Value:"), 0,2) condition_lay.addWidget(QLabel("Value 2 (Range Between Value 1 and Value 2):"), 0, 3) condition_lay.addWidget(self._field_combo, 1,0) condition_lay.addWidget(self._condition_combo, 1,1) condition_lay.addWidget(self._value_entry, 1,2) condition_lay.addWidget(self._range_entry, 1,3) form_box.frame_layout.addRow(condition_row) search_row = QWidget(self) search_lay = QHBoxLayout(search_row) search_lay.addWidget(HorizontalFiller(self)) search_lay.addWidget(self._search_button) form_box.frame_layout.addRow(search_row) search_lay.setContentsMargins(0,0,0,0) form_box.frame_layout.setContentsMargins(0,0,0,0) results_box.frame_layout.setContentsMargins(0,0,0,0) results_box.frame_layout.addRow(self._table_label) results_box.frame_layout.addRow(self._result_table) export_row = QWidget(self) export_lay = QHBoxLayout(export_row) export_lay.addWidget(HorizontalFiller(self)) export_lay.addWidget(self._export_button) results_box.frame_layout.addRow(export_row) export_lay.setContentsMargins(0,0,0,0) self._current_table = None self._setTableFieldsCombo() self._table_combo.currentTextChanged.connect(self._setTableFieldsCombo) self._setConditionsCombo() self._field_combo.currentTextChanged.connect(self._setConditionsCombo) self._conditionChange() self._condition_combo.currentTextChanged.connect(self._conditionChange) self._bas_search_lay.addWidget(form_box) self._bas_search_lay.addWidget(results_box) self.setCentralWidget(self._main_widget) except Exception as e: print("Window failed", e)
def setCustKnowArea(self): form_box = FormGroupBox( "Customer Knowledge / Satisfaction (Select 1 - 5, 1 being the least satisfied)", self) fix_and_app = QWidget(self) fix_and_app_lay = QGridLayout(fix_and_app) # ROW 1 interest_box = FormGroupBox("Interest / Enthusiasm:", self) interest_box.frame_layout.addRow(CustomerKnowledge.INTEREST.value) fix_and_app_lay.addWidget(interest_box, 0, 0) neigh_box = FormGroupBox("Neighborhood:", self) neigh_box.frame_layout.addRow(CustomerKnowledge.NEIGHBORHOOD.value) fix_and_app_lay.addWidget(neigh_box, 0, 1) # ROW 2 sat_price_box = FormGroupBox("Satisfaction with the Device Price:", self) sat_price_box.frame_layout.addRow(CustomerKnowledge.SAT_PRICE.value) fix_and_app_lay.addWidget(sat_price_box, 1, 0) know_dev_box = FormGroupBox("Knowledge About the Device:", self) know_dev_box.frame_layout.addRow(CustomerKnowledge.KNOW_DEVICE.value) fix_and_app_lay.addWidget(know_dev_box, 1, 1) # ROW 3 sat_install_box = FormGroupBox("Satisfaction with the Installation:", self) sat_install_box.frame_layout.addRow( CustomerKnowledge.SAT_INSTALL.value) fix_and_app_lay.addWidget(sat_install_box, 2, 0) know_water_box = FormGroupBox("Knowledge About Water Use:", self) know_water_box.frame_layout.addRow( CustomerKnowledge.KNOW_WATER_USE.value) fix_and_app_lay.addWidget(know_water_box, 2, 1) # ROW 4 (BLANK ROW) fix_and_app_lay.addWidget(QLabel(""), 3, 0) # ROW 5 sat_dev_box = FormGroupBox("Satisfaction with the Device:", self) sat_dev_box.frame_layout.addRow(CustomerKnowledge.SAT_DEVICE.value) fix_and_app_lay.addWidget(sat_dev_box, 4, 0) know_snwa_box = FormGroupBox("Knowledge About SNWA:", self) know_snwa_box.frame_layout.addRow(CustomerKnowledge.KNOW_SNWA.value) fix_and_app_lay.addWidget(know_snwa_box, 4, 1) # ROW 6 sat_retail_box = FormGroupBox("Satisfaction with the Retailer/Mfr:", self) sat_retail_box.frame_layout.addRow( CustomerKnowledge.SAT_RETAILER.value) fix_and_app_lay.addWidget(sat_retail_box, 5, 0) sat_snwa_box = FormGroupBox("Satisfaction with SNWA:", self) sat_snwa_box.frame_layout.addRow(CustomerKnowledge.SAT_SNWA.value) fix_and_app_lay.addWidget(sat_snwa_box, 5, 1) fix_and_app_lay.addWidget(HorizontalFiller(self), 5, 2) # ROW 7 prop_box = FormGroupBox("Condition of Property:", self) prop_box.frame_layout.addRow(CustomerKnowledge.PROP_COND.value) fix_and_app_lay.addWidget(prop_box, 6, 0) form_box.frame_layout.addRow(fix_and_app) form_box.frame_layout.addRow("General Notes:", CustomerKnowledge.NOTES.value) self._scroll_layout.addRow(form_box)
def setHomeInfoArea(self): form_box = FormGroupBox("Home Information", self) form_box.frame_layout.addRow("Parcel:", HomeInfo.PARCEL.value) form_box.frame_layout.addRow("RedFin Home Value:", HomeInfo.REDFIN_VAL.value) self._scroll_layout.addRow(form_box)