Changed: #1150 Code Cleanup
This commit is contained in:
parent
ad7e7ccc23
commit
7eca51b274
32 changed files with 2476 additions and 2250 deletions
|
@ -2,8 +2,8 @@ INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR} ${LI
|
||||||
INCLUDE( ${QT_USE_FILE} )
|
INCLUDE( ${QT_USE_FILE} )
|
||||||
|
|
||||||
FILE(GLOB GEORGES_EDITOR_SRC *.cpp)
|
FILE(GLOB GEORGES_EDITOR_SRC *.cpp)
|
||||||
SET(GEORGES_EDITOR_HDR georges_dirtree_dialog.h georges_treeview_dialog.h georgesform_model.h main_window.h
|
SET(GEORGES_EDITOR_HDR georges_dirtree_dialog.h georges_treeview_dialog.h main_window.h
|
||||||
log_dialog.h objectviewer_dialog.h settings_dialog.h)
|
objectviewer_dialog.h settings_dialog.h)
|
||||||
SET(GEORGES_EDITOR_UIS settings_form.ui objectviewer_form.ui log_form.ui georges_treeview_form.ui georges_dirtree_form.ui)
|
SET(GEORGES_EDITOR_UIS settings_form.ui objectviewer_form.ui log_form.ui georges_treeview_form.ui georges_dirtree_form.ui)
|
||||||
SET(GEORGES_EDITOR_RCS georges_editor_qt.qrc)
|
SET(GEORGES_EDITOR_RCS georges_editor_qt.qrc)
|
||||||
|
|
||||||
|
|
|
@ -1,19 +1,19 @@
|
||||||
/*
|
/*
|
||||||
Georges Editor Qt
|
Georges Editor Qt
|
||||||
Copyright (C) 2010 Adrian Jaekel <aj at elane2k dot com>
|
Copyright (C) 2010 Adrian Jaekel <aj at elane2k dot com>
|
||||||
|
|
||||||
This program is free software: you can redistribute it and/or modify
|
This program is free software: you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
the Free Software Foundation, either version 3 of the License, or
|
the Free Software Foundation, either version 3 of the License, or
|
||||||
(at your option) any later version.
|
(at your option) any later version.
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful,
|
This program is distributed in the hope that it will be useful,
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
GNU General Public License for more details.
|
GNU General Public License for more details.
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
You should have received a copy of the GNU General Public License
|
||||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "filesystem_model.h"
|
#include "filesystem_model.h"
|
||||||
|
@ -21,26 +21,31 @@
|
||||||
#include <QtGui/QApplication>
|
#include <QtGui/QApplication>
|
||||||
#include <QtGui/QStyle>
|
#include <QtGui/QStyle>
|
||||||
|
|
||||||
namespace NLQT {
|
namespace NLQT
|
||||||
|
{
|
||||||
|
|
||||||
CFileSystemModel::CFileSystemModel(QString ldPath, QObject *parent)
|
CFileSystemModel::CFileSystemModel(QString ldPath, QObject *parent)
|
||||||
: QFileSystemModel(parent),
|
: QFileSystemModel(parent),
|
||||||
_ldPath(ldPath){
|
_ldPath(ldPath)
|
||||||
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
CFileSystemModel::~CFileSystemModel() {
|
CFileSystemModel::~CFileSystemModel()
|
||||||
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
QVariant CFileSystemModel::data(const QModelIndex& index, int role) const {
|
QVariant CFileSystemModel::data(const QModelIndex& index, int role) const {
|
||||||
|
|
||||||
if (role == Qt::DecorationRole) {
|
if (role == Qt::DecorationRole)
|
||||||
|
{
|
||||||
if (_ldPath.isEmpty())
|
if (_ldPath.isEmpty())
|
||||||
return QVariant();
|
return QVariant();
|
||||||
if (isDir(index))
|
if (isDir(index))
|
||||||
return QApplication::style()->standardIcon(QStyle::SP_DirIcon);
|
return QApplication::style()->standardIcon(QStyle::SP_DirIcon);
|
||||||
}
|
}
|
||||||
if (_ldPath.isEmpty() && role == Qt::DisplayRole) {
|
if (_ldPath.isEmpty() && role == Qt::DisplayRole)
|
||||||
|
{
|
||||||
if (index.parent().isValid())
|
if (index.parent().isValid())
|
||||||
return QVariant();
|
return QVariant();
|
||||||
return QString("Set a correct leveldesign path ...");
|
return QString("Set a correct leveldesign path ...");
|
||||||
|
@ -55,10 +60,14 @@ namespace NLQT {
|
||||||
|
|
||||||
int CFileSystemModel::rowCount(const QModelIndex &parent) const
|
int CFileSystemModel::rowCount(const QModelIndex &parent) const
|
||||||
{
|
{
|
||||||
if (_ldPath.isEmpty()) {
|
if (_ldPath.isEmpty())
|
||||||
if(parent.isValid()) {
|
{
|
||||||
|
if(parent.isValid())
|
||||||
|
{
|
||||||
return 0;
|
return 0;
|
||||||
} else {
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
return qMin(QFileSystemModel::rowCount(parent),1);
|
return qMin(QFileSystemModel::rowCount(parent),1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,19 +1,19 @@
|
||||||
/*
|
/*
|
||||||
Georges Editor Qt
|
Georges Editor Qt
|
||||||
Copyright (C) 2010 Adrian Jaekel <aj at elane2k dot com>
|
Copyright (C) 2010 Adrian Jaekel <aj at elane2k dot com>
|
||||||
|
|
||||||
This program is free software: you can redistribute it and/or modify
|
This program is free software: you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
the Free Software Foundation, either version 3 of the License, or
|
the Free Software Foundation, either version 3 of the License, or
|
||||||
(at your option) any later version.
|
(at your option) any later version.
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful,
|
This program is distributed in the hope that it will be useful,
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
GNU General Public License for more details.
|
GNU General Public License for more details.
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
You should have received a copy of the GNU General Public License
|
||||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef FILESYSTEM_MODEL_H
|
#ifndef FILESYSTEM_MODEL_H
|
||||||
|
@ -21,7 +21,8 @@
|
||||||
|
|
||||||
#include <QtGui/QFileSystemModel>
|
#include <QtGui/QFileSystemModel>
|
||||||
|
|
||||||
namespace NLQT {
|
namespace NLQT
|
||||||
|
{
|
||||||
|
|
||||||
class CFileSystemModel : public QFileSystemModel
|
class CFileSystemModel : public QFileSystemModel
|
||||||
{
|
{
|
||||||
|
|
|
@ -0,0 +1,302 @@
|
||||||
|
/*
|
||||||
|
Georges Editor Qt
|
||||||
|
Copyright (C) 2010 Adrian Jaekel <aj at elane2k dot com>
|
||||||
|
|
||||||
|
This program is free software: you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation, either version 3 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "formdelegate.h"
|
||||||
|
|
||||||
|
// NeL includes
|
||||||
|
#include <nel/misc/debug.h>
|
||||||
|
#include <nel/georges/u_type.h>
|
||||||
|
#include <nel/georges/u_form_elm.h>
|
||||||
|
|
||||||
|
// Qt includes
|
||||||
|
#include <QSpinBox>
|
||||||
|
#include <QLineEdit>
|
||||||
|
#include <QDoubleSpinBox>
|
||||||
|
#include <QColorDialog>
|
||||||
|
#include <QComboBox>
|
||||||
|
#include <QApplication>
|
||||||
|
#include <QTextDocument>
|
||||||
|
#include <QAbstractTextDocumentLayout>
|
||||||
|
#include <QPainter>
|
||||||
|
// Project includes
|
||||||
|
#include "georgesform_model.h"
|
||||||
|
#include "formitem.h"
|
||||||
|
|
||||||
|
namespace NLQT
|
||||||
|
{
|
||||||
|
|
||||||
|
FormDelegate::FormDelegate(QObject *parent)
|
||||||
|
: QStyledItemDelegate(parent)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
QWidget *FormDelegate::createEditor(QWidget *parent,
|
||||||
|
const QStyleOptionViewItem & option ,
|
||||||
|
const QModelIndex &index) const
|
||||||
|
{
|
||||||
|
CFormItem *item = static_cast<CFormItem*>(index.internalPointer());
|
||||||
|
QString value = item->data(1).toString();
|
||||||
|
|
||||||
|
if (value.isEmpty())
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
const NLGEORGES::UType *type = dynamic_cast<const CGeorgesFormModel *>(index.model())->
|
||||||
|
getItem(index)->getFormElm()->getType();
|
||||||
|
if(type)
|
||||||
|
{
|
||||||
|
int numDefinitions = type->getNumDefinition();
|
||||||
|
|
||||||
|
if (numDefinitions)
|
||||||
|
{
|
||||||
|
std::string l, v;
|
||||||
|
QString label,value;
|
||||||
|
|
||||||
|
QComboBox *editor = new QComboBox(parent);
|
||||||
|
for (int i = 0; i < numDefinitions; i++)
|
||||||
|
{
|
||||||
|
type->getDefinition(i,l,v);
|
||||||
|
label = l.c_str();
|
||||||
|
value = v.c_str();
|
||||||
|
editor->addItem(label);
|
||||||
|
}
|
||||||
|
return editor;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
switch (type->getType())
|
||||||
|
{
|
||||||
|
case NLGEORGES::UType::UnsignedInt:
|
||||||
|
case NLGEORGES::UType::SignedInt:
|
||||||
|
{
|
||||||
|
QSpinBox *editor = new QSpinBox(parent);
|
||||||
|
|
||||||
|
//QString min = QString(type->getMin().c_str());
|
||||||
|
//QString max = QString(type->getMax().c_str());
|
||||||
|
//QString inc = QString(type->getIncrement().c_str());
|
||||||
|
//nldebug(QString("min %1 max %2 inc %3").arg(min).arg(max).arg(inc).toStdString().c_str());
|
||||||
|
|
||||||
|
// TODO: use saved min/max values
|
||||||
|
editor->setMinimum(-99999);
|
||||||
|
editor->setMaximum(99999);
|
||||||
|
editor->setSingleStep(1);
|
||||||
|
return editor;
|
||||||
|
}
|
||||||
|
case NLGEORGES::UType::Double:
|
||||||
|
{
|
||||||
|
QDoubleSpinBox *editor = new QDoubleSpinBox(parent);
|
||||||
|
|
||||||
|
//QString min = QString(type->getMin().c_str());
|
||||||
|
//QString max = QString(type->getMax().c_str());
|
||||||
|
//QString inc = QString(type->getIncrement().c_str());
|
||||||
|
//nldebug(QString("min %1 max %2 inc %3").arg(min).arg(max).arg(inc).toStdString().c_str());
|
||||||
|
|
||||||
|
// TODO: use saved min/max values
|
||||||
|
editor->setMinimum(-99999);
|
||||||
|
editor->setMaximum(99999);
|
||||||
|
editor->setSingleStep(0.1);
|
||||||
|
editor->setDecimals(1);
|
||||||
|
return editor;
|
||||||
|
}
|
||||||
|
case NLGEORGES::UType::Color:
|
||||||
|
{
|
||||||
|
return new QColorDialog();
|
||||||
|
}
|
||||||
|
default: // UType::String
|
||||||
|
{
|
||||||
|
QLineEdit *editor = new QLineEdit(parent);
|
||||||
|
return editor;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void FormDelegate::setEditorData(QWidget *editor,
|
||||||
|
const QModelIndex &index) const
|
||||||
|
{
|
||||||
|
const NLGEORGES::UType *type = dynamic_cast<const CGeorgesFormModel *>(index.model())->
|
||||||
|
getItem(index)->getFormElm()->getType();
|
||||||
|
int numDefinitions = type->getNumDefinition();
|
||||||
|
QString value = index.model()->data(index, Qt::DisplayRole).toString();
|
||||||
|
|
||||||
|
if (numDefinitions)
|
||||||
|
{
|
||||||
|
QComboBox *cb = static_cast<QComboBox*>(editor);
|
||||||
|
cb->setCurrentIndex(cb->findText(value));
|
||||||
|
//cb->setIconSize()
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
switch (type->getType())
|
||||||
|
{
|
||||||
|
case NLGEORGES::UType::UnsignedInt:
|
||||||
|
case NLGEORGES::UType::SignedInt:
|
||||||
|
{
|
||||||
|
QSpinBox *spinBox = static_cast<QSpinBox*>(editor);
|
||||||
|
spinBox->setValue((int)value.toDouble());
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case NLGEORGES::UType::Double:
|
||||||
|
{
|
||||||
|
QDoubleSpinBox *spinBox = static_cast<QDoubleSpinBox*>(editor);
|
||||||
|
spinBox->setValue(value.toDouble());
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case NLGEORGES::UType::Color:
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
{
|
||||||
|
QLineEdit *textEdit = static_cast<QLineEdit*>(editor);
|
||||||
|
textEdit->setText(value);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void FormDelegate::setModelData(QWidget *editor, QAbstractItemModel *model,
|
||||||
|
const QModelIndex &index) const
|
||||||
|
{
|
||||||
|
const NLGEORGES::UType *type = dynamic_cast<const CGeorgesFormModel *>(index.model())->
|
||||||
|
getItem(index)->getFormElm()->getType();
|
||||||
|
int numDefinitions = type->getNumDefinition();
|
||||||
|
|
||||||
|
if (numDefinitions)
|
||||||
|
{
|
||||||
|
QComboBox *comboBox = static_cast<QComboBox*>(editor);
|
||||||
|
QString value = comboBox->currentText();
|
||||||
|
QString oldValue = index.model()->data(index, Qt::DisplayRole).toString();
|
||||||
|
if (value == oldValue)
|
||||||
|
{
|
||||||
|
// nothing's changed
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
nldebug(QString("setModelData from %1 to %2")
|
||||||
|
.arg(oldValue).arg(value).toStdString().c_str());
|
||||||
|
model->setData(index, value, Qt::EditRole);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
switch (type->getType())
|
||||||
|
{
|
||||||
|
case NLGEORGES::UType::UnsignedInt:
|
||||||
|
case NLGEORGES::UType::SignedInt:
|
||||||
|
{
|
||||||
|
QSpinBox *spinBox = static_cast<QSpinBox*>(editor);
|
||||||
|
int value = spinBox->value();
|
||||||
|
QString oldValue = index.model()->data(index, Qt::DisplayRole).toString();
|
||||||
|
if (QString("%1").arg(value) == oldValue)
|
||||||
|
{
|
||||||
|
// nothing's changed
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
nldebug(QString("setModelData from %1 to %2")
|
||||||
|
.arg(oldValue).arg(value).toStdString().c_str());
|
||||||
|
model->setData(index, value, Qt::EditRole);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case NLGEORGES::UType::Double:
|
||||||
|
{
|
||||||
|
QDoubleSpinBox *spinBox = static_cast<QDoubleSpinBox*>(editor);
|
||||||
|
double value = spinBox->value();
|
||||||
|
QString oldValue = index.model()->data(index, Qt::DisplayRole).toString();
|
||||||
|
if (QString("%1").arg(value) == oldValue)
|
||||||
|
{
|
||||||
|
// nothing's changed
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
nldebug(QString("setModelData from %1 to %2")
|
||||||
|
.arg(oldValue).arg(value).toStdString().c_str());
|
||||||
|
model->setData(index, value, Qt::EditRole);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case NLGEORGES::UType::Color:
|
||||||
|
{
|
||||||
|
break; // TODO
|
||||||
|
}
|
||||||
|
default: // UType::String
|
||||||
|
{
|
||||||
|
QLineEdit *textEdit = static_cast<QLineEdit*>(editor);
|
||||||
|
QString value = textEdit->text();
|
||||||
|
QString oldValue = index.model()->data(index, Qt::DisplayRole).toString();
|
||||||
|
if (value == oldValue)
|
||||||
|
{
|
||||||
|
// nothing's changed
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
nldebug(QString("setModelData from %1 to %2")
|
||||||
|
.arg(oldValue).arg(value).toStdString().c_str());
|
||||||
|
model->setData(index, value, Qt::EditRole);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void FormDelegate::updateEditorGeometry(QWidget *editor,
|
||||||
|
const QStyleOptionViewItem &option, const QModelIndex &index) const
|
||||||
|
{
|
||||||
|
QRect r = option.rect;
|
||||||
|
editor->setGeometry(r);
|
||||||
|
//option.decorationAlignment = QStyleOptionViewItem::Right;
|
||||||
|
}
|
||||||
|
|
||||||
|
void FormDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const
|
||||||
|
{
|
||||||
|
QStyleOptionViewItemV4 optionV4 = option;
|
||||||
|
optionV4.decorationPosition = QStyleOptionViewItem::Right;
|
||||||
|
//optionV4.decorationSize = QSize(32,32);
|
||||||
|
initStyleOption(&optionV4, index);
|
||||||
|
|
||||||
|
QStyledItemDelegate::paint(painter,optionV4,index);
|
||||||
|
|
||||||
|
//QStyle *style = optionV4.widget? optionV4.widget->style() : QApplication::style();
|
||||||
|
|
||||||
|
//QTextDocument doc;
|
||||||
|
//doc.setHtml(optionV4.text);
|
||||||
|
|
||||||
|
///// Painting item without text
|
||||||
|
//optionV4.text = QString();
|
||||||
|
//style->drawControl(QStyle::CE_ItemViewItem, &optionV4, painter);
|
||||||
|
|
||||||
|
//QAbstractTextDocumentLayout::PaintContext ctx;
|
||||||
|
|
||||||
|
//// Highlighting text if item is selected
|
||||||
|
//if (optionV4.state & QStyle::State_Selected)
|
||||||
|
// ctx.palette.setColor(QPalette::Text, optionV4.palette.color(QPalette::Active, QPalette::HighlightedText));
|
||||||
|
|
||||||
|
//QRect textRect = style->subElementRect(QStyle::SE_ItemViewItemText, &optionV4);
|
||||||
|
//painter->save();
|
||||||
|
//painter->translate(textRect.topLeft());
|
||||||
|
//painter->setClipRect(textRect.translated(-textRect.topLeft()));
|
||||||
|
//doc.documentLayout()->draw(painter, ctx);
|
||||||
|
//painter->restore();
|
||||||
|
}
|
||||||
|
|
||||||
|
} /* namespace NLQT */
|
|
@ -0,0 +1,45 @@
|
||||||
|
/*
|
||||||
|
Georges Editor Qt
|
||||||
|
Copyright (C) 2010 Adrian Jaekel <aj at elane2k dot com>
|
||||||
|
|
||||||
|
This program is free software: you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation, either version 3 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef FORMDELEGATE_H
|
||||||
|
#define FORMDELEGATE_H
|
||||||
|
|
||||||
|
#include <QStyledItemDelegate>
|
||||||
|
|
||||||
|
namespace NLQT
|
||||||
|
{
|
||||||
|
|
||||||
|
class FormDelegate : public QStyledItemDelegate
|
||||||
|
{
|
||||||
|
|
||||||
|
public:
|
||||||
|
FormDelegate(QObject *parent = 0);
|
||||||
|
|
||||||
|
QWidget *createEditor(QWidget *parent, const QStyleOptionViewItem &option,
|
||||||
|
const QModelIndex &index) const;
|
||||||
|
void setEditorData(QWidget *editor, const QModelIndex &index) const;
|
||||||
|
void setModelData(QWidget *editor, QAbstractItemModel *model,
|
||||||
|
const QModelIndex &index) const;
|
||||||
|
void updateEditorGeometry(QWidget *editor,
|
||||||
|
const QStyleOptionViewItem &option, const QModelIndex &index) const;
|
||||||
|
void paint ( QPainter * painter, const QStyleOptionViewItem & option,
|
||||||
|
const QModelIndex & index ) const;
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
|
#endif // FORMDELEGATE_H
|
|
@ -24,10 +24,12 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
// NeL includes
|
// NeL includes
|
||||||
#include <nel/georges/u_type.h>
|
#include <nel/georges/u_type.h>
|
||||||
|
|
||||||
namespace NLQT {
|
namespace NLQT
|
||||||
|
{
|
||||||
|
|
||||||
CFormItem::CFormItem(NLGEORGES::UFormElm* elm, const QList<QVariant> &data, CFormItem *parent,
|
CFormItem::CFormItem(NLGEORGES::UFormElm* elm, const QList<QVariant> &data, CFormItem *parent,
|
||||||
NLGEORGES::UFormElm::TWhereIsValue wV, NLGEORGES::UFormElm::TWhereIsNode wN) {
|
NLGEORGES::UFormElm::TWhereIsValue wV, NLGEORGES::UFormElm::TWhereIsNode wN)
|
||||||
|
{
|
||||||
parentItem = parent;
|
parentItem = parent;
|
||||||
itemData = data;
|
itemData = data;
|
||||||
formElm = elm;
|
formElm = elm;
|
||||||
|
@ -35,27 +37,33 @@ namespace NLQT {
|
||||||
whereN = wN;
|
whereN = wN;
|
||||||
}
|
}
|
||||||
|
|
||||||
CFormItem::~CFormItem() {
|
CFormItem::~CFormItem()
|
||||||
|
{
|
||||||
qDeleteAll(childItems);
|
qDeleteAll(childItems);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CFormItem::appendChild(CFormItem *item) {
|
void CFormItem::appendChild(CFormItem *item)
|
||||||
|
{
|
||||||
childItems.append(item);
|
childItems.append(item);
|
||||||
}
|
}
|
||||||
|
|
||||||
CFormItem *CFormItem::child(int row) {
|
CFormItem *CFormItem::child(int row)
|
||||||
|
{
|
||||||
return childItems.value(row);
|
return childItems.value(row);
|
||||||
}
|
}
|
||||||
|
|
||||||
int CFormItem::childCount() const {
|
int CFormItem::childCount() const
|
||||||
|
{
|
||||||
return childItems.count();
|
return childItems.count();
|
||||||
}
|
}
|
||||||
|
|
||||||
int CFormItem::columnCount() const {
|
int CFormItem::columnCount() const
|
||||||
|
{
|
||||||
return itemData.count();
|
return itemData.count();
|
||||||
}
|
}
|
||||||
|
|
||||||
QVariant CFormItem::data(int column) const {
|
QVariant CFormItem::data(int column) const
|
||||||
|
{
|
||||||
return itemData.value(column);
|
return itemData.value(column);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -64,22 +72,27 @@ namespace NLQT {
|
||||||
return parentItem;
|
return parentItem;
|
||||||
}
|
}
|
||||||
|
|
||||||
int CFormItem::row() const {
|
int CFormItem::row() const
|
||||||
|
{
|
||||||
if (parentItem)
|
if (parentItem)
|
||||||
return parentItem->childItems.indexOf(const_cast<CFormItem*>(this));
|
return parentItem->childItems.indexOf(const_cast<CFormItem*>(this));
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool CFormItem::setData(int column, const QVariant &value) {
|
bool CFormItem::setData(int column, const QVariant &value)
|
||||||
|
{
|
||||||
if (column < 0 || column >= itemData.size())
|
if (column < 0 || column >= itemData.size())
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
itemData[column] = value;
|
itemData[column] = value;
|
||||||
if (formElm->isAtom()) {
|
if (formElm->isAtom())
|
||||||
|
{
|
||||||
const NLGEORGES::UType *type = formElm->getType();
|
const NLGEORGES::UType *type = formElm->getType();
|
||||||
if (type) {
|
if (type)
|
||||||
switch (type->getType()) {
|
{
|
||||||
|
switch (type->getType())
|
||||||
|
{
|
||||||
case NLGEORGES::UType::UnsignedInt:
|
case NLGEORGES::UType::UnsignedInt:
|
||||||
case NLGEORGES::UType::SignedInt:
|
case NLGEORGES::UType::SignedInt:
|
||||||
case NLGEORGES::UType::Double:
|
case NLGEORGES::UType::Double:
|
||||||
|
|
|
@ -1,19 +1,19 @@
|
||||||
/*
|
/*
|
||||||
Georges Editor Qt
|
Georges Editor Qt
|
||||||
Copyright (C) 2010 Adrian Jaekel <aj at elane2k dot com>
|
Copyright (C) 2010 Adrian Jaekel <aj at elane2k dot com>
|
||||||
|
|
||||||
This program is free software: you can redistribute it and/or modify
|
This program is free software: you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
the Free Software Foundation, either version 3 of the License, or
|
the Free Software Foundation, either version 3 of the License, or
|
||||||
(at your option) any later version.
|
(at your option) any later version.
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful,
|
This program is distributed in the hope that it will be useful,
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
GNU General Public License for more details.
|
GNU General Public License for more details.
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
You should have received a copy of the GNU General Public License
|
||||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef FORMITEM_H
|
#ifndef FORMITEM_H
|
||||||
|
@ -26,7 +26,8 @@
|
||||||
#include <QList>
|
#include <QList>
|
||||||
#include <QVariant>
|
#include <QVariant>
|
||||||
|
|
||||||
namespace NLQT {
|
namespace NLQT
|
||||||
|
{
|
||||||
|
|
||||||
class CFormItem
|
class CFormItem
|
||||||
|
|
||||||
|
@ -48,10 +49,12 @@ namespace NLQT {
|
||||||
CFormItem *parent();
|
CFormItem *parent();
|
||||||
bool setData(int column, const QVariant &value);
|
bool setData(int column, const QVariant &value);
|
||||||
NLGEORGES::UFormElm* getFormElm() {return formElm;};
|
NLGEORGES::UFormElm* getFormElm() {return formElm;};
|
||||||
NLGEORGES::UFormElm::TWhereIsValue CFormItem::valueFrom() {
|
NLGEORGES::UFormElm::TWhereIsValue CFormItem::valueFrom()
|
||||||
|
{
|
||||||
return whereV;
|
return whereV;
|
||||||
}
|
}
|
||||||
NLGEORGES::UFormElm::TWhereIsNode CFormItem::nodeFrom() {
|
NLGEORGES::UFormElm::TWhereIsNode CFormItem::nodeFrom()
|
||||||
|
{
|
||||||
return whereN;
|
return whereN;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -65,4 +68,4 @@ namespace NLQT {
|
||||||
}; // CFormItem
|
}; // CFormItem
|
||||||
|
|
||||||
}
|
}
|
||||||
#endif // FORMITEM_H
|
#endif // FORMITEM_H
|
||||||
|
|
|
@ -29,15 +29,20 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
using namespace NLGEORGES;
|
using namespace NLGEORGES;
|
||||||
|
|
||||||
namespace NLQT {
|
namespace NLQT
|
||||||
|
{
|
||||||
|
|
||||||
CGeorges::CGeorges(): FormLoader(0) {
|
CGeorges::CGeorges(): FormLoader(0)
|
||||||
|
{
|
||||||
FormLoader = UFormLoader::createLoader();
|
FormLoader = UFormLoader::createLoader();
|
||||||
}
|
}
|
||||||
|
|
||||||
CGeorges::~CGeorges() {}
|
CGeorges::~CGeorges()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
UForm *CGeorges::loadForm(std::string formName) {
|
UForm *CGeorges::loadForm(std::string formName)
|
||||||
|
{
|
||||||
UForm *form = FormLoader->loadForm(formName.c_str());
|
UForm *form = FormLoader->loadForm(formName.c_str());
|
||||||
|
|
||||||
return form;
|
return form;
|
||||||
|
|
|
@ -1,19 +1,19 @@
|
||||||
/*
|
/*
|
||||||
Georges Editor Qt
|
Georges Editor Qt
|
||||||
Copyright (C) 2010 Adrian Jaekel <aj at elane2k dot com>
|
Copyright (C) 2010 Adrian Jaekel <aj at elane2k dot com>
|
||||||
|
|
||||||
This program is free software: you can redistribute it and/or modify
|
This program is free software: you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
the Free Software Foundation, either version 3 of the License, or
|
the Free Software Foundation, either version 3 of the License, or
|
||||||
(at your option) any later version.
|
(at your option) any later version.
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful,
|
This program is distributed in the hope that it will be useful,
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
GNU General Public License for more details.
|
GNU General Public License for more details.
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
You should have received a copy of the GNU General Public License
|
||||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef GEORGES_H
|
#ifndef GEORGES_H
|
||||||
|
@ -38,15 +38,16 @@ namespace NLGEORGES
|
||||||
|
|
||||||
using namespace NLGEORGES;
|
using namespace NLGEORGES;
|
||||||
|
|
||||||
namespace NLQT {
|
namespace NLQT
|
||||||
|
|
||||||
/**
|
|
||||||
@class CGeorges
|
|
||||||
A CGeorges class loading and viewing sheets.
|
|
||||||
*/
|
|
||||||
class CGeorges
|
|
||||||
{
|
{
|
||||||
public:
|
|
||||||
|
/**
|
||||||
|
@class CGeorges
|
||||||
|
A CGeorges class loading and viewing sheets.
|
||||||
|
*/
|
||||||
|
class CGeorges
|
||||||
|
{
|
||||||
|
public:
|
||||||
/// Default constructor.
|
/// Default constructor.
|
||||||
CGeorges();
|
CGeorges();
|
||||||
virtual ~CGeorges();
|
virtual ~CGeorges();
|
||||||
|
@ -57,7 +58,7 @@ public:
|
||||||
// A form loader
|
// A form loader
|
||||||
UFormLoader *FormLoader;
|
UFormLoader *FormLoader;
|
||||||
|
|
||||||
};/* class CGeorges */
|
};/* class CGeorges */
|
||||||
|
|
||||||
} /* namespace NLQT */
|
} /* namespace NLQT */
|
||||||
|
|
||||||
|
|
|
@ -30,11 +30,12 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
using namespace NLMISC;
|
using namespace NLMISC;
|
||||||
|
|
||||||
namespace NLQT {
|
namespace NLQT
|
||||||
|
{
|
||||||
|
|
||||||
CGeorgesDirTreeDialog::CGeorgesDirTreeDialog(QString ldPath, QWidget *parent):
|
CGeorgesDirTreeDialog::CGeorgesDirTreeDialog(QString ldPath, QWidget *parent)
|
||||||
QDockWidget(parent),
|
:QDockWidget(parent), _ldPath(ldPath)
|
||||||
_ldPath(ldPath){
|
{
|
||||||
|
|
||||||
_ui.setupUi(this);
|
_ui.setupUi(this);
|
||||||
|
|
||||||
|
@ -72,10 +73,13 @@ namespace NLQT {
|
||||||
|
|
||||||
QFileInfo info(_ldPath);
|
QFileInfo info(_ldPath);
|
||||||
|
|
||||||
if (!_ldPath.isEmpty() && info.isDir()) {
|
if (!_ldPath.isEmpty() && info.isDir())
|
||||||
|
{
|
||||||
_dirModel->setRootPath(_ldPath);
|
_dirModel->setRootPath(_ldPath);
|
||||||
_ui.dirTree->setRootIndex(_dirModel->index(_ldPath));
|
_ui.dirTree->setRootIndex(_dirModel->index(_ldPath));
|
||||||
} else {
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
_dirModel->setRootPath(QDir::currentPath());
|
_dirModel->setRootPath(QDir::currentPath());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -87,44 +91,52 @@ namespace NLQT {
|
||||||
this, SLOT(fileSelected(QModelIndex)));*/
|
this, SLOT(fileSelected(QModelIndex)));*/
|
||||||
connect(_ui.dirTree, SIGNAL(activated(QModelIndex)),
|
connect(_ui.dirTree, SIGNAL(activated(QModelIndex)),
|
||||||
this, SLOT(fileSelected(QModelIndex)));
|
this, SLOT(fileSelected(QModelIndex)));
|
||||||
}
|
}
|
||||||
|
|
||||||
CGeorgesDirTreeDialog::~CGeorgesDirTreeDialog() {
|
CGeorgesDirTreeDialog::~CGeorgesDirTreeDialog()
|
||||||
|
{
|
||||||
delete _dirModel;
|
delete _dirModel;
|
||||||
}
|
}
|
||||||
|
|
||||||
void CGeorgesDirTreeDialog::fileSelected(QModelIndex index) {
|
void CGeorgesDirTreeDialog::fileSelected(QModelIndex index)
|
||||||
|
{
|
||||||
QString name;
|
QString name;
|
||||||
if (index.isValid() && !_dirModel->isDir(index)) {
|
if (index.isValid() && !_dirModel->isDir(index))
|
||||||
|
{
|
||||||
Q_EMIT selectedForm(_dirModel->fileName(index));
|
Q_EMIT selectedForm(_dirModel->fileName(index));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void CGeorgesDirTreeDialog::changeFile(QString file) {
|
void CGeorgesDirTreeDialog::changeFile(QString file)
|
||||||
|
{
|
||||||
QModelIndex index = _dirModel->index(file);
|
QModelIndex index = _dirModel->index(file);
|
||||||
//_dirModel->;
|
//_dirModel->;
|
||||||
_ui.dirTree->selectionModel()->select(index,QItemSelectionModel::ClearAndSelect);
|
_ui.dirTree->selectionModel()->select(index,QItemSelectionModel::ClearAndSelect);
|
||||||
_ui.dirTree->scrollTo(index,QAbstractItemView::PositionAtCenter);
|
_ui.dirTree->scrollTo(index,QAbstractItemView::PositionAtCenter);
|
||||||
fileSelected(index);
|
fileSelected(index);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CGeorgesDirTreeDialog::ldPathChanged(QString path) {
|
void CGeorgesDirTreeDialog::ldPathChanged(QString path)
|
||||||
|
{
|
||||||
_ldPath = path;
|
_ldPath = path;
|
||||||
QFileInfo info(_ldPath);
|
QFileInfo info(_ldPath);
|
||||||
|
|
||||||
delete _dirModel;
|
delete _dirModel;
|
||||||
|
|
||||||
if (!_ldPath.isEmpty() && info.isDir()) {
|
if (!_ldPath.isEmpty() && info.isDir())
|
||||||
|
{
|
||||||
_dirModel = new CFileSystemModel(_ldPath);
|
_dirModel = new CFileSystemModel(_ldPath);
|
||||||
_ui.dirTree->setModel(_dirModel);
|
_ui.dirTree->setModel(_dirModel);
|
||||||
_dirModel->setRootPath(_ldPath);
|
_dirModel->setRootPath(_ldPath);
|
||||||
_ui.dirTree->setRootIndex(_dirModel->index(_ldPath));
|
_ui.dirTree->setRootIndex(_dirModel->index(_ldPath));
|
||||||
} else {
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
_dirModel = new CFileSystemModel("");
|
_dirModel = new CFileSystemModel("");
|
||||||
_ui.dirTree->setModel(_dirModel);
|
_ui.dirTree->setModel(_dirModel);
|
||||||
_dirModel->setRootPath(QDir::currentPath());
|
_dirModel->setRootPath(QDir::currentPath());
|
||||||
_ldPath = "";
|
_ldPath = "";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
} /* namespace NLQT */
|
} /* namespace NLQT */
|
|
@ -1,19 +1,19 @@
|
||||||
/*
|
/*
|
||||||
Georges Editor Qt
|
Georges Editor Qt
|
||||||
Copyright (C) 2010 Adrian Jaekel <aj at elane2k dot com>
|
Copyright (C) 2010 Adrian Jaekel <aj at elane2k dot com>
|
||||||
|
|
||||||
This program is free software: you can redistribute it and/or modify
|
This program is free software: you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
the Free Software Foundation, either version 3 of the License, or
|
the Free Software Foundation, either version 3 of the License, or
|
||||||
(at your option) any later version.
|
(at your option) any later version.
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful,
|
This program is distributed in the hope that it will be useful,
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
GNU General Public License for more details.
|
GNU General Public License for more details.
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
You should have received a copy of the GNU General Public License
|
||||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef GEORGES_DIRTREE_DIALOG_H
|
#ifndef GEORGES_DIRTREE_DIALOG_H
|
||||||
|
@ -30,34 +30,35 @@
|
||||||
#include "ui_georges_dirtree_form.h"
|
#include "ui_georges_dirtree_form.h"
|
||||||
#include "filesystem_model.h"
|
#include "filesystem_model.h"
|
||||||
|
|
||||||
namespace NLQT {
|
namespace NLQT
|
||||||
|
|
||||||
class CGeorgesDirTreeDialog: public QDockWidget
|
|
||||||
{
|
{
|
||||||
|
|
||||||
|
class CGeorgesDirTreeDialog: public QDockWidget
|
||||||
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
public:
|
public:
|
||||||
CGeorgesDirTreeDialog(QString ldPath, QWidget *parent = 0);
|
CGeorgesDirTreeDialog(QString ldPath, QWidget *parent = 0);
|
||||||
~CGeorgesDirTreeDialog();
|
~CGeorgesDirTreeDialog();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Ui::CGeorgesDirTreeDialog _ui;
|
Ui::CGeorgesDirTreeDialog _ui;
|
||||||
|
|
||||||
CFileSystemModel *_dirModel;
|
CFileSystemModel *_dirModel;
|
||||||
QString _ldPath;
|
QString _ldPath;
|
||||||
|
|
||||||
Q_SIGNALS:
|
Q_SIGNALS:
|
||||||
void selectedForm(QString);
|
void selectedForm(QString);
|
||||||
|
|
||||||
public Q_SLOTS:
|
public Q_SLOTS:
|
||||||
void ldPathChanged(QString path);
|
void ldPathChanged(QString path);
|
||||||
|
|
||||||
private Q_SLOTS:
|
private Q_SLOTS:
|
||||||
void fileSelected(QModelIndex index);
|
void fileSelected(QModelIndex index);
|
||||||
void changeFile(QString file);
|
void changeFile(QString file);
|
||||||
|
|
||||||
friend class CMainWindow;
|
friend class CMainWindow;
|
||||||
}; /* CGEorgesDirTreeDialog */
|
}; /* CGEorgesDirTreeDialog */
|
||||||
|
|
||||||
} /* namespace NLQT */
|
} /* namespace NLQT */
|
||||||
|
|
||||||
|
|
|
@ -34,12 +34,13 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
#include "georgesform_model.h"
|
#include "georgesform_model.h"
|
||||||
#include "georgesform_proxy_model.h"
|
#include "georgesform_proxy_model.h"
|
||||||
#include "formitem.h"
|
#include "formitem.h"
|
||||||
#include "spindelegate.h"
|
#include "formdelegate.h"
|
||||||
|
|
||||||
using namespace NLMISC;
|
using namespace NLMISC;
|
||||||
using namespace NLGEORGES;
|
using namespace NLGEORGES;
|
||||||
|
|
||||||
namespace NLQT {
|
namespace NLQT
|
||||||
|
{
|
||||||
|
|
||||||
CGeorgesTreeViewDialog::CGeorgesTreeViewDialog(QWidget *parent /*= 0*/, bool emptyView /*= false*/)
|
CGeorgesTreeViewDialog::CGeorgesTreeViewDialog(QWidget *parent /*= 0*/, bool emptyView /*= false*/)
|
||||||
: QDockWidget(parent)
|
: QDockWidget(parent)
|
||||||
|
@ -50,7 +51,8 @@ namespace NLQT {
|
||||||
_ui.setupUi(this);
|
_ui.setupUi(this);
|
||||||
_ui.treeViewTabWidget->setTabEnabled (2,false);
|
_ui.treeViewTabWidget->setTabEnabled (2,false);
|
||||||
|
|
||||||
if (emptyView) {
|
if (emptyView)
|
||||||
|
{
|
||||||
_ui.treeViewTabWidget->clear();
|
_ui.treeViewTabWidget->clear();
|
||||||
setWindowTitle("Form Area");
|
setWindowTitle("Form Area");
|
||||||
}
|
}
|
||||||
|
@ -59,8 +61,8 @@ namespace NLQT {
|
||||||
_ui.checkBoxDefaults->setStyleSheet("background-color: rgba(255,0,0,30)");
|
_ui.checkBoxDefaults->setStyleSheet("background-color: rgba(255,0,0,30)");
|
||||||
_form = 0;
|
_form = 0;
|
||||||
|
|
||||||
SpinBoxDelegate *spindelegate = new SpinBoxDelegate(this);
|
FormDelegate *formdelegate = new FormDelegate(this);
|
||||||
_ui.treeView->setItemDelegateForColumn(1, spindelegate);
|
_ui.treeView->setItemDelegateForColumn(1, formdelegate);
|
||||||
|
|
||||||
|
|
||||||
connect(_ui.treeView, SIGNAL(doubleClicked (QModelIndex)),
|
connect(_ui.treeView, SIGNAL(doubleClicked (QModelIndex)),
|
||||||
|
@ -77,15 +79,18 @@ namespace NLQT {
|
||||||
//settings.setValue("dirViewGeometry", saveGeometry());
|
//settings.setValue("dirViewGeometry", saveGeometry());
|
||||||
}
|
}
|
||||||
|
|
||||||
void CGeorgesTreeViewDialog::selectedForm(QString formName) {
|
void CGeorgesTreeViewDialog::selectedForm(QString formName)
|
||||||
|
{
|
||||||
_form = Modules::georges().loadForm(formName.toStdString());
|
_form = Modules::georges().loadForm(formName.toStdString());
|
||||||
|
|
||||||
if (_form) {
|
if (_form)
|
||||||
|
{
|
||||||
UFormElm *root = 0;
|
UFormElm *root = 0;
|
||||||
root = &_form->getRootNode();
|
root = &_form->getRootNode();
|
||||||
|
|
||||||
QStringList parents;
|
QStringList parents;
|
||||||
for (uint i = 0; i < _form->getNumParent(); i++) {
|
for (uint i = 0; i < _form->getNumParent(); i++)
|
||||||
|
{
|
||||||
UForm *u = _form->getParentForm(i);
|
UForm *u = _form->getParentForm(i);
|
||||||
parents << u->getFilename().c_str();
|
parents << u->getFilename().c_str();
|
||||||
}
|
}
|
||||||
|
@ -93,7 +98,8 @@ namespace NLQT {
|
||||||
QString comments;
|
QString comments;
|
||||||
comments = _form->getComment().c_str();
|
comments = _form->getComment().c_str();
|
||||||
|
|
||||||
if (!comments.isEmpty()) {
|
if (!comments.isEmpty())
|
||||||
|
{
|
||||||
_ui.treeViewTabWidget->setTabEnabled (1,true);
|
_ui.treeViewTabWidget->setTabEnabled (1,true);
|
||||||
_ui.commentEdit->setPlainText(comments);
|
_ui.commentEdit->setPlainText(comments);
|
||||||
}
|
}
|
||||||
|
@ -103,7 +109,8 @@ namespace NLQT {
|
||||||
_form->getDependencies(dependencies);
|
_form->getDependencies(dependencies);
|
||||||
|
|
||||||
QMap< QString, QStringList> deps;
|
QMap< QString, QStringList> deps;
|
||||||
Q_FOREACH(std::string str, dependencies) {
|
Q_FOREACH(std::string str, dependencies)
|
||||||
|
{
|
||||||
QString file = str.c_str();
|
QString file = str.c_str();
|
||||||
if (file == formName) continue;
|
if (file == formName) continue;
|
||||||
deps[file.remove(0,file.indexOf(".")+1)] << str.c_str();
|
deps[file.remove(0,file.indexOf(".")+1)] << str.c_str();
|
||||||
|
@ -112,7 +119,8 @@ namespace NLQT {
|
||||||
nlinfo("dfn's %d",deps["dfn"].count());
|
nlinfo("dfn's %d",deps["dfn"].count());
|
||||||
|
|
||||||
//nlwarning(strList.join(";").toStdString().c_str());
|
//nlwarning(strList.join(";").toStdString().c_str());
|
||||||
if (root) {
|
if (root)
|
||||||
|
{
|
||||||
loadedForm = formName;
|
loadedForm = formName;
|
||||||
|
|
||||||
CGeorgesFormModel *model = new CGeorgesFormModel(root,deps,comments,parents);
|
CGeorgesFormModel *model = new CGeorgesFormModel(root,deps,comments,parents);
|
||||||
|
@ -137,8 +145,10 @@ namespace NLQT {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void CGeorgesTreeViewDialog::modifiedFile( ) {
|
void CGeorgesTreeViewDialog::modifiedFile( )
|
||||||
if (!_modified) {
|
{
|
||||||
|
if (!_modified)
|
||||||
|
{
|
||||||
_modified = true;
|
_modified = true;
|
||||||
setWindowTitle(windowTitle()+"*");
|
setWindowTitle(windowTitle()+"*");
|
||||||
Modules::mainWin().setWindowTitle(Modules::mainWin().windowTitle()+"*");
|
Modules::mainWin().setWindowTitle(Modules::mainWin().windowTitle()+"*");
|
||||||
|
@ -146,13 +156,17 @@ namespace NLQT {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void CGeorgesTreeViewDialog::write( ) {
|
void CGeorgesTreeViewDialog::write( )
|
||||||
|
{
|
||||||
|
|
||||||
COFile file;
|
COFile file;
|
||||||
std::string s = CPath::lookup(loadedForm.toStdString());
|
std::string s = CPath::lookup(loadedForm.toStdString());
|
||||||
if (file.open (s)) {
|
if (file.open (s))
|
||||||
try {
|
{
|
||||||
if (loadedForm.contains(".typ")) {
|
try
|
||||||
|
{
|
||||||
|
if (loadedForm.contains(".typ"))
|
||||||
|
{
|
||||||
//nlassert (Type != NULL);
|
//nlassert (Type != NULL);
|
||||||
|
|
||||||
//// Write the file
|
//// Write the file
|
||||||
|
@ -167,7 +181,9 @@ namespace NLQT {
|
||||||
//flushValueChange ();
|
//flushValueChange ();
|
||||||
//UpdateAllViews (NULL);
|
//UpdateAllViews (NULL);
|
||||||
//return TRUE;
|
//return TRUE;
|
||||||
} else if (loadedForm.contains(".dfn")) {
|
}
|
||||||
|
else if (loadedForm.contains(".dfn"))
|
||||||
|
{
|
||||||
//nlassert (Dfn != NULL);
|
//nlassert (Dfn != NULL);
|
||||||
|
|
||||||
//// Write the file
|
//// Write the file
|
||||||
|
@ -180,7 +196,9 @@ namespace NLQT {
|
||||||
//modify (NULL, NULL, false);
|
//modify (NULL, NULL, false);
|
||||||
//UpdateAllViews (NULL);
|
//UpdateAllViews (NULL);
|
||||||
//return TRUE;
|
//return TRUE;
|
||||||
} else {
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
nlassert (_form != NULL);
|
nlassert (_form != NULL);
|
||||||
|
|
||||||
// Write the file
|
// Write the file
|
||||||
|
@ -205,16 +223,23 @@ namespace NLQT {
|
||||||
// Get the left view
|
// Get the left view
|
||||||
//CView* pView = getLeftView ();
|
//CView* pView = getLeftView ();
|
||||||
}
|
}
|
||||||
} catch (Exception &e) {
|
}
|
||||||
|
catch (Exception &e)
|
||||||
|
{
|
||||||
nlerror("Error while loading file: %s", e.what());
|
nlerror("Error while loading file: %s", e.what());
|
||||||
}
|
}
|
||||||
} else { //if (!file.open())
|
}
|
||||||
|
else
|
||||||
|
{ //if (!file.open())
|
||||||
nlerror("Can't open the file %s for writing.", s);
|
nlerror("Can't open the file %s for writing.", s);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void CGeorgesTreeViewDialog::doubleClicked ( const QModelIndex & index ) {
|
void CGeorgesTreeViewDialog::doubleClicked ( const QModelIndex & index )
|
||||||
if (index.column() == 1) return;
|
{
|
||||||
|
if (index.column() == 1)
|
||||||
|
return;
|
||||||
|
|
||||||
CFormItem *item = static_cast<CFormItem*>(index.internalPointer());
|
CFormItem *item = static_cast<CFormItem*>(index.internalPointer());
|
||||||
|
|
||||||
QString value = item->data(1).toString();
|
QString value = item->data(1).toString();
|
||||||
|
@ -222,7 +247,8 @@ namespace NLQT {
|
||||||
|
|
||||||
if (!path.isEmpty() && !path.contains(".shape"))
|
if (!path.isEmpty() && !path.contains(".shape"))
|
||||||
Q_EMIT changeFile(path);
|
Q_EMIT changeFile(path);
|
||||||
if (path.contains(".shape")) {
|
if (path.contains(".shape"))
|
||||||
|
{
|
||||||
Modules::objView().resetScene();
|
Modules::objView().resetScene();
|
||||||
Modules::config().configRemapExtensions();
|
Modules::config().configRemapExtensions();
|
||||||
Modules::objView().loadMesh(path.toStdString(),"");
|
Modules::objView().loadMesh(path.toStdString(),"");
|
||||||
|
@ -230,37 +256,55 @@ namespace NLQT {
|
||||||
int i = 0;
|
int i = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void CGeorgesTreeViewDialog::closeEvent(QCloseEvent *event) {
|
void CGeorgesTreeViewDialog::closeEvent(QCloseEvent *event)
|
||||||
if (Modules::mainWin().getEmptyView() == this) {
|
{
|
||||||
|
if (Modules::mainWin().getEmptyView() == this)
|
||||||
|
{
|
||||||
event->ignore();
|
event->ignore();
|
||||||
} else {
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
Modules::mainWin().getTreeViewList().removeOne(this);
|
Modules::mainWin().getTreeViewList().removeOne(this);
|
||||||
if(!Modules::mainWin().getTreeViewList().size()) {
|
if(!Modules::mainWin().getTreeViewList().size())
|
||||||
|
{
|
||||||
Modules::mainWin().createEmptyView();
|
Modules::mainWin().createEmptyView();
|
||||||
}
|
}
|
||||||
deleteLater();
|
deleteLater();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void CGeorgesTreeViewDialog::showParentRows(int newState) {
|
void CGeorgesTreeViewDialog::showParentRows(int newState)
|
||||||
|
{
|
||||||
CGeorgesFormProxyModel * mp = dynamic_cast<CGeorgesFormProxyModel *>(_ui.treeView->model());
|
CGeorgesFormProxyModel * mp = dynamic_cast<CGeorgesFormProxyModel *>(_ui.treeView->model());
|
||||||
CGeorgesFormModel *m = qobject_cast<CGeorgesFormModel *>(mp->sourceModel());
|
CGeorgesFormModel *m = dynamic_cast<CGeorgesFormModel *>(mp->sourceModel());
|
||||||
|
|
||||||
for (int i = 0; i < m->rowCount(); i++) {
|
for (int i = 0; i < m->rowCount(); i++)
|
||||||
|
{
|
||||||
const QModelIndex in = m->index(i,0);
|
const QModelIndex in = m->index(i,0);
|
||||||
if (m->getItem(in)->nodeFrom() == UFormElm::NodeParentForm) {
|
if (m->getItem(in)->nodeFrom() == UFormElm::NodeParentForm)
|
||||||
if (newState == Qt::Checked) {
|
{
|
||||||
|
if (newState == Qt::Checked)
|
||||||
|
{
|
||||||
_ui.treeView->setRowHidden(in.row(),in.parent(),false);
|
_ui.treeView->setRowHidden(in.row(),in.parent(),false);
|
||||||
} else {
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
_ui.treeView->setRowHidden(in.row(),in.parent(),true);
|
_ui.treeView->setRowHidden(in.row(),in.parent(),true);
|
||||||
}
|
}
|
||||||
} else { // search childs // recursive?
|
}
|
||||||
for (int j = 0; j < m->rowCount(in); j++) {
|
else
|
||||||
|
{ // search childs // recursive?
|
||||||
|
for (int j = 0; j < m->rowCount(in); j++)
|
||||||
|
{
|
||||||
const QModelIndex in2 = m->index(j,0,in);
|
const QModelIndex in2 = m->index(j,0,in);
|
||||||
if (m->getItem(in2)->nodeFrom() == UFormElm::NodeParentForm) {
|
if (m->getItem(in2)->nodeFrom() == UFormElm::NodeParentForm)
|
||||||
if (newState == Qt::Checked) {
|
{
|
||||||
|
if (newState == Qt::Checked)
|
||||||
|
{
|
||||||
_ui.treeView->setRowHidden(in2.row(),in,false);
|
_ui.treeView->setRowHidden(in2.row(),in,false);
|
||||||
} else {
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
_ui.treeView->setRowHidden(in2.row(),in,true);
|
_ui.treeView->setRowHidden(in2.row(),in,true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -268,4 +312,5 @@ namespace NLQT {
|
||||||
} // end of search childs
|
} // end of search childs
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
} /* namespace NLQT */
|
} /* namespace NLQT */
|
|
@ -37,7 +37,8 @@ namespace NLGEORGES
|
||||||
|
|
||||||
using namespace NLGEORGES;
|
using namespace NLGEORGES;
|
||||||
|
|
||||||
namespace NLQT {
|
namespace NLQT
|
||||||
|
{
|
||||||
|
|
||||||
class CGeorgesTreeViewDialog: public QDockWidget
|
class CGeorgesTreeViewDialog: public QDockWidget
|
||||||
{
|
{
|
||||||
|
|
|
@ -1,19 +1,19 @@
|
||||||
/*
|
/*
|
||||||
Georges Editor Qt
|
Georges Editor Qt
|
||||||
Copyright (C) 2010 Adrian Jaekel <aj at elane2k dot com>
|
Copyright (C) 2010 Adrian Jaekel <aj at elane2k dot com>
|
||||||
|
|
||||||
This program is free software: you can redistribute it and/or modify
|
This program is free software: you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
the Free Software Foundation, either version 3 of the License, or
|
the Free Software Foundation, either version 3 of the License, or
|
||||||
(at your option) any later version.
|
(at your option) any later version.
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful,
|
This program is distributed in the hope that it will be useful,
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
GNU General Public License for more details.
|
GNU General Public License for more details.
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
You should have received a copy of the GNU General Public License
|
||||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "georgesform_model.h"
|
#include "georgesform_model.h"
|
||||||
|
@ -38,11 +38,12 @@
|
||||||
|
|
||||||
using namespace NLGEORGES;
|
using namespace NLGEORGES;
|
||||||
|
|
||||||
namespace NLQT {
|
namespace NLQT
|
||||||
|
{
|
||||||
|
|
||||||
CGeorgesFormModel::CGeorgesFormModel(UFormElm *rootElm, QMap< QString, QStringList> deps,
|
CGeorgesFormModel::CGeorgesFormModel(UFormElm *rootElm, QMap< QString, QStringList> deps,
|
||||||
QString comment, QStringList parents, QObject *parent) : QAbstractItemModel(parent) {
|
QString comment, QStringList parents, QObject *parent) : QAbstractItemModel(parent)
|
||||||
|
{
|
||||||
QList<QVariant> rootData;
|
QList<QVariant> rootData;
|
||||||
rootData << "Value" << "Data" << "Extra" << "Type";
|
rootData << "Value" << "Data" << "Extra" << "Type";
|
||||||
_rootElm = rootElm;
|
_rootElm = rootElm;
|
||||||
|
@ -55,18 +56,20 @@ namespace NLQT {
|
||||||
setupModelData();
|
setupModelData();
|
||||||
}
|
}
|
||||||
|
|
||||||
CGeorgesFormModel::~CGeorgesFormModel() {
|
CGeorgesFormModel::~CGeorgesFormModel()
|
||||||
|
{
|
||||||
delete _rootItem;
|
delete _rootItem;
|
||||||
}
|
}
|
||||||
|
|
||||||
/******************************************************************************/
|
/******************************************************************************/
|
||||||
|
|
||||||
QVariant CGeorgesFormModel::data(const QModelIndex &p_index, int p_role) const {
|
QVariant CGeorgesFormModel::data(const QModelIndex &p_index, int p_role) const
|
||||||
|
{
|
||||||
if (!p_index.isValid())
|
if (!p_index.isValid())
|
||||||
return QVariant();
|
return QVariant();
|
||||||
|
|
||||||
switch (p_role) {
|
switch (p_role)
|
||||||
|
{
|
||||||
case Qt::DisplayRole:
|
case Qt::DisplayRole:
|
||||||
{
|
{
|
||||||
return getItem(p_index)->data(p_index.column());
|
return getItem(p_index)->data(p_index.column());
|
||||||
|
@ -81,7 +84,8 @@ namespace NLQT {
|
||||||
}
|
}
|
||||||
case Qt::DecorationRole:
|
case Qt::DecorationRole:
|
||||||
{
|
{
|
||||||
if (p_index.column() == 2) {
|
if (p_index.column() == 2)
|
||||||
|
{
|
||||||
//p_index.
|
//p_index.
|
||||||
QModelIndex in = index(p_index.row(),p_index.column()-1,p_index.parent());
|
QModelIndex in = index(p_index.row(),p_index.column()-1,p_index.parent());
|
||||||
CFormItem *item = getItem(in);
|
CFormItem *item = getItem(in);
|
||||||
|
@ -89,9 +93,12 @@ namespace NLQT {
|
||||||
QString value = item->data(1).toString();
|
QString value = item->data(1).toString();
|
||||||
//QString path = NLMISC::CPath::lookup(value.toStdString(),false).c_str();
|
//QString path = NLMISC::CPath::lookup(value.toStdString(),false).c_str();
|
||||||
|
|
||||||
if (value.contains(".shape")) {
|
if (value.contains(".shape"))
|
||||||
|
{
|
||||||
return QIcon(":/images/pqrticles.png");
|
return QIcon(":/images/pqrticles.png");
|
||||||
} else if(value.contains(".tga") || value.contains(".png")) {
|
}
|
||||||
|
else if(value.contains(".tga") || value.contains(".png"))
|
||||||
|
{
|
||||||
qDebug() << p_index << p_role;
|
qDebug() << p_index << p_role;
|
||||||
QString path = NLMISC::CPath::lookup(value.toStdString(),false).c_str();
|
QString path = NLMISC::CPath::lookup(value.toStdString(),false).c_str();
|
||||||
return QIcon(":/images/pqrticles.png");
|
return QIcon(":/images/pqrticles.png");
|
||||||
|
@ -107,10 +114,13 @@ namespace NLQT {
|
||||||
|
|
||||||
/******************************************************************************/
|
/******************************************************************************/
|
||||||
|
|
||||||
CFormItem *CGeorgesFormModel::getItem(const QModelIndex &index) const {
|
CFormItem *CGeorgesFormModel::getItem(const QModelIndex &index) const
|
||||||
if (index.isValid()) {
|
{
|
||||||
|
if (index.isValid())
|
||||||
|
{
|
||||||
CFormItem *item = static_cast<CFormItem*>(index.internalPointer());
|
CFormItem *item = static_cast<CFormItem*>(index.internalPointer());
|
||||||
if (item) return item;
|
if (item)
|
||||||
|
return item;
|
||||||
}
|
}
|
||||||
return _rootItem;
|
return _rootItem;
|
||||||
}
|
}
|
||||||
|
@ -118,7 +128,8 @@ namespace NLQT {
|
||||||
/******************************************************************************/
|
/******************************************************************************/
|
||||||
|
|
||||||
bool CGeorgesFormModel::setData(const QModelIndex &index, const QVariant &value,
|
bool CGeorgesFormModel::setData(const QModelIndex &index, const QVariant &value,
|
||||||
int role) {
|
int role)
|
||||||
|
{
|
||||||
|
|
||||||
if (role != Qt::EditRole)
|
if (role != Qt::EditRole)
|
||||||
return false;
|
return false;
|
||||||
|
@ -230,20 +241,24 @@ namespace NLQT {
|
||||||
|
|
||||||
void CGeorgesFormModel::loadFormData(UFormElm *root, CFormItem *parent) {
|
void CGeorgesFormModel::loadFormData(UFormElm *root, CFormItem *parent) {
|
||||||
|
|
||||||
if (!root) return;
|
if (!root)
|
||||||
|
return;
|
||||||
|
|
||||||
uint num = 0;
|
uint num = 0;
|
||||||
UFormElm::TWhereIsNode *whereN = new UFormElm::TWhereIsNode;
|
UFormElm::TWhereIsNode *whereN = new UFormElm::TWhereIsNode;
|
||||||
UFormElm::TWhereIsValue *whereV = new UFormElm::TWhereIsValue;
|
UFormElm::TWhereIsValue *whereV = new UFormElm::TWhereIsValue;
|
||||||
|
|
||||||
if (root->isStruct()) {
|
if (root->isStruct())
|
||||||
|
{
|
||||||
//((CFormElm*)root)->getForm()->getComment();
|
//((CFormElm*)root)->getForm()->getComment();
|
||||||
uint structSize = 0;
|
uint structSize = 0;
|
||||||
root->getStructSize(structSize);
|
root->getStructSize(structSize);
|
||||||
while (num < structSize) {
|
while (num < structSize)
|
||||||
|
{
|
||||||
// Append a new item to the current parent's list of children.
|
// Append a new item to the current parent's list of children.
|
||||||
std::string elmName;
|
std::string elmName;
|
||||||
if(root->getStructNodeName(num, elmName)) {
|
if(root->getStructNodeName(num, elmName))
|
||||||
|
{
|
||||||
QList<QVariant> columnData;
|
QList<QVariant> columnData;
|
||||||
//QVariant value;
|
//QVariant value;
|
||||||
std::string value;
|
std::string value;
|
||||||
|
@ -253,8 +268,10 @@ namespace NLQT {
|
||||||
//double value_double;
|
//double value_double;
|
||||||
QString elmtType = "";
|
QString elmtType = "";
|
||||||
UFormElm *elmt = 0;
|
UFormElm *elmt = 0;
|
||||||
if(root->getNodeByName(&elmt, elmName.c_str(), whereN, true)) {
|
if(root->getNodeByName(&elmt, elmName.c_str(), whereN, true))
|
||||||
if (elmt) {
|
{
|
||||||
|
if (elmt)
|
||||||
|
{
|
||||||
if (elmt->isArray())
|
if (elmt->isArray())
|
||||||
elmtType = "Array";
|
elmtType = "Array";
|
||||||
if (elmt->isStruct())
|
if (elmt->isStruct())
|
||||||
|
@ -263,10 +280,12 @@ namespace NLQT {
|
||||||
elmtType = "Atom";
|
elmtType = "Atom";
|
||||||
uint numDefinitions = 0;
|
uint numDefinitions = 0;
|
||||||
const UType *type = elmt->getType();
|
const UType *type = elmt->getType();
|
||||||
if (type) {
|
if (type)
|
||||||
|
{
|
||||||
numDefinitions = type->getNumDefinition();
|
numDefinitions = type->getNumDefinition();
|
||||||
root->getValueByName(value, elmName.c_str(),UFormElm::Eval,whereV);
|
root->getValueByName(value, elmName.c_str(),UFormElm::Eval,whereV);
|
||||||
switch (type->getType()) {
|
switch (type->getType())
|
||||||
|
{
|
||||||
case UType::UnsignedInt:
|
case UType::UnsignedInt:
|
||||||
value = QString("%1").arg(QString("%1").arg(value.c_str()).toDouble()).toStdString();
|
value = QString("%1").arg(QString("%1").arg(value.c_str()).toDouble()).toStdString();
|
||||||
elmtType.append("_uint");break;
|
elmtType.append("_uint");break;
|
||||||
|
@ -285,21 +304,26 @@ namespace NLQT {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (numDefinitions) {
|
if (numDefinitions)
|
||||||
|
{
|
||||||
std::string l, v;
|
std::string l, v;
|
||||||
QString tmpLabel, tmpValue;
|
QString tmpLabel, tmpValue;
|
||||||
for (uint i = 0; i < numDefinitions; i++) {
|
for (uint i = 0; i < numDefinitions; i++)
|
||||||
|
{
|
||||||
type->getDefinition(i,l,v);
|
type->getDefinition(i,l,v);
|
||||||
tmpLabel = l.c_str();
|
tmpLabel = l.c_str();
|
||||||
tmpValue = v.c_str();
|
tmpValue = v.c_str();
|
||||||
if (type->getType() == UType::SignedInt) {
|
if (type->getType() == UType::SignedInt)
|
||||||
|
{
|
||||||
if (QString("%1").arg(value.c_str()).toDouble() == tmpValue.toDouble()) {
|
if (QString("%1").arg(value.c_str()).toDouble() == tmpValue.toDouble()) {
|
||||||
value = l;
|
value = l;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (type->getType() == UType::String) {
|
if (type->getType() == UType::String)
|
||||||
if (QString(value.c_str()) == tmpValue) {
|
{
|
||||||
|
if (QString(value.c_str()) == tmpValue)
|
||||||
|
{
|
||||||
value = l;
|
value = l;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -307,11 +331,13 @@ namespace NLQT {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (elmt->isVirtualStruct()){
|
if (elmt->isVirtualStruct())
|
||||||
|
{
|
||||||
root->getValueByName(value, elmName.c_str(),UFormElm::Eval,whereV);
|
root->getValueByName(value, elmName.c_str(),UFormElm::Eval,whereV);
|
||||||
elmtType = "VirtualStruct";
|
elmtType = "VirtualStruct";
|
||||||
}
|
}
|
||||||
switch (*whereN) {
|
switch (*whereN)
|
||||||
|
{
|
||||||
case UFormElm::NodeForm:
|
case UFormElm::NodeForm:
|
||||||
elmtType.append("_fromForm"); break;
|
elmtType.append("_fromForm"); break;
|
||||||
case UFormElm::NodeParentForm:
|
case UFormElm::NodeParentForm:
|
||||||
|
@ -323,7 +349,8 @@ namespace NLQT {
|
||||||
default:
|
default:
|
||||||
elmtType.append("_noNode");
|
elmtType.append("_noNode");
|
||||||
}
|
}
|
||||||
switch (*whereV) {
|
switch (*whereV)
|
||||||
|
{
|
||||||
case UFormElm::ValueForm:
|
case UFormElm::ValueForm:
|
||||||
elmtType.append("_formValue"); break;
|
elmtType.append("_formValue"); break;
|
||||||
case UFormElm::ValueParentForm:
|
case UFormElm::ValueParentForm:
|
||||||
|
@ -341,7 +368,9 @@ namespace NLQT {
|
||||||
// parents << parents.last()->child(parents.last()->childCount()-1);
|
// parents << parents.last()->child(parents.last()->childCount()-1);
|
||||||
//}
|
//}
|
||||||
loadFormData(elmt, parent->child(parent->childCount()-1));
|
loadFormData(elmt, parent->child(parent->childCount()-1));
|
||||||
} else {
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
// add Defaults
|
// add Defaults
|
||||||
//columnData << QString(elmName.c_str()) << QString("default") << QString("default");
|
//columnData << QString(elmName.c_str()) << QString("default") << QString("default");
|
||||||
//parent->appendChild(new CFormItem(elmt, columnData, parent, UFormElm::ValueDefaultDfn, UFormElm::NodeDfn));
|
//parent->appendChild(new CFormItem(elmt, columnData, parent, UFormElm::ValueDefaultDfn, UFormElm::NodeDfn));
|
||||||
|
@ -352,25 +381,30 @@ namespace NLQT {
|
||||||
num++;
|
num++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (root->isArray()) {
|
if (root->isArray())
|
||||||
|
{
|
||||||
uint arraySize = 0;
|
uint arraySize = 0;
|
||||||
root->getArraySize(arraySize);
|
root->getArraySize(arraySize);
|
||||||
while (num < arraySize) {
|
while (num < arraySize)
|
||||||
|
{
|
||||||
std::string elmName;
|
std::string elmName;
|
||||||
if(root->getArrayNodeName(elmName, num)) {
|
if(root->getArrayNodeName(elmName, num))
|
||||||
|
{
|
||||||
QList<QVariant> columnData;
|
QList<QVariant> columnData;
|
||||||
std::string value;
|
std::string value;
|
||||||
QString elmtType = "";
|
QString elmtType = "";
|
||||||
//root->getValueByName(value, elmName.c_str());
|
//root->getValueByName(value, elmName.c_str());
|
||||||
|
|
||||||
UFormElm *elmt = 0;
|
UFormElm *elmt = 0;
|
||||||
if(root->getArrayNode(&elmt,0) && elmt) {
|
if(root->getArrayNode(&elmt,0) && elmt)
|
||||||
|
{
|
||||||
if (elmt->isArray())
|
if (elmt->isArray())
|
||||||
elmtType = "Array";
|
elmtType = "Array";
|
||||||
if (elmt->isStruct()) {
|
if (elmt->isStruct()) {
|
||||||
elmtType = "Struct";
|
elmtType = "Struct";
|
||||||
}
|
}
|
||||||
if (elmt->isAtom()) {
|
if (elmt->isAtom())
|
||||||
|
{
|
||||||
elmt->getValue(value);
|
elmt->getValue(value);
|
||||||
elmtType = "Atom";
|
elmtType = "Atom";
|
||||||
}
|
}
|
||||||
|
@ -388,12 +422,14 @@ namespace NLQT {
|
||||||
|
|
||||||
/******************************************************************************/
|
/******************************************************************************/
|
||||||
|
|
||||||
void CGeorgesFormModel::loadFormHeader() {
|
void CGeorgesFormModel::loadFormHeader()
|
||||||
|
{
|
||||||
|
|
||||||
CFormItem *fi_pars = new CFormItem(_rootElm, QList<QVariant>() << "parents", _rootItem);
|
CFormItem *fi_pars = new CFormItem(_rootElm, QList<QVariant>() << "parents", _rootItem);
|
||||||
_rootItem->appendChild(fi_pars);
|
_rootItem->appendChild(fi_pars);
|
||||||
|
|
||||||
Q_FOREACH(QString str, _parents) {
|
Q_FOREACH(QString str, _parents)
|
||||||
|
{
|
||||||
fi_pars->appendChild(new CFormItem(_rootElm, QList<QVariant>() << str, fi_pars));
|
fi_pars->appendChild(new CFormItem(_rootElm, QList<QVariant>() << str, fi_pars));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -433,7 +469,8 @@ namespace NLQT {
|
||||||
|
|
||||||
/******************************************************************************/
|
/******************************************************************************/
|
||||||
|
|
||||||
void CGeorgesFormModel::setupModelData() {
|
void CGeorgesFormModel::setupModelData()
|
||||||
|
{
|
||||||
loadFormHeader();
|
loadFormHeader();
|
||||||
loadFormData(_rootElm, _rootItem);
|
loadFormData(_rootElm, _rootItem);
|
||||||
}
|
}
|
||||||
|
|
|
@ -32,12 +32,13 @@ namespace NLGEORGES {
|
||||||
class UFormElm;
|
class UFormElm;
|
||||||
}
|
}
|
||||||
|
|
||||||
namespace NLQT {
|
namespace NLQT
|
||||||
|
{
|
||||||
|
|
||||||
class CFormItem;
|
class CFormItem;
|
||||||
|
|
||||||
class CGeorgesFormModel : public QAbstractItemModel {
|
class CGeorgesFormModel : public QAbstractItemModel
|
||||||
Q_OBJECT
|
{
|
||||||
|
|
||||||
public:
|
public:
|
||||||
CGeorgesFormModel(NLGEORGES::UFormElm *root, QMap< QString, QStringList> deps,
|
CGeorgesFormModel(NLGEORGES::UFormElm *root, QMap< QString, QStringList> deps,
|
||||||
|
|
|
@ -21,7 +21,8 @@
|
||||||
// NeL includes
|
// NeL includes
|
||||||
#include <nel/misc/debug.h>
|
#include <nel/misc/debug.h>
|
||||||
|
|
||||||
namespace NLQT {
|
namespace NLQT
|
||||||
|
{
|
||||||
|
|
||||||
bool CGeorgesFormProxyModel::filterAcceptsRow(int sourceRow,
|
bool CGeorgesFormProxyModel::filterAcceptsRow(int sourceRow,
|
||||||
const QModelIndex &sourceParent) const
|
const QModelIndex &sourceParent) const
|
||||||
|
|
|
@ -23,13 +23,19 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
// Qt includes
|
// Qt includes
|
||||||
#include <QSortFilterProxyModel>
|
#include <QSortFilterProxyModel>
|
||||||
|
|
||||||
namespace NLQT {
|
namespace NLQT
|
||||||
|
{
|
||||||
|
|
||||||
class CGeorgesFormProxyModel : public QSortFilterProxyModel {
|
class CGeorgesFormProxyModel : public QSortFilterProxyModel
|
||||||
|
{
|
||||||
|
|
||||||
public:
|
public:
|
||||||
CGeorgesFormProxyModel(QObject *parent = 0): QSortFilterProxyModel(parent){}
|
CGeorgesFormProxyModel(QObject *parent = 0): QSortFilterProxyModel(parent)
|
||||||
~CGeorgesFormProxyModel() {}
|
{
|
||||||
|
}
|
||||||
|
~CGeorgesFormProxyModel()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual bool filterAcceptsColumn ( int source_column, const QModelIndex & source_parent ) const ;
|
virtual bool filterAcceptsColumn ( int source_column, const QModelIndex & source_parent ) const ;
|
||||||
|
|
|
@ -30,10 +30,12 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
// Project includes
|
// Project includes
|
||||||
#include "qt_displayer.h"
|
#include "qt_displayer.h"
|
||||||
|
|
||||||
namespace NLQT {
|
namespace NLQT
|
||||||
|
{
|
||||||
|
|
||||||
CGeorgesLogDialog::CGeorgesLogDialog(QWidget *parent):
|
CGeorgesLogDialog::CGeorgesLogDialog(QWidget *parent):
|
||||||
QDockWidget(parent){
|
QDockWidget(parent)
|
||||||
|
{
|
||||||
|
|
||||||
_ui.setupUi(this);
|
_ui.setupUi(this);
|
||||||
|
|
||||||
|
@ -46,7 +48,8 @@ namespace NLQT {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
CGeorgesLogDialog::~CGeorgesLogDialog() {
|
CGeorgesLogDialog::~CGeorgesLogDialog()
|
||||||
|
{
|
||||||
NLMISC::ErrorLog->removeDisplayer(_displayer);
|
NLMISC::ErrorLog->removeDisplayer(_displayer);
|
||||||
NLMISC::WarningLog->removeDisplayer(_displayer);
|
NLMISC::WarningLog->removeDisplayer(_displayer);
|
||||||
NLMISC::DebugLog->removeDisplayer(_displayer);
|
NLMISC::DebugLog->removeDisplayer(_displayer);
|
||||||
|
|
|
@ -1,19 +1,19 @@
|
||||||
/*
|
/*
|
||||||
Georges Editor Qt
|
Georges Editor Qt
|
||||||
Copyright (C) 2010 Adrian Jaekel <aj at elane2k dot com>
|
Copyright (C) 2010 Adrian Jaekel <aj at elane2k dot com>
|
||||||
|
|
||||||
This program is free software: you can redistribute it and/or modify
|
This program is free software: you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
the Free Software Foundation, either version 3 of the License, or
|
the Free Software Foundation, either version 3 of the License, or
|
||||||
(at your option) any later version.
|
(at your option) any later version.
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful,
|
This program is distributed in the hope that it will be useful,
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
GNU General Public License for more details.
|
GNU General Public License for more details.
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
You should have received a copy of the GNU General Public License
|
||||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef LOG_DIALOG_H
|
#ifndef LOG_DIALOG_H
|
||||||
|
@ -30,24 +30,24 @@
|
||||||
// Project includes
|
// Project includes
|
||||||
#include "ui_log_form.h"
|
#include "ui_log_form.h"
|
||||||
|
|
||||||
namespace NLQT {
|
namespace NLQT
|
||||||
|
{
|
||||||
class CQtDisplayer;
|
class CQtDisplayer;
|
||||||
|
|
||||||
class CGeorgesLogDialog: public QDockWidget
|
class CGeorgesLogDialog: public QDockWidget
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
CGeorgesLogDialog(QWidget *parent = 0);
|
CGeorgesLogDialog(QWidget *parent = 0);
|
||||||
~CGeorgesLogDialog();
|
~CGeorgesLogDialog();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Ui::CGeorgesLogDialog _ui;
|
Ui::CGeorgesLogDialog _ui;
|
||||||
|
|
||||||
CQtDisplayer *_displayer;
|
CQtDisplayer *_displayer;
|
||||||
|
|
||||||
friend class CMainWindow;
|
friend class CMainWindow;
|
||||||
}; /* CGeorgesLogDialog */
|
}; /* CGeorgesLogDialog */
|
||||||
|
|
||||||
} /* namespace NLQT */
|
} /* namespace NLQT */
|
||||||
|
|
||||||
|
|
|
@ -33,17 +33,20 @@
|
||||||
using namespace std;
|
using namespace std;
|
||||||
using namespace NLMISC;
|
using namespace NLMISC;
|
||||||
|
|
||||||
namespace NLQT {
|
namespace NLQT
|
||||||
|
{
|
||||||
|
|
||||||
namespace {
|
namespace
|
||||||
|
{
|
||||||
|
|
||||||
CFileDisplayer *s_FileDisplayer = NULL;
|
CFileDisplayer *s_FileDisplayer = NULL;
|
||||||
|
|
||||||
} /* anonymous namespace */
|
} /* anonymous namespace */
|
||||||
|
|
||||||
} /* namespace NLQT */
|
} /* namespace NLQT */
|
||||||
|
|
||||||
void messageHandler(QtMsgType p_type, const char* p_msg) {
|
void messageHandler(QtMsgType p_type, const char* p_msg)
|
||||||
|
{
|
||||||
|
|
||||||
fprintf(stderr, "%s\n", p_msg);
|
fprintf(stderr, "%s\n", p_msg);
|
||||||
|
|
||||||
|
@ -51,7 +54,8 @@ void messageHandler(QtMsgType p_type, const char* p_msg) {
|
||||||
file.open(QIODevice::WriteOnly | QIODevice::Append | QIODevice::Text);
|
file.open(QIODevice::WriteOnly | QIODevice::Append | QIODevice::Text);
|
||||||
|
|
||||||
QChar code;
|
QChar code;
|
||||||
switch (p_type) {
|
switch (p_type)
|
||||||
|
{
|
||||||
case QtDebugMsg: code = 'D'; break;
|
case QtDebugMsg: code = 'D'; break;
|
||||||
case QtWarningMsg: code = 'W'; break;
|
case QtWarningMsg: code = 'W'; break;
|
||||||
case QtCriticalMsg: code = 'C'; break;
|
case QtCriticalMsg: code = 'C'; break;
|
||||||
|
|
|
@ -1,19 +1,19 @@
|
||||||
/*
|
/*
|
||||||
Georges Editor Qt
|
Georges Editor Qt
|
||||||
Copyright (C) 2010 Adrian Jaekel <aj at elane2k dot com>
|
Copyright (C) 2010 Adrian Jaekel <aj at elane2k dot com>
|
||||||
|
|
||||||
This program is free software: you can redistribute it and/or modify
|
This program is free software: you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
the Free Software Foundation, either version 3 of the License, or
|
the Free Software Foundation, either version 3 of the License, or
|
||||||
(at your option) any later version.
|
(at your option) any later version.
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful,
|
This program is distributed in the hope that it will be useful,
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
GNU General Public License for more details.
|
GNU General Public License for more details.
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
You should have received a copy of the GNU General Public License
|
||||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "main_window.h"
|
#include "main_window.h"
|
||||||
|
@ -36,14 +36,13 @@
|
||||||
using namespace std;
|
using namespace std;
|
||||||
using namespace NLMISC;
|
using namespace NLMISC;
|
||||||
|
|
||||||
namespace NLQT {
|
namespace NLQT
|
||||||
|
|
||||||
|
|
||||||
CMainWindow::CMainWindow(QWidget *parent)
|
|
||||||
: QMainWindow(parent),
|
|
||||||
_GeorgesLogDialog(0), _ObjectViewerDialog(0),
|
|
||||||
_GeorgesDirTreeDialog(0)
|
|
||||||
{
|
{
|
||||||
|
|
||||||
|
CMainWindow::CMainWindow(QWidget *parent)
|
||||||
|
: QMainWindow(parent), _GeorgesLogDialog(0), _ObjectViewerDialog(0),
|
||||||
|
_GeorgesDirTreeDialog(0)
|
||||||
|
{
|
||||||
setWindowTitle("Qt Georges Editor");
|
setWindowTitle("Qt Georges Editor");
|
||||||
|
|
||||||
setDockNestingEnabled(true);
|
setDockNestingEnabled(true);
|
||||||
|
@ -62,15 +61,18 @@ CMainWindow::CMainWindow(QWidget *parent)
|
||||||
// load and set leveldesign path from config
|
// load and set leveldesign path from config
|
||||||
QString ldPath = Modules::config().configLeveldesignPath().c_str();
|
QString ldPath = Modules::config().configLeveldesignPath().c_str();
|
||||||
QFileInfo info(ldPath);
|
QFileInfo info(ldPath);
|
||||||
if (!info.isDir()) ldPath = "";
|
if (!info.isDir())
|
||||||
|
ldPath = "";
|
||||||
|
|
||||||
// create georges dir dock widget
|
// create georges dir dock widget
|
||||||
_GeorgesDirTreeDialog = new CGeorgesDirTreeDialog(ldPath, this);
|
_GeorgesDirTreeDialog = new CGeorgesDirTreeDialog(ldPath, this);
|
||||||
addDockWidget(Qt::LeftDockWidgetArea, _GeorgesDirTreeDialog);
|
addDockWidget(Qt::LeftDockWidgetArea, _GeorgesDirTreeDialog);
|
||||||
if (ldPath == "") {
|
if (ldPath == "")
|
||||||
|
{
|
||||||
if (QMessageBox::information(this, tr("Missing leveldesign path"),
|
if (QMessageBox::information(this, tr("Missing leveldesign path"),
|
||||||
tr("Your leveldesign path seems to be empty or incorrect.\nDo you want to set it now?"),
|
tr("Your leveldesign path seems to be empty or incorrect.\nDo you want to set it now?"),
|
||||||
QMessageBox::Ok | QMessageBox::Cancel) == QMessageBox::Ok) {
|
QMessageBox::Ok | QMessageBox::Cancel) == QMessageBox::Ok)
|
||||||
|
{
|
||||||
settings();
|
settings();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -106,10 +108,10 @@ CMainWindow::CMainWindow(QWidget *parent)
|
||||||
|
|
||||||
connect(_GeorgesDirTreeDialog, SIGNAL(selectedForm(QString)),
|
connect(_GeorgesDirTreeDialog, SIGNAL(selectedForm(QString)),
|
||||||
this, SLOT(openTreeView(QString)));
|
this, SLOT(openTreeView(QString)));
|
||||||
}
|
}
|
||||||
|
|
||||||
CMainWindow::~CMainWindow()
|
CMainWindow::~CMainWindow()
|
||||||
{
|
{
|
||||||
// save state & geometry of window and widgets
|
// save state & geometry of window and widgets
|
||||||
QSettings settings("georges_editor_qt.ini", QSettings::IniFormat);
|
QSettings settings("georges_editor_qt.ini", QSettings::IniFormat);
|
||||||
settings.beginGroup("WindowSettings");
|
settings.beginGroup("WindowSettings");
|
||||||
|
@ -125,31 +127,38 @@ CMainWindow::~CMainWindow()
|
||||||
delete _ObjectViewerDialog;
|
delete _ObjectViewerDialog;
|
||||||
delete _GeorgesDirTreeDialog;
|
delete _GeorgesDirTreeDialog;
|
||||||
delete _GeorgesLogDialog;
|
delete _GeorgesLogDialog;
|
||||||
}
|
}
|
||||||
|
|
||||||
void CMainWindow::openTreeView(QString file) {
|
void CMainWindow::openTreeView(QString file)
|
||||||
|
{
|
||||||
// create or/and raise tree view dock widget for current file
|
// create or/and raise tree view dock widget for current file
|
||||||
|
|
||||||
setCurrentFile(file);
|
setCurrentFile(file);
|
||||||
|
|
||||||
CGeorgesTreeViewDialog *newView = 0;
|
CGeorgesTreeViewDialog *newView = 0;
|
||||||
|
|
||||||
Q_FOREACH(CGeorgesTreeViewDialog* dlg, _treeViewList) {
|
Q_FOREACH(CGeorgesTreeViewDialog* dlg, _treeViewList)
|
||||||
|
{
|
||||||
if (dlg->loadedForm == file)
|
if (dlg->loadedForm == file)
|
||||||
newView = dlg;
|
newView = dlg;
|
||||||
}
|
}
|
||||||
if (!newView) {
|
if (!newView)
|
||||||
|
{
|
||||||
newView = new CGeorgesTreeViewDialog(this);
|
newView = new CGeorgesTreeViewDialog(this);
|
||||||
//newView->setAllowedAreas(Qt::TopDockWidgetArea | Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea);
|
//newView->setAllowedAreas(Qt::TopDockWidgetArea | Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea);
|
||||||
newView->setWindowTitle(file);
|
newView->setWindowTitle(file);
|
||||||
|
|
||||||
if (_treeViewList.isEmpty()) {
|
if (_treeViewList.isEmpty())
|
||||||
|
{
|
||||||
_emptyView->deleteLater();
|
_emptyView->deleteLater();
|
||||||
addDockWidget(Qt::TopDockWidgetArea, newView);
|
addDockWidget(Qt::TopDockWidgetArea, newView);
|
||||||
} else {
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
tabifyDockWidget(_treeViewList.first(),newView);
|
tabifyDockWidget(_treeViewList.first(),newView);
|
||||||
QTabBar* tb = Modules::mainWin().getTabBar();
|
QTabBar* tb = Modules::mainWin().getTabBar();
|
||||||
if (tb) {
|
if (tb)
|
||||||
|
{
|
||||||
disconnect(tb, SIGNAL(currentChanged ( int ) ),
|
disconnect(tb, SIGNAL(currentChanged ( int ) ),
|
||||||
this,SLOT(tabChanged(int)));
|
this,SLOT(tabChanged(int)));
|
||||||
connect(tb, SIGNAL(currentChanged ( int ) ),
|
connect(tb, SIGNAL(currentChanged ( int ) ),
|
||||||
|
@ -167,10 +176,10 @@ void CMainWindow::openTreeView(QString file) {
|
||||||
_saveAction, SLOT(setEnabled(bool)));
|
_saveAction, SLOT(setEnabled(bool)));
|
||||||
}
|
}
|
||||||
newView->raise();
|
newView->raise();
|
||||||
}
|
}
|
||||||
|
|
||||||
void CMainWindow::settings()
|
void CMainWindow::settings()
|
||||||
{
|
{
|
||||||
CSettingsDialog _settingsDialog(this);
|
CSettingsDialog _settingsDialog(this);
|
||||||
|
|
||||||
connect(&_settingsDialog,SIGNAL(ldPathChanged(QString)),
|
connect(&_settingsDialog,SIGNAL(ldPathChanged(QString)),
|
||||||
|
@ -178,23 +187,23 @@ void CMainWindow::settings()
|
||||||
|
|
||||||
//_settingsDialog.show();
|
//_settingsDialog.show();
|
||||||
_settingsDialog.exec();
|
_settingsDialog.exec();
|
||||||
}
|
}
|
||||||
|
|
||||||
void CMainWindow::about()
|
void CMainWindow::about()
|
||||||
{
|
{
|
||||||
QMessageBox::about(this, tr("About Georges Viewer Qt"),
|
QMessageBox::about(this, tr("About Georges Viewer Qt"),
|
||||||
tr("<h2>Georges Viewer Qt</h2>"
|
tr("<h2>Georges Viewer Qt</h2>"
|
||||||
"Author: aquiles<br>Credits:Thx to dnk-88 for parts of his code"));
|
"Author: aquiles<br>Credits:Thx to dnk-88 for parts of his code"));
|
||||||
}
|
}
|
||||||
|
|
||||||
void CMainWindow::updateStatusBar()
|
void CMainWindow::updateStatusBar()
|
||||||
{
|
{
|
||||||
//if (_isGraphicsInitialized)
|
//if (_isGraphicsInitialized)
|
||||||
// statusBar()->showMessage(QString(Modules::objView().getDriver()->getVideocardInformation()));
|
// statusBar()->showMessage(QString(Modules::objView().getDriver()->getVideocardInformation()));
|
||||||
}
|
}
|
||||||
|
|
||||||
void CMainWindow::open()
|
void CMainWindow::open()
|
||||||
{
|
{
|
||||||
/*QStringList fileNames = QFileDialog::getOpenFileNames(this,
|
/*QStringList fileNames = QFileDialog::getOpenFileNames(this,
|
||||||
tr("Open NeL data file"), _lastDir,
|
tr("Open NeL data file"), _lastDir,
|
||||||
tr("All NeL files (*.shape *.ps);;"
|
tr("All NeL files (*.shape *.ps);;"
|
||||||
|
@ -222,10 +231,10 @@ void CMainWindow::open()
|
||||||
_SlotManagerDialog->updateUiSlots();
|
_SlotManagerDialog->updateUiSlots();
|
||||||
}
|
}
|
||||||
setCursor(Qt::ArrowCursor);*/
|
setCursor(Qt::ArrowCursor);*/
|
||||||
}
|
}
|
||||||
|
|
||||||
void CMainWindow::save()
|
void CMainWindow::save()
|
||||||
{
|
{
|
||||||
if(!_currentView)
|
if(!_currentView)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
@ -236,21 +245,21 @@ void CMainWindow::save()
|
||||||
_saveAction->setEnabled(false);
|
_saveAction->setEnabled(false);
|
||||||
|
|
||||||
setCursor(Qt::ArrowCursor);
|
setCursor(Qt::ArrowCursor);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CMainWindow::create()
|
void CMainWindow::create()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
void CMainWindow::createEmptyView()
|
void CMainWindow::createEmptyView()
|
||||||
{
|
{
|
||||||
_emptyView = new CGeorgesTreeViewDialog(this, true);
|
_emptyView = new CGeorgesTreeViewDialog(this, true);
|
||||||
//_emptyView->setAllowedAreas(Qt::TopDockWidgetArea);
|
//_emptyView->setAllowedAreas(Qt::TopDockWidgetArea);
|
||||||
addDockWidget(Qt::TopDockWidgetArea,_emptyView);
|
addDockWidget(Qt::TopDockWidgetArea,_emptyView);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CMainWindow::createActions()
|
void CMainWindow::createActions()
|
||||||
{
|
{
|
||||||
_openAction = new QAction(tr("&Open..."), this);
|
_openAction = new QAction(tr("&Open..."), this);
|
||||||
_openAction->setIcon(QApplication::style()->standardIcon(QStyle::SP_DialogOpenButton));
|
_openAction->setIcon(QApplication::style()->standardIcon(QStyle::SP_DialogOpenButton));
|
||||||
_openAction->setShortcut(QKeySequence::Open);
|
_openAction->setShortcut(QKeySequence::Open);
|
||||||
|
@ -299,10 +308,10 @@ void CMainWindow::createActions()
|
||||||
connect(recentFileActs[i], SIGNAL(triggered()),
|
connect(recentFileActs[i], SIGNAL(triggered()),
|
||||||
this, SLOT(openRecentFile()));
|
this, SLOT(openRecentFile()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void CMainWindow::createMenus()
|
void CMainWindow::createMenus()
|
||||||
{
|
{
|
||||||
_fileMenu = menuBar()->addMenu(tr("&File"));
|
_fileMenu = menuBar()->addMenu(tr("&File"));
|
||||||
_fileMenu->addAction(_createAction);
|
_fileMenu->addAction(_createAction);
|
||||||
_fileMenu->addAction(_openAction);
|
_fileMenu->addAction(_openAction);
|
||||||
|
@ -320,7 +329,8 @@ void CMainWindow::createMenus()
|
||||||
_viewMenu->addAction(_GeorgesDirTreeDialog->toggleViewAction());
|
_viewMenu->addAction(_GeorgesDirTreeDialog->toggleViewAction());
|
||||||
|
|
||||||
_toolsMenu = menuBar()->addMenu(tr("&Tools"));
|
_toolsMenu = menuBar()->addMenu(tr("&Tools"));
|
||||||
if (_ObjectViewerDialog) {
|
if (_ObjectViewerDialog)
|
||||||
|
{
|
||||||
_toolsMenu->addAction(_ObjectViewerDialog->toggleViewAction());
|
_toolsMenu->addAction(_ObjectViewerDialog->toggleViewAction());
|
||||||
_ObjectViewerDialog->toggleViewAction()->setIcon(QIcon(":/images/pqrticles.png"));
|
_ObjectViewerDialog->toggleViewAction()->setIcon(QIcon(":/images/pqrticles.png"));
|
||||||
}
|
}
|
||||||
|
@ -332,10 +342,10 @@ void CMainWindow::createMenus()
|
||||||
_helpMenu = menuBar()->addMenu(tr("&Help"));
|
_helpMenu = menuBar()->addMenu(tr("&Help"));
|
||||||
_helpMenu->addAction(_aboutAction);
|
_helpMenu->addAction(_aboutAction);
|
||||||
_helpMenu->addAction(_aboutQtAction);
|
_helpMenu->addAction(_aboutQtAction);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CMainWindow::createToolBars()
|
void CMainWindow::createToolBars()
|
||||||
{
|
{
|
||||||
_fileToolBar = addToolBar(tr("&File"));
|
_fileToolBar = addToolBar(tr("&File"));
|
||||||
_fileToolBar->addAction(_createAction);
|
_fileToolBar->addAction(_createAction);
|
||||||
_fileToolBar->addAction(_openAction);
|
_fileToolBar->addAction(_openAction);
|
||||||
|
@ -344,26 +354,28 @@ void CMainWindow::createToolBars()
|
||||||
_toolsBar = addToolBar(tr("&Tools"));
|
_toolsBar = addToolBar(tr("&Tools"));
|
||||||
if (_ObjectViewerDialog)
|
if (_ObjectViewerDialog)
|
||||||
_toolsBar->addAction(_ObjectViewerDialog->toggleViewAction());
|
_toolsBar->addAction(_ObjectViewerDialog->toggleViewAction());
|
||||||
}
|
}
|
||||||
|
|
||||||
void CMainWindow::createStatusBar()
|
void CMainWindow::createStatusBar()
|
||||||
{
|
{
|
||||||
statusBar()->showMessage(tr("StatusReady"));
|
statusBar()->showMessage(tr("StatusReady"));
|
||||||
}
|
}
|
||||||
|
|
||||||
void CMainWindow::cfcbQtStyle(NLMISC::CConfigFile::CVar &var)
|
void CMainWindow::cfcbQtStyle(NLMISC::CConfigFile::CVar &var)
|
||||||
{
|
{
|
||||||
QApplication::setStyle(QStyleFactory::create(var.asString().c_str()));
|
QApplication::setStyle(QStyleFactory::create(var.asString().c_str()));
|
||||||
}
|
}
|
||||||
|
|
||||||
void CMainWindow::cfcbQtPalette(NLMISC::CConfigFile::CVar &var)
|
void CMainWindow::cfcbQtPalette(NLMISC::CConfigFile::CVar &var)
|
||||||
{
|
{
|
||||||
if (var.asBool()) QApplication::setPalette(QApplication::style()->standardPalette());
|
if (var.asBool())
|
||||||
else QApplication::setPalette(_originalPalette);
|
QApplication::setPalette(QApplication::style()->standardPalette());
|
||||||
}
|
else
|
||||||
|
QApplication::setPalette(_originalPalette);
|
||||||
|
}
|
||||||
|
|
||||||
QTabBar* CMainWindow::getTabBar()
|
QTabBar* CMainWindow::getTabBar()
|
||||||
{
|
{
|
||||||
// get the QTabBar
|
// get the QTabBar
|
||||||
QList<QTabBar *> tabList = findChildren<QTabBar *>();
|
QList<QTabBar *> tabList = findChildren<QTabBar *>();
|
||||||
//tabList = _mainWindow->findChildren<QTabBar *>();
|
//tabList = _mainWindow->findChildren<QTabBar *>();
|
||||||
|
@ -371,7 +383,8 @@ QTabBar* CMainWindow::getTabBar()
|
||||||
// arg(QString::number((int)_mainWindow,16)).
|
// arg(QString::number((int)_mainWindow,16)).
|
||||||
// toStdString().c_str());
|
// toStdString().c_str());
|
||||||
QTabBar *tb = 0;
|
QTabBar *tb = 0;
|
||||||
Q_FOREACH(QTabBar *tabBar, tabList){
|
Q_FOREACH(QTabBar *tabBar, tabList)
|
||||||
|
{
|
||||||
if (tabBar->parent() != this)
|
if (tabBar->parent() != this)
|
||||||
continue;
|
continue;
|
||||||
//nlinfo(QString("%1 %2 %3 %4").arg(tabBar->objectName()).
|
//nlinfo(QString("%1 %2 %3 %4").arg(tabBar->objectName()).
|
||||||
|
@ -379,18 +392,20 @@ QTabBar* CMainWindow::getTabBar()
|
||||||
// arg(QString::number((int)tabBar->parentWidget(),16)).
|
// arg(QString::number((int)tabBar->parentWidget(),16)).
|
||||||
// arg(QString::number((int)tabBar->parent(),16)).
|
// arg(QString::number((int)tabBar->parent(),16)).
|
||||||
// toStdString().c_str());
|
// toStdString().c_str());
|
||||||
for (int i = 0; i < tabBar->count(); i++) {
|
for (int i = 0; i < tabBar->count(); i++)
|
||||||
|
{
|
||||||
QString currentTab = tabBar->tabText(i);
|
QString currentTab = tabBar->tabText(i);
|
||||||
//nlinfo(currentTab.toStdString().c_str());
|
//nlinfo(currentTab.toStdString().c_str());
|
||||||
}
|
}
|
||||||
tb = tabBar;
|
tb = tabBar;
|
||||||
}
|
}
|
||||||
return tb;
|
return tb;
|
||||||
}
|
}
|
||||||
|
|
||||||
void CMainWindow::tabChanged(int index)
|
void CMainWindow::tabChanged(int index)
|
||||||
{
|
{
|
||||||
if (index == -1) {
|
if (index == -1)
|
||||||
|
{
|
||||||
setWindowTitle("Qt Georges Editor");
|
setWindowTitle("Qt Georges Editor");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -398,8 +413,10 @@ void CMainWindow::tabChanged(int index)
|
||||||
QTabBar *tb = getTabBar();
|
QTabBar *tb = getTabBar();
|
||||||
//nlinfo(QString("%1").arg(index).toStdString().c_str());
|
//nlinfo(QString("%1").arg(index).toStdString().c_str());
|
||||||
|
|
||||||
Q_FOREACH(CGeorgesTreeViewDialog* dlg, _treeViewList) {
|
Q_FOREACH(CGeorgesTreeViewDialog* dlg, _treeViewList)
|
||||||
if (dlg->windowTitle() == tb->tabText(index)) {
|
{
|
||||||
|
if (dlg->windowTitle() == tb->tabText(index))
|
||||||
|
{
|
||||||
//nlinfo(QString("%1 modified %2").arg(tb->tabText(index)).
|
//nlinfo(QString("%1 modified %2").arg(tb->tabText(index)).
|
||||||
// arg(dlg->modified()).
|
// arg(dlg->modified()).
|
||||||
// toStdString().c_str());
|
// toStdString().c_str());
|
||||||
|
@ -408,7 +425,7 @@ void CMainWindow::tabChanged(int index)
|
||||||
_saveAction->setEnabled(dlg->modified());
|
_saveAction->setEnabled(dlg->modified());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void CMainWindow::openRecentFile()
|
void CMainWindow::openRecentFile()
|
||||||
{
|
{
|
||||||
|
@ -436,7 +453,8 @@ void CMainWindow::tabChanged(int index)
|
||||||
settings.setValue("List",files);
|
settings.setValue("List",files);
|
||||||
settings.endGroup();
|
settings.endGroup();
|
||||||
|
|
||||||
Q_FOREACH (QWidget *widget, QApplication::topLevelWidgets()) {
|
Q_FOREACH (QWidget *widget, QApplication::topLevelWidgets())
|
||||||
|
{
|
||||||
CMainWindow *mainWin = qobject_cast<CMainWindow *>(widget);
|
CMainWindow *mainWin = qobject_cast<CMainWindow *>(widget);
|
||||||
if (mainWin)
|
if (mainWin)
|
||||||
mainWin->updateRecentFileActions();
|
mainWin->updateRecentFileActions();
|
||||||
|
@ -451,7 +469,8 @@ void CMainWindow::tabChanged(int index)
|
||||||
settings.endGroup();
|
settings.endGroup();
|
||||||
int numRecentFiles = qMin(files.size(), (int)MaxRecentFiles);
|
int numRecentFiles = qMin(files.size(), (int)MaxRecentFiles);
|
||||||
|
|
||||||
for (int i = 0; i < numRecentFiles; ++i) {
|
for (int i = 0; i < numRecentFiles; ++i)
|
||||||
|
{
|
||||||
QString text = tr("&%1 %2").arg(i + 1).arg(QFileInfo(files[i]).fileName());
|
QString text = tr("&%1 %2").arg(i + 1).arg(QFileInfo(files[i]).fileName());
|
||||||
recentFileActs[i]->setText(text);
|
recentFileActs[i]->setText(text);
|
||||||
recentFileActs[i]->setData(files[i]);
|
recentFileActs[i]->setData(files[i]);
|
||||||
|
@ -483,6 +502,7 @@ void CMainWindow::tabChanged(int index)
|
||||||
setCurrentFile(fileName);
|
setCurrentFile(fileName);
|
||||||
//statusBar()->showMessage(tr("File loaded"), 2000);
|
//statusBar()->showMessage(tr("File loaded"), 2000);
|
||||||
}
|
}
|
||||||
|
|
||||||
} /* namespace NLQT */
|
} /* namespace NLQT */
|
||||||
|
|
||||||
/* end of file */
|
/* end of file */
|
||||||
|
|
|
@ -1,19 +1,19 @@
|
||||||
/*
|
/*
|
||||||
Georges Editor Qt
|
Georges Editor Qt
|
||||||
Copyright (C) 2010 Adrian Jaekel <aj at elane2k dot com>
|
Copyright (C) 2010 Adrian Jaekel <aj at elane2k dot com>
|
||||||
|
|
||||||
This program is free software: you can redistribute it and/or modify
|
This program is free software: you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
the Free Software Foundation, either version 3 of the License, or
|
the Free Software Foundation, either version 3 of the License, or
|
||||||
(at your option) any later version.
|
(at your option) any later version.
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful,
|
This program is distributed in the hope that it will be useful,
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
GNU General Public License for more details.
|
GNU General Public License for more details.
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
You should have received a copy of the GNU General Public License
|
||||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
@ -33,23 +33,24 @@
|
||||||
|
|
||||||
// Project includes
|
// Project includes
|
||||||
|
|
||||||
namespace NLMISC {
|
namespace NLMISC
|
||||||
|
{
|
||||||
class CConfigFile;
|
class CConfigFile;
|
||||||
}
|
}
|
||||||
|
|
||||||
namespace NLQT {
|
namespace NLQT
|
||||||
|
{
|
||||||
|
|
||||||
class CGeorgesLogDialog;
|
class CGeorgesLogDialog;
|
||||||
class CObjectViewerDialog;
|
class CObjectViewerDialog;
|
||||||
class CGeorgesDirTreeDialog;
|
class CGeorgesDirTreeDialog;
|
||||||
class CGeorgesTreeViewDialog;
|
class CGeorgesTreeViewDialog;
|
||||||
|
|
||||||
|
class CMainWindow : public QMainWindow
|
||||||
class CMainWindow : public QMainWindow
|
{
|
||||||
{
|
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
public:
|
public:
|
||||||
CMainWindow(QWidget *parent = 0);
|
CMainWindow(QWidget *parent = 0);
|
||||||
~CMainWindow();
|
~CMainWindow();
|
||||||
|
|
||||||
|
@ -58,7 +59,7 @@ public:
|
||||||
QTabBar* getTabBar();
|
QTabBar* getTabBar();
|
||||||
void createEmptyView();
|
void createEmptyView();
|
||||||
|
|
||||||
private Q_SLOTS:
|
private Q_SLOTS:
|
||||||
void open();
|
void open();
|
||||||
void create();
|
void create();
|
||||||
void save();
|
void save();
|
||||||
|
@ -69,7 +70,7 @@ private Q_SLOTS:
|
||||||
void tabChanged(int);
|
void tabChanged(int);
|
||||||
void openRecentFile();
|
void openRecentFile();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void createActions();
|
void createActions();
|
||||||
void createMenus();
|
void createMenus();
|
||||||
void createToolBars();
|
void createToolBars();
|
||||||
|
@ -115,7 +116,7 @@ private:
|
||||||
enum { MaxRecentFiles = 5 };
|
enum { MaxRecentFiles = 5 };
|
||||||
QAction *recentFileActs[MaxRecentFiles];
|
QAction *recentFileActs[MaxRecentFiles];
|
||||||
|
|
||||||
};/* class CMainWindow */
|
};/* class CMainWindow */
|
||||||
|
|
||||||
} /* namespace NLQT */
|
} /* namespace NLQT */
|
||||||
|
|
||||||
|
|
|
@ -1,19 +1,19 @@
|
||||||
/*
|
/*
|
||||||
Georges Editor Qt
|
Georges Editor Qt
|
||||||
Copyright (C) 2010 Adrian Jaekel <aj at elane2k dot com>
|
Copyright (C) 2010 Adrian Jaekel <aj at elane2k dot com>
|
||||||
|
|
||||||
This program is free software: you can redistribute it and/or modify
|
This program is free software: you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
the Free Software Foundation, either version 3 of the License, or
|
the Free Software Foundation, either version 3 of the License, or
|
||||||
(at your option) any later version.
|
(at your option) any later version.
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful,
|
This program is distributed in the hope that it will be useful,
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
GNU General Public License for more details.
|
GNU General Public License for more details.
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
You should have received a copy of the GNU General Public License
|
||||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "object_viewer.h"
|
#include "object_viewer.h"
|
||||||
|
@ -49,32 +49,33 @@ using namespace std;
|
||||||
using namespace NLMISC;
|
using namespace NLMISC;
|
||||||
using namespace NL3D;
|
using namespace NL3D;
|
||||||
|
|
||||||
namespace NLQT {
|
namespace NLQT
|
||||||
|
{
|
||||||
|
|
||||||
CObjectViewer::CObjectViewer()
|
CObjectViewer::CObjectViewer()
|
||||||
: _Driver(NULL),
|
: _Driver(NULL),
|
||||||
_phi(0), _psi(0),_dist(20),
|
_phi(0), _psi(0),_dist(20),
|
||||||
_CurrentInstance("")
|
_CurrentInstance("")
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
CObjectViewer::~CObjectViewer()
|
CObjectViewer::~CObjectViewer()
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void CObjectViewer::reinit(nlWindow wnd, uint16 w, uint16 h)
|
void CObjectViewer::reinit(nlWindow wnd, uint16 w, uint16 h)
|
||||||
{
|
{
|
||||||
nldebug("CObjectViewert::reinit");
|
nldebug("CObjectViewert::reinit");
|
||||||
|
|
||||||
//release();
|
//release();
|
||||||
//init(wnd, w, h);
|
//init(wnd, w, h);
|
||||||
_Driver->setDisplay(wnd, NL3D::UDriver::CMode(w, h, 32));
|
_Driver->setDisplay(wnd, NL3D::UDriver::CMode(w, h, 32));
|
||||||
}
|
}
|
||||||
|
|
||||||
void CObjectViewer::init(nlWindow wnd, uint16 w, uint16 h)
|
void CObjectViewer::init(nlWindow wnd, uint16 w, uint16 h)
|
||||||
{
|
{
|
||||||
//H_AUTO2
|
//H_AUTO2
|
||||||
nldebug("CObjectViewer::init");
|
nldebug("CObjectViewer::init");
|
||||||
|
|
||||||
|
@ -138,10 +139,10 @@ void CObjectViewer::init(nlWindow wnd, uint16 w, uint16 h)
|
||||||
_MouseListener->setFrustrum(Modules::objView().getScene()->getCam().getFrustum());
|
_MouseListener->setFrustrum(Modules::objView().getScene()->getCam().getFrustum());
|
||||||
_MouseListener->setHotSpot(hotSpot);
|
_MouseListener->setHotSpot(hotSpot);
|
||||||
_MouseListener->setMouseMode(U3dMouseListener::edit3d);
|
_MouseListener->setMouseMode(U3dMouseListener::edit3d);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CObjectViewer::release()
|
void CObjectViewer::release()
|
||||||
{
|
{
|
||||||
//H_AUTO2
|
//H_AUTO2
|
||||||
nldebug("CObjectViewer::release");
|
nldebug("CObjectViewer::release");
|
||||||
|
|
||||||
|
@ -166,34 +167,34 @@ void CObjectViewer::release()
|
||||||
_Driver->release();
|
_Driver->release();
|
||||||
delete _Driver;
|
delete _Driver;
|
||||||
_Driver = NULL;
|
_Driver = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
void CObjectViewer::updateInput()
|
void CObjectViewer::updateInput()
|
||||||
{
|
{
|
||||||
_Driver->EventServer.pump();
|
_Driver->EventServer.pump();
|
||||||
|
|
||||||
// New matrix from camera
|
// New matrix from camera
|
||||||
_Scene->getCam().setTransformMode(NL3D::UTransformable::DirectMatrix);
|
_Scene->getCam().setTransformMode(NL3D::UTransformable::DirectMatrix);
|
||||||
_Scene->getCam().setMatrix (_MouseListener->getViewMatrix());
|
_Scene->getCam().setMatrix (_MouseListener->getViewMatrix());
|
||||||
}
|
}
|
||||||
|
|
||||||
void CObjectViewer::renderDriver()
|
void CObjectViewer::renderDriver()
|
||||||
{
|
{
|
||||||
_Driver->clearBuffers(_BackgroundColor);
|
_Driver->clearBuffers(_BackgroundColor);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CObjectViewer::renderScene()
|
void CObjectViewer::renderScene()
|
||||||
{
|
{
|
||||||
// render the scene
|
// render the scene
|
||||||
_Scene->render();
|
_Scene->render();
|
||||||
}
|
}
|
||||||
|
|
||||||
void CObjectViewer::renderDebug2D()
|
void CObjectViewer::renderDebug2D()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
void CObjectViewer::saveScreenshot(const std::string &nameFile, bool jpg, bool png, bool tga)
|
void CObjectViewer::saveScreenshot(const std::string &nameFile, bool jpg, bool png, bool tga)
|
||||||
{
|
{
|
||||||
//H_AUTO2
|
//H_AUTO2
|
||||||
|
|
||||||
// FIXME: create screenshot path if it doesn't exist!
|
// FIXME: create screenshot path if it doesn't exist!
|
||||||
|
@ -226,10 +227,10 @@ void CObjectViewer::saveScreenshot(const std::string &nameFile, bool jpg, bool p
|
||||||
bitmap.writeTGA(outputFile, 24, false);
|
bitmap.writeTGA(outputFile, 24, false);
|
||||||
nlinfo("Screenshot '%s' saved", newfilename.c_str());
|
nlinfo("Screenshot '%s' saved", newfilename.c_str());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool CObjectViewer::loadMesh(const std::string &meshFileName, const std::string &skelFileName)
|
bool CObjectViewer::loadMesh(const std::string &meshFileName, const std::string &skelFileName)
|
||||||
{
|
{
|
||||||
CPath::addSearchPath(CFile::getPath(meshFileName), false, false);
|
CPath::addSearchPath(CFile::getPath(meshFileName), false, false);
|
||||||
|
|
||||||
// create instance of the mesh character
|
// create instance of the mesh character
|
||||||
|
@ -255,10 +256,10 @@ bool CObjectViewer::loadMesh(const std::string &meshFileName, const std::string
|
||||||
entity._AnimationSet = _Driver->createAnimationSet(false);
|
entity._AnimationSet = _Driver->createAnimationSet(false);
|
||||||
entity._PlayList = _PlayListManager->createPlayList(entity._AnimationSet);
|
entity._PlayList = _PlayListManager->createPlayList(entity._AnimationSet);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void CObjectViewer::resetScene()
|
void CObjectViewer::resetScene()
|
||||||
{
|
{
|
||||||
deleteEntities();
|
deleteEntities();
|
||||||
|
|
||||||
// Reset camera.
|
// Reset camera.
|
||||||
|
@ -273,10 +274,10 @@ void CObjectViewer::resetScene()
|
||||||
_CurrentInstance = "";
|
_CurrentInstance = "";
|
||||||
|
|
||||||
nlinfo("Scene cleared");
|
nlinfo("Scene cleared");
|
||||||
}
|
}
|
||||||
|
|
||||||
void CObjectViewer::updateCamera(float deltaPsi, float deltaPhi, float deltaDist)
|
void CObjectViewer::updateCamera(float deltaPsi, float deltaPhi, float deltaDist)
|
||||||
{
|
{
|
||||||
_phi += deltaPhi;
|
_phi += deltaPhi;
|
||||||
_psi += deltaPsi;
|
_psi += deltaPsi;
|
||||||
_dist += deltaDist;
|
_dist += deltaDist;
|
||||||
|
@ -298,60 +299,60 @@ void CObjectViewer::updateCamera(float deltaPsi, float deltaPhi, float deltaDist
|
||||||
NLMISC::CVector camera = m0 * NLMISC::CVector(_dist,0,0);
|
NLMISC::CVector camera = m0 * NLMISC::CVector(_dist,0,0);
|
||||||
|
|
||||||
_Scene->getCam().lookAt(camera, up);
|
_Scene->getCam().lookAt(camera, up);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CObjectViewer::setBackgroundColor(NLMISC::CRGBA backgroundColor)
|
void CObjectViewer::setBackgroundColor(NLMISC::CRGBA backgroundColor)
|
||||||
{
|
{
|
||||||
_BackgroundColor = backgroundColor;
|
_BackgroundColor = backgroundColor;
|
||||||
|
|
||||||
// config file variable changes
|
// config file variable changes
|
||||||
Modules::config().getConfigFile().getVar("BackgroundColor").setAsInt(_BackgroundColor.R, 0);
|
Modules::config().getConfigFile().getVar("BackgroundColor").setAsInt(_BackgroundColor.R, 0);
|
||||||
Modules::config().getConfigFile().getVar("BackgroundColor").setAsInt(_BackgroundColor.G, 1);
|
Modules::config().getConfigFile().getVar("BackgroundColor").setAsInt(_BackgroundColor.G, 1);
|
||||||
Modules::config().getConfigFile().getVar("BackgroundColor").setAsInt(_BackgroundColor.B, 2);
|
Modules::config().getConfigFile().getVar("BackgroundColor").setAsInt(_BackgroundColor.B, 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CObjectViewer::setGraphicsDriver(bool Direct3D)
|
void CObjectViewer::setGraphicsDriver(bool Direct3D)
|
||||||
{
|
{
|
||||||
_Direct3D = Direct3D;
|
_Direct3D = Direct3D;
|
||||||
|
|
||||||
if (_Direct3D) Modules::config().getConfigFile().getVar("GraphicsDriver").setAsString("Direct3D");
|
if (_Direct3D) Modules::config().getConfigFile().getVar("GraphicsDriver").setAsString("Direct3D");
|
||||||
else Modules::config().getConfigFile().getVar("GraphicsDriver").setAsString("OpenGL");
|
else Modules::config().getConfigFile().getVar("GraphicsDriver").setAsString("OpenGL");
|
||||||
}
|
}
|
||||||
|
|
||||||
void CObjectViewer::setSizeViewport(uint16 w, uint16 h)
|
void CObjectViewer::setSizeViewport(uint16 w, uint16 h)
|
||||||
{
|
{
|
||||||
_Scene->getCam().setPerspective((float)Pi/2.f, (float)w/h, 0.1f, 1000);
|
_Scene->getCam().setPerspective((float)Pi/2.f, (float)w/h, 0.1f, 1000);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CObjectViewer::getSizeViewport(float &left, float &right, float &bottom, float &top, float &znear, float &zfar)
|
void CObjectViewer::getSizeViewport(float &left, float &right, float &bottom, float &top, float &znear, float &zfar)
|
||||||
{
|
{
|
||||||
//_Scene->getCam().setPerspective((float)Pi/2.f, (float)w/h, 0.1f, 1000);
|
//_Scene->getCam().setPerspective((float)Pi/2.f, (float)w/h, 0.1f, 1000);
|
||||||
_Scene->getCam().getFrustum(left, right, bottom, top, znear, zfar);
|
_Scene->getCam().getFrustum(left, right, bottom, top, znear, zfar);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CObjectViewer::setCurrentObject(const std::string &name)
|
void CObjectViewer::setCurrentObject(const std::string &name)
|
||||||
{
|
{
|
||||||
if ((_Entities.count(name) != 0) || ( name.empty() )) _CurrentInstance = name;
|
if ((_Entities.count(name) != 0) || ( name.empty() )) _CurrentInstance = name;
|
||||||
else nlerror ("Entity %s not found", name.c_str());
|
else nlerror ("Entity %s not found", name.c_str());
|
||||||
nlinfo("set current entity %s", _CurrentInstance.c_str());
|
nlinfo("set current entity %s", _CurrentInstance.c_str());
|
||||||
}
|
}
|
||||||
|
|
||||||
CEntity& CObjectViewer::getEntity(const std::string &name)
|
CEntity& CObjectViewer::getEntity(const std::string &name)
|
||||||
{
|
{
|
||||||
if ( _Entities.count(name) == 0) nlerror("Entity %s not found", name.c_str());
|
if ( _Entities.count(name) == 0) nlerror("Entity %s not found", name.c_str());
|
||||||
EIT eit = _Entities.find (name);
|
EIT eit = _Entities.find (name);
|
||||||
return (*eit).second;
|
return (*eit).second;
|
||||||
}
|
}
|
||||||
|
|
||||||
void CObjectViewer::getListObjects(std::vector<std::string> &listObj)
|
void CObjectViewer::getListObjects(std::vector<std::string> &listObj)
|
||||||
{
|
{
|
||||||
listObj.clear();
|
listObj.clear();
|
||||||
for (EIT eit = _Entities.begin(); eit != _Entities.end(); ++eit)
|
for (EIT eit = _Entities.begin(); eit != _Entities.end(); ++eit)
|
||||||
listObj.push_back((*eit).second._Name);
|
listObj.push_back((*eit).second._Name);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CObjectViewer::deleteEntity(CEntity &entity)
|
void CObjectViewer::deleteEntity(CEntity &entity)
|
||||||
{
|
{
|
||||||
if (entity._PlayList != NULL)
|
if (entity._PlayList != NULL)
|
||||||
{
|
{
|
||||||
_PlayListManager->deletePlayList (entity._PlayList);
|
_PlayListManager->deletePlayList (entity._PlayList);
|
||||||
|
@ -377,26 +378,26 @@ void CObjectViewer::deleteEntity(CEntity &entity)
|
||||||
_Scene->deleteInstance(entity._Instance);
|
_Scene->deleteInstance(entity._Instance);
|
||||||
entity._Instance = NULL;
|
entity._Instance = NULL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void CObjectViewer::deleteEntities()
|
void CObjectViewer::deleteEntities()
|
||||||
{
|
{
|
||||||
for (EIT eit = _Entities.begin(); eit != _Entities.end(); ++eit)
|
for (EIT eit = _Entities.begin(); eit != _Entities.end(); ++eit)
|
||||||
{
|
{
|
||||||
CEntity &entity = (*eit).second;
|
CEntity &entity = (*eit).second;
|
||||||
deleteEntity(entity);
|
deleteEntity(entity);
|
||||||
}
|
}
|
||||||
_Entities.clear();
|
_Entities.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
void CObjectViewer::cfcbBackgroundColor(NLMISC::CConfigFile::CVar &var)
|
void CObjectViewer::cfcbBackgroundColor(NLMISC::CConfigFile::CVar &var)
|
||||||
{
|
{
|
||||||
// read variable from config file
|
// read variable from config file
|
||||||
_BackgroundColor = CRGBA(var.asInt(0), var.asInt(1), var.asInt(2));
|
_BackgroundColor = CRGBA(var.asInt(0), var.asInt(1), var.asInt(2));
|
||||||
}
|
}
|
||||||
|
|
||||||
void CObjectViewer::cfcbGraphicsDriver(NLMISC::CConfigFile::CVar &var)
|
void CObjectViewer::cfcbGraphicsDriver(NLMISC::CConfigFile::CVar &var)
|
||||||
{
|
{
|
||||||
// Choose driver opengl to work correctly under Linux example
|
// Choose driver opengl to work correctly under Linux example
|
||||||
_Direct3D = false; //_Driver = OpenGL;
|
_Direct3D = false; //_Driver = OpenGL;
|
||||||
|
|
||||||
|
@ -406,6 +407,6 @@ void CObjectViewer::cfcbGraphicsDriver(NLMISC::CConfigFile::CVar &var)
|
||||||
else if (driver == "OpenGL") _Direct3D = false; //m_Driver = OpenGL;
|
else if (driver == "OpenGL") _Direct3D = false; //m_Driver = OpenGL;
|
||||||
else nlwarning("Invalid driver specified, defaulting to OpenGL");
|
else nlwarning("Invalid driver specified, defaulting to OpenGL");
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
} /* namespace NLQT */
|
} /* namespace NLQT */
|
||||||
|
|
|
@ -1,19 +1,19 @@
|
||||||
/*
|
/*
|
||||||
Georges Editor Qt
|
Georges Editor Qt
|
||||||
Copyright (C) 2010 Adrian Jaekel <aj at elane2k dot com>
|
Copyright (C) 2010 Adrian Jaekel <aj at elane2k dot com>
|
||||||
|
|
||||||
This program is free software: you can redistribute it and/or modify
|
This program is free software: you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
the Free Software Foundation, either version 3 of the License, or
|
the Free Software Foundation, either version 3 of the License, or
|
||||||
(at your option) any later version.
|
(at your option) any later version.
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful,
|
This program is distributed in the hope that it will be useful,
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
GNU General Public License for more details.
|
GNU General Public License for more details.
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
You should have received a copy of the GNU General Public License
|
||||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef OBJECT_VIEWER_H
|
#ifndef OBJECT_VIEWER_H
|
||||||
|
@ -33,7 +33,8 @@
|
||||||
// Project includes
|
// Project includes
|
||||||
#include "entity.h"
|
#include "entity.h"
|
||||||
|
|
||||||
namespace NL3D {
|
namespace NL3D
|
||||||
|
{
|
||||||
class UDriver;
|
class UDriver;
|
||||||
class UScene;
|
class UScene;
|
||||||
class ULight;
|
class ULight;
|
||||||
|
@ -48,15 +49,16 @@ namespace NL3D {
|
||||||
namespace NLQT
|
namespace NLQT
|
||||||
@brief namespace NLQT
|
@brief namespace NLQT
|
||||||
*/
|
*/
|
||||||
namespace NLQT {
|
namespace NLQT
|
||||||
|
|
||||||
/**
|
|
||||||
@class CObjectViewer
|
|
||||||
A CObjectViewer class loading and viewing shape, particle system files.
|
|
||||||
*/
|
|
||||||
class CObjectViewer
|
|
||||||
{
|
{
|
||||||
public:
|
|
||||||
|
/**
|
||||||
|
@class CObjectViewer
|
||||||
|
A CObjectViewer class loading and viewing shape, particle system files.
|
||||||
|
*/
|
||||||
|
class CObjectViewer
|
||||||
|
{
|
||||||
|
public:
|
||||||
/// Default constructor.
|
/// Default constructor.
|
||||||
CObjectViewer();
|
CObjectViewer();
|
||||||
|
|
||||||
|
@ -153,7 +155,7 @@ public:
|
||||||
/// @return pointer to the UPlayListManager
|
/// @return pointer to the UPlayListManager
|
||||||
inline NL3D::UPlayListManager *getPlayListManager() { return _PlayListManager; }
|
inline NL3D::UPlayListManager *getPlayListManager() { return _PlayListManager; }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void deleteEntity (CEntity &entity);
|
void deleteEntity (CEntity &entity);
|
||||||
|
|
||||||
/// Delete all entities
|
/// Delete all entities
|
||||||
|
@ -184,7 +186,7 @@ private:
|
||||||
|
|
||||||
// a temporary solution, and later remove
|
// a temporary solution, and later remove
|
||||||
friend class CAnimationSetDialog;
|
friend class CAnimationSetDialog;
|
||||||
};/* class CObjectViewer */
|
};/* class CObjectViewer */
|
||||||
|
|
||||||
} /* namespace NLQT */
|
} /* namespace NLQT */
|
||||||
|
|
||||||
|
|
|
@ -1,19 +1,19 @@
|
||||||
/*
|
/*
|
||||||
Georges Editor Qt
|
Georges Editor Qt
|
||||||
Copyright (C) 2010 Adrian Jaekel <aj at elane2k dot com>
|
Copyright (C) 2010 Adrian Jaekel <aj at elane2k dot com>
|
||||||
|
|
||||||
This program is free software: you can redistribute it and/or modify
|
This program is free software: you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
the Free Software Foundation, either version 3 of the License, or
|
the Free Software Foundation, either version 3 of the License, or
|
||||||
(at your option) any later version.
|
(at your option) any later version.
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful,
|
This program is distributed in the hope that it will be useful,
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
GNU General Public License for more details.
|
GNU General Public License for more details.
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
You should have received a copy of the GNU General Public License
|
||||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "objectviewer_dialog.h"
|
#include "objectviewer_dialog.h"
|
||||||
|
@ -39,11 +39,12 @@
|
||||||
using namespace std;
|
using namespace std;
|
||||||
using namespace NL3D;
|
using namespace NL3D;
|
||||||
|
|
||||||
namespace NLQT {
|
namespace NLQT
|
||||||
|
|
||||||
CObjectViewerDialog::CObjectViewerDialog(QWidget *parent)
|
|
||||||
: _isGraphicsInitialized(false), _isGraphicsEnabled(false), QDockWidget(parent)
|
|
||||||
{
|
{
|
||||||
|
|
||||||
|
CObjectViewerDialog::CObjectViewerDialog(QWidget *parent)
|
||||||
|
: _isGraphicsInitialized(false), _isGraphicsEnabled(false), QDockWidget(parent)
|
||||||
|
{
|
||||||
_ui.setupUi(this);
|
_ui.setupUi(this);
|
||||||
|
|
||||||
//widget = new QWidget(dockWidgetContents);
|
//widget = new QWidget(dockWidgetContents);
|
||||||
|
@ -66,14 +67,15 @@ CObjectViewerDialog::CObjectViewerDialog(QWidget *parent)
|
||||||
// timer->start(); // <- timeout 0
|
// timer->start(); // <- timeout 0
|
||||||
// it's heavy on cpu, though, when no 3d driver initialized :)
|
// it's heavy on cpu, though, when no 3d driver initialized :)
|
||||||
_mainTimer->start(5); // 25fps
|
_mainTimer->start(5); // 25fps
|
||||||
}
|
}
|
||||||
|
|
||||||
CObjectViewerDialog::~CObjectViewerDialog() {
|
CObjectViewerDialog::~CObjectViewerDialog()
|
||||||
|
{
|
||||||
_mainTimer->stop();
|
_mainTimer->stop();
|
||||||
}
|
}
|
||||||
|
|
||||||
void CObjectViewerDialog::init()
|
void CObjectViewerDialog::init()
|
||||||
{
|
{
|
||||||
connect(this, SIGNAL(topLevelChanged(bool)),
|
connect(this, SIGNAL(topLevelChanged(bool)),
|
||||||
this, SLOT(topLevelChanged(bool)));
|
this, SLOT(topLevelChanged(bool)));
|
||||||
//H_AUTO2
|
//H_AUTO2
|
||||||
|
@ -85,10 +87,10 @@ void CObjectViewerDialog::init()
|
||||||
|
|
||||||
Modules::objView().init((nlWindow)_nlw->winId(), 20, 20);
|
Modules::objView().init((nlWindow)_nlw->winId(), 20, 20);
|
||||||
setMouseTracking(true);
|
setMouseTracking(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CObjectViewerDialog::setVisible(bool visible)
|
void CObjectViewerDialog::setVisible(bool visible)
|
||||||
{
|
{
|
||||||
// called by show()
|
// called by show()
|
||||||
// code assuming visible window needed to init the 3d driver
|
// code assuming visible window needed to init the 3d driver
|
||||||
if (visible != isVisible())
|
if (visible != isVisible())
|
||||||
|
@ -104,10 +106,10 @@ void CObjectViewerDialog::setVisible(bool visible)
|
||||||
QDockWidget::setVisible(false);
|
QDockWidget::setVisible(false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void CObjectViewerDialog::updateInitialization(bool visible)
|
void CObjectViewerDialog::updateInitialization(bool visible)
|
||||||
{
|
{
|
||||||
//nldebug("CMainWindow::updateInitialization");
|
//nldebug("CMainWindow::updateInitialization");
|
||||||
bool done;
|
bool done;
|
||||||
do
|
do
|
||||||
|
@ -147,10 +149,10 @@ void CObjectViewerDialog::updateInitialization(bool visible)
|
||||||
|
|
||||||
|
|
||||||
} while (!done);
|
} while (!done);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CObjectViewerDialog::updateRender()
|
void CObjectViewerDialog::updateRender()
|
||||||
{
|
{
|
||||||
//nldebug("CMainWindow::updateRender");
|
//nldebug("CMainWindow::updateRender");
|
||||||
updateInitialization(isVisible());
|
updateInitialization(isVisible());
|
||||||
|
|
||||||
|
@ -242,62 +244,62 @@ void CObjectViewerDialog::updateRender()
|
||||||
Modules::objView().getDriver()->swapBuffers();
|
Modules::objView().getDriver()->swapBuffers();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void CObjectViewerDialog::release()
|
void CObjectViewerDialog::release()
|
||||||
{
|
{
|
||||||
//H_AUTO2
|
//H_AUTO2
|
||||||
nldebug("CObjectViewerDialog::release");
|
nldebug("CObjectViewerDialog::release");
|
||||||
|
|
||||||
Modules::objView().release();
|
Modules::objView().release();
|
||||||
}
|
}
|
||||||
|
|
||||||
void CObjectViewerDialog::reinit()
|
void CObjectViewerDialog::reinit()
|
||||||
{
|
{
|
||||||
//H_AUTO2
|
//H_AUTO2
|
||||||
nldebug("CObjectViewerDialog::reinit");
|
nldebug("CObjectViewerDialog::reinit");
|
||||||
|
|
||||||
Modules::objView().release();
|
Modules::objView().release();
|
||||||
//Modules::objView().reinit(_ui.frame->winId(), width(), height());
|
//Modules::objView().reinit(_ui.frame->winId(), width(), height());
|
||||||
}
|
}
|
||||||
|
|
||||||
QAction *CObjectViewerDialog::createSaveScreenshotAction(QObject *parent)
|
QAction *CObjectViewerDialog::createSaveScreenshotAction(QObject *parent)
|
||||||
{
|
{
|
||||||
QAction *action = new QAction(parent);
|
QAction *action = new QAction(parent);
|
||||||
connect(action, SIGNAL(triggered()), this, SLOT(saveScreenshot()));
|
connect(action, SIGNAL(triggered()), this, SLOT(saveScreenshot()));
|
||||||
return action;
|
return action;
|
||||||
}
|
}
|
||||||
|
|
||||||
QAction *CObjectViewerDialog::createSetBackgroundColor(QObject *parent)
|
QAction *CObjectViewerDialog::createSetBackgroundColor(QObject *parent)
|
||||||
{
|
{
|
||||||
QAction *action = new QAction(parent);
|
QAction *action = new QAction(parent);
|
||||||
connect(action, SIGNAL(triggered()), this, SLOT(setBackgroundColor()));
|
connect(action, SIGNAL(triggered()), this, SLOT(setBackgroundColor()));
|
||||||
return action;
|
return action;
|
||||||
}
|
}
|
||||||
|
|
||||||
void CObjectViewerDialog::saveScreenshot()
|
void CObjectViewerDialog::saveScreenshot()
|
||||||
{
|
{
|
||||||
Modules::objView().saveScreenshot("screenshot", false, true, false);
|
Modules::objView().saveScreenshot("screenshot", false, true, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CObjectViewerDialog::setBackgroundColor()
|
void CObjectViewerDialog::setBackgroundColor()
|
||||||
{
|
{
|
||||||
QColor color = QColorDialog::getColor(QColor(Modules::objView().getBackgroundColor().R,
|
QColor color = QColorDialog::getColor(QColor(Modules::objView().getBackgroundColor().R,
|
||||||
Modules::objView().getBackgroundColor().G,
|
Modules::objView().getBackgroundColor().G,
|
||||||
Modules::objView().getBackgroundColor().B));
|
Modules::objView().getBackgroundColor().B));
|
||||||
Modules::objView().setBackgroundColor(NLMISC::CRGBA(color.red(), color.green(), color.blue()));
|
Modules::objView().setBackgroundColor(NLMISC::CRGBA(color.red(), color.green(), color.blue()));
|
||||||
}
|
}
|
||||||
|
|
||||||
void CObjectViewerDialog::topLevelChanged ( bool topLevel ) {
|
void CObjectViewerDialog::topLevelChanged ( bool topLevel ) {
|
||||||
//nldebug("CObjectViewerDialog::topLevelChanged topLevel:%d",topLevel);
|
//nldebug("CObjectViewerDialog::topLevelChanged topLevel:%d",topLevel);
|
||||||
nldebug("CObjectViewerDialog::topLevelChanged winId:%d",winId());
|
nldebug("CObjectViewerDialog::topLevelChanged winId:%d",winId());
|
||||||
// winId changing when re/docking
|
// winId changing when re/docking
|
||||||
//Modules::georges().init();
|
//Modules::georges().init();
|
||||||
Modules::objView().reinit((nlWindow)_nlw->winId(), _nlw->width(), _nlw->height());
|
Modules::objView().reinit((nlWindow)_nlw->winId(), _nlw->width(), _nlw->height());
|
||||||
}
|
}
|
||||||
|
|
||||||
void CObjectViewerDialog::resizeEvent(QResizeEvent *resizeEvent)
|
void CObjectViewerDialog::resizeEvent(QResizeEvent *resizeEvent)
|
||||||
{
|
{
|
||||||
QDockWidget::resizeEvent(resizeEvent);
|
QDockWidget::resizeEvent(resizeEvent);
|
||||||
if (Modules::objView().getDriver())
|
if (Modules::objView().getDriver())
|
||||||
Modules::objView().setSizeViewport(resizeEvent->size().width(), resizeEvent->size().height());
|
Modules::objView().setSizeViewport(resizeEvent->size().width(), resizeEvent->size().height());
|
||||||
|
@ -307,10 +309,10 @@ void CObjectViewerDialog::resizeEvent(QResizeEvent *resizeEvent)
|
||||||
|
|
||||||
// Resizing the window after switching drivers a few times becomes slow.
|
// Resizing the window after switching drivers a few times becomes slow.
|
||||||
// There is probably something inside the drivers not being released properly.
|
// There is probably something inside the drivers not being released properly.
|
||||||
}
|
}
|
||||||
|
|
||||||
void CObjectViewerDialog::wheelEvent(QWheelEvent *event)
|
void CObjectViewerDialog::wheelEvent(QWheelEvent *event)
|
||||||
{
|
{
|
||||||
//nldebug("CObjectViewerDialog::wheelEvent");
|
//nldebug("CObjectViewerDialog::wheelEvent");
|
||||||
// Get relative positions.
|
// Get relative positions.
|
||||||
float fX = 1.0f - (float)event->pos().x() / this->width();
|
float fX = 1.0f - (float)event->pos().x() / this->width();
|
||||||
|
@ -323,9 +325,10 @@ void CObjectViewerDialog::wheelEvent(QWheelEvent *event)
|
||||||
else
|
else
|
||||||
Modules::objView().getDriver()->EventServer.postEvent(new NLMISC::CEventMouseWheel(-fX, fY, buttons, false, this));
|
Modules::objView().getDriver()->EventServer.postEvent(new NLMISC::CEventMouseWheel(-fX, fY, buttons, false, this));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
uint32 CObjectViewerDialog::getNelButtons(QMouseEvent *event) {
|
uint32 CObjectViewerDialog::getNelButtons(QMouseEvent *event)
|
||||||
|
{
|
||||||
//nldebug("CObjectViewerDialog::getNelButtons");
|
//nldebug("CObjectViewerDialog::getNelButtons");
|
||||||
uint32 buttons = NLMISC::noButton;
|
uint32 buttons = NLMISC::noButton;
|
||||||
if(event->buttons() & Qt::LeftButton) buttons |= NLMISC::leftButton;
|
if(event->buttons() & Qt::LeftButton) buttons |= NLMISC::leftButton;
|
||||||
|
@ -336,9 +339,10 @@ uint32 CObjectViewerDialog::getNelButtons(QMouseEvent *event) {
|
||||||
if(event->modifiers() & Qt::AltModifier) buttons |= NLMISC::altButton;
|
if(event->modifiers() & Qt::AltModifier) buttons |= NLMISC::altButton;
|
||||||
|
|
||||||
return buttons;
|
return buttons;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint32 CObjectViewerDialog::getNelButtons(QWheelEvent *event) {
|
uint32 CObjectViewerDialog::getNelButtons(QWheelEvent *event)
|
||||||
|
{
|
||||||
//nldebug("CObjectViewerDialog::getNelButtons");
|
//nldebug("CObjectViewerDialog::getNelButtons");
|
||||||
uint32 buttons = NLMISC::noButton;
|
uint32 buttons = NLMISC::noButton;
|
||||||
if(event->buttons() & Qt::LeftButton) buttons |= NLMISC::leftButton;
|
if(event->buttons() & Qt::LeftButton) buttons |= NLMISC::leftButton;
|
||||||
|
@ -349,9 +353,10 @@ uint32 CObjectViewerDialog::getNelButtons(QWheelEvent *event) {
|
||||||
if(event->modifiers() & Qt::AltModifier) buttons |= NLMISC::altButton;
|
if(event->modifiers() & Qt::AltModifier) buttons |= NLMISC::altButton;
|
||||||
|
|
||||||
return buttons;
|
return buttons;
|
||||||
}
|
}
|
||||||
|
|
||||||
void CObjectViewerDialog::mousePressEvent(QMouseEvent *event) {
|
void CObjectViewerDialog::mousePressEvent(QMouseEvent *event)
|
||||||
|
{
|
||||||
//nldebug("CObjectViewerDialog::mousePressEvent");
|
//nldebug("CObjectViewerDialog::mousePressEvent");
|
||||||
// Get relative positions.
|
// Get relative positions.
|
||||||
float fX = 1.0f - (float)event->pos().x() / this->width();
|
float fX = 1.0f - (float)event->pos().x() / this->width();
|
||||||
|
@ -372,9 +377,10 @@ void CObjectViewerDialog::mousePressEvent(QMouseEvent *event) {
|
||||||
Modules::objView().getDriver()->EventServer.postEvent(
|
Modules::objView().getDriver()->EventServer.postEvent(
|
||||||
new NLMISC::CEventMouseDown( -fX, fY,
|
new NLMISC::CEventMouseDown( -fX, fY,
|
||||||
(NLMISC::TMouseButton)(NLMISC::rightButton|(buttons&~(NLMISC::rightButton|NLMISC::leftButton|NLMISC::middleButton))), this));
|
(NLMISC::TMouseButton)(NLMISC::rightButton|(buttons&~(NLMISC::rightButton|NLMISC::leftButton|NLMISC::middleButton))), this));
|
||||||
}
|
}
|
||||||
|
|
||||||
void CObjectViewerDialog::mouseReleaseEvent(QMouseEvent *event) {
|
void CObjectViewerDialog::mouseReleaseEvent(QMouseEvent *event)
|
||||||
|
{
|
||||||
//nldebug("CObjectViewerDialog::mouseReleaseEvent");
|
//nldebug("CObjectViewerDialog::mouseReleaseEvent");
|
||||||
// Get relative positions.
|
// Get relative positions.
|
||||||
float fX = 1.0f - (float)event->pos().x() / this->width();
|
float fX = 1.0f - (float)event->pos().x() / this->width();
|
||||||
|
@ -392,9 +398,10 @@ void CObjectViewerDialog::mouseReleaseEvent(QMouseEvent *event) {
|
||||||
if(event->button() == Qt::RightButton)
|
if(event->button() == Qt::RightButton)
|
||||||
Modules::objView().getDriver()->EventServer.postEvent(
|
Modules::objView().getDriver()->EventServer.postEvent(
|
||||||
new NLMISC::CEventMouseUp( -fX, fY, NLMISC::rightButton, this));
|
new NLMISC::CEventMouseUp( -fX, fY, NLMISC::rightButton, this));
|
||||||
}
|
}
|
||||||
|
|
||||||
void CObjectViewerDialog::mouseMoveEvent(QMouseEvent *event) {
|
void CObjectViewerDialog::mouseMoveEvent(QMouseEvent *event)
|
||||||
|
{
|
||||||
//nldebug("CObjectViewerDialog::mouseMoveEvent");
|
//nldebug("CObjectViewerDialog::mouseMoveEvent");
|
||||||
// Get relative positions.
|
// Get relative positions.
|
||||||
float fX = 1.0f - (float)event->pos().x() / this->width();
|
float fX = 1.0f - (float)event->pos().x() / this->width();
|
||||||
|
@ -403,6 +410,6 @@ void CObjectViewerDialog::mouseMoveEvent(QMouseEvent *event) {
|
||||||
if ((fX == 0.5f) && (fY == 0.5f)) return;
|
if ((fX == 0.5f) && (fY == 0.5f)) return;
|
||||||
NLMISC::TMouseButton buttons = (NLMISC::TMouseButton)getNelButtons(event);
|
NLMISC::TMouseButton buttons = (NLMISC::TMouseButton)getNelButtons(event);
|
||||||
Modules::objView().getDriver()->EventServer.postEvent(new NLMISC::CEventMouseMove(-fX, fY, buttons, this));
|
Modules::objView().getDriver()->EventServer.postEvent(new NLMISC::CEventMouseMove(-fX, fY, buttons, this));
|
||||||
}
|
}
|
||||||
|
|
||||||
} /* namespace NLQT */
|
} /* namespace NLQT */
|
||||||
|
|
|
@ -1,19 +1,19 @@
|
||||||
/*
|
/*
|
||||||
Georges Editor Qt
|
Georges Editor Qt
|
||||||
Copyright (C) 2010 Adrian Jaekel <aj at elane2k dot com>
|
Copyright (C) 2010 Adrian Jaekel <aj at elane2k dot com>
|
||||||
|
|
||||||
This program is free software: you can redistribute it and/or modify
|
This program is free software: you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
the Free Software Foundation, either version 3 of the License, or
|
the Free Software Foundation, either version 3 of the License, or
|
||||||
(at your option) any later version.
|
(at your option) any later version.
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful,
|
This program is distributed in the hope that it will be useful,
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
GNU General Public License for more details.
|
GNU General Public License for more details.
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
You should have received a copy of the GNU General Public License
|
||||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef OBJECTVIEWER_DIALOG_H
|
#ifndef OBJECTVIEWER_DIALOG_H
|
||||||
|
@ -45,13 +45,14 @@ typedef QGLWidget QNLWidget;
|
||||||
|
|
||||||
class QAction;
|
class QAction;
|
||||||
|
|
||||||
namespace NLQT {
|
namespace NLQT
|
||||||
|
|
||||||
class CObjectViewerDialog: public QDockWidget, public NLMISC::IEventEmitter
|
|
||||||
{
|
{
|
||||||
|
|
||||||
|
class CObjectViewerDialog: public QDockWidget, public NLMISC::IEventEmitter
|
||||||
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
public:
|
public:
|
||||||
CObjectViewerDialog(QWidget *parent = 0);
|
CObjectViewerDialog(QWidget *parent = 0);
|
||||||
~CObjectViewerDialog();
|
~CObjectViewerDialog();
|
||||||
|
|
||||||
|
@ -65,7 +66,7 @@ public:
|
||||||
QAction *createSaveScreenshotAction(QObject *parent);
|
QAction *createSaveScreenshotAction(QObject *parent);
|
||||||
QAction *createSetBackgroundColor(QObject *parent);
|
QAction *createSetBackgroundColor(QObject *parent);
|
||||||
|
|
||||||
private Q_SLOTS:
|
private Q_SLOTS:
|
||||||
void updateRender();
|
void updateRender();
|
||||||
|
|
||||||
void saveScreenshot();
|
void saveScreenshot();
|
||||||
|
@ -76,7 +77,7 @@ private Q_SLOTS:
|
||||||
|
|
||||||
void topLevelChanged(bool topLevel);
|
void topLevelChanged(bool topLevel);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual void resizeEvent(QResizeEvent *resizeEvent);
|
virtual void resizeEvent(QResizeEvent *resizeEvent);
|
||||||
virtual void mousePressEvent(QMouseEvent *event);
|
virtual void mousePressEvent(QMouseEvent *event);
|
||||||
virtual void mouseReleaseEvent(QMouseEvent *event);
|
virtual void mouseReleaseEvent(QMouseEvent *event);
|
||||||
|
@ -86,7 +87,7 @@ protected:
|
||||||
uint32 getNelButtons(QMouseEvent *event);
|
uint32 getNelButtons(QMouseEvent *event);
|
||||||
uint32 getNelButtons(QWheelEvent *event);
|
uint32 getNelButtons(QWheelEvent *event);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
CObjectViewerDialog(const CObjectViewerDialog &);
|
CObjectViewerDialog(const CObjectViewerDialog &);
|
||||||
CObjectViewerDialog &operator=(const CObjectViewerDialog &);
|
CObjectViewerDialog &operator=(const CObjectViewerDialog &);
|
||||||
|
|
||||||
|
@ -101,7 +102,7 @@ private:
|
||||||
QNLWidget * _nlw;
|
QNLWidget * _nlw;
|
||||||
|
|
||||||
friend class CMainWindow;
|
friend class CMainWindow;
|
||||||
}; /* CObjectViewerDialog */
|
}; /* CObjectViewerDialog */
|
||||||
|
|
||||||
} /* namespace NLQT */
|
} /* namespace NLQT */
|
||||||
|
|
||||||
|
|
|
@ -24,14 +24,18 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
#include <nel/misc/debug.h>
|
#include <nel/misc/debug.h>
|
||||||
#include <nel/misc/file.h>
|
#include <nel/misc/file.h>
|
||||||
|
|
||||||
namespace NLQT {
|
namespace NLQT
|
||||||
|
{
|
||||||
|
|
||||||
CQtDisplayer::CQtDisplayer(QPlainTextEdit *dlgDebug, bool eraseLastLog, const char *displayerName, bool raw)
|
CQtDisplayer::CQtDisplayer(QPlainTextEdit *dlgDebug, bool eraseLastLog, const char *displayerName, bool raw)
|
||||||
: NLMISC::IDisplayer (displayerName), _NeedHeader(true), _LastLogSizeChecked(0), _Raw(raw) {
|
: NLMISC::IDisplayer (displayerName), _NeedHeader(true), _LastLogSizeChecked(0), _Raw(raw)
|
||||||
|
{
|
||||||
setParam(dlgDebug,eraseLastLog);
|
setParam(dlgDebug,eraseLastLog);
|
||||||
}
|
}
|
||||||
|
|
||||||
CQtDisplayer::CQtDisplayer() : IDisplayer (""), _NeedHeader(true), _LastLogSizeChecked(0), _Raw(false) {
|
CQtDisplayer::CQtDisplayer()
|
||||||
|
: IDisplayer (""), _NeedHeader(true), _LastLogSizeChecked(0), _Raw(false)
|
||||||
|
{
|
||||||
;
|
;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -39,12 +43,14 @@ namespace NLQT {
|
||||||
;
|
;
|
||||||
}
|
}
|
||||||
|
|
||||||
void CQtDisplayer::setParam (QPlainTextEdit *dlgDebug, bool eraseLastLog) {
|
void CQtDisplayer::setParam (QPlainTextEdit *dlgDebug, bool eraseLastLog)
|
||||||
|
{
|
||||||
m_DlgDebug=dlgDebug;
|
m_DlgDebug=dlgDebug;
|
||||||
//dlgDebug->dlgDbgText->WriteText("test");
|
//dlgDebug->dlgDbgText->WriteText("test");
|
||||||
}
|
}
|
||||||
|
|
||||||
void CQtDisplayer::doDisplay ( const NLMISC::CLog::TDisplayInfo& args, const char *message ) {
|
void CQtDisplayer::doDisplay ( const NLMISC::CLog::TDisplayInfo& args, const char *message )
|
||||||
|
{
|
||||||
bool needSpace = false;
|
bool needSpace = false;
|
||||||
std::string str;
|
std::string str;
|
||||||
|
|
||||||
|
@ -58,7 +64,8 @@ namespace NLQT {
|
||||||
needSpace = true;
|
needSpace = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (args.LogType != NLMISC::CLog::LOG_NO && !_Raw) {
|
if (args.LogType != NLMISC::CLog::LOG_NO && !_Raw)
|
||||||
|
{
|
||||||
if (needSpace) { str += " "; needSpace = false; }
|
if (needSpace) { str += " "; needSpace = false; }
|
||||||
str += logTypeToString(args.LogType);
|
str += logTypeToString(args.LogType);
|
||||||
if (args.LogType == NLMISC::CLog::LOG_WARNING)
|
if (args.LogType == NLMISC::CLog::LOG_WARNING)
|
||||||
|
@ -92,13 +99,20 @@ namespace NLQT {
|
||||||
needSpace = true;
|
needSpace = true;
|
||||||
}*/
|
}*/
|
||||||
|
|
||||||
if (args.FuncName != NULL && !_Raw) {
|
if (args.FuncName != NULL && !_Raw)
|
||||||
if (needSpace) { str += " "; needSpace = false; }
|
{
|
||||||
|
if (needSpace)
|
||||||
|
{
|
||||||
|
str += " "; needSpace = false;
|
||||||
|
}
|
||||||
str += args.FuncName;
|
str += args.FuncName;
|
||||||
needSpace = true;
|
needSpace = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (needSpace) { str += " : "; needSpace = false; }
|
if (needSpace)
|
||||||
|
{
|
||||||
|
str += " : "; needSpace = false;
|
||||||
|
}
|
||||||
str += message;
|
str += message;
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -28,10 +28,12 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
// Qt includes
|
// Qt includes
|
||||||
#include <QPlainTextEdit>
|
#include <QPlainTextEdit>
|
||||||
|
|
||||||
namespace NLQT {
|
namespace NLQT
|
||||||
|
{
|
||||||
|
|
||||||
class CQtDisplayer : virtual public NLMISC::IDisplayer
|
class CQtDisplayer : virtual public NLMISC::IDisplayer
|
||||||
{
|
{
|
||||||
|
|
||||||
public:
|
public:
|
||||||
CQtDisplayer(QPlainTextEdit *dlgDebug, bool eraseLastLog = false, const char *displayerName = "", bool raw = false);
|
CQtDisplayer(QPlainTextEdit *dlgDebug, bool eraseLastLog = false, const char *displayerName = "", bool raw = false);
|
||||||
CQtDisplayer();
|
CQtDisplayer();
|
||||||
|
|
|
@ -31,7 +31,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
using namespace NLMISC;
|
using namespace NLMISC;
|
||||||
|
|
||||||
namespace NLQT {
|
namespace NLQT
|
||||||
|
{
|
||||||
|
|
||||||
CSettingsDialog::CSettingsDialog(QWidget *parent)
|
CSettingsDialog::CSettingsDialog(QWidget *parent)
|
||||||
: QDialog(parent)
|
: QDialog(parent)
|
||||||
|
@ -72,7 +73,8 @@ namespace NLQT {
|
||||||
QFileDialog dialog(this);
|
QFileDialog dialog(this);
|
||||||
dialog.setOption(QFileDialog::ShowDirsOnly, true);
|
dialog.setOption(QFileDialog::ShowDirsOnly, true);
|
||||||
dialog.setFileMode(QFileDialog::Directory);
|
dialog.setFileMode(QFileDialog::Directory);
|
||||||
if (dialog.exec()) {
|
if (dialog.exec())
|
||||||
|
{
|
||||||
QString newPath = dialog.selectedFiles().first();
|
QString newPath = dialog.selectedFiles().first();
|
||||||
if (!newPath.isEmpty())
|
if (!newPath.isEmpty())
|
||||||
{
|
{
|
||||||
|
@ -137,9 +139,12 @@ namespace NLQT {
|
||||||
list.push_back(str);
|
list.push_back(str);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (list.empty()) {
|
if (list.empty())
|
||||||
|
{
|
||||||
Modules::config().getConfigFile().getVar("SearchPaths").forceAsString("");
|
Modules::config().getConfigFile().getVar("SearchPaths").forceAsString("");
|
||||||
} else {
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
Modules::config().getConfigFile().getVar("SearchPaths").forceAsString("");
|
Modules::config().getConfigFile().getVar("SearchPaths").forceAsString("");
|
||||||
Modules::config().getConfigFile().getVar("SearchPaths").setAsString(list);
|
Modules::config().getConfigFile().getVar("SearchPaths").setAsString(list);
|
||||||
}
|
}
|
||||||
|
@ -197,4 +202,5 @@ namespace NLQT {
|
||||||
ui.leveldesignPath->setText(QFileDialog::getExistingDirectory(this, tr("Open Directory"),
|
ui.leveldesignPath->setText(QFileDialog::getExistingDirectory(this, tr("Open Directory"),
|
||||||
QDir::currentPath(), QFileDialog::ShowDirsOnly | QFileDialog::DontResolveSymlinks));
|
QDir::currentPath(), QFileDialog::ShowDirsOnly | QFileDialog::DontResolveSymlinks));
|
||||||
}
|
}
|
||||||
|
|
||||||
} /* namespace NLQT */
|
} /* namespace NLQT */
|
|
@ -1,19 +1,19 @@
|
||||||
/*
|
/*
|
||||||
Georges Editor Qt
|
Georges Editor Qt
|
||||||
Copyright (C) 2010 Adrian Jaekel <aj at elane2k dot com>
|
Copyright (C) 2010 Adrian Jaekel <aj at elane2k dot com>
|
||||||
|
|
||||||
This program is free software: you can redistribute it and/or modify
|
This program is free software: you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
the Free Software Foundation, either version 3 of the License, or
|
the Free Software Foundation, either version 3 of the License, or
|
||||||
(at your option) any later version.
|
(at your option) any later version.
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful,
|
This program is distributed in the hope that it will be useful,
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
GNU General Public License for more details.
|
GNU General Public License for more details.
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
You should have received a copy of the GNU General Public License
|
||||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef SETTINGS_DIALOG_H
|
#ifndef SETTINGS_DIALOG_H
|
||||||
|
@ -29,20 +29,21 @@
|
||||||
|
|
||||||
// Project includes
|
// Project includes
|
||||||
|
|
||||||
namespace NLQT {
|
namespace NLQT
|
||||||
|
|
||||||
class CSettingsDialog: public QDialog
|
|
||||||
{
|
{
|
||||||
|
|
||||||
|
class CSettingsDialog: public QDialog
|
||||||
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
public:
|
public:
|
||||||
CSettingsDialog(QWidget *parent = 0);
|
CSettingsDialog(QWidget *parent = 0);
|
||||||
~CSettingsDialog();
|
~CSettingsDialog();
|
||||||
|
|
||||||
Q_SIGNALS:
|
Q_SIGNALS:
|
||||||
void ldPathChanged(QString);
|
void ldPathChanged(QString);
|
||||||
|
|
||||||
private Q_SLOTS:
|
private Q_SLOTS:
|
||||||
void addPath();
|
void addPath();
|
||||||
void removePath();
|
void removePath();
|
||||||
void upPath();
|
void upPath();
|
||||||
|
@ -50,7 +51,7 @@ private Q_SLOTS:
|
||||||
void applyPressed();
|
void applyPressed();
|
||||||
void browseLeveldesignPath();
|
void browseLeveldesignPath();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void cfcbGraphicsDrivers(NLMISC::CConfigFile::CVar &var);
|
void cfcbGraphicsDrivers(NLMISC::CConfigFile::CVar &var);
|
||||||
void cfcbSoundDrivers(NLMISC::CConfigFile::CVar &var);
|
void cfcbSoundDrivers(NLMISC::CConfigFile::CVar &var);
|
||||||
void cfcbSearchPaths(NLMISC::CConfigFile::CVar &var);
|
void cfcbSearchPaths(NLMISC::CConfigFile::CVar &var);
|
||||||
|
@ -58,7 +59,7 @@ private:
|
||||||
|
|
||||||
Ui::CSettingsDialog ui;
|
Ui::CSettingsDialog ui;
|
||||||
|
|
||||||
}; /* class CSettingsDialog */
|
}; /* class CSettingsDialog */
|
||||||
|
|
||||||
} /* namespace NLQT */
|
} /* namespace NLQT */
|
||||||
|
|
||||||
|
|
|
@ -1,275 +0,0 @@
|
||||||
/*
|
|
||||||
Georges Editor Qt
|
|
||||||
Copyright (C) 2010 Adrian Jaekel <aj at elane2k dot com>
|
|
||||||
|
|
||||||
This program is free software: you can redistribute it and/or modify
|
|
||||||
it under the terms of the GNU General Public License as published by
|
|
||||||
the Free Software Foundation, either version 3 of the License, or
|
|
||||||
(at your option) any later version.
|
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful,
|
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
GNU General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
|
||||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include "spindelegate.h"
|
|
||||||
|
|
||||||
// NeL includes
|
|
||||||
#include <nel/misc/debug.h>
|
|
||||||
#include <nel/georges/u_type.h>
|
|
||||||
#include <nel/georges/u_form_elm.h>
|
|
||||||
|
|
||||||
// Qt includes
|
|
||||||
#include <QSpinBox>
|
|
||||||
#include <QLineEdit>
|
|
||||||
#include <QDoubleSpinBox>
|
|
||||||
#include <QColorDialog>
|
|
||||||
#include <QComboBox>
|
|
||||||
#include <QApplication>
|
|
||||||
#include <QTextDocument>
|
|
||||||
#include <QAbstractTextDocumentLayout>
|
|
||||||
#include <QPainter>
|
|
||||||
// Project includes
|
|
||||||
#include "georgesform_model.h"
|
|
||||||
#include "formitem.h"
|
|
||||||
|
|
||||||
namespace NLQT {
|
|
||||||
|
|
||||||
SpinBoxDelegate::SpinBoxDelegate(QObject *parent)
|
|
||||||
: QStyledItemDelegate(parent)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
QWidget *SpinBoxDelegate::createEditor(QWidget *parent,
|
|
||||||
const QStyleOptionViewItem & option ,
|
|
||||||
const QModelIndex &index) const
|
|
||||||
{
|
|
||||||
CFormItem *item = static_cast<CFormItem*>(index.internalPointer());
|
|
||||||
QString value = item->data(1).toString();
|
|
||||||
|
|
||||||
if (value.isEmpty())
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
const NLGEORGES::UType *type = qobject_cast<const CGeorgesFormModel *>(index.model())->
|
|
||||||
getItem(index)->getFormElm()->getType();
|
|
||||||
if(type) {
|
|
||||||
int numDefinitions = type->getNumDefinition();
|
|
||||||
|
|
||||||
if (numDefinitions) {
|
|
||||||
std::string l, v;
|
|
||||||
QString label,value;
|
|
||||||
|
|
||||||
QComboBox *editor = new QComboBox(parent);
|
|
||||||
for (int i = 0; i < numDefinitions; i++) {
|
|
||||||
type->getDefinition(i,l,v);
|
|
||||||
label = l.c_str();
|
|
||||||
value = v.c_str();
|
|
||||||
editor->addItem(label);
|
|
||||||
}
|
|
||||||
return editor;
|
|
||||||
} else {
|
|
||||||
switch (type->getType()) {
|
|
||||||
case NLGEORGES::UType::UnsignedInt:
|
|
||||||
case NLGEORGES::UType::SignedInt:
|
|
||||||
{
|
|
||||||
QSpinBox *editor = new QSpinBox(parent);
|
|
||||||
|
|
||||||
//QString min = QString(type->getMin().c_str());
|
|
||||||
//QString max = QString(type->getMax().c_str());
|
|
||||||
//QString inc = QString(type->getIncrement().c_str());
|
|
||||||
//nldebug(QString("min %1 max %2 inc %3").arg(min).arg(max).arg(inc).toStdString().c_str());
|
|
||||||
|
|
||||||
// TODO: use saved min/max values
|
|
||||||
editor->setMinimum(-99999);
|
|
||||||
editor->setMaximum(99999);
|
|
||||||
editor->setSingleStep(1);
|
|
||||||
return editor;
|
|
||||||
}
|
|
||||||
case NLGEORGES::UType::Double:
|
|
||||||
{
|
|
||||||
QDoubleSpinBox *editor = new QDoubleSpinBox(parent);
|
|
||||||
|
|
||||||
//QString min = QString(type->getMin().c_str());
|
|
||||||
//QString max = QString(type->getMax().c_str());
|
|
||||||
//QString inc = QString(type->getIncrement().c_str());
|
|
||||||
//nldebug(QString("min %1 max %2 inc %3").arg(min).arg(max).arg(inc).toStdString().c_str());
|
|
||||||
|
|
||||||
// TODO: use saved min/max values
|
|
||||||
editor->setMinimum(-99999);
|
|
||||||
editor->setMaximum(99999);
|
|
||||||
editor->setSingleStep(0.1);
|
|
||||||
editor->setDecimals(1);
|
|
||||||
return editor;
|
|
||||||
}
|
|
||||||
case NLGEORGES::UType::Color:
|
|
||||||
{
|
|
||||||
return new QColorDialog();
|
|
||||||
}
|
|
||||||
default: // UType::String
|
|
||||||
{
|
|
||||||
QLineEdit *editor = new QLineEdit(parent);
|
|
||||||
return editor;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
void SpinBoxDelegate::setEditorData(QWidget *editor,
|
|
||||||
const QModelIndex &index) const
|
|
||||||
{
|
|
||||||
const NLGEORGES::UType *type = qobject_cast<const CGeorgesFormModel *>(index.model())->
|
|
||||||
getItem(index)->getFormElm()->getType();
|
|
||||||
int numDefinitions = type->getNumDefinition();
|
|
||||||
QString value = index.model()->data(index, Qt::DisplayRole).toString();
|
|
||||||
|
|
||||||
if (numDefinitions) {
|
|
||||||
QComboBox *cb = static_cast<QComboBox*>(editor);
|
|
||||||
cb->setCurrentIndex(cb->findText(value));
|
|
||||||
//cb->setIconSize()
|
|
||||||
} else {
|
|
||||||
switch (type->getType()) {
|
|
||||||
case NLGEORGES::UType::UnsignedInt:
|
|
||||||
case NLGEORGES::UType::SignedInt:
|
|
||||||
{
|
|
||||||
QSpinBox *spinBox = static_cast<QSpinBox*>(editor);
|
|
||||||
spinBox->setValue((int)value.toDouble());
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case NLGEORGES::UType::Double:
|
|
||||||
{
|
|
||||||
QDoubleSpinBox *spinBox = static_cast<QDoubleSpinBox*>(editor);
|
|
||||||
spinBox->setValue(value.toDouble());
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case NLGEORGES::UType::Color:
|
|
||||||
{
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
default:
|
|
||||||
{
|
|
||||||
QLineEdit *textEdit = static_cast<QLineEdit*>(editor);
|
|
||||||
textEdit->setText(value);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void SpinBoxDelegate::setModelData(QWidget *editor, QAbstractItemModel *model,
|
|
||||||
const QModelIndex &index) const
|
|
||||||
{
|
|
||||||
const NLGEORGES::UType *type = qobject_cast<const CGeorgesFormModel *>(index.model())->
|
|
||||||
getItem(index)->getFormElm()->getType();
|
|
||||||
int numDefinitions = type->getNumDefinition();
|
|
||||||
|
|
||||||
if (numDefinitions) {
|
|
||||||
QComboBox *comboBox = static_cast<QComboBox*>(editor);
|
|
||||||
QString value = comboBox->currentText();
|
|
||||||
QString oldValue = index.model()->data(index, Qt::DisplayRole).toString();
|
|
||||||
if (value == oldValue) {
|
|
||||||
// nothing's changed
|
|
||||||
} else {
|
|
||||||
nldebug(QString("setModelData from %1 to %2")
|
|
||||||
.arg(oldValue).arg(value).toStdString().c_str());
|
|
||||||
model->setData(index, value, Qt::EditRole);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
switch (type->getType()) {
|
|
||||||
case NLGEORGES::UType::UnsignedInt:
|
|
||||||
case NLGEORGES::UType::SignedInt:
|
|
||||||
{
|
|
||||||
QSpinBox *spinBox = static_cast<QSpinBox*>(editor);
|
|
||||||
int value = spinBox->value();
|
|
||||||
QString oldValue = index.model()->data(index, Qt::DisplayRole).toString();
|
|
||||||
if (QString("%1").arg(value) == oldValue) {
|
|
||||||
// nothing's changed
|
|
||||||
} else {
|
|
||||||
nldebug(QString("setModelData from %1 to %2")
|
|
||||||
.arg(oldValue).arg(value).toStdString().c_str());
|
|
||||||
model->setData(index, value, Qt::EditRole);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case NLGEORGES::UType::Double:
|
|
||||||
{
|
|
||||||
QDoubleSpinBox *spinBox = static_cast<QDoubleSpinBox*>(editor);
|
|
||||||
double value = spinBox->value();
|
|
||||||
QString oldValue = index.model()->data(index, Qt::DisplayRole).toString();
|
|
||||||
if (QString("%1").arg(value) == oldValue) {
|
|
||||||
// nothing's changed
|
|
||||||
} else {
|
|
||||||
nldebug(QString("setModelData from %1 to %2")
|
|
||||||
.arg(oldValue).arg(value).toStdString().c_str());
|
|
||||||
model->setData(index, value, Qt::EditRole);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case NLGEORGES::UType::Color:
|
|
||||||
{
|
|
||||||
break; // TODO
|
|
||||||
}
|
|
||||||
default: // UType::String
|
|
||||||
{
|
|
||||||
QLineEdit *textEdit = static_cast<QLineEdit*>(editor);
|
|
||||||
QString value = textEdit->text();
|
|
||||||
QString oldValue = index.model()->data(index, Qt::DisplayRole).toString();
|
|
||||||
if (value == oldValue) {
|
|
||||||
// nothing's changed
|
|
||||||
} else {
|
|
||||||
nldebug(QString("setModelData from %1 to %2")
|
|
||||||
.arg(oldValue).arg(value).toStdString().c_str());
|
|
||||||
model->setData(index, value, Qt::EditRole);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void SpinBoxDelegate::updateEditorGeometry(QWidget *editor,
|
|
||||||
const QStyleOptionViewItem &option, const QModelIndex &index) const
|
|
||||||
{
|
|
||||||
QRect r = option.rect;
|
|
||||||
editor->setGeometry(r);
|
|
||||||
//option.decorationAlignment = QStyleOptionViewItem::Right;
|
|
||||||
}
|
|
||||||
|
|
||||||
void SpinBoxDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const
|
|
||||||
{
|
|
||||||
QStyleOptionViewItemV4 optionV4 = option;
|
|
||||||
optionV4.decorationPosition = QStyleOptionViewItem::Right;
|
|
||||||
//optionV4.decorationSize = QSize(32,32);
|
|
||||||
initStyleOption(&optionV4, index);
|
|
||||||
|
|
||||||
QStyledItemDelegate::paint(painter,optionV4,index);
|
|
||||||
|
|
||||||
//QStyle *style = optionV4.widget? optionV4.widget->style() : QApplication::style();
|
|
||||||
|
|
||||||
//QTextDocument doc;
|
|
||||||
//doc.setHtml(optionV4.text);
|
|
||||||
|
|
||||||
///// Painting item without text
|
|
||||||
//optionV4.text = QString();
|
|
||||||
//style->drawControl(QStyle::CE_ItemViewItem, &optionV4, painter);
|
|
||||||
|
|
||||||
//QAbstractTextDocumentLayout::PaintContext ctx;
|
|
||||||
|
|
||||||
//// Highlighting text if item is selected
|
|
||||||
//if (optionV4.state & QStyle::State_Selected)
|
|
||||||
// ctx.palette.setColor(QPalette::Text, optionV4.palette.color(QPalette::Active, QPalette::HighlightedText));
|
|
||||||
|
|
||||||
//QRect textRect = style->subElementRect(QStyle::SE_ItemViewItemText, &optionV4);
|
|
||||||
//painter->save();
|
|
||||||
//painter->translate(textRect.topLeft());
|
|
||||||
//painter->setClipRect(textRect.translated(-textRect.topLeft()));
|
|
||||||
//doc.documentLayout()->draw(painter, ctx);
|
|
||||||
//painter->restore();
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -1,44 +0,0 @@
|
||||||
/*
|
|
||||||
Georges Editor Qt
|
|
||||||
Copyright (C) 2010 Adrian Jaekel <aj at elane2k dot com>
|
|
||||||
|
|
||||||
This program is free software: you can redistribute it and/or modify
|
|
||||||
it under the terms of the GNU General Public License as published by
|
|
||||||
the Free Software Foundation, either version 3 of the License, or
|
|
||||||
(at your option) any later version.
|
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful,
|
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
GNU General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
|
||||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef DELEGATE_H
|
|
||||||
#define DELEGATE_H
|
|
||||||
|
|
||||||
#include <QStyledItemDelegate>
|
|
||||||
|
|
||||||
namespace NLQT {
|
|
||||||
|
|
||||||
class SpinBoxDelegate : public QStyledItemDelegate
|
|
||||||
{
|
|
||||||
|
|
||||||
public:
|
|
||||||
SpinBoxDelegate(QObject *parent = 0);
|
|
||||||
|
|
||||||
QWidget *createEditor(QWidget *parent, const QStyleOptionViewItem &option,
|
|
||||||
const QModelIndex &index) const;
|
|
||||||
void setEditorData(QWidget *editor, const QModelIndex &index) const;
|
|
||||||
void setModelData(QWidget *editor, QAbstractItemModel *model,
|
|
||||||
const QModelIndex &index) const;
|
|
||||||
void updateEditorGeometry(QWidget *editor,
|
|
||||||
const QStyleOptionViewItem &option, const QModelIndex &index) const;
|
|
||||||
void paint ( QPainter * painter, const QStyleOptionViewItem & option,
|
|
||||||
const QModelIndex & index ) const;
|
|
||||||
};
|
|
||||||
|
|
||||||
}
|
|
||||||
#endif
|
|
Loading…
Reference in a new issue