MultiProject/AddProjectDialog.py

Sun, 05 Sep 2010 15:26:43 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Sun, 05 Sep 2010 15:26:43 +0200
branch
5_0_x
changeset 568
8cd88abbf946
parent 55
b5c84934de9c
child 608
d8fea1e76975
child 792
a13346916170
permissions
-rw-r--r--

Prepared new release.

# -*- coding: utf-8 -*-

# Copyright (c) 2008 - 2010 Detlev Offenbach <detlev@die-offenbachs.de>
#

"""
Module implementing the add project dialog.
"""

from PyQt4.QtGui import *
from PyQt4.QtCore import *

from E5Gui.E5Completers import E5FileCompleter

from .Ui_AddProjectDialog import Ui_AddProjectDialog

import Utilities

class AddProjectDialog(QDialog, Ui_AddProjectDialog):
    """
    Class implementing the add project dialog.
    """
    def __init__(self, parent = None, startdir = None, project = None):
        """
        Constructor
        
        @param parent parent widget of this dialog (QWidget)
        @param startdir start directory for the selection dialog (string)
        @param project dictionary containing project data
        """
        QDialog.__init__(self, parent)
        self.setupUi(self)
        
        self.fileCompleter = E5FileCompleter(self.filenameEdit)
        
        self.startdir = startdir
        
        self.__okButton = self.buttonBox.button(QDialogButtonBox.Ok)
        self.__okButton.setEnabled(False)
        
        if project is not None:
            self.setWindowTitle(self.trUtf8("Project Properties"))
            
            self.filenameEdit.setReadOnly(True)
            self.fileButton.setEnabled(False)
            
            self.nameEdit.setText(project['name'])
            self.filenameEdit.setText(project['file'])
            self.descriptionEdit.setPlainText(project['description'])
            self.masterCheckBox.setChecked(project['master'])
    
    @pyqtSlot()
    def on_fileButton_clicked(self):
        """
        Private slot to display a file selection dialog.
        """
        startdir = self.filenameEdit.text()
        if not startdir and self.startdir is not None:
            startdir = self.startdir
            projectFile = QFileDialog.getOpenFileName(
                self,
                self.trUtf8("Add Project"),
                startdir,
                self.trUtf8("Project Files (*.e4p *.e4pz)"))
        
        if projectFile:
            self.filenameEdit.setText(Utilities.toNativeSeparators(projectFile))
    
    def getData(self):
        """
        Public slot to retrieve the dialogs data.
        
        @return tuple of four values (string, string, boolean, string) giving the 
            project name, the name of the project file, a flag telling, whether
            the project shall be the master project and a short description
            for the project
        """
        return (self.nameEdit.text(), self.filenameEdit.text(), 
                self.masterCheckBox.isChecked(), 
                self.descriptionEdit.toPlainText())
    
    @pyqtSlot(str)
    def on_nameEdit_textChanged(self, p0):
        """
        Private slot called when the project name has changed.
        """
        self.__updateUi()
    
    @pyqtSlot(str)
    def on_filenameEdit_textChanged(self, p0):
        """
        Private slot called when the project filename has changed.
        """
        self.__updateUi()
    
    def __updateUi(self):
        """
        Private method to update the dialog.
        """
        self.__okButton.setEnabled(self.nameEdit.text() != "" and \
                                   self.filenameEdit.text() != "")

eric ide

mercurial