Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
CGoGN
CGoGN
Commits
261883ed
Commit
261883ed
authored
Jan 28, 2013
by
Pierre Kraemer
Browse files
SCHNApps: linking entities scriptable from Python !
parent
b1faeed4
Changes
10
Hide whitespace changes
Inline
Side-by-side
SCHNApps/include/dialogs/cameraViewDialog.h
View file @
261883ed
...
...
@@ -24,11 +24,14 @@ public:
private:
Window
*
m_window
;
View
*
m_view
;
bool
b_refreshingUI
;
void
selectCurrentCamera
();
public
slots
:
void
selectedCameraChanged
();
void
selectCamera
(
View
*
view
,
Camera
*
camera
);
void
deselectCamera
(
View
*
view
,
Camera
*
camera
);
void
addCameraToList
(
Camera
*
c
);
void
removeCameraFromList
(
Camera
*
c
);
};
...
...
SCHNApps/include/dialogs/mapsViewDialog.h
View file @
261883ed
...
...
@@ -24,9 +24,12 @@ public:
private:
Window
*
m_window
;
View
*
m_view
;
bool
b_refreshingUI
;
public
slots
:
void
selectedMapsChanged
();
void
selectMap
(
View
*
view
,
MapHandlerGen
*
map
);
void
deselectMap
(
View
*
view
,
MapHandlerGen
*
map
);
void
addMapToList
(
MapHandlerGen
*
m
);
void
removeMapFromList
(
MapHandlerGen
*
m
);
};
...
...
SCHNApps/include/dialogs/pluginsViewDialog.h
View file @
261883ed
...
...
@@ -24,9 +24,12 @@ public:
private:
Window
*
m_window
;
View
*
m_view
;
bool
b_refreshingUI
;
public
slots
:
void
selectedPluginsChanged
();
void
selectPlugin
(
View
*
view
,
Plugin
*
plugin
);
void
deselectPlugin
(
View
*
view
,
Plugin
*
plugin
);
void
addPluginToList
(
Plugin
*
p
);
void
removePluginFromList
(
Plugin
*
p
);
};
...
...
SCHNApps/include/plugin.h
View file @
261883ed
...
...
@@ -20,6 +20,7 @@ public:
Plugin
();
virtual
~
Plugin
();
public
slots
:
const
QString
&
getName
()
{
return
m_name
;
}
void
setName
(
const
QString
&
name
)
{
m_name
=
name
;
}
...
...
@@ -34,6 +35,7 @@ public:
bool
getProvidesRendering
()
{
return
b_providesRendering
;
}
void
setProvidesRendering
(
bool
b
)
{
b_providesRendering
=
b
;
}
public:
virtual
bool
enable
()
=
0
;
virtual
void
disable
()
=
0
;
...
...
@@ -46,10 +48,6 @@ public:
virtual
void
mouseMove
(
View
*
view
,
int
buttons
,
int
x
,
int
y
)
=
0
;
virtual
void
wheelEvent
(
View
*
view
,
int
delta
,
int
x
,
int
y
)
=
0
;
// virtual void viewLinked(View* view) = 0;
// virtual void viewUnlinked(View* view) = 0;
// virtual void currentViewChanged(View* view) = 0;
/*********************************************************
* MANAGE LINKED VIEWS
*********************************************************/
...
...
SCHNApps/include/window.h
View file @
261883ed
...
...
@@ -231,12 +231,17 @@ public:
public
slots
:
void
linkViewAndCamera
(
View
*
v
,
Camera
*
c
);
void
linkViewAndCamera
(
const
QString
&
viewName
,
const
QString
&
cameraName
);
void
linkViewAndMap
(
View
*
v
,
MapHandlerGen
*
m
);
void
linkViewAndMap
(
const
QString
&
viewName
,
const
QString
&
mapName
);
void
unlinkViewAndMap
(
View
*
v
,
MapHandlerGen
*
m
);
void
unlinkViewAndMap
(
const
QString
&
viewName
,
const
QString
&
mapName
);
void
linkViewAndPlugin
(
View
*
v
,
Plugin
*
p
);
void
linkViewAndPlugin
(
const
QString
&
viewName
,
const
QString
&
pluginName
);
void
unlinkViewAndPlugin
(
View
*
v
,
Plugin
*
p
);
void
unlinkViewAndPlugin
(
const
QString
&
viewName
,
const
QString
&
pluginName
);
/*********************************************************
* MANAGE TEXTURES
...
...
SCHNApps/src/dialogs/cameraViewDialog.cpp
View file @
261883ed
...
...
@@ -16,7 +16,8 @@ namespace SCHNApps
CameraViewDialog
::
CameraViewDialog
(
Window
*
window
,
View
*
view
)
:
QDialog
(
view
),
m_window
(
window
),
m_view
(
view
)
m_view
(
view
),
b_refreshingUI
(
false
)
{
this
->
setupUi
(
this
);
this
->
setWindowTitle
(
m_view
->
getName
()
+
QString
(
" : camera"
));
...
...
@@ -26,6 +27,9 @@ CameraViewDialog::CameraViewDialog(Window* window, View* view) :
connect
(
m_window
,
SIGNAL
(
cameraAdded
(
Camera
*
)),
this
,
SLOT
(
addCameraToList
(
Camera
*
)));
connect
(
m_window
,
SIGNAL
(
cameraRemoved
(
Camera
*
)),
this
,
SLOT
(
removeCameraFromList
(
Camera
*
)));
connect
(
m_window
,
SIGNAL
(
viewAndCameraLinked
(
View
*
,
Camera
*
)),
this
,
SLOT
(
selectCamera
(
View
*
,
Camera
*
)));
connect
(
m_window
,
SIGNAL
(
viewAndCameraUnlinked
(
View
*
,
Camera
*
)),
this
,
SLOT
(
deselectCamera
(
View
*
,
Camera
*
)));
QList
<
Camera
*>
cameras
=
m_window
->
getCamerasList
();
foreach
(
Camera
*
c
,
cameras
)
cameraList
->
addItem
(
c
->
getName
());
...
...
@@ -50,14 +54,47 @@ void CameraViewDialog::selectCurrentCamera()
void
CameraViewDialog
::
selectedCameraChanged
()
{
QList
<
QListWidgetItem
*>
currentItems
=
cameraList
->
selectedItems
();
if
(
currentItems
.
empty
())
selectCurrentCamera
();
else
if
(
b_refreshingUI
)
{
QList
<
QListWidgetItem
*>
currentItems
=
cameraList
->
selectedItems
();
if
(
currentItems
.
empty
())
selectCurrentCamera
();
else
{
const
QString
&
cname
=
currentItems
[
0
]
->
text
();
Camera
*
c
=
m_window
->
getCamera
(
cname
);
m_window
->
linkViewAndCamera
(
m_view
,
c
);
}
}
}
void
CameraViewDialog
::
selectCamera
(
View
*
view
,
Camera
*
camera
)
{
if
(
view
==
m_view
)
{
const
QString
&
cname
=
currentItems
[
0
]
->
text
();
Camera
*
c
=
m_window
->
getCamera
(
cname
);
m_window
->
linkViewAndCamera
(
m_view
,
c
);
QList
<
QListWidgetItem
*>
items
=
cameraList
->
findItems
(
camera
->
getName
(),
Qt
::
MatchExactly
);
if
(
!
items
.
empty
())
{
b_refreshingUI
=
true
;
items
[
0
]
->
setSelected
(
true
);
m_view
->
updateGL
();
b_refreshingUI
=
false
;
}
}
}
void
CameraViewDialog
::
deselectCamera
(
View
*
view
,
Camera
*
camera
)
{
if
(
view
==
m_view
)
{
QList
<
QListWidgetItem
*>
items
=
cameraList
->
findItems
(
camera
->
getName
(),
Qt
::
MatchExactly
);
if
(
!
items
.
empty
())
{
b_refreshingUI
=
true
;
items
[
0
]
->
setSelected
(
false
);
m_view
->
updateGL
();
b_refreshingUI
=
false
;
}
}
}
...
...
SCHNApps/src/dialogs/mapsViewDialog.cpp
View file @
261883ed
...
...
@@ -17,7 +17,8 @@ namespace SCHNApps
MapsViewDialog
::
MapsViewDialog
(
Window
*
window
,
View
*
view
)
:
QDialog
(
view
),
m_window
(
window
),
m_view
(
view
)
m_view
(
view
),
b_refreshingUI
(
false
)
{
this
->
setupUi
(
this
);
this
->
setWindowTitle
(
m_view
->
getName
()
+
QString
(
" : maps"
));
...
...
@@ -27,6 +28,9 @@ MapsViewDialog::MapsViewDialog(Window* window, View* view) :
connect
(
m_window
,
SIGNAL
(
mapAdded
(
MapHandlerGen
*
)),
this
,
SLOT
(
addMapToList
(
MapHandlerGen
*
)));
connect
(
m_window
,
SIGNAL
(
mapRemoved
(
MapHandlerGen
*
)),
this
,
SLOT
(
removeMapFromList
(
MapHandlerGen
*
)));
connect
(
m_window
,
SIGNAL
(
viewAndMapLinked
(
View
*
,
MapHandlerGen
*
)),
this
,
SLOT
(
selectMap
(
View
*
,
MapHandlerGen
*
)));
connect
(
m_window
,
SIGNAL
(
viewAndMapUnlinked
(
View
*
,
MapHandlerGen
*
)),
this
,
SLOT
(
deselectMap
(
View
*
,
MapHandlerGen
*
)));
QList
<
MapHandlerGen
*>
maps
=
m_window
->
getMapsList
();
foreach
(
MapHandlerGen
*
m
,
maps
)
mapList
->
addItem
(
m
->
getName
());
...
...
@@ -37,18 +41,51 @@ MapsViewDialog::~MapsViewDialog()
void
MapsViewDialog
::
selectedMapsChanged
()
{
for
(
int
i
=
0
;
i
<
mapList
->
count
();
++
i
)
if
(
!
b_refreshingUI
)
{
QString
mapName
=
mapList
->
item
(
i
)
->
text
();
MapHandlerGen
*
map
=
m_window
->
getMap
(
mapName
);
for
(
int
i
=
0
;
i
<
mapList
->
count
();
++
i
)
{
QString
mapName
=
mapList
->
item
(
i
)
->
text
();
MapHandlerGen
*
map
=
m_window
->
getMap
(
mapName
);
if
(
mapList
->
item
(
i
)
->
isSelected
()
&&
!
m_view
->
isLinkedToMap
(
map
))
m_window
->
linkViewAndMap
(
m_view
,
map
);
if
(
mapList
->
item
(
i
)
->
isSelected
()
&&
!
m_view
->
isLinkedToMap
(
map
))
m_window
->
linkViewAndMap
(
m_view
,
map
);
else
if
(
!
mapList
->
item
(
i
)
->
isSelected
()
&&
m_view
->
isLinkedToMap
(
map
))
m_window
->
unlinkViewAndMap
(
m_view
,
map
);
}
m_view
->
updateGL
();
}
}
void
MapsViewDialog
::
selectMap
(
View
*
view
,
MapHandlerGen
*
plugin
)
{
if
(
view
==
m_view
)
{
QList
<
QListWidgetItem
*>
items
=
mapList
->
findItems
(
plugin
->
getName
(),
Qt
::
MatchExactly
);
if
(
!
items
.
empty
())
{
b_refreshingUI
=
true
;
items
[
0
]
->
setSelected
(
true
);
m_view
->
updateGL
();
b_refreshingUI
=
false
;
}
}
}
else
if
(
!
mapList
->
item
(
i
)
->
isSelected
()
&&
m_view
->
isLinkedToMap
(
map
))
m_window
->
unlinkViewAndMap
(
m_view
,
map
);
void
MapsViewDialog
::
deselectMap
(
View
*
view
,
MapHandlerGen
*
plugin
)
{
if
(
view
==
m_view
)
{
QList
<
QListWidgetItem
*>
items
=
mapList
->
findItems
(
plugin
->
getName
(),
Qt
::
MatchExactly
);
if
(
!
items
.
empty
())
{
b_refreshingUI
=
true
;
items
[
0
]
->
setSelected
(
false
);
m_view
->
updateGL
();
b_refreshingUI
=
false
;
}
}
m_view
->
updateGL
();
}
void
MapsViewDialog
::
addMapToList
(
MapHandlerGen
*
m
)
...
...
SCHNApps/src/dialogs/pluginsViewDialog.cpp
View file @
261883ed
...
...
@@ -16,7 +16,8 @@ namespace SCHNApps
PluginsViewDialog
::
PluginsViewDialog
(
Window
*
window
,
View
*
view
)
:
QDialog
(
view
),
m_window
(
window
),
m_view
(
view
)
m_view
(
view
),
b_refreshingUI
(
false
)
{
this
->
setupUi
(
this
);
this
->
setWindowTitle
(
m_view
->
getName
()
+
QString
(
" : plugins"
));
...
...
@@ -26,6 +27,9 @@ PluginsViewDialog::PluginsViewDialog(Window* window, View* view) :
connect
(
m_window
,
SIGNAL
(
pluginLoaded
(
Plugin
*
)),
this
,
SLOT
(
addPluginToList
(
Plugin
*
)));
connect
(
m_window
,
SIGNAL
(
pluginUnloaded
(
Plugin
*
)),
this
,
SLOT
(
removePluginFromList
(
Plugin
*
)));
connect
(
m_window
,
SIGNAL
(
viewAndPluginLinked
(
View
*
,
Plugin
*
)),
this
,
SLOT
(
selectPlugin
(
View
*
,
Plugin
*
)));
connect
(
m_window
,
SIGNAL
(
viewAndPluginUnlinked
(
View
*
,
Plugin
*
)),
this
,
SLOT
(
deselectPlugin
(
View
*
,
Plugin
*
)));
QList
<
Plugin
*>
plugins
=
m_window
->
getPluginsList
();
foreach
(
Plugin
*
p
,
plugins
)
{
...
...
@@ -39,17 +43,50 @@ PluginsViewDialog::~PluginsViewDialog()
void
PluginsViewDialog
::
selectedPluginsChanged
()
{
for
(
int
i
=
0
;
i
<
pluginList
->
count
();
++
i
)
if
(
!
b_refreshingUI
)
{
for
(
int
i
=
0
;
i
<
pluginList
->
count
();
++
i
)
{
QString
pluginName
=
pluginList
->
item
(
i
)
->
text
();
Plugin
*
plugin
=
m_window
->
getPlugin
(
pluginName
);
if
(
pluginList
->
item
(
i
)
->
isSelected
()
&&
!
m_view
->
isLinkedToPlugin
(
plugin
))
m_window
->
linkViewAndPlugin
(
m_view
,
plugin
);
else
if
(
!
pluginList
->
item
(
i
)
->
isSelected
()
&&
m_view
->
isLinkedToPlugin
(
plugin
))
m_window
->
unlinkViewAndPlugin
(
m_view
,
plugin
);
}
m_view
->
updateGL
();
}
}
void
PluginsViewDialog
::
selectPlugin
(
View
*
view
,
Plugin
*
plugin
)
{
if
(
view
==
m_view
)
{
QString
pluginName
=
pluginList
->
item
(
i
)
->
text
();
Plugin
*
plugin
=
m_window
->
getPlugin
(
pluginName
);
if
(
pluginList
->
item
(
i
)
->
isSelected
()
&&
!
m_view
->
isLinkedToPlugin
(
plugin
))
m_window
->
linkViewAndPlugin
(
m_view
,
plugin
);
QList
<
QListWidgetItem
*>
items
=
pluginList
->
findItems
(
plugin
->
getName
(),
Qt
::
MatchExactly
);
if
(
!
items
.
empty
())
{
b_refreshingUI
=
true
;
items
[
0
]
->
setSelected
(
true
);
m_view
->
updateGL
();
b_refreshingUI
=
false
;
}
}
}
else
if
(
!
pluginList
->
item
(
i
)
->
isSelected
()
&&
m_view
->
isLinkedToPlugin
(
plugin
))
m_window
->
unlinkViewAndPlugin
(
m_view
,
plugin
);
void
PluginsViewDialog
::
deselectPlugin
(
View
*
view
,
Plugin
*
plugin
)
{
if
(
view
==
m_view
)
{
QList
<
QListWidgetItem
*>
items
=
pluginList
->
findItems
(
plugin
->
getName
(),
Qt
::
MatchExactly
);
if
(
!
items
.
empty
())
{
b_refreshingUI
=
true
;
items
[
0
]
->
setSelected
(
false
);
m_view
->
updateGL
();
b_refreshingUI
=
false
;
}
}
m_view
->
updateGL
();
}
void
PluginsViewDialog
::
addPluginToList
(
Plugin
*
p
)
...
...
SCHNApps/src/main.cpp
View file @
261883ed
...
...
@@ -15,10 +15,10 @@ int main(int argc, char* argv[])
PythonQt
::
init
();
QStringList
classNames
;
classNames
.
append
(
"Plugin"
);
classNames
.
append
(
"View"
);
classNames
.
append
(
"MapHandlerGen"
);
classNames
.
append
(
"Camera"
);
classNames
.
append
(
"Plugin"
);
classNames
.
append
(
"MapHandlerGen"
);
PythonQt
::
self
()
->
registerQObjectClassNames
(
classNames
);
// get a smart pointer to the __main__ module of the Python interpreter
...
...
SCHNApps/src/window.cpp
View file @
261883ed
...
...
@@ -476,8 +476,6 @@ Plugin* Window::loadPlugin(const QString& pluginName)
statusbar
->
showMessage
(
pluginName
+
QString
(
" successfully loaded."
),
2000
);
emit
(
pluginLoaded
(
plugin
));
m_pythonContext
.
addObject
(
pluginName
,
plugin
);
// method success
return
plugin
;
}
...
...
@@ -583,20 +581,24 @@ MapHandlerGen* Window::getMap(const QString& name) const
* MANAGE LINKS
*********************************************************/
void
Window
::
linkViewAnd
Plugin
(
View
*
v
,
Plugin
*
p
)
void
Window
::
linkViewAnd
Camera
(
View
*
v
,
Camera
*
c
)
{
v
->
linkPlugin
(
p
);
p
->
linkView
(
v
);
Camera
*
current
=
v
->
getCurrentCamera
();
current
->
unlinkView
(
v
);
emit
(
viewAndCameraUnlinked
(
v
,
current
));
emit
(
viewAndPluginLinked
(
v
,
p
));
v
->
setCurrentCamera
(
c
);
c
->
linkView
(
v
);
emit
(
viewAndCameraLinked
(
v
,
c
));
}
void
Window
::
un
linkViewAnd
Plugin
(
View
*
v
,
Plugin
*
p
)
void
Window
::
linkViewAnd
Camera
(
const
QString
&
viewName
,
const
QString
&
cameraName
)
{
v
->
unlinkPlugin
(
p
);
p
->
unlinkView
(
v
);
emit
(
viewAndPluginUnlinked
(
v
,
p
)
);
View
*
view
=
getView
(
viewName
);
Camera
*
camera
=
getCamera
(
cameraName
);
if
(
view
&&
camera
)
linkViewAndCamera
(
view
,
camera
);
}
void
Window
::
linkViewAndMap
(
View
*
v
,
MapHandlerGen
*
m
)
...
...
@@ -607,6 +609,14 @@ void Window::linkViewAndMap(View* v, MapHandlerGen* m)
emit
(
viewAndMapLinked
(
v
,
m
));
}
void
Window
::
linkViewAndMap
(
const
QString
&
viewName
,
const
QString
&
mapName
)
{
View
*
view
=
getView
(
viewName
);
MapHandlerGen
*
map
=
getMap
(
mapName
);
if
(
view
&&
map
)
linkViewAndMap
(
view
,
map
);
}
void
Window
::
unlinkViewAndMap
(
View
*
v
,
MapHandlerGen
*
m
)
{
v
->
unlinkMap
(
m
);
...
...
@@ -615,15 +625,44 @@ void Window::unlinkViewAndMap(View* v, MapHandlerGen* m)
emit
(
viewAndMapUnlinked
(
v
,
m
));
}
void
Window
::
linkViewAnd
Camera
(
View
*
v
,
Camera
*
c
)
void
Window
::
un
linkViewAnd
Map
(
const
QString
&
viewName
,
const
QString
&
mapName
)
{
Camera
*
current
=
v
->
getCurrentCamera
(
);
current
->
unlinkView
(
v
);
emit
(
view
AndCameraUnlinked
(
v
,
current
));
v
->
setCurrentCamera
(
c
);
c
->
linkView
(
v
);
View
*
view
=
getView
(
viewName
);
MapHandlerGen
*
map
=
getMap
(
mapName
);
if
(
view
&&
map
)
unlinkViewAndMap
(
view
,
map
);
}
emit
(
viewAndCameraLinked
(
v
,
c
));
void
Window
::
linkViewAndPlugin
(
View
*
v
,
Plugin
*
p
)
{
v
->
linkPlugin
(
p
);
p
->
linkView
(
v
);
emit
(
viewAndPluginLinked
(
v
,
p
));
}
void
Window
::
linkViewAndPlugin
(
const
QString
&
viewName
,
const
QString
&
pluginName
)
{
View
*
view
=
getView
(
viewName
);
Plugin
*
plugin
=
getPlugin
(
pluginName
);
if
(
view
&&
plugin
)
linkViewAndPlugin
(
view
,
plugin
);
}
void
Window
::
unlinkViewAndPlugin
(
View
*
v
,
Plugin
*
p
)
{
v
->
unlinkPlugin
(
p
);
p
->
unlinkView
(
v
);
emit
(
viewAndPluginUnlinked
(
v
,
p
));
}
void
Window
::
unlinkViewAndPlugin
(
const
QString
&
viewName
,
const
QString
&
pluginName
)
{
View
*
view
=
getView
(
viewName
);
Plugin
*
plugin
=
getPlugin
(
pluginName
);
if
(
view
&&
plugin
)
unlinkViewAndPlugin
(
view
,
plugin
);
}
/*********************************************************
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment