diff --git a/ipyfilechooser/filechooser.py b/ipyfilechooser/filechooser.py index 12f6479..fd5ecd7 100644 --- a/ipyfilechooser/filechooser.py +++ b/ipyfilechooser/filechooser.py @@ -3,17 +3,20 @@ from typing import Optional, Sequence, Mapping, Callable from ipywidgets import Dropdown, Text, Select, Button, HTML from ipywidgets import Layout, GridBox, Box, HBox, VBox, ValueWidget +from traitlets import HasTraits, Unicode from .errors import ParentPathError, InvalidFileNameError from .utils import get_subpaths, get_dir_contents, match_item, strip_parent_path from .utils import is_valid_filename, get_drive_letters, normalize_path, has_parent_path -class FileChooser(VBox, ValueWidget): +class FileChooser(VBox, ValueWidget, HasTraits): """FileChooser class.""" _LBL_TEMPLATE = '{0}' _LBL_NOFILE = 'No selection' + value = Unicode('', help="The selected path + filename") + def __init__( self, path: str = os.getcwd(), @@ -342,6 +345,7 @@ def _apply_selection(self) -> None: if ((self._selected_path is not None) and (self._selected_filename is not None)): selected = os.path.join(self._selected_path, self._selected_filename) + self.value = selected self._gb.layout.display = 'none' self._cancel.layout.display = 'none' self._select.description = self._change_desc @@ -430,6 +434,17 @@ def show_hidden(self, hidden: bool) -> None: self._show_hidden = hidden self.refresh() + @property + def select_default(self) -> bool: + """Get _select_default value.""" + return self._select_default + + @select_default.setter + def select_default(self, select_default: bool) -> None: + """Set _select_default value.""" + self._select_default = select_default + self.refresh() + @property def dir_icon(self) -> Optional[str]: """Get dir icon value.""" @@ -569,11 +584,6 @@ def filter_pattern(self, filter_pattern: Optional[Sequence[str]]) -> None: self._filter_pattern = filter_pattern self.refresh() - @property - def value(self) -> Optional[str]: - """Get selected value.""" - return self.selected - @property def selected(self) -> Optional[str]: """Get selected value.""" @@ -626,4 +636,4 @@ def register_callback(self, callback: Callable[[Optional['FileChooser']], None]) def get_interact_value(self) -> Optional[str]: """Return the value which should be passed to interactive functions.""" - return self.selected + return self.value