File: MultiServerClientMainWindow.cxx

package info (click to toggle)
paraview 5.13.2%2Bdfsg-3
  • links: PTS, VCS
  • area: main
  • in suites: sid, trixie
  • size: 544,220 kB
  • sloc: cpp: 3,374,605; ansic: 1,332,409; python: 150,381; xml: 122,166; sql: 65,887; sh: 7,317; javascript: 5,262; yacc: 4,417; java: 3,977; perl: 2,363; lex: 1,929; f90: 1,397; makefile: 170; objc: 153; tcl: 59; pascal: 50; fortran: 29
file content (120 lines) | stat: -rw-r--r-- 4,364 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
// SPDX-FileCopyrightText: Copyright (c) Kitware Inc.
// SPDX-FileCopyrightText: Copyright (c) Sandia Corporation
// SPDX-License-Identifier: BSD-3-Clause
#include "MultiServerClientMainWindow.h"
#include "ui_MultiServerClientMainWindow.h"

#include <pqActiveObjects.h>
#include <pqApplicationCore.h>
#include <pqObjectBuilder.h>
#include <pqParaViewBehaviors.h>
#include <pqParaViewMenuBuilders.h>
#include <pqPipelineBrowserWidget.h>
#include <pqServer.h>
#include <pqServerConfiguration.h>
#include <pqServerConnectReaction.h>
#include <pqServerManagerModel.h>
#include <vtkProcessModule.h>
#include <vtkSMSession.h>
#include <vtkSession.h>

#include <QComboBox>

//-----------------------------------------------------------------------------
MultiServerClientMainWindow::MultiServerClientMainWindow(
  QWidget* parentObject, Qt::WindowFlags wflags)
  : Superclass(parentObject, wflags)
{
  // tells the ParaView libraries to enable support for multiple simultaneous
  // server connections.
  vtkProcessModule::GetProcessModule()->MultipleSessionsSupportOn();
  Ui::MultiServerClientMainWindow ui;
  ui.setupUi(this);

  this->tabifyDockWidget(ui.objectInspectorDock, ui.informationDock);
  ui.objectInspectorDock->raise();

  // create the representation when user hits "Apply";
  // ui.proxyTabWidget->setShowOnAccept(true);

  new pqServerConnectReaction(ui.action_Connect);

  pqParaViewMenuBuilders::buildSourcesMenu(*ui.menu_Sources, this);
  new pqParaViewBehaviors(this, this);

  // Keep around GUI components
  this->pipelineBrowser = ui.pipelineBrowser;
  this->comboBox = ui.filteringServer;

  this->pipelineBrowser2 = ui.pipelineBrowser2;
  this->comboBox2 = ui.filteringServer2;

  // Add empty filtering
  this->comboBox->addItem("No filtering", QVariant());
  this->comboBox2->addItem("No filtering", QVariant());

  // Add current server in filtering
  addServerInFiltering(pqActiveObjects::instance().activeServer());

  // Listen when new connection occurs
  QObject::connect(pqApplicationCore::instance()->getServerManagerModel(),
    SIGNAL(serverAdded(pqServer*)), this, SLOT(addServerInFiltering(pqServer*)),
    Qt::QueuedConnection);

  // Listen when we filter with different criteria
  QObject::connect(this->comboBox, SIGNAL(currentIndexChanged(int)), this,
    SLOT(applyPipelineFiltering(int)), Qt::QueuedConnection);
  QObject::connect(this->comboBox2, SIGNAL(currentIndexChanged(int)), this,
    SLOT(applyPipelineFiltering2(int)), Qt::QueuedConnection);
}

//-----------------------------------------------------------------------------
MultiServerClientMainWindow::~MultiServerClientMainWindow() = default;

//-----------------------------------------------------------------------------
void MultiServerClientMainWindow::applyPipelineFiltering(int index)
{
  QVariant sessionIdFiltering = this->comboBox->itemData(index);
  if (sessionIdFiltering.isValid())
  {
    vtkProcessModule* pm = vtkProcessModule::GetProcessModule();
    this->pipelineBrowser->enableSessionFilter(
      pm->GetSession(static_cast<vtkIdType>(sessionIdFiltering.toInt())));
    this->pipelineBrowser->expandAll();
  }
  else
  {
    this->pipelineBrowser->disableAnnotationFilter();
    this->pipelineBrowser->disableSessionFilter();
    this->pipelineBrowser->expandAll();
  }
}

//-----------------------------------------------------------------------------
void MultiServerClientMainWindow::applyPipelineFiltering2(int index)
{
  QVariant sessionIdFiltering = this->comboBox2->itemData(index);
  if (sessionIdFiltering.isValid())
  {
    vtkProcessModule* pm = vtkProcessModule::GetProcessModule();
    this->pipelineBrowser2->enableSessionFilter(
      pm->GetSession(static_cast<vtkIdType>(sessionIdFiltering.toInt())));
    this->pipelineBrowser2->expandAll();
  }
  else
  {
    this->pipelineBrowser2->disableAnnotationFilter();
    this->pipelineBrowser2->disableSessionFilter();
    this->pipelineBrowser2->expandAll();
  }
}

//-----------------------------------------------------------------------------
void MultiServerClientMainWindow::addServerInFiltering(pqServer* server)
{
  QVariant sessionID = vtkProcessModule::GetProcessModule()->GetSessionID(server->session());
  QString label = "Server ";
  label.append(sessionID.toString());
  this->comboBox->addItem(label, sessionID);
  this->comboBox2->addItem(label, sessionID);
}