File: DFBrowser_SearchLine.hxx

package info (click to toggle)
opencascade 7.9.2%2Bdfsg-4
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 301,924 kB
  • sloc: cpp: 1,523,264; tcl: 10,159; cs: 5,173; java: 1,554; sh: 1,342; ansic: 827; xml: 699; makefile: 30; javascript: 22
file content (103 lines) | stat: -rw-r--r-- 3,526 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
// 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.

#ifndef DFBrowser_SearchLine_H
#define DFBrowser_SearchLine_H

#include <inspector/DFBrowser_SearchLineModel.hxx> // to include DFBrowser_SearchItemInfo

#include <Standard.hxx>
#include <TDocStd_Application.hxx>
#include <TDF_Label.hxx>

#include <Standard_WarningsDisable.hxx>
#include <QCompleter>
#include <QFrame>
#include <QLineEdit>
#include <Standard_WarningsRestore.hxx>

class DFBrowser_Module;
class DFBrowser_SearchLineModel;

class QAbstractItemModel;
class QLineEdit;
class QToolButton;
class QStringList;

//! \class DFBrowser_SearchLine
//! It contains a line edit control with auto completion and search button
class DFBrowser_SearchLine : public QFrame
{
  Q_OBJECT
public:
  //! Constructor
  Standard_EXPORT DFBrowser_SearchLine(QWidget* theParent);

  //! Destructor
  virtual ~DFBrowser_SearchLine() {}

  //! Creates search line model filled by the module. It is necessary for auto completion of line
  //! edit \param theModule a current module
  Standard_EXPORT void SetModule(DFBrowser_Module* theModule);

  //! Returns the current module
  Standard_EXPORT DFBrowser_Module* GetModule();

  //! Fills the search line model by OCAF document values
  //! \param theDocumentValues container of document index to container of entry/attribute name to
  //! item information \param theDocumentInfoValues container of a document index to entry/attribute
  //! name
  Standard_EXPORT void SetValues(
    const QMap<int, QMap<QString, DFBrowser_SearchItemInfo>>& theDocumentValues,
    const QMap<int, QStringList>&                             theDocumentInfoValues);

  //! Clears cache of values in search line model
  Standard_EXPORT void ClearValues();

  //! Returns completer model
  QAbstractItemModel* GetModel() { return myLineControl->completer()->model(); }

  //! Returns completion completer model
  QAbstractItemModel* GetCompletionModel() { return myLineControl->completer()->completionModel(); }

  //! Returns the current line edit text
  QString Text() const { return myLineControl->text(); }

  //! Sets the current text value
  //! \param theValue a string value
  void SetText(const QString& theValue) { myLineControl->setText(theValue); }

signals:

  //! Signals that is emitted by text changed in line edit control
  void searchActivated();

private slots:

  //! Updates icon of search button depending on text is empty and emits searchActivated signal
  void onTextChanged(const QString& theText);

  //! Sets completion prefix in completer model
  void onReturnPressed() { myLineControl->completer()->setCompletionPrefix(myLineControl->text()); }

  //! Sets empty text if the current text is not empty: new search is started
  void onSearchButtonClicked();

private:
  QLineEdit*   myLineControl;  //!< line editor control
  QToolButton* mySearchButton; //!< search button
};

#endif