def update_treeview(self): """Clears and redraws all the import presets in the treeview.""" app = App.get_running_app() presets = self.ids['presets'] #Clear old presets presets.clear_widgets() #Check if screenDatabase folders are set, cant import without somewhere to import to. database_folders = app.config.get('Database Directories', 'paths') database_folders = local_path(database_folders) if database_folders.strip(' '): databases = database_folders.split(';') else: databases = [] new_preset_button = self.ids['newPresetButton'] if databases: new_preset_button.disabled = False for index, import_preset in enumerate(app.imports): preset = ImportPreset(index=index, text=import_preset['title'], owner=self, import_to=import_preset['import_to']) preset.data = import_preset if index == self.selected_import: preset.expanded = True presets.add_widget(preset) else: new_preset_button.disabled = True presets.add_widget( NormalLabel( text="You Must Set Up A Database Before Importing Photos"))
def import_preset(self): """Activates the import process using the selected import preset.""" app = App.get_running_app() preset = app.imports[self.selected_import] if not preset['import_from']: app.message("Please Set An Import Directory.") return good_paths = [] for path in preset['import_from']: if os.path.exists(path): good_paths.append(path) if not good_paths: app.message("Directories to import photo from do not exist.") return if not os.path.exists(preset['import_to']): app.message( "Directory to import photo to do not exist or is not accessible." ) return database_folders = app.config.get('Database Directories', 'paths') database_folders = local_path(database_folders) if database_folders.strip(' '): databases = database_folders.split(';') else: databases = [] if preset['import_to'] not in databases: app.message("Please Set A Database To Import To.") return app.importing_screen.import_to = preset['import_to'] app.importing_screen.naming_method = preset['naming_method'] app.importing_screen.delete_originals = preset['delete_originals'] app.importing_screen.import_from = preset['import_from'] app.importing_screen.single_folder = preset['single_folder'] app.show_importing()
def __init__(self, **kwargs): super(ImportPresetArea, self).__init__(**kwargs) Clock.schedule_once(self.update_import_from) app = App.get_running_app() self.imports_dropdown = NormalDropDown() self.imports_dropdown.basic_animation = True database_folders = app.config.get('Database Directories', 'paths') database_folders = local_path(database_folders) if database_folders.strip(' '): databases = database_folders.split(';') else: databases = [] for database in databases: menu_button = MenuButton(text=database) menu_button.bind(on_release=self.change_import_to) self.imports_dropdown.add_widget(menu_button)
def album_load_all(self): """Scans the album directory, and tries to load all album .ini files into the app.albums variable.""" self.albums = [] album_directory = self.album_directory if not os.path.exists(album_directory): os.makedirs(album_directory) album_directory_contents = os.listdir(album_directory) for item in album_directory_contents: if os.path.splitext(item)[1] == '.ini': try: configfile = ConfigParser(interpolation=None) configfile.read(os.path.join(album_directory, item)) info = dict(configfile.items('info')) album_name = info['name'] album_description = info['description'] elements = configfile.items('photos') photos = [] for element in elements: photo_path = local_path(element[1]) if self.Photo.exist(photo_path): photos.append(photo_path) self.albums.append({'name': album_name, 'description': album_description, 'file': item, 'photos': photos}) except: pass def add_album(self, instance=None, answer="yes"): """Adds the current input album to the app albums.""" if answer == 'yes': if instance is not None: album = instance.ids['input'].text.strip(' ') if not album: self.dismiss_popup() return else: album_input = self.ids['newAlbum'] album = album_input.text album_input.text = '' app = App.get_running_app() app.album_make(album, '') self.create_treeview() self.dismiss_popup()
def drop_widget(self, fullpath, position, dropped_type, aspect=1): """Called when a widget is dropped after being dragged. Determines what to do with the widget based on where it is dropped. Arguments: fullpath: String, file location of the object being dragged. position: List of X,Y window coordinates that the widget is dropped on. dropped_type: String, describes the object's screenDatabase origin directory """ app = App.get_running_app() transfer_from = dropped_type left_database_holder = self.ids['leftDatabaseHolder'] left_database_area = self.ids['leftDatabaseArea'] right_database_holder = self.ids['rightDatabaseHolder'] right_database_area = self.ids['rightDatabaseArea'] transfer_to = None folders = [] if left_database_holder.collide_point(position[0], position[1]): if transfer_from != self.left_database: selects = right_database_area.selects for select in selects: folders.append(local_path(select['fullpath'])) transfer_to = self.left_database elif right_database_holder.collide_point(position[0], position[1]): if transfer_from != self.right_database: selects = left_database_area.selects for select in selects: folders.append(local_path(select['fullpath'])) transfer_to = self.right_database if transfer_to: if fullpath not in folders: folders.append(fullpath) #remove subfolders removes = [] for folder in folders: for fold in folders: if folder.startswith(fold + os.path.sep): removes.append(folder) break reduced_folders = [] for folder in folders: if folder not in removes: reduced_folders.append(folder) content = ConfirmPopup(text='Move These Folders From "' + transfer_from + '" to "' + transfer_to + '"?', yes_text='Move', no_text="Don't Move", warn_yes=True) content.bind(on_answer=self.move_folders) self.transfer_to = transfer_to self.transfer_from = transfer_from self.folders = reduced_folders self.popup = MoveConfirmPopup(title='Confirm Move', content=content, size_hint=(None, None), size=(app.popup_x, app.button_scale * 4), auto_dismiss=False) self.popup.open()