def __init__()

in msticpy/config/file_browser.py [0:0]


    def __init__(self, path: str = ".", select_cb: Callable[[str], Any] = None):
        """
        Initialize the class for path and with optional callback.

        Parameters
        ----------
        path : str, optional
            Path to open at, by default "."
        select_cb : Callable[[str], Any], optional
            Callback function, by default None. This is executed
            when the user hits the "Select File" button. The function
            is passed the path of the selected file.

        """
        self.current_folder = Path(path).resolve()
        self.file: Optional[str] = None
        self.action = select_cb

        file_layout = widgets.Layout(height="200px", width="45%")
        self.select_file = widgets.Select(description="Files", layout=file_layout)
        folder_layout = widgets.Layout(height="150px", width="99%")
        self.select_folder = widgets.Select(description="Folders", layout=folder_layout)

        self.btn_open = widgets.Button(description="Select File")
        self.btn_f_nav = widgets.Button(description="Open folder")
        self.txt_path = widgets.Text(
            description="Path",
            value=str(self.current_folder),
            layout=widgets.Layout(width="75%"),
        )

        style_indent = {"description_width": "150px"}
        self.select_search = widgets.Select(
            description="Results",
            layout=self.no_border_layout("75%"),
            style=style_indent,
        )
        self.select_search.observe(self._select_search_file, names="value")
        self.lbl_search = widgets.Label(value="Search for file in current path")

        self.txt_search = widgets.Text(
            description="Search pattern",
            layout=widgets.Layout(width="50%"),
            style=style_indent,
            continuous_update=False,
        )
        self.txt_search.observe(self._search, "value")
        self.btn_search = widgets.Button(description="Search")
        self.btn_search.on_click(self._search)
        hb_search = widgets.HBox([self.txt_search, self.btn_search])
        vb_search = widgets.VBox([self.lbl_search, hb_search, self.select_search])
        self.accd_search = widgets.Accordion(children=[vb_search])
        self.accd_search.set_title(0, "Search")
        self.accd_search.selected_index = None

        self.txt_path.continuous_update = False
        self.txt_path.observe(self._enter_folder, "value")
        self.btn_open.on_click(self._return_file)
        self.btn_f_nav.on_click(self._open_folder)
        self.select_file.observe(self._select_file, names="value")

        self._open_folder(tgt_folder=self.current_folder)

        vb_folder_nav = widgets.VBox(
            [self.select_folder, self.btn_f_nav], layout=widgets.Layout(width="30%")
        )
        hb_files_folders = widgets.HBox(
            [vb_folder_nav, self.select_file], layout=self.border_layout("98%")
        )

        hb_search = widgets.HBox([self.txt_search, self.btn_search])
        vb_search = widgets.VBox([self.lbl_search, hb_search, self.select_search])

        self.layout = widgets.VBox(
            [self.txt_path, hb_files_folders, self.accd_search, self.btn_open],
            layout=self.border_layout("98%"),
        )