ADDED: #1471 Created ActionEditor, LinkEditor, ProcEditor, WidgetHierarchy dialogs for the GUI editor, altough obviously they are just an empty shell for now. http://www.youtube.com/watch?v=nOhlliU6tCE

--HG--
branch : gsoc2012-gui-editor
This commit is contained in:
dfighter1985 2012-07-06 06:10:20 +02:00
parent acb385fbe9
commit 2d4e1467c2
16 changed files with 724 additions and 7 deletions

View file

@ -9,8 +9,25 @@ SET(OVQT_EXT_SYS_SRC ${CMAKE_CURRENT_SOURCE_DIR}/../../extension_system/iplugin.
${CMAKE_CURRENT_SOURCE_DIR}/../../extension_system/iplugin_manager.h ${CMAKE_CURRENT_SOURCE_DIR}/../../extension_system/iplugin_manager.h
${CMAKE_CURRENT_SOURCE_DIR}/../../extension_system/iplugin_spec.h) ${CMAKE_CURRENT_SOURCE_DIR}/../../extension_system/iplugin_spec.h)
SET(OVQT_PLUGIN_GUI_EDITOR_HDR gui_editor_plugin.h gui_editor_window.h gui_editor_context.h widget_properties.h ) SET(OVQT_PLUGIN_GUI_EDITOR_HDR
SET(OVQT_PLUGIN_GUI_EDITOR_UIS gui_editor_window.ui widget_properties.ui ) gui_editor_plugin.h
gui_editor_window.h
gui_editor_context.h
widget_properties.h
widget_hierarchy.h
action_editor.h
link_editor.h
proc_editor.h
)
SET(OVQT_PLUGIN_GUI_EDITOR_UIS
gui_editor_window.ui
widget_properties.ui
widget_hierarchy.ui
action_editor.ui
link_editor.ui
proc_editor.ui
)
SET(QT_USE_QTGUI TRUE) SET(QT_USE_QTGUI TRUE)
SET(QT_USE_QTOPENGL TRUE) SET(QT_USE_QTOPENGL TRUE)

View file

@ -0,0 +1,32 @@
// Object Viewer Qt GUI Editor plugin <http://dev.ryzom.com/projects/ryzom/>
// Copyright (C) 2010 Winch Gate Property Limited
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero 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 Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "action_editor.h"
namespace GUIEditor
{
ActionEditor::ActionEditor( QWidget *parent )
{
setupUi( this );
connect( okButton, SIGNAL( clicked( bool ) ), this, SLOT( hide() ) );
connect( cancelButton, SIGNAL( clicked( bool ) ), this, SLOT( hide() ) );
}
ActionEditor::~ActionEditor()
{
}
}

View file

@ -0,0 +1,34 @@
// Object Viewer Qt GUI Editor plugin <http://dev.ryzom.com/projects/ryzom/>
// Copyright (C) 2010 Winch Gate Property Limited
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero 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 Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
#ifndef ACTION_EDITOR_H
#define ACTION_EDITOR_H
#include "ui_action_editor.h"
namespace GUIEditor
{
class ActionEditor : public QWidget, public Ui::ActionEditor
{
Q_OBJECT
public:
ActionEditor( QWidget *parent = NULL );
~ActionEditor();
};
}
#endif

View file

@ -0,0 +1,88 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>ActionEditor</class>
<widget class="QWidget" name="ActionEditor">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>340</width>
<height>111</height>
</rect>
</property>
<property name="windowTitle">
<string>Action Editor</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<layout class="QGridLayout" name="gridLayout">
<item row="0" column="0">
<widget class="QLabel" name="label">
<property name="text">
<string>Handler</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QLineEdit" name="handlerEdit">
<property name="text">
<string>Handler</string>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="label_2">
<property name="text">
<string>Parameters</string>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QLineEdit" name="paramsEdit">
<property name="text">
<string>Parameters</string>
</property>
</widget>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<layout class="QHBoxLayout" name="horizontalLayout_3">
<item>
<widget class="QPushButton" name="okButton">
<property name="text">
<string>OK</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="cancelButton">
<property name="text">
<string>Cancel</string>
</property>
</widget>
</item>
</layout>
</item>
<item>
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>38</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
</layout>
</widget>
<resources/>
<connections/>
</ui>

