1
0
mirror of https://git.dev.opencascade.org/repos/occt.git synced 2025-04-01 17:36:21 +03:00
occt/tools/TInspector/TInspector_Communicator.cxx
Pasukhin Dmitry 053e01ec68
Testing - Inspector building on GH #329
Add GitHub Actions for TInspector build and clang-format check
Reorganize QT search to work with native Linux packages
Reorganize build-and-test workflow to have actions
2025-02-02 15:35:20 +00:00

118 lines
3.8 KiB
C++

// Created on: 2017-06-16
// Created by: Natalia ERMOLAEVA
// Copyright (c) 2017 OPEN CASCADE SAS
//
// This file is part of Open CASCADE Technology software library.
//
// This library is free software; you can redistribute it and/or modify it under
// the terms of the GNU Lesser General Public License version 2.1 as published
// by the Free Software Foundation, with special exception defined in the file
// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
// distribution for complete text of the license and disclaimer of any warranty.
//
// Alternatively, this file may be used under the terms of Open CASCADE
// commercial license or contractual agreement.
#include <inspector/TInspector_Communicator.hxx>
#include <OSD_Directory.hxx>
#include <OSD_Environment.hxx>
#include <TCollection_AsciiString.hxx>
#include <inspector/TInspector_Window.hxx>
#include <Standard_WarningsDisable.hxx>
#include <QApplication>
#include <QDir>
#include <QMainWindow>
#include <QWidget>
#include <Standard_WarningsRestore.hxx>
// =======================================================================
// function : Constructor
// purpose :
// =======================================================================
TInspector_Communicator::TInspector_Communicator()
{
if (!qApp)
{
static int argc = 1;
static char* argv[] = {(char*)"", 0};
#if QT_VERSION > 0x050000
TCollection_AsciiString aPlugindsDirName;
if (TInspector_Communicator::PluginsDir(aPlugindsDirName))
QApplication::addLibraryPath(aPlugindsDirName.ToCString());
#endif
new QApplication(argc, argv);
}
myWindow = new TInspector_Window();
}
// =======================================================================
// function : PluginsDir
// purpose :
// =======================================================================
Standard_Boolean TInspector_Communicator::PluginsDir(TCollection_AsciiString& thePlugindsDirName)
{
OSD_Environment anEnvironment("QTDIR");
TCollection_AsciiString aQtDirValue = anEnvironment.Value();
if (!aQtDirValue.IsEmpty())
{
thePlugindsDirName = aQtDirValue + "/plugins";
return Standard_True;
}
anEnvironment = OSD_Environment("PATH");
TCollection_AsciiString aPathValue = anEnvironment.Value();
TCollection_AsciiString aPathSep =
#ifdef _WIN32
';';
#else
':';
#endif
while (!aPathValue.IsEmpty())
{
Standard_Integer aSepIndex = aPathValue.FirstLocationInSet(aPathSep, 1, aPathValue.Length());
if (aSepIndex <= 1)
break;
TCollection_AsciiString aCurPath = aPathValue.SubString(1, aSepIndex - 1);
aPathValue = aSepIndex < aPathValue.Length()
? aPathValue.SubString(aSepIndex + 1, aPathValue.Length())
: "";
if (aCurPath.IsEmpty())
continue;
aCurPath += "/../plugins";
OSD_Path aPath(aCurPath);
OSD_Directory aCurDir(aPath);
if (aCurDir.Exists())
{
thePlugindsDirName = aCurPath;
return Standard_True;
}
}
return Standard_False;
}
// =======================================================================
// function : SetVisible
// purpose :
// =======================================================================
void TInspector_Communicator::SetVisible(const bool theVisible)
{
myWindow->GetMainWindow()->setVisible(theVisible);
#ifndef _WIN32
// window is not visualized on X11 patform under DRAW tool without the next row
QApplication::processEvents();
#endif
}
// =======================================================================
// function : Move
// purpose :
// =======================================================================
void TInspector_Communicator::Move(const int theXPosition, const int theYPosition)
{
myWindow->GetMainWindow()->move(theXPosition, theYPosition);
}