Changeset View
Changeset View
Standalone View
Standalone View
plugins/paintops/libpaintop/kis_multi_sensors_selector.cpp
Context not available. | |||||
22 | #include "kis_multi_sensors_model_p.h" | 22 | #include "kis_multi_sensors_model_p.h" | ||
---|---|---|---|---|---|
23 | #include "kis_dynamic_sensor.h" | 23 | #include "kis_dynamic_sensor.h" | ||
24 | #include "kis_curve_option.h" | 24 | #include "kis_curve_option.h" | ||
25 | #include "kis_icon_utils.h" | ||||
26 | #include <QComboBox> | ||||
27 | #include <QListView> | ||||
28 | #include <QCheckBox> | ||||
29 | | ||||
25 | 30 | | |||
26 | struct KisMultiSensorsSelector::Private { | 31 | struct KisMultiSensorsSelector::Private { | ||
27 | Ui_WdgMultiSensorsSelector form; | 32 | Ui_WdgMultiSensorsSelector form; | ||
28 | KisMultiSensorsModel* model; | 33 | KisMultiSensorsModel* model; | ||
29 | QWidget* currentConfigWidget; | 34 | QWidget* currentConfigWidget; | ||
30 | QHBoxLayout* layout; | 35 | QHBoxLayout* layout; | ||
36 | QListView *sensorsList; | ||||
31 | }; | 37 | }; | ||
32 | 38 | | |||
33 | KisMultiSensorsSelector::KisMultiSensorsSelector(QWidget* parent) | 39 | KisMultiSensorsSelector::KisMultiSensorsSelector(QWidget* parent) | ||
Context not available. | |||||
39 | d->model = new KisMultiSensorsModel(this); | 45 | d->model = new KisMultiSensorsModel(this); | ||
40 | connect(d->model, SIGNAL(sensorChanged(KisDynamicSensorSP)), SIGNAL(sensorChanged(KisDynamicSensorSP))); | 46 | connect(d->model, SIGNAL(sensorChanged(KisDynamicSensorSP)), SIGNAL(sensorChanged(KisDynamicSensorSP))); | ||
41 | connect(d->model, SIGNAL(parametersChanged()), SIGNAL(parametersChanged())); | 47 | connect(d->model, SIGNAL(parametersChanged()), SIGNAL(parametersChanged())); | ||
42 | connect(d->form.sensorsList, SIGNAL(activated(QModelIndex)), SLOT(sensorActivated(QModelIndex))); | 48 | | ||
43 | connect(d->form.sensorsList, SIGNAL(clicked(QModelIndex)), SLOT(sensorActivated(QModelIndex))); | 49 | | ||
44 | d->form.sensorsList->setModel(d->model); | 50 | d->sensorsList = new QListView(this); | ||
51 | d->sensorsList->setSpacing(2); | ||||
52 | | ||||
53 | | ||||
54 | connect(d->sensorsList, SIGNAL(activated(QModelIndex)), SLOT(sensorActivated(QModelIndex))); | ||||
55 | connect(d->sensorsList, SIGNAL(entered(QModelIndex)), SLOT(sensorActivated(QModelIndex))); | ||||
56 | | ||||
57 | d->sensorsList->setModel(d->model); | ||||
58 | d->form.penSensorCombobox->setModel(d->model); | ||||
59 | d->form.penSensorCombobox->setView(d->sensorsList); | ||||
60 | | ||||
61 | | ||||
62 | connect(d->form.currentSensorEnabledCheckbox, SIGNAL(clicked(bool)), this, SLOT(slotSensorEnableChange(bool))); | ||||
63 | | ||||
64 | | ||||
45 | d->layout = new QHBoxLayout(d->form.widgetConfiguration); | 65 | d->layout = new QHBoxLayout(d->form.widgetConfiguration); | ||
46 | } | 66 | } | ||
47 | 67 | | |||
Context not available. | |||||
62 | 82 | | |||
63 | void KisMultiSensorsSelector::setCurrent(KisDynamicSensorSP _sensor) | 83 | void KisMultiSensorsSelector::setCurrent(KisDynamicSensorSP _sensor) | ||
64 | { | 84 | { | ||
65 | d->form.sensorsList->setCurrentIndex(d->model->sensorIndex(_sensor)); // make sure the first element is selected | 85 | d->sensorsList->setCurrentIndex(d->model->sensorIndex(_sensor)); // make sure the first element is selected | ||
66 | 86 | | |||
67 | // HACK ALERT: make sure the signal is delivered to us. Without this line it isn't. | 87 | // HACK ALERT: make sure the signal is delivered to us. Without this line it isn't. | ||
68 | sensorActivated(d->model->sensorIndex(_sensor)); | 88 | sensorActivated(d->model->sensorIndex(_sensor)); | ||
Context not available. | |||||
76 | 96 | | |||
77 | KisDynamicSensorSP KisMultiSensorsSelector::currentHighlighted() | 97 | KisDynamicSensorSP KisMultiSensorsSelector::currentHighlighted() | ||
78 | { | 98 | { | ||
79 | return d->model->getSensor(d->form.sensorsList->currentIndex()); | 99 | return d->model->getSensor(d->sensorsList->currentIndex()); | ||
80 | } | 100 | } | ||
81 | 101 | | |||
82 | void KisMultiSensorsSelector::sensorActivated(const QModelIndex& index) | 102 | void KisMultiSensorsSelector::sensorActivated(const QModelIndex& index) | ||
Context not available. | |||||
88 | if (d->currentConfigWidget) { | 108 | if (d->currentConfigWidget) { | ||
89 | d->layout->addWidget(d->currentConfigWidget); | 109 | d->layout->addWidget(d->currentConfigWidget); | ||
90 | } | 110 | } | ||
111 | | ||||
112 | d->form.penSensorCombobox->setCurrentIndex(index.row()); | ||||
113 | | ||||
114 | d->form.currentSensorEnabledCheckbox->setChecked(sensor->isActive()); | ||||
115 | | ||||
116 | | ||||
117 | // how many sensors are active? | ||||
118 | int sensorsActive = 0; | ||||
119 | for( int i =0; i <= d->model->rowCount()-1 ; i++) { | ||||
120 | QModelIndex row = d->model->index(i, 0); | ||||
121 | KisDynamicSensorSP loopSensor = d->model->getSensor(row); | ||||
122 | if ( loopSensor->isActive()) { | ||||
123 | sensorsActive++; | ||||
124 | } | ||||
125 | } | ||||
126 | | ||||
127 | // if the sensor selected is the only one, don't allow the person | ||||
128 | // to disable it. You need at least one sensor active for it to be valid | ||||
129 | if (d->form.currentSensorEnabledCheckbox->isChecked() && sensorsActive == 1 ) { | ||||
130 | d->form.currentSensorEnabledCheckbox->setEnabled(false); | ||||
131 | } else { | ||||
132 | d->form.currentSensorEnabledCheckbox->setEnabled(true); | ||||
133 | } | ||||
134 | | ||||
135 | | ||||
91 | emit(highlightedSensorChanged(sensor)); | 136 | emit(highlightedSensorChanged(sensor)); | ||
92 | } | 137 | } | ||
93 | } | 138 | } | ||
94 | 139 | | |||
95 | void KisMultiSensorsSelector::setCurrentCurve(const KisCubicCurve& curve, bool useSameCurve) | 140 | void KisMultiSensorsSelector::setCurrentCurve(const KisCubicCurve& curve, bool useSameCurve) | ||
96 | { | 141 | { | ||
97 | d->model->setCurrentCurve(d->form.sensorsList->currentIndex(), curve, useSameCurve); | 142 | d->model->setCurrentCurve(d->sensorsList->currentIndex(), curve, useSameCurve); | ||
98 | } | 143 | } | ||
99 | 144 | | |||
100 | void KisMultiSensorsSelector::reload() | 145 | void KisMultiSensorsSelector::reload() | ||
101 | { | 146 | { | ||
102 | d->model->resetCurveOption(); | 147 | d->model->resetCurveOption(); | ||
103 | } | 148 | } | ||
149 | | ||||
150 | void KisMultiSensorsSelector::slotSensorEnableChange(bool enabled) { | ||||
151 | // get current index | ||||
152 | KisDynamicSensorSP sensor = currentHighlighted(); | ||||
153 | | ||||
154 | // change the data model index so the enabled state is changed | ||||
155 | sensor->setActive(enabled); | ||||
156 | } | ||||
Context not available. |