ColourMapComboBox.cpp
Go to the documentation of this file.
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
44 {
45  emit colourMapChanged(index);
46 }
47 
48 void
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::getColourMapLabel(i);
62  if (m_includeSwatches) {
63  ColourMapper mapper(i, false, 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 
Very trivial enhancement to QComboBox to make it emit signals when the mouse enters and leaves (for c...
static int getColourMapCount()
Return the number of known colour maps.
void colourMapChanged(int index)
static QString getColourMapLabel(int n)
Return a human-readable label for the colour map with the given index.
QPixmap getExamplePixmap(QSize size) const
Return a pixmap of the given size containing a preview swatch for the colour map. ...
A class for mapping intensity values onto various colour maps.
Definition: ColourMapper.h:27
ColourMapComboBox(bool includeSwatches, QWidget *parent=0)