def __create_ui_view(self,
                         ui: Declarative.DeclarativeUI,
                         title: str = None,
                         **kwargs) -> dict:
        elabftw_text_field = ui.create_text_edit(editable=False,
                                                 text='elabftw_data',
                                                 width=400,
                                                 height=500)
        elabftw_tab = ui.create_tab(label='Elabftw',
                                    content=elabftw_text_field)

        nion_text_field = ui.create_text_edit(editable=False,
                                              text='nion_data',
                                              width=400,
                                              height=500)
        nion_tab = ui.create_tab(label='Nion Swift', content=nion_text_field)
        tabs = ui.create_tabs(elabftw_tab, nion_tab)

        overwrite_button = ui.create_push_button(
            text='Overwrite', on_clicked='on_overwrite_clicked')
        merge_button = ui.create_push_button(text='Merge',
                                             on_clicked='on_merge_clicked')
        buttons_row = ui.create_row(overwrite_button,
                                    merge_button,
                                    spacing=8,
                                    margin=4)
        content = ui.create_column(tabs,
                                   buttons_row,
                                   ui.create_stretch(),
                                   spacing=8,
                                   margin=4)
        return ui.create_modeless_dialog(content, title=title, margin=4)
    def __create_ui_view(self,
                         ui: Declarative.DeclarativeUI,
                         title: str = None,
                         file_ext: str = 'hdf5',
                         params: dict = None,
                         **kwargs) -> dict:
        ui_objects = []
        for i, param in enumerate(params):
            converter = ''
            if param.get('converter'):
                converter = ', converter=' + param['converter']
            if (param['type'] == 'text_box'):
                ui_objects.append(ui.create_label(text=param['text']))
                ui_objects.append(
                    ui.create_line_edit(
                        text=f'@binding(params_{i}{converter})'))
            elif (param['type'] == 'check_box'):
                ui_objects.append(
                    ui.create_check_box(
                        text=param['text'],
                        checked=f'@binding(params_{i}{converter})'))

        ui_objects.append(
            ui.create_row(
                ui.create_push_button(text='Load', on_clicked='on_load'),
                ui.create_stretch()))
        content = ui.create_column(*ui_objects,
                                   ui.create_stretch(),
                                   spacing=8,
                                   margin=4)

        return ui.create_modeless_dialog(content,
                                         title=title + ' - ' +
                                         file_ext.title(),
                                         margin=4)
    def __create_ui_view(self,
                         ui: Declarative.DeclarativeUI,
                         title: str = None,
                         **kwargs) -> dict:
        nion_text_field = ui.create_text_edit(editable=False,
                                              text='nion_text',
                                              name='nion_text_field',
                                              width=200,
                                              height=100)
        elabftw_text_field = ui.create_text_edit(editable=False,
                                                 text='elabftw_text',
                                                 name='elabftw_text_field',
                                                 width=200,
                                                 height=100)
        text_row = ui.create_row(nion_text_field,
                                 elabftw_text_field,
                                 spacing=8,
                                 margin=4)

        nion_button = ui.create_push_button(
            text='Keep Local', on_clicked='on_nion_button_clicked')
        elabftw_button = ui.create_push_button(
            text='Keep Elabftw', on_clicked='on_elabftw_button_clicked')
        button_row = ui.create_row(nion_button,
                                   elabftw_button,
                                   spacing=8,
                                   margin=4)

        content = ui.create_column(text_row,
                                   button_row,
                                   ui.create_stretch(),
                                   spacing=8,
                                   margin=4)

        return ui.create_modeless_dialog(content, title=title, margin=4)