pqPythonUtils.h
Go to the documentation of this file.
1 // SPDX-FileCopyrightText: Copyright (c) Kitware Inc.
2 // SPDX-FileCopyrightText: Copyright (c) Sandia Corporation
3 // SPDX-License-Identifier: BSD-3-Clause
4 
5 #ifndef pqPythonUtils_h
6 #define pqPythonUtils_h
7 
8 #include <QAbstractTextDocumentLayout>
9 #include <QFileInfo>
10 #include <QScrollBar>
11 #include <QTextBlock>
12 #include <QTextEdit>
13 
14 namespace details
15 {
22 inline std::int32_t getFirstVisibleBlockId(const QTextEdit& text)
23 {
24  QTextCursor curs = QTextCursor(text.document());
25  curs.movePosition(QTextCursor::Start);
26  for (std::int32_t i = 0; i < text.document()->blockCount(); ++i)
27  {
28  QTextBlock block = curs.block();
29 
30  QRect r1 = text.viewport()->geometry();
31  QRect r2 = text.document()
32  ->documentLayout()
33  ->blockBoundingRect(block)
34  .translated(text.viewport()->geometry().x(),
35  text.viewport()->geometry().y() - (text.verticalScrollBar()->sliderPosition()))
36  .toRect();
37 
38  if (r1.contains(r2, true))
39  {
40  return i;
41  }
42 
43  curs.movePosition(QTextCursor::NextBlock);
44  }
45 
46  return 0;
47 };
48 
49 inline QString stripFilename(const QString& filepath)
50 {
51  return QFileInfo(filepath).fileName();
52 }
53 }
54 
60 template <typename E, class T, std::size_t N = static_cast<size_t>(E::END)>
61 struct EnumArray : public std::array<T, N>
62 {
63  T& operator[](E e) { return std::array<T, N>::operator[](static_cast<size_t>(e)); }
64  const T& operator[](E e) const { return std::array<T, N>::operator[](static_cast<size_t>(e)); }
65 };
66 
67 #endif // pqPythonUtils_h
T & operator[](E e)
Definition: pqPythonUtils.h:63
Stack array using an enum as indexer.
Definition: pqPythonUtils.h:61
std::int32_t getFirstVisibleBlockId(const QTextEdit &text)
Returns the id of the first visible block inside a QTextEdit.
Definition: pqPythonUtils.h:22
QString stripFilename(const QString &filepath)
Definition: pqPythonUtils.h:49
const T & operator[](E e) const
Definition: pqPythonUtils.h:64