/[svn]/qsampler/trunk/src/qsamplerDeviceForm.ui.h
ViewVC logotype

Annotation of /qsampler/trunk/src/qsamplerDeviceForm.ui.h

Parent Directory Parent Directory | Revision Log Revision Log


Revision 464 - (hide annotations) (download) (as text)
Tue Mar 15 15:38:26 2005 UTC (16 years, 10 months ago) by capela
File MIME type: text/x-c++hdr
File size: 17095 byte(s)
Device port/channel configuration is now complete (ufix).

1 capela 426 // qsamplerDeviceForm.ui.h
2     //
3     // ui.h extension file, included from the uic-generated form implementation.
4     /****************************************************************************
5 capela 430 Copyright (C) 2005, rncbc aka Rui Nuno Capela. All rights reserved.
6 capela 426
7     This program is free software; you can redistribute it and/or
8     modify it under the terms of the GNU General Public License
9     as published by the Free Software Foundation; either version 2
10     of the License, or (at your option) any later version.
11    
12     This program is distributed in the hope that it will be useful,
13     but WITHOUT ANY WARRANTY; without even the implied warranty of
14     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15     GNU General Public License for more details.
16    
17     You should have received a copy of the GNU General Public License
18     along with this program; if not, write to the Free Software
19     Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
20    
21     *****************************************************************************/
22    
23     #include <qmessagebox.h>
24 capela 428 #include <qfiledialog.h>
25     #include <qfileinfo.h>
26 capela 430 #include <qlistbox.h>
27 capela 463 #include <qptrlist.h>
28 capela 452 #include <qpopupmenu.h>
29 capela 426
30     #include "qsamplerMainForm.h"
31    
32     #include "config.h"
33    
34    
35     // Kind of constructor.
36     void qsamplerDeviceForm::init (void)
37     {
38 capela 431 // Initialize locals.
39     m_pMainForm = (qsamplerMainForm *) QWidget::parentWidget();
40     m_pClient = NULL;
41 capela 426 m_iDirtySetup = 0;
42 capela 431 m_bNewDevice = false;
43 capela 436 m_deviceType = qsamplerDevice::None;
44 capela 442 m_pAudioItems = NULL;
45     m_pMidiItems = NULL;
46 capela 426
47 capela 433 // This an outsider (from designer), but rather important.
48     QObject::connect(DeviceParamTable, SIGNAL(valueChanged(int,int)),
49 capela 463 this, SLOT(changeDeviceParam(int,int)));
50     QObject::connect(DevicePortParamTable, SIGNAL(valueChanged(int,int)),
51     this, SLOT(changeDevicePortParam(int,int)));
52    
53 capela 431 // Try to restore normal window positioning.
54     adjustSize();
55 capela 426 }
56    
57    
58     // Kind of destructor.
59     void qsamplerDeviceForm::destroy (void)
60     {
61     }
62    
63    
64 capela 428 // Notify our parent that we're emerging.
65     void qsamplerDeviceForm::showEvent ( QShowEvent *pShowEvent )
66     {
67 capela 431 if (m_pMainForm)
68     m_pMainForm->stabilizeForm();
69 capela 428
70 capela 431 stabilizeForm();
71 capela 428
72 capela 431 QWidget::showEvent(pShowEvent);
73 capela 428 }
74    
75    
76     // Notify our parent that we're closing.
77     void qsamplerDeviceForm::hideEvent ( QHideEvent *pHideEvent )
78     {
79 capela 431 QWidget::hideEvent(pHideEvent);
80 capela 428
81 capela 431 if (m_pMainForm)
82     m_pMainForm->stabilizeForm();
83 capela 428 }
84    
85    
86 capela 426 // Device configuration dialog setup formal initializer.
87 capela 428 void qsamplerDeviceForm::setClient ( lscp_client_t *pClient )
88 capela 426 {
89 capela 428 // If it has not changed, do nothing.
90     if (m_pClient && m_pClient == pClient)
91 capela 431 return;
92 capela 426
93 capela 428 // Set new reference.
94     m_pClient = pClient;
95    
96     // OK. Do a whole refresh around.
97     refreshDevices();
98     }
99    
100    
101 capela 433 // Create a new device from current table view.
102     void qsamplerDeviceForm::createDevice (void)
103 capela 428 {
104 capela 433 QListViewItem *pItem = DeviceListView->selectedItem();
105     if (pItem == NULL || pItem->rtti() != QSAMPLER_DEVICE_ITEM)
106     return;
107 capela 428
108 capela 462 const qsamplerDevice& device = ((qsamplerDeviceItem *) pItem)->device();
109 capela 428
110 capela 433 // Build the parameter list...
111 capela 462 const qsamplerDeviceParamMap& params = device.params();
112 capela 433 lscp_param_t *pParams = new lscp_param_t [params.count() + 1];
113 capela 436 int iParam = 0;
114 capela 433 qsamplerDeviceParamMap::ConstIterator iter;
115     for (iter = params.begin(); iter != params.end(); ++iter) {
116 capela 436 pParams[iParam].key = (char *) iter.key().latin1();
117     pParams[iParam].value = (char *) iter.data().value.latin1();
118     ++iParam;
119 capela 433 }
120     // Null terminated.
121 capela 436 pParams[iParam].key = NULL;
122     pParams[iParam].value = NULL;
123 capela 428
124 capela 433 // Now it depends on the device type...
125 capela 442 qsamplerDeviceItem *pRootItem = NULL;
126 capela 433 int iDeviceID = -1;
127     switch (device.deviceType()) {
128     case qsamplerDevice::Audio:
129 capela 448 pRootItem = m_pAudioItems;
130 capela 436 if ((iDeviceID = ::lscp_create_audio_device(m_pClient,
131 capela 433 device.driverName().latin1(), pParams)) < 0)
132     m_pMainForm->appendMessagesClient("lscp_create_audio_device");
133     break;
134     case qsamplerDevice::Midi:
135 capela 448 pRootItem = m_pMidiItems;
136 capela 436 if ((iDeviceID = ::lscp_create_midi_device(m_pClient,
137 capela 433 device.driverName().latin1(), pParams)) < 0)
138     m_pMainForm->appendMessagesClient("lscp_create_midi_device");
139     break;
140 capela 436 case qsamplerDevice::None:
141     break;
142 capela 433 }
143 capela 428
144 capela 433 // Free used parameter array.
145 capela 436 delete pParams;
146 capela 428
147 capela 442 // We're on to create the new device item.
148 capela 433 if (iDeviceID >= 0) {
149 capela 442 // Append the new device item.
150     qsamplerDeviceItem *pDeviceItem = new qsamplerDeviceItem(pRootItem,
151     m_pClient, device.deviceType(), iDeviceID);
152     // Just make it the new selection...
153     DeviceListView->setSelected(pDeviceItem, true);
154 capela 433 // Done.
155 capela 442 m_pMainForm->appendMessages(pDeviceItem->device().deviceName() + ' '
156     + tr("created."));
157 capela 433 // Main session should be marked dirty.
158     m_pMainForm->sessionDirty();
159     }
160 capela 428 }
161    
162    
163     // Delete current device in table view.
164     void qsamplerDeviceForm::deleteDevice (void)
165     {
166 capela 433 QListViewItem *pItem = DeviceListView->selectedItem();
167     if (pItem == NULL || pItem->rtti() != QSAMPLER_DEVICE_ITEM)
168     return;
169    
170 capela 462 const qsamplerDevice& device = ((qsamplerDeviceItem *) pItem)->device();
171 capela 433
172 capela 442 // Prompt user if this is for real...
173     qsamplerOptions *pOptions = m_pMainForm->options();
174 capela 448 if (pOptions && pOptions->bConfirmRemove) {
175     if (QMessageBox::warning(this, tr("Warning"),
176     tr("Delete %1 device:\n\n"
177     "%2\n\n"
178     "Are you sure?")
179     .arg(device.deviceTypeName())
180     .arg(device.deviceName()),
181     tr("OK"), tr("Cancel")) > 0)
182     return;
183     }
184 capela 442
185 capela 433 // Now it depends on the device type...
186     lscp_status_t ret = LSCP_FAILED;
187     switch (device.deviceType()) {
188     case qsamplerDevice::Audio:
189 capela 436 if ((ret = ::lscp_destroy_audio_device(m_pClient,
190 capela 433 device.deviceID())) != LSCP_OK)
191     m_pMainForm->appendMessagesClient("lscp_destroy_audio_device");
192     break;
193     case qsamplerDevice::Midi:
194 capela 436 if ((ret = ::lscp_destroy_midi_device(m_pClient,
195 capela 433 device.deviceID())) != LSCP_OK)
196     m_pMainForm->appendMessagesClient("lscp_destroy_midi_device");
197     break;
198 capela 436 case qsamplerDevice::None:
199     break;
200 capela 433 }
201    
202     // Show result.
203     if (ret == LSCP_OK) {
204 capela 442 // Show log message before loosing it.
205     m_pMainForm->appendMessages(device.deviceName() + ' '
206     + tr("deleted."));
207 capela 433 // Done.
208 capela 442 delete pItem;
209 capela 433 // Main session should be marked dirty.
210     m_pMainForm->sessionDirty();
211     }
212 capela 428 }
213    
214    
215     // Refresh all device list and views.
216     void qsamplerDeviceForm::refreshDevices (void)
217     {
218 capela 431 // Avoid nested changes.
219     m_iDirtySetup++;
220 capela 428
221     //
222 capela 442 // (Re)Load complete device configuration data ...
223 capela 431 //
224 capela 442 m_pAudioItems = NULL;
225     m_pMidiItems = NULL;
226 capela 431 DeviceListView->clear();
227     if (m_pClient) {
228 capela 429 int *piDeviceIDs;
229 capela 430 // Grab and pop Audio devices...
230 capela 442 m_pAudioItems = new qsamplerDeviceItem(DeviceListView, m_pClient,
231 capela 429 qsamplerDevice::Audio);
232 capela 442 if (m_pAudioItems) {
233     m_pAudioItems->setText(0, tr("Audio"));
234 capela 429 piDeviceIDs = qsamplerDevice::getDevices(m_pClient, qsamplerDevice::Audio);
235     for (int i = 0; piDeviceIDs && piDeviceIDs[i] >= 0; i++) {
236 capela 442 new qsamplerDeviceItem(m_pAudioItems, m_pClient,
237 capela 429 qsamplerDevice::Audio, piDeviceIDs[i]);
238     }
239 capela 442 m_pAudioItems->setOpen(true);
240 capela 428 }
241 capela 430 // Grab and pop MIDI devices...
242 capela 442 m_pMidiItems = new qsamplerDeviceItem(DeviceListView, m_pClient,
243 capela 429 qsamplerDevice::Midi);
244 capela 442 if (m_pMidiItems) {
245     m_pMidiItems->setText(0, tr("MIDI"));
246 capela 429 piDeviceIDs = qsamplerDevice::getDevices(m_pClient, qsamplerDevice::Midi);
247     for (int i = 0; piDeviceIDs && piDeviceIDs[i] >= 0; i++) {
248 capela 442 new qsamplerDeviceItem(m_pMidiItems, m_pClient,
249 capela 429 qsamplerDevice::Midi, piDeviceIDs[i]);
250     }
251 capela 442 m_pMidiItems->setOpen(true);
252 capela 429 }
253 capela 428 }
254    
255 capela 431 // Done.
256 capela 433 m_iDirtySetup--;
257 capela 436
258 capela 433 // Show something.
259 capela 431 selectDevice();
260 capela 428 }
261    
262 capela 430
263     // Driver selection slot.
264     void qsamplerDeviceForm::selectDriver ( const QString& sDriverName )
265     {
266 capela 433 if (m_iDirtySetup > 0)
267 capela 436 return;
268 capela 433
269 capela 430 //
270 capela 442 // Driver name has changed for a new device...
271 capela 430 //
272    
273 capela 431 QListViewItem *pItem = DeviceListView->selectedItem();
274     if (pItem == NULL || pItem->rtti() != QSAMPLER_DEVICE_ITEM)
275     return;
276    
277     qsamplerDevice& device = ((qsamplerDeviceItem *) pItem)->device();
278 capela 436
279     // Driver change is only valid for scratch devices...
280 capela 431 if (m_bNewDevice) {
281 capela 442 m_iDirtySetup++;
282 capela 431 device.setDriver(m_pClient, sDriverName);
283 capela 462 DeviceParamTable->refresh(device.params(), m_bNewDevice);
284 capela 442 m_iDirtySetup--;
285 capela 436 // Done.
286     stabilizeForm();
287 capela 431 }
288 capela 430 }
289    
290    
291 capela 429 // Device selection slot.
292 capela 430 void qsamplerDeviceForm::selectDevice (void)
293 capela 429 {
294 capela 433 if (m_iDirtySetup > 0)
295 capela 436 return;
296 capela 433
297 capela 430 //
298 capela 442 // Device selection has changed...
299 capela 430 //
300 capela 428
301 capela 431 QListViewItem *pItem = DeviceListView->selectedItem();
302 capela 430 if (pItem == NULL || pItem->rtti() != QSAMPLER_DEVICE_ITEM) {
303 capela 436 m_deviceType = qsamplerDevice::None;
304     DeviceNameTextLabel->setText(QString::null);
305     DeviceParamTable->setNumRows(0);
306 capela 463 DevicePortComboBox->setEnabled(false);
307     DevicePortParamTable->setEnabled(false);
308 capela 430 stabilizeForm();
309     return;
310     }
311 capela 429
312 capela 431 qsamplerDevice& device = ((qsamplerDeviceItem *) pItem)->device();
313 capela 436
314 capela 463 m_iDirtySetup++;
315 capela 436 // Flag whether this is a new device.
316 capela 430 m_bNewDevice = (device.deviceID() < 0);
317    
318 capela 433 // Fill the device/driver heading...
319 capela 452 QString sPrefix;
320     if (!m_bNewDevice)
321     sPrefix += device.deviceTypeName() + ' ';
322     DeviceNameTextLabel->setText(sPrefix + device.deviceName());
323 capela 436 // The driver combobox is only rebuilt if device type has changed...
324     if (device.deviceType() != m_deviceType) {
325     DriverNameComboBox->clear();
326     DriverNameComboBox->insertStringList(
327     qsamplerDevice::getDrivers(m_pClient, device.deviceType()));
328     m_deviceType = device.deviceType();
329     }
330     // Do we need a driver name?
331     if (m_bNewDevice || device.driverName().isEmpty())
332     device.setDriver(m_pClient, DriverNameComboBox->currentText());
333 capela 430 const QString& sDriverName = device.driverName();
334 capela 436 if (DriverNameComboBox->listBox()->findItem(sDriverName, Qt::ExactMatch) == NULL)
335     DriverNameComboBox->insertItem(sDriverName);
336     DriverNameComboBox->setCurrentText(sDriverName);
337 capela 430 DriverNameTextLabel->setEnabled(m_bNewDevice);
338     DriverNameComboBox->setEnabled(m_bNewDevice);
339     // Fill the device parameter table...
340 capela 462 DeviceParamTable->refresh(device.params(), m_bNewDevice);
341 capela 463 // And now the device port/channel parameter table...
342     DevicePortComboBox->clear();
343     DevicePortParamTable->setNumRows(0);
344     if (m_bNewDevice) {
345     DevicePortComboBox->setEnabled(false);
346     DevicePortParamTable->setEnabled(false);
347     } else {
348     QPixmap pixmap;
349     switch (device.deviceType()) {
350     case qsamplerDevice::Audio:
351     pixmap = QPixmap::fromMimeSource("audio2.png");
352     break;
353     case qsamplerDevice::Midi:
354     pixmap = QPixmap::fromMimeSource("midi2.png");
355     break;
356     case qsamplerDevice::None:
357     break;
358     }
359     qsamplerDevicePortList& ports = device.ports();
360     qsamplerDevicePort *pPort;
361     for (pPort = ports.first(); pPort; pPort = ports.next()) {
362     DevicePortComboBox->insertItem(pixmap,
363     device.deviceTypeName() + ' ' + pPort->portName());
364     }
365     bool bEnabled = (ports.count() > 0);
366     DevicePortComboBox->setEnabled(bEnabled);
367     DevicePortParamTable->setEnabled(bEnabled);
368     }
369 capela 430 // Done.
370 capela 442 m_iDirtySetup--;
371 capela 463
372     // Make the device port/channel selection effective.
373     selectDevicePort(DevicePortComboBox->currentItem());
374     }
375    
376    
377     // Device port/channel selection slot.
378     void qsamplerDeviceForm::selectDevicePort ( int iPort )
379     {
380     if (m_iDirtySetup > 0)
381     return;
382    
383     //
384     // Device port/channel selection has changed...
385     //
386    
387     QListViewItem *pItem = DeviceListView->selectedItem();
388     if (pItem == NULL || pItem->rtti() != QSAMPLER_DEVICE_ITEM)
389     return;
390    
391     qsamplerDevice& device = ((qsamplerDeviceItem *) pItem)->device();
392     qsamplerDevicePort *pPort = device.ports().at(iPort);
393     if (pPort) {
394     m_iDirtySetup++;
395     DevicePortParamTable->refresh(pPort->params(), true);
396     m_iDirtySetup--;
397     }
398     // Done.
399 capela 430 stabilizeForm();
400 capela 429 }
401    
402    
403 capela 463 // Device parameter value change slot.
404     void qsamplerDeviceForm::changeDeviceParam ( int iRow, int iCol )
405 capela 432 {
406 capela 442 if (m_iDirtySetup > 0)
407 capela 448 return;
408 capela 442 if (iRow < 0 || iCol < 0)
409 capela 448 return;
410    
411 capela 432 //
412 capela 442 // Device parameter change...
413 capela 432 //
414 capela 442
415 capela 432 QListViewItem *pItem = DeviceListView->selectedItem();
416     if (pItem == NULL || pItem->rtti() != QSAMPLER_DEVICE_ITEM)
417     return;
418    
419     qsamplerDevice& device = ((qsamplerDeviceItem *) pItem)->device();
420    
421 capela 463 m_iDirtySetup++;
422 capela 436 // Table 1st column has the parameter name;
423     const QString sParam = DeviceParamTable->text(iRow, 0);
424 capela 433 const QString sValue = DeviceParamTable->text(iRow, iCol);
425 capela 462
426     // Set the local device parameter value.
427     device.setParam(sParam, sValue);
428 capela 432
429 capela 433 // Set proper device parameter, on existing device ...
430     if (device.deviceID() >= 0) {
431     // Prepare parameter struct.
432     lscp_param_t param;
433     param.key = (char *) sParam.latin1();
434     param.value = (char *) sValue.latin1();
435     // Now it depends on the device type...
436 capela 463 bool bRefresh = false;
437 capela 433 lscp_status_t ret = LSCP_FAILED;
438     switch (device.deviceType()) {
439     case qsamplerDevice::Audio:
440 capela 463 bRefresh = (sParam == "CHANNELS");
441 capela 436 if ((ret = ::lscp_set_audio_device_param(m_pClient,
442 capela 433 device.deviceID(), &param)) != LSCP_OK)
443     m_pMainForm->appendMessagesClient("lscp_set_audio_device_param");
444     break;
445     case qsamplerDevice::Midi:
446 capela 463 bRefresh = (sParam == "PORTS");
447 capela 436 if ((ret = ::lscp_set_midi_device_param(m_pClient,
448 capela 433 device.deviceID(), &param)) != LSCP_OK)
449     m_pMainForm->appendMessagesClient("lscp_set_midi_device_param");
450     break;
451 capela 436 case qsamplerDevice::None:
452     break;
453 capela 433 }
454     // Show result.
455     if (ret == LSCP_OK) {
456 capela 442 m_pMainForm->appendMessages(device.deviceName() + ' '
457     + QString("%1: %2.").arg(sParam).arg(sValue));
458 capela 463 // Special care for specific parameter changes...
459     if (bRefresh)
460     device.refresh(m_pClient);
461 capela 433 }
462     }
463 capela 436
464 capela 433 // Done.
465 capela 442 m_iDirtySetup--;
466 capela 432 stabilizeForm();
467 capela 433 // Main session should be dirtier...
468     m_pMainForm->sessionDirty();
469 capela 432 }
470    
471    
472 capela 463 // Device port/channel parameter value change slot.
473     void qsamplerDeviceForm::changeDevicePortParam ( int iRow, int iCol )
474     {
475     if (m_iDirtySetup > 0)
476     return;
477     if (iRow < 0 || iCol < 0)
478     return;
479    
480     //
481     // Device port/channel parameter change...
482     //
483    
484     QListViewItem *pItem = DeviceListView->selectedItem();
485     if (pItem == NULL || pItem->rtti() != QSAMPLER_DEVICE_ITEM)
486     return;
487    
488     qsamplerDevice& device = ((qsamplerDeviceItem *) pItem)->device();
489    
490     int iPort = DevicePortComboBox->currentItem();
491     qsamplerDevicePort *pPort = device.ports().at(iPort);
492     if (pPort == NULL)
493     return;
494    
495     m_iDirtySetup++;
496     // Table 1st column has the parameter name;
497     const QString sParam = DevicePortParamTable->text(iRow, 0);
498     const QString sValue = DevicePortParamTable->text(iRow, iCol);
499    
500     // Set the local device port/channel parameter value.
501     pPort->setParam(sParam, sValue);
502    
503     // Set proper device port/channel parameter, if any...
504     if (device.deviceID() >= 0 && pPort->portID() >= 0) {
505     // Prepare parameter struct.
506     lscp_param_t param;
507     param.key = (char *) sParam.latin1();
508     param.value = (char *) sValue.latin1();
509     // Now it depends on the device type...
510     lscp_status_t ret = LSCP_FAILED;
511     switch (device.deviceType()) {
512     case qsamplerDevice::Audio:
513     if ((ret = ::lscp_set_audio_channel_param(m_pClient,
514     device.deviceID(), pPort->portID(), &param)) != LSCP_OK)
515     m_pMainForm->appendMessagesClient("lscp_set_audio_channel_param");
516     break;
517     case qsamplerDevice::Midi:
518     if ((ret = ::lscp_set_midi_port_param(m_pClient,
519     device.deviceID(), pPort->portID(), &param)) != LSCP_OK)
520     m_pMainForm->appendMessagesClient("lscp_set_midi_port_param");
521     break;
522     case qsamplerDevice::None:
523     break;
524     }
525     // Show result.
526     if (ret == LSCP_OK) {
527     m_pMainForm->appendMessages(device.deviceName() + ' '
528     + pPort->portName() + ' '
529     + QString("%1: %2.").arg(sParam).arg(sValue));
530     }
531     }
532    
533     // Done.
534     m_iDirtySetup--;
535     stabilizeForm();
536     // Main session should be dirtier...
537     m_pMainForm->sessionDirty();
538     }
539    
540    
541 capela 452 // Device list view context menu handler.
542     void qsamplerDeviceForm::contextMenu ( QListViewItem *pItem, const QPoint& pos, int )
543     {
544     int iItemID;
545    
546     // Build the device context menu...
547     QPopupMenu* pContextMenu = new QPopupMenu(this);
548    
549     bool bClient = (m_pClient != NULL);
550     bool bEnabled = (pItem != NULL);
551     iItemID = pContextMenu->insertItem(
552     QIconSet(QPixmap::fromMimeSource("deviceCreate.png")),
553 capela 463 tr("&Create device"), this, SLOT(createDevice()));
554 capela 452 pContextMenu->setItemEnabled(iItemID, bEnabled || (bClient && m_bNewDevice));
555     iItemID = pContextMenu->insertItem(
556     QIconSet(QPixmap::fromMimeSource("deviceDelete.png")),
557 capela 463 tr("&Delete device"), this, SLOT(deleteDevice()));
558 capela 452 pContextMenu->setItemEnabled(iItemID, bEnabled && !m_bNewDevice);
559     pContextMenu->insertSeparator();
560     iItemID = pContextMenu->insertItem(
561     QIconSet(QPixmap::fromMimeSource("formRefresh.png")),
562     tr("&Refresh"), this, SLOT(refreshDevices()));
563     pContextMenu->setItemEnabled(iItemID, bClient);
564    
565     pContextMenu->exec(pos);
566    
567     delete pContextMenu;
568     }
569    
570    
571 capela 426 // Stabilize current form state.
572     void qsamplerDeviceForm::stabilizeForm (void)
573     {
574 capela 431 QListViewItem *pItem = DeviceListView->selectedItem();
575 capela 452 bool bClient = (m_pClient != NULL);
576 capela 431 bool bEnabled = (pItem != NULL);
577 capela 433 DeviceNameTextLabel->setEnabled(bEnabled && !m_bNewDevice);
578     DriverNameTextLabel->setEnabled(bEnabled && m_bNewDevice);
579 capela 430 DriverNameComboBox->setEnabled(bEnabled && m_bNewDevice);
580     DeviceParamTable->setEnabled(bEnabled);
581 capela 452 RefreshDevicesPushButton->setEnabled(bClient);
582     CreateDevicePushButton->setEnabled(bEnabled || (bClient && m_bNewDevice));
583 capela 433 DeleteDevicePushButton->setEnabled(bEnabled && !m_bNewDevice);
584 capela 426 }
585    
586    
587     // end of qsamplerDeviceForm.ui.h
588 capela 463
589    
590    

  ViewVC Help
Powered by ViewVC