public function __construct() { parent::__construct(); $this->iconsPath = c(PQNAME)->iconsPath; $openProject = $this->create_button(tr('Open project'), 'open.png', '', false); $qwidgetProject = $this->create_button(tr('Qt QWidget application'), 'widget.png', SLOT('new_QWidget_project()')); $qmainwindowProject = $this->create_button(tr('Qt QMainWindow application'), 'window.png', SLOT('new_QMainWindow_project()')); $consoleProject = $this->create_button(tr('Console application'), 'console.png', '', false); $silentProject = $this->create_button(tr('Hidden application'), 'hidden.png', '', false); //$label1 = new QLabel($this); //$label1->text = tr('Open project'); $label2 = new QLabel($this); $label2->text = tr('New project'); $label2->styleSheet = 'font-weight:bold;font-size:12px;margin-bottom:4px;margin-left:-2px;'; $hline = new QFrame($this); $hline->frameShape = QFrame::HLine; $hline->frameShadow = QFrame::Raised; $newProject = new QWidget($this); // NewProject name $newProjectName_label = new QLabel($newProject); $newProjectName_label->text = tr('Project name:'); $newProjectName_label->styleSheet = 'margin-left:1px;'; $newProjectName_lineEdit = new QLineEdit($newProject); $newProjectName_lineEdit->text = $this->get_def_project_name(); $newProjectName_lineEdit->setRegExpValidator('[a-zA-Z0-9\\-\\_]*'); $this->newProjectName_lineEdit = $newProjectName_lineEdit; // NewProject FileDialog $newProjectFD_label = new QLabel($newProject); $newProjectFD_label->text = tr('Create in:'); $newProjectFD_label->styleSheet = 'margin-left:1px;'; $newProjectFD_lineEdit = new QLineEdit($newProject); $newProjectFD_lineEdit->readOnly = true; $newProjectFD_lineEdit->text = $this->get_def_dir(); $newProjectFD_button = new QPushButton($newProject); $newProjectFD_button->text = tr('View...'); $newProjectFD_button->connect(SIGNAL('clicked()'), $this, SLOT('open_newProjectFD()')); // NewProject layout $newProject_layout = new QGridLayout(); $newProject_layout->setMargin(0); $newProject_layout->addWidget($newProjectName_label, 0, 0); $newProject_layout->addWidget($newProjectName_lineEdit, 0, 1, 1, 2); $newProject_layout->addWidget(new QWidget($newProject), 1, 1, 1, 3); // Empty widget uses as small spacer $newProject_layout->addWidget($newProjectFD_label, 2, 0); $newProject_layout->addWidget($newProjectFD_lineEdit, 2, 1); $newProject_layout->addWidget($newProjectFD_button, 2, 2); $newProject->setLayout($newProject_layout); $this->newProjectFD = new QFileDialog(); $this->newProjectFD_lineEdit = $newProjectFD_lineEdit; $emptyw0 = new QWidget($this); $emptyw0->minimumHeight = 8; $emptyw0->maximumHeight = 8; $layout = new QGridLayout(); $layout->addWidget($openProject, 1, 0, 1, 2); $layout->addWidget($hline, 2, 0, 1, 2); $layout->addWidget($label2, 3, 0, 1, 2); $layout->addWidget($newProject, 4, 0, 1, 2); $layout->addWidget($emptyw0, 5, 0, 1, 2); $layout->addWidget($qwidgetProject, 6, 0); $layout->addWidget($qmainwindowProject, 6, 1); $layout->addWidget($consoleProject, 7, 0); $layout->addWidget($silentProject, 7, 1); $this->minimumWidth = 500; $this->windowFlags = Qt::Dialog | Qt::MSWindowsFixedSizeDialogHint; $this->setLayout($layout); $this->windowTitle = 'PQCreator'; }
private function createRootItemWidget($property, $object, $tree, $itemIndex) { $widget = null; switch ($property['type']) { case 'mixed': case 'int': $widget = new QLineEdit(); if (isset($property['value']) && !$defaultPropertiesLoaded) { $widget->text = $property['value']; } else { $widget->text = $object->{$property}['property']; } // set validator if section exists if (isset($property['validator'])) { $widget->setRegExpValidator($property['validator']); } else { // if property type is `int` and validator section not exists, // then set a default validator for integers if ($property['type'] == 'int') { $widget->setRegExpValidator('[0-9]*'); } } $widget->connect(SIGNAL('textChanged(QString)'), $this, SLOT('setObjectProperty(QString)')); break; case 'bool': $widget = new QCheckBox(); if (isset($property['value']) && !$defaultPropertiesLoaded) { $widget->checked = $property['value']; } else { $widget->checked = $object->{$property}['property']; } $widget->connect(SIGNAL('toggled(bool)'), $this, SLOT('setObjectProperty(bool)')); break; case 'combo-list': foreach ($property['list'] as $listItemProperty) { $childItemIndex = $tree->addItem($itemIndex, $listItemProperty['title']); $childItemWidget = $this->createRootItemWidget($listItemProperty, $object, $tree, $itemIndex); if ($childItemWidget != null) { $childItemWidget->__pq_property_ = $property['property']; $childItemWidget->__pq_propertyType_ = $property['type']; $childItemWidget->objectName = "__pq_property_combo_" . $property['property'] . "_" . $listItemProperty['property']; $tree->setItemWidget($childItemIndex, 1, $childItemWidget); } } break; case 'combo': $widget = new QComboBox(); if (isset($property['list']) && is_array($property['list'])) { $index = 0; foreach ($property['list'] as $list) { if (isset($list['title']) && isset($list['value'])) { $cPropertyValue = "cPropertyValue_{$index}"; $qvalue = "__pq_property_qvalue_{$index}"; $widget->addItem($list['title']); $widget->{$cPropertyValue} = $list['value']; $widget->{$qvalue} = $list['qvalue']; if (isset($property['defaultIndex'])) { $widget->currentIndex = $property['defaultIndex']; } $index++; } } } $widget->connect(SIGNAL('currentIndexChanged(int)'), $this, SLOT('setObjectProperty(int)')); break; } return $widget; }