View file

@ -26,9 +26,13 @@
#include <QtCore/QSettings> #include <QtCore/QSettings>
#include <QtGui/QFileDialog> #include <QtGui/QFileDialog>
#include <QDockWidget>
#include "widget_properties.h" #include "widget_properties.h"
#include "widget_properties_parser.h" #include "widget_properties_parser.h"
#include "widget_hierarchy.h"
#include "link_editor.h"
#include "proc_editor.h"
namespace GUIEditor namespace GUIEditor
{ {
@ -41,6 +45,8 @@ namespace GUIEditor
m_ui.setupUi(this); m_ui.setupUi(this);
m_undoStack = new QUndoStack(this); m_undoStack = new QUndoStack(this);
widgetProps = new CWidgetProperties; widgetProps = new CWidgetProperties;
linkEditor = new LinkEditor;
procEditor = new ProcEditor;
createMenus(); createMenus();
readSettings(); readSettings();
@ -49,13 +55,26 @@ namespace GUIEditor
parser.setWidgetPropMap( &widgetInfo ); parser.setWidgetPropMap( &widgetInfo );
parser.parseGUIWidgets(); parser.parseGUIWidgets();
widgetProps->setupWidgetInfo( &widgetInfo ); widgetProps->setupWidgetInfo( &widgetInfo );
QDockWidget *dock = new QDockWidget( "Widget Hierarchy", this );
dock->setAllowedAreas( Qt::LeftDockWidgetArea );
WidgetHierarchy *ha = new WidgetHierarchy;
dock->setWidget( ha );
addDockWidget( Qt::LeftDockWidgetArea, dock );
} }
GUIEditorWindow::~GUIEditorWindow() GUIEditorWindow::~GUIEditorWindow()
{ {
writeSettings(); writeSettings();
delete widgetProps; delete widgetProps;
widgetProps = NULL; widgetProps = NULL;
delete linkEditor;
linkEditor = NULL;
delete procEditor;
procEditor = NULL;
} }
QUndoStack *GUIEditorWindow::undoStack() const QUndoStack *GUIEditorWindow::undoStack() const
@ -88,6 +107,14 @@ namespace GUIEditor
QAction *a = new QAction( "Widget Properties", this ); QAction *a = new QAction( "Widget Properties", this );
connect( a, SIGNAL( triggered( bool ) ), widgetProps, SLOT( show() ) ); connect( a, SIGNAL( triggered( bool ) ), widgetProps, SLOT( show() ) );
menu->addAction( a ); menu->addAction( a );
a = new QAction( "Link Editor", this );
connect( a, SIGNAL( triggered( bool ) ), linkEditor, SLOT( show() ) );
menu->addAction( a );
a = new QAction( "Proc Editor", this );
connect( a, SIGNAL( triggered( bool ) ), procEditor, SLOT( show() ) );
menu->addAction( a );
} }
} }

View file

@ -27,6 +27,8 @@ namespace GUIEditor
{ {
class CWidgetProperties; class CWidgetProperties;
class LinkEditor;
class ProcEditor;
class GUIEditorWindow: public QMainWindow class GUIEditorWindow: public QMainWindow
{ {
@ -62,6 +64,8 @@ private:
Ui::GUIEditorWindow m_ui; Ui::GUIEditorWindow m_ui;
CWidgetProperties *widgetProps; CWidgetProperties *widgetProps;
LinkEditor *linkEditor;
ProcEditor *procEditor;
}; };
} }

View file

@ -14,11 +14,7 @@
<string>MainWindow</string> <string>MainWindow</string>
</property> </property>
<widget class="QWidget" name="centralwidget"> <widget class="QWidget" name="centralwidget">
<layout class="QGridLayout" name="gridLayout"> <layout class="QGridLayout" name="gridLayout"/>
<item row="0" column="0">
<widget class="QGraphicsView" name="graphicsView"/>
</item>
</layout>
</widget> </widget>
<widget class="QToolBar" name="toolBar"> <widget class="QToolBar" name="toolBar">
<property name="windowTitle"> <property name="windowTitle">
@ -32,5 +28,6 @@
</attribute> </attribute>
</widget> </widget>
</widget> </widget>
<resources/>
<connections/> <connections/>
</ui> </ui>

