comparison widgets/ColourMapComboBox.cpp @ 1203:ff042979331b 3.0-integration

Merge from branch svg, and thus (in some subrepos) from levelpanwidget
author Chris Cannam
date Mon, 19 Dec 2016 16:34:38 +0000
parents 73d43e410a6b
children a34a2a25907c
comparison
equal deleted inserted replaced
1185:f32828ea63d9 1203:ff042979331b
1 /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */
2
3 /*
4 Sonic Visualiser
5 An audio file viewer and annotation editor.
6 Centre for Digital Music, Queen Mary, University of London.
7 This file copyright 2007-2016 QMUL.
8
9 This program is free software; you can redistribute it and/or
10 modify it under the terms of the GNU General Public License as
11 published by the Free Software Foundation; either version 2 of the
12 License, or (at your option) any later version. See the file
13 COPYING included with this distribution for more information.
14 */
15
16 #include "ColourMapComboBox.h"
17
18 #include "layer/ColourMapper.h"
19
20 #include "base/Debug.h"
21
22 #include <QFontMetrics>
23
24 #include <iostream>
25
26 using namespace std;
27
28 ColourMapComboBox::ColourMapComboBox(bool includeSwatches, QWidget *parent) :
29 NotifyingComboBox(parent),
30 m_includeSwatches(includeSwatches)
31 {
32 setEditable(false);
33 rebuild();
34
35 connect(this, SIGNAL(activated(int)), this, SLOT(comboActivated(int)));
36
37 if (count() < 20 && count() > maxVisibleItems()) {
38 setMaxVisibleItems(count());
39 }
40 }
41
42 void
43 ColourMapComboBox::comboActivated(int index)
44 {
45 emit colourMapChanged(index);
46 }
47
48 void
49 ColourMapComboBox::rebuild()
50 {
51 blockSignals(true);
52
53 int ix = currentIndex();
54
55 clear();
56
57 int size = (QFontMetrics(QFont()).height() * 2) / 3;
58 if (size < 12) size = 12;
59
60 for (int i = 0; i < ColourMapper::getColourMapCount(); ++i) {
61 QString name = ColourMapper::getColourMapName(i);
62 if (m_includeSwatches) {
63 ColourMapper mapper(i, 0.0, 1.0);
64 addItem(mapper.getExamplePixmap(QSize(size * 2, size)), name);
65 } else {
66 addItem(name);
67 }
68 }
69
70 setCurrentIndex(ix);
71
72 blockSignals(false);
73 }
74