Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
CAMP
campvis-public
Commits
223846ab
Commit
223846ab
authored
Jan 09, 2014
by
Hossain Mahmud
Browse files
initial draft codes for loading files into inspector widget
parent
882f4d50
Changes
5
Hide whitespace changes
Inline
Side-by-side
application/CMakeLists.txt
View file @
223846ab
...
...
@@ -33,6 +33,7 @@ SET(CampvisApplicationToBeMocced
gui/datacontainerinspectorwidget.h
gui/datacontainertreewidget.h
gui/pipelinetreewidget.h
gui/propertyeditorwidget.h
gui/qtcolortools.h
gui/qtdatahandle.h
gui/logviewerwidget.h
...
...
application/gui/datacontainerinspectorwidget.cpp
View file @
223846ab
...
...
@@ -53,6 +53,8 @@
#include
"application/gui/datacontainertreewidget.h"
#include
"application/gui/qtdatahandle.h"
#include
"application//gui/propertyeditorwidget.h"
#include
"modules/io/processors/genericimagereader.h"
#include
<QFileDialog>
...
...
@@ -163,6 +165,11 @@ namespace campvis {
_btnSaveToFile
=
new
QPushButton
(
tr
(
"Save to File"
),
_infoWidget
);
_infoWidgetLayout
->
addWidget
(
_btnSaveToFile
);
// Added by Hossain Mahmud <mahmud@in.tum.de>
// Date: January 02, 2014
_btnLoadFile
=
new
QPushButton
(
tr
(
"Load File"
),
_infoWidget
);
_infoWidgetLayout
->
addWidget
(
_btnLoadFile
);
_canvas
=
new
DataContainerInspectorCanvas
(
_infoWidget
);
_canvas
->
setMinimumSize
(
QSize
(
100
,
100
));
_infoWidgetLayout
->
addWidget
(
_canvas
,
1
);
...
...
@@ -186,6 +193,9 @@ namespace campvis {
connect
(
_btnSaveToFile
,
SIGNAL
(
clicked
()),
this
,
SLOT
(
onBtnSaveToFileClicked
()));
connect
(
_btnLoadFile
,
SIGNAL
(
clicked
()),
this
,
SLOT
(
onBtnLoadFileClicked
()));
}
void
DataContainerInspectorWidget
::
updateColor
(){
...
...
@@ -442,4 +452,37 @@ namespace campvis {
}
void
DataContainerInspectorWidget
::
onBtnLoadFileClicked
()
{
QString
dialogCaption
=
QString
::
fromStdString
(
"Select the file"
);
QString
directory
;
std
::
string
fileTobeRead
;
directory
=
tr
(
""
);
const
QString
fileFilter
=
tr
(
"All files (*)"
);
QString
filename
;
filename
=
QFileDialog
::
getOpenFileName
(
QWidget
::
parentWidget
(),
dialogCaption
,
directory
,
fileFilter
);
if
(
!
filename
.
isEmpty
())
{
fileTobeRead
=
filename
.
toStdString
();
//emit modified();
}
GenericImageReader
*
imgReader
=
new
GenericImageReader
();
imgReader
->
setURL
(
fileTobeRead
);
PropertyEditorWidget
*
propEditorWid
=
new
PropertyEditorWidget
();
propEditorWid
->
_propCollectionWidget
->
updatePropCollection
(
imgReader
,
_dataContainer
);
propEditorWid
->
setDataContainer
(
_dataContainer
);
propEditorWid
->
setVisible
(
true
);
imgReader
->
process
(
*
_dataContainer
);
this
->
setDataContainer
(
_dataContainer
);
//this->show();
//this->activateWindow();
//this->setDataContainer(_dataContainer);
}
}
\ No newline at end of file
application/gui/datacontainerinspectorwidget.h
View file @
223846ab
...
...
@@ -111,7 +111,7 @@ namespace campvis {
*/
void
updateColor
();
/**
/**
* Updates depth of the info widget
*/
void
updateDepth
();
...
...
@@ -133,6 +133,12 @@ namespace campvis {
*/
void
onBtnSaveToFileClicked
();
/**
* Slot being called when the user clicks on the "Load File" button.
*/
void
onBtnLoadFileClicked
();
protected:
/**
* Setup the GUI stuff
...
...
@@ -147,7 +153,7 @@ namespace campvis {
*/
protected:
protected:
static
void
saveToFile
(
DataHandle
handle
,
std
::
string
filename
);
/**
...
...
@@ -180,12 +186,15 @@ namespace campvis {
QLabel
*
_lblTimestamp
;
QLabel
*
_lblSize
;
QLabel
*
_lblBounds
;
QWidget
*
_colorWidget
;
///< The widget use to show the color value and the color in a single window
QWidget
*
_colorWidget
;
///< The widget use to show the color value and the color in a single window
QHBoxLayout
*
_colorWidgetLayout
;
///< Layout for the following widget
QLabel
*
_lblColorVal
;
///< Color Label Value in text
QWidget
*
_colorValWidget
;
///< Widget that shows the color value in color
QPalette
*
_ColorValWidgetPalette
;
///< Palette which will be used to colorize the color widget
QPushButton
*
_btnSaveToFile
;
// Added by Hossain Mahmud <mahmud@in.tum.de>
// Date: January 02, 2014
QPushButton
*
_btnLoadFile
;
static
const
std
::
string
loggerCat_
;
};
...
...
application/gui/propertyeditorwidget.cpp
0 → 100644
View file @
223846ab
// ================================================================================================
//
// This file is part of the CAMPVis Software Framework.
//
// If not explicitly stated otherwise: Copyright (C) 2012-2013, all rights reserved,
// Christian Schulte zu Berge <christian.szb@in.tum.de>
// Chair for Computer Aided Medical Procedures
// Technische Universität München
// Boltzmannstr. 3, 85748 Garching b. München, Germany
//
// For a full list of authors and contributors, please refer to the file "AUTHORS.txt".
//
// Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file
// except in compliance with the License. You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software distributed under the
// License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
// either express or implied. See the License for the specific language governing permissions
// and limitations under the License.
//
// ================================================================================================
#include
"propertyeditorwidget.h"
#include
"tgt/assert.h"
#include
"tgt/logmanager.h"
#include
"tgt/filesystem.h"
#include
"tgt/shadermanager.h"
#include
"tgt/textureunit.h"
#include
"tgt/qt/qtcontextmanager.h"
#include
"tgt/qt/qtthreadedcanvas.h"
#ifdef CAMPVIS_HAS_MODULE_DEVIL
#include
<IL/il.h>
#include
<IL/ilu.h>
#endif
#include
"core/tools/job.h"
#include
"core/tools/opengljobprocessor.h"
#include
"core/datastructures/abstractdata.h"
#include
"core/datastructures/datacontainer.h"
#include
"core/datastructures/facegeometry.h"
#include
"core/datastructures/geometrydata.h"
#include
"core/datastructures/imagerepresentationgl.h"
#include
"core/datastructures/renderdata.h"
#ifdef CAMPVIS_HAS_MODULE_COLUMBIA
#include
"modules/columbia/datastructures/fiberdata.h"
#endif
#include
"application/gui/datacontainertreewidget.h"
#include
"application/gui/qtdatahandle.h"
#include
<QFileDialog>
namespace
campvis
{
const
std
::
string
PropertyEditorWidget
::
loggerCat_
=
"CAMPVis.application.PropertyEditorWidget"
;
PropertyEditorWidget
::
PropertyEditorWidget
(
QWidget
*
parent
)
:
QWidget
(
parent
)
,
_inited
(
false
)
,
_dataContainer
(
0
)
//, _dctWidget(0)
,
_canvas
(
0
)
//, _pcWidget(0)
,
_mainLayout
(
0
)
//, _infoWidget(0)
,
_pipelinePropertiesScrollArea
(
0
)
,
_propCollectionWidget
(
0
)
//, _infoWidgetLayout(0)
{
setupGUI
();
}
PropertyEditorWidget
::~
PropertyEditorWidget
()
{
if
(
_dataContainer
!=
0
)
{
_dataContainer
->
s_dataAdded
.
disconnect
(
this
);
}
}
void
PropertyEditorWidget
::
setDataContainer
(
DataContainer
*
dataContainer
)
{
if
(
_dataContainer
!=
0
)
{
//_dataContainer->s_dataAdded.disconnect(this);
}
_dataContainer
=
dataContainer
;
//_dctWidget->update(dataContainer);
//updateInfoWidget();
if
(
_dataContainer
!=
0
)
{
//_dataContainer->s_dataAdded.connect(this, &PropertyEditorWidget::onDataContainerDataAdded);
}
}
void
PropertyEditorWidget
::
onDataContainerDataAdded
(
const
std
::
string
&
key
,
const
DataHandle
&
dh
)
{
// copy QtDataHandle because signal will be handled by a different thread an indefinite amount of time later:
emit
dataContainerChanged
(
QString
::
fromStdString
(
key
),
QtDataHandle
(
dh
));
}
QSize
PropertyEditorWidget
::
sizeHint
()
const
{
return
QSize
(
200
,
300
);
}
void
PropertyEditorWidget
::
setupGUI
()
{
setWindowTitle
(
tr
(
"Select Property Value"
));
_mainLayout
=
new
QVBoxLayout
();
_mainLayout
->
setSpacing
(
4
);
setLayout
(
_mainLayout
);
_pipelinePropertiesScrollArea
=
new
QScrollArea
(
this
);
_pipelinePropertiesScrollArea
->
setWidgetResizable
(
true
);
_pipelinePropertiesScrollArea
->
setHorizontalScrollBarPolicy
(
Qt
::
ScrollBarAlwaysOff
);
_pipelinePropertiesScrollArea
->
setFrameStyle
(
QScrollArea
::
NoFrame
);
this
->
installEventFilter
(
this
);
_propCollectionWidget
=
new
PropertyCollectionWidget
(
_pipelinePropertiesScrollArea
);
_mainLayout
->
addWidget
(
_propCollectionWidget
);
//_mainLayout->addStretch();
_btnLoadFile
=
new
QPushButton
(
tr
(
"Load File"
),
this
);
_mainLayout
->
addWidget
(
_btnLoadFile
);
_btnCancel
=
new
QPushButton
(
tr
(
"Cancel"
),
this
);
_mainLayout
->
addWidget
(
_btnCancel
);
qRegisterMetaType
<
QtDataHandle
>
(
"QtDataHandle"
);
connect
(
_btnCancel
,
SIGNAL
(
clicked
()),
this
,
SLOT
(
onBtnCancelClicked
()));
connect
(
_btnLoadFile
,
SIGNAL
(
clicked
()),
this
,
SLOT
(
onBtnLoadFileClicked
()));
}
void
PropertyEditorWidget
::
updateColor
(){
const
tgt
::
Color
color
=
_canvas
->
getCapturedColor
();
}
void
PropertyEditorWidget
::
updateDepth
(){
float
depth
=
_canvas
->
getCapturedDepth
();
}
QString
PropertyEditorWidget
::
humanizeBytes
(
size_t
numBytes
)
const
{
QString
units
[
5
]
=
{
tr
(
" Bytes"
),
tr
(
" KB"
),
tr
(
" MB"
),
tr
(
" GB"
),
tr
(
" TB"
)
};
size_t
index
=
0
;
size_t
remainder
=
0
;
while
(
numBytes
>
1024
&&
index
<
4
)
{
remainder
=
numBytes
%
1024
;
numBytes
/=
1024
;
++
index
;
}
if
(
remainder
!=
0
)
return
QString
::
number
(
numBytes
)
+
"."
+
QString
::
number
(
remainder
)
+
units
[
index
];
else
return
QString
::
number
(
numBytes
)
+
units
[
index
];
}
void
PropertyEditorWidget
::
init
()
{
//if (_canvas != 0)
//_canvas->init(this);
_inited
=
true
;
}
void
PropertyEditorWidget
::
deinit
()
{
_inited
=
false
;
//if (_canvas != 0)
//_canvas->deinit();
//_pcWidget->updatePropCollection(0, 0);
if
(
_dataContainer
!=
0
)
{
//_dataContainer->s_dataAdded.disconnect(this);
}
//_dataContainer = 0;
//_dctWidget->update(0);
}
void
PropertyEditorWidget
::
onBtnCancelClicked
()
{
}
void
PropertyEditorWidget
::
onBtnLoadFileClicked
()
{
QString
dialogCaption
=
QString
::
fromStdString
(
"Select the file"
);
QString
directory
;
std
::
string
fileTobeRead
;
// use directory of current property value if any, default directory otherwise
directory
=
tr
(
""
);
const
QString
fileFilter
=
tr
(
"All files (*)"
);
QString
filename
;
filename
=
QFileDialog
::
getOpenFileName
(
QWidget
::
parentWidget
(),
dialogCaption
,
directory
,
fileFilter
);
if
(
!
filename
.
isEmpty
())
{
fileTobeRead
=
filename
.
toStdString
();
//emit modified();
}
}
}
\ No newline at end of file
application/gui/propertyeditorwidget.h
0 → 100644
View file @
223846ab
// ================================================================================================
//
// This file is part of the CAMPVis Software Framework.
//
// If not explicitly stated otherwise: Copyright (C) 2012-2013, all rights reserved,
// Christian Schulte zu Berge <christian.szb@in.tum.de>
// Chair for Computer Aided Medical Procedures
// Technische Universität München
// Boltzmannstr. 3, 85748 Garching b. München, Germany
//
// For a full list of authors and contributors, please refer to the file "AUTHORS.txt".
//
// Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file
// except in compliance with the License. You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software distributed under the
// License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
// either express or implied. See the License for the specific language governing permissions
// and limitations under the License.
//
// ================================================================================================
#ifndef PROPERTYEDITORWIDGET_H_
#define PROPERTYEDITORWIDGET_H_
#include
"sigslot/sigslot.h"
#include
"tgt/painter.h"
#include
"tgt/qt/qtcontextmanager.h"
#include
"tgt/qt/qtthreadedcanvas.h"
#include
"tbb/mutex.h"
#include
"application/gui/qtdatahandle.h"
#include
"application/gui/datacontainerinspectorcanvas.h"
#include
"application/gui/properties/propertycollectionwidget.h"
#include
"core/tools/opengljobprocessor.h"
#include
<QLabel>
#include
<QWidget>
#include
<QScrollArea>
#include
<QVBoxLayout>
#include
<QHBoxLayout>
#include
<QString>
#include
<QPushButton>
#include
<QMetaObject>
class
QModelIndex
;
class
QItemSelection
;
namespace
tgt
{
class
Texture
;
class
TextureUnit
;
class
Shader
;
}
namespace
campvis
{
class
AbstractPipeline
;
//class DataContainer;
//class DataContainerTreeWidget;
//class FaceGeometry;
class
PropertyEditorWidget
:
public
QWidget
,
public
sigslot
::
has_slots
<>
{
Q_OBJECT
;
public:
/**
* Creates a new DataContainerInspectorWidget.
* \param parent Parent Qt widget, may be 0 (default)
*/
explicit
PropertyEditorWidget
(
QWidget
*
parent
=
nullptr
);
/**
* Destructor.
*/
~
PropertyEditorWidget
();
/**
* Set the DataContainer this widget is inspecting.
* \param dataContainer The DataContainer this widget shall inspect, may be 0.
*/
void
setDataContainer
(
DataContainer
*
dataContainer
);
/**
* Slot called when _dataContainer has changed and emitted the s_dataAdded signal.
*/
void
onDataContainerDataAdded
(
const
std
::
string
&
,
const
DataHandle
&
);
//void mousePressEvent(QMouseEvent*) {
// updateInfoWidget();
//}
/**
* Size hint for the default window size
* \return QSize(640, 480)
*/
QSize
sizeHint
()
const
;
/**
* Initializes the OpenGL stuff (e.g. shaders).
* Must be called with a valid and locked OpenGL context.
*/
virtual
void
init
();
/**
* Deinitializes the OpenGL stuff (e.g. shaders).
* Must be called with a valid and locked OpenGL context.
*/
void
deinit
();
/**
* Updates color of the info widget
*/
void
updateColor
();
/**
* Updates depth of the info widget
*/
void
updateDepth
();
signals:
void
dataContainerChanged
(
const
QString
&
,
QtDataHandle
);
private
slots
:
/**
* Slot being called when the user clicks on the "Cancel" button.
*/
void
onBtnCancelClicked
();
/**
* Slot being called when the user clicks on the "Load File" button.
*/
void
onBtnLoadFileClicked
();
protected:
/**
* Setup the GUI stuff
*/
void
setupGUI
();
protected:
/**
* Returns a string with \a numBytes humanized (i.e. "numBytes/1024^n [KMG]Byte")
* \param numBytes Number of bytes to be converted.
* \return "numBytes/1024^n [KMG]Bytes
*/
QString
humanizeBytes
(
size_t
numBytes
)
const
;
bool
_inited
;
DataContainer
*
_dataContainer
;
///< The DataContainer this widget is inspecting
//DataContainerTreeWidget* _dctWidget; ///< The TreeWidget showing the DataHandles in _dataContainer
DataContainerInspectorCanvas
*
_canvas
;
///< The OpenGL canvas for rendering the DataContainer's contents
//PropertyCollectionWidget* _pcWidget;
QVBoxLayout
*
_mainLayout
;
///< Layout for this widget
//QWidget* _infoWidget; ///< Widget showing the information about the selected QtDataHandle
QVBoxLayout
*
rightLayout
;
///< Layout for the _infoWidget
//QWidget* _pipelinePropertiesWidget; ///< Widget showing the selected pipeline's properties
QScrollArea
*
_pipelinePropertiesScrollArea
;
///< Scroll area for _pipelinePropertiesWidget
public:
PropertyCollectionWidget
*
_propCollectionWidget
;
///< Widget for browsing the PropertyCollection of the selected pipeline/processor
protected:
QPushButton
*
_btnCancel
;
QPushButton
*
_btnLoadFile
;
static
const
std
::
string
loggerCat_
;
};
}
#endif // PROPERTYEDITORWIDGET_H_
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