def setUp(self): import tempfile self.basefolder = os.path.realpath(os.path.abspath(tempfile.mkdtemp())) self.storage = LocalFileStorage(self.basefolder) # mock file manager module self.filemanager_patcher = mock.patch("octoprint.filemanager") self.filemanager = self.filemanager_patcher.start() self.filemanager.valid_file_type.return_value = True def get_file_type(name): if name.lower().endswith(".stl"): return ["model", "stl"] elif ( name.lower().endswith(".gco") or name.lower().endswith(".gcode") or name.lower.endswith(".g") ): return ["machinecode", "gcode"] else: return None self.filemanager.get_file_type.side_effect = get_file_type
def __init__(self, show_files_callback, refresh_files, show_folders_callback, create_folder_callback, **kwargs): self.buttons = [] super(FileOptions, self).__init__(self.buttons) self.waiting_for_input = False self.show_folders_callback = show_folders_callback self.settings = roboprinter.printer_instance._settings self.show_files_callback = show_files_callback self.refresh_files = refresh_files self.create_folder_callback = create_folder_callback self.original_screen = None self.sort_observer = Button_Group_Observer() self.modify_files_observer = Button_Group_Observer() #initialize this so that we can edit files on octoprint. base_folder = '/home/pi/.octoprint/uploads' self.storage = LocalFileStorage(base_folder) self.show_selectable_files_options = { 'callback': self.get_selected_files, 'icon': "Icons/Files_Icons/File_Options/Next.png" } self.button_dict = { 'root_list': { 'buttons': [ File_Option_Button( name=lang.pack['Files']['File_Options']['Sort_Files'], callback=partial(self.switch_lists, next_list='sort_files'), default_icon= "Icons/Files_Icons/File_Options/Sort List.png"), File_Option_Button( name=lang.pack['Files']['File_Options'] ['Select_Items'], callback=partial( self.show_files_callback, callback_dict=self.show_selectable_files_options), default_icon= "Icons/Files_Icons/File_Options/Select items.png"), File_Option_Button( name=lang.pack['Files']['File_Options'] ['Create_Folder'], callback=self.create_folder_callback, default_icon= "Icons/Files_Icons/File_Options/Create new folder.png" ), File_Option_Button( name=lang.pack['Files']['File_Options']['Refresh'], callback=self.refresh, default_icon= "Icons/Files_Icons/File_Options/Refresh.png") ], 'title': lang.pack['Files']['File_Options']['Title'], 'option_function': self.exit_from_file_explorer, 'option_icon': "Icons/cancel_button_icon.png" }, 'sort_files': { 'buttons': [ File_Option_Button( name=lang.pack['Files']['Sort_Files']['Alphabet'], default_icon= "Icons/Files_Icons/File_Options/Alphabetically.png", observer=self.sort_observer, selected=False, extra_content=True, option_list=[ lang.pack['Files']['Sort_Files'] ['Alphabet_Options']['A2Z'], lang.pack['Files'] ['Sort_Files']['Alphabet_Options']['Z2A'] ]), File_Option_Button( name=lang.pack['Files']['Sort_Files']['Size'], observer=self.sort_observer, default_icon= "Icons/Files_Icons/File_Options/By size.png", selected=False, extra_content=True, option_list=[ lang.pack['Files']['Sort_Files']['Size_Options'] ['L2S'], lang.pack['Files']['Sort_Files'] ['Size_Options']['S2L'] ]), File_Option_Button( name=lang.pack['Files']['Sort_Files']['Date'], observer=self.sort_observer, default_icon= "Icons/Files_Icons/File_Options/By date.png", selected=True, extra_content=True, option_list=[ lang.pack['Files']['Sort_Files']['Date_Options'] ['New'], lang.pack['Files']['Sort_Files'] ['Date_Options']['Old'] ]), File_Option_Button( name=lang.pack['Files']['Sort_Files']['Type'], observer=self.sort_observer, default_icon= "Icons/Files_Icons/File_Options/By type.png", selected=False, extra_content=True, option_list=[ lang.pack['Files']['Sort_Files']['Type_Options'] ['STL'], lang.pack['Files']['Sort_Files'] ['Type_Options']['GCODE'], lang.pack['Files'] ['Sort_Files']['Type_Options']['HEX'], lang.pack['Files']['Sort_Files']['Type_Options'] ['Folder'] ]) ], 'title': lang.pack['Files']['Sort_Files']['Title'], 'option_function': self.set_sorting_options, 'option_icon': "Icons/Files_Icons/File_Options/Next.png" }, 'modify_files': { 'buttons': [ File_Option_Button( default_icon= "Icons/Files_Icons/File_Options/Copy files.png", selected_icon="Icons/check_icon.png", name=lang.pack['Files']['Modify_Files']['Copy'], observer=self.modify_files_observer, selected=False), File_Option_Button( default_icon= "Icons/Files_Icons/File_Options/Move files.png", selected_icon="Icons/check_icon.png", name=lang.pack['Files']['Modify_Files']['Move'], observer=self.modify_files_observer, selected=False), File_Option_Button( default_icon= "Icons/Files_Icons/File_Options/Delete files.png", selected_icon="Icons/check_icon.png", name=lang.pack['Files']['Modify_Files']['Delete'], observer=self.modify_files_observer, selected=False), File_Counter("0") ], 'title': lang.pack['Files']['Modify_Files']['Title'], 'option_function': self.modify_files, 'option_icon': "Icons/Files_Icons/File_Options/Next.png" } } self.cur_list = Screen_Node(screen=self.button_dict['root_list']) self.populate_screen() self.set_default_sorting_option()