def __init__(self, parent, workspace): self.frame = CPFigureFrame( parent, title = "CellProfiler Workspace") self.workspace = workspace self.ignore_redraw = False self.image_rows = [] self.object_rows = [] self.measurement_rows = [] self.frame.set_subplots((1, 1)) self.axes = self.frame.subplot(0, 0) self.image = None panel = ScrolledPanel(self.frame.secret_panel) self.frame.secret_panel.Sizer = wx.BoxSizer() self.frame.secret_panel.Sizer.Add(panel, 0, wx.EXPAND) panel.Sizer = wx.BoxSizer(wx.VERTICAL) self.panel = panel # # Make a grid of image controls # panel.Sizer.AddSpacer(4) self.image_grid = wx.GridBagSizer(vgap = 3, hgap = 3) sub_sizer = wx.BoxSizer(wx.VERTICAL) panel.Sizer.Add( sub_sizer, 0, wx.ALIGN_LEFT | wx.LEFT | wx.RIGHT, 3) sub_sizer.Add(self.image_grid, 0, wx.ALIGN_LEFT) self.image_grid.Add( wx.StaticText(panel, label="Images"), (0, self.C_CHOOSER), flag = wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_BOTTOM) self.image_grid.Add( wx.StaticText(panel, label="Color"), (0, self.C_COLOR), flag = wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_BOTTOM) self.image_grid.Add( wx.StaticText(panel, label="Show"), (0, self.C_SHOW), flag = wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_BOTTOM) self.image_grid.Add( wx.StaticText(panel, label="Remove"), (0, self.C_REMOVE), flag = wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_BOTTOM) self.add_image_row(can_delete = False) add_image_button = wx.Button(panel, label = "Add image") sub_sizer.Add(add_image_button, 0, wx.ALIGN_RIGHT) add_image_button.Bind( wx.EVT_BUTTON, lambda event:self.add_image_row()) panel.Sizer.AddSpacer(4) panel.Sizer.Add(wx.StaticLine(panel, style = wx.LI_HORIZONTAL), 0, wx.EXPAND) panel.Sizer.AddSpacer(4) # # Make a grid of object controls # self.object_grid = wx.GridBagSizer(vgap = 3, hgap = 3) sub_sizer = wx.BoxSizer(wx.VERTICAL) panel.Sizer.Add(sub_sizer, 0, wx.ALIGN_LEFT | wx.LEFT | wx.RIGHT, 3) sub_sizer.Add(self.object_grid, 0, wx.ALIGN_LEFT) self.object_grid.Add( wx.StaticText(panel, label="Objects"), (0, self.C_CHOOSER), flag = wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_BOTTOM) self.object_grid.Add( wx.StaticText(panel, label="Color"), (0, self.C_COLOR), flag = wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_BOTTOM) self.object_grid.Add( wx.StaticText(panel, label="Show"), (0, self.C_SHOW), flag = wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_BOTTOM) self.object_grid.Add( wx.StaticText(panel, label="Remove"), (0, self.C_REMOVE), flag = wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_BOTTOM) self.add_objects_row(can_delete = False) add_object_button = wx.Button(panel, label = "Add objects") sub_sizer.Add(add_object_button, 0, wx.ALIGN_RIGHT) add_object_button.Bind( wx.EVT_BUTTON, lambda event:self.add_objects_row()) panel.Sizer.AddSpacer(4) panel.Sizer.Add(wx.StaticLine(panel, style = wx.LI_HORIZONTAL), 0, wx.EXPAND) panel.Sizer.AddSpacer(4) # # Make a grid of measurements to display # self.m_grid = wx.GridBagSizer(vgap = 3, hgap = 3) sub_sizer = wx.BoxSizer(wx.VERTICAL) panel.Sizer.Add(sub_sizer, 0, wx.ALIGN_LEFT | wx.LEFT | wx.RIGHT, 3) sub_sizer.Add(self.m_grid, 0, wx.ALIGN_LEFT) self.m_grid.Add( wx.StaticText(panel, label="Measurement"), (0, self.C_CHOOSER), flag = wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_BOTTOM) self.m_grid.Add( wx.StaticText(panel, label="Font"), (0, self.C_COLOR), flag = wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_BOTTOM) self.m_grid.Add( wx.StaticText(panel, label="Show"), (0, self.C_SHOW), flag = wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_BOTTOM) self.m_grid.Add( wx.StaticText(panel, label="Remove"), (0, self.C_REMOVE), flag = wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_BOTTOM) self.add_measurement_row(can_delete = False) add_measurement_button = wx.Button(panel, label = "Add Measurement") sub_sizer.Add(add_measurement_button, 0, wx.ALIGN_RIGHT) add_measurement_button.Bind( wx.EVT_BUTTON, self.on_add_measurement_row) self.frame.Bind(wx.EVT_CLOSE, self.on_frame_close) self.set_workspace(workspace) self.frame.secret_panel.Show() self.layout() for child in panel.GetChildren(): child.Refresh() panel.Refresh()