in plugins/wb.admin/frontend/wb_admin_export.py [0:0]
def __init__(self, owner, server_profile, progress_tab, is_importing = False):
super(WbAdminSchemaListTab, self).__init__(False)
self.skip_data_check = False
self.suspend_layout()
progress_tab.operation_tab = self
self.owner = owner
self.progress_tab = progress_tab
self.is_importing = is_importing
self.dump_thread = None
self.bad_password_detected = False
self.server_profile = server_profile
self.out_pipe = None
self.schema_list = newTreeView(mforms.TreeFlatList)
self.schema_list.set_name("Schema List")
self.schema_list.set_min_size(-1, 150)
self.schema_list.add_column(mforms.CheckColumnType, is_importing and "Import" or "Export", 40, True)
self.schema_list.add_column(mforms.IconColumnType, "Schema", 300, False)
self.schema_list.set_cell_edited_callback(self.schema_list_edit)
self.schema_list.end_columns()
self.schema_list.set_allow_sorting(True)
self.table_list = newTreeView(mforms.TreeFlatList)
self.table_list.set_name("Table List")
self.table_list.set_min_size(-1, 150)
self.table_list.add_column(mforms.CheckColumnType, is_importing and "Import" or "Export", 40, True)
self.table_list.add_column(mforms.IconColumnType, "Schema Objects", 300, False)
self.table_list.end_columns()
self.table_list.set_allow_sorting(True)
self.table_list.set_cell_edited_callback(self.table_list_edit)
self.schema_list.add_changed_callback(self.schema_selected)
self.set_padding(8)
self.set_spacing(10)
box = newBox(True)
box.set_spacing(12)
optionspanel = newPanel(mforms.TitledBoxPanel)
if is_importing:
self.export_objects_panel = None
optionspanel.set_title("Import Options")
optionspanel.set_name("Import Options")
else:
self.export_objects_panel = newPanel(mforms.TitledBoxPanel)
self.export_objects_panel.set_title("Objects to Export")
self.export_objects_panel.set_name("Objects To Export")
optionspanel.set_title("Export Options")
optionspanel.set_name("Export Options")
optionsbox = newBox(False)
optionsbox.set_padding(8)
optionsbox.set_spacing(6)
self.file_btn = newButton()
self.file_btn.set_text("...")
self.file_btn.set_name("File Path Browse")
self.file_btn.enable_internal_padding(False)
self.file_btn.set_enabled(False)
self._radio_group = mforms.RadioButton.new_id()
if is_importing:
self.folderlabel = newLabel("Select the Dump Project Folder to import. You can do a selective restore.")
self.folderradio = newRadioButton(self._radio_group)
self.folderradio.set_name("Import From Dump Project Folder")
self.statlabel = newLabel("Press [Start Import] to start...")
self.statlabel.set_name("Press [Start Import] To Start")
self.statlabel.set_name("Press Start Info")
self.filelabel = newLabel("Select the SQL/dump file to import. Please note that the whole file will be imported.")
self.filelabel.set_name("Select File to Import Info")
self.single_transaction_check = None
self.include_schema_check = None
self.dump_triggers_check = None
#self.dump_view_check = None
self.dump_routines_check = None
self.dump_events_check = None
else:
self.filelabel = newLabel("All selected database objects will be exported into a single, self-contained file.")
self.folderlabel = newLabel("Each table will be exported into a separate file. This allows a selective restore, but may be slower.")
self.folderradio = newRadioButton(self._radio_group)
self.folderradio.set_name("Export To Dump Project Folder")
self.statlabel = newLabel("Press [Start Export] to start...")
self.statlabel.set_name("Press [Start Export] To Start")
self.single_transaction_check = newCheckBox()
self.single_transaction_check.set_name("Create Dump In A Single Transaction")
self.include_schema_check = newCheckBox()
self.include_schema_check.set_name("Include Create Schema")
self.dump_triggers_check = newCheckBox()
self.dump_triggers_check.set_name("Dump Triggers")
#self.dump_view_check = newCheckBox()
self.dump_routines_check = newCheckBox()
self.dump_routines_check.set_name("Dump Stored Procedures and Functions")
self.dump_events_check = newCheckBox()
self.dump_events_check.set_name("Dump Events")
self.filelabel.set_enabled(False)
self.filelabel.set_style(mforms.SmallStyle)
if is_importing:
self.fileradio = newRadioButton(self._radio_group)
self.fileradio.set_text("Import from Self-Contained File")
self.fileradio.set_name("Import From Self-Contained File")
else:
self.fileradio = newRadioButton(self._radio_group)
self.fileradio.set_text("Export to Self-Contained File")
self.fileradio.set_name("Export To Self-Contained File")
self.fileradio.set_size(260,-1)
self.fileradio.add_clicked_callback(self.set_save_option)
file_path = newBox(True)
file_path.set_spacing(4)
self.file_te = newTextEntry()
self.file_te.set_name("File Path Entry")
file_path.add(self.fileradio,False,True)
file_path.add(self.file_te, True, True)
file_path.add(self.file_btn, False, True)
self.folderradio.add_clicked_callback(self.set_save_option)
self.folderradio.set_active(True)
self.folderradio.set_size(260,-1)
self.folderlabel.set_style(mforms.SmallStyle)
folder_path = newBox(True)
folder_path.set_spacing(4)
self.folder_te = newTextEntry()
self.folder_te.set_name("Folder Path Entry")
self.folder_btn = newButton()
self.folder_btn.set_text("...")
self.folder_btn.set_name("Folder Path Browse")
self.folder_btn.enable_internal_padding(False)
self.folder_btn.add_clicked_callback(self.open_folder_chooser)
folder_path.add(self.folderradio, False,True)
folder_path.add(self.folder_te, True, True)
folder_path.add(self.folder_btn, False, True)
optionsbox.add(folder_path, False, True)
optionsbox.add(self.folderlabel, False, True)
if is_importing:
self.folder_load_btn = newButton()
self.folder_load_btn.set_text("Load Folder Contents")
self.folder_load_btn.set_name("Load Folder Contents")
self.folder_load_btn.add_clicked_callback(self.refresh_table_list)
tbox = newBox(True)
tbox.add(self.folder_load_btn, False, True)
optionsbox.add(tbox, False, True)
optionsbox.add(file_path, False, True)
optionsbox.add(self.filelabel, False, True)
if self.single_transaction_check or self.dump_routines_check:
export_objects_opts = mforms.newTable()
export_objects_opts.set_homogeneous(True)
export_objects_opts.set_padding(4)
export_objects_opts.set_row_count(1)
export_objects_opts.set_column_count(3)
export_objects_opts.set_row_spacing(2)
export_objects_opts.set_column_spacing(2)
self.export_objects_panel.add(export_objects_opts)
export_options = mforms.newTable()
export_options.set_name("Export Options")
export_options.set_homogeneous(True)
export_options.set_padding(4)
export_options.set_row_count(1)
export_options.set_column_count(2)
export_options.set_row_spacing(2)
export_options.set_column_spacing(2)
optionsbox.add(export_options, False, True)
if self.single_transaction_check:
export_options.add(self.single_transaction_check,0,1,0,1)
if self.include_schema_check:
export_options.add(self.include_schema_check,1,2,0,1)
if self.dump_routines_check:
export_objects_opts.add(self.dump_routines_check,0,1,0,1)
if self.dump_events_check:
export_objects_opts.add(self.dump_events_check,1,2,0,1)
if self.dump_triggers_check:
export_objects_opts.add(self.dump_triggers_check,2,3,0,1)
self.file_te.set_enabled(False)
optionspanel.add(optionsbox)
selectionpanel = newPanel(mforms.TitledBoxPanel)
if is_importing:
selectionpanel.set_title("Select Database Objects to Import (only available for Project Folders)")
selectionpanel.set_name("Database Objects To Import")
else:
selectionpanel.set_title("Tables to Export")
selectionpanel.set_name("Tables To Export")
selectionvbox = newBox(False)
selectionvbox.set_padding(8)
selectionvbox.set_spacing(8)
selectionbox = newBox(True)
selectionvbox.add(selectionbox, True, True)
selectionbox.set_spacing(12)
selectionbox.add(self.schema_list, True, True)
selectionbox.add(self.table_list, True, True)
selectionbbox = newBox(True)
selectionbbox.set_spacing(8)
if not is_importing:
self.refresh_button = newButton()
self.refresh_button.set_text("Refresh")
self.refresh_button.set_name("Refresh")
selectionbbox.add(self.refresh_button, False, True)
self.refresh_button.add_clicked_callback(self.refresh_table_list)
self.select_summary_label = newLabel("")
selectionbbox.add(self.select_summary_label, True, True)
self.select_all_views_btn = newButton()
self.select_all_views_btn.set_text("Select Views")
self.select_all_views_btn.set_name("Select Views")
self.select_all_views_btn.add_clicked_callback(self.select_all_views)
self.select_all_views_btn.set_enabled(False)
self.select_all_btn = newButton()
self.select_all_btn.set_text("Select Tables")
self.select_all_btn.set_name("Select Tables")
self.select_all_btn.add_clicked_callback(self.select_all_tables)
self.select_all_btn.set_enabled(False)
self.unselect_all_btn = newButton()
self.unselect_all_btn.set_text("Unselect All")
self.unselect_all_btn.set_name("Unselect All")
self.unselect_all_btn.add_clicked_callback(self.unselect_all_tables)
self.unselect_all_btn.set_enabled(False)
self.dump_type_selector = newSelector()
self.dump_type_selector.add_items(["Dump Structure and Data", "Dump Data Only", "Dump Structure Only"]);
self.dump_type_selector.set_name("Dump Selector")
selectionbbox.add_end(self.unselect_all_btn, False, True)
selectionbbox.add_end(self.select_all_btn, False, True)
selectionbbox.add_end(self.select_all_views_btn, False, True)
selectionbbox.add_end(self.dump_type_selector, False, True)
selectionvbox.add(selectionbbox, False, True)
selectionpanel.add(selectionvbox)
if is_importing:
self.add(optionspanel, False, True)
self.import_target_schema_panel = targetpanel = newPanel(mforms.TitledBoxPanel)
targetpanel.set_title("Default Schema to be Imported To")
targetpanel.set_name("Default Schema To Be Imported To")
hbox = newBox(True)
hbox.set_spacing(8)
hbox.add(newLabel("Default Target Schema:"), False, True)
self.import_target_schema = newSelector()
self.import_target_schema.set_name("Target Schema Selector")
hbox.add(self.import_target_schema, True, True)
b = newButton()
b.set_name("New")
b.set_text("New...")
b.add_clicked_callback(self.new_target_schema)
hbox.add(b, False, True)
help = newLabel("The default schema to import the dump into.\nNOTE: this is only used if the dump file doesn't contain its schema,\notherwise it is ignored.")
help.set_style(mforms.SmallHelpTextStyle)
hbox.add(help, False, True)
hbox.set_padding(12)
targetpanel.add(hbox)
self.add(targetpanel, False, True)
self.add(selectionpanel, True, True)
if not is_importing:
self.add(self.export_objects_panel, False, True)
self.add(optionspanel, False, True)
box = newBox(True)
self.add(box, False, True)
box.add(self.statlabel, True, True)
box.set_spacing(8)
box.set_padding(0)
self.export_button = newButton()
if is_importing:
self.export_button.set_enabled(False)
box.add_end(self.export_button, False, True)
self.export_button.add_clicked_callback(self.start)
if is_importing:
self.file_btn.add_clicked_callback(lambda: self.open_file_chooser(mforms.OpenFile))
self.folderradio.set_text("Import from Dump Project Folder")
self.export_button.set_text("Start Import")
self.export_button.set_name("Start Import")
else:
self.file_btn.add_clicked_callback(lambda: self.open_file_chooser(mforms.SaveFile))
self.single_transaction_check.set_text("Create Dump in a Single Transaction (self-contained file only)")
self.single_transaction_check.set_enabled(False)
self.single_transaction_check.add_clicked_callback(self.single_transaction_clicked)
self.include_schema_check.set_text("Include Create Schema")
self.dump_triggers_check.set_text("Dump Triggers")
#self.dump_view_check.set_text("Dump Views")
self.dump_routines_check.set_text("Dump Stored Procedures and Functions")
self.dump_events_check.set_text("Dump Events")
self.folderradio.set_text("Export to Dump Project Folder")
self.export_button.set_text("Start Export")
self.export_button.set_name("Start Export")
self.resume_layout()