View file

@ -0,0 +1,33 @@
// Object Viewer Qt GUI Editor plugin <http://dev.ryzom.com/projects/ryzom/>
// Copyright (C) 2010 Winch Gate Property Limited
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero 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 Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "link_editor.h"
namespace GUIEditor
{
LinkEditor::LinkEditor( QWidget *parent ) :
QWidget( parent )
{
setupUi( this );
connect( okButton, SIGNAL( clicked( bool ) ), this, SLOT( hide() ) );
connect( cancelButton, SIGNAL( clicked( bool ) ), this, SLOT( hide() ) );
}
LinkEditor::~LinkEditor()
{
}
}

View file

@ -0,0 +1,35 @@
// Object Viewer Qt GUI Editor plugin <http://dev.ryzom.com/projects/ryzom/>
// Copyright (C) 2010 Winch Gate Property Limited
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero 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 Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
#ifndef LINK_EDITOR_H
#define LINK_EDITOR_H
#include "ui_link_editor.h"
namespace GUIEditor
{
class LinkEditor : public QWidget, public Ui::LinkEditor
{
Q_OBJECT
public:
LinkEditor( QWidget *parent = NULL );
~LinkEditor();
};
}
#endif

View file

@ -0,0 +1,101 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>LinkEditor</class>
<widget class="QWidget" name="LinkEditor">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>545</width>
<height>340</height>
</rect>
</property>
<property name="windowTitle">
<string>Link Editor</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QLabel" name="label">
<property name="text">
<string>Expression</string>
</property>
</widget>
</item>
<item>
<widget class="QPlainTextEdit" name="expressionEdit">
<property name="plainText">
<string>expression</string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="label_2">
<property name="text">
<string>When the condition is met</string>
</property>
</widget>
</item>
<item>
<widget class="QRadioButton" name="groupCB">
<property name="text">
<string>Activate group</string>
</property>
</widget>
</item>
<item>
<widget class="QRadioButton" name="ahCB">
<property name="text">
<string>Run Action Handler</string>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="ahEdit">
<property name="text">
<string>Group or action handler</string>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="ahParamEdit">
<property name="text">
<string>Action Handler parameters</string>
</property>
</widget>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>348</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QPushButton" name="okButton">
<property name="text">
<string>OK</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="cancelButton">
<property name="text">
<string>Cancel</string>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</widget>
<resources/>
<connections/>
</ui>

View file

@ -0,0 +1,39 @@
// Object Viewer Qt GUI Editor plugin <http://dev.ryzom.com/projects/ryzom/>
// Copyright (C) 2010 Winch Gate Property Limited
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero 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 Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "proc_editor.h"
#include "action_editor.h"
namespace GUIEditor
{
ProcEditor::ProcEditor( QWidget *parent )
{
setupUi( this );
actionEditor = new ActionEditor;
connect( okButton, SIGNAL( clicked( bool ) ), this, SLOT( hide() ) );
connect( cancelButton, SIGNAL( clicked( bool ) ), this, SLOT( hide() ) );
connect( editButton, SIGNAL( clicked( bool ) ), actionEditor, SLOT( show() ) );
}
ProcEditor::~ProcEditor()
{
delete actionEditor;
actionEditor = NULL;
}
}

View file

@ -0,0 +1,40 @@
// Object Viewer Qt GUI Editor plugin <http://dev.ryzom.com/projects/ryzom/>
// Copyright (C) 2010 Winch Gate Property Limited
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero 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 Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
#ifndef PROC_EDITOR_H
#define PROC_EDITOR_H
#include "ui_proc_editor.h"
namespace GUIEditor
{
class ActionEditor;
class ProcEditor : public QWidget, public Ui::ProcEditor
{
Q_OBJECT
public:
ProcEditor( QWidget *parent = NULL );
~ProcEditor();
private:
ActionEditor *actionEditor;
};
}
#endif

View file

