def __getDebugGroupbox( self ): " Creates the debug settings groupbox " dbgGroupbox = QGroupBox( self ) dbgGroupbox.setTitle( "Debugger" ) sizePolicy = QSizePolicy( QSizePolicy.Expanding, QSizePolicy.Preferred ) sizePolicy.setHorizontalStretch( 0 ) sizePolicy.setVerticalStretch( 0 ) sizePolicy.setHeightForWidth( dbgGroupbox.sizePolicy().hasHeightForWidth() ) dbgGroupbox.setSizePolicy( sizePolicy ) dbgLayout = QVBoxLayout( dbgGroupbox ) self.__reportExceptionCheckBox = QCheckBox( "Report &exceptions" ) self.__reportExceptionCheckBox.stateChanged.connect( self.__onReportExceptionChanged ) self.__traceInterpreterCheckBox = QCheckBox( "T&race interpreter libs" ) self.__traceInterpreterCheckBox.stateChanged.connect( self.__onTraceInterpreterChanged ) self.__stopAtFirstCheckBox = QCheckBox( "Stop at first &line" ) self.__stopAtFirstCheckBox.stateChanged.connect( self.__onStopAtFirstChanged ) self.__autoforkCheckBox = QCheckBox( "&Fork without asking" ) self.__autoforkCheckBox.stateChanged.connect(self.__onAutoforkChanged ) self.__debugChildCheckBox = QCheckBox( "Debu&g child process" ) self.__debugChildCheckBox.stateChanged.connect( self.__onDebugChild ) dbgLayout.addWidget( self.__reportExceptionCheckBox ) dbgLayout.addWidget( self.__traceInterpreterCheckBox ) dbgLayout.addWidget( self.__stopAtFirstCheckBox ) dbgLayout.addWidget( self.__autoforkCheckBox ) dbgLayout.addWidget( self.__debugChildCheckBox ) return dbgGroupbox
def __getProfileLimitsGroupbox(self): " Creates the profile limits groupbox " limitsGroupbox = QGroupBox(self) limitsGroupbox.setTitle("Profiler diagram limits") sizePolicy = QSizePolicy(QSizePolicy.Expanding, QSizePolicy.Preferred) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth( limitsGroupbox.sizePolicy().hasHeightForWidth()) limitsGroupbox.setSizePolicy(sizePolicy) layoutLimits = QGridLayout(limitsGroupbox) self.__nodeLimitEdit = QLineEdit() self.__nodeLimitEdit.textEdited.connect(self.__setRunButtonProps) self.__nodeLimitValidator = QDoubleValidator(0.0, 100.0, 2, self) self.__nodeLimitValidator.setNotation( QDoubleValidator.StandardNotation) self.__nodeLimitEdit.setValidator(self.__nodeLimitValidator) nodeLimitLabel = QLabel("Hide nodes below") self.__edgeLimitEdit = QLineEdit() self.__edgeLimitEdit.textEdited.connect(self.__setRunButtonProps) self.__edgeLimitValidator = QDoubleValidator(0.0, 100.0, 2, self) self.__edgeLimitValidator.setNotation( QDoubleValidator.StandardNotation) self.__edgeLimitEdit.setValidator(self.__edgeLimitValidator) edgeLimitLabel = QLabel("Hide edges below") layoutLimits.addWidget(nodeLimitLabel, 0, 0) layoutLimits.addWidget(self.__nodeLimitEdit, 0, 1) layoutLimits.addWidget(QLabel("%"), 0, 2) layoutLimits.addWidget(edgeLimitLabel, 1, 0) layoutLimits.addWidget(self.__edgeLimitEdit, 1, 1) layoutLimits.addWidget(QLabel("%"), 1, 2) return limitsGroupbox
def __getTermGroupbox(self): " Creates the term groupbox " termGroupbox = QGroupBox(self) sizePolicy = QSizePolicy(QSizePolicy.Expanding, QSizePolicy.Preferred) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth( termGroupbox.sizePolicy().hasHeightForWidth()) termGroupbox.setSizePolicy(sizePolicy) layoutTerm = QVBoxLayout(termGroupbox) self.__redirectRButton = QRadioButton(termGroupbox) self.__redirectRButton.setText("&Redirect to IDE") self.__redirectRButton.toggled.connect(self.__redirectedChanged) layoutTerm.addWidget(self.__redirectRButton) self.__autoRButton = QRadioButton(termGroupbox) self.__autoRButton.setText("Aut&o detection") layoutTerm.addWidget(self.__autoRButton) self.__konsoleRButton = QRadioButton(termGroupbox) self.__konsoleRButton.setText("Default &KDE konsole") layoutTerm.addWidget(self.__konsoleRButton) self.__gnomeRButton = QRadioButton(termGroupbox) self.__gnomeRButton.setText("gnome-&terminal") layoutTerm.addWidget(self.__gnomeRButton) self.__xtermRButton = QRadioButton(termGroupbox) self.__xtermRButton.setText("&xterm") layoutTerm.addWidget(self.__xtermRButton) return termGroupbox
def __getProfileLimitsGroupbox( self ): " Creates the profile limits groupbox " limitsGroupbox = QGroupBox( self ) limitsGroupbox.setTitle( "Profiler diagram limits" ) sizePolicy = QSizePolicy( QSizePolicy.Expanding, QSizePolicy.Preferred ) sizePolicy.setHorizontalStretch( 0 ) sizePolicy.setVerticalStretch( 0 ) sizePolicy.setHeightForWidth( limitsGroupbox.sizePolicy().hasHeightForWidth() ) limitsGroupbox.setSizePolicy( sizePolicy ) layoutLimits = QGridLayout( limitsGroupbox ) self.__nodeLimitEdit = QLineEdit() self.__nodeLimitEdit.textEdited.connect( self.__setRunButtonProps ) self.__nodeLimitValidator = QDoubleValidator( 0.0, 100.0, 2, self ) self.__nodeLimitValidator.setNotation( QDoubleValidator.StandardNotation ) self.__nodeLimitEdit.setValidator( self.__nodeLimitValidator ) nodeLimitLabel = QLabel( "Hide nodes below" ) self.__edgeLimitEdit = QLineEdit() self.__edgeLimitEdit.textEdited.connect( self.__setRunButtonProps ) self.__edgeLimitValidator = QDoubleValidator( 0.0, 100.0, 2, self ) self.__edgeLimitValidator.setNotation( QDoubleValidator.StandardNotation ) self.__edgeLimitEdit.setValidator( self.__edgeLimitValidator ) edgeLimitLabel = QLabel( "Hide edges below" ) layoutLimits.addWidget( nodeLimitLabel, 0, 0 ) layoutLimits.addWidget( self.__nodeLimitEdit, 0, 1 ) layoutLimits.addWidget( QLabel( "%" ), 0, 2 ) layoutLimits.addWidget( edgeLimitLabel, 1, 0 ) layoutLimits.addWidget( self.__edgeLimitEdit, 1, 1 ) layoutLimits.addWidget( QLabel( "%" ), 1, 2 ) return limitsGroupbox
def __getDebugGroupbox(self): " Creates the debug settings groupbox " dbgGroupbox = QGroupBox(self) dbgGroupbox.setTitle("Debugger") sizePolicy = QSizePolicy(QSizePolicy.Expanding, QSizePolicy.Preferred) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth( dbgGroupbox.sizePolicy().hasHeightForWidth()) dbgGroupbox.setSizePolicy(sizePolicy) dbgLayout = QVBoxLayout(dbgGroupbox) self.__reportExceptionCheckBox = QCheckBox("Report &exceptions") self.__reportExceptionCheckBox.stateChanged.connect( self.__onReportExceptionChanged) self.__traceInterpreterCheckBox = QCheckBox("T&race interpreter libs") self.__traceInterpreterCheckBox.stateChanged.connect( self.__onTraceInterpreterChanged) self.__stopAtFirstCheckBox = QCheckBox("Stop at first &line") self.__stopAtFirstCheckBox.stateChanged.connect( self.__onStopAtFirstChanged) self.__autoforkCheckBox = QCheckBox("&Fork without asking") self.__autoforkCheckBox.stateChanged.connect(self.__onAutoforkChanged) self.__debugChildCheckBox = QCheckBox("Debu&g child process") self.__debugChildCheckBox.stateChanged.connect(self.__onDebugChild) dbgLayout.addWidget(self.__reportExceptionCheckBox) dbgLayout.addWidget(self.__traceInterpreterCheckBox) dbgLayout.addWidget(self.__stopAtFirstCheckBox) dbgLayout.addWidget(self.__autoforkCheckBox) dbgLayout.addWidget(self.__debugChildCheckBox) return dbgGroupbox
def __getTermGroupbox( self ): " Creates the term groupbox " termGroupbox = QGroupBox( self ) sizePolicy = QSizePolicy( QSizePolicy.Expanding, QSizePolicy.Preferred ) sizePolicy.setHorizontalStretch( 0 ) sizePolicy.setVerticalStretch( 0 ) sizePolicy.setHeightForWidth( termGroupbox.sizePolicy().hasHeightForWidth() ) termGroupbox.setSizePolicy( sizePolicy ) layoutTerm = QVBoxLayout( termGroupbox ) self.__redirectRButton = QRadioButton( termGroupbox ) self.__redirectRButton.setText( "&Redirect to IDE" ) self.__redirectRButton.toggled.connect( self.__redirectedChanged ) layoutTerm.addWidget( self.__redirectRButton ) self.__autoRButton = QRadioButton( termGroupbox ) self.__autoRButton.setText( "Aut&o detection" ) layoutTerm.addWidget( self.__autoRButton ) self.__konsoleRButton = QRadioButton( termGroupbox ) self.__konsoleRButton.setText( "Default &KDE konsole" ) layoutTerm.addWidget( self.__konsoleRButton ) self.__gnomeRButton = QRadioButton( termGroupbox ) self.__gnomeRButton.setText( "gnome-&terminal" ) layoutTerm.addWidget( self.__gnomeRButton ) self.__xtermRButton = QRadioButton( termGroupbox ) self.__xtermRButton.setText( "&xterm" ) layoutTerm.addWidget( self.__xtermRButton ) return termGroupbox
def __getIDEWideGroupbox( self ): " Creates the IDE wide groupbox " ideGroupbox = QGroupBox( self ) ideGroupbox.setTitle( "IDE Wide Settings" ) sizePolicy = QSizePolicy( QSizePolicy.Expanding, QSizePolicy.Preferred ) sizePolicy.setHorizontalStretch( 0 ) sizePolicy.setVerticalStretch( 0 ) sizePolicy.setHeightForWidth( ideGroupbox.sizePolicy().hasHeightForWidth() ) ideGroupbox.setSizePolicy( sizePolicy ) layoutIDE = QHBoxLayout( ideGroupbox ) termGroupbox = self.__getTermGroupbox() termGroupbox.setTitle( "Terminal to run in" ) layoutIDE.addWidget( termGroupbox ) if self.__action == "profile": # Profile version of the dialog limitsGroupbox = self.__getProfileLimitsGroupbox() layoutIDE.addWidget( limitsGroupbox ) else: # Debug version of the dialog dbgGroupbox = self.__getDebugGroupbox() layoutIDE.addWidget( dbgGroupbox ) return ideGroupbox
def __getIDEWideGroupbox(self): " Creates the IDE wide groupbox " ideGroupbox = QGroupBox(self) ideGroupbox.setTitle("IDE Wide Settings") sizePolicy = QSizePolicy(QSizePolicy.Expanding, QSizePolicy.Preferred) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth( ideGroupbox.sizePolicy().hasHeightForWidth()) ideGroupbox.setSizePolicy(sizePolicy) layoutIDE = QHBoxLayout(ideGroupbox) termGroupbox = self.__getTermGroupbox() termGroupbox.setTitle("Terminal to run in") layoutIDE.addWidget(termGroupbox) if self.__action == "profile": # Profile version of the dialog limitsGroupbox = self.__getProfileLimitsGroupbox() layoutIDE.addWidget(limitsGroupbox) else: # Debug version of the dialog dbgGroupbox = self.__getDebugGroupbox() layoutIDE.addWidget(dbgGroupbox) return ideGroupbox
def __createLayout(self): """ Creates the dialog layout """ self.resize(450, 150) self.setSizeGripEnabled(True) verticalLayout = QVBoxLayout(self) whereGroupbox = QGroupBox(self) whereGroupbox.setTitle("Garbage collector message destination") sizePolicy = QSizePolicy(QSizePolicy.Expanding, QSizePolicy.Preferred) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth( whereGroupbox.sizePolicy().hasHeightForWidth()) whereGroupbox.setSizePolicy(sizePolicy) layoutWhere = QVBoxLayout(whereGroupbox) self.__silentRButton = QRadioButton(whereGroupbox) self.__silentRButton.setText("Silent") layoutWhere.addWidget(self.__silentRButton) self.__statusbarRButton = QRadioButton(whereGroupbox) self.__statusbarRButton.setText("Status bar") layoutWhere.addWidget(self.__statusbarRButton) self.__logtabRButton = QRadioButton(whereGroupbox) self.__logtabRButton.setText("Log tab") layoutWhere.addWidget(self.__logtabRButton) verticalLayout.addWidget(whereGroupbox) buttonBox = QDialogButtonBox(self) buttonBox.setOrientation(Qt.Horizontal) buttonBox.setStandardButtons(QDialogButtonBox.Ok | QDialogButtonBox.Cancel) self.__OKButton = buttonBox.button(QDialogButtonBox.Ok) self.__OKButton.setDefault(True) buttonBox.accepted.connect(self.accept) buttonBox.rejected.connect(self.close) verticalLayout.addWidget(buttonBox) return
def __createLayout( self ): """ Creates the dialog layout """ self.resize( 450, 150 ) self.setSizeGripEnabled( True ) verticalLayout = QVBoxLayout( self ) whereGroupbox = QGroupBox( self ) whereGroupbox.setTitle( "Garbage collector message destination" ) sizePolicy = QSizePolicy( QSizePolicy.Expanding, QSizePolicy.Preferred ) sizePolicy.setHorizontalStretch( 0 ) sizePolicy.setVerticalStretch( 0 ) sizePolicy.setHeightForWidth( whereGroupbox.sizePolicy().hasHeightForWidth() ) whereGroupbox.setSizePolicy( sizePolicy ) layoutWhere = QVBoxLayout( whereGroupbox ) self.__silentRButton = QRadioButton( whereGroupbox ) self.__silentRButton.setText( "Silent" ) layoutWhere.addWidget( self.__silentRButton ) self.__statusbarRButton = QRadioButton( whereGroupbox ) self.__statusbarRButton.setText( "Status bar" ) layoutWhere.addWidget( self.__statusbarRButton ) self.__logtabRButton = QRadioButton( whereGroupbox ) self.__logtabRButton.setText( "Log tab" ) layoutWhere.addWidget( self.__logtabRButton ) verticalLayout.addWidget( whereGroupbox ) buttonBox = QDialogButtonBox( self ) buttonBox.setOrientation( Qt.Horizontal ) buttonBox.setStandardButtons( QDialogButtonBox.Ok | QDialogButtonBox.Cancel ) self.__OKButton = buttonBox.button( QDialogButtonBox.Ok ) self.__OKButton.setDefault( True ) buttonBox.accepted.connect( self.accept ) buttonBox.rejected.connect( self.close ) verticalLayout.addWidget( buttonBox ) return
def __createLayout(self, action): """ Creates the dialog layout """ self.resize(650, 300) self.setSizeGripEnabled(True) # Top level layout layout = QVBoxLayout(self) # Cmd line arguments argsLabel = QLabel("Command line arguments") self.__argsEdit = QLineEdit() self.__argsEdit.textChanged.connect(self.__argsChanged) argsLayout = QHBoxLayout() argsLayout.addWidget(argsLabel) argsLayout.addWidget(self.__argsEdit) layout.addLayout(argsLayout) # Working directory workDirGroupbox = QGroupBox(self) workDirGroupbox.setTitle("Working directory") sizePolicy = QSizePolicy(QSizePolicy.Expanding, QSizePolicy.Preferred) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth( \ workDirGroupbox.sizePolicy().hasHeightForWidth() ) workDirGroupbox.setSizePolicy(sizePolicy) gridLayoutWD = QGridLayout(workDirGroupbox) self.__scriptWDRButton = QRadioButton(workDirGroupbox) self.__scriptWDRButton.setText("&Use script location") gridLayoutWD.addWidget(self.__scriptWDRButton, 0, 0) self.__scriptWDRButton.clicked.connect(self.__scriptWDirClicked) self.__dirRButton = QRadioButton(workDirGroupbox) self.__dirRButton.setText("Select &directory") gridLayoutWD.addWidget(self.__dirRButton, 1, 0) self.__dirRButton.clicked.connect(self.__dirClicked) self.__dirEdit = QLineEdit(workDirGroupbox) gridLayoutWD.addWidget(self.__dirEdit, 1, 1) self.__dirEdit.textChanged.connect(self.__workingDirChanged) self.__dirSelectButton = QPushButton(workDirGroupbox) self.__dirSelectButton.setText("...") gridLayoutWD.addWidget(self.__dirSelectButton, 1, 2) self.__dirSelectButton.clicked.connect(self.__selectDirClicked) layout.addWidget(workDirGroupbox) # Environment envGroupbox = QGroupBox(self) envGroupbox.setTitle("Environment") sizePolicy = QSizePolicy(QSizePolicy.Expanding, QSizePolicy.Preferred) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth( \ envGroupbox.sizePolicy().hasHeightForWidth() ) envGroupbox.setSizePolicy(sizePolicy) layoutEnv = QVBoxLayout(envGroupbox) self.__inheritParentRButton = QRadioButton(envGroupbox) self.__inheritParentRButton.setText("Inherit &parent") self.__inheritParentRButton.clicked.connect(self.__inhClicked) layoutEnv.addWidget(self.__inheritParentRButton) self.__inheritParentPlusRButton = QRadioButton(envGroupbox) self.__inheritParentPlusRButton.setText( "Inherit parent and add/&modify") self.__inheritParentPlusRButton.clicked.connect(self.__inhPlusClicked) layoutEnv.addWidget(self.__inheritParentPlusRButton) hInhPlusLayout = QHBoxLayout() self.__inhPlusEnvTable = QTreeWidget() self.__inhPlusEnvTable.itemActivated.connect( self.__inhPlusItemActivated) self.__tuneTable(self.__inhPlusEnvTable) hInhPlusLayout.addWidget(self.__inhPlusEnvTable) vInhPlusLayout = QVBoxLayout() self.__addInhButton = QPushButton() self.__addInhButton.clicked.connect(self.__addInhClicked) self.__addInhButton.setText('Add') vInhPlusLayout.addWidget(self.__addInhButton) self.__delInhButton = QPushButton() self.__delInhButton.clicked.connect(self.__delInhClicked) self.__delInhButton.setText('Delete') vInhPlusLayout.addWidget(self.__delInhButton) self.__editInhButton = QPushButton() self.__editInhButton.clicked.connect(self.__editInhClicked) self.__editInhButton.setText("Edit") vInhPlusLayout.addWidget(self.__editInhButton) hInhPlusLayout.addLayout(vInhPlusLayout) layoutEnv.addLayout(hInhPlusLayout) self.__specificRButton = QRadioButton(envGroupbox) self.__specificRButton.setText("&Specific") self.__specificRButton.clicked.connect(self.__specClicked) layoutEnv.addWidget(self.__specificRButton) hSpecLayout = QHBoxLayout() self.__specEnvTable = QTreeWidget() self.__specEnvTable.itemActivated.connect(self.__specItemActivated) self.__tuneTable(self.__specEnvTable) hSpecLayout.addWidget(self.__specEnvTable) vSpecLayout = QVBoxLayout() self.__addSpecButton = QPushButton() self.__addSpecButton.clicked.connect(self.__addSpecClicked) self.__addSpecButton.setText('Add') vSpecLayout.addWidget(self.__addSpecButton) self.__delSpecButton = QPushButton() self.__delSpecButton.clicked.connect(self.__delSpecClicked) self.__delSpecButton.setText('Delete') vSpecLayout.addWidget(self.__delSpecButton) self.__editSpecButton = QPushButton() self.__editSpecButton.clicked.connect(self.__editSpecClicked) self.__editSpecButton.setText("Edit") vSpecLayout.addWidget(self.__editSpecButton) hSpecLayout.addLayout(vSpecLayout) layoutEnv.addLayout(hSpecLayout) layout.addWidget(envGroupbox) # Terminal and profile limits if self.__action in ["profile", "debug"]: layout.addWidget(self.__getIDEWideGroupbox()) else: termGroupbox = self.__getTermGroupbox() termGroupbox.setTitle("Terminal to run in (IDE wide setting)") layout.addWidget(termGroupbox) # Close checkbox self.__closeCheckBox = QCheckBox("&Close terminal upon " "successful completion") self.__closeCheckBox.stateChanged.connect(self.__onCloseChanged) layout.addWidget(self.__closeCheckBox) # Buttons at the bottom buttonBox = QDialogButtonBox(self) buttonBox.setOrientation(Qt.Horizontal) buttonBox.setStandardButtons(QDialogButtonBox.Cancel) self.__runButton = buttonBox.addButton(action, QDialogButtonBox.AcceptRole) self.__runButton.setDefault(True) self.__runButton.clicked.connect(self.onAccept) layout.addWidget(buttonBox) buttonBox.rejected.connect(self.close) return
def __createLayout(self): """ Creates the dialog layout """ self.resize(600, 300) self.setSizeGripEnabled(True) verticalLayout = QVBoxLayout(self) gridLayout = QGridLayout() # Combo box for the text to search findLabel = QLabel(self) findLabel.setText("Find text:") self.findCombo = QComboBox(self) self.__tuneCombo(self.findCombo) self.findCombo.lineEdit().setToolTip( "Regular expression to search for") self.findCombo.editTextChanged.connect(self.__someTextChanged) gridLayout.addWidget(findLabel, 0, 0, 1, 1) gridLayout.addWidget(self.findCombo, 0, 1, 1, 1) verticalLayout.addLayout(gridLayout) # Check boxes horizontalCBLayout = QHBoxLayout() self.caseCheckBox = QCheckBox(self) self.caseCheckBox.setText("Match &case") horizontalCBLayout.addWidget(self.caseCheckBox) self.wordCheckBox = QCheckBox(self) self.wordCheckBox.setText("Match whole &word") horizontalCBLayout.addWidget(self.wordCheckBox) self.regexpCheckBox = QCheckBox(self) self.regexpCheckBox.setText("Regular &expression") horizontalCBLayout.addWidget(self.regexpCheckBox) verticalLayout.addLayout(horizontalCBLayout) # Files groupbox filesGroupbox = QGroupBox(self) filesGroupbox.setTitle("Find in") sizePolicy = QSizePolicy(QSizePolicy.Expanding, QSizePolicy.Preferred) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth( filesGroupbox.sizePolicy().hasHeightForWidth()) filesGroupbox.setSizePolicy(sizePolicy) gridLayoutFG = QGridLayout(filesGroupbox) self.projectRButton = QRadioButton(filesGroupbox) self.projectRButton.setText("&Project") gridLayoutFG.addWidget(self.projectRButton, 0, 0) self.projectRButton.clicked.connect(self.__projectClicked) self.openFilesRButton = QRadioButton(filesGroupbox) self.openFilesRButton.setText("&Opened files only") gridLayoutFG.addWidget(self.openFilesRButton, 1, 0) self.openFilesRButton.clicked.connect(self.__openFilesOnlyClicked) self.dirRButton = QRadioButton(filesGroupbox) self.dirRButton.setText("&Directory tree") gridLayoutFG.addWidget(self.dirRButton, 2, 0) self.dirRButton.clicked.connect(self.__dirClicked) self.dirEditCombo = QComboBox(filesGroupbox) self.__tuneCombo(self.dirEditCombo) self.dirEditCombo.lineEdit().setToolTip("Directory to search in") gridLayoutFG.addWidget(self.dirEditCombo, 2, 1) self.dirEditCombo.editTextChanged.connect(self.__someTextChanged) self.dirSelectButton = QPushButton(filesGroupbox) self.dirSelectButton.setText("...") gridLayoutFG.addWidget(self.dirSelectButton, 2, 2) self.dirSelectButton.clicked.connect(self.__selectDirClicked) filterLabel = QLabel(filesGroupbox) filterLabel.setText("Files filter:") gridLayoutFG.addWidget(filterLabel, 3, 0) self.filterCombo = QComboBox(filesGroupbox) self.__tuneCombo(self.filterCombo) self.filterCombo.lineEdit().setToolTip("File names regular expression") gridLayoutFG.addWidget(self.filterCombo, 3, 1) self.filterCombo.editTextChanged.connect(self.__someTextChanged) verticalLayout.addWidget(filesGroupbox) # File label self.fileLabel = FitPathLabel(self) self.fileLabel.setSizePolicy(QSizePolicy.Ignored, QSizePolicy.Fixed) verticalLayout.addWidget(self.fileLabel) # Progress bar self.progressBar = QProgressBar(self) self.progressBar.setValue(0) self.progressBar.setOrientation(Qt.Horizontal) verticalLayout.addWidget(self.progressBar) # Buttons at the bottom buttonBox = QDialogButtonBox(self) buttonBox.setOrientation(Qt.Horizontal) buttonBox.setStandardButtons(QDialogButtonBox.Cancel) self.findButton = buttonBox.addButton("Find", QDialogButtonBox.AcceptRole) self.findButton.setDefault(True) self.findButton.clicked.connect(self.__process) verticalLayout.addWidget(buttonBox) buttonBox.rejected.connect(self.__onClose) return
def __createProjectSpecific( self ): " Creates the project specific part " widget = QWidget() verticalLayout = QVBoxLayout( widget ) infoLabel = QLabel( "Note: the settings below are used " "only for the specific project." ) verticalLayout.addWidget( infoLabel ) # Authorization group box authGroupbox = QGroupBox( self ) authGroupbox.setTitle( "Authorization" ) sizePolicy = QSizePolicy( QSizePolicy.Expanding, QSizePolicy.Preferred ) sizePolicy.setHorizontalStretch( 0 ) sizePolicy.setVerticalStretch( 0 ) sizePolicy.setHeightForWidth( authGroupbox.sizePolicy().hasHeightForWidth() ) authGroupbox.setSizePolicy( sizePolicy ) layoutAuth = QVBoxLayout( authGroupbox ) self.__projectAuthExtRButton = QRadioButton( "External", authGroupbox ) self.__projectAuthExtRButton.clicked.connect( self.__projectAuthChanged ) layoutAuth.addWidget( self.__projectAuthExtRButton ) self.__projectAuthPasswdRButton = QRadioButton( "Use user name / password", authGroupbox ) self.__projectAuthPasswdRButton.clicked.connect( self.__projectAuthChanged ) layoutAuth.addWidget( self.__projectAuthPasswdRButton ) upLayout = QGridLayout() self.__projectUser = QLineEdit() self.__projectUser.setToolTip( "Attention: user name is " "saved unencrypted" ) self.__projectPasswd = QLineEdit() self.__projectPasswd.setToolTip( "Attention: password is " "saved unencrypted" ) spacer = QWidget() spacer.setFixedWidth( 16 ) upLayout.addWidget( spacer, 0, 0 ) upLayout.addWidget( QLabel( "User name" ), 0, 1 ) upLayout.addWidget( self.__projectUser, 0, 2 ) upLayout.addWidget( QLabel( "Password" ), 1, 1 ) upLayout.addWidget( self.__projectPasswd, 1, 2 ) layoutAuth.addLayout( upLayout ) # Update status group box updateGroupbox = QGroupBox( self ) updateGroupbox.setTitle( "Update status policy" ) sizePolicy = QSizePolicy( QSizePolicy.Expanding, QSizePolicy.Preferred ) sizePolicy.setHorizontalStretch( 0 ) sizePolicy.setVerticalStretch( 0 ) sizePolicy.setHeightForWidth( updateGroupbox.sizePolicy().hasHeightForWidth() ) updateGroupbox.setSizePolicy( sizePolicy ) layoutUpdate = QVBoxLayout( updateGroupbox ) self.__projectReposRButton = QRadioButton( "Check repository", updateGroupbox ) layoutUpdate.addWidget( self.__projectReposRButton ) self.__projectLocalRButton = QRadioButton( "Local only", updateGroupbox ) layoutUpdate.addWidget( self.__projectLocalRButton ) verticalLayout.addWidget( authGroupbox ) verticalLayout.addWidget( updateGroupbox ) return widget
def __createLayout( self ): " Creates the dialog layout " self.resize( 640, 480 ) self.setSizeGripEnabled( True ) vboxLayout = QVBoxLayout( self ) hLayout = QHBoxLayout() self.__propsView = QTreeWidget() self.__propsView.setAlternatingRowColors( True ) self.__propsView.setRootIsDecorated( False ) self.__propsView.setItemsExpandable( False ) self.__propsView.setSortingEnabled( True ) self.__propsView.setItemDelegate( NoOutlineHeightDelegate( 4 ) ) self.__propsView.itemSelectionChanged.connect( self.__propsSelectionChanged ) propsViewHeader = QTreeWidgetItem( [ "Property Name", "Property Value" ] ) self.__propsView.setHeaderItem( propsViewHeader ) self.__propsView.header().setSortIndicator( 0, Qt.DescendingOrder ) hLayout.addWidget( self.__propsView ) self.__delButton = QToolButton() self.__delButton.setText( "Delete" ) self.__delButton.setFocusPolicy( Qt.NoFocus ) self.__delButton.setEnabled( False ) self.__delButton.clicked.connect( self.__onDel ) hLayout.addWidget( self.__delButton, 0, Qt.AlignBottom ) vboxLayout.addLayout( hLayout ) # Set property part setGroupbox = QGroupBox( self ) setGroupbox.setTitle( "Set Property" ) setLayout = QGridLayout( setGroupbox ) setLayout.addWidget( QLabel( "Name" ), 0, 0, Qt.AlignTop | Qt.AlignRight ) setLayout.addWidget( QLabel( "Value" ), 1, 0, Qt.AlignTop | Qt.AlignRight ) self.__nameEdit = QLineEdit() self.__nameEdit.textChanged.connect( self.__nameChanged ) setLayout.addWidget( self.__nameEdit, 0, 1 ) self.__valueEdit = QTextEdit() self.__valueEdit.setAcceptRichText( False ) self.__valueEdit.textChanged.connect( self.__valueChanged ) metrics = QFontMetrics( self.__valueEdit.font() ) rect = metrics.boundingRect( "X" ) self.__valueEdit.setFixedHeight( rect.height() * 4 + 5 ) setLayout.addWidget( self.__valueEdit, 1, 1 ) self.__setButton = QToolButton() self.__setButton.setText( "Set" ) self.__setButton.setFocusPolicy( Qt.NoFocus ) self.__setButton.setEnabled( False ) self.__setButton.clicked.connect( self.__onSet ) setLayout.addWidget( self.__setButton, 1, 2, Qt.AlignBottom | Qt.AlignHCenter ) sizePolicy = QSizePolicy( QSizePolicy.Expanding, QSizePolicy.Maximum ) sizePolicy.setHorizontalStretch( 0 ) sizePolicy.setVerticalStretch( 0 ) sizePolicy.setHeightForWidth( setGroupbox.sizePolicy().hasHeightForWidth() ) setGroupbox.setSizePolicy( sizePolicy ) vboxLayout.addWidget( setGroupbox ) # Buttons at the bottom buttonBox = QDialogButtonBox( self ) buttonBox.setOrientation( Qt.Horizontal ) buttonBox.setStandardButtons( QDialogButtonBox.Ok ) buttonBox.button( QDialogButtonBox.Ok ).setDefault( True ) buttonBox.accepted.connect( self.close ) vboxLayout.addWidget( buttonBox ) return
def __createLayout( self ): """ Creates the dialog layout """ self.resize( 600, 300 ) self.setSizeGripEnabled( True ) verticalLayout = QVBoxLayout( self ) gridLayout = QGridLayout() # Combo box for the text to search findLabel = QLabel( self ) findLabel.setText( "Find text:" ) self.findCombo = QComboBox( self ) self.__tuneCombo( self.findCombo ) self.findCombo.lineEdit().setToolTip( "Regular expression to search for" ) self.findCombo.editTextChanged.connect( self.__someTextChanged ) gridLayout.addWidget( findLabel, 0, 0, 1, 1 ) gridLayout.addWidget( self.findCombo, 0, 1, 1, 1 ) verticalLayout.addLayout( gridLayout ) # Check boxes horizontalCBLayout = QHBoxLayout() self.caseCheckBox = QCheckBox( self ) self.caseCheckBox.setText( "Match &case" ) horizontalCBLayout.addWidget( self.caseCheckBox ) self.wordCheckBox = QCheckBox( self ) self.wordCheckBox.setText( "Match whole &word" ) horizontalCBLayout.addWidget( self.wordCheckBox ) self.regexpCheckBox = QCheckBox( self ) self.regexpCheckBox.setText( "Regular &expression" ) horizontalCBLayout.addWidget( self.regexpCheckBox ) verticalLayout.addLayout( horizontalCBLayout ) # Files groupbox filesGroupbox = QGroupBox( self ) filesGroupbox.setTitle( "Find in" ) sizePolicy = QSizePolicy( QSizePolicy.Expanding, QSizePolicy.Preferred ) sizePolicy.setHorizontalStretch( 0 ) sizePolicy.setVerticalStretch( 0 ) sizePolicy.setHeightForWidth( filesGroupbox.sizePolicy().hasHeightForWidth() ) filesGroupbox.setSizePolicy( sizePolicy ) gridLayoutFG = QGridLayout( filesGroupbox ) self.projectRButton = QRadioButton( filesGroupbox ) self.projectRButton.setText( "&Project" ) gridLayoutFG.addWidget( self.projectRButton, 0, 0 ) self.projectRButton.clicked.connect( self.__projectClicked ) self.openFilesRButton = QRadioButton( filesGroupbox ) self.openFilesRButton.setText( "&Opened files only" ) gridLayoutFG.addWidget( self.openFilesRButton, 1, 0 ) self.openFilesRButton.clicked.connect( self.__openFilesOnlyClicked ) self.dirRButton = QRadioButton( filesGroupbox ) self.dirRButton.setText( "&Directory tree" ) gridLayoutFG.addWidget( self.dirRButton, 2, 0 ) self.dirRButton.clicked.connect( self.__dirClicked ) self.dirEditCombo = QComboBox( filesGroupbox ) self.__tuneCombo( self.dirEditCombo ) self.dirEditCombo.lineEdit().setToolTip( "Directory to search in" ) gridLayoutFG.addWidget( self.dirEditCombo, 2, 1 ) self.dirEditCombo.editTextChanged.connect( self.__someTextChanged ) self.dirSelectButton = QPushButton( filesGroupbox ) self.dirSelectButton.setText( "..." ) gridLayoutFG.addWidget( self.dirSelectButton, 2, 2 ) self.dirSelectButton.clicked.connect( self.__selectDirClicked ) filterLabel = QLabel( filesGroupbox ) filterLabel.setText( "Files filter:" ) gridLayoutFG.addWidget( filterLabel, 3, 0 ) self.filterCombo = QComboBox( filesGroupbox ) self.__tuneCombo( self.filterCombo ) self.filterCombo.lineEdit().setToolTip( "File names regular expression" ) gridLayoutFG.addWidget( self.filterCombo, 3, 1 ) self.filterCombo.editTextChanged.connect( self.__someTextChanged ) verticalLayout.addWidget( filesGroupbox ) # File label self.fileLabel = FitPathLabel( self ) self.fileLabel.setSizePolicy( QSizePolicy.Ignored, QSizePolicy.Fixed ) verticalLayout.addWidget( self.fileLabel ) # Progress bar self.progressBar = QProgressBar( self ) self.progressBar.setValue( 0 ) self.progressBar.setOrientation( Qt.Horizontal ) verticalLayout.addWidget( self.progressBar ) # Buttons at the bottom buttonBox = QDialogButtonBox( self ) buttonBox.setOrientation( Qt.Horizontal ) buttonBox.setStandardButtons( QDialogButtonBox.Cancel ) self.findButton = buttonBox.addButton( "Find", QDialogButtonBox.AcceptRole ) self.findButton.setDefault( True ) self.findButton.clicked.connect( self.__process ) verticalLayout.addWidget( buttonBox ) buttonBox.rejected.connect( self.__onClose ) return
def __createLayout( self ): """ Creates the dialog layout """ self.resize( 700, 300 ) self.setSizeGripEnabled( True ) layout = QVBoxLayout( self ) gridLayout = QGridLayout() # Columns colsLabel = QLabel( "Columns" ) self.__colsEdit = QLineEdit() self.__colsEdit.setText( str( self.__settings.settings[ "COL_LIMIT" ] ) ) self.__colsEdit.setToolTip( self.__settings.getDescription( "COL_LIMIT" ) ) self.__colsEdit.textChanged.connect( self.__validate ) gridLayout.addWidget( colsLabel, 0, 0, 1, 1 ) gridLayout.addWidget( self.__colsEdit, 0, 1, 1, 1 ) font = self.__colsEdit.font() font.setFamily( GlobalData().skin.baseMonoFontFace ) self.__colsEdit.setFont( font ) # Assignment assignmentLabel = QLabel( "Assignment" ) self.__assignmentEdit = QLineEdit() self.__assignmentEdit.setText( self.__settings.settings[ "ASSIGNMENT" ] ) self.__assignmentEdit.setToolTip( self.__settings.getDescription( "ASSIGNMENT" ) ) self.__assignmentEdit.textChanged.connect( self.__validate ) gridLayout.addWidget( assignmentLabel, 0, 3, 1, 1 ) gridLayout.addWidget( self.__assignmentEdit, 0, 4, 1, 1 ) self.__assignmentEdit.setFont( font ) # Function parameters assignment funcAssignLabel = QLabel( "Function params\nassignment" ) self.__funcAssignEdit = QLineEdit() self.__funcAssignEdit.setText( self.__settings.settings[ "FUNCTION_PARAM_ASSIGNMENT" ] ) self.__funcAssignEdit.setToolTip( self.__settings.getDescription( "FUNCTION_PARAM_ASSIGNMENT" ) ) self.__funcAssignEdit.textChanged.connect( self.__validate ) gridLayout.addWidget( funcAssignLabel, 1, 0, 1, 1 ) gridLayout.addWidget( self.__funcAssignEdit, 1, 1, 1, 1 ) self.__funcAssignEdit.setFont( font ) # Dictionary separator dictSepLabel = QLabel( "Dictionary separator" ) self.__dictSepEdit = QLineEdit() self.__dictSepEdit.setText( self.__settings.settings[ "DICT_COLON" ] ) self.__dictSepEdit.setToolTip( self.__settings.getDescription( "DICT_COLON" ) ) self.__dictSepEdit.textChanged.connect( self.__validate ) gridLayout.addWidget( dictSepLabel, 1, 3, 1, 1 ) gridLayout.addWidget( self.__dictSepEdit, 1, 4, 1, 1 ) self.__dictSepEdit.setFont( font ) # Slice separator sliceSepLabel = QLabel( "Slice separator" ) self.__sliceSepEdit = QLineEdit() self.__sliceSepEdit.setText( self.__settings.settings[ "SLICE_COLON" ] ) self.__sliceSepEdit.setToolTip( self.__settings.getDescription( "SLICE_COLON" ) ) self.__sliceSepEdit.textChanged.connect( self.__validate ) gridLayout.addWidget( sliceSepLabel, 2, 0, 1, 1 ) gridLayout.addWidget( self.__sliceSepEdit, 2, 1, 1, 1 ) self.__sliceSepEdit.setFont( font ) # Interpreter inLabel = QLabel( "Interpreter" ) self.__inEdit = QLineEdit() self.__inEdit.setText( self.__settings.settings[ "SHEBANG" ] ) self.__inEdit.setToolTip( self.__settings.getDescription( "SHEBANG" ) ) self.__inEdit.textChanged.connect( self.__validate ) gridLayout.addWidget( inLabel, 2, 3, 1, 1 ) gridLayout.addWidget( self.__inEdit, 2, 4, 1, 1 ) self.__inEdit.setFont( font ) # Coding spec codingLabel = QLabel( "Output encoding" ) self.__outCodingEdit = QLineEdit() self.__outCodingEdit.setText( self.__settings.settings[ "CODING" ] ) self.__outCodingEdit.setToolTip( self.__settings.getDescription( "CODING" ) ) self.__outCodingEdit.textChanged.connect( self.__validate ) gridLayout.addWidget( codingLabel, 3, 0, 1, 1 ) gridLayout.addWidget( self.__outCodingEdit, 3, 1, 1, 1 ) self.__outCodingEdit.setFont( font ) # Src coding comment srcCodingLabel = QLabel( "File encoding\ncomment" ) self.__srcCodingEdit = QLineEdit() self.__srcCodingEdit.setText( self.__settings.settings[ "CODING_SPEC" ] ) self.__srcCodingEdit.setToolTip( self.__settings.getDescription( "CODING_SPEC" ) ) self.__srcCodingEdit.textChanged.connect( self.__validate ) gridLayout.addWidget( srcCodingLabel, 3, 3, 1, 1 ) gridLayout.addWidget( self.__srcCodingEdit, 3, 4, 1, 1 ) self.__srcCodingEdit.setFont( font ) layout.addLayout( gridLayout ) # Boilerplate boilLabel = QLabel( "Boilerplate " ) boilLabel.setAlignment( Qt.AlignTop ) self.__boilEdit = QTextEdit() self.__boilEdit.setPlainText( self.__settings.settings[ "BOILERPLATE" ] ) self.__boilEdit.setToolTip( self.__settings.getDescription( "BOILERPLATE" ) ) self.__boilEdit.setTabChangesFocus( True ) self.__boilEdit.setAcceptRichText( False ) self.__boilEdit.setFont( font ) self.__boilEdit.textChanged.connect( self.__validate ) boilLayout = QHBoxLayout() boilLayout.addWidget( boilLabel ) boilLayout.addWidget( self.__boilEdit ) layout.addLayout( boilLayout ) # Now check boxes and radio buttons cbGridLayout = QGridLayout() self.__keepBlanks = QCheckBox( "Keep blank lines" ) self.__keepBlanks.setChecked( self.__settings.settings[ "KEEP_BLANK_LINES" ] ) self.__keepBlanks.setToolTip( self.__settings.getDescription( "KEEP_BLANK_LINES" ) ) cbGridLayout.addWidget( self.__keepBlanks, 0, 0, 1, 1 ) self.__addBlanks = QCheckBox( "Add blank lines around comments" ) self.__addBlanks.setChecked( self.__settings.settings[ "ADD_BLANK_LINES_AROUND_COMMENTS" ] ) self.__addBlanks.setToolTip( self.__settings.getDescription( "ADD_BLANK_LINES_AROUND_COMMENTS" ) ) cbGridLayout.addWidget( self.__addBlanks, 0, 2, 1, 1 ) self.__justifyDoc = QCheckBox( "Left justify doc strings" ) self.__justifyDoc.setChecked( self.__settings.settings[ "LEFTJUST_DOC_STRINGS" ] ) self.__justifyDoc.setToolTip( self.__settings.getDescription( "LEFTJUST_DOC_STRINGS" ) ) cbGridLayout.addWidget( self.__justifyDoc, 1, 0, 1, 1 ) self.__wrapDoc = QCheckBox( "Wrap long doc strings" ) self.__wrapDoc.setChecked( self.__settings.settings[ "WRAP_DOC_STRINGS" ] ) self.__wrapDoc.setToolTip( self.__settings.getDescription( "WRAP_DOC_STRINGS" ) ) cbGridLayout.addWidget( self.__wrapDoc, 1, 2, 1, 1 ) self.__recodeStrings = QCheckBox( "Try to decode strings" ) self.__recodeStrings.setChecked( self.__settings.settings[ "RECODE_STRINGS" ] ) self.__recodeStrings.setToolTip( self.__settings.getDescription( "RECODE_STRINGS" ) ) cbGridLayout.addWidget( self.__recodeStrings, 2, 0, 1, 1 ) self.__splitStrings = QCheckBox( "Split long strings" ) self.__splitStrings.setChecked( self.__settings.settings[ "CAN_SPLIT_STRINGS" ] ) self.__splitStrings.setToolTip( self.__settings.getDescription( "CAN_SPLIT_STRINGS" ) ) cbGridLayout.addWidget( self.__splitStrings, 2, 2, 1, 1 ) self.__keepUnassignedConst = QCheckBox( "Keep unassigned constants" ) self.__keepUnassignedConst.setChecked( self.__settings.settings[ "KEEP_UNASSIGNED_CONSTANTS" ] ) self.__keepUnassignedConst.setToolTip( self.__settings.getDescription( "KEEP_UNASSIGNED_CONSTANTS" ) ) cbGridLayout.addWidget( self.__keepUnassignedConst, 3, 0, 1, 1 ) self.__parenTuple = QCheckBox( "Parenthesize tuple display" ) self.__parenTuple.setChecked( self.__settings.settings[ "PARENTHESIZE_TUPLE_DISPLAY" ] ) self.__parenTuple.setToolTip( self.__settings.getDescription( "PARENTHESIZE_TUPLE_DISPLAY" ) ) cbGridLayout.addWidget( self.__parenTuple, 3, 2, 1, 1 ) self.__javaListDedent = QCheckBox( "Java style list dedent" ) self.__javaListDedent.setChecked( self.__settings.settings[ "JAVA_STYLE_LIST_DEDENT" ] ) self.__javaListDedent.setToolTip( self.__settings.getDescription( "JAVA_STYLE_LIST_DEDENT" ) ) cbGridLayout.addWidget( self.__javaListDedent, 4, 0, 1, 1 ) layout.addLayout( cbGridLayout ) # Quotes radio buttons quotesGroupbox = QGroupBox( "Quotes" ) sizePolicy = QSizePolicy( QSizePolicy.Expanding, QSizePolicy.Preferred ) sizePolicy.setHorizontalStretch( 0 ) sizePolicy.setVerticalStretch( 0 ) sizePolicy.setHeightForWidth( \ quotesGroupbox.sizePolicy().hasHeightForWidth() ) quotesGroupbox.setSizePolicy( sizePolicy ) layoutQG = QVBoxLayout( quotesGroupbox ) self.__use1RButton = QRadioButton( "Use apostrophes instead of quotes for string literals", quotesGroupbox ) layoutQG.addWidget( self.__use1RButton ) self.__use2RButton = QRadioButton( "Use quotes instead of apostrophes for string literals", quotesGroupbox ) layoutQG.addWidget( self.__use2RButton ) self.__useAsIsRButton = QRadioButton( "Do not make changes", quotesGroupbox ) layoutQG.addWidget( self.__useAsIsRButton ) use1 = self.__settings.settings[ "SINGLE_QUOTED_STRINGS" ] use2 = self.__settings.settings[ "DOUBLE_QUOTED_STRINGS" ] if use1: self.__use1RButton.setChecked( True ) elif use2: self.__use2RButton.setChecked( True ) else: self.__useAsIsRButton.setChecked( True ) layout.addWidget( quotesGroupbox ) fontMetrics = QFontMetrics( font ) editWidth = fontMetrics.width( "iso8859-10 " ) + 20 self.__colsEdit.setFixedWidth( editWidth ) self.__funcAssignEdit.setFixedWidth( editWidth ) self.__sliceSepEdit.setFixedWidth( editWidth ) self.__outCodingEdit.setFixedWidth( editWidth ) # Buttons at the bottom buttonBox = QDialogButtonBox( self ) buttonBox.setOrientation( Qt.Horizontal ) buttonBox.setStandardButtons( QDialogButtonBox.Cancel ) self.__resetButton = buttonBox.addButton( "Reset to Default", QDialogButtonBox.ActionRole ) self.__resetButton.setToolTip( "Mostly as recommended by PEP 8 / PEP 308" ) self.__resetButton.clicked.connect( self.__reset ) self.__tidyButton = buttonBox.addButton( "Tidy", QDialogButtonBox.ActionRole ) self.__tidyButton.setToolTip( "Save settings and run PythonTidy" ) self.__tidyButton.setDefault( True ) self.__tidyButton.clicked.connect( self.__saveAndAccept ) layout.addWidget( buttonBox ) buttonBox.rejected.connect( self.close ) return
def __createLayout( self, action ): """ Creates the dialog layout """ self.resize( 650, 300 ) self.setSizeGripEnabled( True ) # Top level layout layout = QVBoxLayout( self ) # Cmd line arguments argsLabel = QLabel( "Command line arguments" ) self.__argsEdit = QLineEdit() self.__argsEdit.textChanged.connect( self.__argsChanged ) argsLayout = QHBoxLayout() argsLayout.addWidget( argsLabel ) argsLayout.addWidget( self.__argsEdit ) layout.addLayout( argsLayout ) # Working directory workDirGroupbox = QGroupBox( self ) workDirGroupbox.setTitle( "Working directory" ) sizePolicy = QSizePolicy( QSizePolicy.Expanding, QSizePolicy.Preferred ) sizePolicy.setHorizontalStretch( 0 ) sizePolicy.setVerticalStretch( 0 ) sizePolicy.setHeightForWidth( \ workDirGroupbox.sizePolicy().hasHeightForWidth() ) workDirGroupbox.setSizePolicy( sizePolicy ) gridLayoutWD = QGridLayout( workDirGroupbox ) self.__scriptWDRButton = QRadioButton( workDirGroupbox ) self.__scriptWDRButton.setText( "&Use script location" ) gridLayoutWD.addWidget( self.__scriptWDRButton, 0, 0 ) self.__scriptWDRButton.clicked.connect( self.__scriptWDirClicked ) self.__dirRButton = QRadioButton( workDirGroupbox ) self.__dirRButton.setText( "Select &directory" ) gridLayoutWD.addWidget( self.__dirRButton, 1, 0 ) self.__dirRButton.clicked.connect( self.__dirClicked ) self.__dirEdit = QLineEdit( workDirGroupbox ) gridLayoutWD.addWidget( self.__dirEdit, 1, 1 ) self.__dirEdit.textChanged.connect( self.__workingDirChanged ) self.__dirSelectButton = QPushButton( workDirGroupbox ) self.__dirSelectButton.setText( "..." ) gridLayoutWD.addWidget( self.__dirSelectButton, 1, 2 ) self.__dirSelectButton.clicked.connect( self.__selectDirClicked ) layout.addWidget( workDirGroupbox ) # Environment envGroupbox = QGroupBox( self ) envGroupbox.setTitle( "Environment" ) sizePolicy = QSizePolicy( QSizePolicy.Expanding, QSizePolicy.Preferred ) sizePolicy.setHorizontalStretch( 0 ) sizePolicy.setVerticalStretch( 0 ) sizePolicy.setHeightForWidth( \ envGroupbox.sizePolicy().hasHeightForWidth() ) envGroupbox.setSizePolicy( sizePolicy ) layoutEnv = QVBoxLayout( envGroupbox ) self.__inheritParentRButton = QRadioButton( envGroupbox ) self.__inheritParentRButton.setText( "Inherit &parent" ) self.__inheritParentRButton.clicked.connect( self.__inhClicked ) layoutEnv.addWidget( self.__inheritParentRButton ) self.__inheritParentPlusRButton = QRadioButton( envGroupbox ) self.__inheritParentPlusRButton.setText( "Inherit parent and add/&modify" ) self.__inheritParentPlusRButton.clicked.connect( self.__inhPlusClicked ) layoutEnv.addWidget( self.__inheritParentPlusRButton ) hInhPlusLayout = QHBoxLayout() self.__inhPlusEnvTable = QTreeWidget() self.__inhPlusEnvTable.itemActivated.connect( self.__inhPlusItemActivated ) self.__tuneTable( self.__inhPlusEnvTable ) hInhPlusLayout.addWidget( self.__inhPlusEnvTable ) vInhPlusLayout = QVBoxLayout() self.__addInhButton = QPushButton() self.__addInhButton.clicked.connect( self.__addInhClicked ) self.__addInhButton.setText( 'Add' ) vInhPlusLayout.addWidget( self.__addInhButton ) self.__delInhButton = QPushButton() self.__delInhButton.clicked.connect( self.__delInhClicked ) self.__delInhButton.setText( 'Delete' ) vInhPlusLayout.addWidget( self.__delInhButton ) self.__editInhButton = QPushButton() self.__editInhButton.clicked.connect( self.__editInhClicked ) self.__editInhButton.setText( "Edit" ) vInhPlusLayout.addWidget( self.__editInhButton ) hInhPlusLayout.addLayout( vInhPlusLayout ) layoutEnv.addLayout( hInhPlusLayout ) self.__specificRButton = QRadioButton( envGroupbox ) self.__specificRButton.setText( "&Specific" ) self.__specificRButton.clicked.connect( self.__specClicked ) layoutEnv.addWidget( self.__specificRButton ) hSpecLayout = QHBoxLayout() self.__specEnvTable = QTreeWidget() self.__specEnvTable.itemActivated.connect( self.__specItemActivated ) self.__tuneTable( self.__specEnvTable ) hSpecLayout.addWidget( self.__specEnvTable ) vSpecLayout = QVBoxLayout() self.__addSpecButton = QPushButton() self.__addSpecButton.clicked.connect( self.__addSpecClicked ) self.__addSpecButton.setText( 'Add' ) vSpecLayout.addWidget( self.__addSpecButton ) self.__delSpecButton = QPushButton() self.__delSpecButton.clicked.connect( self.__delSpecClicked ) self.__delSpecButton.setText( 'Delete' ) vSpecLayout.addWidget( self.__delSpecButton ) self.__editSpecButton = QPushButton() self.__editSpecButton.clicked.connect( self.__editSpecClicked ) self.__editSpecButton.setText( "Edit" ) vSpecLayout.addWidget( self.__editSpecButton ) hSpecLayout.addLayout( vSpecLayout ) layoutEnv.addLayout( hSpecLayout ) layout.addWidget( envGroupbox ) # Terminal and profile limits if self.__action in [ "profile", "debug" ]: layout.addWidget( self.__getIDEWideGroupbox() ) else: termGroupbox = self.__getTermGroupbox() termGroupbox.setTitle( "Terminal to run in (IDE wide setting)" ) layout.addWidget( termGroupbox ) # Close checkbox self.__closeCheckBox = QCheckBox( "&Close terminal upon " "successful completion" ) self.__closeCheckBox.stateChanged.connect( self.__onCloseChanged ) layout.addWidget( self.__closeCheckBox ) # Buttons at the bottom buttonBox = QDialogButtonBox( self ) buttonBox.setOrientation( Qt.Horizontal ) buttonBox.setStandardButtons( QDialogButtonBox.Cancel ) self.__runButton = buttonBox.addButton( action, QDialogButtonBox.AcceptRole ) self.__runButton.setDefault( True ) self.__runButton.clicked.connect( self.onAccept ) layout.addWidget( buttonBox ) buttonBox.rejected.connect( self.close ) return
def __createLayout(self): " Creates the dialog layout " self.resize(640, 480) self.setSizeGripEnabled(True) vboxLayout = QVBoxLayout(self) hLayout = QHBoxLayout() self.__propsView = QTreeWidget() self.__propsView.setAlternatingRowColors(True) self.__propsView.setRootIsDecorated(False) self.__propsView.setItemsExpandable(False) self.__propsView.setSortingEnabled(True) self.__propsView.setItemDelegate(NoOutlineHeightDelegate(4)) self.__propsView.itemSelectionChanged.connect( self.__propsSelectionChanged) propsViewHeader = QTreeWidgetItem(["Property Name", "Property Value"]) self.__propsView.setHeaderItem(propsViewHeader) self.__propsView.header().setSortIndicator(0, Qt.DescendingOrder) hLayout.addWidget(self.__propsView) self.__delButton = QToolButton() self.__delButton.setText("Delete") self.__delButton.setFocusPolicy(Qt.NoFocus) self.__delButton.setEnabled(False) self.__delButton.clicked.connect(self.__onDel) hLayout.addWidget(self.__delButton, 0, Qt.AlignBottom) vboxLayout.addLayout(hLayout) # Set property part setGroupbox = QGroupBox(self) setGroupbox.setTitle("Set Property") setLayout = QGridLayout(setGroupbox) setLayout.addWidget(QLabel("Name"), 0, 0, Qt.AlignTop | Qt.AlignRight) setLayout.addWidget(QLabel("Value"), 1, 0, Qt.AlignTop | Qt.AlignRight) self.__nameEdit = QLineEdit() self.__nameEdit.textChanged.connect(self.__nameChanged) setLayout.addWidget(self.__nameEdit, 0, 1) self.__valueEdit = QTextEdit() self.__valueEdit.setAcceptRichText(False) self.__valueEdit.textChanged.connect(self.__valueChanged) metrics = QFontMetrics(self.__valueEdit.font()) rect = metrics.boundingRect("X") self.__valueEdit.setFixedHeight(rect.height() * 4 + 5) setLayout.addWidget(self.__valueEdit, 1, 1) self.__setButton = QToolButton() self.__setButton.setText("Set") self.__setButton.setFocusPolicy(Qt.NoFocus) self.__setButton.setEnabled(False) self.__setButton.clicked.connect(self.__onSet) setLayout.addWidget(self.__setButton, 1, 2, Qt.AlignBottom | Qt.AlignHCenter) sizePolicy = QSizePolicy(QSizePolicy.Expanding, QSizePolicy.Maximum) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth( setGroupbox.sizePolicy().hasHeightForWidth()) setGroupbox.setSizePolicy(sizePolicy) vboxLayout.addWidget(setGroupbox) # Buttons at the bottom buttonBox = QDialogButtonBox(self) buttonBox.setOrientation(Qt.Horizontal) buttonBox.setStandardButtons(QDialogButtonBox.Ok) buttonBox.button(QDialogButtonBox.Ok).setDefault(True) buttonBox.accepted.connect(self.close) vboxLayout.addWidget(buttonBox) return
class CalcDlg(QDialog): def __init__(self, parent, point3d, startBearing, flagStr): QDialog.__init__(self, parent) self.parent0 = parent self.point = point3d self.flagStr = flagStr self.calcedPoint = None self.startBearing = startBearing # self.flagStrName = flagStr # self.resize(326, 310) self.verticalLayout = QVBoxLayout(self) self.verticalLayout.setSpacing(6) self.verticalLayout.setMargin(3) self.verticalLayout.setObjectName(("verticalLayout")) self.groupBox = QGroupBox(self) self.groupBox.setTitle(("")) self.groupBox.setObjectName(("groupBox")) self.verticalLayout_2 = QVBoxLayout(self.groupBox) self.verticalLayout_2.setSpacing(0) self.verticalLayout_2.setMargin(3) self.verticalLayout_2.setObjectName(("verticalLayout_2")) self.groupBox_5 = QGroupBox(self.groupBox) sizePolicy = QSizePolicy(QSizePolicy.Preferred, QSizePolicy.Maximum) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth( self.groupBox_5.sizePolicy().hasHeightForWidth()) self.groupBox_5.setSizePolicy(sizePolicy) font = QFont() font.setFamily(("Arial")) self.groupBox_5.setFont(font) self.groupBox_5.setObjectName(("groupBox_5")) self.horizontalLayout_19 = QHBoxLayout(self.groupBox_5) self.horizontalLayout_19.setSpacing(0) self.horizontalLayout_19.setMargin(0) self.horizontalLayout_19.setObjectName(("horizontalLayout_19")) self.groupBox_5.setVisible(False) self.frame_18 = QFrame(self.groupBox_5) self.frame_18.setFrameShape(QFrame.StyledPanel) self.frame_18.setFrameShadow(QFrame.Raised) self.frame_18.setObjectName(("frame_18")) self.verticalLayout_13 = QVBoxLayout(self.frame_18) self.verticalLayout_13.setSpacing(0) self.verticalLayout_13.setContentsMargins(-1, -1, 0, -1) self.verticalLayout_13.setObjectName(("verticalLayout_13")) self.frame_19 = QFrame(self.frame_18) sizePolicy = QSizePolicy(QSizePolicy.Minimum, QSizePolicy.Preferred) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth( self.frame_19.sizePolicy().hasHeightForWidth()) self.frame_19.setSizePolicy(sizePolicy) self.frame_19.setFrameShape(QFrame.StyledPanel) self.frame_19.setFrameShadow(QFrame.Raised) self.frame_19.setObjectName(("frame_19")) self.horizontalLayout_20 = QHBoxLayout(self.frame_19) self.horizontalLayout_20.setSpacing(0) self.horizontalLayout_20.setMargin(0) self.horizontalLayout_20.setObjectName(("horizontalLayout_20")) self.label_9 = QLabel(self.frame_19) self.label_9.setMaximumSize(QSize(60, 16777215)) font = QFont() font.setFamily(("Arial")) font.setBold(False) font.setWeight(50) self.label_9.setFont(font) self.label_9.setObjectName(("label_9")) self.horizontalLayout_20.addWidget(self.label_9) self.txtTHR_X = QLineEdit(self.frame_19) sizePolicy = QSizePolicy(QSizePolicy.Preferred, QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth( self.txtTHR_X.sizePolicy().hasHeightForWidth()) self.txtTHR_X.setSizePolicy(sizePolicy) self.txtTHR_X.setMaximumSize(QSize(16777215, 16777215)) font = QFont() font.setFamily(("Arial")) self.txtTHR_X.setFont(font) self.txtTHR_X.setObjectName(("txtTHR_X")) self.horizontalLayout_20.addWidget(self.txtTHR_X) self.verticalLayout_13.addWidget(self.frame_19) self.frame_20 = QFrame(self.frame_18) sizePolicy = QSizePolicy(QSizePolicy.Minimum, QSizePolicy.Preferred) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth( self.frame_20.sizePolicy().hasHeightForWidth()) self.frame_20.setSizePolicy(sizePolicy) self.frame_20.setFrameShape(QFrame.StyledPanel) self.frame_20.setFrameShadow(QFrame.Raised) self.frame_20.setObjectName(("frame_20")) self.horizontalLayout_21 = QHBoxLayout(self.frame_20) self.horizontalLayout_21.setSpacing(0) self.horizontalLayout_21.setMargin(0) self.horizontalLayout_21.setObjectName(("horizontalLayout_21")) self.label_10 = QLabel(self.frame_20) self.label_10.setMaximumSize(QSize(60, 16777215)) font = QFont() font.setFamily(("Arial")) font.setBold(False) font.setWeight(50) self.label_10.setFont(font) self.label_10.setObjectName(("label_10")) self.horizontalLayout_21.addWidget(self.label_10) self.txtTHR_Y = QLineEdit(self.frame_20) sizePolicy = QSizePolicy(QSizePolicy.Preferred, QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth( self.txtTHR_Y.sizePolicy().hasHeightForWidth()) self.txtTHR_Y.setSizePolicy(sizePolicy) self.txtTHR_Y.setMaximumSize(QSize(16777215, 16777215)) font = QFont() font.setFamily(("Arial")) self.txtTHR_Y.setFont(font) self.txtTHR_Y.setObjectName(("txtTHR_Y")) self.horizontalLayout_21.addWidget(self.txtTHR_Y) self.verticalLayout_13.addWidget(self.frame_20) self.horizontalLayout_19.addWidget(self.frame_18) self.frame_21 = QFrame(self.groupBox_5) sizePolicy = QSizePolicy(QSizePolicy.Preferred, QSizePolicy.Preferred) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth( self.frame_21.sizePolicy().hasHeightForWidth()) self.frame_21.setSizePolicy(sizePolicy) self.frame_21.setMaximumSize(QSize(30, 70)) self.frame_21.setFrameShape(QFrame.StyledPanel) self.frame_21.setFrameShadow(QFrame.Raised) self.frame_21.setObjectName(("frame_21")) self.verticalLayout_14 = QVBoxLayout(self.frame_21) self.verticalLayout_14.setSpacing(0) self.verticalLayout_14.setMargin(0) self.verticalLayout_14.setObjectName(("verticalLayout_14")) self.btnCaptureRunwayTHR = QToolButton(self.frame_21) sizePolicy = QSizePolicy(QSizePolicy.Preferred, QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth( self.btnCaptureRunwayTHR.sizePolicy().hasHeightForWidth()) self.btnCaptureRunwayTHR.setSizePolicy(sizePolicy) self.btnCaptureRunwayTHR.setMaximumSize(QSize(16777215, 47)) icon = QIcon() icon.addPixmap(QPixmap(("Resource/coordinate_capture.png")), QIcon.Normal, QIcon.Off) self.btnCaptureRunwayTHR.setIcon(icon) self.btnCaptureRunwayTHR.setObjectName(("btnCaptureRunwayTHR")) self.verticalLayout_14.addWidget(self.btnCaptureRunwayTHR) # self.btnToolTHR = QToolButton(self.frame_21) # sizePolicy = QSizePolicy(QSizePolicy.Preferred, QSizePolicy.Fixed) # sizePolicy.setHorizontalStretch(0) # sizePolicy.setVerticalStretch(0) # sizePolicy.setHeightForWidth(self.btnToolTHR.sizePolicy().hasHeightForWidth()) # self.btnToolTHR.setSizePolicy(sizePolicy) # self.btnToolTHR.setMaximumSize(QSize(16777215, 20)) # icon1 = QIcon() # icon1.addPixmap(QPixmap(("Resource/sort2.png")), QIcon.Normal, QIcon.Off) # self.btnToolTHR.setIcon(icon1) # self.btnToolTHR.setObjectName(("btnToolTHR")) # self.verticalLayout_14.addWidget(self.btnToolTHR) self.horizontalLayout_19.addWidget(self.frame_21) self.verticalLayout_2.addWidget(self.groupBox_5) self.groupBox_4 = QGroupBox(self.groupBox) self.groupBox_4.setVisible(False) # self.groupBox.setVisible(False) sizePolicy = QSizePolicy(QSizePolicy.Preferred, QSizePolicy.Maximum) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth( self.groupBox_4.sizePolicy().hasHeightForWidth()) self.groupBox_4.setSizePolicy(sizePolicy) font = QFont() font.setFamily(("Arial")) self.groupBox_4.setFont(font) self.groupBox_4.setObjectName(("groupBox_4")) self.horizontalLayout_16 = QHBoxLayout(self.groupBox_4) self.horizontalLayout_16.setSpacing(0) self.horizontalLayout_16.setMargin(0) self.horizontalLayout_16.setObjectName(("horizontalLayout_16")) self.frame_14 = QFrame(self.groupBox_4) self.frame_14.setFrameShape(QFrame.StyledPanel) self.frame_14.setFrameShadow(QFrame.Raised) self.frame_14.setObjectName(("frame_14")) self.verticalLayout_11 = QVBoxLayout(self.frame_14) self.verticalLayout_11.setSpacing(0) self.verticalLayout_11.setContentsMargins(-1, -1, 0, -1) self.verticalLayout_11.setObjectName(("verticalLayout_11")) self.frame_15 = QFrame(self.frame_14) sizePolicy = QSizePolicy(QSizePolicy.Minimum, QSizePolicy.Preferred) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth( self.frame_15.sizePolicy().hasHeightForWidth()) self.frame_15.setSizePolicy(sizePolicy) self.frame_15.setFrameShape(QFrame.StyledPanel) self.frame_15.setFrameShadow(QFrame.Raised) self.frame_15.setObjectName(("frame_15")) self.horizontalLayout_17 = QHBoxLayout(self.frame_15) self.horizontalLayout_17.setSpacing(0) self.horizontalLayout_17.setMargin(0) self.horizontalLayout_17.setObjectName(("horizontalLayout_17")) self.label_7 = QLabel(self.frame_15) self.label_7.setMaximumSize(QSize(60, 16777215)) font = QFont() font.setFamily(("Arial")) font.setBold(False) font.setWeight(50) self.label_7.setFont(font) self.label_7.setObjectName(("label_7")) self.horizontalLayout_17.addWidget(self.label_7) self.txtEND_X = QLineEdit(self.frame_15) sizePolicy = QSizePolicy(QSizePolicy.Preferred, QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth( self.txtEND_X.sizePolicy().hasHeightForWidth()) self.txtEND_X.setSizePolicy(sizePolicy) self.txtEND_X.setMaximumSize(QSize(16777215, 16777215)) font = QFont() font.setFamily(("Arial")) self.txtEND_X.setFont(font) self.txtEND_X.setObjectName(("txtEND_X")) self.horizontalLayout_17.addWidget(self.txtEND_X) self.verticalLayout_11.addWidget(self.frame_15) self.frame_16 = QFrame(self.frame_14) sizePolicy = QSizePolicy(QSizePolicy.Minimum, QSizePolicy.Preferred) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth( self.frame_16.sizePolicy().hasHeightForWidth()) self.frame_16.setSizePolicy(sizePolicy) self.frame_16.setFrameShape(QFrame.StyledPanel) self.frame_16.setFrameShadow(QFrame.Raised) self.frame_16.setObjectName(("frame_16")) self.horizontalLayout_18 = QHBoxLayout(self.frame_16) self.horizontalLayout_18.setSpacing(0) self.horizontalLayout_18.setMargin(0) self.horizontalLayout_18.setObjectName(("horizontalLayout_18")) self.label_8 = QLabel(self.frame_16) self.label_8.setMaximumSize(QSize(60, 16777215)) font = QFont() font.setFamily(("Arial")) font.setBold(False) font.setWeight(50) self.label_8.setFont(font) self.label_8.setObjectName(("label_8")) self.horizontalLayout_18.addWidget(self.label_8) self.txtEND_Y = QLineEdit(self.frame_16) sizePolicy = QSizePolicy(QSizePolicy.Preferred, QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth( self.txtEND_Y.sizePolicy().hasHeightForWidth()) self.txtEND_Y.setSizePolicy(sizePolicy) self.txtEND_Y.setMaximumSize(QSize(16777215, 16777215)) font = QFont() font.setFamily(("Arial")) self.txtEND_Y.setFont(font) self.txtEND_Y.setObjectName(("txtEND_Y")) self.horizontalLayout_18.addWidget(self.txtEND_Y) self.verticalLayout_11.addWidget(self.frame_16) self.horizontalLayout_16.addWidget(self.frame_14) self.frame_17 = QFrame(self.groupBox_4) self.frame_17.setMaximumSize(QSize(30, 16777215)) self.frame_17.setFrameShape(QFrame.StyledPanel) self.frame_17.setFrameShadow(QFrame.Raised) self.frame_17.setObjectName(("frame_17")) self.verticalLayout_12 = QVBoxLayout(self.frame_17) self.verticalLayout_12.setSpacing(0) self.verticalLayout_12.setMargin(0) self.verticalLayout_12.setObjectName(("verticalLayout_12")) self.btnCaptureRunwayEND = QToolButton(self.frame_17) sizePolicy = QSizePolicy(QSizePolicy.Preferred, QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth( self.btnCaptureRunwayEND.sizePolicy().hasHeightForWidth()) self.btnCaptureRunwayEND.setSizePolicy(sizePolicy) self.btnCaptureRunwayEND.setMaximumSize(QSize(16777215, 47)) self.btnCaptureRunwayEND.setIcon(icon) self.btnCaptureRunwayEND.setObjectName(("btnCaptureRunwayEND")) self.verticalLayout_12.addWidget(self.btnCaptureRunwayEND) # self.btnToolEND = QToolButton(self.frame_17) # sizePolicy = QSizePolicy(QSizePolicy.Preferred, QSizePolicy.Fixed) # sizePolicy.setHorizontalStretch(0) # sizePolicy.setVerticalStretch(0) # sizePolicy.setHeightForWidth(self.btnToolEND.sizePolicy().hasHeightForWidth()) # self.btnToolEND.setSizePolicy(sizePolicy) # self.btnToolEND.setMaximumSize(QSize(16777215, 20)) # self.btnToolEND.setIcon(icon1) # self.btnToolEND.setObjectName(("btnToolEND")) # self.verticalLayout_12.addWidget(self.btnToolEND) self.horizontalLayout_16.addWidget(self.frame_17) self.verticalLayout_2.addWidget(self.groupBox_4) self.lbl1 = QLabel(self.groupBox) font = QFont() font.setFamily(("Arial")) self.lbl1.setFont(font) self.lbl1.setText(("")) self.lbl1.setAlignment(Qt.AlignCenter) self.lbl1.setWordWrap(False) self.lbl1.setMargin(0) self.lbl1.setObjectName(("lbl1")) self.verticalLayout_2.addWidget(self.lbl1) self.lbl2 = QLabel(self.groupBox) font = QFont() font.setFamily(("Arial")) font.setBold(False) font.setWeight(50) self.lbl2.setFont(font) self.lbl2.setText(("")) self.lbl2.setAlignment(Qt.AlignCenter) self.lbl2.setObjectName(("lbl2")) self.verticalLayout_2.addWidget(self.lbl2) self.frame_22 = QFrame(self.groupBox) sizePolicy = QSizePolicy(QSizePolicy.Minimum, QSizePolicy.Preferred) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth( self.frame_22.sizePolicy().hasHeightForWidth()) self.frame_22.setSizePolicy(sizePolicy) self.frame_22.setFrameShape(QFrame.StyledPanel) self.frame_22.setFrameShadow(QFrame.Raised) self.frame_22.setObjectName(("frame_22")) self.horizontalLayout_22 = QHBoxLayout(self.frame_22) self.horizontalLayout_22.setSpacing(0) self.horizontalLayout_22.setMargin(0) self.horizontalLayout_22.setObjectName(("horizontalLayout_22")) self.label_11 = QLabel(self.frame_22) self.label_11.setMinimumSize(QSize(170, 0)) self.label_11.setMaximumSize(QSize(180, 16777215)) font = QFont() font.setFamily(("Arial")) font.setBold(False) font.setWeight(50) self.label_11.setFont(font) self.label_11.setObjectName(("label_11")) self.horizontalLayout_22.addWidget(self.label_11) self.txtForm = QLineEdit(self.frame_22) self.txtForm.setEnabled(False) sizePolicy = QSizePolicy(QSizePolicy.Preferred, QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth( self.txtForm.sizePolicy().hasHeightForWidth()) self.txtForm.setSizePolicy(sizePolicy) self.txtForm.setMaximumSize(QSize(16777215, 16777215)) font = QFont() font.setFamily(("Arial")) self.txtForm.setFont(font) self.txtForm.setObjectName(("txtForm")) self.horizontalLayout_22.addWidget(self.txtForm) self.verticalLayout_2.addWidget(self.frame_22) self.frame_23 = QFrame(self.groupBox) sizePolicy = QSizePolicy(QSizePolicy.Minimum, QSizePolicy.Preferred) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth( self.frame_23.sizePolicy().hasHeightForWidth()) self.frame_23.setSizePolicy(sizePolicy) self.frame_23.setFrameShape(QFrame.StyledPanel) self.frame_23.setFrameShadow(QFrame.Raised) self.frame_23.setObjectName(("frame_23")) self.horizontalLayout_23 = QHBoxLayout(self.frame_23) self.horizontalLayout_23.setSpacing(0) self.horizontalLayout_23.setMargin(0) self.horizontalLayout_23.setObjectName(("horizontalLayout_23")) self.label_12 = QLabel(self.frame_23) self.label_12.setMinimumSize(QSize(170, 0)) self.label_12.setMaximumSize(QSize(180, 16777215)) font = QFont() font.setFamily(("Arial")) font.setBold(False) font.setWeight(50) self.label_12.setFont(font) self.label_12.setObjectName(("label_12")) self.horizontalLayout_23.addWidget(self.label_12) self.txtBearing = QLineEdit(self.frame_23) sizePolicy = QSizePolicy(QSizePolicy.Preferred, QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth( self.txtBearing.sizePolicy().hasHeightForWidth()) self.txtBearing.setSizePolicy(sizePolicy) self.txtBearing.setMaximumSize(QSize(16777215, 16777215)) font = QFont() font.setFamily(("Arial")) self.txtBearing.setFont(font) self.txtBearing.setObjectName(("txtBearing")) self.horizontalLayout_23.addWidget(self.txtBearing) self.btnCaptureBearing = QToolButton(self.frame_23) sizePolicy = QSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth( self.btnCaptureBearing.sizePolicy().hasHeightForWidth()) self.btnCaptureBearing.setSizePolicy(sizePolicy) self.btnCaptureBearing.setMaximumSize(QSize(16777215, 25)) self.btnCaptureBearing.setStyleSheet(("")) self.btnCaptureBearing.setIcon(icon) self.btnCaptureBearing.setObjectName(("btnCaptureBearing")) self.horizontalLayout_23.addWidget(self.btnCaptureBearing) self.verticalLayout_2.addWidget(self.frame_23) self.frame_24 = QFrame(self.groupBox) sizePolicy = QSizePolicy(QSizePolicy.Minimum, QSizePolicy.Preferred) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth( self.frame_24.sizePolicy().hasHeightForWidth()) self.frame_24.setSizePolicy(sizePolicy) self.frame_24.setFrameShape(QFrame.StyledPanel) self.frame_24.setFrameShadow(QFrame.Raised) self.frame_24.setObjectName(("frame_24")) self.horizontalLayout_24 = QHBoxLayout(self.frame_24) self.horizontalLayout_24.setSpacing(0) self.horizontalLayout_24.setMargin(0) self.horizontalLayout_24.setObjectName(("horizontalLayout_24")) self.lblDistance = QLabel(self.frame_24) self.lblDistance.setMinimumSize(QSize(170, 0)) self.lblDistance.setMaximumSize(QSize(180, 16777215)) font = QFont() font.setFamily(("Arial")) font.setBold(False) font.setWeight(50) self.lblDistance.setFont(font) self.lblDistance.setObjectName(("lblDistance")) self.horizontalLayout_24.addWidget(self.lblDistance) self.txtDistance = QLineEdit(self.frame_24) self.txtDistance.setEnabled(False) sizePolicy = QSizePolicy(QSizePolicy.Preferred, QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth( self.txtDistance.sizePolicy().hasHeightForWidth()) self.txtDistance.setSizePolicy(sizePolicy) self.txtDistance.setMaximumSize(QSize(16777215, 16777215)) font = QFont() font.setFamily(("Arial")) self.txtDistance.setFont(font) self.txtDistance.setObjectName(("txtDistance")) self.horizontalLayout_24.addWidget(self.txtDistance) self.btnCaptureDistance = QToolButton(self.frame_24) sizePolicy = QSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth( self.btnCaptureDistance.sizePolicy().hasHeightForWidth()) self.btnCaptureDistance.setSizePolicy(sizePolicy) self.btnCaptureDistance.setMaximumSize(QSize(16777215, 23)) self.btnCaptureDistance.setStyleSheet(("")) self.btnCaptureDistance.setIcon(icon) self.btnCaptureDistance.setObjectName(("btnCaptureDistance")) self.horizontalLayout_24.addWidget(self.btnCaptureDistance) self.verticalLayout_2.addWidget(self.frame_24) self.verticalLayout.addWidget(self.groupBox) self.buttonBox = QDialogButtonBox(self) self.buttonBox.setOrientation(Qt.Horizontal) self.buttonBox.setStandardButtons(QDialogButtonBox.Cancel | QDialogButtonBox.Ok) self.buttonBox.setObjectName(("buttonBox")) self.verticalLayout.addWidget(self.buttonBox) self.btnCaptureDistance.clicked.connect(self.method_9) self.btnCaptureBearing.clicked.connect(self.method_8) self.txtEND_X.textChanged.connect(self.method_4) self.txtEND_Y.textChanged.connect(self.method_4) self.txtTHR_X.textChanged.connect(self.method_4) self.txtTHR_Y.textChanged.connect(self.method_4) # self.type = rnavType # self.category = category # self.resultPosionList = position_List self.MinBearing2 = 0 self.MaxBearing2 = 0 self.waypoint = None self.distanceMeasureTool = MeasureTool(define._canvas, self.txtDistance, DistanceUnits.NM) self.bearingTool = CaptureBearingTool(define._canvas, self.txtBearing) self.CaptureTHRCoordTool = CaptureCoordinateTool( define._canvas, self.txtTHR_X, self.txtTHR_Y) self.CaptureTHRCoordTool.rubberBandClick.setColor(Qt.green) self.CaptureENDCoordTool = CaptureCoordinateTool( define._canvas, self.txtEND_X, self.txtEND_Y) self.CaptureENDCoordTool.rubberBandClick.setColor(Qt.blue) # if rnavType == RnavCommonWaypoint.FAWP or rnavType == RnavCommonWaypoint.MAWP: # self.from1 = position_0 # # self.resize(326, 310) # if position_List[0] != None: # self.setThrPosition(position_List[0].x(),position_List[0].y()) # self.CaptureTHRCoordTool.rubberBandClick.addPoint(QgsPoint(position_List[0].x(),position_List[0].y())) # # self.CaptureTHRCoordTool.rubberBandClick.show() # if position_List[1] != None: # self.setEndPosition(position_List[1].x(),position_List[1].y()) # self.CaptureENDCoordTool.rubberBandClick.addPoint(QgsPoint(position_List[1].x(),position_List[1].y())) # # self.setWaypoint(position_List[2]) # else: # self.from1 = position_1 # num = RnavWaypoints.smethod_0(position_0, position_1) # self.MinBearing = RnavWaypoints.smethod_7(rnavType, category, num) # self.MaxBearing= RnavWaypoints.smethod_8(rnavType, category, num) # self.MinDistance = RnavWaypoints.smethod_4(rnavType, category) # if flagStr == "Y-Bar": # if (rnavType == RnavCommonWaypoint.IAWP1): # self.setBearing(self.MaxBearing) # elif (rnavType != RnavCommonWaypoint.IAWP3): # self.setBearing(num) # else: # self.setBearing(self.MinBearing) # else: # if (rnavType == RnavCommonWaypoint.IAWP1): # self.setBearing(self.MinBearing) # elif (rnavType != RnavCommonWaypoint.IAWP3): # self.setBearing(num) # else: # self.setBearing(self.MaxBearing) # # if self.txtDistance.isEnabled(): # # self.setDistance(RnavWaypoints.smethod_6(rnavType, category).NauticalMiles) # # self.setWaypoint(position_List.pop(0)) # self.method_4() self.retranslateUi() QObject.connect(self.buttonBox, SIGNAL(("accepted()")), self.btnCalculate_Click) QObject.connect(self.buttonBox, SIGNAL(("rejected()")), self.reject) # QMetaObject.connectSlotsByName(Dialog) # self.btnToolEND.clicked.connect(self.removeEnd) # self.btnToolTHR.clicked.connect(self.removeThr) self.btnCaptureRunwayTHR.clicked.connect(self.captureTHR) self.btnCaptureRunwayEND.clicked.connect(self.captureEND) self.txtDistance.setText("10") def retranslateUi(self): self.setWindowTitle("CaculaterDlg") self.groupBox_5.setTitle("Runway THR") self.label_9.setText("X:") self.label_10.setText("Y:") self.btnCaptureRunwayTHR.setText("...") # self.btnToolTHR.setText("...") self.groupBox_4.setTitle("Runway END") self.label_7.setText("X:") self.label_8.setText("Y:") self.btnCaptureRunwayEND.setText("...") # self.btnToolEND.setText("...") self.label_11.setText("From:") self.txtForm.setText("FAWP") self.label_12.setText(unicode("Bearing (°) :", "utf-8")) # self.txtBearing.setText("188.25") self.btnCaptureBearing.setText("...") self.lblDistance.setText("Distance (nm):") self.txtDistance.setText("5") self.btnCaptureDistance.setText("...") def captureTHR(self): define._canvas.setMapTool(self.CaptureTHRCoordTool) def captureEND(self): define._canvas.setMapTool(self.CaptureENDCoordTool) def close(self): scene = define._canvas.scene() scene.removeItem(self.CaptureTHRCoordTool.rubberBandClick) scene.removeItem(self.CaptureENDCoordTool.rubberBandClick) scene.removeItem(self.bearingTool.rubberBand) scene.removeItem(self.distanceMeasureTool.rubberBand) # self.CaptureTHRCoordTool.rubberBand.hide() # self.CaptureENDCoordTool.rubberBand.hide() define._canvas.setMapTool(QgsMapToolPan(define._canvas)) # self.reject() def reject(self): self.close() QDialog.reject(self) def getThrPoint3D(self): if self.txtTHR_X.text() != "" and self.txtTHR_Y.text() != "": try: x = float(self.txtTHR_X.text()) except ValueError: x = 0 try: y = float(self.txtTHR_Y.text()) except ValueError: y = 0 return Point3D(x, y, 0) else: return None def getEndPoint3D(self): if self.txtEND_X.text() != "" and self.txtEND_Y.text() != "": try: x = float(self.txtEND_X.text()) except ValueError: x = 0 try: y = float(self.txtEND_Y.text()) except ValueError: y = 0 return Point3D(x, y, 0) else: return None def setEndPosition(self, x, y): self.txtEND_X.setText(str(x)) self.txtEND_Y.setText(str(y)) def setThrPosition(self, x, y): self.txtTHR_X.setText(str(x)) self.txtTHR_Y.setText(str(y)) def getWaypoint(self): if (self.type == RnavCommonWaypoint.FAWP): nauticalMiles = float(self.txtDistance.text()) value = float(self.txtBearing.text()) num1 = math.fabs(self.rethr - value) if (num1 > 180): num1 = 360 - num1 num2 = math.sin(Unit.smethod_0(num1)) * 0.7559395 num3 = Unit.smethod_1(math.asin(num2 / nauticalMiles)) num4 = math.cos(Unit.smethod_0(num1)) * 0.755939525 num5 = math.cos(Unit.smethod_0(num3)) * nauticalMiles return RnavWaypoints.smethod_3( self.pos1400m, float(self.txtBearing.text()), Distance(math.fabs(num5 - num4), DistanceUnits.NM)) if (self.type != RnavCommonWaypoint.MAWP): return RnavWaypoints.smethod_3( self.from1, float(self.txtBearing.text()), Distance(float(self.txtDistance.text()), DistanceUnits.NM)) if (float(self.txtBearing.text()) > self.thrre or float(self.txtBearing.text()) - self.thrre >= 90): angle = 90 if self.flagStrName == "Y-Bar": angle = 70 num = self.rethr - angle if (num < 0): num = num + 360 else: num = self.rethr + angle if (num > 360): num = num - 360 point3d1 = self.from1 point3d2 = self.getThrPoint3D() point3d = MathHelper.getIntersectionPoint( point3d1, RnavWaypoints.smethod_3(self.from1, float(self.txtBearing.text()), Distance(1000)), point3d2, RnavWaypoints.smethod_3(self.getThrPoint3D(), num, Distance(1000))) if point3d == None: raise UserWarning, Messages.ERR_FAILED_TO_CALCULATE_INTERSECTION_POINT return RnavWaypoints.smethod_3( self.getThrPoint3D(), num, Distance(MathHelper.calcDistance(point3d2, point3d))) def setWaypoint(self, value): self.waypoint = value if self.from1 != None and self.waypoint != None: # self.setBearing(RnavWaypoints.smethod_0(self.from1, value)) # if self.txtDistance.isEnabled(): # print RnavWaypoints.smethod_2(self.from1, value).NauticalMiles # print RnavWaypoints.smethod_2(self.from1, value).NauticalMiles self.setDistance( RnavWaypoints.smethod_2(self.from1, value).NauticalMiles) def setDistance(self, value): self.txtDistance.setText("%i" % round(value)) def setBearing(self, value): self.txtBearing.setText(str(value)) def btnCalculate_Click(self): try: bearing = Unit.ConvertDegToRad(float(self.txtBearing.text())) distance0 = Distance(float(self.txtDistance.text()), DistanceUnits.NM).Metres self.calcedPoint = MathHelper.distanceBearingPoint( self.point, bearing, distance0) if self.flagStr == "R": self.parent0.parametersPanel.pnlIAWP1.Point3d = self.calcedPoint self.parent0.parametersPanel.txtRadiusIAWP1.setText( self.txtDistance.text()) elif self.flagStr == "L": self.parent0.parametersPanel.txtRadiusIAWP3.setText( self.txtDistance.text()) self.parent0.parametersPanel.pnlIAWP3.Point3d = self.calcedPoint elif self.flagStr == "C": self.parent0.parametersPanel.txtRadiusIAWP2.setText( self.txtDistance.text()) self.parent0.parametersPanel.pnlIAWP2.Point3d = self.calcedPoint self.accept() except UserWarning as e: QMessageBox.warning(self, "warning", e.message) def method_9(self): # self.distanceMeasureTool = MeasureTool(define._canvas, self.txtDistance, DistanceUnits.NM) define._canvas.setMapTool(self.distanceMeasureTool) def method_8(self): # self.bearingTool = CaptureBearingTool(define._canvas, self.txtBearing) define._canvas.setMapTool(self.bearingTool) def method_4(self): num = None num1 = None num2 = None num3 = None num4 = None num5 = None num6 = None num7 = None num8 = None num9 = None self.lbl1.setText(Validations.PLEASE_ENTER_VALID_RUNWAY_POSITIONS) self.lbl2.setText(" ") if (self.type == RnavCommonWaypoint.FAWP): position = self.getThrPoint3D() position1 = self.getEndPoint3D() if position is None or position1 is None: self.txtBearing.setText("") # self.txtDistance.setText("") return self.thrre = RnavWaypoints.smethod_0(position, position1) self.rethr = RnavWaypoints.smethod_0(position1, position) self.pos1400m = RnavWaypoints.smethod_3(position, self.rethr, Distance(1400)) self.MinDistance = RnavWaypoints.smethod_4(self.type, self.category) # if self.txtDistance.isEnabled(): # self.setDistance(RnavWaypoints.smethod_6(self.type, self.category).NauticalMiles) self.setBearing(self.rethr) self.MinBearing = RnavWaypoints.smethod_7(self.type, self.category, self.rethr) self.MaxBearing = RnavWaypoints.smethod_8(self.type, self.category, self.rethr) # if self.waypoint is not None: # self.setBearing(round(RnavWaypoints.smethod_0(self.pos1400m, self.waypoint), 2)) # # if self.txtDistance.isEnabled(): # self.setDistance(RnavWaypoints.smethod_2(position, self.waypoint).NauticalMiles) elif (self.type == RnavCommonWaypoint.MAWP): position2 = self.getThrPoint3D() position3 = self.getEndPoint3D() if position2 is None or position3 is None: self.txtBearing.setText("") return self.thrre = RnavWaypoints.smethod_0(position2, position3) self.rethr = RnavWaypoints.smethod_0(position3, position2) self.pos1400m = RnavWaypoints.smethod_3(position2, self.rethr, Distance(1400)) num10 = RnavWaypoints.smethod_1(self.pos1400m, self.from1) num = RnavWaypoints.smethod_1(self.from1, self.pos1400m) num11 = 15 position4 = None if (self.category == AircraftSpeedCategory.A or self.category == AircraftSpeedCategory.B or self.category == AircraftSpeedCategory.H): num11 = 30 if (num10 > self.rethr or self.rethr - num10 >= 90): num1 = self.thrre + num11 num2 = num if (num2 > 360): num2 = num2 - 360 else: num1 = num num2 = self.thrre - num11 if (num2 < 0): num2 = num2 + 360 if (max(num1, num2) <= 270 or min(num1, num2) >= 90): num3 = min(num1, num2) num4 = max(num1, num2) else: num3 = max(num1, num2) num4 = min(num1, num2) position4 = RnavWaypoints.smethod_3(position2, self.thrre, Distance(466)) num12 = RnavWaypoints.smethod_0(position4, self.from1) num13 = math.fabs(num12 - self.rethr) if (num13 > 180): num13 = 360 - num13 if (num13 > 5): num5 = 0 num6 = 0 num7 = 0 num8 = 0 else: if (num12 > self.rethr or self.rethr - num12 >= 90): num9 = self.rethr + 90 if (num9 > 360): num9 = num9 - 360 else: num9 = self.rethr - 90 if (num9 < 0): num9 = num9 + 360 position5 = RnavWaypoints.smethod_3(self.pos1400m, num9, Distance(150)) num5 = RnavWaypoints.smethod_0(self.from1, position5) num6 = RnavWaypoints.smethod_0(self.from1, self.pos1400m) if (max(num5, num6) <= 270 or min(num5, num6) >= 90): num7 = min(num5, num6) num8 = max(num5, num6) else: num7 = max(num5, num6) num8 = min(num5, num6) if (MathHelper.smethod_99(num, self.thrre, 1)): position6 = RnavWaypoints.smethod_3(self.pos1400m, self.rethr - 90, Distance(150)) position7 = RnavWaypoints.smethod_3(self.pos1400m, self.rethr + 90, Distance(150)) num1 = RnavWaypoints.smethod_0(self.from1, position6) num2 = RnavWaypoints.smethod_0(self.from1, position7) num7 = 0 num8 = 0 if (max(num1, num2) <= 270 or min(num1, num2) >= 90): num3 = min(num1, num2) num4 = max(num1, num2) else: num3 = max(num1, num2) num4 = min(num1, num2) if (MathHelper.smethod_96(num7) or MathHelper.smethod_96(num8)): self.MinBearing = MathHelper.smethod_3(num3) self.MaxBearing = MathHelper.smethod_3(num4) self.MinBearing2 = MathHelper.smethod_3(num7) self.MaxBearing2 = MathHelper.smethod_3(num8) elif (min(num3, num4) >= min(num7, num8)): if (MathHelper.smethod_99(num8, num3, 0.3)): num8 = num4 num3 = 0 num4 = 0 self.MinBearing = MathHelper.smethod_3(num7) self.MaxBearing = MathHelper.smethod_3(num8) self.MinBearing2 = MathHelper.smethod_3(num3) self.MaxBearing2 = MathHelper.smethod_3(num4) else: if (MathHelper.smethod_99(num4, num7, 0.3)): num4 = num8 num7 = 0 num8 = 0 self.MinBearing = MathHelper.smethod_3(num3) self.MaxBearing = MathHelper.smethod_3(num4) self.MinBearing2 = MathHelper.smethod_3(num7) self.MaxBearing2 = MathHelper.smethod_3(num8) self.MinDistance = RnavWaypoints.smethod_4(self.type, self.category) # if self.txtDistance.isEnabled(): # self.setDistance(RnavWaypoints.smethod_6(self.type, self.category).NauticalMiles) if (self.MinBearing <= self.MaxBearing): self.setBearing((self.MinBearing + self.MaxBearing) / 2) else: self.setBearing( MathHelper.smethod_3(self.MinBearing + (360 - self.MinBearing + self.MaxBearing))) # if (self.waypoint is not None): # self.setBearing(RnavWaypoints.smethod_0(self.from1, self.waypoint)) if (MathHelper.smethod_96(self.MinBearing2) or MathHelper.smethod_96(self.MaxBearing2)): self.lbl1.setText( unicode("Acceptable bearings are %.1f° - %.1f°", "utf-8") % (self.MinBearing, self.MaxBearing)) else: self.lbl1.setText(Validations.ACCEPTABLE_BEARINGS_ARE_X_Y_AND_X_Y % (self.MinBearing, self.MaxBearing, self.MinBearing2, self.MaxBearing2)) if self.MinDistance != None and self.type != RnavCommonWaypoint.MAWP: self.lbl2.setText(Validations.ACCEPTABLE_MINIMUM_DISTANCE_IS_X % (self.MinDistance.NauticalMiles)) # def removeEnd(self): # self.txtEND_X.setText("") # self.txtEND_Y.setText("") # def removeThr(self): # self.txtTHR_X.setText("") # self.txtTHR_Y.setText("") # @staticmethod # def smethod_0( parent, rnavCommonWaypoint_0, aircraftSpeedCategory_0, position_0, position_1, position_List): # flag = None # using (DlgCalculateWaypoint dlgCalculateWaypoint = new DlgCalculateWaypoint()) # { # dlgCalculateWaypoint.Text = string.Format("{0} {1}", Captions.CALCULATE, EnumHelper.smethod_0(rnavCommonWaypoint_0)) # dlgCalculateWaypoint.Type = rnavCommonWaypoint_0 # dlgCalculateWaypoint.Category = aircraftSpeedCategory_0 # dlgCalculateWaypoint.From = position_1 # double num = RnavWaypoints.smethod_0(position_0, position_1) # dlgCalculateWaypoint.MinBearing = RnavWaypoints.smethod_7(rnavCommonWaypoint_0, aircraftSpeedCategory_0, num) # dlgCalculateWaypoint.MaxBearing = RnavWaypoints.smethod_8(rnavCommonWaypoint_0, aircraftSpeedCategory_0, num) # dlgCalculateWaypoint.MinDistance = RnavWaypoints.smethod_4(rnavCommonWaypoint_0, aircraftSpeedCategory_0) # if (rnavCommonWaypoint_0 == RnavCommonWaypoint.IAWP1) # { # dlgCalculateWaypoint.Bearing = dlgCalculateWaypoint.MinBearing # } # else if (rnavCommonWaypoint_0 != RnavCommonWaypoint.IAWP3) # { # dlgCalculateWaypoint.Bearing = num # } # else # { # dlgCalculateWaypoint.Bearing = dlgCalculateWaypoint.MaxBearing # } # dlgCalculateWaypoint.Distance = RnavWaypoints.smethod_6(rnavCommonWaypoint_0, aircraftSpeedCategory_0) # dlgCalculateWaypoint.Waypoint = position_2 # if (dlgCalculateWaypoint.method_2(iwin32Window_0) != System.Windows.Forms.DialogResult.OK) # { # flag = false # } # else # { # position_2 = dlgCalculateWaypoint.Waypoint # flag = true # } # } # return flag # } # # public static bool smethod_1(IWin32Window iwin32Window_0, RnavCommonWaypoint rnavCommonWaypoint_0, AircraftSpeedCategory aircraftSpeedCategory_0, Position position_0, ref Position position_1, ref Position position_2, ref Position position_3) # { # bool flag # using (DlgCalculateWaypoint dlgCalculateWaypoint = new DlgCalculateWaypoint()) # { # dlgCalculateWaypoint.Text = string.Format("{0} {1}", Captions.CALCULATE, EnumHelper.smethod_0(rnavCommonWaypoint_0)) # dlgCalculateWaypoint.Type = rnavCommonWaypoint_0 # dlgCalculateWaypoint.Category = aircraftSpeedCategory_0 # dlgCalculateWaypoint.From = position_0 # dlgCalculateWaypoint.RwyThr = position_1 # dlgCalculateWaypoint.RwyEnd = position_2 # dlgCalculateWaypoint.Waypoint = position_3 # bool flag1 = dlgCalculateWaypoint.method_2(iwin32Window_0) == System.Windows.Forms.DialogResult.OK # position_1 = dlgCalculateWaypoint.RwyThr # position_2 = dlgCalculateWaypoint.RwyEnd # if (flag1) # { # position_3 = dlgCalculateWaypoint.Waypoint # } # flag = flag1 # } # return flag # } # }
def __createProjectSpecific(self): " Creates the project specific part " widget = QWidget() verticalLayout = QVBoxLayout(widget) infoLabel = QLabel("Note: the settings below are used " "only for the specific project.") verticalLayout.addWidget(infoLabel) # Authorization group box authGroupbox = QGroupBox(self) authGroupbox.setTitle("Authorization") sizePolicy = QSizePolicy(QSizePolicy.Expanding, QSizePolicy.Preferred) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth( authGroupbox.sizePolicy().hasHeightForWidth()) authGroupbox.setSizePolicy(sizePolicy) layoutAuth = QVBoxLayout(authGroupbox) self.__projectAuthExtRButton = QRadioButton("External", authGroupbox) self.__projectAuthExtRButton.clicked.connect(self.__projectAuthChanged) layoutAuth.addWidget(self.__projectAuthExtRButton) self.__projectAuthPasswdRButton = QRadioButton( "Use user name / password", authGroupbox) self.__projectAuthPasswdRButton.clicked.connect( self.__projectAuthChanged) layoutAuth.addWidget(self.__projectAuthPasswdRButton) upLayout = QGridLayout() self.__projectUser = QLineEdit() self.__projectUser.setToolTip("Attention: user name is " "saved unencrypted") self.__projectPasswd = QLineEdit() self.__projectPasswd.setToolTip("Attention: password is " "saved unencrypted") spacer = QWidget() spacer.setFixedWidth(16) upLayout.addWidget(spacer, 0, 0) upLayout.addWidget(QLabel("User name"), 0, 1) upLayout.addWidget(self.__projectUser, 0, 2) upLayout.addWidget(QLabel("Password"), 1, 1) upLayout.addWidget(self.__projectPasswd, 1, 2) layoutAuth.addLayout(upLayout) # Update status group box updateGroupbox = QGroupBox(self) updateGroupbox.setTitle("Update status policy") sizePolicy = QSizePolicy(QSizePolicy.Expanding, QSizePolicy.Preferred) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth( updateGroupbox.sizePolicy().hasHeightForWidth()) updateGroupbox.setSizePolicy(sizePolicy) layoutUpdate = QVBoxLayout(updateGroupbox) self.__projectReposRButton = QRadioButton("Check repository", updateGroupbox) layoutUpdate.addWidget(self.__projectReposRButton) self.__projectLocalRButton = QRadioButton("Local only", updateGroupbox) layoutUpdate.addWidget(self.__projectLocalRButton) verticalLayout.addWidget(authGroupbox) verticalLayout.addWidget(updateGroupbox) return widget
def __createLayout( self ): " Creates the dialog layout " self.resize( 640, 480 ) self.setSizeGripEnabled( True ) vboxLayout = QVBoxLayout( self ) # Revisions to compare compareGroupbox = QGroupBox( self ) compareGroupbox.setTitle( "Revisions to compare" ) sizePolicy = QSizePolicy( QSizePolicy.Expanding, QSizePolicy.Preferred ) sizePolicy.setHorizontalStretch( 0 ) sizePolicy.setVerticalStretch( 0 ) sizePolicy.setHeightForWidth( compareGroupbox.sizePolicy().hasHeightForWidth() ) compareGroupbox.setSizePolicy( sizePolicy ) revisionLayout = QHBoxLayout( compareGroupbox ) self.__lhsRevisionLabel = QLabel() self.__lhsRevisionLabel.setFrameStyle( QFrame.StyledPanel ) self.__lhsResetButton = QToolButton() self.__lhsResetButton.setIcon( PixmapCache().getIcon( pluginHomeDir + 'svnclearrev.png' ) ) self.__lhsResetButton.setFocusPolicy( Qt.NoFocus ) self.__lhsResetButton.setEnabled( False ) self.__lhsResetButton.setToolTip( "Reset revision to compare" ) self.__lhsResetButton.clicked.connect( self.__onLHSReset ) self.__rhsRevisionLabel = QLabel() self.__rhsRevisionLabel.setFrameStyle( QFrame.StyledPanel ) self.__rhsResetButton = QToolButton() self.__rhsResetButton.setIcon( PixmapCache().getIcon( pluginHomeDir + 'svnclearrev.png' ) ) self.__rhsResetButton.setFocusPolicy( Qt.NoFocus ) self.__rhsResetButton.setEnabled( False ) self.__rhsResetButton.setToolTip( "Reset revision to compare" ) self.__rhsResetButton.clicked.connect( self.__onRHSReset ) lhsLayout = QHBoxLayout() lhsLayout.addWidget( self.__lhsRevisionLabel ) lhsLayout.addWidget( self.__lhsResetButton ) rhsLayout = QHBoxLayout() rhsLayout.addWidget( self.__rhsRevisionLabel ) rhsLayout.addWidget( self.__rhsResetButton ) bothLayout = QVBoxLayout() bothLayout.addLayout( lhsLayout ) bothLayout.addLayout( rhsLayout ) revisionLayout.addLayout( bothLayout ) self.__diffButton = QToolButton() self.__diffButton.setText( "Diff" ) self.__diffButton.setFocusPolicy( Qt.NoFocus ) self.__diffButton.setEnabled( False ) self.__diffButton.clicked.connect( self.__onDiff ) revisionLayout.addWidget( self.__diffButton ) vboxLayout.addWidget( compareGroupbox ) # Log table logHeaderFrame = QFrame() logHeaderFrame.setFrameStyle( QFrame.StyledPanel ) logHeaderFrame.setAutoFillBackground( True ) self.__setLightPalette( logHeaderFrame ) logHeaderFrame.setFixedHeight( 24 ) logHeaderLayout = QHBoxLayout() logHeaderLayout.setContentsMargins( 3, 0, 0, 0 ) logHeaderLayout.addWidget( QLabel( "Subversion log of " + self.__path ) ) logHeaderFrame.setLayout( logHeaderLayout ) vboxLayout.addWidget( logHeaderFrame ) self.__logView = QTreeWidget() self.__logView.setAlternatingRowColors( True ) self.__logView.setRootIsDecorated( False ) self.__logView.setItemsExpandable( False ) self.__logView.setSortingEnabled( True ) self.__logView.setItemDelegate( NoOutlineHeightDelegate( 4 ) ) self.__logViewHeader = QTreeWidgetItem( [ "", "", "Revision", "Date", "Author", "Message" ] ) self.__logView.setHeaderItem( self.__logViewHeader ) self.__logView.header().setSortIndicator( REVISION_COL, Qt.AscendingOrder ) self.__logView.itemChanged.connect( self.__onLogViewChanged ) vboxLayout.addWidget( self.__logView ) # Diff part diffHeaderFrame = QFrame() diffHeaderFrame.setFrameStyle( QFrame.StyledPanel ) diffHeaderFrame.setAutoFillBackground( True ) self.__setLightPalette( diffHeaderFrame ) diffHeaderFrame.setFixedHeight( 24 ) diffLabel = QLabel( "Diff" ) diffExpandingSpacer = QSpacerItem( 10, 10, QSizePolicy.Expanding ) self.__showHideDiffButton = QToolButton() self.__showHideDiffButton.setAutoRaise( True ) self.__showHideDiffButton.setIcon( PixmapCache().getIcon( 'less.png' ) ) self.__showHideDiffButton.setFixedSize( 20, 20 ) self.__showHideDiffButton.setToolTip( "Show diff" ) self.__showHideDiffButton.setFocusPolicy( Qt.NoFocus ) self.__showHideDiffButton.clicked.connect( self.__onShowHideDiff ) diffLayout = QHBoxLayout() diffLayout.setContentsMargins( 3, 0, 0, 0 ) diffLayout.addWidget( diffLabel ) diffLayout.addSpacerItem( diffExpandingSpacer ) diffLayout.addWidget( self.__showHideDiffButton ) diffHeaderFrame.setLayout( diffLayout ) self.__diffViewer = DiffTabWidget() self.__diffViewer.setHTML( self.NODIFF ) self.__diffViewer.setVisible( False ) vboxLayout.addWidget( diffHeaderFrame ) vboxLayout.addWidget( self.__diffViewer ) # Buttons at the bottom buttonBox = QDialogButtonBox( self ) buttonBox.setOrientation( Qt.Horizontal ) buttonBox.setStandardButtons( QDialogButtonBox.Ok ) buttonBox.button( QDialogButtonBox.Ok ).setDefault( True ) buttonBox.accepted.connect( self.close ) vboxLayout.addWidget( buttonBox ) return
def __createLayout(self): " Creates the dialog layout " self.resize(640, 480) self.setSizeGripEnabled(True) vboxLayout = QVBoxLayout(self) # Revisions to compare compareGroupbox = QGroupBox(self) compareGroupbox.setTitle("Revisions to compare") sizePolicy = QSizePolicy(QSizePolicy.Expanding, QSizePolicy.Preferred) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth( compareGroupbox.sizePolicy().hasHeightForWidth()) compareGroupbox.setSizePolicy(sizePolicy) revisionLayout = QHBoxLayout(compareGroupbox) self.__lhsRevisionLabel = QLabel() self.__lhsRevisionLabel.setFrameStyle(QFrame.StyledPanel) self.__lhsResetButton = QToolButton() self.__lhsResetButton.setIcon(PixmapCache().getIcon(pluginHomeDir + 'svnclearrev.png')) self.__lhsResetButton.setFocusPolicy(Qt.NoFocus) self.__lhsResetButton.setEnabled(False) self.__lhsResetButton.setToolTip("Reset revision to compare") self.__lhsResetButton.clicked.connect(self.__onLHSReset) self.__rhsRevisionLabel = QLabel() self.__rhsRevisionLabel.setFrameStyle(QFrame.StyledPanel) self.__rhsResetButton = QToolButton() self.__rhsResetButton.setIcon(PixmapCache().getIcon(pluginHomeDir + 'svnclearrev.png')) self.__rhsResetButton.setFocusPolicy(Qt.NoFocus) self.__rhsResetButton.setEnabled(False) self.__rhsResetButton.setToolTip("Reset revision to compare") self.__rhsResetButton.clicked.connect(self.__onRHSReset) lhsLayout = QHBoxLayout() lhsLayout.addWidget(self.__lhsRevisionLabel) lhsLayout.addWidget(self.__lhsResetButton) rhsLayout = QHBoxLayout() rhsLayout.addWidget(self.__rhsRevisionLabel) rhsLayout.addWidget(self.__rhsResetButton) bothLayout = QVBoxLayout() bothLayout.addLayout(lhsLayout) bothLayout.addLayout(rhsLayout) revisionLayout.addLayout(bothLayout) self.__diffButton = QToolButton() self.__diffButton.setText("Diff") self.__diffButton.setFocusPolicy(Qt.NoFocus) self.__diffButton.setEnabled(False) self.__diffButton.clicked.connect(self.__onDiff) revisionLayout.addWidget(self.__diffButton) vboxLayout.addWidget(compareGroupbox) # Log table logHeaderFrame = QFrame() logHeaderFrame.setFrameStyle(QFrame.StyledPanel) logHeaderFrame.setAutoFillBackground(True) self.__setLightPalette(logHeaderFrame) logHeaderFrame.setFixedHeight(24) logHeaderLayout = QHBoxLayout() logHeaderLayout.setContentsMargins(3, 0, 0, 0) logHeaderLayout.addWidget(QLabel("Subversion log of " + self.__path)) logHeaderFrame.setLayout(logHeaderLayout) vboxLayout.addWidget(logHeaderFrame) self.__logView = QTreeWidget() self.__logView.setAlternatingRowColors(True) self.__logView.setRootIsDecorated(False) self.__logView.setItemsExpandable(False) self.__logView.setSortingEnabled(True) self.__logView.setItemDelegate(NoOutlineHeightDelegate(4)) self.__logViewHeader = QTreeWidgetItem( ["", "", "Revision", "Date", "Author", "Message"]) self.__logView.setHeaderItem(self.__logViewHeader) self.__logView.header().setSortIndicator(REVISION_COL, Qt.AscendingOrder) self.__logView.itemChanged.connect(self.__onLogViewChanged) vboxLayout.addWidget(self.__logView) # Diff part diffHeaderFrame = QFrame() diffHeaderFrame.setFrameStyle(QFrame.StyledPanel) diffHeaderFrame.setAutoFillBackground(True) self.__setLightPalette(diffHeaderFrame) diffHeaderFrame.setFixedHeight(24) diffLabel = QLabel("Diff") diffExpandingSpacer = QSpacerItem(10, 10, QSizePolicy.Expanding) self.__showHideDiffButton = QToolButton() self.__showHideDiffButton.setAutoRaise(True) self.__showHideDiffButton.setIcon(PixmapCache().getIcon('less.png')) self.__showHideDiffButton.setFixedSize(20, 20) self.__showHideDiffButton.setToolTip("Show diff") self.__showHideDiffButton.setFocusPolicy(Qt.NoFocus) self.__showHideDiffButton.clicked.connect(self.__onShowHideDiff) diffLayout = QHBoxLayout() diffLayout.setContentsMargins(3, 0, 0, 0) diffLayout.addWidget(diffLabel) diffLayout.addSpacerItem(diffExpandingSpacer) diffLayout.addWidget(self.__showHideDiffButton) diffHeaderFrame.setLayout(diffLayout) self.__diffViewer = DiffTabWidget() self.__diffViewer.setHTML(self.NODIFF) self.__diffViewer.setVisible(False) vboxLayout.addWidget(diffHeaderFrame) vboxLayout.addWidget(self.__diffViewer) # Buttons at the bottom buttonBox = QDialogButtonBox(self) buttonBox.setOrientation(Qt.Horizontal) buttonBox.setStandardButtons(QDialogButtonBox.Ok) buttonBox.button(QDialogButtonBox.Ok).setDefault(True) buttonBox.accepted.connect(self.close) vboxLayout.addWidget(buttonBox) return
def __createLayout(self): """ Creates the dialog layout """ self.resize(700, 300) self.setSizeGripEnabled(True) layout = QVBoxLayout(self) gridLayout = QGridLayout() # Columns colsLabel = QLabel("Columns") self.__colsEdit = QLineEdit() self.__colsEdit.setText(str(self.__settings.settings["COL_LIMIT"])) self.__colsEdit.setToolTip(self.__settings.getDescription("COL_LIMIT")) self.__colsEdit.textChanged.connect(self.__validate) gridLayout.addWidget(colsLabel, 0, 0, 1, 1) gridLayout.addWidget(self.__colsEdit, 0, 1, 1, 1) font = self.__colsEdit.font() font.setFamily(GlobalData().skin.baseMonoFontFace) self.__colsEdit.setFont(font) # Assignment assignmentLabel = QLabel("Assignment") self.__assignmentEdit = QLineEdit() self.__assignmentEdit.setText(self.__settings.settings["ASSIGNMENT"]) self.__assignmentEdit.setToolTip( self.__settings.getDescription("ASSIGNMENT")) self.__assignmentEdit.textChanged.connect(self.__validate) gridLayout.addWidget(assignmentLabel, 0, 3, 1, 1) gridLayout.addWidget(self.__assignmentEdit, 0, 4, 1, 1) self.__assignmentEdit.setFont(font) # Function parameters assignment funcAssignLabel = QLabel("Function params\nassignment") self.__funcAssignEdit = QLineEdit() self.__funcAssignEdit.setText( self.__settings.settings["FUNCTION_PARAM_ASSIGNMENT"]) self.__funcAssignEdit.setToolTip( self.__settings.getDescription("FUNCTION_PARAM_ASSIGNMENT")) self.__funcAssignEdit.textChanged.connect(self.__validate) gridLayout.addWidget(funcAssignLabel, 1, 0, 1, 1) gridLayout.addWidget(self.__funcAssignEdit, 1, 1, 1, 1) self.__funcAssignEdit.setFont(font) # Dictionary separator dictSepLabel = QLabel("Dictionary separator") self.__dictSepEdit = QLineEdit() self.__dictSepEdit.setText(self.__settings.settings["DICT_COLON"]) self.__dictSepEdit.setToolTip( self.__settings.getDescription("DICT_COLON")) self.__dictSepEdit.textChanged.connect(self.__validate) gridLayout.addWidget(dictSepLabel, 1, 3, 1, 1) gridLayout.addWidget(self.__dictSepEdit, 1, 4, 1, 1) self.__dictSepEdit.setFont(font) # Slice separator sliceSepLabel = QLabel("Slice separator") self.__sliceSepEdit = QLineEdit() self.__sliceSepEdit.setText(self.__settings.settings["SLICE_COLON"]) self.__sliceSepEdit.setToolTip( self.__settings.getDescription("SLICE_COLON")) self.__sliceSepEdit.textChanged.connect(self.__validate) gridLayout.addWidget(sliceSepLabel, 2, 0, 1, 1) gridLayout.addWidget(self.__sliceSepEdit, 2, 1, 1, 1) self.__sliceSepEdit.setFont(font) # Interpreter inLabel = QLabel("Interpreter") self.__inEdit = QLineEdit() self.__inEdit.setText(self.__settings.settings["SHEBANG"]) self.__inEdit.setToolTip(self.__settings.getDescription("SHEBANG")) self.__inEdit.textChanged.connect(self.__validate) gridLayout.addWidget(inLabel, 2, 3, 1, 1) gridLayout.addWidget(self.__inEdit, 2, 4, 1, 1) self.__inEdit.setFont(font) # Coding spec codingLabel = QLabel("Output encoding") self.__outCodingEdit = QLineEdit() self.__outCodingEdit.setText(self.__settings.settings["CODING"]) self.__outCodingEdit.setToolTip( self.__settings.getDescription("CODING")) self.__outCodingEdit.textChanged.connect(self.__validate) gridLayout.addWidget(codingLabel, 3, 0, 1, 1) gridLayout.addWidget(self.__outCodingEdit, 3, 1, 1, 1) self.__outCodingEdit.setFont(font) # Src coding comment srcCodingLabel = QLabel("File encoding\ncomment") self.__srcCodingEdit = QLineEdit() self.__srcCodingEdit.setText(self.__settings.settings["CODING_SPEC"]) self.__srcCodingEdit.setToolTip( self.__settings.getDescription("CODING_SPEC")) self.__srcCodingEdit.textChanged.connect(self.__validate) gridLayout.addWidget(srcCodingLabel, 3, 3, 1, 1) gridLayout.addWidget(self.__srcCodingEdit, 3, 4, 1, 1) self.__srcCodingEdit.setFont(font) layout.addLayout(gridLayout) # Boilerplate boilLabel = QLabel("Boilerplate ") boilLabel.setAlignment(Qt.AlignTop) self.__boilEdit = QTextEdit() self.__boilEdit.setPlainText(self.__settings.settings["BOILERPLATE"]) self.__boilEdit.setToolTip( self.__settings.getDescription("BOILERPLATE")) self.__boilEdit.setTabChangesFocus(True) self.__boilEdit.setAcceptRichText(False) self.__boilEdit.setFont(font) self.__boilEdit.textChanged.connect(self.__validate) boilLayout = QHBoxLayout() boilLayout.addWidget(boilLabel) boilLayout.addWidget(self.__boilEdit) layout.addLayout(boilLayout) # Now check boxes and radio buttons cbGridLayout = QGridLayout() self.__keepBlanks = QCheckBox("Keep blank lines") self.__keepBlanks.setChecked( self.__settings.settings["KEEP_BLANK_LINES"]) self.__keepBlanks.setToolTip( self.__settings.getDescription("KEEP_BLANK_LINES")) cbGridLayout.addWidget(self.__keepBlanks, 0, 0, 1, 1) self.__addBlanks = QCheckBox("Add blank lines around comments") self.__addBlanks.setChecked( self.__settings.settings["ADD_BLANK_LINES_AROUND_COMMENTS"]) self.__addBlanks.setToolTip( self.__settings.getDescription("ADD_BLANK_LINES_AROUND_COMMENTS")) cbGridLayout.addWidget(self.__addBlanks, 0, 2, 1, 1) self.__justifyDoc = QCheckBox("Left justify doc strings") self.__justifyDoc.setChecked( self.__settings.settings["LEFTJUST_DOC_STRINGS"]) self.__justifyDoc.setToolTip( self.__settings.getDescription("LEFTJUST_DOC_STRINGS")) cbGridLayout.addWidget(self.__justifyDoc, 1, 0, 1, 1) self.__wrapDoc = QCheckBox("Wrap long doc strings") self.__wrapDoc.setChecked(self.__settings.settings["WRAP_DOC_STRINGS"]) self.__wrapDoc.setToolTip( self.__settings.getDescription("WRAP_DOC_STRINGS")) cbGridLayout.addWidget(self.__wrapDoc, 1, 2, 1, 1) self.__recodeStrings = QCheckBox("Try to decode strings") self.__recodeStrings.setChecked( self.__settings.settings["RECODE_STRINGS"]) self.__recodeStrings.setToolTip( self.__settings.getDescription("RECODE_STRINGS")) cbGridLayout.addWidget(self.__recodeStrings, 2, 0, 1, 1) self.__splitStrings = QCheckBox("Split long strings") self.__splitStrings.setChecked( self.__settings.settings["CAN_SPLIT_STRINGS"]) self.__splitStrings.setToolTip( self.__settings.getDescription("CAN_SPLIT_STRINGS")) cbGridLayout.addWidget(self.__splitStrings, 2, 2, 1, 1) self.__keepUnassignedConst = QCheckBox("Keep unassigned constants") self.__keepUnassignedConst.setChecked( self.__settings.settings["KEEP_UNASSIGNED_CONSTANTS"]) self.__keepUnassignedConst.setToolTip( self.__settings.getDescription("KEEP_UNASSIGNED_CONSTANTS")) cbGridLayout.addWidget(self.__keepUnassignedConst, 3, 0, 1, 1) self.__parenTuple = QCheckBox("Parenthesize tuple display") self.__parenTuple.setChecked( self.__settings.settings["PARENTHESIZE_TUPLE_DISPLAY"]) self.__parenTuple.setToolTip( self.__settings.getDescription("PARENTHESIZE_TUPLE_DISPLAY")) cbGridLayout.addWidget(self.__parenTuple, 3, 2, 1, 1) self.__javaListDedent = QCheckBox("Java style list dedent") self.__javaListDedent.setChecked( self.__settings.settings["JAVA_STYLE_LIST_DEDENT"]) self.__javaListDedent.setToolTip( self.__settings.getDescription("JAVA_STYLE_LIST_DEDENT")) cbGridLayout.addWidget(self.__javaListDedent, 4, 0, 1, 1) layout.addLayout(cbGridLayout) # Quotes radio buttons quotesGroupbox = QGroupBox("Quotes") sizePolicy = QSizePolicy(QSizePolicy.Expanding, QSizePolicy.Preferred) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth( \ quotesGroupbox.sizePolicy().hasHeightForWidth() ) quotesGroupbox.setSizePolicy(sizePolicy) layoutQG = QVBoxLayout(quotesGroupbox) self.__use1RButton = QRadioButton( "Use apostrophes instead of quotes for string literals", quotesGroupbox) layoutQG.addWidget(self.__use1RButton) self.__use2RButton = QRadioButton( "Use quotes instead of apostrophes for string literals", quotesGroupbox) layoutQG.addWidget(self.__use2RButton) self.__useAsIsRButton = QRadioButton("Do not make changes", quotesGroupbox) layoutQG.addWidget(self.__useAsIsRButton) use1 = self.__settings.settings["SINGLE_QUOTED_STRINGS"] use2 = self.__settings.settings["DOUBLE_QUOTED_STRINGS"] if use1: self.__use1RButton.setChecked(True) elif use2: self.__use2RButton.setChecked(True) else: self.__useAsIsRButton.setChecked(True) layout.addWidget(quotesGroupbox) fontMetrics = QFontMetrics(font) editWidth = fontMetrics.width("iso8859-10 ") + 20 self.__colsEdit.setFixedWidth(editWidth) self.__funcAssignEdit.setFixedWidth(editWidth) self.__sliceSepEdit.setFixedWidth(editWidth) self.__outCodingEdit.setFixedWidth(editWidth) # Buttons at the bottom buttonBox = QDialogButtonBox(self) buttonBox.setOrientation(Qt.Horizontal) buttonBox.setStandardButtons(QDialogButtonBox.Cancel) self.__resetButton = buttonBox.addButton("Reset to Default", QDialogButtonBox.ActionRole) self.__resetButton.setToolTip( "Mostly as recommended by PEP 8 / PEP 308") self.__resetButton.clicked.connect(self.__reset) self.__tidyButton = buttonBox.addButton("Tidy", QDialogButtonBox.ActionRole) self.__tidyButton.setToolTip("Save settings and run PythonTidy") self.__tidyButton.setDefault(True) self.__tidyButton.clicked.connect(self.__saveAndAccept) layout.addWidget(buttonBox) buttonBox.rejected.connect(self.close) return
class MyForm(QWidget): def __init__(self): QWidget.__init__(self) # setGeometry(x_pos, y_pos, width, height) self.setGeometry(100, 150, 500, 460) self.readSettings() self.setWindowTitle(APPNAME + ' ' + VERSION + " - " + self.chanells_path ) self.icon_path = get_icon_resource(imgdata_png_main) # self.icon_path = os.path.join(os.path.dirname(sys.argv[0]), 'chanchan.ico') self.icon = QIcon(self.icon_path) self.setWindowIcon(self.icon) self.chanells = None self.chanells_all = None self.num_channels = 0 # the player subprocess process self.proc = None self.proc_sopcast = None self.is_sopcast = False self.is_playlist = False self.on_top = False self.cache_size = CACHE_SIZE_DEFAULT if not self.haveSeenFirstTime: copy_default_playlist() self.haveSeenFirstTime = True # saving settings should be done in closeEvent() instead! # settings = QSettings(QSettings.IniFormat, QSettings.UserScope, "xh", "chanchan") # settings.setValue("seen_first_time", QVariant(self.haveSeenFirstTime)) # settings.sync() # use a grid layout for the widgets grid = QGridLayout() # bind the button click to a function reference # new connect style, needs PyQt 4.5+ ###btn_load.clicked.connect(self.load_channels_data) btn_play = QPushButton("&Play") btn_play.setToolTip("Click to play selected stream") btn_play.clicked.connect(self.on_button_play) btn_kill = QPushButton("&Stop") btn_kill.setToolTip("Click to stop current player") btn_kill.clicked.connect(self.kill_proc) self.listbox = QListWidget() # new connect style, needs PyQt 4.5+ self.listbox.clicked.connect(self.on_select) self.listbox.doubleClicked.connect(self.on_double_click) # attach right-click handler self.listbox.setContextMenuPolicy(Qt.ActionsContextMenu) #self.listbox.setContextMenuPolicy(Qt.CustomContextMenu) #http://talk.maemo.org/showthread.php?t=64034 self.actionCopyUrl = QAction("Copy URL", self.listbox) self.connect(self.actionCopyUrl, SIGNAL("triggered()"), self.copy_to_clipboard) self.actionPlay = QAction("Play", self.listbox) self.actionPlay.setShortcut("Ctrl+P") self.actionRestartPlayer = QAction("Restart SopPlayer", self.listbox) self.actionReloadChannels = QAction("Reload List", self.listbox) self.actionEditChannels = QAction("Edit Playlist", self.listbox) self.actionEditChannels.setShortcut("Ctrl+E") self.actionOpenChannelsFile = QAction("Open Playlist File", self.listbox) self.actionEditSource = QAction("Edit Source", self.listbox) self.actionAbout = QAction("About %s" % APPNAME, self.listbox) self.actionQuit = QAction("Quit", self) self.actionQuit.setShortcut("Ctrl+Q") self.search = QLineEdit() self.connect(self.search, SIGNAL("textChanged(QString)"), self.on_search_text_change) # clear button self.clear_button = QToolButton() self.clear_button.setIcon(get_icon_resource(imgdata_png_clear)) self.clear_button.setIconSize(QSize(16, 16)) self.clear_button.setCursor(Qt.ArrowCursor) self.clear_button.setAutoRaise(True) self.clear_button.setEnabled(False) # self.main_layout.addWidget(self.clear_button) self.connect(self.clear_button, SIGNAL("clicked()"), self.clear_search_text) self.listbox.addAction(self.actionPlay) self.listbox.addAction(self.actionRestartPlayer) self.listbox.addAction(self.actionCopyUrl) self.listbox.addAction(self.actionOpenChannelsFile) self.listbox.addAction(self.actionReloadChannels) self.listbox.addAction(self.actionEditChannels) self.listbox.addAction(self.actionEditSource) self.listbox.addAction(self.actionAbout) self.addAction(self.actionQuit) self.connect(self.actionPlay, SIGNAL("triggered()"), self.on_double_click) self.connect(self.actionRestartPlayer, SIGNAL("triggered()"), self.restart_sopplayer) self.connect(self.actionReloadChannels, SIGNAL("triggered()"), lambda: self.load_channels_data(self.chanells_path)) self.connect(self.actionEditChannels, SIGNAL("triggered()"), lambda: self.edit_file(str(self.chanells_path))) self.connect(self.actionOpenChannelsFile, SIGNAL("triggered()"), lambda: self.load_channels_data()) self.connect(self.actionEditSource, SIGNAL("triggered()"), lambda: self.edit_file(path=sys.argv[0], editor=EDITOR)) self.connect(self.actionQuit, SIGNAL("triggered()"), self.close) self.connect(self.actionAbout, SIGNAL("triggered()"), lambda: QMessageBox.about(self, 'About %s' % APPNAME, ''' <h4>%s version %s</h4> <p> Created by <i>%s</i></p> <p><a href="mailto:%s">%s</a></p> <p><a href="%s">chanchantv.googlecode.com</a></p> ''' % (APPNAME, VERSION, AUTHOR, EMAIL.decode('base64'), EMAIL, WEB)) # warning(self, APPNAME, 'No playlist selected') ) # self.listbox.connect(self.listbox, SIGNAL("customContextMenuRequested(QPoint)"), # self.on_right_click) # self.txtChanInfo = QLineEdit() # self.txtChanInfo.setReadOnly(True) # self.logWindow = QTextEdit() # self.logWindow.setSizePolicyx(QSizePolicy.) self.status = QLabel() self.status.setText('channels') # ADD BEVELED BORDER::self.status.setFrameStyle(QFrame.Panel | QFrame.Sunken) self.groupBox = QGroupBox("Engine") sizePolicy = QSizePolicy(QSizePolicy.Minimum, QSizePolicy.Minimum) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.groupBox.sizePolicy().hasHeightForWidth()) self.groupBox.setSizePolicy(sizePolicy) # self.groupBox.setAutoFillBackground(True) self.rbMplayer = QRadioButton('&Mplayer', self.groupBox) self.rbMplayer.setChecked(True) self.rbMplayer.setToolTip("Play with Mplayer") #self.rbGstreamer = QRadioButton('gst&123', self.groupBox) self.rbVlc = QRadioButton('&Vlc', self.groupBox) self.rbVlc.setToolTip("Play with VLC") self.rbTotem = QRadioButton('&Totem', self.groupBox) self.rbTotem.setToolTip("Play with Totem") self.rbBrowser = QRadioButton('&Browser', self.groupBox) self.rbBrowser.setToolTip("Open URL in web browser") self.hBoxTop = QHBoxLayout() self.hBoxTop.addWidget(self.rbMplayer) #self.hBoxTop.addWidget(self.rbGstreamer) self.hBoxTop.addWidget(self.rbVlc) self.hBoxTop.addWidget(self.rbTotem) self.hBoxTop.addWidget(self.rbBrowser) self.groupBox.setLayout(self.hBoxTop) self.cbPlaylistFlag = QCheckBox('Playlist') self.cbPlaylistFlag.setToolTip('Resource is a M3U, ASX or PLS playlist') self.cbFullScreen = QCheckBox('Full Screen') self.cbFullScreen.setToolTip('Start video in full screen') self.cbFullScreen.setChecked(self.is_full_screen) self.cbInhibitScreensaver = QCheckBox('Inhibit Screensaver') self.cbInhibitScreensaver.setToolTip('Disable screensaver while playing stream') self.cbInhibitScreensaver.setChecked(self.is_inhibit_screen) # addWidget(widget, row, column, rowSpan, columnSpan) grid.addWidget(self.groupBox, 0, 0, 1, 3) grid.addWidget(btn_play, 0, 4, 1, 1) grid.addWidget(btn_kill, 0, 5, 1, 1) grid.addWidget(self.search, 1, 0, 1, 4) grid.addWidget(self.clear_button, 1, 3, 1, 1) grid.addWidget(self.status, 1, 5, 1, 1) # listbox spans over 5 rows and 2 columns grid.addWidget(self.listbox, 2, 0, 5, 6) ## BAD grid.addWidget(self.hBoxFlags, 6, 0, 1, 1) grid.addWidget(self.cbPlaylistFlag, 7, 0, 1, 1) grid.addWidget(self.cbFullScreen, 7, 1, 1, 1) grid.addWidget(self.cbInhibitScreensaver, 7, 2, 1, 1) # grid.addWidget(self.txtChanInfo, 7, 0, 1, 6) # grid.addWidget(self.logWindow, 8, 0, 1, 6) self.setLayout(grid) self.search.setFocus() self.load_channels_data(self.chanells_path) def clear_search_text(self): print '------clear-search-text---------' self.search.clear() def on_search_text_change(self): if not self.chanells_all: # only need to do this once self.chanells_all = list(self.chanells) text = str(self.search.text()).strip() print 'DBG', len(text), len(self.chanells_all) if len(text) > 1: self.clear_button.setEnabled(True) filtered_list = self.get_matching_items(text.lower(), self.chanells_all) if len(filtered_list): self.chanells = filtered_list else: self.chanells = [] else: self.chanells = list(self.chanells_all) self.clear_button.setEnabled(False) self.load_channels_data(None, False) def get_matching_items(self, needle, haystack): 'search for a substring in channel list' matches = [] found_in_meta = False last_meta_item = None for ch in haystack: is_meta = ch.startswith('#') if is_meta and not needle in ch.lower(): last_meta_item = ch if needle in ch.lower(): if is_meta: found_in_meta = True elif not found_in_meta and last_meta_item not in matches: matches.append(last_meta_item) matches.append(ch) elif found_in_meta: if not is_meta: matches.append(ch) else: found_in_meta = False return matches def closeEvent(self, event): self.writeSettings() print 'closeEvent: Saving settings and exiting...' return quit_msg = "Are you sure you want to exit the program?" reply = QMessageBox.question(self, 'Message', quit_msg, QMessageBox.Yes, QMessageBox.No) if reply == QMessageBox.Yes: self.writeSettings() event.accept() QApplication.instance().quit() else: event.ignore() def keyPressEvent(self, event): if event.key() == Qt.Key_Escape: self.search.setFocus() self.search.selectAll() def copy_to_clipboard(self): clipboard = QApplication.clipboard() clipboard.setText(self.listbox.currentItem().text()) def load_channels_data(self, new_path=None, read_from_file=True): MediaItem.num_items = 0 if read_from_file: if not new_path: new_path = str(self.get_new_filename()) if not new_path: # QMessageBox.warning(self, APPNAME, 'No playlist selected') return try: fh = codecs.open(new_path, 'r', 'utf8') self.chanells = [ch.strip() for ch in fh.readlines()] except Exception as e: show_gui_error(e, 'File not found', 'Error opening playlist "%s" \n\n%s' % (new_path, str(e))) return self.chanells_path = new_path self.chanells = [ch.strip() for ch in self.chanells] self.chanells_all = None self.listbox.clear() current_params = None for chan in self.chanells: if not len(chan) or chan.strip() == '#EXTM3U': continue item = MediaItem(chan, self.icon) if item.is_meta: '''if a metadata line, then store and apply to all the following non-metadata items ''' current_params = item.params elif current_params: item.params = current_params item.setStatusTip(chan) self.listbox.addItem(item) self.setWindowTitle(APPNAME + ' ' + VERSION + ' - ' + self.chanells_path) self.status.setText(str(MediaItem.num_items) + ' channels') def edit_file(self, path, editor=EDITOR): if ' ' in editor: editor = editor.split(' ') subprocess.Popen([editor, path]) def get_new_filename(self): return QFileDialog.getOpenFileName(self, 'Load Playlist file', '', "Playlist files (*.m3u);;All Files (*.*);") def on_button_play(self): # self.on_select() self.play_media() def on_select(self): """an item in the listbox has been clicked/selected""" current_item = self.listbox.currentItem() if not current_item: return current_channel = current_item and str(current_item.text()) or '<no channel>' self.is_playlist = current_channel[-4:].lower() in ['.m3u', '.asx', '.pls'] # if current_channel.startswith('sop:'): #self.rbMplayer.setChecked(True) # self.cache_size = '1024' if current_item.params: 'set params for current channel according to metadata line' myparams = current_item.params.keys() if 'player' in myparams: player = current_item.params['player'].lower() if player == 'totem': self.rbTotem.setChecked(True) elif player == MPLAYER: self.rbMplayer.setChecked(True) #elif player == 'gst123': # self.rbGstreamer.setChecked(True) elif player == VLC: self.rbVlc.setChecked(True) elif player in ('browser', 'web'): self.rbBrowser.setChecked(True) if 'playlist' in myparams or 'pl' in myparams: self.is_playlist = current_item.params['playlist'].lower() in GOOD_VALUES if 'fullscreen' in myparams or 'fs' in myparams: self.is_full_screen = current_item.params['fullscreen'].lower() in GOOD_VALUES else: self.is_full_screen = IS_FULLSCREEN_DEFAULT if 'ontop' in myparams or 'top' in myparams: self.on_top = current_item.params['top'].lower() in GOOD_VALUES else: self.on_top = IS_ON_TOP_DEFAULT if 'cache' in myparams: self.cache_size = current_item.params['cache'] else: self.cache_size = CACHE_SIZE_DEFAULT if 'exec' in myparams or 'shell' in myparams: # set shell options: console or no console self.exec_shell_command = current_item.params['exec'] # # if 'exec' in myparams: # self.executable_name = current_item.params['exec'] self.cbPlaylistFlag.setChecked(self.is_playlist) # only setting True state if self.is_full_screen: self.cbFullScreen.setChecked(True) def on_double_click(self): self.play_media() """an item in the listbox has been double-clicked""" def restart_sopplayer(self): # if self.rbVlc.isChecked(): # if vlc_remote_command('testing if vlc remote is running...'): # vlc_remote_command('add %s' % SOPCAST_SERVER_URL) # vlc_remote_command('volume 200') # else: self.play_media(start_sopcast_server=False) def play_media(self, start_sopcast_server=True): current_item = self.listbox.currentItem() if not current_item: return current_channel = str(current_item.text()) if self.proc and self.proc.pid: self.kill_proc() args = [] if self.cbInhibitScreensaver.isChecked(): suspend_screensaver() ################ RUN SHELL COMMAND ############# if 'exec' in current_item.params: show_console = current_item.params['exec'].lower() == 'console' if show_console: args += ['xterm', '-geometry', '45x8-20+400', '-e'] args += [current_channel.strip()] self.proc = subprocess.Popen(args, stdout=subprocess.PIPE) print 'DBG:', self.proc else: args.insert(0, current_item.params['exec']) args += [current_channel.strip()] self.proc = subprocess.Popen(args, shell=True) return # don't use xterm for vlc, totem if (self.rbMplayer.isChecked()): if not is_win32 and not is_osx: args += ['xterm', '-geometry', '45x8-20+150', '-e'] self.is_sopcast = current_channel.lower().startswith('sop://') if self.is_sopcast: if start_sopcast_server: # args_sopcast = ['xterm', '-geometry', '45x8-20+400', '-e', sopcast_binary, current_channel, SOPCAST_LISTEN_PORT, SOPCAST_SERVER_PORT] try: print 'Waiting for sopcast server starup at %s ...' % current_channel self.proc_sopcast = run_command_in_new_terminal( sopcast_binary, current_channel, SOPCAST_LISTEN_PORT, SOPCAST_SERVER_PORT) # except Exception as e: show_gui_error(e, """ERROR! Sopcast executable not found or other error: To install sopcast support on Linux, run: %s""" % (SOPCAST_INSTALL_HOWTO)) return current_channel = SOPCAST_SERVER_URL time.sleep(SOPCAST_SERVER_WAIT_SECS) if self.rbMplayer.isChecked(): if is_win32: args = ['cmd', '/c', MPLAYER_PATH_WIN32, '-cache-min', CACHE_SIZE_MIN, '-cache', self.cache_size] else: args += [MPLAYER, '-cache-min', CACHE_SIZE_MIN, '-cache', self.cache_size] self.on_top and args.append('-ontop') self.cbFullScreen.isChecked() and args.append('-fs') self.cbPlaylistFlag.isChecked() and args.append('-playlist') #elif self.rbGstreamer.isChecked(): # args.append('gst123') # if '.m3u' in current_channel: # current_channel = getFirstUrl(current_channel) elif self.rbVlc.isChecked(): if is_win32: if os.path.exists(VLC_PATH_WIN32): args = [VLC_PATH_WIN32] elif os.path.exists(VLC_PATH_WIN32_CUSTOM): args = [VLC_PATH_WIN32_CUSTOM] elif is_osx: args = [VLC_PATH_OSX]#, '--one-instance'] else: args = ['vlc']#, '--one-instance'] # if vlc_remote_command('testing if vlc remote is running...'): # # print 'VLC Remote Control not running, starting new VLC instance...' # vlc_remote_command('add %s' % current_channel) # vlc_remote_command('volume 150') # return # else: # print 'VLC Remote Control not running, starting new VLC instance...' self.cbFullScreen.isChecked() and args.append('--fullscreen') args.append('--video-on-top') elif self.rbTotem.isChecked(): args += ['totem', '--replace'] # FIXME!!! totem segfaults when started with the --fullscreen switch # self.cbFullScreen.isChecked() and args.append('--fullscreen') elif self.rbBrowser.isChecked(): open_webbrowser(current_channel) return args.append(current_channel) print args try: if is_win32: #self.proc = subprocess.Popen(args, creationflags=subprocess.STARTF_USESHOWWINDOW, cwd=os.path.dirname(sys.argv[0])) ## TODO: get right options on win32 #http://stackoverflow.com/questions/7006238/how-do-i-hide-the-console-when-i-use-os-system-or-subprocess-call #startupinfo = subprocess.STARTUPINFO() #startupinfo.dwFlags |= subprocess.STARTF_USESHOWWINDOW #subprocess.call('taskkill /F /IM exename.exe', startupinfo=startupinfo) self.proc = subprocess.Popen(args, shell=True, cwd=os.path.dirname(sys.argv[0])) else: self.proc = subprocess.Popen(args, stdout=subprocess.PIPE, stdin=subprocess.PIPE) print 'DBG:', type(self.proc), self.proc # console_data = self.proc.stdout.read() # self.logWindow.setText(console_data) except Exception as e: show_gui_error(e, "ERROR! Selected player not available:\n") def kill_proc(self): if self.cbInhibitScreensaver.isChecked(): resume_screensaver() if self.proc and not self.rbVlc.isChecked(): try: self.proc.kill() except: pass if self.is_sopcast and self.proc_sopcast: try: self.proc_sopcast.kill() os.system('killall sopcast') except: pass def readSettings(self): # store settings object self.settings = QSettings(QSettings.IniFormat, QSettings.UserScope, "xh", "chanchan") pos = self.settings.value("pos", QVariant(QPoint(200, 200))).toPoint() size = self.settings.value("size", QVariant(QSize(400, 400))).toSize() self.resize(size) self.move(pos) self.chanells_path = self.settings.contains('channels_file') and str(self.settings.value("channels_file").toString()) or get_default_channels_path() self.is_inhibit_screen = self.settings.contains('inhibit_screen') and self.settings.value("inhibit_screen").toBool() self.is_full_screen = self.settings.contains('fullscreen') and self.settings.value("fullscreen").toBool() self.haveSeenFirstTime = self.settings.contains('seen_first_time') and self.settings.value("seen_first_time").toBool() def writeSettings(self): settings = QSettings(QSettings.IniFormat, QSettings.UserScope, "xh", "chanchan") settings.setValue("pos", QVariant(self.pos())) settings.setValue("size", QVariant(self.size())) settings.setValue("channels_file", QVariant(self.chanells_path)) settings.setValue("inhibit_screen", QVariant(self.cbInhibitScreensaver.isChecked())) settings.setValue("fullscreen", QVariant(self.cbFullScreen.isChecked())) settings.setValue("seen_first_time", QVariant(self.haveSeenFirstTime)) settings.sync()