Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 17 additions & 7 deletions ipyfilechooser/filechooser.py
Original file line number Diff line number Diff line change
Expand Up @@ -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 = '<span style="color:{1};">{0}</span>'
_LBL_NOFILE = 'No selection'

value = Unicode('', help="The selected path + filename")

def __init__(
self,
path: str = os.getcwd(),
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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."""
Expand Down Expand Up @@ -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."""
Expand Down Expand Up @@ -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