bool LLFilePickerBase::getMultipleLoadFiles(ELoadFilter filter, std::string const& folder)
{
	if( mLocked )
		return FALSE;

	bool success = FALSE;

	OSStatus	error = noErr;

	reset();
	
	mNavOptions.optionFlags |= kNavAllowMultipleFiles;
	{
		error = doNavChooseDialog(filter, folder);
	}
	if (error == noErr)
	{
		if (getFileCount())
			success = true;
		if (getFileCount() > 1)
			mLocked = TRUE;
	}

	return success;
}
Example #2
0
BOOL LLFilePicker::getMultipleOpenFiles(ELoadFilter filter)
{
	if( mLocked )
		return FALSE;

	BOOL success = FALSE;

	OSStatus	error = noErr;

	reset();
	
	mNavOptions.optionFlags |= kNavAllowMultipleFiles;
	// Modal, so pause agent
	send_agent_pause();
	{
		error = doNavChooseDialog(filter);
	}
	send_agent_resume();
	if (error == noErr)
	{
		if (getFileCount())
			success = true;
		if (getFileCount() > 1)
			mLocked = TRUE;
	}

	// Account for the fact that the app has been stalled.
	LLFrameTimer::updateFrameTime();
	return success;
}
Example #3
0
BOOL LLFilePicker::getSaveFile(ESaveFilter filter, const std::string& filename)
{
	if( mLocked )
		return FALSE;
	BOOL success = FALSE;
	OSStatus	error = noErr;

	reset();
	
	mNavOptions.optionFlags &= ~kNavAllowMultipleFiles;

	// Modal, so pause agent
	send_agent_pause();
	{
		error = doNavSaveDialog(filter, filename);
	}
	send_agent_resume();
	if (error == noErr)
	{
		if (getFileCount())
			success = true;
	}

	// Account for the fact that the app has been stalled.
	LLFrameTimer::updateFrameTime();
	return success;
}
Example #4
0
BOOL LLFilePicker::getOpenFile(ELoadFilter filter)
{
	if( mLocked )
		return FALSE;

	BOOL success = FALSE;

	OSStatus	error = noErr;
	
	reset();
	
	mNavOptions.optionFlags &= ~kNavAllowMultipleFiles;

	if(filter == FFLOAD_ALL)	// allow application bundles etc. to be traversed; important for DEV-16869, but generally useful
	{
		// mNavOptions.optionFlags |= kNavAllowOpenPackages;
		mNavOptions.optionFlags |= kNavSupportPackages;
	}
	
	// Modal, so pause agent
	send_agent_pause();
	{
		error = doNavChooseDialog(filter);
	}
	send_agent_resume();
	if (error == noErr)
	{
		if (getFileCount())
			success = true;
	}

	// Account for the fact that the app has been stalled.
	LLFrameTimer::updateFrameTime();
	return success;
}
// <FS:CR Threaded Filepickers>
//BOOL LLFilePicker::getSaveFile(ESaveFilter filter, const std::string& filename)
BOOL LLFilePicker::getSaveFile(ESaveFilter filter, const std::string& filename, bool blocking)
// </FS:CR Threaded Filepickers>
{
	if( mLocked )
		return FALSE;
	BOOL success = FALSE;
	OSStatus	error = noErr;

	// if local file browsing is turned off, return without opening dialog
	if ( check_local_file_access_enabled() == false )
	{
		return FALSE;
	}

	reset();
	
	mNavOptions.optionFlags &= ~kNavAllowMultipleFiles;

	// Modal, so pause agent
	send_agent_pause();
	{
		error = doNavSaveDialog(filter, filename);
	}
	send_agent_resume();
	if (error == noErr)
	{
		if (getFileCount())
			success = true;
	}

	// Account for the fact that the app has been stalled.
	LLFrameTimer::updateFrameTime();
	return success;
}
size_t DirectoryListing::Directory::getTotalFileCount(bool adl) {
    size_t x = getFileCount();
    for(Iter i = directories.begin(); i != directories.end(); ++i) {
        if(!(adl && (*i)->getAdls()))
            x += (*i)->getTotalFileCount(adls);
    }
    return x;
}
Example #7
0
BOOL LLFilePicker::getOpenFile( ELoadFilter filter, bool blocking )
{
	BOOL rtn = FALSE;

	// if local file browsing is turned off, return without opening dialog
	if ( check_local_file_access_enabled() == false )
	{
		return FALSE;
	}

	gViewerWindow->getWindow()->beforeDialog();

	reset();
	
	GtkWindow* picker = buildFilePicker(false, false, "openfile");

	if (picker)
	{
		std::string caption = LLTrans::getString("load_file_verb") + " ";
		std::string filtername = "";
		switch (filter)
		{
		case FFLOAD_WAV:
			filtername = add_wav_filter_to_gtkchooser(picker);
			break;
		case FFLOAD_ANIM:
			filtername = add_anim_filter_to_gtkchooser(picker);
			break;
		case FFLOAD_COLLADA:
			filtername = add_collada_filter_to_gtkchooser(picker);
			break;
		case FFLOAD_IMAGE:
			filtername = add_imageload_filter_to_gtkchooser(picker);
			break;
		case FFLOAD_SCRIPT:
			filtername = add_script_filter_to_gtkchooser(picker);
			break;
		case FFLOAD_DICTIONARY:
			filtername = add_dictionary_filter_to_gtkchooser(picker);
			break;
		default:;
			break;
		}

		caption += filtername;
		
		gtk_window_set_title(GTK_WINDOW(picker), caption.c_str());

		gtk_widget_show_all(GTK_WIDGET(picker));
		gtk_main();

		rtn = (getFileCount() == 1);
	}

	gViewerWindow->getWindow()->afterDialog();

	return rtn;
}
// <FS:CR Threaded Filepickers>
//BOOL LLFilePicker::getMultipleOpenFiles(ELoadFilter filter)
BOOL LLFilePicker::getMultipleOpenFiles(ELoadFilter filter, bool blocking)
// </FS:CR Threaded Filepickers>
{
	if( mLocked )
		return FALSE;

	BOOL success = FALSE;

	// if local file browsing is turned off, return without opening dialog
	if ( check_local_file_access_enabled() == false )
	{
		return FALSE;
	}

	OSStatus	error = noErr;

	reset();
	
	mNavOptions.optionFlags |= kNavAllowMultipleFiles;
	// Modal, so pause agent
// <FS:CR Threaded Filepickers>
	{
		send_agent_pause();
	}
// </FS:CR Threaded Filepickers>
	{
		error = doNavChooseDialog(filter);
	}
// <FS:CR Threaded Filepickers>
	{
		send_agent_resume();
	}
// </FS:CR Threaded Filepickers>
	if (error == noErr)
	{
		if (getFileCount())
			success = true;
		if (getFileCount() > 1)
			mLocked = true;
	}

	// Account for the fact that the app has been stalled.
	LLFrameTimer::updateFrameTime();
	return success;
}
Example #9
0
const std::string LLFilePicker::getNextFile()
{
	if (mCurrentFile >= getFileCount())
	{
		mLocked = FALSE;
		return std::string();
	}
	else
	{
		return mFiles[mCurrentFile++];
	}
}
const std::string LLFilePicker::getCurFile()
{
	if (mCurrentFile >= getFileCount())
	{
		mLocked = false;
		return std::string();
	}
	else
	{
		return mFiles[mCurrentFile];
	}
}
BOOL LLFilePicker::getOpenFile(ELoadFilter filter, bool blocking)
{
	if( mLocked )
		return FALSE;

	BOOL success = FALSE;

	// if local file browsing is turned off, return without opening dialog
	if ( check_local_file_access_enabled() == false )
	{
		return FALSE;
	}

	OSStatus	error = noErr;
	
	reset();
	
	mNavOptions.optionFlags &= ~kNavAllowMultipleFiles;

	if(filter == FFLOAD_ALL)	// allow application bundles etc. to be traversed; important for DEV-16869, but generally useful
	{
		// mNavOptions.optionFlags |= kNavAllowOpenPackages;
		mNavOptions.optionFlags |= kNavSupportPackages;
	}
	
	if (blocking)
	{
		// Modal, so pause agent
		send_agent_pause();
	}

	{
		error = doNavChooseDialog(filter);
	}
	
	if (error == noErr)
	{
		if (getFileCount())
			success = true;
	}

	if (blocking)
	{
		send_agent_resume();
		// Account for the fact that the app has been stalled.
		LLFrameTimer::updateFrameTime();
	}

	return success;
}
Example #12
0
BOOL LLFilePicker::getOpenFile( ELoadFilter filter )
{
	BOOL rtn = FALSE;

	gViewerWindow->mWindow->beforeDialog();

	reset();
	
	GtkWindow* picker = buildFilePicker(false, false, "openfile");

	if (picker)
	{
		std::string caption = LLTrans::getString("load_file_verb") + " ";
		std::string filtername = "";
		switch (filter)
		{
		case FFLOAD_WAV:
			filtername = add_wav_filter_to_gtkchooser(picker);
			break;
		case FFLOAD_ANIM:
			filtername = add_bvh_filter_to_gtkchooser(picker);
			break;
		case FFLOAD_IMAGE:
			filtername = add_imageload_filter_to_gtkchooser(picker);
			break;
		case FFLOAD_XML:
			filtername = add_xml_filter_to_gtkchooser(picker);
			break;
		case FFLOAD_CSV:
			filtername = add_csv_filter_to_gtkchooser(picker);
			break;
		default:;
			break;
		}

		caption += filtername;
		
		gtk_window_set_title(GTK_WINDOW(picker), caption.c_str());

		gtk_widget_show_all(GTK_WIDGET(picker));
		gtk_main();

		rtn = (getFileCount() == 1);
	}

	gViewerWindow->mWindow->afterDialog();

	return rtn;
}
bool LLFilePickerBase::getSaveFile(ESaveFilter filter, std::string const& filename, std::string const& folder)
{
	if( mLocked )
		return FALSE;
	bool success = FALSE;
	OSStatus	error = noErr;

	reset();
	
	mNavOptions.optionFlags &= ~kNavAllowMultipleFiles;

	{
		error = doNavSaveDialog(filter, filename, folder);
	}
	if (error == noErr)
	{
		if (getFileCount())
			success = true;
	}

	return success;
}
BOOL LLFilePicker::getSaveFile( ESaveFilter filter, const std::string& filename, bool blocking )
{
	BOOL rtn = FALSE;

	// if local file browsing is turned off, return without opening dialog
	if ( check_local_file_access_enabled() == false )
	{
		return FALSE;
	}

	gViewerWindow->getWindow()->beforeDialog();

	reset();
	
	GtkWindow* picker = buildFilePicker(true, false, "savefile");

	if (picker)
	{
		std::string suggest_name = "untitled";
		std::string suggest_ext = "";
		std::string caption = LLTrans::getString("save_file_verb") + " ";
		switch (filter)
		{
		case FFSAVE_WAV:
			caption += add_wav_filter_to_gtkchooser(picker);
			suggest_ext = ".wav";
			break;
		case FFSAVE_TGA:
			caption += add_simple_pattern_filter_to_gtkchooser
				(picker, "*.tga", LLTrans::getString("targa_image_files") + " (*.tga)");
			suggest_ext = ".tga";
			break;
		case FFSAVE_BMP:
			caption += add_simple_mime_filter_to_gtkchooser
				(picker, "image/bmp", LLTrans::getString("bitmap_image_files") + " (*.bmp)");
			suggest_ext = ".bmp";
			break;
		case FFSAVE_AVI:
			caption += add_simple_mime_filter_to_gtkchooser
				(picker, "video/x-msvideo",
				 LLTrans::getString("avi_movie_file") + " (*.avi)");
			suggest_ext = ".avi";
			break;
		case FFSAVE_ANIM:
			caption += add_simple_pattern_filter_to_gtkchooser
				(picker, "*.xaf", LLTrans::getString("xaf_animation_file") + " (*.xaf)");
			suggest_ext = ".xaf";
			break;
		case FFSAVE_XML:
			caption += add_simple_pattern_filter_to_gtkchooser
				(picker, "*.xml", LLTrans::getString("xml_file") + " (*.xml)");
			suggest_ext = ".xml";
			break;
		case FFSAVE_RAW:
			caption += add_simple_pattern_filter_to_gtkchooser
				(picker, "*.raw", LLTrans::getString("raw_file") + " (*.raw)");
			suggest_ext = ".raw";
			break;
		case FFSAVE_J2C:
			caption += add_simple_mime_filter_to_gtkchooser
				(picker, "images/jp2",
				 LLTrans::getString("compressed_image_files") + " (*.j2c)");
			suggest_ext = ".j2c";
			break;
		case FFSAVE_SCRIPT:
			caption += add_script_filter_to_gtkchooser(picker);
			suggest_ext = ".lsl";
			break;
// <FS:CR> Export filter
		case FFSAVE_EXPORT:
			caption += add_export_filter_to_gtkchooser(picker);
			suggest_ext = ".oxp";
			break;
// </FS:CR>
		default:;
			break;
		}
		
		gtk_window_set_title(GTK_WINDOW(picker), caption.c_str());

		if (filename.empty())
		{
			suggest_name += suggest_ext;

			gtk_file_chooser_set_current_name
				(GTK_FILE_CHOOSER(picker),
				 suggest_name.c_str());
		}
		else
		{
			gtk_file_chooser_set_current_name
				(GTK_FILE_CHOOSER(picker), filename.c_str());
		}

		gtk_widget_show_all(GTK_WIDGET(picker));
		gtk_main();

		rtn = (getFileCount() == 1);
	}

	gViewerWindow->getWindow()->afterDialog();

	return rtn;
}
bool LLFilePickerBase::getSaveFile(ESaveFilter filter, std::string const& filename, std::string const& folder)
{
	bool rtn = FALSE;

	//gViewerWindow->mWindow->beforeDialog();

	reset();
	
	GtkWindow* picker = buildFilePicker(true, false, folder);

	if (picker)
	{
		std::string suggest_name = "untitled";
		std::string suggest_ext = "";
		std::string caption = LLTrans::getString("save_file_verb") + " ";
		switch (filter)
		{
		case FFSAVE_WAV:
			caption += add_wav_filter_to_gtkchooser(picker);
			suggest_ext = ".wav";
			break;
		case FFSAVE_TGA:
			caption += add_simple_pattern_filter_to_gtkchooser
				(picker, "*.tga", LLTrans::getString("targa_image_files") + " (*.tga)");
			suggest_ext = ".tga";
			break;
		case FFSAVE_BMP:
			caption += add_simple_mime_filter_to_gtkchooser
				(picker, "image/bmp", LLTrans::getString("bitmap_image_files") + " (*.bmp)");
			suggest_ext = ".bmp";
			break;
		case FFSAVE_AVI:
			caption += add_simple_mime_filter_to_gtkchooser
				(picker, "video/x-msvideo",
				 LLTrans::getString("avi_movie_file") + " (*.avi)");
			suggest_ext = ".avi";
			break;
		case FFSAVE_ANIM:
			caption += add_simple_pattern_filter_to_gtkchooser
				(picker, "*.xaf", LLTrans::getString("xaf_animation_file") + " (*.xaf)");
			suggest_ext = ".xaf";
			break;
		case FFSAVE_XML:
			caption += add_simple_pattern_filter_to_gtkchooser
				(picker, "*.xml", LLTrans::getString("xml_file") + " (*.xml)");
			suggest_ext = ".xml";
			break;
		case FFSAVE_RAW:
			caption += add_simple_pattern_filter_to_gtkchooser
				(picker, "*.raw", LLTrans::getString("raw_file") + " (*.raw)");
			suggest_ext = ".raw";
			break;
		case FFSAVE_J2C:
			caption += add_simple_mime_filter_to_gtkchooser
				(picker, "images/jp2",
				 LLTrans::getString("compressed_image_files") + " (*.j2c)");
			suggest_ext = ".j2c";
			break;
		default:;
			break;
		}
		
		gtk_window_set_title(GTK_WINDOW(picker), caption.c_str());

		if (filename.empty())
		{
			suggest_name += suggest_ext;

			gtk_file_chooser_set_current_name
				(GTK_FILE_CHOOSER(picker),
				 suggest_name.c_str());
		}
		else
		{
			gtk_file_chooser_set_current_name
				(GTK_FILE_CHOOSER(picker), filename.c_str());
		}

		gtk_widget_show_all(GTK_WIDGET(picker));
		PLS_FLUSH;
		gtk_main();

		rtn = (getFileCount() == 1);
	}

	//gViewerWindow->mWindow->afterDialog();

	return rtn;
}
Example #16
0
INT32 _dpsLogFilter::doParse()
{
   INT32 rc     = SDB_OK ;
   BOOLEAN Open = FALSE ;
   CHAR dstFile[ OSS_MAX_PATHSIZE + 1 ] = { 0 } ; 
   OSSFILE fileFrom, fileTo ;

   if( isDir( _cmdData->dstPath ) )
   {
      INT32 len = ossStrlen( _cmdData->dstPath ) ;
      if ( OSS_FILE_SEP_CHAR == _cmdData->dstPath[ len - 1 ] )
      {
         ossSnprintf( dstFile, OSS_MAX_PATHSIZE, "%s%s",
            _cmdData->dstPath, "tmpLog.log" ) ; 
      }
      else
      {
         ossSnprintf( dstFile, OSS_MAX_PATHSIZE, "%s"OSS_FILE_SEP"%s",
            _cmdData->dstPath, "tmpLog.log" ) ;
      }
   }
   else
   {
      ossSnprintf( dstFile, OSS_MAX_PATHSIZE, "%s",
                   _cmdData->dstPath ) ;
   }

   if( !_cmdData->output )
   {
      rc = ossOpen( dstFile, OSS_REPLACE | OSS_READWRITE, 
                    OSS_RU | OSS_WU | OSS_RG, fileTo ) ;
      if( rc )
      {
         printf( "Unable to open file: %s\n", dstFile ) ;
         goto error ;
      }
      Open = TRUE ;
   }

   if ( SDB_LOG_FILTER_META == _filter->getType() )
   {
      rc = _filter->doFilte( _cmdData, fileTo, NULL ) ;
      if( rc )
      {
         goto error ;
      }
      goto done ;
   }

   if( isDir( _cmdData->srcPath ) )
   {
      if( SDB_LOG_FILTER_LAST == _filter->getType() )
      {
         printf( "Error: Cannot specify a dir path when using --last/-e\n" );
         rc = SDB_INVALIDARG ;
         goto error ;
      }

      INT32 const MAX_FILE_COUNT = getFileCount( _cmdData->srcPath ) ;
      if( 0 >= MAX_FILE_COUNT )
      {
         printf( "Cannot find any Log files\nPlease check"
                 " and input the correct log file path\n" ) ;
         rc = SDB_INVALIDPATH ;
         goto error ;
      }

      for( INT32 idx = 0 ; idx < MAX_FILE_COUNT ; ++idx )
      {
         fs::path fileDir( _cmdData->srcPath ) ;
         const CHAR *filepath = fileDir.string().c_str() ;
         CHAR filename[ OSS_MAX_PATHSIZE * 2 ] = { 0 } ;
         ossSnprintf( filename, OSS_MAX_PATHSIZE, "%s/sequoiadbLog.%d",
                      filepath, idx ) ;

         if( !isFileExisted( filename ) )
         {
            rc = SDB_INVALIDPATH ;
            goto error ;
         }

         rc = _filter->doFilte( _cmdData, fileTo, filename ) ;
         if( rc && idx != MAX_FILE_COUNT - 1 )
         {
            rc = SDB_OK ;
            continue ;
         }
      }
   }
   else
   {
      if( !isFileExisted( _cmdData->srcPath ) )
      {
         rc = SDB_INVALIDPATH ;
         goto error ;
      }

      rc = _filter->doFilte( _cmdData, fileTo, _cmdData->srcPath ) ;
      if( rc )
      {
         goto error ;
      }
   }

done:
   if( Open )
   {
      ossClose( fileTo ) ;
   }
   return rc ;

error:
   goto done ;
}
Example #17
0
	void ZipFile::GetFileCount(const ValueList& args, KValueRef result)
	{
		result->SetDouble(getFileCount());
	}
