1# -*- coding: utf-8 -*- 2 3# Copyright (c) 2014 - 2021 Detlev Offenbach <detlev@die-offenbachs.de> 4# 5 6""" 7Module implementing a dialog to enter the data for the repo conversion. 8""" 9 10import os 11 12from PyQt5.QtCore import pyqtSlot 13from PyQt5.QtWidgets import QDialog, QDialogButtonBox 14 15from E5Gui.E5PathPicker import E5PathPickerModes 16 17from .Ui_LfConvertDataDialog import Ui_LfConvertDataDialog 18 19from . import getDefaults 20 21import Utilities 22 23 24class LfConvertDataDialog(QDialog, Ui_LfConvertDataDialog): 25 """ 26 Class implementing a dialog to enter the data for the repo conversion. 27 """ 28 def __init__(self, currentPath, mode, parent=None): 29 """ 30 Constructor 31 32 @param currentPath directory name of the current project (string) 33 @param mode dialog mode (string, one of 'largefiles' or 'normal') 34 @param parent reference to the parent widget (QWidget) 35 """ 36 super().__init__(parent) 37 self.setupUi(self) 38 39 self.newProjectPicker.setMode(E5PathPickerModes.DirectoryMode) 40 41 self.__defaults = getDefaults() 42 self.__currentPath = Utilities.toNativeSeparators(currentPath) 43 44 self.currentProjectLabel.setPath(currentPath) 45 self.newProjectPicker.setText(os.path.dirname(currentPath)) 46 47 self.lfFileSizeSpinBox.setValue(self.__defaults["minsize"]) 48 self.lfFilePatternsEdit.setText(" ".join(self.__defaults["pattern"])) 49 50 if mode == 'normal': 51 self.lfFileSizeSpinBox.setEnabled(False) 52 self.lfFilePatternsEdit.setEnabled(False) 53 54 msh = self.minimumSizeHint() 55 self.resize(max(self.width(), msh.width()), msh.height()) 56 57 @pyqtSlot(str) 58 def on_newProjectPicker_textChanged(self, txt): 59 """ 60 Private slot to handle editing of the new project directory. 61 62 @param txt new project directory name (string) 63 """ 64 self.buttonBox.button(QDialogButtonBox.StandardButton.Ok).setEnabled( 65 txt and Utilities.toNativeSeparators(txt) != os.path.dirname( 66 self.__currentPath)) 67 68 def getData(self): 69 """ 70 Public method to retrieve the entered data. 71 72 @return tuple containing the new project directory name (string), 73 minimum file size (integer) and file patterns (list of string) 74 """ 75 patterns = self.lfFilePatternsEdit.text().split() 76 if set(patterns) == set(self.__defaults["pattern"]): 77 patterns = [] 78 79 return ( 80 self.newProjectPicker.text(), 81 self.lfFileSizeSpinBox.value(), 82 patterns, 83 ) 84