26 #include <QItemEditorCreator>
27 #include <QFileDialog>
28 #include <QMessageBox>
43 #include "ui_ObjectInspector.h"
47 QWidget(myParent), _model(0)
49 _ui =
new Ui::ObjectInspector;
55 _ui->view->horizontalHeader()->setContextMenuPolicy(Qt::ActionsContextMenu);
56 _hidePrio =
new QAction(tr(
"hide priority column"),
this);
61 _ui->view->horizontalHeader()->insertAction(0,
_hidePrio);
70 _ui->view->setItemDelegateForColumn(1, delegate1);
72 QStyledItemDelegate* delegate2 =
new QStyledItemDelegate(
this);
73 QItemEditorCreatorBase* creator =
74 new QStandardItemEditorCreator<PriorityBox>();
75 QItemEditorFactory* ef =
new QItemEditorFactory(
76 *QItemEditorFactory::defaultFactory());
77 ef->registerEditor(QVariant::UInt, creator);
78 delegate2->setItemEditorFactory(ef);
79 _ui->view->setItemDelegateForColumn(2, delegate2);
109 if (!
_model || !isEnabled())
118 if (!
_model || !isEnabled())
121 if (oldPath.isEmpty())
122 oldPath = QDir::currentPath();
123 QString fileName = QFileDialog::getSaveFileName(0, tr(
"Save File"),
124 oldPath, tr(
"ParameterFile (*.wrp)"));
125 if (!fileName.isEmpty())
130 if (
_ui->view &&
_ui->view->model()) {
132 settings.beginGroup(
"ObjectInspector");
135 settings.setValue(
"column0",
_ui->view->columnWidth(0));
136 settings.setValue(
"column1",
_ui->view->columnWidth(1));
137 settings.setValue(
"column2",
_ui->view->columnWidth(2));
140 settings.setValue(
"column2hidden",
_hidePrio->isChecked());
147 if (
_ui->view->model()) {
149 settings.beginGroup(
"ObjectInspector");
151 _hidePrio->setChecked(settings.value(
"column2hidden",
false).toBool());
153 _ui->view->setColumnWidth(0, settings.value(
"column0", 250).toInt());
154 _ui->view->setColumnWidth(1, settings.value(
"column1", 250).toInt());
155 _ui->view->setColumnWidth(2, settings.value(
"column2", 90).toInt());
170 disconnect(
_model, 0,
this, 0);
173 _ui->view->setModel(newModel);
186 QValidator* oldValidator = (QValidator*)
_ui->prefix->validator();
187 _ui->prefix->setValidator(newValidator);
189 oldValidator->deleteLater();
204 connect(
_model, SIGNAL(prefixChanged(QString)),
206 connect(
_model, SIGNAL(metaInfoChanged(
bool)),
208 connect(
_model, SIGNAL(useMetaInfoChanged(
bool)),
210 connect(
_model, SIGNAL(onlyParamsChanged(
bool)),
214 _ui->prefix->clear();
215 _ui->comment->clear();
226 _ui->prefix->setEnabled(on);
227 _ui->buttonGroupBox->setVisible(on);
232 if (!QFileInfo(fname).
exists()) {
233 fname = QFileDialog::getOpenFileName(0, tr(
"Open File"),
235 tr(
"ParameterFile (*.*)"));
247 _model->insertRow(
model()->rowCount(QModelIndex()), QModelIndex());
256 QItemSelectionModel* selectionModel =
_ui->view->selectionModel();
260 std::stack<int> rowStack;
261 for (uint i = 0; i < rows; i++)
262 if (selectionModel->rowIntersectsSelection(i, QModelIndex()))
265 if (!rowStack.size()) {
266 QMessageBox::warning(
this, tr(
"delete failed"), tr(
267 "Please select an item to delete first."));
272 while (rowStack.size() > 0) {
273 _model->removeRow(rowStack.top(), QModelIndex());
281 QMessageBox mbox(QMessageBox::Question, tr(
"confirm delete"), tr(
282 "Do you really want to delete the model content?"));
283 mbox.addButton(QMessageBox::Yes);
284 mbox.addButton(QMessageBox::No);
285 mbox.setDefaultButton(QMessageBox::No);
286 mbox.setEscapeButton(QMessageBox::No);
288 if (mbox.result() == QMessageBox::Yes) {
297 QItemSelectionModel* selectionModel =
_ui->view->selectionModel();
298 uint rows =
_ui->view->model()->rowCount();
301 std::stack<int> rowStack;
302 for (uint i = 0; i < rows; i++)
303 if (selectionModel->rowIntersectsSelection(i, QModelIndex()))
306 if (!rowStack.size()) {
312 if (rowStack.size() == 1) {
313 before =
_model->
data(
_model->index(rowStack.top(), 2), Qt::EditRole).toInt();
319 if (dlg.exec() == QDialog::Rejected)
325 if (priority != before || rowStack.size() > 1) {
327 while (rowStack.size() > 0) {
343 _ui->filterBox->setCurrentIndex(0);
357 QString comment =
_ui->comment->toPlainText();
358 comment.replace(QRegExp(
"\n"),
"<br/>");
365 _ui->view->setColumnHidden(2,h);
367 _ui->view->resizeColumnsToContents();
368 _ui->view->setColumnWidth(0,
_ui->view->width()/2.5);
369 _ui->view->setColumnWidth(1,
_ui->view->width()/2.5);
376 _ui->prefix->setText(prefix);
379 comment.replace(QRegExp(
"<br/?>"),
"\n");
380 _ui->comment->setPlainText(comment);
381 _ui->pageComment->setEnabled(
true);
384 _ui->comment->setPlainText(tr(
"no node selected"));
385 _ui->pageComment->setEnabled(
false);
398 _ui->onlyParams->setChecked(
false);
403 _ui->onlyParams->setEnabled(state);
413 _ui->useMetadata->setEnabled(state);
417 _ui->useMetadata->setChecked(state);
421 _ui->onlyParams->setChecked(state);
void setOnlyParams(bool value)
Set property _onlyparams.
void reactivate()
Reactivate all following plugins.
Declaration of class FileManager.
void _storeViewSettings() const
save settings like column widths
virtual void openMetaData(QString fName=QString())
Open file containing metadata.
virtual void save(const QString &fileName="")
Save model content to a text file.
Declaration of class PriorityBox.
int selection() const
Get selected index.
void setMinPriority(int value)
Set property _minPriority.
void on_ActivateAllButton_clicked()
Reactivate all consecutive plugins.
Declaration of class PrefixValidator.
Ui::ObjectInspector * _ui
designer gui
QAction * _hidePrio
hide priority column
virtual QString setPrefix(const QString &prefix)
Change prefix.
Declaration of class ParameterFileModel.
void handle_model_useMetaInfoChanged(bool state)
update useMetadata checkbox state
delegate to handle parameter types and offer specialized editors
bool metaInfoValid() const
check for available metaInfos
void on_setPriorityButton_clicked()
set priority
QString getValue(QString parName) const
Get a parameter from the underlying parameter file.
static const FileManager & instance()
get a reference to the file Manager instance
ParameterFileModel * _model
Used model to display.
void statusMessage(const QString &msg, int timeout=3000)
Send status message.
const QParameterFile & parameterFile() const
Get const pointer of ParameterFile.
Declaration of class InspectorDelegate.
void on_clearButton_clicked()
Clear model.
virtual void saveFileAs() const
Show SaveAs-Dialog and save File to the selected location.
Declaration of class QParameterFile.
QString prefix() const
Get property _prefix.
void on_comment_textChanged()
handle comment changes
void on_onlyParams_toggled(bool state)
handle onlyParams checkbox changes
virtual void loadMetaInfo(const QString &fileName)
load metaFile
void modelChanged(ParameterFileModel *model)
Inform about changed model.
virtual int rowCount(const QModelIndex &parent=QModelIndex()) const
Return number of table rows.
void handle_model_prefixChanged(const QString &text)
update prefix & comment text
void delParam()
delete parameter
void on_filterBox_activated(int index)
filter by priority
This model serves to provide a model frontend to access a ParameterFile instance. ...
virtual QVariant data(const QModelIndex &index, int role=Qt::DisplayRole) const
Access to item content.
ParameterFileModel * model() const
Get value of property _model.
void on_useMetadata_toggled(bool state)
handle useMetadata checkbox changes
bool prefixValid() const
Check prefix.
virtual ~ObjectInspector()
default destructor
virtual bool load(const QString &fName="")
Load model content from parameterFile.
QString fileName() const
Get property _fileName.
void on_resetParamButton_clicked()
reset parameter
void on_deleteButton_clicked()
Delete selected parameter.
virtual void saveFile() const
Save File to it's old location.
virtual void setEdit(bool on)
Enable/Disable structural editing.
virtual void openFile(QString fName=QString())
Open given file.
void setValue(QString parName, QString value)
Set a parameter in the underlying parameter file.
Validator for prefix edit widgets.
ObjectInspector(QWidget *parent=0, ParameterFileModel *model=0, bool hideTools=false)
Default constructor, setting parent widget.
bool useMetaInfo() const
Get property _useMetadata;.
QWidget * getViewer()
get inspector viewer widget
void _loadViewSettings()
restore settings like column widths
bool onlyParams() const
Get property _onlyparams.
void setUseMetaInfo(bool value)
Set property _useMetadata.
QMutex * _commentFieldMutex
lock for changes of comments
virtual void clear()
Clear ParameterFile content.
void setPrioColumnHidden(bool hide)
handle context menu of horizontal header
void on_prefix_textChanged(QString text)
handle prefix text field changes
Declaration of class ObjectInspector.
void handle_model_onlyParamsChanged(bool state)
update onlyParams checkbox state
Declaration of class PriorityDialog.
virtual void setModel(ParameterFileModel *model)
Change used model.
void on_resetFilterButton_clicked()
reset filter
int minPriority() const
Get property _minPriority.
virtual bool setData(const QModelIndex &index, const QVariant &value, int role=Qt::EditRole)
Set item content.
void on_addButton_clicked()
Add new Parameter.
void handle_model_metaInfoChanged(bool state)
enable/disable useMetadata checkbox