def __init__(self, parent, editor_tab): Panel.__init__(self, parent) self.__editor_tab = editor_tab self.__cur_po_class = None sizer = GridBagSizer(5, 5) full_span = (1, 4) row = 0 inner_sizer = BoxSizer(HORIZONTAL) self.btn_open_test_file = Button(self, label=u'Open test file') self.btn_open_test_file.Bind(EVT_BUTTON, self.__on_open_test_file) inner_sizer.Add(self.btn_open_test_file) self.btn_create_test_file = Button(self, label=u'Create test file') self.btn_create_test_file.Bind(EVT_BUTTON, self.__on_create_test_file) inner_sizer.Add(self.btn_create_test_file) self.btn_save_test_file = Button(self, label=u'Save current file') self.btn_save_test_file.Bind(EVT_BUTTON, self.__on_save_test_file) inner_sizer.Add(self.btn_save_test_file) inner_sizer.AddStretchSpacer(1) self.btn_create_test = Button(self, label=u'Create new method/test case') self.btn_create_test.Bind(EVT_BUTTON, self.__create_method_or_test) inner_sizer.Add(self.btn_create_test) sizer.Add(inner_sizer, pos=(row, 0), span=full_span, flag=FLAG_ALL_AND_EXPAND) row += 1 self.tabs = Tabs(self, [(Table, "Fields' table")]) self.table = self.tabs.GetPage(0) self.table.Bind(EVT_GRID_SELECT_CELL, self.__on_cell_click) self.table.Bind(EVT_GRID_CELL_RIGHT_CLICK, self.__on_cell_click) sizer.Add(self.tabs, pos=(row, 0), span=full_span, flag=FLAG_ALL_AND_EXPAND) sizer.AddGrowableCol(1, 1) sizer.AddGrowableRow(1, 1) self.SetSizer(sizer)
class FieldsTableAndTestFilesTabs(Panel): TAB_INDEX_FOR_TABLE = 0 TAB_INDEX_FOR_PO_CLASS_FILE = 1 def __init__(self, parent, editor_tab): Panel.__init__(self, parent) self.__editor_tab = editor_tab self.__cur_po_class = None sizer = GridBagSizer(5, 5) full_span = (1, 4) row = 0 inner_sizer = BoxSizer(HORIZONTAL) self.btn_open_test_file = Button(self, label=u'Open test file') self.btn_open_test_file.Bind(EVT_BUTTON, self.__on_open_test_file) inner_sizer.Add(self.btn_open_test_file) self.btn_create_test_file = Button(self, label=u'Create test file') self.btn_create_test_file.Bind(EVT_BUTTON, self.__on_create_test_file) inner_sizer.Add(self.btn_create_test_file) self.btn_save_test_file = Button(self, label=u'Save current file') self.btn_save_test_file.Bind(EVT_BUTTON, self.__on_save_test_file) inner_sizer.Add(self.btn_save_test_file) inner_sizer.AddStretchSpacer(1) self.btn_create_test = Button(self, label=u'Create new method/test case') self.btn_create_test.Bind(EVT_BUTTON, self.__create_method_or_test) inner_sizer.Add(self.btn_create_test) sizer.Add(inner_sizer, pos=(row, 0), span=full_span, flag=FLAG_ALL_AND_EXPAND) row += 1 self.tabs = Tabs(self, [(Table, "Fields' table")]) self.table = self.tabs.GetPage(0) self.table.Bind(EVT_GRID_SELECT_CELL, self.__on_cell_click) self.table.Bind(EVT_GRID_CELL_RIGHT_CLICK, self.__on_cell_click) sizer.Add(self.tabs, pos=(row, 0), span=full_span, flag=FLAG_ALL_AND_EXPAND) sizer.AddGrowableCol(1, 1) sizer.AddGrowableRow(1, 1) self.SetSizer(sizer) def load_po_class(self, po_class): self.__cur_po_class = po_class self.__set_pageobject_class(self.__cur_po_class) file_name = os.path.basename(self.__cur_po_class.file_path) more_than_1_tab = self.tabs.GetPageCount() > 1 if more_than_1_tab: py_file_ui = self.tabs.GetPage(self.TAB_INDEX_FOR_PO_CLASS_FILE) py_file_ui.load_file(self.__cur_po_class.file_path) else: py_file_ui = PyFileUI(self.tabs, self.__cur_po_class.file_path, True) self.tabs.AddPage(py_file_ui, os.path.basename(self.__cur_po_class.file_path)) if not more_than_1_tab and self.tabs.GetSelection( ) != self.TAB_INDEX_FOR_PO_CLASS_FILE: self.tabs.SetSelection(self.TAB_INDEX_FOR_PO_CLASS_FILE) self.tabs.set_tabs_text(file_name, self.TAB_INDEX_FOR_PO_CLASS_FILE) def get_current_po_class(self): return self.__cur_po_class def clear_table(self): self.table.ClearGrid() def get_current_pageobject_class(self): return self.__cur_po_class def __set_pageobject_class(self, po_class): self.__cur_po_class = po_class self.table.load_data(po_class.fields) def __create_method_or_test(self, evt): count = self.tabs.GetPageCount() if count > 1: page = self.tabs.GetPage(self.tabs.GetSelection()) if type(page) == PyFileUI: self.__create_method(page) elif type(page) == TestFileUI: self.__create_test(page) else: show_dialog( self, u'Selected tab is not supported' + LINESEP + u'Please selected test file or page object class', 'Bad selected tab') else: show_dialog( self, u'Test file was not created.' + LINESEP + 'Please create a test file.', u'Test file was not created') def __create_method(self, page): modal = TextEntryDialog(self, u'Enter method name', u'Create method') if modal.ShowModal() == ID_OK: method_name = modal.GetValue() if StringUtils.is_method_name_correct(method_name): page.create_method(method_name) else: show_dialog_bad_name(self, method_name, 'search', 'login', 'fill_data') def __create_test(self, page): modal = TextEntryDialog(self, u'Enter test case name', u'Create new test case') if modal.ShowModal() == ID_OK: test_case_name = modal.GetValue() if StringUtils.is_test_case_name_correct(test_case_name): page.create_new_test_case(test_case_name) else: show_dialog_bad_name(self, test_case_name, 'test_search') def __on_save_test_file(self, evt): count = self.tabs.GetPageCount() if count > 1: page = self.tabs.GetPage(self.tabs.GetSelection()) page.save_file() else: show_dialog(self, u'Please create/open test file.', u'Nothing to save') def __open_or_create_test_file(self, style): if self.__cur_po_class: folder = self.GetTopLevelParent().get_root_folder() if not folder: folder = os.path.dirname(self.__cur_po_class.file_path) elif RootFolder.TESTS_FOLDER in os.listdir(folder): folder = os.path.join(folder, RootFolder.TESTS_FOLDER) dialog = FileDialog(self, defaultDir=folder, style=style, wildcard='*.py') if dialog.ShowModal() == ID_OK: test_file = dialog.GetPath() load_file = style == FD_OPEN filename = os.path.basename(test_file) if StringUtils.is_test_file_name_correct(test_file): test_file_ui = TestFileUI(self.tabs, test_file, self.__cur_po_class, load_file) self.tabs.AddPage(test_file_ui, filename) self.tabs.SetSelection(self.tabs.GetPageCount() - 1) if style == FD_SAVE: test_file_ui.set_file_was_changed() else: show_dialog_bad_name(self, filename, 'my_first_test.py') else: show_dialog(self, u'Please select class file.', u'Class file was not opened') def __on_open_test_file(self, evt): self.__open_or_create_test_file(FD_OPEN) def __on_create_test_file(self, evt): self.__open_or_create_test_file(FD_SAVE) def __on_cell_click(self, evt): self.table.selected_row = evt.GetRow() field = self.table.get_selected_data() if field: self.__editor_tab.image_panel.draw_selected_field(field, True) if evt.GetEventType( ) == EVT_GRID_CELL_RIGHT_CLICK.typeId and field: self.__editor_tab.show_content_menu() evt.Skip()
def __create_widgets(self): panel = Panel(self) sizer = GridBagSizer(5, 5) row = 0 col = 0 label = StaticText(panel, label=u'Root folder:') sizer.Add(label, pos=(row, col)) col += 1 col_width = 4 self.__txt_root_path = TextCtrl(panel) sizer.Add(self.__txt_root_path, pos=(row, col), span=(1, col_width), flag=FLAG_ALL_AND_EXPAND) col += col_width self.__btn_set_root = Button(panel, label=u'Set root folder') self.__btn_set_root.Bind(EVT_BUTTON, self.__set_root_folder) sizer.Add(self.__btn_set_root, pos=(row, col), flag=FLAG_ALL_AND_EXPAND) row += 1 col = 0 label = StaticText(panel, label=u'Url:') sizer.Add(label, pos=(row, col)) col += 1 self.__txt_url = TextCtrl( panel, value=u'https://www.google.com/') # TODO: remove url sizer.Add(self.__txt_url, pos=(row, col), flag=FLAG_ALL_AND_EXPAND) col += 1 label = StaticText(panel, label=u'Browser:') sizer.Add(label, pos=(row, col), flag=FLAG_ALL_AND_EXPAND) col += 1 self.__cb_browser = Choice(panel, choices=Browser.get_supported_browsers()) self.__cb_browser.Select(0) sizer.Add(self.__cb_browser, pos=(row, col), flag=FLAG_ALL_AND_EXPAND) col += 1 self.bth_open_url = Button(panel, label=u'Open url') self.bth_open_url.Bind(EVT_BUTTON, self.__open_url) sizer.Add(self.bth_open_url, pos=(row, col), flag=FLAG_ALL_AND_EXPAND) col += 1 self.bth_close_url = Button(panel, label=u'Close browser') self.bth_close_url.Bind(EVT_BUTTON, self.__close_browser) sizer.Add(self.bth_close_url, pos=(row, col), flag=FLAG_ALL_AND_EXPAND) row += 1 col = 0 tabs = Tabs(panel, [(GeneratorTab, "Generator"), (EditorTab, "Editor"), (TestRunnerTab, "Test runner"), (SelectorFinderTab, "Selector finder")]) sizer.Add(tabs, pos=(row, col), span=(1, 6), flag=FLAG_ALL_AND_EXPAND) sizer.AddGrowableCol(1, 1) sizer.AddGrowableRow(2, 1) panel.SetSizer(sizer) self.Layout()
class FieldsTableAndTestFilesTabs(Panel): TAB_INDEX_FOR_TABLE = 0 TAB_INDEX_FOR_PO_CLASS_FILE = 1 def __init__(self, parent, editor_tab): Panel.__init__(self, parent) self.__editor_tab = editor_tab self.__cur_po_class = None sizer = GridBagSizer(5, 5) full_span = (1, 4) row = 0 inner_sizer = BoxSizer(HORIZONTAL) self.btn_open_test_file = Button(self, label=u'Open test file') self.btn_open_test_file.Bind(EVT_BUTTON, self.__on_open_test_file) inner_sizer.Add(self.btn_open_test_file) self.btn_create_test_file = Button(self, label=u'Create test file') self.btn_create_test_file.Bind(EVT_BUTTON, self.__on_create_test_file) inner_sizer.Add(self.btn_create_test_file) self.btn_save_test_file = Button(self, label=u'Save current file') self.btn_save_test_file.Bind(EVT_BUTTON, self.__on_save_test_file) inner_sizer.Add(self.btn_save_test_file) inner_sizer.AddStretchSpacer(1) self.btn_create_test = Button(self, label=u'Create new method/test case') self.btn_create_test.Bind(EVT_BUTTON, self.__create_method_or_test) inner_sizer.Add(self.btn_create_test) sizer.Add(inner_sizer, pos=(row, 0), span=full_span, flag=FLAG_ALL_AND_EXPAND) row += 1 self.tabs = Tabs(self, [(Table, "Fields' table")]) self.table = self.tabs.GetPage(0) self.table.Bind(EVT_GRID_SELECT_CELL, self.__on_cell_click) self.table.Bind(EVT_GRID_CELL_RIGHT_CLICK, self.__on_cell_click) sizer.Add(self.tabs, pos=(row, 0), span=full_span, flag=FLAG_ALL_AND_EXPAND) sizer.AddGrowableCol(1, 1) sizer.AddGrowableRow(1, 1) self.SetSizer(sizer) def load_po_class(self, po_class): self.__cur_po_class = po_class self.__set_pageobject_class(self.__cur_po_class) file_name = os.path.basename(self.__cur_po_class.file_path) more_than_1_tab = self.tabs.GetPageCount() > 1 if more_than_1_tab: py_file_ui = self.tabs.GetPage(self.TAB_INDEX_FOR_PO_CLASS_FILE) py_file_ui.load_file(self.__cur_po_class.file_path) else: py_file_ui = PyFileUI(self.tabs, self.__cur_po_class.file_path, True) self.tabs.AddPage(py_file_ui, os.path.basename(self.__cur_po_class.file_path)) if (not more_than_1_tab and self.tabs.GetSelection() != self.TAB_INDEX_FOR_PO_CLASS_FILE): self.tabs.SetSelection(self.TAB_INDEX_FOR_PO_CLASS_FILE) self.tabs.set_tabs_text(file_name, self.TAB_INDEX_FOR_PO_CLASS_FILE) def get_current_po_class(self): return self.__cur_po_class def clear_table(self): self.table.ClearGrid() def get_current_pageobject_class(self): return self.__cur_po_class def __set_pageobject_class(self, po_class): self.__cur_po_class = po_class self.table.load_data(po_class.fields) def __create_method_or_test(self, evt): count = self.tabs.GetPageCount() if count > 1: page = self.tabs.GetPage(self.tabs.GetSelection()) if type(page) == PyFileUI: self.__create_method(page) elif type(page) == TestFileUI: self.__create_test(page) else: show_dialog(self, u'Selected tab is not supported' + LINESEP + u'Please selected test file or page object class', 'Bad selected tab') else: show_dialog(self, u'Test file was not created.' + LINESEP + 'Please create a test file.', u'Test file was not created') def __create_method(self, page): modal = TextEntryDialog(self, u'Enter method name', u'Create method') if modal.ShowModal() == ID_OK: method_name = modal.GetValue() if StringUtils.is_method_name_correct(method_name): page.create_method(method_name) else: show_dialog_bad_name(self, method_name, 'search', 'login', 'fill_data') def __create_test(self, page): modal = TextEntryDialog(self, u'Enter test case name', u'Create new test case') if modal.ShowModal() == ID_OK: test_case_name = modal.GetValue() if StringUtils.is_test_case_name_correct(test_case_name): page.create_new_test_case(test_case_name) else: show_dialog_bad_name(self, test_case_name, 'test_search') def __on_save_test_file(self, evt): count = self.tabs.GetPageCount() if count > 1: page = self.tabs.GetPage(self.tabs.GetSelection()) page.save_file() else: show_dialog(self, u'Please create/open test file.', u'Nothing to save') def __open_or_create_test_file(self, style): if self.__cur_po_class: folder = self.GetTopLevelParent().get_root_folder() if not folder: folder = os.path.dirname(self.__cur_po_class.file_path) elif RootFolder.TESTS_FOLDER in os.listdir(folder): folder = os.path.join(folder, RootFolder.TESTS_FOLDER) dialog = FileDialog(self, defaultDir=folder, style=style, wildcard='*.py') if dialog.ShowModal() == ID_OK: test_file = dialog.GetPath() load_file = style == FD_OPEN filename = os.path.basename(test_file) if StringUtils.is_test_file_name_correct(test_file): test_file_ui = TestFileUI(self.tabs, test_file, self.__cur_po_class, load_file) self.tabs.AddPage(test_file_ui, filename) self.tabs.SetSelection(self.tabs.GetPageCount() - 1) if style == FD_SAVE: test_file_ui.set_file_was_changed() else: show_dialog_bad_name(self, filename, 'my_first_test.py') else: show_dialog(self, u'Please select class file.', u'Class file was not opened') def __on_open_test_file(self, evt): self.__open_or_create_test_file(FD_OPEN) def __on_create_test_file(self, evt): self.__open_or_create_test_file(FD_SAVE) def __on_cell_click(self, evt): self.table.selected_row = evt.GetRow() field = self.table.get_selected_data() if field: self.__editor_tab.image_panel.draw_selected_field(field, True) if evt.GetEventType() == EVT_GRID_CELL_RIGHT_CLICK.typeId and field: self.__editor_tab.show_content_menu() evt.Skip()