Ejemplo n.º 1
0
void K3bMixedJob::start()
{
  jobStarted();

  m_canceled = false;
  m_errorOccuredAndAlreadyReported = false;
  d->copiesDone = 0;
  d->copies = m_doc->copies();
  m_currentAction = PREPARING_DATA;
  d->maxSpeed = false;

  if( m_doc->dummy() )
    d->copies = 1;

  prepareProgressInformation();

  //
  // Check if all files exist
  //
  QValueList<K3bAudioFile*> nonExistingFiles;
  K3bAudioTrack* track = m_doc->audioDoc()->firstTrack();
  while( track ) {
    K3bAudioDataSource* source = track->firstSource();
    while( source ) {
      if( K3bAudioFile* file = dynamic_cast<K3bAudioFile*>( source ) ) {
	if( !QFile::exists( file->filename() ) )
	  nonExistingFiles.append( file );
      }
      source = source->next();
    }
    track = track->next();
  }
  if( !nonExistingFiles.isEmpty() ) {
    if( questionYesNo( "<p>" + i18n("The following files could not be found. Do you want to remove them from the "
				    "project and continue without adding them to the image?") +
		       "<p>" + createNonExistingFilesString( nonExistingFiles, 10 ),
		       i18n("Warning"),
		       i18n("Remove missing files and continue"),
		       i18n("Cancel and go back") ) ) {
      for( QValueList<K3bAudioFile*>::const_iterator it = nonExistingFiles.begin();
	   it != nonExistingFiles.end(); ++it ) {
	delete *it;
      }
    }
    else {
      m_canceled = true;
      emit canceled();
      jobFinished(false);
      return;
    }
  }

  //
  // Make sure the project is not empty
  //
  if( m_doc->audioDoc()->numOfTracks() == 0 ) {
    emit infoMessage( i18n("Please add files to your project first."), ERROR );
    jobFinished(false);
    return;
  }


  // set some flags that are needed
  m_doc->audioDoc()->setOnTheFly( m_doc->onTheFly() );  // for the toc writer
  m_doc->audioDoc()->setHideFirstTrack( false );   // unsupported
  m_doc->dataDoc()->setBurner( m_doc->burner() );  // so the isoImager can read ms data

  emit newTask( i18n("Preparing data") );

  determineWritingMode();

  //
  // First we make sure the data portion is valid
  //

  // we do not have msinfo yet
  m_currentAction = INITIALIZING_IMAGER;
  m_isoImager->setMultiSessionInfo( QString::null );
  m_isoImager->init();
}
Ejemplo n.º 2
0
/***************************************************
 *	Main
 */
