// =======================================================================
void DFBrowser_TreeModel::InitColumns()
{
- SetHeaderItem (0, TreeModel_HeaderSection ("Name"));
+ setHeaderItem (0, TreeModel_HeaderSection ("Name"));
}
// =======================================================================
// =======================================================================
void DFBrowserPane_TDataStdTreeNodeModel::InitColumns()
{
- SetHeaderItem (0, TreeModel_HeaderSection ("Name"));
+ setHeaderItem (0, TreeModel_HeaderSection ("Name"));
}
// =======================================================================
if (anAttribute.IsNull() || !anAttribute->HasMetric (aMetricType))
return QVariant();
+ if (!anAttribute->IsMetricValid (aMetricType))
+ return QVariant ("in process");
+
if (aMetricType == Message_MetricType_UserTimeCPU ||
aMetricType == Message_MetricType_SystemTimeInfo)
{
if (anAlert.IsNull())
continue;
Handle(Message_AttributeMeter) anAttribute = Handle(Message_AttributeMeter)::DownCast (anAlert->Attribute());
- if (anAttribute.IsNull() || !anAttribute->HasMetric(theMetricType))
+ if (anAttribute.IsNull() || !anAttribute->HasMetric (theMetricType) || !anAttribute->IsMetricValid (theMetricType))
continue;
+
//if (aFirstAttribute.IsNull())
// aFirstAttribute = anAttribute;
//else
#include <Message.hxx>
-const int COLUMN_NAME_WIDTH = 460;
+const int COLUMN_NAME_WIDTH = 230;
const int COLUMN_SIZE_WIDTH = 30;
const int COLUMN_REAL_VALUE_WIDTH = 115;
void MessageModel_TreeModel::InitColumns()
{
// 0 - Name, 1 - visibility, 2 - Row
- SetHeaderItem (TreeModel_ColumnType_Name, TreeModel_HeaderSection ("Name", COLUMN_NAME_WIDTH));
- SetHeaderItem (TreeModel_ColumnType_Visibility, TreeModel_HeaderSection ("Visibility", TreeModel_ModelBase::ColumnVisibilityWidth()));
- SetHeaderItem (TreeModel_ColumnType_Row, TreeModel_HeaderSection ("Row", COLUMN_SIZE_WIDTH, Standard_True /*hidden*/));
+ setHeaderItem (TreeModel_ColumnType_Name, TreeModel_HeaderSection ("Name", COLUMN_NAME_WIDTH));
+ setHeaderItem (TreeModel_ColumnType_Visibility, TreeModel_HeaderSection ("Visibility", TreeModel_ModelBase::ColumnVisibilityWidth()));
+ setHeaderItem (TreeModel_ColumnType_Row, TreeModel_HeaderSection ("Row", COLUMN_SIZE_WIDTH, Standard_True /*hidden*/));
int aNextIndex = 3;
for (int aMetricId = (int)Message_MetricType_None + 1; aMetricId <= (int)Message_MetricType_MemHeapUsage; aMetricId++)
OSD_MemInfo::Counter aMemInfo;
bool isMemInfo = Message::ToOSDMetric (aMetricType, aMemInfo);
- SetHeaderItem (aNextIndex++,
+ setHeaderItem (aNextIndex++,
TreeModel_HeaderSection (QString("%1 [%2]").arg (Message::MetricToString (aMetricType)).arg(isMemInfo ? "Mb" : "s"),
COLUMN_REAL_VALUE_WIDTH));
- SetHeaderItem (aNextIndex++, TreeModel_HeaderSection (isMemInfo ? "Delta" : "%", COLUMN_PERCENT_VALUE_WIDTH));
+ setHeaderItem (aNextIndex++, TreeModel_HeaderSection (isMemInfo ? "Delta" : "%", COLUMN_PERCENT_VALUE_WIDTH));
}
}
#include <QWidget>
#include <QVBoxLayout>
-const int DEFAULT_TEXT_VIEW_WIDTH = 400;// 800;
+const int DEFAULT_TEXT_VIEW_WIDTH = 800;// 800;
const int DEFAULT_TEXT_VIEW_HEIGHT = 700;
const int DEFAULT_TEXT_VIEW_POSITION_X = 430;
const int DEFAULT_TEXT_VIEW_POSITION_Y = 30;
aModel->InitColumns();
//aModel->SetReversed (Standard_True);
+ connect (myTreeView->header(), SIGNAL (sectionResized (int, int, int)),
+ this, SLOT(onHeaderResized (int, int, int)));
+
myTreeView->setModel (aModel);
MessageView_VisibilityState* aVisibilityState = new MessageView_VisibilityState (aModel);
aModel->SetVisibilityState (aVisibilityState);
this, SLOT (onTreeViewContextMenuRequested (const QPoint&)));
//new TreeModel_ContextMenu (myTreeView);
+ connect (myTreeView->header(), SIGNAL (sectionResized (int, int, int)),
+ this, SLOT(onHeaderResized (int, int, int)));
+
QModelIndex aParentIndex = myTreeView->model()->index (0, 0);
myTreeView->setExpanded (aParentIndex, true);
theItem.Bind ("geometry", TreeModel_Tools::ToString (myMainWindow->saveState()).toStdString().c_str());
QMap<QString, QString> anItems;
- //TreeModel_Tools::SaveState (myTreeView, anItems);
-
- anItems.clear();
- View_Window::SaveState(myViewWindow, anItems);
+ TreeModel_Tools::SaveState (myTreeView, anItems);
for (QMap<QString, QString>::const_iterator anItemsIt = anItems.begin(); anItemsIt != anItems.end(); anItemsIt++)
+ {
theItem.Bind (anItemsIt.key().toStdString().c_str(), anItemsIt.value().toStdString().c_str());
+ }
+ anItems.clear();
+ View_Window::SaveState(myViewWindow, anItems);
for (QMap<QString, QString>::const_iterator anItemsIt = anItems.begin(); anItemsIt != anItems.end(); anItemsIt++)
+ {
theItem.Bind (anItemsIt.key().toStdString().c_str(), anItemsIt.value().toStdString().c_str());
+ }
}
// =======================================================================
{
if (anItemIt.Key().IsEqual ("geometry"))
myMainWindow->restoreState (TreeModel_Tools::ToByteArray (anItemIt.Value().ToCString()));
- //else if (TreeModel_Tools::RestoreState (myTreeView, anItemIt.Key().ToCString(), anItemIt.Value().ToCString()))
- // continue;
+ else if (TreeModel_Tools::RestoreState (myTreeView, anItemIt.Key().ToCString(), anItemIt.Value().ToCString()))
+ continue;
else if (myViewWindow && View_Window::RestoreState(myViewWindow, anItemIt.Key().ToCString(), anItemIt.Value().ToCString()))
continue;
}
myParameters->SetFileNames (aName, aNames);
isUpdated = true;
}
- Handle(Message_Report) aDefaultReport = Message::DefaultReport (Standard_False);
+ Handle(Message_Report) aDefaultReport = Message::DefaultReport();
MessageModel_TreeModel* aViewModel = dynamic_cast<MessageModel_TreeModel*> (myTreeView->model());
if (!aDefaultReport.IsNull() && !aViewModel->HasReport (aDefaultReport))
{
//onReloadReport();
updateTreeModel();
+ updateVisibleColumns();
}
// =======================================================================
// =======================================================================
void MessageView_Window::openFile(const TCollection_AsciiString& theFileName)
{
- const Handle(Message_Report)& aReport = Message::DefaultReport();
+ if (theFileName.IsEmpty())
+ return;
+
+ const Handle(Message_Report)& aReport = Message::DefaultReport (Standard_True);
//Handle(Message_Report) aReport = new Message_Report();
if (aReport->MessageWriter().IsNull())
MessageModel_TreeModel* aModel = dynamic_cast<MessageModel_TreeModel*> (myTreeView->model());
aModel->AddReport (theReport, theReportDescription);
- updateVisibleColumns();
+ //updateVisibleColumns();
}
// =======================================================================
}
if (aRootItem)
{
- aMenu->addAction (ViewControl_Tools::CreateAction (tr ("Import Report"), SLOT (onImportReport()), myMainWindow, this));
+ aMenu->addAction (ViewControl_Tools::CreateAction (tr ("Create Default Report"),
+ SLOT (onCreateDefaultReport()), myMainWindow, this));
// unite
//MessageModel_TreeModel* aTreeModel = dynamic_cast<MessageModel_TreeModel*> (myTreeView->model());
//aMenu->addAction (ViewControl_Tools::CreateAction (aTreeModel->IsUniteAlerts() ? tr ("SetUniteAlerts - OFF") : tr ("SetUniteAlerts - ON"),
updatePreviewPresentation();
}
+// =======================================================================
+// function : onHeaderResized
+// purpose :
+// =======================================================================
+void MessageView_Window::onHeaderResized (int theSectionId, int, int)
+{
+ TreeModel_ModelBase* aViewModel = dynamic_cast<TreeModel_ModelBase*> (myTreeView->model());
+
+ TreeModel_HeaderSection* aSection = aViewModel->ChangeHeaderItem (theSectionId);
+ aSection->SetWidth (myTreeView->columnWidth (theSectionId));
+}
+
// =======================================================================
// function : onEraseAllPerformed
// purpose :
if (!aReportItem)
return;
- QString aFilter (tr ("Document file (*.xml *)"));
+ QString aFilter (tr ("Document file (*.json *)"));
QString aSelectedFilter;
QString aFileName = QFileDialog::getSaveFileName (0, tr ("Export report to file"), QString(), aFilter, &aSelectedFilter);
Handle(Message_Report) aReport = aReportItem->GetReport();
- if (aReport->MessageWriter().IsNull())
- aReport->SetMessageWriter (new XmlDrivers_MessageReportStorage());
+ Standard_SStream aStream;
+ aReport->DumpJson(aStream);
- aReport->MessageWriter()->SetFileName (TCollection_AsciiString (aFileName.toStdString().c_str()));
- aReport->MessageWriter()->ExportReport (aReport);
+ QFile aLogFile(aFileName);
+ if (!aLogFile.open(QFile::WriteOnly | QFile::Text))
+ {
+ return;
+ }
+ QTextStream anOut( &aLogFile );
+ anOut << Standard_Dump::FormatJson (aStream).ToCString();//aStream.str().c_str();
+ aLogFile.close();
}
// =======================================================================
-// function : onImportReport
+// function : onCreateDefaultReport
// purpose :
// =======================================================================
-void MessageView_Window::onImportReport()
+void MessageView_Window::onCreateDefaultReport()
{
- QString aFilter (tr ("Document file (*.cbf *)"));
- QString aSelectedFilter;
-
- QItemSelectionModel* aSelectionModel = myTreeView->selectionModel();
- aSelectionModel->clear();
+ if (!Message::DefaultReport().IsNull())
+ {
+ return;
+ }
- QString aFileName = QFileDialog::getOpenFileName (0, tr("Import report"), QString(), aSelectedFilter);
- openFile (TCollection_AsciiString (aFileName.toStdString().c_str()));
+ addReport (Message::DefaultReport (Standard_True));
}
// =======================================================================
// =======================================================================
void MessageView_Window::addActivateMetricActions (QMenu* theMenu)
{
- QMenu* aSubMenu = new QMenu ("Activate metric");
-
- Handle(Message_Report) aReport = Message::DefaultReport (Standard_True);
+ Handle(Message_Report) aReport = Message::DefaultReport();
+ if (aReport.IsNull())
+ {
+ return;
+ }
+ QMenu* aSubMenu = new QMenu ("Activate metric");
for (int aMetricId = (int)Message_MetricType_None + 1; aMetricId <= (int)Message_MetricType_MemHeapUsage; aMetricId++)
{
Message_MetricType aMetricType = (Message_MetricType)aMetricId;
if (!Message::MetricFromString (anAction->text().toStdString().c_str(), aMetricType))
return;
- Handle(Message_Report) aReport = Message::DefaultReport (Standard_True);
+ Handle(Message_Report) aReport = Message::DefaultReport();
const NCollection_Map<Message_MetricType>& anActiveMetrics = aReport->ActiveMetrics();
aReport->SetActiveMetric (aMetricType, !anActiveMetrics.Contains (aMetricType));
{
int aColumnId = aMetricColumns[i];
myTreeView->setColumnHidden (aColumnId, isColumnHidden);
- TreeModel_HeaderSection aSection = aViewModel->GetHeaderItem (aColumnId);
- aSection.SetIsHidden (isColumnHidden);
- aViewModel->SetHeaderItem (aColumnId, aSection);
+ TreeModel_HeaderSection* aSection = aViewModel->ChangeHeaderItem (aColumnId);
+ aSection->SetIsHidden (isColumnHidden);
}
}
}
//! Update tree view item, preview presentation by item value change
void onPropertyViewDataChanged();
+ //! Update tree view header item width
+ void onHeaderResized (int theSectionId, int, int);
+
//! Updates visibility states by erase all in context
void onEraseAllPerformed();
//! Export report into document
void onExportReport();
- //! Import report into document
- void onImportReport();
+ //! Create default report into document
+ void onCreateDefaultReport();
//! Unite alerts in view model
//void onUniteAlerts();
aPlugins.insert("TKShapeView");
aPlugins.insert("TKVInspector");
- Handle(Message_Report) aReport = Message::DefaultReport (Standard_True);
- aReport->SetLimit (100);//30);
+ //Handle(Message_Report) aReport = Message::DefaultReport (Standard_True);
+ //aReport->SetLimit (100);//30);
aPlugins.insert("TKMessageView");
//anActivatedPluginName = "TKVInspector";
int aNbSections = aModel->columnCount();
for (int aColumnId = 0; aColumnId < aNbSections; aColumnId++)
{
- QAction* anAction = ViewControl_Tools::CreateAction (aModel->GetHeaderItem (aColumnId).GetName(),
+ QAction* anAction = ViewControl_Tools::CreateAction (aModel->ChangeHeaderItem (aColumnId)->GetName(),
SLOT (onColumnVisibilityChanged()), myTreeView, this);
anAction->setCheckable (true);
anAction->setChecked (!myTreeView->isColumnHidden (aColumnId));
// =======================================================================
void TreeModel_ModelBase::InitColumns()
{
- SetHeaderItem (TreeModel_ColumnType_Name, TreeModel_HeaderSection ("Name", COLUMN_NAME_WIDTH));
- SetHeaderItem (TreeModel_ColumnType_Visibility, TreeModel_HeaderSection ("Visibility", TreeModel_ModelBase::ColumnVisibilityWidth()));
- SetHeaderItem (TreeModel_ColumnType_Row, TreeModel_HeaderSection ("Row", COLUMN_SIZE_WIDTH));
+ setHeaderItem (TreeModel_ColumnType_Name, TreeModel_HeaderSection ("Name", COLUMN_NAME_WIDTH));
+ setHeaderItem (TreeModel_ColumnType_Visibility, TreeModel_HeaderSection ("Visibility", TreeModel_ModelBase::ColumnVisibilityWidth()));
+ setHeaderItem (TreeModel_ColumnType_Row, TreeModel_HeaderSection ("Row", COLUMN_SIZE_WIDTH));
}
// =======================================================================
if (IsUseVisibilityColumn() && theSection == TreeModel_ColumnType_Visibility)
return QVariant();
- return GetHeaderItem (theSection).GetName();
+ return myHeaderValues[theSection].GetName();
}
// =======================================================================
#endif
}
-// =======================================================================
-// function : SetHeaderItem
-// purpose :
-// =======================================================================
-void TreeModel_ModelBase::SetHeaderItem (const int theColumnId, const TreeModel_HeaderSection& theSection)
-{
- if (theSection.IsEmpty())
- {
- // remove section
- myHeaderValues.remove (theColumnId);
- myRootItems.remove (theColumnId);
- }
-
- myHeaderValues[theColumnId] = theSection;
- createRoot (theColumnId);
-}
-
// =======================================================================
// function : Selected
// purpose :
myRootItems.insert (theColumnId, createRootItem (theColumnId));
}
+// =======================================================================
+// function : setHeaderItem
+// purpose :
+// =======================================================================
+void TreeModel_ModelBase::setHeaderItem (const int theColumnId, const TreeModel_HeaderSection& theSection)
+{
+ if (theSection.IsEmpty())
+ {
+ // remove section
+ myHeaderValues.remove (theColumnId);
+ myRootItems.remove (theColumnId);
+ }
+
+ myHeaderValues[theColumnId] = theSection;
+ createRoot (theColumnId);
+}
+
// =======================================================================
// function : getIndexValue
// purpose :
//! Returns whether the column is hidden by default
//! \param theColumnId a column index
//! \return header section values container
- TreeModel_HeaderSection GetHeaderItem (const int theColumnId) const { return myHeaderValues[theColumnId]; }
-
- //! Sets header properties item.
- //! \param theColumnId a column index
- //! \param theSection a section value
- Standard_EXPORT void SetHeaderItem (const int theColumnId, const TreeModel_HeaderSection& theSection);
+ TreeModel_HeaderSection* ChangeHeaderItem (const int theColumnId) { return &myHeaderValues[theColumnId]; }
//! Returns count of columns in the model
//! \param theParent an index of the parent item
//! \param theColumnId index of a column
virtual TreeModel_ItemBasePtr createRootItem (const int theColumnId) = 0;
+ //! Sets header properties item.
+ //! \param theColumnId a column index
+ //! \param theSection a section value
+ Standard_EXPORT void setHeaderItem (const int theColumnId, const TreeModel_HeaderSection& theSection);
+
//! Converts the item shared pointer to void* type
//! \param theItem
//! \return an item pointer
QStringList aColumnWidths, aHiddenColumns;
for (int aColumnId = 0; aColumnId < theTreeView->model()->columnCount(); aColumnId++)
{
+ int aWidth = theTreeView->columnWidth (aColumnId);
if (theTreeView->isColumnHidden (aColumnId))
{
aHiddenColumns.append (QString::number (aColumnId));
}
else if (theKey == thePrefix + "columns_hidden")
{
- int aColumnSize = theTreeView->model()->columnCount();
- QStringList aValues = theValue.split (",", QString::SkipEmptyParts);
- QList<int> aColumnIds;
- for (int aValueId = 0; aValueId < aValues.size(); aValueId++)
- {
- if (aValueId < aColumnSize)
- aColumnIds.append (aValues.at (aValueId).toInt());
- }
- for (int aColumnId = 0; aColumnId < aColumnSize; aColumnId++)
- {
- theTreeView->setColumnHidden (aColumnId, aColumnIds.contains(aColumnId) == true);
- }
+ //int aColumnSize = theTreeView->model()->columnCount();
+ //QStringList aValues = theValue.split (",", QString::SkipEmptyParts);
+ //QList<int> aColumnIds;
+ //for (int aValueId = 0; aValueId < aValues.size(); aValueId++)
+ //{
+ // if (aValueId < aColumnSize)
+ // aColumnIds.append (aValues.at (aValueId).toInt());
+ //}
+ //for (int aColumnId = 0; aColumnId < aColumnSize; aColumnId++)
+ //{
+ // theTreeView->setColumnHidden (aColumnId, aColumnIds.contains(aColumnId) == true);
+ //}
}
else
return false;
for (int aColumnId = 0, aNbColumns = aTreeModel->columnCount(); aColumnId < aNbColumns; aColumnId++)
{
- TreeModel_HeaderSection aSection = aTreeModel->GetHeaderItem (aColumnId);
- theTreeView->setColumnWidth (aColumnId, aSection.GetWidth());
- theTreeView->setColumnHidden (aColumnId, aSection.IsHidden());
+ TreeModel_HeaderSection* aSection = aTreeModel->ChangeHeaderItem (aColumnId);
+ theTreeView->setColumnWidth (aColumnId, aSection->GetWidth());
+ theTreeView->setColumnHidden (aColumnId, aSection->IsHidden());
}
}
aHeader->moveSection (TreeModel_ColumnType_Name, TreeModel_ColumnType_Visibility);
TreeModel_ModelBase* aModel = dynamic_cast<TreeModel_ModelBase*> (theTreeView->model());
- aModel->SetHeaderItem (TreeModel_ColumnType_Visibility,
- TreeModel_HeaderSection ("Visibility", TreeModel_ModelBase::ColumnVisibilityWidth()));
+ TreeModel_HeaderSection* anItem = aModel->ChangeHeaderItem ((int)TreeModel_ColumnType_Visibility);
+ anItem->SetIsHidden (theActive);
+ anItem->SetWidth (TreeModel_ModelBase::ColumnVisibilityWidth());
+
aModel->SetUseVisibilityColumn (theActive);
}
{
TreeModel_ModelBase::InitColumns();
- SetHeaderItem (3, TreeModel_HeaderSection ("Pointer", COLUMN_POINTER_WIDTH));
- SetHeaderItem (4, TreeModel_HeaderSection ("SelectedOwners", -1));
+ setHeaderItem (3, TreeModel_HeaderSection ("Pointer", COLUMN_POINTER_WIDTH));
+ setHeaderItem (4, TreeModel_HeaderSection ("SelectedOwners", -1));
}
// =======================================================================
{
TreeModel_ModelBase::InitColumns();
- SetHeaderItem (0, TreeModel_HeaderSection ("Name", COLUMN_NAME_WIDTH));
- SetHeaderItem (1, TreeModel_HeaderSection ("Visibility", COLUMN_SIZE_WIDTH)); // visualization item
- SetHeaderItem (2, TreeModel_HeaderSection ("Size", COLUMN_SIZE_WIDTH));
- SetHeaderItem (3, TreeModel_HeaderSection ("Pointer", COLUMN_POINTER_WIDTH));
- SetHeaderItem (4, TreeModel_HeaderSection ("Shape type", COLUMN_SHAPE_TYPE_WIDTH));
- SetHeaderItem (5, TreeModel_HeaderSection ("AIS Name", COLUMN_AIS_NAME_WIDTH));
- SetHeaderItem (6, TreeModel_HeaderSection ("Selected/Highlighted", -1));
+ setHeaderItem (0, TreeModel_HeaderSection ("Name", COLUMN_NAME_WIDTH));
+ setHeaderItem (1, TreeModel_HeaderSection ("Visibility", COLUMN_SIZE_WIDTH)); // visualization item
+ setHeaderItem (2, TreeModel_HeaderSection ("Size", COLUMN_SIZE_WIDTH));
+ setHeaderItem (3, TreeModel_HeaderSection ("Pointer", COLUMN_POINTER_WIDTH));
+ setHeaderItem (4, TreeModel_HeaderSection ("Shape type", COLUMN_SHAPE_TYPE_WIDTH));
+ setHeaderItem (5, TreeModel_HeaderSection ("AIS Name", COLUMN_AIS_NAME_WIDTH));
+ setHeaderItem (6, TreeModel_HeaderSection ("Selected/Highlighted", -1));
for (int aColumnId = 0, aNbColumns = columnCount(); aColumnId < aNbColumns; aColumnId++)
{
aTreeModel->InitColumns();
myTreeView->setModel (aTreeModel);
// hide Visibility column
- TreeModel_HeaderSection anItem = aTreeModel->GetHeaderItem ((int)TreeModel_ColumnType_Visibility);
- anItem.SetIsHidden (true);
- aTreeModel->SetHeaderItem ((int)TreeModel_ColumnType_Visibility, anItem);
+ TreeModel_HeaderSection* anItem = aTreeModel->ChangeHeaderItem ((int)TreeModel_ColumnType_Visibility);
+ anItem->SetIsHidden (true);
connect (myTreeView, SIGNAL(customContextMenuRequested(const QPoint&)),
this, SLOT (onTreeViewContextMenuRequested(const QPoint&)));
connect (aSelectionModel, SIGNAL (selectionChanged (const QItemSelection&, const QItemSelection&)),
this, SLOT (onHistoryViewSelectionChanged (const QItemSelection&, const QItemSelection&)));
- anItem = aHistoryModel->GetHeaderItem (0);
+ anItem = aHistoryModel->ChangeHeaderItem (0);
// hide Visibility column
TreeModel_Tools::UseVisibilityColumn (myHistoryView, false);
- anItem = aHistoryModel->GetHeaderItem ((int)TreeModel_ColumnType_Visibility);
- anItem.SetIsHidden (true);
- aHistoryModel->SetHeaderItem ((int)TreeModel_ColumnType_Visibility, anItem);
+ anItem = aHistoryModel->ChangeHeaderItem ((int)TreeModel_ColumnType_Visibility);
+ anItem->SetIsHidden (true);
QModelIndex aParentIndex = myHistoryView->model()->index (0, 0);
myHistoryView->setExpanded (aParentIndex, true);