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

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

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 429 by capela, Tue Mar 8 14:56:05 2005 UTC revision 452 by capela, Sun Mar 13 22:06:59 2005 UTC
# Line 2  Line 2 
2  //  //
3  // ui.h extension file, included from the uic-generated form implementation.  // ui.h extension file, included from the uic-generated form implementation.
4  /****************************************************************************  /****************************************************************************
5     Copyright (C) 2004-2005, rncbc aka Rui Nuno Capela. All rights reserved.     Copyright (C) 2005, rncbc aka Rui Nuno Capela. All rights reserved.
6    
7     This program is free software; you can redistribute it and/or     This program is free software; you can redistribute it and/or
8     modify it under the terms of the GNU General Public License     modify it under the terms of the GNU General Public License
# Line 23  Line 23 
23  #include <qmessagebox.h>  #include <qmessagebox.h>
24  #include <qfiledialog.h>  #include <qfiledialog.h>
25  #include <qfileinfo.h>  #include <qfileinfo.h>
26    #include <qlistbox.h>
27    #include <qpopupmenu.h>
28    
29  #include "qsamplerMainForm.h"  #include "qsamplerMainForm.h"
30    
# Line 32  Line 34 
34  // Kind of constructor.  // Kind of constructor.
35  void qsamplerDeviceForm::init (void)  void qsamplerDeviceForm::init (void)
36  {  {
37      // Initialize locals.          // Initialize locals.
38      m_pMainForm   = (qsamplerMainForm *) QWidget::parentWidget();          m_pMainForm   = (qsamplerMainForm *) QWidget::parentWidget();
39      m_pClient     = NULL;          m_pClient     = NULL;
40          m_iDirtySetup = 0;          m_iDirtySetup = 0;
41      m_iDirtyCount = 0;          m_bNewDevice  = false;
42      m_iUntitled   = 1;          m_deviceType  = qsamplerDevice::None;
43            m_pAudioItems = NULL;
44      // Try to restore normal window positioning.          m_pMidiItems  = NULL;
45      adjustSize();  
46            // This an outsider (from designer), but rather important.
47            QObject::connect(DeviceParamTable, SIGNAL(valueChanged(int,int)),
48                    this, SLOT(changeValue(int,int)));
49            
50            // Try to restore normal window positioning.
51            adjustSize();
52  }  }
53    
54    
# Line 53  void qsamplerDeviceForm::destroy (void) Line 61  void qsamplerDeviceForm::destroy (void)
61  // Notify our parent that we're emerging.  // Notify our parent that we're emerging.
62  void qsamplerDeviceForm::showEvent ( QShowEvent *pShowEvent )  void qsamplerDeviceForm::showEvent ( QShowEvent *pShowEvent )
63  {  {
64      if (m_pMainForm)          if (m_pMainForm)
65          m_pMainForm->stabilizeForm();                  m_pMainForm->stabilizeForm();
66    
67      stabilizeForm();          stabilizeForm();
68    
69      QWidget::showEvent(pShowEvent);          QWidget::showEvent(pShowEvent);
70  }  }
71    
72    
73  // Notify our parent that we're closing.  // Notify our parent that we're closing.
74  void qsamplerDeviceForm::hideEvent ( QHideEvent *pHideEvent )  void qsamplerDeviceForm::hideEvent ( QHideEvent *pHideEvent )
75  {  {
76      QWidget::hideEvent(pHideEvent);          QWidget::hideEvent(pHideEvent);
77    
78      if (m_pMainForm)          if (m_pMainForm)
79          m_pMainForm->stabilizeForm();                  m_pMainForm->stabilizeForm();
80  }  }
81    
82    
# Line 77  void qsamplerDeviceForm::setClient ( lsc Line 85  void qsamplerDeviceForm::setClient ( lsc
85  {  {
86          // If it has not changed, do nothing.          // If it has not changed, do nothing.
87          if (m_pClient && m_pClient == pClient)          if (m_pClient && m_pClient == pClient)
88              return;                  return;
89    
90          // Set new reference.          // Set new reference.
91          m_pClient = pClient;          m_pClient = pClient;
# Line 87  void qsamplerDeviceForm::setClient ( lsc Line 95  void qsamplerDeviceForm::setClient ( lsc
95  }  }
96    
97    
98  // Format the displayable device configuration filename.  // Create a new device from current table view.
99  QString qsamplerDeviceForm::devicesName ( const QString& sFilename )  void qsamplerDeviceForm::createDevice (void)
100  {  {
101      QString sDevicesName = sFilename;          QListViewItem *pItem = DeviceListView->selectedItem();
102      qsamplerOptions *pOptions = m_pMainForm->options();          if (pItem == NULL || pItem->rtti() != QSAMPLER_DEVICE_ITEM)
103      if (pOptions) {                  return;
104          bool bCompletePath = (pOptions && pOptions->bCompletePath);  
105          if (sDevicesName.isEmpty())          qsamplerDevice& device = ((qsamplerDeviceItem *) pItem)->device();
106                  sDevicesName = tr("Untitled") + QString::number(m_iUntitled);  
107          else if (!bCompletePath)          // Build the parameter list...
108                  sDevicesName = QFileInfo(sDevicesName).fileName();          qsamplerDeviceParamMap& params = device.params();
109            lscp_param_t *pParams = new lscp_param_t [params.count() + 1];
110            int iParam = 0;
111            qsamplerDeviceParamMap::ConstIterator iter;
112            for (iter = params.begin(); iter != params.end(); ++iter) {
113                    pParams[iParam].key   = (char *) iter.key().latin1();
114                    pParams[iParam].value = (char *) iter.data().value.latin1();
115                    ++iParam;
116            }
117            // Null terminated.
118            pParams[iParam].key   = NULL;
119            pParams[iParam].value = NULL;
120    
121            // Now it depends on the device type...
122            qsamplerDeviceItem *pRootItem = NULL;
123            int iDeviceID = -1;
124            switch (device.deviceType()) {
125            case qsamplerDevice::Audio:
126                    pRootItem = m_pAudioItems;
127                    if ((iDeviceID = ::lscp_create_audio_device(m_pClient,
128                                    device.driverName().latin1(), pParams)) < 0)
129                            m_pMainForm->appendMessagesClient("lscp_create_audio_device");
130                    break;
131            case qsamplerDevice::Midi:
132                    pRootItem = m_pMidiItems;
133                    if ((iDeviceID = ::lscp_create_midi_device(m_pClient,
134                                    device.driverName().latin1(), pParams)) < 0)
135                            m_pMainForm->appendMessagesClient("lscp_create_midi_device");
136                    break;
137            case qsamplerDevice::None:
138                    break;
139          }          }
     return sDevicesName;  
 }  
   
   
 // Window close event handlers.  
 bool qsamplerDeviceForm::queryClose (void)  
 {  
     bool bQueryClose = true;  
140    
141      if (m_iDirtyCount > 0) {          // Free used parameter array.
142          switch (QMessageBox::warning(this, tr("Warning"),          delete pParams;
             tr("The device configuration has been changed.\n\n"  
                "\"%1\"\n\n"  
                "Do you want to save the changes?")  
                            .arg(devicesName(m_sFilename)),  
             tr("Save"), tr("Discard"), tr("Cancel"))) {  
         case 0:     // Save...  
             saveDevices();  
             // Fall thru....  
         case 1:     // Discard  
             break;  
         default:    // Cancel.  
             bQueryClose = false;  
         }  
     }  
143    
144      return bQueryClose;          // We're on to create the new device item.
145            if (iDeviceID >= 0) {
146                    // Append the new device item.
147                    qsamplerDeviceItem *pDeviceItem = new qsamplerDeviceItem(pRootItem,
148                            m_pClient, device.deviceType(), iDeviceID);
149                    // Just make it the new selection...
150                    DeviceListView->setSelected(pDeviceItem, true);
151                    // Done.
152                    m_pMainForm->appendMessages(pDeviceItem->device().deviceName() + ' '
153                            + tr("created."));
154                    // Main session should be marked dirty.
155                    m_pMainForm->sessionDirty();
156            }
157  }  }
158    
159    
160    // Delete current device in table view.
161  // Dirty up settings.  void qsamplerDeviceForm::deleteDevice (void)
 void qsamplerDeviceForm::contentsChanged (void)  
162  {  {
163      if (m_iDirtySetup > 0)          QListViewItem *pItem = DeviceListView->selectedItem();
164          return;          if (pItem == NULL || pItem->rtti() != QSAMPLER_DEVICE_ITEM)
165                    return;
166    
167            qsamplerDevice& device = ((qsamplerDeviceItem *) pItem)->device();
168    
169            // Prompt user if this is for real...
170            qsamplerOptions *pOptions = m_pMainForm->options();
171            if (pOptions && pOptions->bConfirmRemove) {
172                    if (QMessageBox::warning(this, tr("Warning"),
173                            tr("Delete %1 device:\n\n"
174                            "%2\n\n"
175                            "Are you sure?")
176                            .arg(device.deviceTypeName())
177                            .arg(device.deviceName()),
178                            tr("OK"), tr("Cancel")) > 0)
179                            return;
180            }
181    
182      m_iDirtyCount++;          // Now it depends on the device type...
183      stabilizeForm();          lscp_status_t ret = LSCP_FAILED;
184            switch (device.deviceType()) {
185            case qsamplerDevice::Audio:
186                    if ((ret = ::lscp_destroy_audio_device(m_pClient,
187                                    device.deviceID())) != LSCP_OK)
188                            m_pMainForm->appendMessagesClient("lscp_destroy_audio_device");
189                    break;
190            case qsamplerDevice::Midi:
191                    if ((ret = ::lscp_destroy_midi_device(m_pClient,
192                                    device.deviceID())) != LSCP_OK)
193                            m_pMainForm->appendMessagesClient("lscp_destroy_midi_device");
194                    break;
195            case qsamplerDevice::None:
196                    break;
197            }
198    
199            // Show result.
200            if (ret == LSCP_OK) {
201                    // Show log message before loosing it.
202                    m_pMainForm->appendMessages(device.deviceName() + ' '
203                            + tr("deleted."));
204                    // Done.
205                    delete pItem;
206                    // Main session should be marked dirty.
207                    m_pMainForm->sessionDirty();
208            }
209  }  }
210    
211    
212  // Load device configuration slot.  // Refresh all device list and views.
213  void qsamplerDeviceForm::loadDevices (void)  void qsamplerDeviceForm::refreshDevices (void)
214  {  {
215      QString sFilename = QFileDialog::getOpenFileName(          // Avoid nested changes.
216              m_sFilename,                                    // Start here.          m_iDirtySetup++;
             tr("Device Configuration files") + " (*.lscp)", // Filter (XML files)  
             this, 0,                                        // Parent and name (none)  
             tr("Load Device Configuration")                 // Caption.  
     );  
217    
218      if (sFilename.isEmpty())          //
219          return;          // (Re)Load complete device configuration data ...
220            //
221            m_pAudioItems = NULL;
222            m_pMidiItems = NULL;
223            DeviceListView->clear();
224            if (m_pClient) {
225                    int *piDeviceIDs;
226                    // Grab and pop Audio devices...
227                    m_pAudioItems = new qsamplerDeviceItem(DeviceListView, m_pClient,
228                            qsamplerDevice::Audio);
229                    if (m_pAudioItems) {
230                            m_pAudioItems->setText(0, tr("Audio"));
231                            piDeviceIDs = qsamplerDevice::getDevices(m_pClient, qsamplerDevice::Audio);
232                            for (int i = 0; piDeviceIDs && piDeviceIDs[i] >= 0; i++) {
233                                    new qsamplerDeviceItem(m_pAudioItems, m_pClient,
234                                            qsamplerDevice::Audio, piDeviceIDs[i]);
235                            }
236                            m_pAudioItems->setOpen(true);
237                    }
238                    // Grab and pop MIDI devices...
239                    m_pMidiItems = new qsamplerDeviceItem(DeviceListView, m_pClient,
240                            qsamplerDevice::Midi);
241                    if (m_pMidiItems) {
242                            m_pMidiItems->setText(0, tr("MIDI"));
243                            piDeviceIDs = qsamplerDevice::getDevices(m_pClient, qsamplerDevice::Midi);
244                            for (int i = 0; piDeviceIDs && piDeviceIDs[i] >= 0; i++) {
245                                    new qsamplerDeviceItem(m_pMidiItems, m_pClient,
246                                            qsamplerDevice::Midi, piDeviceIDs[i]);
247                            }
248                            m_pMidiItems->setOpen(true);
249                    }
250            }
251    
252      // Check if we're going to discard safely the current one...          // Done.
253      if (!queryClose())          m_iDirtySetup--;
         return;  
254    
255      // Load it right away...          // Show something.
256      loadDevicesFile(sFilename);          selectDevice();
257  }  }
258    
259    
260  // Save device configuration slot.  // Driver selection slot.
261  void qsamplerDeviceForm::saveDevices (void)  void qsamplerDeviceForm::selectDriver ( const QString& sDriverName )
262  {  {
263      QString sFilename = QFileDialog::getSaveFileName(          if (m_iDirtySetup > 0)
264              m_sFilename,                                    // Start here.                  return;
             tr("Device Configuration files") + " (*.lscp)", // Filter (XML files)  
             this, 0,                                        // Parent and name (none)  
             tr("Save Device Configuration")                 // Caption.  
     );  
   
     if (sFilename.isEmpty())  
         return;  
265    
266      // Enforce .xml extension...          //
267      if (QFileInfo(sFilename).extension().isEmpty())          //  Driver name has changed for a new device...
268          sFilename += ".lscp";          //
269    
270      // Save it right away...          QListViewItem *pItem = DeviceListView->selectedItem();
271      saveDevicesFile(sFilename);          if (pItem == NULL || pItem->rtti() != QSAMPLER_DEVICE_ITEM)
272                    return;
273    
274            qsamplerDevice& device = ((qsamplerDeviceItem *) pItem)->device();
275    
276            // Driver change is only valid for scratch devices...
277            if (m_bNewDevice) {
278                    m_iDirtySetup++;
279                    device.setDriver(m_pClient, sDriverName);
280                    DeviceParamTable->refresh(device);
281                    m_iDirtySetup--;
282                    // Done.
283                    stabilizeForm();
284            }
285  }  }
286    
287    
288  // Load device configuration from file.  // Device selection slot.
289  void qsamplerDeviceForm::loadDevicesFile ( const QString& sFilename )  void qsamplerDeviceForm::selectDevice (void)
290  {  {
291            if (m_iDirtySetup > 0)
292                    return;
293    
294          //          //
295      // TODO: Load device configuration from file...          //  Device selection has changed...
296          //          //
         m_pMainForm->appendMessages("qsamplerDeviceForm::loadDevicesFile(\"" + sFilename + "\")...");  
   
         m_sFilename   = sFilename;  
         m_iDirtyCount = 0;  
297    
298          refreshDevices();          QListViewItem *pItem = DeviceListView->selectedItem();
299  }          if (pItem == NULL || pItem->rtti() != QSAMPLER_DEVICE_ITEM) {
300                    m_deviceType = qsamplerDevice::None;
301                    DeviceNameTextLabel->setText(QString::null);
302                    DeviceParamTable->setNumRows(0);
303                    stabilizeForm();
304                    return;
305            }
306    
307            m_iDirtySetup++;
308            qsamplerDevice& device = ((qsamplerDeviceItem *) pItem)->device();
309    
310  // Save device configuration into file.          // Flag whether this is a new device.
311  void qsamplerDeviceForm::saveDevicesFile ( const QString& sFilename )          m_bNewDevice = (device.deviceID() < 0);
 {  
         //  
     // TODO: Save device configuration into file...  
     //  
         m_pMainForm->appendMessages("qsamplerDeviceForm::saveDevicesFile(\"" + sFilename + "\")...");  
312    
313          m_sFilename   = sFilename;          // Fill the device/driver heading...
314          m_iDirtyCount = 0;          QString sPrefix;
315            if (!m_bNewDevice)
316                    sPrefix += device.deviceTypeName() + ' ';
317            DeviceNameTextLabel->setText(sPrefix + device.deviceName());
318            // The driver combobox is only rebuilt if device type has changed...
319            if (device.deviceType() != m_deviceType) {
320                    DriverNameComboBox->clear();
321                    DriverNameComboBox->insertStringList(
322                            qsamplerDevice::getDrivers(m_pClient, device.deviceType()));
323                    m_deviceType = device.deviceType();
324            }
325            // Do we need a driver name?
326            if (m_bNewDevice || device.driverName().isEmpty())
327                    device.setDriver(m_pClient, DriverNameComboBox->currentText());
328            const QString& sDriverName = device.driverName();
329            if (DriverNameComboBox->listBox()->findItem(sDriverName, Qt::ExactMatch) == NULL)
330                    DriverNameComboBox->insertItem(sDriverName);
331            DriverNameComboBox->setCurrentText(sDriverName);
332            DriverNameTextLabel->setEnabled(m_bNewDevice);
333            DriverNameComboBox->setEnabled(m_bNewDevice);
334            // Fill the device parameter table...
335            DeviceParamTable->refresh(device);
336            // Done.
337            m_iDirtySetup--;
338          stabilizeForm();          stabilizeForm();
339  }  }
340    
341    
342  // Create a new device from current table view.  // parameter value change slot.
343  void qsamplerDeviceForm::createDevice (void)  void qsamplerDeviceForm::changeValue ( int iRow, int iCol )
344  {  {
345            if (m_iDirtySetup > 0)
346                    return;
347            if (iRow < 0 || iCol < 0)
348                    return;
349                    
350          //          //
351      // TODO: Create a new device from current table view...          //  Device parameter change...
     //  
         m_pMainForm->appendMessages("qsamplerDeviceForm::createDevice()...");  
 }  
   
   
 // Update current device in table view.  
 void qsamplerDeviceForm::updateDevice (void)  
 {  
352          //          //
     // TODO: Update current device in table view...  
     //  
         m_pMainForm->appendMessages("qsamplerDeviceForm::updateDevice()...");  
 }  
   
353    
354  // Delete current device in table view.          QListViewItem *pItem = DeviceListView->selectedItem();
355  void qsamplerDeviceForm::deleteDevice (void)          if (pItem == NULL || pItem->rtti() != QSAMPLER_DEVICE_ITEM)
356  {                  return;
357          //  
358      // TODO: Delete current device in table view...          m_iDirtySetup++;
359      //          qsamplerDevice& device = ((qsamplerDeviceItem *) pItem)->device();
360          m_pMainForm->appendMessages("qsamplerDeviceForm::deleteDevice()...");  
361  }          // Table 1st column has the parameter name;
362            qsamplerDeviceParamMap& params = device.params();
363            const QString sParam = DeviceParamTable->text(iRow, 0);
364  // Refresh all device list and views.          const QString sValue = DeviceParamTable->text(iRow, iCol);
365  void qsamplerDeviceForm::refreshDevices (void)          params[sParam].value = sValue;
366  {  
367      // Avoid nested changes.          // Set proper device parameter, on existing device ...
368      m_iDirtySetup++;          if (device.deviceID() >= 0) {
369                    // Prepare parameter struct.
370          //                  lscp_param_t param;
371      // TODO: Load device configuration data ...                  param.key   = (char *) sParam.latin1();
372      //                  param.value = (char *) sValue.latin1();
373                        // Now it depends on the device type...
374          m_pMainForm->appendMessages("qsamplerDeviceForm::refreshDevices()");                  lscp_status_t ret = LSCP_FAILED;
375                    switch (device.deviceType()) {
376      DeviceListView->clear();                  case qsamplerDevice::Audio:
377      if (m_pClient) {                          if ((ret = ::lscp_set_audio_device_param(m_pClient,
378                  qsamplerDeviceItem *pItem;                                          device.deviceID(), &param)) != LSCP_OK)
379                  int *piDeviceIDs;                                  m_pMainForm->appendMessagesClient("lscp_set_audio_device_param");
380                  // Grab audio devices...                          break;
381          pItem = new qsamplerDeviceItem(DeviceListView, m_pClient,                  case qsamplerDevice::Midi:
382                          qsamplerDevice::Audio);                          if ((ret = ::lscp_set_midi_device_param(m_pClient,
383          if (pItem) {                                          device.deviceID(), &param)) != LSCP_OK)
384                          pItem->setText(0, tr("Audio"));                                  m_pMainForm->appendMessagesClient("lscp_set_midi_device_param");
385                          piDeviceIDs = qsamplerDevice::getDevices(m_pClient, qsamplerDevice::Audio);                          break;
386                          for (int i = 0; piDeviceIDs && piDeviceIDs[i] >= 0; i++) {                  case qsamplerDevice::None:
387                              new qsamplerDeviceItem(pItem, m_pClient,                          break;
                                         qsamplerDevice::Audio, piDeviceIDs[i]);  
                         }  
388                  }                  }
389                  // Grab MIDI devices...                  // Show result.
390          pItem = new qsamplerDeviceItem(DeviceListView, m_pClient,                  if (ret == LSCP_OK) {
391                          qsamplerDevice::Midi);                          m_pMainForm->appendMessages(device.deviceName() + ' '
392          if (pItem) {                                  + QString("%1: %2.").arg(sParam).arg(sValue));
                         pItem->setText(0, tr("MIDI"));  
                         piDeviceIDs = qsamplerDevice::getDevices(m_pClient, qsamplerDevice::Midi);  
                         for (int i = 0; piDeviceIDs && piDeviceIDs[i] >= 0; i++) {  
                             new qsamplerDeviceItem(pItem, m_pClient,  
                                         qsamplerDevice::Midi, piDeviceIDs[i]);  
                         }  
393                  }                  }
394          }          }
395    
396      // Done.          // Done.
397      m_iDirtySetup--;          m_iDirtySetup--;
398  //  stabilizeForm();          stabilizeForm();
399            // Main session should be dirtier...
400            m_pMainForm->sessionDirty();
401  }  }
402    
403  // Device selection slot.  
404  void qsamplerDeviceForm::selectDevice ( QListViewItem *pItem )  // Device list view context menu handler.
405    void qsamplerDeviceForm::contextMenu ( QListViewItem *pItem, const QPoint& pos, int )
406  {  {
407          if (pItem == NULL)          int iItemID;
408              return;          
409          if (pItem->rtti() != QSAMPLER_DEVICE_ITEM)          // Build the device context menu...
410              return;          QPopupMenu* pContextMenu = new QPopupMenu(this);
411            
412          m_pMainForm->appendMessages("qsamplerDeviceForm::selectDevice(" + pItem->text(0) + ")");          bool bClient = (m_pClient != NULL);
413            bool bEnabled = (pItem != NULL);
414          const qsamplerDevice& device = ((qsamplerDeviceItem *) pItem)->device();          iItemID = pContextMenu->insertItem(
415          DeviceParamTable->setDevice(m_pClient,                  QIconSet(QPixmap::fromMimeSource("deviceCreate.png")),
416              device.deviceType(), device.deviceID());                  tr("&Create"), this, SLOT(createDevice()));
417            pContextMenu->setItemEnabled(iItemID, bEnabled || (bClient && m_bNewDevice));
418            iItemID = pContextMenu->insertItem(
419                    QIconSet(QPixmap::fromMimeSource("deviceDelete.png")),
420                    tr("&Delete"), this, SLOT(deleteDevice()));
421            pContextMenu->setItemEnabled(iItemID, bEnabled && !m_bNewDevice);
422            pContextMenu->insertSeparator();
423            iItemID = pContextMenu->insertItem(
424                    QIconSet(QPixmap::fromMimeSource("formRefresh.png")),
425                    tr("&Refresh"), this, SLOT(refreshDevices()));
426            pContextMenu->setItemEnabled(iItemID, bClient);
427            
428            pContextMenu->exec(pos);
429            
430            delete pContextMenu;
431  }  }
432    
433    
434  // Stabilize current form state.  // Stabilize current form state.
435  void qsamplerDeviceForm::stabilizeForm (void)  void qsamplerDeviceForm::stabilizeForm (void)
436  {  {
437      // Update the main caption...          QListViewItem *pItem = DeviceListView->selectedItem();
438      QString sDevicesName = devicesName(m_sFilename);          bool bClient = (m_pClient != NULL);
439      if (m_iDirtyCount > 0)          bool bEnabled = (pItem != NULL);
440          sDevicesName += '*';          DeviceNameTextLabel->setEnabled(bEnabled && !m_bNewDevice);
441      setCaption(tr("Devices - [%1]").arg(sDevicesName));          DriverNameTextLabel->setEnabled(bEnabled &&  m_bNewDevice);
442            DriverNameComboBox->setEnabled(bEnabled && m_bNewDevice);
443          //          DeviceParamTable->setEnabled(bEnabled);
444          // TODO: Enable/disable available command buttons.          RefreshDevicesPushButton->setEnabled(bClient);
445          //          CreateDevicePushButton->setEnabled(bEnabled || (bClient && m_bNewDevice));
446          m_pMainForm->appendMessages("qsamplerDeviceForm::stabilizeForm()");          DeleteDevicePushButton->setEnabled(bEnabled && !m_bNewDevice);
   
     SaveDevicesPushButton->setEnabled(m_iDirtyCount > 0);  
       
     CreateDevicePushButton->setEnabled(m_iDirtyCount > 0);  
     UpdateDevicePushButton->setEnabled(m_iDirtyCount > 0);  
     DeleteDevicePushButton->setEnabled(m_iDirtyCount > 0);  
447  }  }
448    
449    
450  // end of qsamplerDeviceForm.ui.h  // end of qsamplerDeviceForm.ui.h
   

Legend:
Removed from v.429  
changed lines
  Added in v.452

  ViewVC Help
Powered by ViewVC