Esempio n. 1
0
void IndiWidgetGroup::loadSetup(const QString& setup)
{
  if(setup.isEmpty() or setup == mSetName) return;

  saveSetup();
  mSetName = setup;

  int rowCount;
  SettingsFile sfile(mFullIndiSetsPath + mSetName);
  rowCount = sfile.getIT("IndicatorCount", 1);

  for(int i = 0; (i < mSplitter->count()) and (i < rowCount); ++i)
  {
    static_cast<IndicatorWidget*>(mSplitter->widget(i))->loadSetup(mSetName, i);
  }

  while(mSplitter->count() < rowCount) addWindow();
  while(mSplitter->count() > rowCount) removeWindow();

  mSplitter->restoreState(sfile.getBA("GroupSplitter"));
}
Esempio n. 2
0
int main(int argc, char **argv){

  int ii=0, ans=0, nn=0;
  int det=0;
  char yn[100]="\0";
  int mapLNfill;
  
//  shmSetup();
  mapLNfill = mmapSetup();
  if (mapLNfill == -1) return 0;

/*
  Shared memory creation and attachment
 
//  shmKey = ftok("/Users/c4g/src/LNfill/include/lnfill.conf",'b');       // key unique identifier for shared memory, other programs use 'LN' tag
//  shmKey = ftok("/Users/c4g/src/LNfill/include/lnfill.conf",'b');  // key unique identifier for shared memory, other programs use include this
  shmKey = ftok("include/lnfill.conf",'b');  // key unique identifier for shared memory, other programs use include this
  //  shmKey = ftok("SHM_PATH",'b');                                   // key unique identifier for shared memory, other programs use 'LN' tag
  //  shmKey = ftok("/Users/gross/Desktop/LNfill/LNdata",'b');         // key unique identifier for shared memory, other programs use 'LN' tag
  shmid = shmget(shmKey, sizeof (struct lnfill), 0666); // gets the ID of shared memory, size, permissions, create if necessary by changing to  0666 | IPC_CREAT)
  lnptr = shmat (shmid, (void *)0, 0);                              // now link to area so it can be used; struct lnfill pointer char *lnptr
  if (lnptr == (struct lnfill *)(-1)){                              // check for errors
    perror("shmat");
    exit(EXIT_FAILURE);
  }
*/

  //  printf ("%li = %li\n",shmKey, shmid);
  /*  

  */
  //  printf ("shm size = %li\n",sizeof (struct lnfill) );
  //  printf ("pid = %li\n", lnptr->pid);

  while (ans != 100){
    menu();
    scanf ("%i", &ans);          // read in ans (pointer is indicated)     
 
    switch (ans){
    case 0:                   // end program but not lnfill
      if (munmap(lnptr, sizeof (struct lnfill*)) == -1) {
	perror("Error un-mmapping the file");
      }
      //shmdt(lnptr);           // detach from shared memory segment
      return 0;
      break;

    case 1:                      // display temps and limits
      if (lnptr->command == 8 || lnptr->command == 7 || lnptr->command == 18) break;  // don't force an update
      lnptr->command = 1;        // command (3) stored in SHM so lnfill can do something
      kill(lnptr->pid,SIGALRM);  // send an alarm to let lnfill know it needs to do command (1)
      break;

    case 2:                    // Change limit and timing parameters
      if (lnptr->command == 8 || lnptr->command == 7 || lnptr->command == 18) break;  // don't force an update
      printf (" Which detector do you want to change? 1-20, outside this range to do nothing \n");
      scanf("%i",&det);
      if ((det > 0) && (det < 21)){
      parametersGe(det);
      }
      /*

	printf("Filling interval ? (usually 28800 s (8 hrs.)) \n");
	scanf ("%lf",&zz.interval);
	printf("Filling time max ? (usually 420 s) \n");
	scanf ("%lf",&zz.max);
	printf("Filling time min ? (usually 150 s) \n");
	scanf ("%lf",&zz.min);
	printf("RTD temperature limit ? (usually ~90 or 6 K above coldest value) \n");
	scanf ("%lf",&zz.limit);
	printf("Outlet temperature limit ? (usually ~90 or few degrees below value) \n");
	scanf ("%lf",&zz.limit);

	lnptr->ge[det].interval = zz.interval;
	lnptr->ge[det].max = zz.max;
	lnptr->ge[det].min = zz.min;
	lnptr->ge[det].limit = zz.limit;
	lnptr->ge[det].olimit = zz.olimit;
	lnptr->ge[det].next = time(NULL) + lnptr->ge[det].interval;

	printf("Detector next fill time has been set to %.0lf s from now \n",lnptr->ge[det].interval);

      }
      */
      break;

    case 3:                   // Add or remove detector from system
      activeList();
      break;
/*
      activemax = activeList();
      printf (" Which detector do you want to change? 1-20, outside this range to do nothing \n");
      scanf("%i",&det);
      if ((det > 0) && (det < 21)){
	if (lnptr->ge[det].onoff == 0) {
	  printf("RTD is which U6 channel? (0-13) \n");
	  scanf ("%i",&zz.chanRTD);
	  printf("Overflo is which U6 channel? (0-13) \n");
	  scanf ("%i",&zz.chanOFLO);
	  printf("Filling interval ? (usually 28800 s (8 hrs.)) \n");
	  scanf ("%i",&zz.interval);
	  //	  scanf ("%i",&zz.interval);
	  printf("Filling time max ? (usually 420 s) \n");
	  scanf ("%i",&zz.max);
	  printf("Filling time min ? (usually 150 s) \n");
	  scanf ("%i",&zz.min);
	  printf("RTD temperature limit ? (usually ~90 or 6 K above coldest value) \n");
	  scanf ("%lf",&zz.limit);
	  printf("Outlet temperature limit ? (usually ~90 or few degrees below detector value) \n");
	  scanf ("%lf",&zz.olimit);
	  printf(" %i %i %lf %lf \n", zz.chanRTD, zz.chanOFLO, zz.limit,zz.olimit);
	  zz.onoff = 1;
	  strcpy(zz.status,"OK");
	  lnptr->ge[det] = zz;
	  lnptr->ge[det].next = time(NULL) + lnptr->ge[det].interval;
	  printf("Detector next fill time has been set to %.0lf s from now \n",lnptr->ge[det].interval);

	} 
	else {
	  lnptr->ge[det].onoff = 0;       // turn channel off
	  lnptr->ge[det].chanOFLO = -1;   // set U6 channels to -1
	  lnptr->ge[det].chanRTD = -1;    // set U6 channels to -1
	  strcpy(lnptr->ge[det].status,"OFF");
	}
      }
      //      lnptr->command = 3;        // command (3) stored in SHM so lnfill can do something not needed...user can force a fill

      // do I force an RTD read here or wait up to a minute for the natural read?
      break;
*/
    case 4:                   // display temps and limits
      inactiveList();
      break;

    case 5:                   // Save setup into lnfill.conf
      printf ("Saving current setup into lnfill.conf (hope you made a copy of the old one) ....\n");
      saveSetup();
      break;

    case 7:                   // force fill 1 detector
      if (lnptr->command == 8) {
	printf("Already started a fill ALL ..... returning to menu \n");
	break;
      }
      if (lnptr->command == 7) {
	printf("Already filling a detector .... should have done a fill ALL ..... returning to menu \n");
	break;
      }
      printf ("Which detector do you wish to fill ....  <0 do nothing\n");
      printf ("Det Name  iBar  \n");
      printf ("--- ----  ----  \n");
      for (ii=1; ii < 21; ii++){
	if (lnptr->ge[ii-1].chanIbar >=0) printf ("%2i   %3s   %2i  \n",ii, lnptr->ge[ii-1].name, lnptr->ge[ii-1].chanIbar);
      }
      scanf("%i",&nn);
      if (nn < 0) break;
      lnptr->com1 = nn-1;
      lnptr->command = 8;                         // command (8) stored in SHM to start a fill
      kill(lnptr->pid,SIGALRM);                   // send an alarm to let lnfill know it needs to do command (8)
      // put in detector and value questions
      break;

    case 8:                   // force fill all detectors
      printf ("force fill ALL detectors here....\n");
      if (lnptr->command == 8 || lnptr->command == 7) {
	printf("Already started a fill ALL ..... returning to menu \n");
	break;
      }
      lnptr->com1 = -1;          // fill all flag
      lnptr->command = 8;        // command (8) stored in SHM so lnfill can do something
      kill(lnptr->pid,SIGALRM);  // send an alarm to let lnfill know it needs to do command (8)
      break;

    case 9:                   // do initial cool down of a detector
      printf ("Begin the initial cool down of detectors with next fill 1 hour....\n");
      printf ("Which detector do you wish to fill .... <0 do nothing \n");
      printf ("Det  Name  iBar  \n");
      printf ("---  ----  ----  \n");
      printf (" 0   ALL    --   \n");
      for (ii=1; ii < 21; ii++){
	if (lnptr->ge[ii-1].chanIbar >=0) printf ("%2i   %3s   %2i  \n",ii, lnptr->ge[ii-1].name, lnptr->ge[ii-1].chanIbar);
      }
      scanf("%i",&nn);
      if (nn < 0 || nn > 6) break;
      //      if (nn == 0) lnptr->com1 = -1;
      //      else 
	lnptr->com1 = nn-1;
      lnptr->command = 18;      
      kill(lnptr->pid,SIGALRM);   // send an alarm to let lnfill know it needs to do command (3)
      // put in detector and value questions
      break;

    case 10:                   // Close all valves
      printf ("Closing valves and opening manifold ....\n");
      lnptr->command = ans;  
      kill(lnptr->pid,SIGALRM);  // send an alarm to let lnfill know it needs to do command (10)
      break;

    case 11:                   // Close tanl valve
      printf ("Closing tank ....\n");
      lnptr->command = ans;  
      kill(lnptr->pid,SIGALRM);  // send an alarm to let lnfill know it needs to do command (10)
      break;

    case 12:                   // Open tank valve
      printf ("Opening tank ....\n");
      lnptr->command = ans;  
      kill(lnptr->pid,SIGALRM);  // send an alarm to let lnfill know it needs to do command (10)
      break;

    case 13:                   // Close manifold
      printf ("Closing manifold ....\n");
      lnptr->command = ans;  
      kill(lnptr->pid,SIGALRM);  // send an alarm to let lnfill know it needs to do command (10)
      break;

    case 14:                   // Open manifold
      printf ("Opening manifold ....\n");
      lnptr->command = ans;  
      kill(lnptr->pid,SIGALRM);  // send an alarm to let lnfill know it needs to do command (10)
      break;

    case 15:                   // Close a detector valve
      printf ("Which detector valve do you wish to close ? (1-20 from 1st column) \n");
      for (ii=1; ii < 21; ii++){
	if (lnptr->ge[ii-1].chanIbar >=0) printf ("%2i   %3s   %2i  \n",ii, lnptr->ge[ii-1].name, lnptr->ge[ii-1].chanIbar);
      }
      scanf("%i",&nn);
      lnptr->command = 20 + nn;
      kill(lnptr->pid,SIGALRM);  // send an alarm to let lnfill know it needs to do command (10)
      break;

    case 16:                   // Open a detector valve
      printf ("Which detector valve do you wish to open ? (1-20 from 1st column) \n");
      for (ii=1; ii < 21; ii++){
	if (lnptr->ge[ii-1].chanIbar >=0) printf ("%2i   %3s   %2i  \n",ii, lnptr->ge[ii-1].name, lnptr->ge[ii-1].chanIbar);
      }
      scanf("%i",&nn);
      lnptr->command = 40 + nn;
      kill(lnptr->pid,SIGALRM);  // send an alarm to let lnfill know it needs to do command (10)
      break;

    case 17:                    // Get valve status directly from ibootbar 
      printf ("ibootBar outlet status  \n");
      lnptr->command = 17;
      kill(lnptr->pid,SIGALRM);  // send an alarm to let lnfill know it needs to do command (10)
      break;

    case 18:                   // do initial cool down of a detector

      printf (" Do you really want to reset all alarms?  y/n \n");
      scanf("%s",yn);
      if (strcmp(yn,"Y") == 0 || strcmp(yn,"y") == 0) { 
	//      if (yn == 'Y' || yn == 'y'){
	for (ii=0; ii < 20; ii++){
	  if (lnptr->ge[det].onoff == 1) strcpy(lnptr->ge[ii].status,"OK");
	  else strcpy(lnptr->ge[ii].status,"OFF");
	}
      } else printf ("No alarms were reset");
      /*
      scanf("%1s",&zzz);
      if (strcmp(zzz,"Y") == 0 || strcmp(zzz,"y") == 0) { 
	for (ii=0; ii < 20; ii++){
	  if (lnptr->ge[det].onoff == 1) strcpy(lnptr->ge[ii].status,"OK");
	  else strcpy(lnptr->ge[ii].status,"OFF");
	}
      }
      */
      break;

    case 19:
      if (lnptr->com2 == 0) {
	printf (" Do you really want to toggle the LN HV Emergency Shutdown ON?  y/n \n");
     	scanf("%s",yn);
	if (strcmp(yn,"Y") == 0 || strcmp(yn,"y") == 0) { 
	//	if (yn == 'Y' || yn == 'y'){
	//	scanf("%1s",&zzz);
	  printf (" Turning emergency shutdown ON \n If shutdown occurs you must run bash script to clear events and shutdown!\n");
	  lnptr->com2 = 1;
	  printf (" Emergency shutdown is ON \n");
	}
	else {
	  printf (" Emergency shutdown is staying OFF \n");
	}
      }
      else {
	printf (" Do you really want to toggle the LN Emergency Shutdown OFF?  y/n \n");
     	scanf("%s",yn);
	if (strcmp(yn,"Y") == 0 || strcmp(yn,"y") == 0) { 
	//	char yn = getchar();
	  //	if (yn == 'Y' || yn == 'y'){
	  //	scanf("%1s",&zzz);
	  printf (" Turning emergency shutdown OFF \n You better know that the Ge detectors are COLD! \n And remember to turn it back on when done !\n");
	  lnptr->com2 = 0;
	  printf (" Emergency shutdown is OFF \n");
	}
	else {
	  printf (" Emergency shutdown is staying ON \n");
	}
      }
      break;
	
    case 61:                    // Get valve status directly from ibootbar 
      printf ("Input email addresses  \n");
      addresses();
      if (lnptr->command == 61) kill(lnptr->pid,SIGALRM);
      break;

    case 100:                 // End ALL lnfill programs
      break;

    default:                  // Do nothing and go back to the list of options
      ans = 0;
      break;      
    }  
  }

/*
   Wrap up the program ending the lnfill-u6, detaching and getting rid of the shared memory segment
*/  
  lnptr->command=-1;
  kill(lnptr->pid,SIGALRM);

/*
   Release the shared memory and close the U3

*/
  if (munmap(lnptr, sizeof (struct lnfill*)) == -1) {
    perror("Error un-mmapping the file");
/* Decide here whether to close(fd) and exit() or not. Depends... */
  }
  close(mapLNfill);
/*
  shmdt(lnptr);                      // detach from shared memory segment
  shmctl(shmid, IPC_RMID, NULL);     // remove the shared memory segment hopefully forever
*/
  return 0;
}
Esempio n. 3
0
/*!
    \fn SimpleSynthGui::SimpleSynthGui()
 */
