def test_table_editor_select_cells(): gui = GUI() object_list = ObjectListWithSelection( values=[ListItem(value=str(i**2)) for i in range(10)] ) object_list.selected_cells = [ (object_list.values[5], 'value'), (object_list.values[6], 'other value'), (object_list.values[8], 'value'), ] with store_exceptions_on_all_threads(): ui = object_list.edit_traits(view=select_cells_view) editor = ui.get_editors('values')[0] gui.process_events() if is_current_backend_qt4(): selected = editor.selected elif is_current_backend_wx(): selected = editor.selected_cells press_ok_button(ui) gui.process_events() assert selected == [ (object_list.values[5], 'value'), (object_list.values[6], 'other value'), (object_list.values[8], 'value'), ]
def test_progress_column(): from traitsui.extras.progress_column import ProgressColumn progress_view = View( Item( 'values', show_label=False, editor=TableEditor( columns=[ ObjectColumn(name='value'), ProgressColumn(name='other_value'), ], ) ), buttons=['OK'], ) gui = GUI() object_list = ObjectList( values=[ListItem(value=str(i**2)) for i in range(10)] ) with store_exceptions_on_all_threads(): ui = object_list.edit_traits(view=progress_view) gui.process_events() press_ok_button(ui) gui.process_events()
def test_selection_listener_disconnected(self): """ Check that selection listeners get correctly disconnected """ from pyface.api import GUI from pyface.qt.QtGui import QApplication, QItemSelectionModel from pyface.ui.qt4.util.event_loop_helper import EventLoopHelper from pyface.ui.qt4.util.testing import event_loop obj = ListStrEditorWithSelectedIndex(values=["value1", "value2"]) with store_exceptions_on_all_threads(): qt_app = QApplication.instance() if qt_app is None: qt_app = QApplication([]) helper = EventLoopHelper(gui=GUI(), qt_app=qt_app) # open the UI and run until the dialog is closed with create_ui(obj, dict(view=single_select_item_view)) as ui: with helper.delete_widget(ui.control): press_ok_button(ui) # now run again and change the selection with create_ui(obj, dict(view=single_select_item_view)) as ui, \ event_loop(): editor = ui.get_editors("values")[0] list_view = editor.list_view mi = editor.model.index(1) list_view.selectionModel().select( mi, QItemSelectionModel.ClearAndSelect ) obj.selected = "value2"
def test_tabular_editor_multi_selection(self): gui = GUI() view = get_view(multi_select=True) with store_exceptions_on_all_threads(), \ self.report_and_editor(view) as (report, editor): gui.process_events() people = report.people self.assertEqual(report.selected_rows, []) self.assertEqual(report.multi_selected, []) set_selected_multiple(editor, [0, 1]) gui.process_events() self.assertEqual(report.selected_rows, [0, 1]) self.assertEqual(report.multi_selected, people[:2]) set_selected_multiple(editor, [2]) gui.process_events() self.assertEqual(report.selected_rows, [2]) self.assertEqual(report.multi_selected, [people[2]]) clear_selection(editor) gui.process_events() self.assertEqual(report.selected_rows, []) self.assertEqual(report.multi_selected, [])
def test_table_editor_select_cells(self): gui = GUI() object_list = ObjectListWithSelection( values=[ListItem(value=str(i**2)) for i in range(10)]) object_list.selected_cells = [ (object_list.values[5], "value"), (object_list.values[6], "other value"), (object_list.values[8], "value"), ] with store_exceptions_on_all_threads(), \ create_ui(object_list, dict(view=select_cells_view)) as ui: editor = ui.get_editors("values")[0] gui.process_events() if is_current_backend_qt4(): selected = editor.selected elif is_current_backend_wx(): selected = editor.selected_cells press_ok_button(ui) gui.process_events() self.assertEqual(selected, [ (object_list.values[5], "value"), (object_list.values[6], "other value"), (object_list.values[8], "value"), ])
def test_tabular_editor_single_selection_changed(self): gui = GUI() with store_exceptions_on_all_threads(), \ self.report_and_editor(get_view()) as (report, editor): gui.process_events() people = report.people self.assertEqual(get_selected_rows(editor), []) report.selected_row = 1 gui.process_events() self.assertEqual(get_selected_rows(editor), [1]) self.assertEqual(report.selected, people[1]) report.selected = people[2] gui.process_events() self.assertEqual(get_selected_rows(editor), [2]) self.assertEqual(report.selected_row, 2) # Selected set to invalid value doesn't change anything report.selected = Person(name="invalid", age=-1) gui.process_events() self.assertEqual(get_selected_rows(editor), [2]) self.assertEqual(report.selected_row, 2) # -1 clears selection report.selected_row = -1 gui.process_events() self.assertEqual(get_selected_rows(editor), []) self.assertEqual(report.selected, None)
def setUp(self): self.gui = GUI() self.parent = Window() self.parent._create() self.parent.open() self.addCleanup(self._destroy_parent) self.gui.process_events()
def test_tabular_editor_multi_selection_items_changed(self): gui = GUI() view = get_view(multi_select=True) with store_exceptions_on_all_threads(), \ self.report_and_editor(view) as (report, editor): gui.process_events() people = report.people self.assertEqual(get_selected_rows(editor), []) report.selected_rows.extend([0, 1]) gui.process_events() self.assertEqual(get_selected_rows(editor), [0, 1]) self.assertEqual(report.multi_selected, people[:2]) report.selected_rows[1] = 2 gui.process_events() self.assertEqual(get_selected_rows(editor), [0, 2]) self.assertEqual(report.multi_selected, people[0:3:2]) report.multi_selected[0] = people[1] gui.process_events() self.assertEqual(sorted(get_selected_rows(editor)), [1, 2]) self.assertEqual(sorted(report.selected_rows), [1, 2]) # If there's a single invalid value, nothing is updated report.multi_selected[0] = Person(name="invalid", age=-1) gui.process_events() self.assertEqual(sorted(get_selected_rows(editor)), [1, 2]) self.assertEqual(sorted(report.selected_rows), [1, 2])
def test_styles(self): # simple smoke test of buttons gui = GUI() button_text_edit = ButtonTextEdit() with store_exceptions_on_all_threads(): ui = button_text_edit.edit_traits() self.addCleanup(ui.dispose) gui.process_events()
def setup_gui(self, model, view): gui = GUI() ui = model.edit_traits(view=view) self.addCleanup(ui.dispose) gui.process_events() editor = ui.get_editors("value")[0] return gui, editor
def test_table_editor(self): gui = GUI() object_list = ObjectListWithSelection( values=[ListItem(value=str(i**2)) for i in range(10)]) with store_exceptions_on_all_threads(), \ create_ui(object_list, dict(view=simple_view)) as ui: gui.process_events() press_ok_button(ui) gui.process_events()
def test_table_editor(): gui = GUI() object_list = ObjectList( values=[ListItem(value=str(i**2)) for i in range(10)]) with store_exceptions_on_all_threads(): ui = object_list.edit_traits(view=simple_view) gui.process_events() press_ok_button(ui) gui.process_events()
def setUp(self): self.gui = GUI() self.parent = self._create_parent() self.parent._create() self.addCleanup(self._destroy_parent) self.gui.process_events() self.widget = self._create_widget() self.parent.open() self.gui.process_events()
def setup_gui(self, model, view): gui = GUI() ui = model.edit_traits(view=view) self.addCleanup(ui.dispose) gui.process_events() editor = ui.get_editors("value")[0] line_edit = editor.control # FIXME issue enthought/traitsui#851 if is_current_backend_wx(): import wx self.addCleanup(line_edit.Unbind, wx.EVT_KILL_FOCUS) return gui, editor, line_edit
def test_filtered_table_editor(self): gui = GUI() object_list = ObjectListWithSelection( values=[ListItem(value=str(i**2)) for i in range(10)]) with store_exceptions_on_all_threads(), \ create_ui(object_list, dict(view=filtered_view)) as ui: gui.process_events() filter = ui.get_editors("values")[0].filter press_ok_button(ui) gui.process_events() self.assertIsNotNone(filter)
def setUp(self): from pyface.qt.QtGui import QApplication from pyface.ui.qt4.util.event_loop_helper import EventLoopHelper qt_app = QApplication.instance() if qt_app is None: qt_app = QApplication([]) self.qt_app = qt_app if NativeScrollBar is None: raise unittest.SkipTest("Qt4 NativeScrollbar not available.") self.gui = GUI() self.event_loop_helper = EventLoopHelper(gui=self.gui, qt_app=qt_app) self.container = Container(position=[0, 0], bounds=[600, 600]) self.window = Window(None, size=(600, 600), component=self.container)
def test_filtered_table_editor(): gui = GUI() object_list = ObjectListWithSelection( values=[ListItem(value=str(i**2)) for i in range(10)]) with store_exceptions_on_all_threads(): ui = object_list.edit_traits(view=filtered_view) gui.process_events() filter = ui.get_editors("values")[0].filter press_ok_button(ui) gui.process_events() assert filter is not None
def check_button_text_update(self, view): gui = GUI() button_text_edit = ButtonTextEdit() with store_exceptions_on_all_threads(): ui = button_text_edit.edit_traits(view=view) self.addCleanup(ui.dispose) gui.process_events() editor, = ui.get_editors("play_button") button = editor.control self.assertEqual(get_button_text(button), "I'm a play button") button_text_edit.play_button_label = "New Label" self.assertEqual(get_button_text(button), "New Label")
def test_list_str_editor_item_count(self): gui = GUI() model = ListStrModel() # Without auto_add with store_exceptions_on_all_threads(), \ create_ui(model, dict(view=get_view())) as ui: gui.process_events() editor = ui.get_editors("value")[0] self.assertEqual(editor.item_count, 3) # With auto_add with store_exceptions_on_all_threads(), \ create_ui(model, dict(view=get_view(auto_add=True))) as ui: gui.process_events() editor = ui.get_editors("value")[0] self.assertEqual(editor.item_count, 3)
def check_enum_text_update(self, view): gui = GUI() enum_edit = EnumModel() with store_exceptions_on_all_threads(): ui = enum_edit.edit_traits(view=view) self.addCleanup(ui.dispose) gui.process_events() editor = ui.get_editors("value")[0] combobox = editor.control self.assertEqual(get_combobox_text(combobox), "one") enum_edit.value = "two" gui.process_events() self.assertEqual(get_combobox_text(combobox), "two")
def test_table_editor_select_row_index(self): gui = GUI() object_list = ObjectListWithSelection( values=[ListItem(value=str(i**2)) for i in range(10)]) object_list.selected_index = 5 with store_exceptions_on_all_threads(), \ create_ui(object_list, dict(view=select_row_index_view)) as ui: editor = ui.get_editors("values")[0] gui.process_events() if is_current_backend_qt4(): selected = editor.selected_indices elif is_current_backend_wx(): selected = editor.selected_row_index press_ok_button(ui) gui.process_events() self.assertEqual(selected, 5)
def start(self): """ Start the application, setting up things that are required Subclasses should open at least one ApplicationWindow or subclass in their start method, and should call the superclass start() method before doing any work themselves. """ from pyface.gui import GUI ok = super(GUIApplication, self).start() if ok: # create the GUI so that the splash screen comes up first thing if self.gui is Undefined: self.gui = GUI(splash_screen=self.splash_screen) # create the initial windows to show self._create_windows() return ok
def test_table_editor_select_cell_indices(): gui = GUI() object_list = ObjectListWithSelection( values=[ListItem(value=str(i**2)) for i in range(10)]) object_list.selected_cell_indices = [(5, 0), (6, 1), (8, 0)] with store_exceptions_on_all_threads(): ui = object_list.edit_traits(view=select_cell_indices_view) editor = ui.get_editors("values")[0] gui.process_events() if is_current_backend_qt4(): selected = editor.selected_indices elif is_current_backend_wx(): selected = editor.selected_cell_indices press_ok_button(ui) gui.process_events() assert selected == [(5, 0), (6, 1), (8, 0)]
def setUp(self): self.gui = GUI() # Set up the bogus task with its window. self.task = BogusTask() self.window = window = TaskWindow() window.add_task(self.task) self.task_state = window._get_state(self.task) # Fish the dock pane toggle group from the menu bar manager. dock_pane_toggle_group = [] def find_doc_pane_toggle(item): if item.id == "tests.bogus_task.DockPaneToggleGroup": dock_pane_toggle_group.append(item) self.task_state.menu_bar_manager.walk(find_doc_pane_toggle) self.dock_pane_toggle_group = dock_pane_toggle_group[0]
def test_tabular_editor_single_selection(self): gui = GUI() with store_exceptions_on_all_threads(), \ self.report_and_editor(get_view()) as (report, editor): gui.process_events() people = report.people self.assertEqual(report.selected_row, -1) self.assertIsNone(report.selected) set_selected_single(editor, 1) gui.process_events() self.assertEqual(report.selected_row, 1) self.assertEqual(report.selected, people[1]) set_selected_single(editor, 2) gui.process_events() self.assertEqual(report.selected_row, 2) self.assertEqual(report.selected, people[2])
def test_progress_column(self): from traitsui.extras.progress_column import ProgressColumn progress_view = View( Item( "values", show_label=False, editor=TableEditor(columns=[ ObjectColumn(name="value"), ProgressColumn(name="other_value"), ]), ), buttons=["OK"], ) gui = GUI() object_list = ObjectList( values=[ListItem(value=str(i**2)) for i in range(10)]) with store_exceptions_on_all_threads(), \ create_ui(object_list, dict(view=progress_view)) as ui: gui.process_events() press_ok_button(ui) gui.process_events()
def test_tabular_editor_multi_selection_changed(self): gui = GUI() view = get_view(multi_select=True) with store_exceptions_on_all_threads(), \ self.report_and_editor(view) as (report, editor): gui.process_events() people = report.people self.assertEqual(get_selected_rows(editor), []) report.selected_rows = [0, 1] gui.process_events() self.assertEqual(get_selected_rows(editor), [0, 1]) self.assertEqual(report.multi_selected, people[:2]) report.multi_selected = [people[2], people[0]] gui.process_events() self.assertEqual(sorted(get_selected_rows(editor)), [0, 2]) self.assertEqual(sorted(report.selected_rows), [0, 2]) # If there's a single invalid value, nothing is updated invalid_person = Person(name="invalid", age=-1) report.multi_selected = [people[2], invalid_person] gui.process_events() self.assertEqual(sorted(get_selected_rows(editor)), [0, 2]) self.assertEqual(sorted(report.selected_rows), [0, 2]) # Empty list clears selection report.selected_rows = [] gui.process_events() self.assertEqual(get_selected_rows(editor), []) self.assertEqual(report.multi_selected, [])
def setUp(self): self.gui = GUI() self.window = SplashScreen()
def setUp(self): self.gui = GUI() self.parent = Window() self.parent._create() self.addCleanup(self._destroy_parent)
def _gui_default(self): from pyface.gui import GUI return GUI(splash_screen=self.splash_screen)