Currently job artifacts in CI/CD pipelines on LRZ GitLab never expire. Starting from Wed 26.1.2022 the default expiration time will be 30 days (GitLab default). Currently existing artifacts in already completed jobs will not be affected by the change. The latest artifacts for all jobs in the latest successful pipelines will be kept. More information: https://gitlab.lrz.de/help/user/admin_area/settings/continuous_integration.html#default-artifacts-expiration

scriptingwidget.h 3.91 KB
Newer Older
1
2
3
4
// ================================================================================================
// 
// This file is part of the CAMPVis Software Framework.
// 
5
// If not explicitly stated otherwise: Copyright (C) 2012-2015, all rights reserved,
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
//      Christian Schulte zu Berge <christian.szb@in.tum.de>
//      Chair for Computer Aided Medical Procedures
//      Technische Universitaet Muenchen
//      Boltzmannstr. 3, 85748 Garching b. Muenchen, Germany
// 
// For a full list of authors and contributors, please refer to the file "AUTHORS.txt".
// 
// Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file 
// except in compliance with the License. You may obtain a copy of the License at
// 
// http://www.apache.org/licenses/LICENSE-2.0
// 
// Unless required by applicable law or agreed to in writing, software distributed under the 
// License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, 
// either express or implied. See the License for the specific language governing permissions 
// and limitations under the License.
// 
// ================================================================================================

#ifndef SCRIPTINGWIDGET_H__
#define SCRIPTINGWIDGET_H__

#include "sigslot/sigslot.h"
29
30
#include "cgt/logmanager.h"
#include "cgt/painter.h"
31
32
#include "tbb/mutex.h"

33
#include "application/applicationapi.h"
34
#include "application/gui/completinglualineedit.h"
35
36
37
#include "application/tools/bufferinglog.h"
#include "application/gui/loghighlighter.h"

38
39
#include <deque>

40
41
42
43
44
45
46
47
48
49
50
#include <QComboBox>
#include <QLabel>
#include <QWidget>
#include <QVBoxLayout>
#include <QHBoxLayout>
#include <QString>
#include <QPushButton>
#include <QLineEdit>
#include <QTextEdit>

namespace campvis {
51
52
53
    /**
     * Qt widget providing a console-like interface to the Lua VM of CampvisApplication.
     */
54
    class CAMPVIS_APPLICATION_API ScriptingWidget : public QWidget, cgt::Log {
55
56
57
58
        Q_OBJECT;

    public:
        /**
59
         * Creates a new ScriptingWidget.
60
61
62
63
64
65
66
67
68
         * \param   parent          Parent Qt widget, may be 0 (default)
         */
        explicit ScriptingWidget(QWidget* parent = 0);

        /**
         * Destructor.
         */
        ~ScriptingWidget();

69
70
71
        bool isOpen() { return true; }
        
        /**
72
         * Initializes the underlying log and registers it with cgt.
73
74
75
76
         */
        void init();

        /**
77
         * Deinitializes the underlying log and deregisters it from cgt.
78
79
80
         */
        void deinit();

81
82
        CompletingLuaLineEdit* _editCommand;            ///< Text field to enter Lua commands

83
84
85
86
87
88
    protected:
        /**
         * Setup the the log viewer's GUI
         */
        void setupGUI();

89
        bool eventFilter(QObject* obj, QEvent* event);
90

91
        void logFiltered(const std::string &cat, cgt::LogLevel level, const std::string& msg, const std::string& extendedInfo="");
92

93
94
95
96
97
98
99
100
101
    public slots:
        /**
         * Append the given message to the log viewer
         *
         * This function adds the specified message to the log viewer's message cache and
         * displays it.
         *
         * \param message message to append to the log viewer
         */
102
        void appendMessage(QString message);
103

104
    private slots:
105
106
107
108
109
110
111
112
        /**
         * Delete all messages from the log viewer
         */
        void clearLog();

        void execute();

    signals:
113
114
        void s_commandExecuted(QString cmd);
        void s_messageAppended(QString message);
115
116
117
118
119

    private:
        QTextEdit* _consoleDisplay;         ///< Text edit to hold the console output
        QPushButton* _btnExecute;           ///< Button to execute command
        QPushButton* _btnClear;             ///< Button to clear the console output
120
121

        std::deque<QString> _history;       ///< History of executed commands
122
        int _currentPosition;               ///< Current position in command history
123
124
125
126
    };
}

#endif // SCRIPTINGWIDGET_H__