示例#1
0
    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()