int main()
{
	bool rereadDir = false, redrawScr = true, redrawDir = false;

	SystemStartup();

#if (USE_SDCARD == 1)
	rereadDir = true;
	FRESULT fres = f_mount(0, &fatfs);
	if (fres != FR_OK)
	{
		showCriticalStatus(
" Mount SD error [code:%d]\n"
" SD card used for any CNC process\n"
" Only RESET possible at now", fres);
		WAIT_KEY_C();
	}
#elif (USE_SDCARD == 2) && (USE_KEYBOARD != 0)
	FRESULT fres;
#endif

	initSmParam();

	while (1)
	{
		if (SystemProcess() == SYS_READ_FLASH)
			rereadDir = true;

		if (rereadDir)
		{
			rereadDir = false;
			readFileList();
			redrawScr = true;
		}

		if (redrawScr)
		{
			redrawScr = false;
			LCD_Clear(Black);
#if (USE_KEYBOARD == 1)
			win_showMenu(0, 144, 40, 4);
			scr_puts(
				"0 - start gcode   1 - manual mode\n"
				"2 - show gcode    3 - delete file\n"
				"4 - set time      5 - file info\n"
				//"6 - scan mode\t "
				"7 - save conf.file (v1.1)");
#endif
#if (USE_KEYBOARD == 2)
			SetTouchKeys(kbdSelectFile);
#endif
			redrawDir = true;
		}
		if (redrawDir)
		{
			redrawDir = false;
			drawFileList();
		}

		showStatusString();

#if (USE_KEYBOARD != 0)
		switch (kbd_getKey())
		{
		case KEY_A:
			currentFile--;
			redrawDir = true;
			break;
		case KEY_B:
			currentFile++;
			redrawDir = true;
			break;
	#if (USE_KEYBOARD == 1)
		case KEY_STAR:
			currentFile += FILE_LIST_ROWS;
			redrawDir = true;
			break;
		case KEY_DIES:
			currentFile -= FILE_LIST_ROWS;
			redrawDir = true;
			break;
	#endif
	//
	// Start GCode
	//
		case KEY_0:
		{
			FLASH_KEYS();

#if (USE_LCD == 1)
			uint32_t stime;
			stime = Seconds();
#endif
			cnc_gfile(&fileList[currentFile][0], GFILE_MODE_MASK_EXEC);
			while (stepm_inProc())
			{
				scr_fontColor(Yellow, Blue);
				scr_gotoxy(1, 13);
				scr_printf(" remain moves: %d", stepm_getRemainLines());
				scr_clrEndl();
			}
			stepm_EmergeStop();

#if (USE_LCD == 1)
			scr_fontColor(Yellow, Blue);
			scr_gotoxy(0, 13);
			scr_puts("   FINISH. PRESS C-KEY");
			scr_clrEndl();
			
			stime = Seconds() - stime;
			scr_fontColor(Yellow, Blue);
			scr_gotoxy(0, 14);
			scr_printf("   work time: %02d:%02d", stime / 60, stime % 60);
			scr_clrEndl();
#endif
#if (USE_LCD == 2)
			SetTouchKeys(kbdLast2Lines);
#endif
			FLASH_KEYS();
			WAIT_KEY_C();

			redrawScr = true;
			break;
		}
	//
	// Manual Mode
	//
		case KEY_1:
			manualMode();
			redrawScr = true;
			break;
	#if (USE_SDCARD == 1)
	//
	// Show GCode
	//
		case KEY_2:
			FLASH_KEYS();
			cnc_gfile(&fileList[currentFile][0], GFILE_MODE_MASK_SHOW | GFILE_MODE_MASK_CHK);
			scr_printf("\n              PRESS C-KEY");
			FLASH_KEYS();
			while (kbd_getKey() != KEY_C);
			redrawScr = true;
			break;
	//
	// Delete file
	//
		case KEY_3:
			if (questionYesNo("Delete file:\n'%s'?", &fileList[currentFile][0]))
			{
				rereadDir = true;
				f_unlink(&fileList[currentFile][0]);
			}
			else
				redrawScr = true;
			break;
	#endif
	#if (USE_RTC == 1)
	//
	// Set time
	//
		case KEY_4:
			setTime();
			redrawScr = true;
			break;
	//
	// Save conf. file
	//
		case KEY_7:
			win_showMsgWin();
			saveSmParam();
			scr_printf("\n\n\n        PRESS C-KEY");
			WAIT_KEY_C();
			redrawScr = true;
			break;
	#endif
	#if (USE_SDCARD != 0)
	//
	// File info
	//
		case KEY_5:
		{
			FILINFO finf;
			FIL fid;
			int c, n;

			memset(&finf, 0, sizeof(finf));

			win_showMsgWin();
			scr_setScroll(false);
			scr_printf("File:%s", &fileList[currentFile][0]);
			f_stat(&fileList[currentFile][0], &finf);
			scr_gotoxy(0, 1);
			scr_printf("Size:%d\n", (uint32_t)finf.fsize);

			fres = f_open(&fid, &fileList[currentFile][0], FA_READ);
			if (fres != FR_OK)
			{
	#if (USE_SDCARD == 1)
				scr_printf("Error open file: '%s'\nStatus:%d [%d]", &fileList[currentFile][0], fres, SD_errno);
	#elif (USE_SDCARD == 2)
				scr_printf("Error open file: '%s'\nStatus:%d", &fileList[currentFile][0], fres);
	#endif
			}
			else
			{
				char str[150];
				scr_fontColorInvers();
				scr_setScroll(false);
				// Read lines from 3 to 6 from file and display it
				for (n = 2; n < 7 && f_gets(str, sizeof(str), &fid) != NULL; n++)
				{
					scr_gotoxy(0, n);
					scr_puts(str_trim(str));
				}
			}
			scr_fontColorNormal();
			scr_gotoxy(8, 7);
			scr_printf("PRESS C-KEY");
			redrawScr = true;
			do {
				c = kbd_getKey();
				if (c == KEY_B)
				{
					char str[150];
					scr_fontColorInvers();
					for (n = 2; n < 7 && f_gets(str, sizeof(str), &fid) != NULL; n++)
					{
						scr_gotoxy(0, n);
						scr_puts(str_trim(str));
						scr_clrEndl();
					}
				}
			} while (c != KEY_C);
			f_close(&fid);
			rereadDir = true;
		}
		break;
	#endif
		}
#endif
	}
}