Ejemplo n.º 1
0
void SelectFileScreen::screenCB( Fl_Widget* w )
{
	if ( w == selectFileUI->fileBrowser )
	{
		int sid = selectFileUI->fileBrowser->value();
		selectFileUI->fileBrowser->select( sid );

		Stringc selText = Stringc(selectFileUI->fileBrowser->text(sid));

		if ( selText == "../" )
		{
			if ( m_DirString.count_substrings( "/" ) > 1 )
			{
				int dirLen = m_DirString.get_length();
				int slashLoc = dirLen-2;

				while ( slashLoc > 0 )
				{
					if ( m_DirString[slashLoc] == '/' )
						break;
					slashLoc--;
				}
				if ( slashLoc+1 <= dirLen-1 )
					m_DirString.delete_range( slashLoc+1, dirLen-1 );

				selectFileUI->fileBrowser->load( m_DirString.get_char_star() );
				selectFileUI->dirInput->value( m_DirString );
			}
		}
		else if ( selText.count_substrings( "/" ) >= 1 )
		{
			m_DirString.concatenate( selText );
			selectFileUI->fileBrowser->load( m_DirString.get_char_star() );
			selectFileUI->dirInput->value( m_DirString );	
		}
		else
		{
			m_FileName = selText;
			selectFileUI->fileInput->value( m_FileName );
		}
	}
	else if ( w == selectFileUI->dirInput )
	{
		m_DirString = Stringc(selectFileUI->dirInput->value());

		char forwardSlash = '\\';
		m_DirString.change_from_to(forwardSlash, '/');

		int dirSize = m_DirString.get_length();
		if ( m_DirString[dirSize-1] != '/' )
			m_DirString.concatenate("/");

		selectFileUI->fileBrowser->load( m_DirString.get_char_star() );
	}
	else if ( w == selectFileUI->fileInput )
	{
		m_FileName = selectFileUI->fileInput->value();
	}
	else if ( w == selectFileUI->acceptButton )
	{
		m_AcceptFlag = true;
		selectFileUI->UIWindow->hide();
	}
	else if ( w == selectFileUI->cancelButton )
	{
		m_AcceptFlag = false;
		selectFileUI->UIWindow->hide();
	}
	else if ( w == selectFileUI->favsMenuButton )
	{
		int val = selectFileUI->favsMenuButton->value();

		if ( val == 0 )				// Add To Favorites
		{
			Fl_Preferences prefs( Fl_Preferences::USER, "NASA", "VSP");
			char favstr[256];
			sprintf( favstr, "fav%d", (int)m_FavDirVec.size() );
			prefs.set( favstr, m_DirString );
			prefs.flush();
			LoadFavsMenu();
		}
		else if ( val == 1 )	
		{
			m_FavDirVec.clear();
			Fl_Preferences prefs( Fl_Preferences::USER, "NASA", "VSP");
			for ( int i = 0 ; i < (int)prefs.entries() ; i++ )
			{
				prefs.deleteEntry( prefs.entry( i ) );
			}
			prefs.flush();
			LoadFavsMenu();	
		}
		else
		{
			//==== Select Favorite Dir ====//
			int ind = val - 2;
			if ( ind >= 0 && ind < (int)m_FavDirVec.size() )
			{
				m_DirString = m_FavDirVec[ind];
//				m_DirString.delete_range( 0, 0 );
//				m_DirString.remove_leading('/');
				selectFileUI->fileBrowser->load( m_DirString );
				selectFileUI->dirInput->value( m_DirString );
			}
		}
	}
}