LoggerHandling.cc 5.93 KB
Newer Older
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
/*===========================================================================*\
*                                                                            *
*                              OpenFlipper                                   *
*      Copyright (C) 2001-2011 by Computer Graphics Group, RWTH Aachen       *
*                           www.openflipper.org                              *
*                                                                            *
*--------------------------------------------------------------------------- *
*  This file is part of OpenFlipper.                                         *
*                                                                            *
*  OpenFlipper is free software: you can redistribute it and/or modify       *
*  it under the terms of the GNU Lesser General Public License as            *
*  published by the Free Software Foundation, either version 3 of            *
*  the License, or (at your option) any later version with the               *
*  following exceptions:                                                     *
*                                                                            *
*  If other files instantiate templates or use macros                        *
*  or inline functions from this file, or you compile this file and          *
*  link it with other files to produce an executable, this file does         *
*  not by itself cause the resulting executable to be covered by the         *
*  GNU Lesser General Public License. This exception does not however        *
*  invalidate any other reasons why the executable file might be             *
*  covered by the GNU Lesser General Public License.                         *
*                                                                            *
*  OpenFlipper is distributed in the hope that it will be useful,            *
*  but WITHOUT ANY WARRANTY; without even the implied warranty of            *
*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the             *
*  GNU Lesser General Public License for more details.                       *
*                                                                            *
*  You should have received a copy of the GNU LesserGeneral Public           *
*  License along with OpenFlipper. If not,                                   *
*  see <http://www.gnu.org/licenses/>.                                       *
*                                                                            *
\*===========================================================================*/

/*===========================================================================*\
*                                                                            *
*   $Revision$                                                       *
*   $LastChangedBy$                                                 *
*   $Date$                    *
*                                                                            *
\*===========================================================================*/

#include <OpenFlipper/widgets/coreWidget/CoreWidget.hh>

/** Hide or show logger
 */
void CoreWidget::toggleLogger() {

    switch (OpenFlipper::Options::loggerState()) {
    case OpenFlipper::Options::InScene:
        OpenFlipper::Options::loggerState(OpenFlipper::Options::Normal);
        break;
    case OpenFlipper::Options::Normal:
        OpenFlipper::Options::loggerState(OpenFlipper::Options::Hidden);
        break;
    case OpenFlipper::Options::Hidden:
        OpenFlipper::Options::loggerState(OpenFlipper::Options::InScene);
        break;
    }

    // Hide/Show Logger
    showLogger(OpenFlipper::Options::loggerState());
}

//-----------------------------------------------------------------------------

/** Hide or show logger
 */
void CoreWidget::showLogger(OpenFlipper::Options::LoggerState _state) {

    //Hide Logger
    if (_state == loggerState_)
        return;

    switch (_state) {
    case OpenFlipper::Options::InScene: {

        showLoggerInSplitView(false);
        logWidget_->resize(logWidget_->width(), originalLoggerSize_);

        slidingLogger_->attachWidget(logWidget_);

        break;
    }
    case OpenFlipper::Options::Normal: {

        slidingLogger_->detachWidget();

        showLoggerInSplitView(true);

        logWidget_->show();

        break;
    }
    case OpenFlipper::Options::Hidden: {

97
98
99
        if (loggerState_ == OpenFlipper::Options::InScene)
            slidingLogger_->detachWidget();

100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
        showLoggerInSplitView(false);

        break;
    }
    } // End switch

    loggerState_ = _state;
}

//-----------------------------------------------------------------------------

void CoreWidget::showLoggerInSplitView(bool _show) {

    if(!_show) {

        QList<int> wsizes = splitter_->sizes();

        // Remember old size
118
119
120
121
122
123
124
        if (loggerState_ == OpenFlipper::Options::Normal) {
            if(wsizes.size() > 1) {
                originalLoggerSize_ = wsizes[1];
            } else {
                originalLoggerSize_ = 240;
            }
        }
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148

        if (originalLoggerSize_ == 0)
            originalLoggerSize_ = 240;

        logWidget_->setParent(0);
        wsizes[0] = 1;
        splitter_->setSizes(wsizes);
    } else {

        if (loggerState_ == OpenFlipper::Options::InScene)
            originalLoggerSize_ = logWidget_->height();

        if (originalLoggerSize_ == 0)
            originalLoggerSize_ = 240;

        logWidget_->setParent(splitter_);
        splitter_->insertWidget(1, logWidget_);
        QList<int> wsizes = splitter_->sizes();
        int totalHeight = wsizes[0] + wsizes[1];
        wsizes[1] = originalLoggerSize_;
        wsizes[0] = totalHeight - originalLoggerSize_;
        splitter_->setSizes(wsizes);
    }
}
149
150
151
152
153
154
155
156
157

//-----------------------------------------------------------------------------

void CoreWidget::updateInSceneLoggerGeometry() {

  if(loggerState_ == OpenFlipper::Options::InScene) {
      slidingLogger_->updateGeometry();
  }
}