Merge the dynamic menu, hotkey and toolbar branch to trunk. This doesn't include Windows support as vs2008 was being a major pain. This involves revisions r4921:4950, r4961:5002, r5005:5006, r5008:5056, r5062:5065, r5072, r5081:5082, r5087, r5096:5110, r5124:5125. Updates #1258.
Originally committed to SVN as r5126.
2011-01-05 14:00:46 +01:00
// Copyright (c) 2005-2010, Niels Martin Hansen
// Copyright (c) 2005-2010, Rodrigo Braz Monteiro
// Copyright (c) 2010, Amar Takhar
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are met:
//
// * Redistributions of source code must retain the above copyright notice,
// this list of conditions and the following disclaimer.
// * Redistributions in binary form must reproduce the above copyright notice,
// this list of conditions and the following disclaimer in the documentation
// and/or other materials provided with the distribution.
// * Neither the name of the Aegisub Group nor the names of its contributors
// may be used to endorse or promote products derived from this software
// without specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
// POSSIBILITY OF SUCH DAMAGE.
//
// Aegisub Project http://www.aegisub.org/
//
// $Id$
/// @file app.cpp
/// @brief app/ commands.
/// @ingroup command
///
2011-01-05 19:40:37 +01:00
# include "../config.h"
Merge the dynamic menu, hotkey and toolbar branch to trunk. This doesn't include Windows support as vs2008 was being a major pain. This involves revisions r4921:4950, r4961:5002, r5005:5006, r5008:5056, r5062:5065, r5072, r5081:5082, r5087, r5096:5110, r5124:5125. Updates #1258.
Originally committed to SVN as r5126.
2011-01-05 14:00:46 +01:00
# ifndef AGI_PRE
# endif
# include "command.h"
2011-01-05 19:40:37 +01:00
# include "../include/aegisub/context.h"
# include "../main.h"
Merge the dynamic menu, hotkey and toolbar branch to trunk. This doesn't include Windows support as vs2008 was being a major pain. This involves revisions r4921:4950, r4961:5002, r5005:5006, r5008:5056, r5062:5065, r5072, r5081:5082, r5087, r5096:5110, r5124:5125. Updates #1258.
Originally committed to SVN as r5126.
2011-01-05 14:00:46 +01:00
2011-01-05 19:40:37 +01:00
# include "../dialog_about.h"
# include "../audio_controller.h"
# include "../frame_main.h"
# include "../video_context.h"
# include "../utils.h"
# include "../dialog_log.h"
# include "../preferences.h"
# include "../dialog_version_check.h"
Merge the dynamic menu, hotkey and toolbar branch to trunk. This doesn't include Windows support as vs2008 was being a major pain. This involves revisions r4921:4950, r4961:5002, r5005:5006, r5008:5056, r5062:5065, r5072, r5081:5082, r5087, r5096:5110, r5124:5125. Updates #1258.
Originally committed to SVN as r5126.
2011-01-05 14:00:46 +01:00
namespace cmd {
/// @defgroup cmd-app Application related
/// @{
/// Launch about dialogue.
class app_about : public Command {
public :
CMD_NAME ( " app/about " )
STR_MENU ( " &About.. " )
STR_DISP ( " About " )
STR_HELP ( " About Aegisub. " )
void operator ( ) ( agi : : Context * c ) {
AboutScreen About ( c - > parent ) ;
About . ShowModal ( ) ;
}
} ;
/// Display audio and subtitles.
class app_display_audio_subs : public Command {
public :
CMD_NAME ( " app/display/audio_subs " )
STR_MENU ( " Audio+Subs View " )
STR_DISP ( " Audio+Subs View " )
STR_HELP ( " Display audio and subtitles only. " )
void operator ( ) ( agi : : Context * c ) {
if ( ! c - > audioController - > IsAudioOpen ( ) ) return ;
wxGetApp ( ) . frame - > SetDisplayMode ( 0 , 1 ) ;
}
} ;
/// Display audio, video and subtitles.
class app_display_full : public Command {
public :
CMD_NAME ( " app/display/full " )
STR_MENU ( " Full view " )
STR_DISP ( " Full view " )
STR_HELP ( " Display audio, video and subtitles. " )
void operator ( ) ( agi : : Context * c ) {
if ( ! c - > audioController - > IsAudioOpen ( ) | | ! VideoContext : : Get ( ) - > IsLoaded ( ) ) return ;
wxGetApp ( ) . frame - > SetDisplayMode ( 1 , 1 ) ;
}
} ;
/// Display subtitles only.
class app_display_subs : public Command {
public :
CMD_NAME ( " app/display/subs " )
STR_MENU ( " Subs Only View " )
STR_DISP ( " Subs Only View " )
STR_HELP ( " Display subtitles only. " )
void operator ( ) ( agi : : Context * c ) {
wxGetApp ( ) . frame - > SetDisplayMode ( 0 , 0 ) ;
}
} ;
/// Display video and subtitles only.
class app_display_video_subs : public Command {
public :
CMD_NAME ( " app/display/video_subs " )
STR_MENU ( " Video+Subs View " )
STR_DISP ( " Video+Subs View " )
STR_HELP ( " Display video and subtitles only. " )
void operator ( ) ( agi : : Context * c ) {
wxGetApp ( ) . frame - > SetDisplayMode ( 1 , 0 ) ;
}
} ;
/// Exit the application.
class app_exit : public Command {
public :
CMD_NAME ( " app/exit " )
STR_MENU ( " E&xit " )
STR_DISP ( " Exit " )
STR_HELP ( " Exit the application. " )
void operator ( ) ( agi : : Context * c ) {
printf ( " XXX: not working yet \n " ) ;
}
} ;
/// Select Aegisub interface language
class app_language : public Command {
public :
CMD_NAME ( " app/language " )
STR_MENU ( " &Language... " )
STR_DISP ( " Language " )
STR_HELP ( " Select Aegisub interface language " )
void operator ( ) ( agi : : Context * c ) {
// Get language
AegisubApp * app = ( AegisubApp * ) wxTheApp ;
int old = app - > locale . curCode ;
int newCode = app - > locale . PickLanguage ( ) ;
// Is OK?
if ( newCode ! = - 1 ) {
// Set code
OPT_SET ( " App/Locale " ) - > SetInt ( newCode ) ;
// Language actually changed?
if ( newCode ! = old ) {
// Ask to restart program
int result = wxMessageBox ( _T ( " Aegisub needs to be restarted so that the new language can be applied. Restart now? " ) , _T ( " Restart Aegisub? " ) , wxICON_QUESTION | wxYES_NO ) ;
if ( result = = wxYES ) {
// Restart Aegisub
if ( wxGetApp ( ) . frame - > Close ( ) ) {
RestartAegisub ( ) ;
//wxStandardPaths stand;
//wxExecute(_T("\"") + stand.GetExecutablePath() + _T("\""));
}
}
}
}
}
} ;
/// Event log.
class app_log : public Command {
public :
CMD_NAME ( " app/log " )
STR_MENU ( " &Log window... " )
STR_DISP ( " Log window " )
STR_HELP ( " Event log. " )
void operator ( ) ( agi : : Context * c ) {
LogWindow * log = new LogWindow ( c - > parent ) ;
log - > Show ( 1 ) ;
}
} ;
/// Open a new application window.
class app_new_window : public Command {
public :
CMD_NAME ( " app/new_window " )
STR_MENU ( " New Window " )
STR_DISP ( " New Window " )
STR_HELP ( " Open a new application window. " )
void operator ( ) ( agi : : Context * c ) {
RestartAegisub ( ) ;
}
} ;
/// Configure Aegisub.
class app_options : public Command {
public :
CMD_NAME ( " app/options " )
STR_MENU ( " &Options.. " )
STR_DISP ( " Options " )
STR_HELP ( " Configure Aegisub. " )
void operator ( ) ( agi : : Context * c ) {
try {
Preferences pref ( c - > parent ) ;
pref . ShowModal ( ) ;
} catch ( agi : : Exception & e ) {
LOG_E ( " config/init " ) < < " Caught exception: " < < e . GetName ( ) < < " -> " < < e . GetMessage ( ) ;
}
}
} ;
/// Check to see if there is a new version of Aegisub available.
class app_updates : public Command {
public :
CMD_NAME ( " app/updates " )
STR_MENU ( " &Check for Updates.. " )
STR_DISP ( " Check for Updates " )
STR_HELP ( " Check to see if there is a new version of Aegisub available. " )
void operator ( ) ( agi : : Context * c ) {
PerformVersionCheck ( true ) ;
}
} ;
/// @}
/// Init app/ commands
void init_app ( CommandManager * cm ) {
cm - > reg ( new app_about ( ) ) ;
cm - > reg ( new app_display_audio_subs ( ) ) ;
cm - > reg ( new app_display_full ( ) ) ;
cm - > reg ( new app_display_subs ( ) ) ;
cm - > reg ( new app_display_video_subs ( ) ) ;
cm - > reg ( new app_exit ( ) ) ;
cm - > reg ( new app_language ( ) ) ;
cm - > reg ( new app_log ( ) ) ;
cm - > reg ( new app_new_window ( ) ) ;
cm - > reg ( new app_options ( ) ) ;
cm - > reg ( new app_updates ( ) ) ;
}
} // namespace cmd