SimpleSynthGui::SimpleSynthGui()
{
   SS_TRACE_IN
         setupUi(this);
   simplesynthgui_ptr = this;
   pluginGui = new SS_PluginGui(this);
   pluginGui->hide();

   for (int i=0; i<SS_NR_OF_CHANNELS; i++) {
      channelButtonGroups[i] = new QGroupBox(this);
      //            channelButtonGroups[i]->setMinimumSize(SS_BTNGRP_WIDTH, SS_BTNGRP_HEIGHT);
      channelButtonGroups[i]->setTitle(QString::number(i + 1));

      QString name = QString("volumeSlider");
      name.append(i + 1);

      channelLayout->addWidget(channelButtonGroups[i]);

      QVBoxLayout* inchnlLayout = new QVBoxLayout(channelButtonGroups[i]); //, 2, 0, "channelinternallayout");
      inchnlLayout->setAlignment(Qt::AlignHCenter);
      inchnlLayout->setSpacing(1);
      inchnlLayout->setMargin(0);


      onOff[i] = new QChannelCheckbox(channelButtonGroups[i], i);
      //            onOff[i]->setMinimumSize(SS_ONOFF_WIDTH, SS_ONOFF_HEIGHT);
      onOff[i]->setToolTip("Channel " + QString::number(i + 1) + " on/off");
      inchnlLayout->addWidget(onOff[i]);
      connect(onOff[i], SIGNAL(channelState(int, bool)), SLOT(channelOnOff(int, bool)));

      ///volumeSliders[i] = new QInvertedChannelSlider(Qt::Vertical, i, channelButtonGroups[i]);
      // By Tim. p4.0.27 Inverted was not correct type. Maybe was work in progress, rest of code was not converted yet?
      QHBoxLayout *volLayout = new QHBoxLayout(channelButtonGroups[i]);

      volumeSliders[i] = new QChannelSlider(Qt::Vertical, i, channelButtonGroups[i]);

      volumeSliders[i]->setMinimum(SS_VOLUME_MIN_VALUE);
      volumeSliders[i]->setMaximum(SS_VOLUME_MAX_VALUE);

      ///volumeSliders[i]->setValue(SS_VOLUME_MAX_VALUE - SS_VOLUME_DEFAULT_VALUE);
      volumeSliders[i]->setValue(SS_VOLUME_DEFAULT_VALUE);  // p4.0.27

      //            volumeSliders[i]->setMinimumSize(SS_VOLSLDR_WIDTH, SS_VOLSLDR_LENGTH);
      volumeSliders[i]->setToolTip("Volume, channel " + QString::number(i + 1));
      //            setMinimumSize(SS_VOLSLDR_WIDTH, SS_VOLSLDR_LENGTH);
      volLayout->addWidget(volumeSliders[i]);

      chnMeter[i] = new MusEGui::Meter(channelButtonGroups[i]);
      chnMeter[i]->setFixedWidth(9);
      chnMeter[i]->setVal(0.0, 0.0, false);
      meterVal[i] = peakVal[i] = 0.0;
      chnMeter[i]->setRange(MusEGlobal::config.minMeter, 10.0);
      chnMeter[i]->show();
      volLayout->addWidget(chnMeter[i]);

      inchnlLayout->addLayout(volLayout);
      //inchnlLayout->addWidget(volumeSliders[i]);
      connect(volumeSliders[i], SIGNAL(valueChanged(int, int)), SLOT(volumeChanged(int, int)));

      pitchKnobs[i] = new QChannelDial(channelButtonGroups[i], i, 0);
      pitchKnobs[i]->setRange(-63,63);
      pitchKnobs[i]->setValue(0);
      pitchKnobs[i]->setToolTip("Pitch, channel " + QString::number(i + 1));
      pitchKnobs[i]->setFixedSize(30,30);
      inchnlLayout->addWidget(pitchKnobs[i]);
      connect(pitchKnobs[i], SIGNAL(valueChanged(int,int,int)), SLOT(pitchChanged(int,int, int)));


      nOffLabel[i] = new QLabel(channelButtonGroups[i]);
      nOffLabel[i]->setText("nOff");
      inchnlLayout->addWidget(nOffLabel[i]);

      nOffIgnore[i] = new QChannelCheckbox(channelButtonGroups[i], i);
      nOffIgnore[i]->setToolTip("Note off ignore, channel " + QString::number(i + 1));
      inchnlLayout->addWidget(nOffIgnore[i]);
      connect(nOffIgnore[i], SIGNAL(channelState(int, bool)),SLOT(channelNoteOffIgnore(int, bool)));

      panSliders[i] = new QChannelSlider(Qt::Horizontal, i, channelButtonGroups[i]);
      panSliders[i]->setRange(0, 127);
      panSliders[i]->setValue(SS_PANSLDR_DEFAULT_VALUE);
      panSliders[i]->setToolTip("Pan, channel " + QString::number(i + 1));
      inchnlLayout->addWidget(panSliders[i]);
      connect(panSliders[i], SIGNAL(valueChanged(int, int)), SLOT(panChanged(int, int)));

      QGridLayout* dialGrid = new QGridLayout;
      inchnlLayout->addLayout(dialGrid);
      sendFxDial[i][0] = new QChannelDial(channelButtonGroups[i], i, 0);
      sendFxDial[i][0]->setRange(0, 127);
      sendFxDial[i][0]->setMaximumSize(SS_SENDFX_WIDTH, SS_SENDFX_HEIGHT);
      sendFxDial[i][0]->setToolTip("Fx 1 send amount");
      dialGrid->addWidget(sendFxDial[i][0], 0, 0, Qt::AlignCenter | Qt::AlignTop);

      connect(sendFxDial[i][0], SIGNAL(valueChanged(int, int, int)), SLOT(sendFxChanged(int, int, int)));

      sendFxDial[i][1] = new QChannelDial(channelButtonGroups[i], i, 1);
      sendFxDial[i][1]->setRange(0, 127);
      dialGrid->addWidget(sendFxDial[i][1], 0, 1, Qt::AlignCenter | Qt::AlignTop);
      sendFxDial[i][1]->setMaximumSize(SS_SENDFX_WIDTH, SS_SENDFX_HEIGHT);
      sendFxDial[i][1]->setToolTip("Fx 2 send amount");

      connect(sendFxDial[i][1], SIGNAL(valueChanged(int, int, int)), SLOT(sendFxChanged(int, int, int)));

      sendFxDial[i][2] = new QChannelDial(channelButtonGroups[i], i, 2);
      sendFxDial[i][2]->setRange(0, 127);
      sendFxDial[i][2]->setMaximumSize(SS_SENDFX_WIDTH, SS_SENDFX_HEIGHT);
      dialGrid->addWidget(sendFxDial[i][2], 1, 0, Qt::AlignCenter | Qt::AlignTop);
      sendFxDial[i][2]->setToolTip("Fx 3 send amount");
      connect(sendFxDial[i][2], SIGNAL(valueChanged(int, int, int)), SLOT(sendFxChanged(int, int, int)));

      sendFxDial[i][3] = new QChannelDial(channelButtonGroups[i], i, 3);
      sendFxDial[i][3]->setRange(0, 127);
      sendFxDial[i][3]->setMaximumSize(SS_SENDFX_WIDTH, SS_SENDFX_HEIGHT);
      sendFxDial[i][3]->setToolTip("Fx 4 send amount");

      dialGrid->addWidget(sendFxDial[i][3], 1, 1, Qt::AlignCenter | Qt::AlignTop);
      connect(sendFxDial[i][3], SIGNAL(valueChanged(int, int, int)), SLOT(sendFxChanged(int, int, int)));

      chnRoutingCb[i] = new QComboBox(channelButtonGroups[i]);
      chnRoutingCb[i]->addItem(tr("Mix"), QVariant(0));
      chnRoutingCb[i]->addItem(tr("Chn"), QVariant(1));
      chnRoutingCb[i]->setMaximumSize(SS_PANSLDR_WIDTH, SS_PANSLDR_LENGTH);
      chnRoutingCb[i]->setToolTip(tr("Channel routing"));
      QFont chnRFont;
      chnRFont.setPointSize(6);
      chnRoutingCb[i]->setFont(chnRFont);
      connect(chnRoutingCb[i], SIGNAL(currentIndexChanged(int)), this, SLOT(routeChanged(int)));
      inchnlLayout->addWidget(chnRoutingCb[i]);

      inchnlLayout->activate();
   }

   masterSlider = new QSlider(Qt::Vertical, this);
   masterSlider->setToolTip("Master volume");
   channelLayout->addWidget(masterSlider);
   masterSlider->setRange(0, 127);
   masterSlider->setValue((int)(SS_MASTERVOL_DEFAULT_VALUE*SS_VOLUME_MAX_VALUE)); // p4.0.27

   connect(masterSlider, SIGNAL(valueChanged(int)), SLOT(masterVolChanged(int)));  // p4.0.27


   int i=0;

   for (int c=0; c<2; c++) {
      for (int r=0; r<SS_NR_OF_CHANNELS/2; r++) {
         QHBoxLayout* strip = new QHBoxLayout;
         mgbLayout->addLayout(strip, r, c);

         QLabel* channelLabel = new QLabel(QString::number(i + 1) + ": (" +labelStrings[i] + ")", mainGroupBox);
         strip->addWidget(channelLabel);

         sampleNameLineEdit[i] = new QLineEdit(mainGroupBox);
         sampleNameLineEdit[i]->setReadOnly(true);
         sampleNameLineEdit[i]->setFixedWidth(180);
         strip->addWidget(sampleNameLineEdit[i]);

         loadSampleButton[i] = new QChannelButton(mainGroupBox, "L", i);
         loadSampleButton[i]->setToolTip("Load sample on channel " + QString::number(i + 1));
         loadSampleButton[i]->setFixedSize(23,23);
         strip->addWidget(loadSampleButton[i]);
         connect(loadSampleButton[i], SIGNAL(channelState(int, bool)), SLOT(loadSampleDialogue(int)));

         clearSampleButton[i] = new QChannelButton(mainGroupBox, "C", i);
         clearSampleButton[i]->setToolTip("Clear sample on channel " + QString::number(i + 1));
         clearSampleButton[i]->setFixedSize(23,23);
         strip->addWidget(clearSampleButton[i]);
         connect(clearSampleButton[i], SIGNAL(channelState(int, bool)), SLOT(clearSample(int)));
         i++;
      }
   }

   // Right bottom panel:
   QGroupBox* rbPanel= new QGroupBox(mainGroupBox);
   mgbLayout->addWidget(rbPanel, 1, 3, 7, 1, Qt::AlignCenter);
   QGridLayout* rbLayout = new QGridLayout(rbPanel);

   openPluginsButton = new QPushButton("&Send Effects");
   openPluginsButton->setToolTip("Configure LADSPA send effects");
   connect(openPluginsButton, SIGNAL(clicked()), SLOT(openPluginButtonClicked()));
   rbLayout->addWidget(openPluginsButton, 2, 1, Qt::AlignCenter | Qt::AlignVCenter);
   rbLayout->setSpacing(0);
   rbLayout->setMargin(0);
   aboutButton = new QPushButton("About SimpleDrums");
   connect(aboutButton, SIGNAL(clicked()), SLOT(aboutButtonClicked()));
   rbLayout->addWidget(aboutButton, 4, 1, Qt::AlignLeft | Qt::AlignVCenter);


   loadButton = new QPushButton(tr("&Load setup"), rbPanel);
   connect(loadButton, SIGNAL(clicked()), SLOT(loadSetup()));
   saveButton = new QPushButton(tr("&Save setup"), rbPanel);
   connect(saveButton, SIGNAL(clicked()), SLOT(saveSetup()));
   rbLayout->addWidget(loadButton,  3, 1, Qt::AlignCenter | Qt::AlignVCenter);
   rbLayout->addWidget(saveButton,  4, 1, Qt::AlignCenter | Qt::AlignVCenter);
   rbLayout->addWidget(aboutButton, 6, 1, Qt::AlignCenter | Qt::AlignVCenter);

   lastDir = "";
   //Connect socketnotifier to fifo
   QSocketNotifier* s = new QSocketNotifier(readFd, QSocketNotifier::Read);
   connect(s, SIGNAL(activated(int)), SLOT(readMessage(int)));

   //connect heartBeat timer (for channel meters)
   connect(MusEGlobal::heartBeatTimer, SIGNAL(timeout()), SLOT(heartBeat()));

   SS_TRACE_OUT
}
Esempio n. 4
0
IndiWidgetGroup::~IndiWidgetGroup()
{
  saveSetup();
  delete mSplitter;
  if(mBars) delete mBars;
}