Example #18
0
void SortDriver::run(int argc, char** argv)
{
		
	if(argc == 5)
	{
		std::string sort = argv[2]; 
		std::string filename = argv[3];

		if(areParametersValid(sort, filename))
		{
		
			int nums; 
			std::string outfileName = argv[4];

			std::ifstream read(filename);
			nums = getFileCount(read);
	
			int* array = createArray(read, nums);
			int* array2 = new int[nums]; 
			
		
			std::ofstream write(outfileName);
			double time; 
				
			if(sort == "-bubble")
			{	
				time = Sorts<int>::sortTimer(Sorts<int>::bubbleSort, array, nums);
				write << "bubble " << nums << " " << time;
			}
			else if(sort == "-insertion")
			{
				time = Sorts<int>::sortTimer(Sorts<int>::insertionSort, array, nums);
				write << "insertion " << nums << " " << time;
			}
			else if(sort == "-selection")
			{
				time = Sorts<int>::sortTimer(Sorts<int>::selectionSort, array, nums);
				write << "selection " << nums << " " << time;
			}
			else if(sort == "-merge")
			{
				time = Sorts<int>::sortTimer(Sorts<int>::mergeSort, array, nums);
				write << "merge " << nums << " " << time;
			}
			else if(sort == "-quick")
			{
				time = Sorts<int>::sortTimer(Sorts<int>::quickSort, array, nums);
				write << "quick " << nums << " " << time;
			}
			else if(sort == "-quick3")
			{
				time = Sorts<int>::sortTimer(Sorts<int>::quickSortWithMedian, array, nums);
				write << "quick3 " << nums << " " << time;
			}
			else if(sort == "-all")
			{
				copyArray(array, array2, nums);
				time = Sorts<int>::sortTimer(Sorts<int>::bubbleSort, array, nums);
				write<<"bubble "<<nums<< " "<<time;
				
				write<<"\n";
				copyArray(array2, array, nums);
				time = Sorts<int>::sortTimer(Sorts<int>::insertionSort, array, nums);
				write<<"insertion "<<nums<< " "<<time;
				
				write << "\n";
				copyArray(array, array2, nums);
				time = Sorts<int>::sortTimer(Sorts<int>::selectionSort, array, nums);
				write<<"selection "<<nums<<" "<<time;
				
				write << "\n";
				copyArray(array2, array, nums);
				time = Sorts<int>::sortTimer(Sorts<int>::mergeSort, array, nums);
				write<<"merge "<<nums<<" "<<time;
				
				write << "\n";
				copyArray(array, array2, nums);
				time = Sorts<int>::sortTimer(Sorts<int>::quickSort, array, nums);
				write<<"quick "<<nums<<" "<<time;
				
				write << "\n";
				copyArray(array2, array, nums);
				time = Sorts<int>::sortTimer(Sorts<int>::quickSortWithMedian, array, nums);
				write<<"quick3 "<<nums<<" "<<time;
			}	

      //prevent memory leaks
		write.close();			
		delete array;
		delete array2;
		array=nullptr; 
    array2=nullptr;
		
		}
	}
	else
	{
		printHelpMenu();
	}
}
Example #19
0
LRESULT CRaidAnalyzerDlg::OnShowCuttingDialog(WPARAM wParam, LPARAM lParam)
{
	//UINT iCurrentStep = 0;
	//CCuttingSectorsDlg *pCuttingDialog = new CCuttingSectorsDlg(this,0);
	//pCuttingDialog->Create(CCuttingSectorsDlg::IDD);
	//pCuttingDialog->ShowWindow(SW_SHOW);
	//
	//ShowWindow(SW_HIDE);
	CString defaultString = _T("1000");
	CString strReport = _T("");
	CString strTextOut = _T("");
	CString strStep = _T("");
	CDiskOrder *pDiskOrder = NULL;
	CDiskNumber *pDiskNumber = NULL;
	CNewOrder *pNewOrder = NULL;
	auto setting = settings::CSettings::getSetting();
	CString strWorkingDirectory( setting->getWorkFolder().c_str() );
	INT_PTR iDlgResult = 0;


	CString strCreatePath = _T("");
	// S T E P
	UINT iCurrentStep = 0;
	CDriveReader *pDriveReader = NULL;
	CFileCreater *pFileCreater = NULL;
	CCuttingSectorsDlg *pCuttingDialog = NULL;
	CJGShear *pJpgShear = NULL;
	CMapBlocks *pMapBlock = NULL;
	CDataBlock *pBlockData = NULL;
	CJPGChunk *pJpgChunk = NULL;
	CompositeSTEP *pComposite = NULL;
	BOOL bError = FALSE;
	BOOL bFinishJPG = FALSE;
	CString strError = _T("");
	DWORD dwBlockSize = 0;
	DWORD dwSectorCount = 0;
	LONGLONG lJPGPosition = 0;
	LONGLONG lShearPos = 0;
	LONGLONG lReadPosition = 0;
	BYTE *pDataBuffer = NULL;
	BYTE iDiskNumber = 0;
	NUMBER_POS NumberDiskPosition = {0};
	UINT iFileNumber = 0;
	DWORD dwSize = 0;
	BOOL isNextDisk = FALSE;
	CString strHeader = _T("");

	pDiskOrder = new CDiskOrder();
	pComposite = new CompositeSTEP(0);
	pMapBlock = new CMapBlocks();
	UINT iMinBlockSize = 0;
	DWORD bytesPerSector = SECTOR_SIZE;

	while (true)
	{
		bytesPerSector = SECTOR_SIZE;
		// Creating Directory...
		strCreatePath = Utility::getDirectoryPath(strWorkingDirectory,iCurrentStep);
		bError = Utility::CreateStepDirectory(strCreatePath);
		if (bError == FALSE)
		{
			strError = _T("Error Create Directory..");
			break;
		}

		strStep.Format(_T("\r\nS T E P #%d\r\n"),iCurrentStep);
		m_ReportLog->AddText(strStep);

		switch (iCurrentStep)
		{
		/*------------------******************------------------*/
			//Select File 1Mb to Determine "Continue work" -->>...
		/*------------------******************------------------*/
		case enContinue:
			/*SuspendThreads();*/
			//pMapBlock = new CMapBlocks();
			//pDiskOrder = new CDiskOrder();
			//pComposite = new CompositeSTEP(0);
			pCuttingDialog = new CCuttingSectorsDlg(this,iCurrentStep);
			pCuttingDialog->setHeader(_T("[Определения файла]"));
			strTextOut = _T("Введите номер файла для начала работы.");
			pCuttingDialog->setTextData(strTextOut);
			pCuttingDialog->setStateProgram(m_enStateProgram);
			iDlgResult = pCuttingDialog->DoModal();
			//pCuttingDialog->Create(CCuttingSectorsDlg::IDD);
			//pCuttingDialog->ShowWindow(SW_SHOW);
			if (iDlgResult == ID_YES)
			{
			m_enStateProgram = pCuttingDialog->getStatProgram();
			NumberDiskPosition = pCuttingDialog->getDiskNumberPos();
			lJPGPosition = NumberDiskPosition.m_lLBAPosition;
			iDiskNumber = NumberDiskPosition.m_iDiskNumber;

			pDiskNumber = new CDiskNumber();
			pDiskNumber->setDiskDrive(m_vecSelDrives.at(iDiskNumber));
			pDiskOrder->Add(pDiskNumber);
			//// Log ...
			//m_ReportLog->AddText(_T("Program found start JPG file\r\n"));
			//strReport.Format(_T(" Hard Disk # %d, Sector # %I64d\r\n"),m_vecSelDrives.at(pDiskInfoData->m_iDiskNumber).getDiskNumber(),lJPGPosition);
			//m_ReportLog->AddText(strReport);
			pDiskOrder->MakeDiskOrder();
			strReport = pDiskOrder->GetDiskOrder();
			m_ReportLog->AddText(strReport);
			//// Dialog Text
			//strTextOut = _T("Found the signature JPG-file\r\n");
			//strTextOut += _T("\r\n\CONTINUE WORK ?");
			//// Creating Dialog...
			//pCuttingDialog = new CCuttingSectorsDlg(this,iCurrentStep);
			//pCuttingDialog->setTextData(strTextOut);
			//iDlgResult = pCuttingDialog->DoModal();
			//delete pCuttingDialog;
			//pCuttingDialog = NULL;
			}
			delete pCuttingDialog;
			pCuttingDialog = NULL;

		// End ContinueBlock
			break;

		/*------------------******************------------------*/
			//Creating 1000 files. Determine of Shear -->>...
		/*------------------******************------------------*/
		case enCuttingFiles:
			bytesPerSector = m_vecSelDrives.at(iDiskNumber).getBytesPerSector();
			dwSize = setting->getFileCount() * bytesPerSector;

			m_ReportLog->AddText(_T("Идет создание файлов для определение среза...\r\n"));
			pDriveReader = new CDriveReader(m_vecSelDrives.at(iDiskNumber),lJPGPosition,dwSize);
			bError = pDriveReader->Execute();
			if (bError == FALSE)
			{
				strError = _T("Error Read Drive...");
				break;
			}
			pDataBuffer = pDriveReader->GetData();
			pFileCreater = new CFileCreater(strCreatePath);
			for (UINT i = 1; i <= setting->getFileCount(); ++i)
			{
				pFileCreater->setData(pDataBuffer);
				pFileCreater->setFileNumber(i);
				pFileCreater->setSize(i*bytesPerSector);
				bError = pFileCreater->Execute();
				if (bError == FALSE)
				{
					strError = _T("Error Create Files...");
					break;
				}
			}
			if (bError == FALSE)
				break;
			strTextOut = strCreatePath;
			strTextOut += _T("\\0001.jpg");
			ShellExecute(this->GetSafeHwnd(),_T("open"),strTextOut, NULL, NULL, SW_SHOWNORMAL);

			delete pDriveReader;
			pDriveReader = NULL;
			delete pFileCreater;
			pFileCreater = NULL;
			strTextOut.Format(L"Создано %d файлов\r\n // Введите номер файла для определения \'конца блока\'. \r\n",setting->getFileCount());
			

			pCuttingDialog = new CCuttingSectorsDlg(this,iCurrentStep);
			pCuttingDialog->setHeader(_T("[определения \'конца блока\']"));
			pCuttingDialog->setTextData(strTextOut);
			pCuttingDialog->setMinMax(1,setting->getFileCount());
			pCuttingDialog->setStateProgram(m_enStateProgram);
			iDlgResult = pCuttingDialog->DoModal();
			m_enStateProgram = pCuttingDialog->getStatProgram();
			iFileNumber = pCuttingDialog->getNumber();
			delete pCuttingDialog;
			pCuttingDialog = NULL;
			if (iDlgResult == ID_YES)
			{
				lShearPos = lJPGPosition;
				dwBlockSize = iFileNumber * bytesPerSector;
				iMinBlockSize = iFileNumber;
				lShearPos += iFileNumber;
				strReport.Format(_T("Граница блока по смешению = %I64d (секторов) диск № %d\r\n"), lShearPos , m_vecSelDrives.at(iDiskNumber).getDiskNumber() );
				AfxMessageBox( strReport, MB_OK );	
				m_ReportLog->AddText(strReport);
				pJpgShear = new CJGShear();
				pJpgShear->setDataSize(dwBlockSize); // set Data Buffer size
				pJpgShear->setDiskNumber( (BYTE)m_vecSelDrives.at(iDiskNumber).getDiskNumber() ); // Set Disk Number
				pJpgShear->setJPGStartPostion(lJPGPosition);
				pJpgShear->setDevice(m_vecSelDrives.at(iDiskNumber));
				pJpgShear->Execute();
				pComposite->AddSTEP(pJpgShear);				
			}
			dwBlockSize = 0;
		// End Cutting Files
			break;
		/*------------------******************------------------*/
			//Determine "Block Size", Disk Order -->>...
		/*------------------******************------------------*/
		default:

			pComposite->Execute();
			pFileCreater = new CFileCreater(strCreatePath);
			pFileCreater->setData(pComposite->GetData());
			pFileCreater->setSize(pComposite->GetSize());
			pFileCreater->setFileNumber(0);
			pFileCreater->AddFileName(_T("Original"));
			bError = pFileCreater->Execute();
			if (bError == FALSE)
			{
				strError = _T("Error Create Files...");
				break;
			}
			strTextOut = pFileCreater->GetFilePath();
			delete pFileCreater;
			pFileCreater = NULL;
		//	strTextOut.Insert(0,_T("C:\\WINDOWS\\rundll32.exe "));
			ShellExecute(this->GetSafeHwnd(),_T("open"),strTextOut, NULL, NULL, SW_SHOWNORMAL);
		//	system((char*)strTextOut.GetBuffer());
			pMapBlock->ClearMap();
			bFinishJPG = pComposite->isFinishJPG();
			if (bFinishJPG)
				break;
			pMapBlock->setBlockSize(dwBlockSize);
			pMapBlock->setPosition(lShearPos);
			pMapBlock->setVecDrives(m_vecSelDrives);
			pMapBlock->setDirectory(strCreatePath);
			pMapBlock->setBaseData(pComposite->GetData(),pComposite->GetSize());
			pMapBlock->DeterminateBlock(iMinBlockSize);	//???????

			switch (iCurrentStep)
			{
			case enDetermineBlockSize:
				strTextOut = _T("Размер блока : неизвестно\r\n Определение размера блока\r\n");
				strHeader = _T("[Определение размера блока]");
				break;
			case enDetermineNextDisk:
				strTextOut = _T("Поиск устройств в который есть продолжение jpg \r\n");
				strReport.Format(_T("Граница блока по смешению = %I64d (секторов) диск № %d\r\n"), lShearPos , m_vecSelDrives.at(iDiskNumber).getDiskNumber() );
				//AfxMessageBox( strReport, MB_OK );		
				strTextOut.Append( strReport );
				strHeader = _T("[Поиск следущих устройств]");
				break;
			default:

				strTextOut.Format(_T("Определение следущего устройства\r\nРазмер блока : %d(байт), %d(секторов)\r\n"),dwBlockSize,dwSectorCount);
				LONGLONG lShowShear = lJPGPosition;
				lShowShear += iFileNumber;

				strHeader = _T("[Define the Next Device]");
			}

			//strTextOut += _T("Look in the folder ");
			//strTextOut += strStep;
			//strTextOut += _T("NUMBER FILE");
			pDiskOrder->MakeDiskOrder();
			strTextOut += pDiskOrder->GetDiskOrder();
			pCuttingDialog = new CCuttingSectorsDlg(this,iCurrentStep);
			pCuttingDialog->setHeader(strHeader);
			pCuttingDialog->setTextData(strTextOut);
			pCuttingDialog->setMinMax(1,pMapBlock->getCount());
			pCuttingDialog->setStateProgram(m_enStateProgram);
			iDlgResult = pCuttingDialog->DoModal();
			m_enStateProgram = pCuttingDialog->getStatProgram();
			iFileNumber = pCuttingDialog->getNumber();
			//--iFileNumber; // decrement Number (from (1 - ...))
			delete pCuttingDialog;
			pCuttingDialog = NULL;
			if (iDlgResult == ID_YES)
			{
				pBlockData = pMapBlock->getData(iFileNumber);
				if (pBlockData == NULL)
				{
					bError = FALSE;
					break;
				}

				if (iCurrentStep == enDetermineNextDisk)
				{
					isNextDisk = TRUE;
				for (size_t iDisk = 0; iDisk < m_vecSelDrives.size(); ++iDisk)
				{
					if (m_vecSelDrives.at(iDisk).getDiskNumber() == pBlockData->getDiskNumber())
					{
						pMapBlock->setNextDisk(iDisk);
						break;
					}
				}		
				pJpgChunk = new CJPGChunk();
				pJpgChunk->setBackPos(lShearPos);
				pComposite->AddSTEP(pJpgChunk);
				}
				else
				{
				// check pBlockData for NULL ???????????
				dwBlockSize = pBlockData->getBlockSize();
				dwSectorCount = dwBlockSize / m_vecSelDrives.at(0).getBytesPerSector();
				if (pBlockData->getPosUpDown( ) == PosDown )
				{
					pNewOrder = new CNewOrder();
					pDiskOrder->Add(pNewOrder);				
				}

				pJpgChunk = new CJPGChunk();
				pJpgChunk->setDiskNumber(pBlockData->getDiskNumber());
				for (size_t iDisk = 0; iDisk < m_vecSelDrives.size(); ++iDisk)
				{
					if (m_vecSelDrives.at(iDisk).getDiskNumber() == pBlockData->getDiskNumber())
					{
						pJpgChunk->setDevice(m_vecSelDrives.at(iDisk));
						pDiskNumber = new CDiskNumber();
						pDiskNumber->setDiskDrive(m_vecSelDrives.at(iDisk));
						pDiskOrder->Add(pDiskNumber);
						break;
					}
				}
				lReadPosition = lShearPos;
				pJpgChunk->setBackPos(lShearPos);
				if (pBlockData->getPosUpDown() == PosUP)
					lReadPosition -= dwSectorCount;

				pJpgChunk->setShearPosition(lReadPosition);
				pJpgChunk->setDataSize(dwBlockSize);
				pJpgChunk->Execute();
				pComposite->AddSTEP(pJpgChunk);
				strReport.Format(_T("Размер блока : %d(байт), %d(секторов)\r\n"),dwBlockSize,dwSectorCount);
				m_ReportLog->AddText(strReport);
				pDiskOrder->MakeDiskOrder();
				strReport = pDiskOrder->GetDiskOrder();
				m_ReportLog->AddText(strReport);
				//pDiskOrder->MakeDiskOrder(_T(" # "));
				//m_ReportLog->AddText(pDiskOrder->GetDiskOrder());

				// increment Position
				if (pBlockData->getPosUpDown( ) == PosDown )
					lShearPos += dwSectorCount;
				
			}
			}
			if (iDlgResult == ID_BACK)
			{
				lShearPos = pComposite->GetPositiom();
				pComposite->RemoveSTEP();
				pDiskOrder->Delete();
				--iCurrentStep;
				if (iCurrentStep == enDetermineBlockSize)
					dwBlockSize = 0;
				if (iCurrentStep == enDetermineNextDisk)
					pMapBlock->setNextDisk(-1);
				continue;
			}
			
			// End Default 
		}
		// if error Quit
		if (bError == FALSE)
		{
			AfxMessageBox(strError,MB_ICONERROR);
			break;
		}
		if (bFinishJPG)
		{
			strReport.Format(_T("Найден конец Jpg-файла...\r\n"));
			m_ReportLog->AddText(strReport);
			if (AfxMessageBox(_T("Найден конец Jpg-файла...\r\n Продолжить работу с другими файлами?"),MB_YESNO) == IDNO)
				iDlgResult = ID_ABORD;
			else
				iDlgResult = ID_NO;
			bFinishJPG = FALSE;
		}


	if (iDlgResult == ID_ABORD)
		break;

		// increment STEP;
		++iCurrentStep;
		if ( iDlgResult == ID_NO)
		{
			delete pComposite;
			pComposite = NULL;
			delete pMapBlock;
			pMapBlock = NULL;
			//delete pDiskOrder;
			//pDiskOrder = NULL;
			pDiskOrder->Clear();
			dwBlockSize = 0;
			dwSectorCount = 0;
			iCurrentStep = 0;
		}
	}
	// Clear...
	//OnBnClickedButtonClearLog();
	//if (dwBlockSize > 0)
	//{
	//	strReport.Format(_T("\r\n\Block Size : %d(bytes), %d(sectors)\r\n"),dwBlockSize,dwSectorCount);
	//	m_ReportLog->AddText(strReport);
	//	pDiskOrder->MakeDiskOrder();
	//	strReport = pDiskOrder->GetDiskOrder();
	//	m_ReportLog->AddText(strReport);
	//}

	if (bFinishJPG)
	{

	}

	switch (iDlgResult)
	{
	case ID_ABORD:
		pResultCutting->m_ButtonResult = iResABORT;
		break;
	case ID_NO:
		pResultCutting->m_ButtonResult = iResNEXT;
		break;
	default:
		pResultCutting->m_ButtonResult = iResNEXT;
	}

	if (pComposite != NULL)
	{
		delete pComposite;
		pComposite = NULL;
	}
	if (pMapBlock != NULL)
	{
		//pMapBlock->ClearMap();
		delete pMapBlock;
		pMapBlock = NULL;
	}
	if (pDiskOrder != NULL)
	{
		delete pDiskOrder;
		pDiskOrder = NULL;
	}

	ShowWindow(SW_SHOW);
	OnBnClickedButtonStop();
	
	return TRUE;


}