Esempio n. 1
0
 def __init__(self,
              path="./",
              ddl_size=None,
              normal_params=None,
              folders=True,
              files=True,
              file_types=None,
              text=""):
     """File and folder browser.
     <path>: the path of the folder in which browser browse files.
     <ddl_size>: if not None, force the size of the dropdown list of files.
     <folders>: if True, displays folders to user.
     <files>: if True, displays file to user.
     <file_types>: if not None, pass a list of files formats that you wand to
         be valid for user choice.
     <text>: title text of the browser.
     """
     ddl_size = style.BROWSERLIGHT_DDL_SIZE if ddl_size is None else ddl_size
     super(BrowserLight, self).__init__(normal_params=normal_params)
     self.path = path
     self._ddl_size = ddl_size
     if not hasattr(file_types, "__iter__") and file_types is not None:
         raise ValueError("Files types must be a sequence.")
     self.file_types = file_types
     # DropDownListFast
     actual_folders, actual_files = self._get_folders_and_files()
     actual_files = self._filter_files(actual_files)
     if not folders:
         actual_folders = None
     if not files:
         actual_files = []
     self._ddlf = DropDownListFast(size=self._ddl_size,
                                   titles=actual_files,
                                   folders=actual_folders)
     # selection button
     inserter_width = 3 * ddl_size[0] // 4
     ##        if inserter_width > style.MAX_INSERTER_WIDTH:
     ##            inserter_width = style.MAX_INSERTER_WIDTH
     self._selected = Inserter("Selected : ", size=(inserter_width, None))
     self._selected.finish()
     if isinstance(text, str):
         self.text_element = OneLineText(text)
         self.text_element.finish()
     else:
         self.text_element = text
     self.add_elements([self.text_element, self._ddlf, self._selected])
     reac_pressed = Reaction(parameters.BUTTON_UNPRESS_EVENT,
                             self._reaction_press,
                             reac_name=constants.REAC_PRESSED)
     self._ddlf.finish()
     self.add_reaction(reac_pressed)
     self._clicked = None
     self._something_selected = False
     painter = functions.obtain_valid_painter(
         painterstyle.BOX_PAINTER,
         pressed=True,
         ##                                                 color=style.DEF_COLOR2,
         radius=style.BOX_RADIUS)
     self.set_painter(painter)
     self._refresh_ddlf_lift()
Esempio n. 2
0
 def __init__(self,
              name_text,
              launched_text="",
              box_els=None,
              normal_params=None,
              box_size=None,
              bar=None,
              file_width=None,
              show_select=True,
              spawn="center",
              click_quit=False,
              storer_params=None):
     """Usage of bar is discouraged"""
     ##        box_size = style.BOX_SIZE if box_size is None else box_size
     file_width = style.FILE_WIDTH if file_width is None else file_width
     if not box_els:
         box_els = []
     self.show_select = show_select
     _Launcher.__init__(self, "", normal_params, click_quit)
     self.file_width = file_width
     # to launch
     (box, _done_element,
      _cancel_element) = self._get_launched_el(box_els, box_size,
                                               storer_params)
     self.launched_element = box
     self._deny_child(self.launched_element)
     self._done_element = _done_element
     self._cancel_element = _cancel_element
     self._spawn = spawn
     if bar:
         self.launched_element.add_bar(launched_text)
     elif launched_text:
         title_element = OneLineText(launched_text)
         title_element.finish()
         title_element.rank = -float("inf")
         title_element.set_font_color(style.TITLE_FONT_COLOR)
         title_element.set_font_size(style.TITLE_FONT_SIZE)
         self.launched_element.add_elements([title_element])
         self.launched_element.store()
     # name
     self._name_element = self._get_name_element(name_text)
     self._name_element.user_func = self.launch_box
     self.add_elements([self._name_element])
 def __init__(self,
              path="./",
              ddl_size=None,
              normal_params=None,
              folders=True,
              files=True,
              file_types=None,
              text="",
              finish=True):
     """File and folder browser for a.
     <path>: the path of the folder in which browser browse files.
     <ddl_size>: if not None, force the size of the dropdown list of files.
     <folders>: if True, displays folders to user.
     <files>: if True, displays file to user.
     <file_types>: if not None, pass a list of files formats that you wand to
         be valid for user choice.
     <text>: title text of the browser.
     """
     ddl_size = style.BROWSERLIGHT_DDL_SIZE if ddl_size is None else ddl_size
     super(BrowserLight, self).__init__(normal_params=normal_params,
                                        finish=False)
     self.path = self.set_path(path)
     self.last_done_path = str(self.path)
     self._ddl_size = ddl_size
     self.file_types = file_types
     self.folders = folders
     self.files = files
     # DropDownListFast
     actual_folders, actual_files = self._get_folders_and_files()
     actual_files = self._filter_files(actual_files)
     if not folders:
         actual_folders = None
     if not files:
         actual_files = []
     self._ddlf = DropDownListFast(size=self._ddl_size,
                                   titles=actual_files,
                                   folders=actual_folders,
                                   has_lift=True,
                                   finish=False)
     ##        self._ddlf.finish()
     # selection button
     inserter_width = 3 * ddl_size[0] // 4
     ##        if inserter_width > style.MAX_INSERTER_WIDTH:
     ##            inserter_width = style.MAX_INSERTER_WIDTH
     self._selected = Inserter("Selected : ", size=(inserter_width, None))
     if isinstance(text, str):
         self.text_element = OneLineText(text)
     else:
         self.text_element = text
     self._path_element = PathElement(father=self, abspath=True)
     self.add_elements([
         self.text_element, self._path_element, self._ddlf, self._selected
     ])
     reac_pressed = Reaction(parameters.BUTTON_UNPRESS_EVENT,
                             self._reaction_press, {"button": 1},
                             reac_name=constants.REAC_PRESSED)
     ##        self._ddlf._force_lift = True
     self._ddlf.finish()
     self.add_reaction(reac_pressed)
     self._clicked = None
     self._something_selected = False
     painter = functions.obtain_valid_painter(painterstyle.BOX_PAINTER,
                                              pressed=True,
                                              radius=style.BOX_RADIUS)
     self.set_painter(painter)
     self._last_click = -2 * parameters.DOUBLE_CLICK_DELAY
     if finish:
         self.finish()