def test_rearrangectrl3(self):
     rc = wx.RearrangeCtrl(self.frame,
                           order=[0, 1, 2],
                           items=['one', 'two', 'three'])
 def test_rearrangectrl4(self):
     rc = wx.RearrangeCtrl()
     rc.Create(self.frame, order=[1, 2, 0], items=['one', 'two', 'three'])
Beispiel #3
0
    def gui_build(self):
        pnl = wx.Panel(self)

        initializer = InitializeData()
        self.building_dict = initializer.populate_buildings()

        building_label = wx.StaticText(pnl, label='Building')
        building_options = list(self.building_dict.keys())
        self.building_choice = wx.Choice(pnl, choices=building_options)
        self.building_choice.SetSelection(3)
        self.Bind(wx.EVT_CHOICE, self.handle_building_choice_select,
                  self.building_choice)

        front_faces_label = wx.StaticText(pnl, label='Front Faces')
        front_faces_option = [
            'North', 'North East', 'East', 'South East', 'South', 'South West',
            'West', 'North West'
        ]
        self.front_faces_choice = wx.Choice(pnl, choices=front_faces_option)
        self.front_faces_choice.SetSelection(0)

        baseline_code_label = wx.StaticText(pnl, label='Baseline Code')
        baseline_code_option = [
            '',
        ]
        self.baseline_code_choice = wx.Choice(pnl,
                                              choices=baseline_code_option)
        self.baseline_code_choice.SetSelection(0)

        building_hbox = wx.BoxSizer(wx.HORIZONTAL)
        building_hbox.Add(building_label, 0, wx.ALL, 10)
        building_hbox.Add(self.building_choice, 1, wx.ALL | wx.EXPAND, 10)
        building_hbox.Add(front_faces_label, 0, wx.ALL, 10)
        building_hbox.Add(self.front_faces_choice, 1, wx.ALL | wx.EXPAND, 10)
        building_hbox.Add(baseline_code_label, 0, wx.ALL, 10)
        building_hbox.Add(self.baseline_code_choice, 1, wx.ALL | wx.EXPAND, 10)

        #lot_boundaries_label = wx.StaticText(pnl, label='Lot Boundaries (feet)')
        #width_label = wx.StaticText(pnl, label='Width')
        #self.width_field = wx.TextCtrl(pnl, value="500")
        #depth_label = wx.StaticText(pnl, label='Depth')
        #self.depth_field = wx.TextCtrl(pnl, value="500")

        #lot_hbox = wx.BoxSizer(wx.HORIZONTAL)
        #lot_hbox.Add(lot_boundaries_label, 0, wx.ALL, 10)
        #lot_hbox.Add(width_label, 0, wx.ALL, 10)
        #lot_hbox.Add(self.width_field, 1, wx.ALL | wx.EXPAND, 10)
        #lot_hbox.Add(depth_label, 0, wx.ALL, 10)
        #lot_hbox.Add(self.depth_field, 1, wx.ALL | wx.EXPAND, 10)

        powerpoint_label = wx.StaticText(pnl,
                                         label='PowerPoint File',
                                         size=(90, -1))
        self.powerpoint_filepick = wx.FilePickerCtrl(
            pnl,
            style=wx.FLP_DEFAULT_STYLE | wx.FLP_SMALL,
            message='Select the PowerPoint file',
            wildcard='PowerPoint files (*.pptx)|*.pptx')

        powerpoint_hbox = wx.BoxSizer(wx.HORIZONTAL)
        powerpoint_hbox.Add(powerpoint_label, 0, wx.ALL, 10)
        powerpoint_hbox.Add(self.powerpoint_filepick, 1, wx.ALL | wx.EXPAND,
                            10)

        excel_label = wx.StaticText(pnl, label='Excel File', size=(90, -1))
        self.excel_filepick = wx.FilePickerCtrl(
            pnl,
            style=wx.FLP_DEFAULT_STYLE | wx.FLP_SMALL,
            message='Select the Excel file',
            wildcard='Excel files (*.xlsx)|*.xlsx')

        excel_hbox = wx.BoxSizer(wx.HORIZONTAL)
        excel_hbox.Add(excel_label, 0, wx.ALL, 10)
        excel_hbox.Add(self.excel_filepick, 1, wx.ALL | wx.EXPAND, 10)

        weather_label = wx.StaticText(pnl, label='Weather File', size=(90, -1))
        self.weather_filepick = wx.FilePickerCtrl(
            pnl,
            style=wx.FLP_DEFAULT_STYLE | wx.FLP_SMALL,
            message='Select the EnergyPlus Weather file',
            wildcard='EnergyPlus Weather files (*.epw)|*.epw')

        weather_hbox = wx.BoxSizer(wx.HORIZONTAL)
        weather_hbox.Add(weather_label, 0, wx.ALL, 10)
        weather_hbox.Add(self.weather_filepick, 1, wx.ALL | wx.EXPAND, 10)

        occ_area_label = wx.StaticText(pnl, -1, "Occupancy Areas")
        sqft_label = wx.StaticText(pnl, -1, "(square feet)")

        occ_area_sizer = wx.FlexGridSizer(cols=2, vgap=5, hgap=5)
        occ_area_sizer.AddGrowableCol(0)
        occ_area_sizer.AddGrowableCol(1)
        occ_area_sizer.Add(
            occ_area_label, 0,
            wx.ALIGN_RIGHT | wx.ALIGN_CENTER_VERTICAL | wx.TOP | wx.BOTTOM, 5)
        occ_area_sizer.Add(sqft_label, 0, wx.TOP | wx.BOTTOM, 5)

        max_num_occ_areas = 10
        for count in range(max_num_occ_areas):
            label = wx.StaticText(pnl, -1, 'xxxx', size=(150, -1))
            text_control = wx.TextCtrl(pnl, -1, '0', size=(80, -1))
            self.occ_areas_text_controls.append((label, text_control))
            occ_area_sizer.Add(label, 0,
                               wx.ALIGN_CENTER_VERTICAL | wx.TOP | wx.BOTTOM,
                               5)  #  wx.ALIGN_RIGHT |
            occ_area_sizer.Add(text_control, 0, wx.TOP, 5)

        occ_areas = {
            'Quick Service Restaurant': 30000,
            'Full Service Restaurant': 0,
            'Retail Standalone': 0,
            'junk': 0
        }
        self.update_occ_areas(occ_areas)

        #call to initialize the screen
        self.handle_building_choice_select(wx.EVT_CHOICE)

        slides_label = wx.StaticText(pnl, label='Slides')

        slide_list_text = list(self.all_slide_details.keys())
        slide_list_order = list(range(len(slide_list_text)))
        self.slide_list = wx.RearrangeCtrl(pnl,
                                           1,
                                           size=wx.DefaultSize,
                                           items=slide_list_text,
                                           order=slide_list_order)
        slide_list_ctrl = self.slide_list.GetList()
        slide_list_ctrl.SetCheckedStrings([
            slide_list_text[-1],
        ])  #set only the last slide (lighting power density)
        self.Bind(wx.EVT_LISTBOX, self.handle_slide_list_ctrl_click,
                  slide_list_ctrl)
        slide_list_ctrl.SetSelection(0)

        slides_sizer = wx.BoxSizer(wx.VERTICAL)
        slides_sizer.Add(slides_label, 0, wx.ALL, 5)
        slides_sizer.Add(self.slide_list, 1, wx.ALL | wx.EXPAND, 5)

        self.slide_details_box = wx.StaticBox(
            pnl, -1, "Slide Details for: Aspect Ratio")
        top_border, other_border = self.slide_details_box.GetBordersForSizer()
        slide_details_sizer = wx.BoxSizer(wx.VERTICAL)
        slide_details_sizer.AddSpacer(top_border)

        select_mode_hbox = wx.BoxSizer(wx.HORIZONTAL)
        select_mode_label = wx.StaticText(self.slide_details_box,
                                          label='Selection Mode')
        select_mode_options = [
            'Automatic', 'Exclude Best Option', 'Exclude Two Best Options',
            'Exclude Three Best Options', 'Select Option 1', 'Select Option 2',
            'Select Option 3', 'Select Option 4', 'Select Option 5',
            'Select Option 6', 'Select Option 7', 'Select Option 8'
        ]
        self.select_mode_choice = wx.Choice(self.slide_details_box,
                                            choices=select_mode_options)
        self.select_mode_choice.SetSelection(0)
        self.Bind(wx.EVT_CHOICE, self.handle_select_mode_choice_select,
                  self.select_mode_choice)
        select_mode_hbox.Add(select_mode_label, 0, wx.ALL, 5)
        select_mode_hbox.Add(self.select_mode_choice, 1, wx.ALL, 5)
        slide_details_sizer.Add(select_mode_hbox, 0, wx.ALL, 5)
        slide_details_sizer.Hide(select_mode_hbox, recursive=True)

        option_simulated_label = wx.StaticText(self.slide_details_box,
                                               label="Options Simulated")
        slide_details_sizer.Add(option_simulated_label, 0, wx.ALL, 5)

        value_options = [
            'none',
        ]
        self.value_choice = wx.CheckListBox(self.slide_details_box,
                                            1,
                                            size=wx.DefaultSize,
                                            choices=value_options)
        self.Bind(wx.EVT_CHECKLISTBOX, self.handle_value_choice_check,
                  self.value_choice)
        slide_details_sizer.Add(self.value_choice, 1, wx.ALL | wx.EXPAND, 5)

        self.incremental_checkbox = wx.CheckBox(
            self.slide_details_box,
            label='Include in Incremental Improvements')
        selection_mode, include_incremental, options_list, osw_list = self.all_slide_details[
            slide_list_ctrl.GetString((slide_list_ctrl.GetSelection()))]
        self.set_slide_details(selection_mode, include_incremental,
                               options_list)
        self.Bind(wx.EVT_CHECKBOX, self.handle_incremental_checkbox_check,
                  self.incremental_checkbox)

        slide_details_sizer.Add(self.incremental_checkbox, 0, wx.ALL, 5)
        self.incremental_checkbox.Hide(
        )  # hide portions of the GUI that are not yet implemented
        self.slide_details_box.SetSizer(slide_details_sizer)

        self.run_simulations_button = wx.Button(pnl,
                                                1,
                                                "Run Simulations",
                                                size=(140, 30))
        self.run_simulations_button.Bind(wx.EVT_BUTTON,
                                         self.handle_run_simulation_button)
        self.cancel_simulations_button = wx.Button(pnl,
                                                   1,
                                                   "Cancel Simulations",
                                                   size=(140, 30))
        self.cancel_simulations_button.Bind(
            wx.EVT_BUTTON, self.handle_cancel_simulation_button)
        self.cancel_simulations_button.Disable()

        run_cancel_sizer = wx.BoxSizer(wx.HORIZONTAL)
        run_cancel_sizer.Add(self.run_simulations_button, 0,
                             wx.ALL | wx.ALIGN_RIGHT, 5)
        run_cancel_sizer.Add(self.cancel_simulations_button, 0,
                             wx.ALL | wx.ALIGN_RIGHT, 5)

        bottom_right_sizer = wx.BoxSizer(wx.VERTICAL)
        bottom_right_sizer.Add(self.slide_details_box, 1,
                               wx.ALL | wx.ALIGN_TOP | wx.EXPAND, 5)
        bottom_right_sizer.Add(
            run_cancel_sizer, 0,
            wx.ALL | wx.ALIGN_BOTTOM | wx.ALIGN_RIGHT | wx.EXPAND, 5)

        bottom_hbox = wx.BoxSizer(wx.HORIZONTAL)
        bottom_hbox.Add(occ_area_sizer, 1, wx.ALL | wx.EXPAND, 5)
        bottom_hbox.Add(slides_sizer, 2, wx.ALL | wx.EXPAND, 5)
        bottom_hbox.Add(bottom_right_sizer, 2, wx.ALL | wx.EXPAND, 5)

        main_vbox = wx.BoxSizer(wx.VERTICAL)
        main_vbox.Add(building_hbox, 0, wx.EXPAND | wx.LEFT, border=20)
        #main_vbox.Add(lot_hbox, 0, wx.EXPAND | wx.LEFT, border=20)
        main_vbox.Add(powerpoint_hbox,
                      0,
                      wx.EXPAND | wx.LEFT | wx.RIGHT,
                      border=20)
        main_vbox.Add(excel_hbox, 0, wx.EXPAND | wx.LEFT | wx.RIGHT, border=20)
        main_vbox.Add(weather_hbox,
                      0,
                      wx.EXPAND | wx.LEFT | wx.RIGHT,
                      border=20)
        main_vbox.Add(bottom_hbox,
                      1,
                      wx.EXPAND | wx.LEFT | wx.RIGHT,
                      border=20)
        main_vbox.Add(self.status_bar, 0)

        main_vbox.Hide(
            excel_hbox, recursive=True
        )  # hide portions of the GUI that are not yet implemented

        pnl.SetSizer(main_vbox)
        pnl.Fit()