@ -0,0 +1,115 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>ProcEditor</class>
<widget class="QWidget" name="ProcEditor">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>424</width>
<height>327</height>
</rect>
</property>
<property name="windowTitle">
<string>Proc Editor</string>
</property>
<layout class="QGridLayout" name="gridLayout">
<item row="0" column="0" rowspan="6" colspan="3">
<widget class="QListWidget" name="actionList">
<item>
<property name="text">
<string>action1</string>
</property>
</item>
<item>
<property name="text">
<string>action2</string>
</property>
</item>
<item>
<property name="text">
<string>action3</string>
</property>
</item>
</widget>
</item>
<item row="0" column="3">
<widget class="QPushButton" name="upButton">
<property name="text">
<string>Move Up</string>
</property>
</widget>
</item>
<item row="1" column="3">
<widget class="QPushButton" name="downButton">
<property name="text">
<string>Move Down</string>
</property>
</widget>
</item>
<item row="2" column="3">
<widget class="QPushButton" name="addButton">
<property name="text">
<string>Add</string>
</property>
</widget>
</item>
<item row="3" column="3">
<widget class="QPushButton" name="removeButton">
<property name="text">
<string>Remove</string>
</property>
</widget>
</item>
<item row="4" column="3">
<widget class="QPushButton" name="editButton">
<property name="text">
<string>Edit</string>
</property>
</widget>
</item>
<item row="5" column="3">
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>132</height>
</size>
</property>
</spacer>
</item>
<item row="6" column="0">
<widget class="QPushButton" name="okButton">
<property name="text">
<string>OK</string>
</property>
</widget>
</item>
<item row="6" column="1">
<widget class="QPushButton" name="cancelButton">
<property name="text">
<string>Cancel</string>
</property>
</widget>
</item>
<item row="6" column="2" colspan="2">
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>197</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
<resources/>
<connections/>
</ui>

View file

@ -0,0 +1,31 @@
// Object Viewer Qt GUI Editor plugin <http://dev.ryzom.com/projects/ryzom/>
// Copyright (C) 2010 Winch Gate Property Limited
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero 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 Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "widget_hierarchy.h"
namespace GUIEditor
{
WidgetHierarchy::WidgetHierarchy( QWidget *parent ) :
QWidget( parent )
{
setupUi( this );
}
WidgetHierarchy::~WidgetHierarchy()
{
}
}

View file

@ -0,0 +1,34 @@
// Object Viewer Qt GUI Editor plugin <http://dev.ryzom.com/projects/ryzom/>
// Copyright (C) 2010 Winch Gate Property Limited
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero 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 Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
#ifndef WIDGET_HA_H
#define WIDGET_HA_H
#include "ui_widget_hierarchy.h"
namespace GUIEditor
{
class WidgetHierarchy : public QWidget, public Ui::WidgetHierarchyTree
{
Q_OBJECT
public:
WidgetHierarchy( QWidget *parent = NULL );
~WidgetHierarchy();
};
}
#endif

View file

@ -0,0 +1,90 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>WidgetHierarchyTree</class>
<widget class="QWidget" name="WidgetHierarchyTree">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>497</width>
<height>434</height>
</rect>
</property>
<property name="windowTitle">
<string>Widget Hieararchy</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QTreeWidget" name="widgetHT">
<column>
<property name="text">
<string>Widgets</string>
</property>
</column>
<item>
<property name="text">
<string>root</string>
</property>
<item>
<property name="text">
<string>container1</string>
</property>
<item>
<property name="text">
<string>group1</string>
</property>
<item>
<property name="text">
<string>group3</string>
</property>
</item>
<item>
<property name="text">
<string>group4</string>
</property>
<item>
<property name="text">
<string>button1</string>
</property>
</item>
<item>
<property name="text">
<string>button2</string>
</property>
</item>
<item>
<property name="text">
<string>text1</string>
</property>
</item>
<item>
<property name="text">
<string>bitmap1</string>
</property>
</item>
</item>
</item>
<item>
<property name="text">
<string>group2</string>
</property>
</item>
</item>
<item>
<property name="text">
<string>container2</string>
</property>
</item>
<item>
<property name="text">
<string>container3</string>
</property>
</item>
</item>
</widget>
</item>
</layout>
</widget>
<resources/>
<connections/>
</ui>