2006-01-16 22:02:54 +01:00
// Copyright (c) 2005, Rodrigo Braz Monteiro
// 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.
//
2009-07-29 07:43:02 +02:00
// Aegisub Project http://www.aegisub.org/
2006-01-16 22:02:54 +01:00
//
2009-07-29 07:43:02 +02:00
// $Id$
/// @file dialog_style_manager.cpp
/// @brief Style Manager dialogue box and partial logic
/// @ingroup style_editor
///
2006-01-16 22:02:54 +01:00
////////////
// Includes
2009-01-04 07:31:48 +01:00
# include "config.h"
2006-01-16 22:02:54 +01:00
# include <wx/filename.h>
2006-12-26 05:48:53 +01:00
# include <wx/filedlg.h>
# include <wx/choicdlg.h>
2007-09-12 01:22:26 +02:00
# include <wx/intl.h>
# include <wx/clipbrd.h>
# include <wx/tokenzr.h>
2006-01-16 22:02:54 +01:00
# include "dialog_style_manager.h"
# include "dialog_style_editor.h"
# include "ass_style.h"
# include "ass_file.h"
2006-10-20 00:53:06 +02:00
# include "ass_dialogue.h"
2007-06-21 02:46:50 +02:00
# include "standard_paths.h"
2006-01-16 22:02:54 +01:00
# include "options.h"
# include "subs_grid.h"
2007-07-05 01:09:40 +02:00
# include "utils.h"
2007-08-18 04:00:20 +02:00
# include "help_button.h"
2009-07-24 02:08:25 +02:00
# include "libresrc/libresrc.h"
2009-07-25 18:15:13 +02:00
2006-01-16 22:02:54 +01:00
Note: This was done using a script! it's far from perfect but 95% of the work has been done already formatting-wise.
Document all functions, class, struct, union, enum, macro, variable, typedefs. This isn't the actual document in itself but empty documentation using any old documentation if it was there.
This was done using exuberant ctags to get tag info, then a TCL script to parse/remove old comments and convert them into Doxygen-style.
Some notes:
* Anything labeled 'DOCME' needs to be documented, @param and @return have been left blank as it would be annoying to delete the 'DOCME' from every one of those.
* Some multiline comments may have been munged into single line comments
* Leave the /// comments above global variables with a space, if they're harder to read then we'll be less likey to use them.
* Enum comments can go after the enumeration itself '[value] /// comment'
* include/aegisub/*.h haven't been converted yet, this will be done in a later commit
* Some documentation blocks are in the wrong place, in the .h when it should be in the .cpp, or vice versa.
See http://devel.aegisub.org/wiki/Doxygen for some details on Doxygen and a 'style guide'.
Originally committed to SVN as r3312.
2009-07-30 00:59:22 +02:00
/// @brief Constructor
/// @param parent
/// @param _grid
///
2006-01-16 22:02:54 +01:00
DialogStyleManager : : DialogStyleManager ( wxWindow * parent , SubtitlesGrid * _grid )
: wxDialog ( parent , - 1 , _ ( " Styles Manager " ) , wxDefaultPosition , wxDefaultSize , wxDEFAULT_DIALOG_STYLE , _T ( " DialogStylesManager " ) )
{
2007-06-28 22:29:56 +02:00
// Set icon
2009-07-25 06:49:59 +02:00
SetIcon ( BitmapToIcon ( GETIMAGE ( style_toolbutton_24 ) ) ) ;
2007-06-28 22:29:56 +02:00
2006-01-16 22:02:54 +01:00
// Vars
grid = _grid ;
// Catalog
wxSizer * CatalogBox = new wxStaticBoxSizer ( wxHORIZONTAL , this , _ ( " Catalog of available storages " ) ) ;
2007-10-21 01:04:06 +02:00
CatalogList = new wxComboBox ( this , LIST_CATALOG , _T ( " " ) , wxDefaultPosition , wxSize ( - 1 , - 1 ) , 0 , NULL , wxCB_READONLY | wxCB_READONLY , wxDefaultValidator , _T ( " Catalog List " ) ) ;
wxButton * CatalogNew = new wxButton ( this , BUTTON_CATALOG_NEW , _ ( " New " ) , wxDefaultPosition , wxSize ( - 1 , - 1 ) ) ;
wxButton * CatalogDelete = new wxButton ( this , BUTTON_CATALOG_DELETE , _ ( " Delete " ) , wxDefaultPosition , wxSize ( - 1 , - 1 ) ) ;
2006-01-16 22:02:54 +01:00
CatalogBox - > Add ( CatalogList , 1 , wxEXPAND | wxRIGHT | wxALIGN_RIGHT , 5 ) ;
CatalogBox - > Add ( CatalogNew , 0 , wxRIGHT , 5 ) ;
CatalogBox - > Add ( CatalogDelete , 0 , 0 , 0 ) ;
// Storage styles list
2007-07-02 08:18:28 +02:00
StorageList = new wxListBox ( this , LIST_STORAGE , wxDefaultPosition , wxSize ( 240 , 250 ) , 0 , NULL , wxLB_EXTENDED ) ;
2006-01-16 22:02:54 +01:00
wxSizer * StorageBox = new wxStaticBoxSizer ( wxVERTICAL , this , _ ( " Storage " ) ) ;
wxSizer * StorageButtons = new wxBoxSizer ( wxHORIZONTAL ) ;
2007-07-02 08:18:28 +02:00
wxSizer * StorageButtonsLow = new wxBoxSizer ( wxVERTICAL ) ;
wxSizer * StorageListSizer = new wxBoxSizer ( wxHORIZONTAL ) ;
2007-10-21 01:04:06 +02:00
MoveToLocal = new wxButton ( this , BUTTON_STORAGE_COPYTO , _ ( " Copy to current script -> " ) , wxDefaultPosition , wxSize ( 205 , - 1 ) ) ;
StorageNew = new wxButton ( this , BUTTON_STORAGE_NEW , _ ( " New " ) , wxDefaultPosition , wxSize ( 40 , - 1 ) ) ;
StorageEdit = new wxButton ( this , BUTTON_STORAGE_EDIT , _ ( " Edit " ) , wxDefaultPosition , wxSize ( 40 , - 1 ) ) ;
StorageCopy = new wxButton ( this , BUTTON_STORAGE_COPY , _ ( " Copy " ) , wxDefaultPosition , wxSize ( 40 , - 1 ) ) ;
StorageDelete = new wxButton ( this , BUTTON_STORAGE_DELETE , _ ( " Delete " ) , wxDefaultPosition , wxSize ( 40 , - 1 ) ) ;
2007-07-02 08:18:28 +02:00
StorageButtons - > Add ( StorageNew , 1 , wxEXPAND | wxRIGHT , 5 ) ;
StorageButtons - > Add ( StorageEdit , 1 , wxEXPAND | wxRIGHT , 5 ) ;
StorageButtons - > Add ( StorageCopy , 1 , wxEXPAND | wxRIGHT , 5 ) ;
2006-01-16 22:02:54 +01:00
StorageButtons - > Add ( StorageDelete , 1 , wxEXPAND | wxALL , 0 ) ;
2009-07-25 06:49:59 +02:00
StorageMoveUp = new wxBitmapButton ( this , BUTTON_STORAGE_UP , GETIMAGE ( arrow_up_24 ) ) ;
StorageMoveDown = new wxBitmapButton ( this , BUTTON_STORAGE_DOWN , GETIMAGE ( arrow_down_24 ) ) ;
StorageMoveTop = new wxBitmapButton ( this , BUTTON_STORAGE_TOP , GETIMAGE ( arrow_up_stop_24 ) ) ;
StorageMoveBottom = new wxBitmapButton ( this , BUTTON_STORAGE_BOTTOM , GETIMAGE ( arrow_down_stop_24 ) ) ;
StorageSort = new wxBitmapButton ( this , BUTTON_STORAGE_SORT , GETIMAGE ( arrow_sort_24 ) ) ;
2007-07-02 08:18:28 +02:00
StorageMoveUp - > SetToolTip ( _ ( " Move style up. " ) ) ;
StorageMoveDown - > SetToolTip ( _ ( " Move style down. " ) ) ;
StorageMoveTop - > SetToolTip ( _ ( " Move style to top. " ) ) ;
StorageMoveBottom - > SetToolTip ( _ ( " Move style to bottom. " ) ) ;
StorageSort - > SetToolTip ( _ ( " Sort styles alphabetically. " ) ) ;
StorageButtonsLow - > AddStretchSpacer ( 1 ) ;
StorageButtonsLow - > Add ( StorageMoveTop , 0 , wxEXPAND | wxALL , 0 ) ;
StorageButtonsLow - > Add ( StorageMoveUp , 0 , wxEXPAND | wxALL , 0 ) ;
StorageButtonsLow - > Add ( StorageMoveDown , 0 , wxEXPAND | wxALL , 0 ) ;
StorageButtonsLow - > Add ( StorageMoveBottom , 0 , wxEXPAND | wxALL , 0 ) ;
StorageButtonsLow - > Add ( StorageSort , 0 , wxEXPAND | wxALL , 0 ) ;
StorageButtonsLow - > AddStretchSpacer ( 1 ) ;
StorageListSizer - > Add ( StorageList , 1 , wxEXPAND | wxRIGHT , 0 ) ;
StorageListSizer - > Add ( StorageButtonsLow , 0 , wxEXPAND | wxALL , 0 ) ;
StorageBox - > Add ( StorageListSizer , 1 , wxEXPAND | wxBOTTOM , 5 ) ;
StorageBox - > Add ( MoveToLocal , 0 , wxEXPAND | wxBOTTOM , 5 ) ;
StorageBox - > Add ( StorageButtons , 0 , wxEXPAND | wxBOTTOM , 0 ) ;
2006-01-16 22:02:54 +01:00
MoveToLocal - > Disable ( ) ;
2006-10-20 00:53:06 +02:00
StorageEdit - > Disable ( ) ;
2006-01-16 22:02:54 +01:00
StorageCopy - > Disable ( ) ;
StorageDelete - > Disable ( ) ;
// Local styles list
2007-07-02 08:18:28 +02:00
CurrentList = new wxListBox ( this , LIST_CURRENT , wxDefaultPosition , wxSize ( 240 , 250 ) , 0 , NULL , wxLB_EXTENDED ) ;
2006-01-16 22:02:54 +01:00
wxSizer * CurrentBox = new wxStaticBoxSizer ( wxVERTICAL , this , _ ( " Current script " ) ) ;
wxSizer * CurrentButtons = new wxBoxSizer ( wxHORIZONTAL ) ;
2007-07-02 08:18:28 +02:00
wxSizer * CurrentButtonsLow = new wxBoxSizer ( wxVERTICAL ) ;
wxSizer * CurrentListSizer = new wxBoxSizer ( wxHORIZONTAL ) ;
wxSizer * MoveImportSizer = new wxBoxSizer ( wxHORIZONTAL ) ;
MoveToStorage = new wxButton ( this , BUTTON_CURRENT_COPYTO , _ ( " <- Copy to storage " ) , wxDefaultPosition , wxSize ( - 1 , 25 ) ) ;
2007-08-16 01:17:42 +02:00
MoveImportSizer - > Add ( MoveToStorage , 1 , wxEXPAND | wxRIGHT , 5 ) ;
MoveImportSizer - > Add ( new wxButton ( this , BUTTON_CURRENT_IMPORT , _ ( " Import from script... " ) ) , 1 , wxEXPAND , 0 ) ;
2007-10-21 01:04:06 +02:00
CurrentNew = new wxButton ( this , BUTTON_CURRENT_NEW , _ ( " New " ) , wxDefaultPosition , wxSize ( 40 , - 1 ) ) ;
CurrentEdit = new wxButton ( this , BUTTON_CURRENT_EDIT , _ ( " Edit " ) , wxDefaultPosition , wxSize ( 40 , - 1 ) ) ;
CurrentCopy = new wxButton ( this , BUTTON_CURRENT_COPY , _ ( " Copy " ) , wxDefaultPosition , wxSize ( 40 , - 1 ) ) ;
CurrentDelete = new wxButton ( this , BUTTON_CURRENT_DELETE , _ ( " Delete " ) , wxDefaultPosition , wxSize ( 40 , - 1 ) ) ;
2007-07-02 08:18:28 +02:00
CurrentButtons - > Add ( CurrentNew , 1 , wxEXPAND | wxRIGHT , 5 ) ;
CurrentButtons - > Add ( CurrentEdit , 1 , wxEXPAND | wxRIGHT , 5 ) ;
CurrentButtons - > Add ( CurrentCopy , 1 , wxEXPAND | wxRIGHT , 5 ) ;
2006-01-16 22:02:54 +01:00
CurrentButtons - > Add ( CurrentDelete , 1 , wxEXPAND | wxALL , 0 ) ;
2009-07-25 06:49:59 +02:00
CurrentMoveUp = new wxBitmapButton ( this , BUTTON_CURRENT_UP , GETIMAGE ( arrow_up_24 ) ) ;
CurrentMoveDown = new wxBitmapButton ( this , BUTTON_CURRENT_DOWN , GETIMAGE ( arrow_down_24 ) ) ;
CurrentMoveTop = new wxBitmapButton ( this , BUTTON_CURRENT_TOP , GETIMAGE ( arrow_up_stop_24 ) ) ;
CurrentMoveBottom = new wxBitmapButton ( this , BUTTON_CURRENT_BOTTOM , GETIMAGE ( arrow_down_stop_24 ) ) ;
CurrentSort = new wxBitmapButton ( this , BUTTON_CURRENT_SORT , GETIMAGE ( arrow_sort_24 ) ) ;
2007-07-02 08:18:28 +02:00
CurrentMoveUp - > SetToolTip ( _ ( " Move style up. " ) ) ;
CurrentMoveDown - > SetToolTip ( _ ( " Move style down. " ) ) ;
CurrentMoveTop - > SetToolTip ( _ ( " Move style to top. " ) ) ;
CurrentMoveBottom - > SetToolTip ( _ ( " Move style to bottom. " ) ) ;
CurrentSort - > SetToolTip ( _ ( " Sort styles alphabetically. " ) ) ;
CurrentButtonsLow - > AddStretchSpacer ( 1 ) ;
CurrentButtonsLow - > Add ( CurrentMoveTop , 0 , wxEXPAND | wxALL , 0 ) ;
CurrentButtonsLow - > Add ( CurrentMoveUp , 0 , wxEXPAND | wxALL , 0 ) ;
CurrentButtonsLow - > Add ( CurrentMoveDown , 0 , wxEXPAND | wxALL , 0 ) ;
CurrentButtonsLow - > Add ( CurrentMoveBottom , 0 , wxEXPAND | wxALL , 0 ) ;
CurrentButtonsLow - > Add ( CurrentSort , 0 , wxEXPAND | wxALL , 0 ) ;
CurrentButtonsLow - > AddStretchSpacer ( 1 ) ;
CurrentListSizer - > Add ( CurrentList , 1 , wxEXPAND | wxRIGHT , 0 ) ;
CurrentListSizer - > Add ( CurrentButtonsLow , 0 , wxEXPAND | wxALL , 0 ) ;
CurrentBox - > Add ( CurrentListSizer , 1 , wxEXPAND | wxBOTTOM , 5 ) ;
CurrentBox - > Add ( MoveImportSizer , 0 , wxEXPAND | wxBOTTOM , 5 ) ;
CurrentBox - > Add ( CurrentButtons , 0 , wxEXPAND | wxBOTTOM , 0 ) ;
2006-01-16 22:02:54 +01:00
MoveToStorage - > Disable ( ) ;
2006-10-20 00:53:06 +02:00
CurrentEdit - > Disable ( ) ;
2006-01-16 22:02:54 +01:00
CurrentCopy - > Disable ( ) ;
CurrentDelete - > Disable ( ) ;
2007-06-23 09:27:09 +02:00
// Buttons
wxStdDialogButtonSizer * buttonSizer = new wxStdDialogButtonSizer ( ) ;
buttonSizer - > SetCancelButton ( new wxButton ( this , wxID_CLOSE ) ) ;
2008-01-13 22:05:31 +01:00
buttonSizer - > AddButton ( new HelpButton ( this , _T ( " Styles Manager " ) ) ) ;
2007-06-23 09:27:09 +02:00
buttonSizer - > Realize ( ) ;
2006-01-16 22:02:54 +01:00
// General layout
wxSizer * StylesSizer = new wxBoxSizer ( wxHORIZONTAL ) ;
2006-12-26 05:48:53 +01:00
StylesSizer - > Add ( StorageBox , 0 , wxRIGHT | wxEXPAND , 5 ) ;
StylesSizer - > Add ( CurrentBox , 0 , wxLEFT | wxEXPAND , 0 ) ;
2006-01-16 22:02:54 +01:00
MainSizer = new wxBoxSizer ( wxVERTICAL ) ;
MainSizer - > Add ( CatalogBox , 0 , wxEXPAND | wxLEFT | wxRIGHT | wxTOP , 5 ) ;
2007-06-23 09:27:09 +02:00
MainSizer - > Add ( StylesSizer , 1 , wxEXPAND | wxALL , 5 ) ;
MainSizer - > Add ( buttonSizer , 0 , wxBOTTOM | wxEXPAND , 5 ) ;
2006-01-16 22:02:54 +01:00
// Set sizer
SetSizer ( MainSizer ) ;
MainSizer - > SetSizeHints ( this ) ;
// Position window
if ( lastx = = - 1 & & lasty = = - 1 ) {
CenterOnParent ( ) ;
} else {
Move ( lastx , lasty ) ;
}
// Populate lists
LoadCatalog ( ) ;
LoadCurrentStyles ( AssFile : : top ) ;
2006-10-20 00:53:06 +02:00
2007-02-05 20:09:45 +01:00
//Set key handlers for lists
2007-03-18 03:18:25 +01:00
CatalogList - > PushEventHandler ( new DialogStyleManagerEvent ( this ) ) ;
2007-02-07 17:39:05 +01:00
StorageList - > PushEventHandler ( new DialogStyleManagerEvent ( this ) ) ;
CurrentList - > PushEventHandler ( new DialogStyleManagerEvent ( this ) ) ;
2007-02-05 20:09:45 +01:00
2006-10-20 00:53:06 +02:00
// Select default item
wxString selected_style ;
if ( _grid ) {
AssDialogue * dia = _grid - > GetDialogue ( _grid - > GetFirstSelRow ( ) ) ;
2007-02-25 19:08:19 +01:00
if ( dia ) selected_style = dia - > Style ;
2006-10-20 00:53:06 +02:00
}
2006-12-01 00:37:34 +01:00
if ( StorageList - > GetCount ( ) & & StorageList - > SetStringSelection ( selected_style ) ) {
2006-10-20 00:53:06 +02:00
StorageEdit - > Enable ( ) ;
StorageCopy - > Enable ( ) ;
StorageDelete - > Enable ( ) ;
MoveToLocal - > Enable ( ) ;
}
2006-12-01 00:37:34 +01:00
if ( CurrentList - > GetCount ( ) & & CurrentList - > SetStringSelection ( selected_style ) ) {
2006-10-20 00:53:06 +02:00
CurrentEdit - > Enable ( ) ;
CurrentCopy - > Enable ( ) ;
CurrentDelete - > Enable ( ) ;
MoveToStorage - > Enable ( ) ;
}
2006-12-26 22:45:23 +01:00
UpdateMoveButtons ( ) ;
2006-01-16 22:02:54 +01:00
}
Note: This was done using a script! it's far from perfect but 95% of the work has been done already formatting-wise.
Document all functions, class, struct, union, enum, macro, variable, typedefs. This isn't the actual document in itself but empty documentation using any old documentation if it was there.
This was done using exuberant ctags to get tag info, then a TCL script to parse/remove old comments and convert them into Doxygen-style.
Some notes:
* Anything labeled 'DOCME' needs to be documented, @param and @return have been left blank as it would be annoying to delete the 'DOCME' from every one of those.
* Some multiline comments may have been munged into single line comments
* Leave the /// comments above global variables with a space, if they're harder to read then we'll be less likey to use them.
* Enum comments can go after the enumeration itself '[value] /// comment'
* include/aegisub/*.h haven't been converted yet, this will be done in a later commit
* Some documentation blocks are in the wrong place, in the .h when it should be in the .cpp, or vice versa.
See http://devel.aegisub.org/wiki/Doxygen for some details on Doxygen and a 'style guide'.
Originally committed to SVN as r3312.
2009-07-30 00:59:22 +02:00
/// @brief Destructor
///
2006-01-16 22:02:54 +01:00
DialogStyleManager : : ~ DialogStyleManager ( ) {
int sel = CatalogList - > GetSelection ( ) ;
if ( sel ! = wxNOT_FOUND ) {
AssFile : : top - > SetScriptInfo ( _T ( " Last Style Storage " ) , CatalogList - > GetString ( sel ) ) ;
}
2009-05-22 00:15:32 +02:00
CatalogList - > PopEventHandler ( true ) ;
StorageList - > PopEventHandler ( true ) ;
CurrentList - > PopEventHandler ( true ) ;
2009-05-22 00:24:52 +02:00
Store . Clear ( ) ;
2006-01-16 22:02:54 +01:00
}
Note: This was done using a script! it's far from perfect but 95% of the work has been done already formatting-wise.
Document all functions, class, struct, union, enum, macro, variable, typedefs. This isn't the actual document in itself but empty documentation using any old documentation if it was there.
This was done using exuberant ctags to get tag info, then a TCL script to parse/remove old comments and convert them into Doxygen-style.
Some notes:
* Anything labeled 'DOCME' needs to be documented, @param and @return have been left blank as it would be annoying to delete the 'DOCME' from every one of those.
* Some multiline comments may have been munged into single line comments
* Leave the /// comments above global variables with a space, if they're harder to read then we'll be less likey to use them.
* Enum comments can go after the enumeration itself '[value] /// comment'
* include/aegisub/*.h haven't been converted yet, this will be done in a later commit
* Some documentation blocks are in the wrong place, in the .h when it should be in the .cpp, or vice versa.
See http://devel.aegisub.org/wiki/Doxygen for some details on Doxygen and a 'style guide'.
Originally committed to SVN as r3312.
2009-07-30 00:59:22 +02:00
/// @brief Loads the catalog
///
2006-01-16 22:02:54 +01:00
void DialogStyleManager : : LoadCatalog ( ) {
// Clear
CatalogList - > Clear ( ) ;
// Create catalog if it doesn't exist
2007-06-21 02:46:50 +02:00
wxString dirname = StandardPaths : : DecodePath ( _T ( " ?user/catalog/ " ) ) ;
2006-01-16 22:02:54 +01:00
if ( ! wxDirExists ( dirname ) ) {
if ( ! wxMkdir ( dirname ) ) {
2007-07-18 15:46:38 +02:00
throw _T ( " Failed creating directory for style catalogues " ) ;
2006-01-16 22:02:54 +01:00
}
else {
// Create default style
Store . Clear ( ) ;
AssStyle * defstyle = new AssStyle ;
Store . style . push_back ( defstyle ) ;
Store . Save ( _T ( " Default " ) ) ;
}
}
// Get dir
2007-06-21 02:46:50 +02:00
dirname = StandardPaths : : DecodePath ( _T ( " ?user/catalog/*.sty " ) ) ;
2006-01-16 22:02:54 +01:00
// Populate
wxString curfile = wxFindFirstFile ( dirname , wxFILE ) ;
wxString path , name , ext ;
while ( ! curfile . empty ( ) ) {
wxFileName : : SplitPath ( curfile , & path , & name , & ext ) ;
CatalogList - > Append ( name ) ;
curfile = wxFindNextFile ( ) ;
}
// Set to default if available
StorageActions ( false ) ;
wxString pickStyle = AssFile : : top - > GetScriptInfo ( _T ( " Last Style Storage " ) ) ;
2006-02-20 22:32:58 +01:00
if ( pickStyle . IsEmpty ( ) ) pickStyle = _T ( " Default " ) ;
2008-09-06 13:35:36 +02:00
int opt = CatalogList - > FindString ( pickStyle , false ) ;
2006-01-16 22:02:54 +01:00
if ( opt ! = wxNOT_FOUND ) {
CatalogList - > SetSelection ( opt ) ;
wxCommandEvent dummy ;
OnChangeCatalog ( dummy ) ;
}
}
Note: This was done using a script! it's far from perfect but 95% of the work has been done already formatting-wise.
Document all functions, class, struct, union, enum, macro, variable, typedefs. This isn't the actual document in itself but empty documentation using any old documentation if it was there.
This was done using exuberant ctags to get tag info, then a TCL script to parse/remove old comments and convert them into Doxygen-style.
Some notes:
* Anything labeled 'DOCME' needs to be documented, @param and @return have been left blank as it would be annoying to delete the 'DOCME' from every one of those.
* Some multiline comments may have been munged into single line comments
* Leave the /// comments above global variables with a space, if they're harder to read then we'll be less likey to use them.
* Enum comments can go after the enumeration itself '[value] /// comment'
* include/aegisub/*.h haven't been converted yet, this will be done in a later commit
* Some documentation blocks are in the wrong place, in the .h when it should be in the .cpp, or vice versa.
See http://devel.aegisub.org/wiki/Doxygen for some details on Doxygen and a 'style guide'.
Originally committed to SVN as r3312.
2009-07-30 00:59:22 +02:00
/// @brief Loads style list
/// @param subs
///
2006-01-16 22:02:54 +01:00
void DialogStyleManager : : LoadCurrentStyles ( AssFile * subs ) {
using std : : list ;
AssStyle * style ;
// Reset
CurrentList - > Clear ( ) ;
styleMap . clear ( ) ;
// Add styles
for ( list < AssEntry * > : : iterator cur = subs - > Line . begin ( ) ; cur ! = subs - > Line . end ( ) ; cur + + ) {
style = AssEntry : : GetAsStyle ( * cur ) ;
if ( style ) {
if ( style - > Valid ) {
CurrentList - > Append ( style - > name ) ;
styleMap . push_back ( style ) ;
}
}
}
2006-12-26 22:45:23 +01:00
UpdateMoveButtons ( ) ;
2006-01-16 22:02:54 +01:00
}
Note: This was done using a script! it's far from perfect but 95% of the work has been done already formatting-wise.
Document all functions, class, struct, union, enum, macro, variable, typedefs. This isn't the actual document in itself but empty documentation using any old documentation if it was there.
This was done using exuberant ctags to get tag info, then a TCL script to parse/remove old comments and convert them into Doxygen-style.
Some notes:
* Anything labeled 'DOCME' needs to be documented, @param and @return have been left blank as it would be annoying to delete the 'DOCME' from every one of those.
* Some multiline comments may have been munged into single line comments
* Leave the /// comments above global variables with a space, if they're harder to read then we'll be less likey to use them.
* Enum comments can go after the enumeration itself '[value] /// comment'
* include/aegisub/*.h haven't been converted yet, this will be done in a later commit
* Some documentation blocks are in the wrong place, in the .h when it should be in the .cpp, or vice versa.
See http://devel.aegisub.org/wiki/Doxygen for some details on Doxygen and a 'style guide'.
Originally committed to SVN as r3312.
2009-07-30 00:59:22 +02:00
/// @brief DOCME
///
2006-01-16 22:02:54 +01:00
void DialogStyleManager : : LoadStorageStyles ( ) {
using std : : list ;
AssStyle * style ;
// Reset
StorageList - > Clear ( ) ;
styleStorageMap . clear ( ) ;
// Add styles
for ( list < AssStyle * > : : iterator cur = Store . style . begin ( ) ; cur ! = Store . style . end ( ) ; cur + + ) {
style = * cur ;
if ( style ) {
if ( style - > Valid ) {
StorageList - > Append ( style - > name ) ;
styleStorageMap . push_back ( style ) ;
}
}
}
// Flag change
wxCommandEvent dummy ;
OnStorageChange ( dummy ) ;
2006-12-26 22:45:23 +01:00
UpdateMoveButtons ( ) ;
2006-01-16 22:02:54 +01:00
}
Note: This was done using a script! it's far from perfect but 95% of the work has been done already formatting-wise.
Document all functions, class, struct, union, enum, macro, variable, typedefs. This isn't the actual document in itself but empty documentation using any old documentation if it was there.
This was done using exuberant ctags to get tag info, then a TCL script to parse/remove old comments and convert them into Doxygen-style.
Some notes:
* Anything labeled 'DOCME' needs to be documented, @param and @return have been left blank as it would be annoying to delete the 'DOCME' from every one of those.
* Some multiline comments may have been munged into single line comments
* Leave the /// comments above global variables with a space, if they're harder to read then we'll be less likey to use them.
* Enum comments can go after the enumeration itself '[value] /// comment'
* include/aegisub/*.h haven't been converted yet, this will be done in a later commit
* Some documentation blocks are in the wrong place, in the .h when it should be in the .cpp, or vice versa.
See http://devel.aegisub.org/wiki/Doxygen for some details on Doxygen and a 'style guide'.
Originally committed to SVN as r3312.
2009-07-30 00:59:22 +02:00
/// @brief Enables or disables storage actions
/// @param state
///
2006-01-16 22:02:54 +01:00
void DialogStyleManager : : StorageActions ( bool state ) {
StorageList - > Enable ( state ) ;
MoveToLocal - > Enable ( state ) ;
StorageNew - > Enable ( state ) ;
StorageCopy - > Enable ( state ) ;
StorageDelete - > Enable ( state ) ;
wxCommandEvent dummy ;
OnStorageChange ( dummy ) ;
wxArrayInt selections ;
if ( CurrentList - > GetSelections ( selections ) ! = 0 ) MoveToStorage - > Enable ( state ) ;
2006-12-26 22:45:23 +01:00
UpdateMoveButtons ( ) ;
2006-01-16 22:02:54 +01:00
}
///////////////
// Event table
BEGIN_EVENT_TABLE ( DialogStyleManager , wxDialog )
EVT_BUTTON ( wxID_CLOSE , DialogStyleManager : : OnClose )
EVT_BUTTON ( BUTTON_CATALOG_NEW , DialogStyleManager : : OnCatalogNew )
EVT_BUTTON ( BUTTON_CATALOG_DELETE , DialogStyleManager : : OnCatalogDelete )
EVT_COMBOBOX ( LIST_CATALOG , DialogStyleManager : : OnChangeCatalog )
EVT_LISTBOX ( LIST_CURRENT , DialogStyleManager : : OnCurrentChange )
EVT_LISTBOX ( LIST_STORAGE , DialogStyleManager : : OnStorageChange )
EVT_LISTBOX_DCLICK ( LIST_STORAGE , DialogStyleManager : : OnStorageEdit )
EVT_LISTBOX_DCLICK ( LIST_CURRENT , DialogStyleManager : : OnCurrentEdit )
EVT_BUTTON ( BUTTON_CURRENT_COPYTO , DialogStyleManager : : OnCopyToStorage )
EVT_BUTTON ( BUTTON_STORAGE_COPYTO , DialogStyleManager : : OnCopyToCurrent )
2006-10-20 00:53:06 +02:00
EVT_BUTTON ( BUTTON_CURRENT_EDIT , DialogStyleManager : : OnCurrentEdit )
EVT_BUTTON ( BUTTON_STORAGE_EDIT , DialogStyleManager : : OnStorageEdit )
2006-01-16 22:02:54 +01:00
EVT_BUTTON ( BUTTON_CURRENT_COPY , DialogStyleManager : : OnCurrentCopy )
EVT_BUTTON ( BUTTON_STORAGE_COPY , DialogStyleManager : : OnStorageCopy )
EVT_BUTTON ( BUTTON_CURRENT_NEW , DialogStyleManager : : OnCurrentNew )
EVT_BUTTON ( BUTTON_STORAGE_NEW , DialogStyleManager : : OnStorageNew )
EVT_BUTTON ( BUTTON_CURRENT_DELETE , DialogStyleManager : : OnCurrentDelete )
EVT_BUTTON ( BUTTON_STORAGE_DELETE , DialogStyleManager : : OnStorageDelete )
2006-12-26 05:48:53 +01:00
EVT_BUTTON ( BUTTON_CURRENT_IMPORT , DialogStyleManager : : OnCurrentImport )
2006-12-26 22:45:23 +01:00
EVT_BUTTON ( BUTTON_CURRENT_UP , DialogStyleManager : : OnCurrentMoveUp )
EVT_BUTTON ( BUTTON_CURRENT_TOP , DialogStyleManager : : OnCurrentMoveTop )
EVT_BUTTON ( BUTTON_CURRENT_DOWN , DialogStyleManager : : OnCurrentMoveDown )
EVT_BUTTON ( BUTTON_CURRENT_BOTTOM , DialogStyleManager : : OnCurrentMoveBottom )
2006-12-26 23:28:44 +01:00
EVT_BUTTON ( BUTTON_CURRENT_SORT , DialogStyleManager : : OnCurrentSort )
2006-12-26 22:45:23 +01:00
EVT_BUTTON ( BUTTON_STORAGE_UP , DialogStyleManager : : OnStorageMoveUp )
EVT_BUTTON ( BUTTON_STORAGE_TOP , DialogStyleManager : : OnStorageMoveTop )
EVT_BUTTON ( BUTTON_STORAGE_DOWN , DialogStyleManager : : OnStorageMoveDown )
EVT_BUTTON ( BUTTON_STORAGE_BOTTOM , DialogStyleManager : : OnStorageMoveBottom )
2006-12-26 23:28:44 +01:00
EVT_BUTTON ( BUTTON_STORAGE_SORT , DialogStyleManager : : OnStorageSort )
2006-01-16 22:02:54 +01:00
END_EVENT_TABLE ( )
//////////
// Events
Note: This was done using a script! it's far from perfect but 95% of the work has been done already formatting-wise.
Document all functions, class, struct, union, enum, macro, variable, typedefs. This isn't the actual document in itself but empty documentation using any old documentation if it was there.
This was done using exuberant ctags to get tag info, then a TCL script to parse/remove old comments and convert them into Doxygen-style.
Some notes:
* Anything labeled 'DOCME' needs to be documented, @param and @return have been left blank as it would be annoying to delete the 'DOCME' from every one of those.
* Some multiline comments may have been munged into single line comments
* Leave the /// comments above global variables with a space, if they're harder to read then we'll be less likey to use them.
* Enum comments can go after the enumeration itself '[value] /// comment'
* include/aegisub/*.h haven't been converted yet, this will be done in a later commit
* Some documentation blocks are in the wrong place, in the .h when it should be in the .cpp, or vice versa.
See http://devel.aegisub.org/wiki/Doxygen for some details on Doxygen and a 'style guide'.
Originally committed to SVN as r3312.
2009-07-30 00:59:22 +02:00
/// @brief Close
/// @param event
///
2006-01-16 22:02:54 +01:00
void DialogStyleManager : : OnClose ( wxCommandEvent & event ) {
GetPosition ( & lastx , & lasty ) ;
Close ( ) ;
}
Note: This was done using a script! it's far from perfect but 95% of the work has been done already formatting-wise.
Document all functions, class, struct, union, enum, macro, variable, typedefs. This isn't the actual document in itself but empty documentation using any old documentation if it was there.
This was done using exuberant ctags to get tag info, then a TCL script to parse/remove old comments and convert them into Doxygen-style.
Some notes:
* Anything labeled 'DOCME' needs to be documented, @param and @return have been left blank as it would be annoying to delete the 'DOCME' from every one of those.
* Some multiline comments may have been munged into single line comments
* Leave the /// comments above global variables with a space, if they're harder to read then we'll be less likey to use them.
* Enum comments can go after the enumeration itself '[value] /// comment'
* include/aegisub/*.h haven't been converted yet, this will be done in a later commit
* Some documentation blocks are in the wrong place, in the .h when it should be in the .cpp, or vice versa.
See http://devel.aegisub.org/wiki/Doxygen for some details on Doxygen and a 'style guide'.
Originally committed to SVN as r3312.
2009-07-30 00:59:22 +02:00
/// @brief Change catalog entry
/// @param event
///
2006-01-16 22:02:54 +01:00
void DialogStyleManager : : OnChangeCatalog ( wxCommandEvent & event ) {
int sel = CatalogList - > GetSelection ( ) ;
if ( sel ! = wxNOT_FOUND ) {
StorageActions ( true ) ;
Store . Load ( CatalogList - > GetString ( sel ) ) ;
LoadStorageStyles ( ) ;
}
else {
StorageActions ( false ) ;
Store . Clear ( ) ;
LoadStorageStyles ( ) ;
}
2006-12-26 22:45:23 +01:00
UpdateMoveButtons ( ) ;
2006-01-16 22:02:54 +01:00
}
Note: This was done using a script! it's far from perfect but 95% of the work has been done already formatting-wise.
Document all functions, class, struct, union, enum, macro, variable, typedefs. This isn't the actual document in itself but empty documentation using any old documentation if it was there.
This was done using exuberant ctags to get tag info, then a TCL script to parse/remove old comments and convert them into Doxygen-style.
Some notes:
* Anything labeled 'DOCME' needs to be documented, @param and @return have been left blank as it would be annoying to delete the 'DOCME' from every one of those.
* Some multiline comments may have been munged into single line comments
* Leave the /// comments above global variables with a space, if they're harder to read then we'll be less likey to use them.
* Enum comments can go after the enumeration itself '[value] /// comment'
* include/aegisub/*.h haven't been converted yet, this will be done in a later commit
* Some documentation blocks are in the wrong place, in the .h when it should be in the .cpp, or vice versa.
See http://devel.aegisub.org/wiki/Doxygen for some details on Doxygen and a 'style guide'.
Originally committed to SVN as r3312.
2009-07-30 00:59:22 +02:00
/// @brief New catalog entry
/// @param event
/// @return
///
2006-01-16 22:02:54 +01:00
void DialogStyleManager : : OnCatalogNew ( wxCommandEvent & event ) {
wxString name = wxGetTextFromUser ( _ ( " New storage name: " ) , _ ( " New catalog entry " ) , _T ( " " ) , this ) ;
if ( ! name . empty ( ) ) {
2006-11-23 20:08:46 +01:00
// Remove bad characters from the name
wxString badchars = wxFileName : : GetForbiddenChars ( ) ;
int badchars_removed = 0 ;
for ( size_t i = 0 ; i < name . Length ( ) ; + + i ) {
for ( size_t j = 0 ; j < badchars . Length ( ) ; + + j ) {
if ( name [ i ] = = badchars [ j ] ) {
name [ i ] = _T ( ' _ ' ) ;
+ + badchars_removed ;
}
}
}
2007-04-08 02:10:42 +02:00
2008-09-06 13:35:36 +02:00
// Make sure that there is no storage with the same name (case insensitive search since Windows filenames are case insensitive)
if ( CatalogList - > FindString ( name , false ) ! = wxNOT_FOUND ) {
2009-07-24 04:10:41 +02:00
wxMessageBox ( _ ( " A catalog with that name already exists. " ) , _ ( " Catalog name conflict " ) , wxICON_ERROR | wxOK ) ;
2007-04-08 02:10:42 +02:00
return ;
}
// Warn about bad characters
2006-11-23 20:08:46 +01:00
if ( badchars_removed > 0 ) {
2007-04-08 02:10:42 +02:00
wxMessageBox ( wxString : : Format ( _ ( " The specified catalog name contains one or more illegal characters. They have been replaced with underscores instead. \n The catalog has been renamed to \" %s \" . " ) , name . c_str ( ) ) , _ ( " Invalid characters " ) ) ;
2006-11-23 20:08:46 +01:00
}
2007-04-08 02:10:42 +02:00
// Add to list of storages
2006-01-16 22:02:54 +01:00
Store . Clear ( ) ;
StorageList - > Clear ( ) ;
CatalogList - > Append ( name ) ;
CatalogList - > SetStringSelection ( name ) ;
StorageActions ( true ) ;
2007-04-08 02:10:42 +02:00
// Save
2007-06-21 02:46:50 +02:00
wxString dirname = StandardPaths : : DecodePath ( _T ( " ?user/catalog/ " ) ) ;
2006-01-16 22:02:54 +01:00
if ( ! wxDirExists ( dirname ) ) {
if ( ! wxMkdir ( dirname ) ) {
2007-07-18 15:46:38 +02:00
throw _T ( " Failed creating directory for style catalogues " ) ;
2006-01-16 22:02:54 +01:00
}
}
Store . Save ( name ) ;
}
2006-12-26 22:45:23 +01:00
UpdateMoveButtons ( ) ;
2006-01-16 22:02:54 +01:00
}
Note: This was done using a script! it's far from perfect but 95% of the work has been done already formatting-wise.
Document all functions, class, struct, union, enum, macro, variable, typedefs. This isn't the actual document in itself but empty documentation using any old documentation if it was there.
This was done using exuberant ctags to get tag info, then a TCL script to parse/remove old comments and convert them into Doxygen-style.
Some notes:
* Anything labeled 'DOCME' needs to be documented, @param and @return have been left blank as it would be annoying to delete the 'DOCME' from every one of those.
* Some multiline comments may have been munged into single line comments
* Leave the /// comments above global variables with a space, if they're harder to read then we'll be less likey to use them.
* Enum comments can go after the enumeration itself '[value] /// comment'
* include/aegisub/*.h haven't been converted yet, this will be done in a later commit
* Some documentation blocks are in the wrong place, in the .h when it should be in the .cpp, or vice versa.
See http://devel.aegisub.org/wiki/Doxygen for some details on Doxygen and a 'style guide'.
Originally committed to SVN as r3312.
2009-07-30 00:59:22 +02:00
/// @brief Catalog delete
/// @param event
///
2006-01-16 22:02:54 +01:00
void DialogStyleManager : : OnCatalogDelete ( wxCommandEvent & event ) {
int sel = CatalogList - > GetSelection ( ) ;
if ( sel ! = wxNOT_FOUND ) {
wxString name = CatalogList - > GetString ( sel ) ;
2007-09-12 01:22:26 +02:00
wxString message = wxString : : Format ( _ ( " Are you sure you want to delete the storage \" %s \" from the catalog? " ) , name . c_str ( ) ) ;
2006-01-16 22:02:54 +01:00
int option = wxMessageBox ( message , _ ( " Confirm delete " ) , wxYES_NO | wxICON_EXCLAMATION , this ) ;
if ( option = = wxYES ) {
2007-06-21 02:46:50 +02:00
wxRemoveFile ( StandardPaths : : DecodePath ( _T ( " ?user/catalog/ " ) + name + _T ( " .sty " ) ) ) ;
2006-01-16 22:02:54 +01:00
CatalogList - > Delete ( sel ) ;
StorageList - > Clear ( ) ;
StorageActions ( false ) ;
}
}
2006-12-26 22:45:23 +01:00
UpdateMoveButtons ( ) ;
2006-01-16 22:02:54 +01:00
}
Note: This was done using a script! it's far from perfect but 95% of the work has been done already formatting-wise.
Document all functions, class, struct, union, enum, macro, variable, typedefs. This isn't the actual document in itself but empty documentation using any old documentation if it was there.
This was done using exuberant ctags to get tag info, then a TCL script to parse/remove old comments and convert them into Doxygen-style.
Some notes:
* Anything labeled 'DOCME' needs to be documented, @param and @return have been left blank as it would be annoying to delete the 'DOCME' from every one of those.
* Some multiline comments may have been munged into single line comments
* Leave the /// comments above global variables with a space, if they're harder to read then we'll be less likey to use them.
* Enum comments can go after the enumeration itself '[value] /// comment'
* include/aegisub/*.h haven't been converted yet, this will be done in a later commit
* Some documentation blocks are in the wrong place, in the .h when it should be in the .cpp, or vice versa.
See http://devel.aegisub.org/wiki/Doxygen for some details on Doxygen and a 'style guide'.
Originally committed to SVN as r3312.
2009-07-30 00:59:22 +02:00
/// @brief Edit style on storage
/// @param event
///
2006-01-16 22:02:54 +01:00
void DialogStyleManager : : OnStorageEdit ( wxCommandEvent & event ) {
wxArrayInt selections ;
int n = StorageList - > GetSelections ( selections ) ;
AssStyle * temp ;
if ( n = = 1 ) {
temp = styleStorageMap . at ( selections [ 0 ] ) ;
2007-07-27 08:14:38 +02:00
DialogStyleEditor editor ( this , temp , grid , false , & Store ) ;
2006-01-16 22:02:54 +01:00
int modified = editor . ShowModal ( ) ;
if ( modified ) {
//LoadStorageStyles();
StorageList - > SetString ( selections [ 0 ] , temp - > name ) ;
Store . Save ( CatalogList - > GetString ( CatalogList - > GetSelection ( ) ) ) ;
}
}
else if ( n > 1 ) {
2006-12-26 22:45:23 +01:00
}
UpdateMoveButtons ( ) ;
2006-01-16 22:02:54 +01:00
}
Note: This was done using a script! it's far from perfect but 95% of the work has been done already formatting-wise.
Document all functions, class, struct, union, enum, macro, variable, typedefs. This isn't the actual document in itself but empty documentation using any old documentation if it was there.
This was done using exuberant ctags to get tag info, then a TCL script to parse/remove old comments and convert them into Doxygen-style.
Some notes:
* Anything labeled 'DOCME' needs to be documented, @param and @return have been left blank as it would be annoying to delete the 'DOCME' from every one of those.
* Some multiline comments may have been munged into single line comments
* Leave the /// comments above global variables with a space, if they're harder to read then we'll be less likey to use them.
* Enum comments can go after the enumeration itself '[value] /// comment'
* include/aegisub/*.h haven't been converted yet, this will be done in a later commit
* Some documentation blocks are in the wrong place, in the .h when it should be in the .cpp, or vice versa.
See http://devel.aegisub.org/wiki/Doxygen for some details on Doxygen and a 'style guide'.
Originally committed to SVN as r3312.
2009-07-30 00:59:22 +02:00
/// @brief Edit style on current script
/// @param event
///
2006-01-16 22:02:54 +01:00
void DialogStyleManager : : OnCurrentEdit ( wxCommandEvent & event ) {
wxArrayInt selections ;
int n = CurrentList - > GetSelections ( selections ) ;
AssStyle * temp ;
if ( n = = 1 ) {
temp = styleMap . at ( selections [ 0 ] ) ;
2007-07-27 08:14:38 +02:00
DialogStyleEditor editor ( this , temp , grid , true , & Store ) ;
2006-01-16 22:02:54 +01:00
int modified = editor . ShowModal ( ) ;
if ( modified ) {
CurrentList - > SetString ( selections [ 0 ] , temp - > name ) ;
}
}
else if ( n > 1 ) {
}
2006-12-26 22:45:23 +01:00
UpdateMoveButtons ( ) ;
2006-01-16 22:02:54 +01:00
}
Note: This was done using a script! it's far from perfect but 95% of the work has been done already formatting-wise.
Document all functions, class, struct, union, enum, macro, variable, typedefs. This isn't the actual document in itself but empty documentation using any old documentation if it was there.
This was done using exuberant ctags to get tag info, then a TCL script to parse/remove old comments and convert them into Doxygen-style.
Some notes:
* Anything labeled 'DOCME' needs to be documented, @param and @return have been left blank as it would be annoying to delete the 'DOCME' from every one of those.
* Some multiline comments may have been munged into single line comments
* Leave the /// comments above global variables with a space, if they're harder to read then we'll be less likey to use them.
* Enum comments can go after the enumeration itself '[value] /// comment'
* include/aegisub/*.h haven't been converted yet, this will be done in a later commit
* Some documentation blocks are in the wrong place, in the .h when it should be in the .cpp, or vice versa.
See http://devel.aegisub.org/wiki/Doxygen for some details on Doxygen and a 'style guide'.
Originally committed to SVN as r3312.
2009-07-30 00:59:22 +02:00
/// @brief Selection on current script changed
/// @param event
///
2006-01-16 22:02:54 +01:00
void DialogStyleManager : : OnCurrentChange ( wxCommandEvent & event ) {
wxArrayInt selections ;
int n = CurrentList - > GetSelections ( selections ) ;
2006-10-20 00:53:06 +02:00
CurrentEdit - > Enable ( n = = 1 ) ;
CurrentCopy - > Enable ( n = = 1 ) ;
CurrentDelete - > Enable ( n > 0 ) ;
MoveToStorage - > Enable ( n > 0 ) ;
2006-12-26 22:45:23 +01:00
UpdateMoveButtons ( ) ;
2006-01-16 22:02:54 +01:00
}
Note: This was done using a script! it's far from perfect but 95% of the work has been done already formatting-wise.
Document all functions, class, struct, union, enum, macro, variable, typedefs. This isn't the actual document in itself but empty documentation using any old documentation if it was there.
This was done using exuberant ctags to get tag info, then a TCL script to parse/remove old comments and convert them into Doxygen-style.
Some notes:
* Anything labeled 'DOCME' needs to be documented, @param and @return have been left blank as it would be annoying to delete the 'DOCME' from every one of those.
* Some multiline comments may have been munged into single line comments
* Leave the /// comments above global variables with a space, if they're harder to read then we'll be less likey to use them.
* Enum comments can go after the enumeration itself '[value] /// comment'
* include/aegisub/*.h haven't been converted yet, this will be done in a later commit
* Some documentation blocks are in the wrong place, in the .h when it should be in the .cpp, or vice versa.
See http://devel.aegisub.org/wiki/Doxygen for some details on Doxygen and a 'style guide'.
Originally committed to SVN as r3312.
2009-07-30 00:59:22 +02:00
/// @brief Selection on storage changed
/// @param event
///
2006-01-16 22:02:54 +01:00
void DialogStyleManager : : OnStorageChange ( wxCommandEvent & event ) {
wxArrayInt selections ;
int n = StorageList - > GetSelections ( selections ) ;
2006-10-20 00:53:06 +02:00
StorageEdit - > Enable ( n = = 1 ) ;
StorageCopy - > Enable ( n = = 1 ) ;
StorageDelete - > Enable ( n > 0 ) ;
MoveToLocal - > Enable ( n > 0 ) ;
2006-12-26 22:45:23 +01:00
UpdateMoveButtons ( ) ;
2006-01-16 22:02:54 +01:00
}
Note: This was done using a script! it's far from perfect but 95% of the work has been done already formatting-wise.
Document all functions, class, struct, union, enum, macro, variable, typedefs. This isn't the actual document in itself but empty documentation using any old documentation if it was there.
This was done using exuberant ctags to get tag info, then a TCL script to parse/remove old comments and convert them into Doxygen-style.
Some notes:
* Anything labeled 'DOCME' needs to be documented, @param and @return have been left blank as it would be annoying to delete the 'DOCME' from every one of those.
* Some multiline comments may have been munged into single line comments
* Leave the /// comments above global variables with a space, if they're harder to read then we'll be less likey to use them.
* Enum comments can go after the enumeration itself '[value] /// comment'
* include/aegisub/*.h haven't been converted yet, this will be done in a later commit
* Some documentation blocks are in the wrong place, in the .h when it should be in the .cpp, or vice versa.
See http://devel.aegisub.org/wiki/Doxygen for some details on Doxygen and a 'style guide'.
Originally committed to SVN as r3312.
2009-07-30 00:59:22 +02:00
/// @brief Copy to Storage
/// @param event
/// @return
///
2006-01-16 22:02:54 +01:00
void DialogStyleManager : : OnCopyToStorage ( wxCommandEvent & event ) {
// Check if there is actually a storage
if ( ! StorageNew - > IsEnabled ( ) ) {
return ;
}
wxArrayInt selections ;
int n = CurrentList - > GetSelections ( selections ) ;
2009-07-18 04:52:46 +02:00
for ( int i = 0 ; i < n ; i + + ) {
wxString styleName = CurrentList - > GetString ( selections [ i ] ) ;
bool addStyle = true ;
for ( std : : list < AssStyle * > : : iterator style = Store . style . begin ( ) ; style ! = Store . style . end ( ) ; + + style ) {
if ( ( * style ) - > name . CmpNoCase ( styleName ) = = 0 ) {
addStyle = false ;
if ( wxYES = = wxMessageBox ( wxString : : Format ( _T ( " There is already a style with the name \" %s \" on the current storage. Proceed and overwrite anyway? " ) , styleName ) , _T ( " Style name collision. " ) , wxYES_NO ) ) {
* * style = * styleMap . at ( selections [ i ] ) ;
}
break ;
2008-01-13 07:42:34 +01:00
}
2009-07-18 04:52:46 +02:00
}
if ( addStyle ) {
AssStyle * temp = new AssStyle ( * styleMap . at ( selections [ i ] ) ) ;
Store . style . push_back ( temp ) ;
2006-01-16 22:02:54 +01:00
}
}
Store . Save ( CatalogList - > GetString ( CatalogList - > GetSelection ( ) ) ) ;
LoadStorageStyles ( ) ;
2006-12-26 22:45:23 +01:00
UpdateMoveButtons ( ) ;
2006-01-16 22:02:54 +01:00
}
Note: This was done using a script! it's far from perfect but 95% of the work has been done already formatting-wise.
Document all functions, class, struct, union, enum, macro, variable, typedefs. This isn't the actual document in itself but empty documentation using any old documentation if it was there.
This was done using exuberant ctags to get tag info, then a TCL script to parse/remove old comments and convert them into Doxygen-style.
Some notes:
* Anything labeled 'DOCME' needs to be documented, @param and @return have been left blank as it would be annoying to delete the 'DOCME' from every one of those.
* Some multiline comments may have been munged into single line comments
* Leave the /// comments above global variables with a space, if they're harder to read then we'll be less likey to use them.
* Enum comments can go after the enumeration itself '[value] /// comment'
* include/aegisub/*.h haven't been converted yet, this will be done in a later commit
* Some documentation blocks are in the wrong place, in the .h when it should be in the .cpp, or vice versa.
See http://devel.aegisub.org/wiki/Doxygen for some details on Doxygen and a 'style guide'.
Originally committed to SVN as r3312.
2009-07-30 00:59:22 +02:00
/// @brief Copy to Current
/// @param event
///
2006-01-16 22:02:54 +01:00
void DialogStyleManager : : OnCopyToCurrent ( wxCommandEvent & event ) {
wxArrayInt selections ;
int n = StorageList - > GetSelections ( selections ) ;
2009-07-18 04:52:46 +02:00
for ( int i = 0 ; i < n ; i + + ) {
wxString styleName = StorageList - > GetString ( selections [ i ] ) ;
bool addStyle = true ;
for ( std : : vector < AssStyle * > : : iterator style = styleMap . begin ( ) ; style ! = styleMap . end ( ) ; + + style ) {
if ( ( * style ) - > name . CmpNoCase ( styleName ) = = 0 ) {
addStyle = false ;
if ( wxYES = = wxMessageBox ( wxString : : Format ( _T ( " There is already a style with the name \" %s \" on the current script. Proceed and overwrite anyway? " ) , styleName ) , _T ( " Style name collision. " ) , wxYES_NO ) ) {
* * style = * styleStorageMap . at ( selections [ i ] ) ;
}
break ;
}
2006-12-17 21:30:59 +01:00
}
2009-07-18 04:52:46 +02:00
if ( addStyle ) {
AssStyle * temp = new AssStyle ( * styleStorageMap . at ( selections [ i ] ) ) ;
2006-01-16 22:02:54 +01:00
AssFile : : top - > InsertStyle ( temp ) ;
}
}
LoadCurrentStyles ( AssFile : : top ) ;
2007-01-26 01:47:42 +01:00
grid - > ass - > FlagAsModified ( _ ( " style copy " ) ) ;
2006-01-16 22:02:54 +01:00
grid - > CommitChanges ( ) ;
2006-12-26 22:45:23 +01:00
UpdateMoveButtons ( ) ;
2006-01-16 22:02:54 +01:00
}
Note: This was done using a script! it's far from perfect but 95% of the work has been done already formatting-wise.
Document all functions, class, struct, union, enum, macro, variable, typedefs. This isn't the actual document in itself but empty documentation using any old documentation if it was there.
This was done using exuberant ctags to get tag info, then a TCL script to parse/remove old comments and convert them into Doxygen-style.
Some notes:
* Anything labeled 'DOCME' needs to be documented, @param and @return have been left blank as it would be annoying to delete the 'DOCME' from every one of those.
* Some multiline comments may have been munged into single line comments
* Leave the /// comments above global variables with a space, if they're harder to read then we'll be less likey to use them.
* Enum comments can go after the enumeration itself '[value] /// comment'
* include/aegisub/*.h haven't been converted yet, this will be done in a later commit
* Some documentation blocks are in the wrong place, in the .h when it should be in the .cpp, or vice versa.
See http://devel.aegisub.org/wiki/Doxygen for some details on Doxygen and a 'style guide'.
Originally committed to SVN as r3312.
2009-07-30 00:59:22 +02:00
/// @brief Storage make copy
/// @param event
///
2006-01-16 22:02:54 +01:00
void DialogStyleManager : : OnStorageCopy ( wxCommandEvent & event ) {
wxArrayInt selections ;
2007-01-27 00:42:19 +01:00
StorageList - > GetSelections ( selections ) ;
2009-07-18 04:52:46 +02:00
AssStyle * temp = new AssStyle ( * ( styleStorageMap . at ( selections [ 0 ] ) ) ) ;
2006-01-16 22:02:54 +01:00
wxString newName = _ ( " Copy of " ) ;
newName + = temp - > name ;
temp - > name = newName ;
2007-07-27 08:14:38 +02:00
DialogStyleEditor editor ( this , temp , grid , false , & Store ) ;
2006-01-16 22:02:54 +01:00
int modified = editor . ShowModal ( ) ;
if ( modified ) {
Store . style . push_back ( temp ) ;
Store . Save ( CatalogList - > GetString ( CatalogList - > GetSelection ( ) ) ) ;
LoadStorageStyles ( ) ;
StorageList - > SetStringSelection ( temp - > name ) ; // the copy/delete/copy-to-local buttons stay disabled after this?
}
else delete temp ;
2006-12-26 22:45:23 +01:00
UpdateMoveButtons ( ) ;
2006-01-16 22:02:54 +01:00
}
Note: This was done using a script! it's far from perfect but 95% of the work has been done already formatting-wise.
Document all functions, class, struct, union, enum, macro, variable, typedefs. This isn't the actual document in itself but empty documentation using any old documentation if it was there.
This was done using exuberant ctags to get tag info, then a TCL script to parse/remove old comments and convert them into Doxygen-style.
Some notes:
* Anything labeled 'DOCME' needs to be documented, @param and @return have been left blank as it would be annoying to delete the 'DOCME' from every one of those.
* Some multiline comments may have been munged into single line comments
* Leave the /// comments above global variables with a space, if they're harder to read then we'll be less likey to use them.
* Enum comments can go after the enumeration itself '[value] /// comment'
* include/aegisub/*.h haven't been converted yet, this will be done in a later commit
* Some documentation blocks are in the wrong place, in the .h when it should be in the .cpp, or vice versa.
See http://devel.aegisub.org/wiki/Doxygen for some details on Doxygen and a 'style guide'.
Originally committed to SVN as r3312.
2009-07-30 00:59:22 +02:00
/// @brief Current make copy
/// @param event
///
2006-01-16 22:02:54 +01:00
void DialogStyleManager : : OnCurrentCopy ( wxCommandEvent & event ) {
wxArrayInt selections ;
2007-01-27 00:42:19 +01:00
CurrentList - > GetSelections ( selections ) ;
2006-01-16 22:02:54 +01:00
2006-02-27 03:23:50 +01:00
AssStyle * temp = new AssStyle ( styleMap . at ( selections [ 0 ] ) - > GetEntryData ( ) ) ;
2006-01-16 22:02:54 +01:00
wxString newName = _ ( " Copy of " ) ;
newName + = temp - > name ;
temp - > name = newName ;
2007-07-27 08:14:38 +02:00
DialogStyleEditor editor ( this , temp , grid , true , & Store ) ;
2006-01-16 22:02:54 +01:00
int modified = editor . ShowModal ( ) ;
if ( modified ) {
AssFile : : top - > InsertStyle ( temp ) ;
LoadCurrentStyles ( AssFile : : top ) ;
CurrentList - > SetStringSelection ( temp - > name ) ; // but even without this, the copy/delete/copy-to-storage buttons stay enabled?
}
else delete temp ;
2007-01-26 01:47:42 +01:00
grid - > ass - > FlagAsModified ( _ ( " style copy " ) ) ;
2006-01-16 22:02:54 +01:00
grid - > CommitChanges ( ) ;
2006-12-26 22:45:23 +01:00
UpdateMoveButtons ( ) ;
2006-01-16 22:02:54 +01:00
}
Note: This was done using a script! it's far from perfect but 95% of the work has been done already formatting-wise.
Document all functions, class, struct, union, enum, macro, variable, typedefs. This isn't the actual document in itself but empty documentation using any old documentation if it was there.
This was done using exuberant ctags to get tag info, then a TCL script to parse/remove old comments and convert them into Doxygen-style.
Some notes:
* Anything labeled 'DOCME' needs to be documented, @param and @return have been left blank as it would be annoying to delete the 'DOCME' from every one of those.
* Some multiline comments may have been munged into single line comments
* Leave the /// comments above global variables with a space, if they're harder to read then we'll be less likey to use them.
* Enum comments can go after the enumeration itself '[value] /// comment'
* include/aegisub/*.h haven't been converted yet, this will be done in a later commit
* Some documentation blocks are in the wrong place, in the .h when it should be in the .cpp, or vice versa.
See http://devel.aegisub.org/wiki/Doxygen for some details on Doxygen and a 'style guide'.
Originally committed to SVN as r3312.
2009-07-30 00:59:22 +02:00
/// @brief Copy to clipboard
/// @param list
/// @param v
///
2007-02-06 04:25:14 +01:00
void DialogStyleManager : : CopyToClipboard ( wxListBox * list , std : : vector < AssStyle * > v ) {
wxString data = _T ( " " ) ;
AssStyle * s ;
wxArrayInt selections ;
list - > GetSelections ( selections ) ;
for ( int unsigned i = 0 ; i < selections . size ( ) ; i + + ) {
if ( i ! = 0 ) data + = _T ( " \r \n " ) ;
s = v . at ( selections [ i ] ) ;
s - > UpdateData ( ) ;
data + = s - > GetEntryData ( ) ;
}
if ( wxTheClipboard - > Open ( ) ) {
wxTheClipboard - > SetData ( new wxTextDataObject ( data ) ) ;
wxTheClipboard - > Close ( ) ;
}
}
Note: This was done using a script! it's far from perfect but 95% of the work has been done already formatting-wise.
Document all functions, class, struct, union, enum, macro, variable, typedefs. This isn't the actual document in itself but empty documentation using any old documentation if it was there.
This was done using exuberant ctags to get tag info, then a TCL script to parse/remove old comments and convert them into Doxygen-style.
Some notes:
* Anything labeled 'DOCME' needs to be documented, @param and @return have been left blank as it would be annoying to delete the 'DOCME' from every one of those.
* Some multiline comments may have been munged into single line comments
* Leave the /// comments above global variables with a space, if they're harder to read then we'll be less likey to use them.
* Enum comments can go after the enumeration itself '[value] /// comment'
* include/aegisub/*.h haven't been converted yet, this will be done in a later commit
* Some documentation blocks are in the wrong place, in the .h when it should be in the .cpp, or vice versa.
See http://devel.aegisub.org/wiki/Doxygen for some details on Doxygen and a 'style guide'.
Originally committed to SVN as r3312.
2009-07-30 00:59:22 +02:00
/// @brief Paste from clipboard
///
2007-02-06 04:25:14 +01:00
void DialogStyleManager : : PasteToCurrent ( ) {
wxString data = _T ( " " ) ;
if ( wxTheClipboard - > Open ( ) ) {
if ( wxTheClipboard - > IsSupported ( wxDF_TEXT ) ) {
wxTextDataObject rawdata ;
wxTheClipboard - > GetData ( rawdata ) ;
data = rawdata . GetText ( ) ;
}
wxTheClipboard - > Close ( ) ;
}
wxStringTokenizer st ( data , _T ( ' \n ' ) ) ;
while ( st . HasMoreTokens ( ) ) {
2007-09-02 21:31:17 +02:00
try {
AssStyle * s = new AssStyle ( st . GetNextToken ( ) . Trim ( true ) ) ;
if ( s - > Valid ) {
while ( AssFile : : top - > GetStyle ( s - > name ) ! = NULL )
s - > name = _T ( " Copy of " ) + s - > name ;
s - > UpdateData ( ) ;
AssFile : : top - > InsertStyle ( s ) ;
LoadCurrentStyles ( AssFile : : top ) ;
grid - > ass - > FlagAsModified ( _ ( " style paste " ) ) ;
grid - > CommitChanges ( ) ;
}
else
wxMessageBox ( _ ( " Could not parse style " ) , _ ( " Could not parse style " ) , wxOK | wxICON_EXCLAMATION , this ) ;
}
catch ( . . . ) {
wxMessageBox ( _ ( " Could not parse style " ) , _ ( " Could not parse style " ) , wxOK | wxICON_EXCLAMATION , this ) ;
2007-02-06 04:25:14 +01:00
}
2007-09-02 21:31:17 +02:00
2007-02-06 04:25:14 +01:00
}
}
Note: This was done using a script! it's far from perfect but 95% of the work has been done already formatting-wise.
Document all functions, class, struct, union, enum, macro, variable, typedefs. This isn't the actual document in itself but empty documentation using any old documentation if it was there.
This was done using exuberant ctags to get tag info, then a TCL script to parse/remove old comments and convert them into Doxygen-style.
Some notes:
* Anything labeled 'DOCME' needs to be documented, @param and @return have been left blank as it would be annoying to delete the 'DOCME' from every one of those.
* Some multiline comments may have been munged into single line comments
* Leave the /// comments above global variables with a space, if they're harder to read then we'll be less likey to use them.
* Enum comments can go after the enumeration itself '[value] /// comment'
* include/aegisub/*.h haven't been converted yet, this will be done in a later commit
* Some documentation blocks are in the wrong place, in the .h when it should be in the .cpp, or vice versa.
See http://devel.aegisub.org/wiki/Doxygen for some details on Doxygen and a 'style guide'.
Originally committed to SVN as r3312.
2009-07-30 00:59:22 +02:00
/// @brief DOCME
///
2007-02-06 04:25:14 +01:00
void DialogStyleManager : : PasteToStorage ( ) {
wxString data = _T ( " " ) ;
if ( wxTheClipboard - > Open ( ) ) {
if ( wxTheClipboard - > IsSupported ( wxDF_TEXT ) ) {
wxTextDataObject rawdata ;
wxTheClipboard - > GetData ( rawdata ) ;
data = rawdata . GetText ( ) ;
}
wxTheClipboard - > Close ( ) ;
}
wxStringTokenizer st ( data , _T ( ' \n ' ) ) ;
while ( st . HasMoreTokens ( ) ) {
2007-09-02 21:31:17 +02:00
try {
AssStyle * s = new AssStyle ( st . GetNextToken ( ) . Trim ( true ) ) ;
if ( s - > Valid ) {
while ( Store . GetStyle ( s - > name ) ! = NULL )
s - > name = _T ( " Copy of " ) + s - > name ;
s - > UpdateData ( ) ;
Store . style . push_back ( s ) ;
Store . Save ( CatalogList - > GetString ( CatalogList - > GetSelection ( ) ) ) ;
LoadStorageStyles ( ) ;
StorageList - > SetStringSelection ( s - > name ) ;
}
else
wxMessageBox ( _ ( " Could not parse style " ) , _ ( " Could not parse style " ) , wxOK | wxICON_EXCLAMATION , this ) ;
2007-02-06 04:25:14 +01:00
}
2007-09-02 21:31:17 +02:00
catch ( . . . ) {
wxMessageBox ( _ ( " Could not parse style " ) , _ ( " Could not parse style " ) , wxOK | wxICON_EXCLAMATION , this ) ;
}
2007-02-06 04:25:14 +01:00
}
}
Note: This was done using a script! it's far from perfect but 95% of the work has been done already formatting-wise.
Document all functions, class, struct, union, enum, macro, variable, typedefs. This isn't the actual document in itself but empty documentation using any old documentation if it was there.
This was done using exuberant ctags to get tag info, then a TCL script to parse/remove old comments and convert them into Doxygen-style.
Some notes:
* Anything labeled 'DOCME' needs to be documented, @param and @return have been left blank as it would be annoying to delete the 'DOCME' from every one of those.
* Some multiline comments may have been munged into single line comments
* Leave the /// comments above global variables with a space, if they're harder to read then we'll be less likey to use them.
* Enum comments can go after the enumeration itself '[value] /// comment'
* include/aegisub/*.h haven't been converted yet, this will be done in a later commit
* Some documentation blocks are in the wrong place, in the .h when it should be in the .cpp, or vice versa.
See http://devel.aegisub.org/wiki/Doxygen for some details on Doxygen and a 'style guide'.
Originally committed to SVN as r3312.
2009-07-30 00:59:22 +02:00
/// @brief Storage new
/// @param event
///
2006-01-16 22:02:54 +01:00
void DialogStyleManager : : OnStorageNew ( wxCommandEvent & event ) {
AssStyle * temp = new AssStyle ;
2007-07-27 08:14:38 +02:00
DialogStyleEditor editor ( this , temp , grid , false , & Store ) ;
2006-01-16 22:02:54 +01:00
int modified = editor . ShowModal ( ) ;
if ( modified ) {
Store . style . push_back ( temp ) ;
Store . Save ( CatalogList - > GetString ( CatalogList - > GetSelection ( ) ) ) ;
LoadStorageStyles ( ) ;
}
else delete temp ;
2006-12-26 22:45:23 +01:00
UpdateMoveButtons ( ) ;
2006-01-16 22:02:54 +01:00
}
Note: This was done using a script! it's far from perfect but 95% of the work has been done already formatting-wise.
Document all functions, class, struct, union, enum, macro, variable, typedefs. This isn't the actual document in itself but empty documentation using any old documentation if it was there.
This was done using exuberant ctags to get tag info, then a TCL script to parse/remove old comments and convert them into Doxygen-style.
Some notes:
* Anything labeled 'DOCME' needs to be documented, @param and @return have been left blank as it would be annoying to delete the 'DOCME' from every one of those.
* Some multiline comments may have been munged into single line comments
* Leave the /// comments above global variables with a space, if they're harder to read then we'll be less likey to use them.
* Enum comments can go after the enumeration itself '[value] /// comment'
* include/aegisub/*.h haven't been converted yet, this will be done in a later commit
* Some documentation blocks are in the wrong place, in the .h when it should be in the .cpp, or vice versa.
See http://devel.aegisub.org/wiki/Doxygen for some details on Doxygen and a 'style guide'.
Originally committed to SVN as r3312.
2009-07-30 00:59:22 +02:00
/// @brief Current new
/// @param event
///
2006-01-16 22:02:54 +01:00
void DialogStyleManager : : OnCurrentNew ( wxCommandEvent & event ) {
AssStyle * temp = new AssStyle ;
2007-07-27 08:14:38 +02:00
DialogStyleEditor editor ( this , temp , grid , true , & Store ) ;
2006-01-16 22:02:54 +01:00
int modified = editor . ShowModal ( ) ;
if ( modified ) {
AssFile : : top - > InsertStyle ( temp ) ;
LoadCurrentStyles ( AssFile : : top ) ;
}
else delete temp ;
2006-12-26 22:45:23 +01:00
UpdateMoveButtons ( ) ;
2006-01-16 22:02:54 +01:00
}
Note: This was done using a script! it's far from perfect but 95% of the work has been done already formatting-wise.
Document all functions, class, struct, union, enum, macro, variable, typedefs. This isn't the actual document in itself but empty documentation using any old documentation if it was there.
This was done using exuberant ctags to get tag info, then a TCL script to parse/remove old comments and convert them into Doxygen-style.
Some notes:
* Anything labeled 'DOCME' needs to be documented, @param and @return have been left blank as it would be annoying to delete the 'DOCME' from every one of those.
* Some multiline comments may have been munged into single line comments
* Leave the /// comments above global variables with a space, if they're harder to read then we'll be less likey to use them.
* Enum comments can go after the enumeration itself '[value] /// comment'
* include/aegisub/*.h haven't been converted yet, this will be done in a later commit
* Some documentation blocks are in the wrong place, in the .h when it should be in the .cpp, or vice versa.
See http://devel.aegisub.org/wiki/Doxygen for some details on Doxygen and a 'style guide'.
Originally committed to SVN as r3312.
2009-07-30 00:59:22 +02:00
/// @brief Storage delete
/// @param event
///
2006-01-16 22:02:54 +01:00
void DialogStyleManager : : OnStorageDelete ( wxCommandEvent & event ) {
wxArrayInt selections ;
int n = StorageList - > GetSelections ( selections ) ;
wxString message ;
if ( n ! = 1 ) {
message = _ ( " Are you sure you want to delete these " ) ;
message + = wxString : : Format ( _T ( " %i " ) , n ) ;
message + = _ ( " styles? " ) ;
}
else message = _ ( " Are you sure you want to delete this style? " ) ;
2007-02-05 20:09:45 +01:00
int option = wxMessageBox ( message , _ ( " Confirm delete from storage " ) , wxYES_NO | wxICON_EXCLAMATION , this ) ;
2006-01-16 22:02:54 +01:00
if ( option = = wxYES ) {
AssStyle * temp ;
for ( int i = 0 ; i < n ; i + + ) {
temp = styleStorageMap . at ( selections [ i ] ) ;
Store . style . remove ( temp ) ;
delete temp ;
}
Store . Save ( CatalogList - > GetString ( CatalogList - > GetSelection ( ) ) ) ;
LoadStorageStyles ( ) ;
// Set buttons
MoveToLocal - > Enable ( false ) ;
StorageCopy - > Enable ( false ) ;
StorageDelete - > Enable ( false ) ;
}
2006-12-26 22:45:23 +01:00
UpdateMoveButtons ( ) ;
2006-01-16 22:02:54 +01:00
}
Note: This was done using a script! it's far from perfect but 95% of the work has been done already formatting-wise.
Document all functions, class, struct, union, enum, macro, variable, typedefs. This isn't the actual document in itself but empty documentation using any old documentation if it was there.
This was done using exuberant ctags to get tag info, then a TCL script to parse/remove old comments and convert them into Doxygen-style.
Some notes:
* Anything labeled 'DOCME' needs to be documented, @param and @return have been left blank as it would be annoying to delete the 'DOCME' from every one of those.
* Some multiline comments may have been munged into single line comments
* Leave the /// comments above global variables with a space, if they're harder to read then we'll be less likey to use them.
* Enum comments can go after the enumeration itself '[value] /// comment'
* include/aegisub/*.h haven't been converted yet, this will be done in a later commit
* Some documentation blocks are in the wrong place, in the .h when it should be in the .cpp, or vice versa.
See http://devel.aegisub.org/wiki/Doxygen for some details on Doxygen and a 'style guide'.
Originally committed to SVN as r3312.
2009-07-30 00:59:22 +02:00
/// @brief Current delete
/// @param event
///
2006-01-16 22:02:54 +01:00
void DialogStyleManager : : OnCurrentDelete ( wxCommandEvent & event ) {
wxArrayInt selections ;
int n = CurrentList - > GetSelections ( selections ) ;
wxString message ;
if ( n ! = 1 ) {
message = _ ( " Are you sure you want to delete these " ) ;
message + = wxString : : Format ( _T ( " %i " ) , n ) ;
message + = _ ( " styles? " ) ;
}
else message = _ ( " Are you sure you want to delete this style? " ) ;
2007-02-05 20:09:45 +01:00
int option = wxMessageBox ( message , _ ( " Confirm delete from current " ) , wxYES_NO | wxICON_EXCLAMATION , this ) ;
2006-01-16 22:02:54 +01:00
if ( option = = wxYES ) {
AssStyle * temp ;
for ( int i = 0 ; i < n ; i + + ) {
temp = styleMap . at ( selections [ i ] ) ;
2006-12-26 05:48:53 +01:00
grid - > ass - > Line . remove ( temp ) ;
2006-01-16 22:02:54 +01:00
delete temp ;
}
2006-12-26 05:48:53 +01:00
LoadCurrentStyles ( grid - > ass ) ;
2006-01-16 22:02:54 +01:00
// Set buttons
MoveToStorage - > Enable ( false ) ;
CurrentCopy - > Enable ( false ) ;
CurrentDelete - > Enable ( false ) ;
2007-01-26 01:47:42 +01:00
grid - > ass - > FlagAsModified ( _ ( " style delete " ) ) ;
2006-01-16 22:02:54 +01:00
grid - > CommitChanges ( ) ;
}
2006-12-26 22:45:23 +01:00
UpdateMoveButtons ( ) ;
2006-01-16 22:02:54 +01:00
}
Note: This was done using a script! it's far from perfect but 95% of the work has been done already formatting-wise.
Document all functions, class, struct, union, enum, macro, variable, typedefs. This isn't the actual document in itself but empty documentation using any old documentation if it was there.
This was done using exuberant ctags to get tag info, then a TCL script to parse/remove old comments and convert them into Doxygen-style.
Some notes:
* Anything labeled 'DOCME' needs to be documented, @param and @return have been left blank as it would be annoying to delete the 'DOCME' from every one of those.
* Some multiline comments may have been munged into single line comments
* Leave the /// comments above global variables with a space, if they're harder to read then we'll be less likey to use them.
* Enum comments can go after the enumeration itself '[value] /// comment'
* include/aegisub/*.h haven't been converted yet, this will be done in a later commit
* Some documentation blocks are in the wrong place, in the .h when it should be in the .cpp, or vice versa.
See http://devel.aegisub.org/wiki/Doxygen for some details on Doxygen and a 'style guide'.
Originally committed to SVN as r3312.
2009-07-30 00:59:22 +02:00
/// @brief Import styles from another script
/// @param event
/// @return
///
2006-12-26 05:48:53 +01:00
void DialogStyleManager : : OnCurrentImport ( wxCommandEvent & event ) {
// Get file name
wxString path = Options . AsText ( _T ( " Last open subtitles path " ) ) ;
2007-01-22 20:31:49 +01:00
wxString filename = wxFileSelector ( _ ( " Open subtitles file " ) , path , _T ( " " ) , _T ( " " ) , AssFile : : GetWildcardList ( 0 ) , wxFD_OPEN | wxFD_FILE_MUST_EXIST ) ;
2006-12-26 05:48:53 +01:00
if ( ! filename . IsEmpty ( ) ) {
// Save path
wxFileName filepath ( filename ) ;
Options . SetText ( _T ( " Last open subtitles path " ) , filepath . GetPath ( ) ) ;
Options . Save ( ) ;
try {
// Load file
AssFile temp ;
temp . Load ( filename , _T ( " " ) , false ) ;
// Get styles
wxArrayString styles = temp . GetStyles ( ) ;
if ( styles . Count ( ) = = 0 | | ( styles . Count ( ) = = 1 & & styles [ 0 ] = = _T ( " Default " ) ) ) {
2008-01-17 21:30:44 +01:00
wxMessageBox ( _ ( " The selected file has no available styles. " ) , _ ( " Error Importing Styles " ) , wxOK ) ;
2006-12-26 05:48:53 +01:00
return ;
}
// Get selection
wxArrayInt selections ;
2009-06-12 01:30:33 +02:00
int res = wxGetSelectedChoices ( selections , _ ( " Choose styles to import: " ) , _ ( " Import Styles " ) , styles ) ;
2006-12-26 05:48:53 +01:00
if ( res = = - 1 | | selections . Count ( ) = = 0 ) return ;
bool modified = false ;
// Loop through selection
for ( unsigned int i = 0 ; i < selections . Count ( ) ; i + + ) {
// Check if there is already a style with that name
2008-09-06 13:35:36 +02:00
int test = CurrentList - > FindString ( styles [ selections [ i ] ] , false ) ;
2006-12-26 05:48:53 +01:00
if ( test ! = wxNOT_FOUND ) {
2007-07-27 07:58:55 +02:00
int answer = wxMessageBox ( wxString : : Format ( _T ( " There is already a style with the name \" %s \" on the current script. Overwrite? " ) , styles [ selections [ i ] ] . c_str ( ) ) , _T ( " Style name collision. " ) , wxYES_NO ) ;
if ( answer = = wxYES ) {
// Overwrite
modified = true ;
2008-09-06 13:35:36 +02:00
// The GetString->FindString mess is a silly workaround for the fact that to vsfilter
// (and the duplicate check a few lines above), style names aren't case sensitive, but to the
// rest of Aegisub they are.
* ( AssFile : : top - > GetStyle ( CurrentList - > GetString ( CurrentList - > FindString ( styles [ selections [ i ] ] , false ) ) ) ) = * temp . GetStyle ( styles [ selections [ i ] ] ) ;
2007-07-27 07:58:55 +02:00
}
continue ;
2006-12-26 05:48:53 +01:00
}
// Copy
modified = true ;
AssStyle * tempStyle = new AssStyle ;
* tempStyle = * temp . GetStyle ( styles [ selections [ i ] ] ) ;
AssFile : : top - > InsertStyle ( tempStyle ) ;
}
// Update
if ( modified ) {
LoadCurrentStyles ( grid - > ass ) ;
2007-01-26 01:47:42 +01:00
grid - > ass - > FlagAsModified ( _ ( " style import " ) ) ;
2006-12-26 05:48:53 +01:00
grid - > CommitChanges ( ) ;
}
}
catch ( . . . ) {
}
}
}
Note: This was done using a script! it's far from perfect but 95% of the work has been done already formatting-wise.
Document all functions, class, struct, union, enum, macro, variable, typedefs. This isn't the actual document in itself but empty documentation using any old documentation if it was there.
This was done using exuberant ctags to get tag info, then a TCL script to parse/remove old comments and convert them into Doxygen-style.
Some notes:
* Anything labeled 'DOCME' needs to be documented, @param and @return have been left blank as it would be annoying to delete the 'DOCME' from every one of those.
* Some multiline comments may have been munged into single line comments
* Leave the /// comments above global variables with a space, if they're harder to read then we'll be less likey to use them.
* Enum comments can go after the enumeration itself '[value] /// comment'
* include/aegisub/*.h haven't been converted yet, this will be done in a later commit
* Some documentation blocks are in the wrong place, in the .h when it should be in the .cpp, or vice versa.
See http://devel.aegisub.org/wiki/Doxygen for some details on Doxygen and a 'style guide'.
Originally committed to SVN as r3312.
2009-07-30 00:59:22 +02:00
/// @brief Update move buttons
///
2006-12-26 22:45:23 +01:00
void DialogStyleManager : : UpdateMoveButtons ( ) {
// Get storage selection
wxArrayInt sels ;
int n = StorageList - > GetSelections ( sels ) ;
int firstStor = - 1 ;
int lastStor = - 1 ;
if ( n ) {
firstStor = sels [ 0 ] ;
lastStor = sels [ n - 1 ] ;
}
int itemsStor = StorageList - > GetCount ( ) ;
2006-12-26 23:02:17 +01:00
// Check if selection is continuous
bool contStor = true ;
if ( n ) {
int last = sels [ 0 ] ;
for ( int i = 1 ; i < n ; i + + ) {
if ( sels [ i ] ! = last + 1 ) {
contStor = false ;
break ;
}
last = sels [ i ] ;
}
}
2006-12-26 22:45:23 +01:00
// Get current selection
n = CurrentList - > GetSelections ( sels ) ;
int firstCurr = - 1 ;
int lastCurr = - 1 ;
if ( n ) {
firstCurr = sels [ 0 ] ;
lastCurr = sels [ n - 1 ] ;
}
int itemsCurr = CurrentList - > GetCount ( ) ;
2006-12-26 23:02:17 +01:00
// Check if selection is continuous
bool contCurr = true ;
if ( n ) {
int last = sels [ 0 ] ;
for ( int i = 1 ; i < n ; i + + ) {
if ( sels [ i ] ! = last + 1 ) {
contCurr = false ;
break ;
}
last = sels [ i ] ;
}
}
2006-12-26 22:45:23 +01:00
// Set values
2006-12-26 23:02:17 +01:00
StorageMoveUp - > Enable ( contStor & & firstStor > 0 ) ;
StorageMoveTop - > Enable ( contStor & & firstStor > 0 ) ;
StorageMoveDown - > Enable ( contStor & & lastStor ! = - 1 & & lastStor < itemsStor - 1 ) ;
StorageMoveBottom - > Enable ( contStor & & lastStor ! = - 1 & & lastStor < itemsStor - 1 ) ;
2006-12-26 23:28:44 +01:00
StorageSort - > Enable ( itemsStor > 1 ) ;
2006-12-26 23:02:17 +01:00
CurrentMoveUp - > Enable ( contCurr & & firstCurr > 0 ) ;
CurrentMoveTop - > Enable ( contCurr & & firstCurr > 0 ) ;
CurrentMoveDown - > Enable ( contCurr & & lastCurr ! = - 1 & & lastCurr < itemsCurr - 1 ) ;
CurrentMoveBottom - > Enable ( contCurr & & lastCurr ! = - 1 & & lastCurr < itemsCurr - 1 ) ;
2006-12-26 23:28:44 +01:00
CurrentSort - > Enable ( itemsCurr > 1 ) ;
2006-12-26 22:45:23 +01:00
}
Note: This was done using a script! it's far from perfect but 95% of the work has been done already formatting-wise.
Document all functions, class, struct, union, enum, macro, variable, typedefs. This isn't the actual document in itself but empty documentation using any old documentation if it was there.
This was done using exuberant ctags to get tag info, then a TCL script to parse/remove old comments and convert them into Doxygen-style.
Some notes:
* Anything labeled 'DOCME' needs to be documented, @param and @return have been left blank as it would be annoying to delete the 'DOCME' from every one of those.
* Some multiline comments may have been munged into single line comments
* Leave the /// comments above global variables with a space, if they're harder to read then we'll be less likey to use them.
* Enum comments can go after the enumeration itself '[value] /// comment'
* include/aegisub/*.h haven't been converted yet, this will be done in a later commit
* Some documentation blocks are in the wrong place, in the .h when it should be in the .cpp, or vice versa.
See http://devel.aegisub.org/wiki/Doxygen for some details on Doxygen and a 'style guide'.
Originally committed to SVN as r3312.
2009-07-30 00:59:22 +02:00
/// @brief Move events
/// @param event
///
2006-12-26 22:45:23 +01:00
void DialogStyleManager : : OnStorageMoveUp ( wxCommandEvent & event ) { MoveStyles ( true , 0 ) ; }
Note: This was done using a script! it's far from perfect but 95% of the work has been done already formatting-wise.
Document all functions, class, struct, union, enum, macro, variable, typedefs. This isn't the actual document in itself but empty documentation using any old documentation if it was there.
This was done using exuberant ctags to get tag info, then a TCL script to parse/remove old comments and convert them into Doxygen-style.
Some notes:
* Anything labeled 'DOCME' needs to be documented, @param and @return have been left blank as it would be annoying to delete the 'DOCME' from every one of those.
* Some multiline comments may have been munged into single line comments
* Leave the /// comments above global variables with a space, if they're harder to read then we'll be less likey to use them.
* Enum comments can go after the enumeration itself '[value] /// comment'
* include/aegisub/*.h haven't been converted yet, this will be done in a later commit
* Some documentation blocks are in the wrong place, in the .h when it should be in the .cpp, or vice versa.
See http://devel.aegisub.org/wiki/Doxygen for some details on Doxygen and a 'style guide'.
Originally committed to SVN as r3312.
2009-07-30 00:59:22 +02:00
/// @brief DOCME
/// @param event
///
2006-12-26 22:45:23 +01:00
void DialogStyleManager : : OnStorageMoveTop ( wxCommandEvent & event ) { MoveStyles ( true , 1 ) ; }
Note: This was done using a script! it's far from perfect but 95% of the work has been done already formatting-wise.
Document all functions, class, struct, union, enum, macro, variable, typedefs. This isn't the actual document in itself but empty documentation using any old documentation if it was there.
This was done using exuberant ctags to get tag info, then a TCL script to parse/remove old comments and convert them into Doxygen-style.
Some notes:
* Anything labeled 'DOCME' needs to be documented, @param and @return have been left blank as it would be annoying to delete the 'DOCME' from every one of those.
* Some multiline comments may have been munged into single line comments
* Leave the /// comments above global variables with a space, if they're harder to read then we'll be less likey to use them.
* Enum comments can go after the enumeration itself '[value] /// comment'
* include/aegisub/*.h haven't been converted yet, this will be done in a later commit
* Some documentation blocks are in the wrong place, in the .h when it should be in the .cpp, or vice versa.
See http://devel.aegisub.org/wiki/Doxygen for some details on Doxygen and a 'style guide'.
Originally committed to SVN as r3312.
2009-07-30 00:59:22 +02:00
/// @brief DOCME
/// @param event
///
2006-12-26 22:45:23 +01:00
void DialogStyleManager : : OnStorageMoveDown ( wxCommandEvent & event ) { MoveStyles ( true , 2 ) ; }
Note: This was done using a script! it's far from perfect but 95% of the work has been done already formatting-wise.
Document all functions, class, struct, union, enum, macro, variable, typedefs. This isn't the actual document in itself but empty documentation using any old documentation if it was there.
This was done using exuberant ctags to get tag info, then a TCL script to parse/remove old comments and convert them into Doxygen-style.
Some notes:
* Anything labeled 'DOCME' needs to be documented, @param and @return have been left blank as it would be annoying to delete the 'DOCME' from every one of those.
* Some multiline comments may have been munged into single line comments
* Leave the /// comments above global variables with a space, if they're harder to read then we'll be less likey to use them.
* Enum comments can go after the enumeration itself '[value] /// comment'
* include/aegisub/*.h haven't been converted yet, this will be done in a later commit
* Some documentation blocks are in the wrong place, in the .h when it should be in the .cpp, or vice versa.
See http://devel.aegisub.org/wiki/Doxygen for some details on Doxygen and a 'style guide'.
Originally committed to SVN as r3312.
2009-07-30 00:59:22 +02:00
/// @brief DOCME
/// @param event
///
2006-12-26 22:45:23 +01:00
void DialogStyleManager : : OnStorageMoveBottom ( wxCommandEvent & event ) { MoveStyles ( true , 3 ) ; }
Note: This was done using a script! it's far from perfect but 95% of the work has been done already formatting-wise.
Document all functions, class, struct, union, enum, macro, variable, typedefs. This isn't the actual document in itself but empty documentation using any old documentation if it was there.
This was done using exuberant ctags to get tag info, then a TCL script to parse/remove old comments and convert them into Doxygen-style.
Some notes:
* Anything labeled 'DOCME' needs to be documented, @param and @return have been left blank as it would be annoying to delete the 'DOCME' from every one of those.
* Some multiline comments may have been munged into single line comments
* Leave the /// comments above global variables with a space, if they're harder to read then we'll be less likey to use them.
* Enum comments can go after the enumeration itself '[value] /// comment'
* include/aegisub/*.h haven't been converted yet, this will be done in a later commit
* Some documentation blocks are in the wrong place, in the .h when it should be in the .cpp, or vice versa.
See http://devel.aegisub.org/wiki/Doxygen for some details on Doxygen and a 'style guide'.
Originally committed to SVN as r3312.
2009-07-30 00:59:22 +02:00
/// @brief DOCME
/// @param event
///
2006-12-26 23:28:44 +01:00
void DialogStyleManager : : OnStorageSort ( wxCommandEvent & event ) { MoveStyles ( true , 4 ) ; }
Note: This was done using a script! it's far from perfect but 95% of the work has been done already formatting-wise.
Document all functions, class, struct, union, enum, macro, variable, typedefs. This isn't the actual document in itself but empty documentation using any old documentation if it was there.
This was done using exuberant ctags to get tag info, then a TCL script to parse/remove old comments and convert them into Doxygen-style.
Some notes:
* Anything labeled 'DOCME' needs to be documented, @param and @return have been left blank as it would be annoying to delete the 'DOCME' from every one of those.
* Some multiline comments may have been munged into single line comments
* Leave the /// comments above global variables with a space, if they're harder to read then we'll be less likey to use them.
* Enum comments can go after the enumeration itself '[value] /// comment'
* include/aegisub/*.h haven't been converted yet, this will be done in a later commit
* Some documentation blocks are in the wrong place, in the .h when it should be in the .cpp, or vice versa.
See http://devel.aegisub.org/wiki/Doxygen for some details on Doxygen and a 'style guide'.
Originally committed to SVN as r3312.
2009-07-30 00:59:22 +02:00
/// @brief DOCME
/// @param event
///
2006-12-26 22:45:23 +01:00
void DialogStyleManager : : OnCurrentMoveUp ( wxCommandEvent & event ) { MoveStyles ( false , 0 ) ; }
Note: This was done using a script! it's far from perfect but 95% of the work has been done already formatting-wise.
Document all functions, class, struct, union, enum, macro, variable, typedefs. This isn't the actual document in itself but empty documentation using any old documentation if it was there.
This was done using exuberant ctags to get tag info, then a TCL script to parse/remove old comments and convert them into Doxygen-style.
Some notes:
* Anything labeled 'DOCME' needs to be documented, @param and @return have been left blank as it would be annoying to delete the 'DOCME' from every one of those.
* Some multiline comments may have been munged into single line comments
* Leave the /// comments above global variables with a space, if they're harder to read then we'll be less likey to use them.
* Enum comments can go after the enumeration itself '[value] /// comment'
* include/aegisub/*.h haven't been converted yet, this will be done in a later commit
* Some documentation blocks are in the wrong place, in the .h when it should be in the .cpp, or vice versa.
See http://devel.aegisub.org/wiki/Doxygen for some details on Doxygen and a 'style guide'.
Originally committed to SVN as r3312.
2009-07-30 00:59:22 +02:00
/// @brief DOCME
/// @param event
///
2006-12-26 22:45:23 +01:00
void DialogStyleManager : : OnCurrentMoveTop ( wxCommandEvent & event ) { MoveStyles ( false , 1 ) ; }
Note: This was done using a script! it's far from perfect but 95% of the work has been done already formatting-wise.
Document all functions, class, struct, union, enum, macro, variable, typedefs. This isn't the actual document in itself but empty documentation using any old documentation if it was there.
This was done using exuberant ctags to get tag info, then a TCL script to parse/remove old comments and convert them into Doxygen-style.
Some notes:
* Anything labeled 'DOCME' needs to be documented, @param and @return have been left blank as it would be annoying to delete the 'DOCME' from every one of those.
* Some multiline comments may have been munged into single line comments
* Leave the /// comments above global variables with a space, if they're harder to read then we'll be less likey to use them.
* Enum comments can go after the enumeration itself '[value] /// comment'
* include/aegisub/*.h haven't been converted yet, this will be done in a later commit
* Some documentation blocks are in the wrong place, in the .h when it should be in the .cpp, or vice versa.
See http://devel.aegisub.org/wiki/Doxygen for some details on Doxygen and a 'style guide'.
Originally committed to SVN as r3312.
2009-07-30 00:59:22 +02:00
/// @brief DOCME
/// @param event
///
2006-12-26 22:45:23 +01:00
void DialogStyleManager : : OnCurrentMoveDown ( wxCommandEvent & event ) { MoveStyles ( false , 2 ) ; }
Note: This was done using a script! it's far from perfect but 95% of the work has been done already formatting-wise.
Document all functions, class, struct, union, enum, macro, variable, typedefs. This isn't the actual document in itself but empty documentation using any old documentation if it was there.
This was done using exuberant ctags to get tag info, then a TCL script to parse/remove old comments and convert them into Doxygen-style.
Some notes:
* Anything labeled 'DOCME' needs to be documented, @param and @return have been left blank as it would be annoying to delete the 'DOCME' from every one of those.
* Some multiline comments may have been munged into single line comments
* Leave the /// comments above global variables with a space, if they're harder to read then we'll be less likey to use them.
* Enum comments can go after the enumeration itself '[value] /// comment'
* include/aegisub/*.h haven't been converted yet, this will be done in a later commit
* Some documentation blocks are in the wrong place, in the .h when it should be in the .cpp, or vice versa.
See http://devel.aegisub.org/wiki/Doxygen for some details on Doxygen and a 'style guide'.
Originally committed to SVN as r3312.
2009-07-30 00:59:22 +02:00
/// @brief DOCME
/// @param event
///
2006-12-26 22:45:23 +01:00
void DialogStyleManager : : OnCurrentMoveBottom ( wxCommandEvent & event ) { MoveStyles ( false , 3 ) ; }
Note: This was done using a script! it's far from perfect but 95% of the work has been done already formatting-wise.
Document all functions, class, struct, union, enum, macro, variable, typedefs. This isn't the actual document in itself but empty documentation using any old documentation if it was there.
This was done using exuberant ctags to get tag info, then a TCL script to parse/remove old comments and convert them into Doxygen-style.
Some notes:
* Anything labeled 'DOCME' needs to be documented, @param and @return have been left blank as it would be annoying to delete the 'DOCME' from every one of those.
* Some multiline comments may have been munged into single line comments
* Leave the /// comments above global variables with a space, if they're harder to read then we'll be less likey to use them.
* Enum comments can go after the enumeration itself '[value] /// comment'
* include/aegisub/*.h haven't been converted yet, this will be done in a later commit
* Some documentation blocks are in the wrong place, in the .h when it should be in the .cpp, or vice versa.
See http://devel.aegisub.org/wiki/Doxygen for some details on Doxygen and a 'style guide'.
Originally committed to SVN as r3312.
2009-07-30 00:59:22 +02:00
/// @brief DOCME
/// @param event
///
2006-12-26 23:28:44 +01:00
void DialogStyleManager : : OnCurrentSort ( wxCommandEvent & event ) { MoveStyles ( false , 4 ) ; }
2006-12-26 22:45:23 +01:00
Note: This was done using a script! it's far from perfect but 95% of the work has been done already formatting-wise.
Document all functions, class, struct, union, enum, macro, variable, typedefs. This isn't the actual document in itself but empty documentation using any old documentation if it was there.
This was done using exuberant ctags to get tag info, then a TCL script to parse/remove old comments and convert them into Doxygen-style.
Some notes:
* Anything labeled 'DOCME' needs to be documented, @param and @return have been left blank as it would be annoying to delete the 'DOCME' from every one of those.
* Some multiline comments may have been munged into single line comments
* Leave the /// comments above global variables with a space, if they're harder to read then we'll be less likey to use them.
* Enum comments can go after the enumeration itself '[value] /// comment'
* include/aegisub/*.h haven't been converted yet, this will be done in a later commit
* Some documentation blocks are in the wrong place, in the .h when it should be in the .cpp, or vice versa.
See http://devel.aegisub.org/wiki/Doxygen for some details on Doxygen and a 'style guide'.
Originally committed to SVN as r3312.
2009-07-30 00:59:22 +02:00
/// @brief Move function
/// @param storage
/// @param type
/// @return
///
2006-12-26 22:45:23 +01:00
void DialogStyleManager : : MoveStyles ( bool storage , int type ) {
// Variables
AssFile * subs = AssFile : : top ;
wxListBox * list ;
if ( storage ) list = StorageList ;
else list = CurrentList ;
// Get selection
wxArrayInt sels ;
int n = list - > GetSelections ( sels ) ;
2006-12-26 23:28:44 +01:00
int first = - 1 ; ;
int last = - 1 ;
if ( n ) {
first = sels [ 0 ] ;
last = sels [ n - 1 ] ;
}
2006-12-26 22:45:23 +01:00
// Get total style count
int nStyles = list - > GetCount ( ) ;
// Get styles
std : : vector < AssStyle * > styls ;
std : : vector < AssStyle * > * srcStyls ;
if ( storage ) srcStyls = & styleStorageMap ;
else srcStyls = & styleMap ;
// Move up
if ( type = = 0 ) {
for ( int i = 0 ; i < first - 1 ; i + + ) styls . push_back ( srcStyls - > at ( i ) ) ;
for ( int i = first ; i < = last ; i + + ) styls . push_back ( srcStyls - > at ( i ) ) ;
styls . push_back ( srcStyls - > at ( first - 1 ) ) ;
for ( int i = last + 1 ; i < nStyles ; i + + ) styls . push_back ( srcStyls - > at ( i ) ) ;
first - - ;
last - - ;
}
// Move to top
if ( type = = 1 ) {
for ( int i = first ; i < = last ; i + + ) styls . push_back ( srcStyls - > at ( i ) ) ;
for ( int i = 0 ; i < first ; i + + ) styls . push_back ( srcStyls - > at ( i ) ) ;
for ( int i = last + 1 ; i < nStyles ; i + + ) styls . push_back ( srcStyls - > at ( i ) ) ;
last = last - first ;
first = 0 ;
}
// Move down
if ( type = = 2 ) {
for ( int i = 0 ; i < first ; i + + ) styls . push_back ( srcStyls - > at ( i ) ) ;
styls . push_back ( srcStyls - > at ( last + 1 ) ) ;
for ( int i = first ; i < = last ; i + + ) styls . push_back ( srcStyls - > at ( i ) ) ;
for ( int i = last + 2 ; i < nStyles ; i + + ) styls . push_back ( srcStyls - > at ( i ) ) ;
first + + ;
last + + ;
}
// Move to bottom
if ( type = = 3 ) {
for ( int i = 0 ; i < first ; i + + ) styls . push_back ( srcStyls - > at ( i ) ) ;
for ( int i = last + 1 ; i < nStyles ; i + + ) styls . push_back ( srcStyls - > at ( i ) ) ;
for ( int i = first ; i < = last ; i + + ) styls . push_back ( srcStyls - > at ( i ) ) ;
first = nStyles - ( last - first + 1 ) ;
last = nStyles - 1 ;
}
2006-12-26 23:28:44 +01:00
// Sort
if ( type = = 4 ) {
// Get confirmation
if ( storage ) {
int res = wxMessageBox ( _ ( " Are you sure? This cannot be undone! " ) , _ ( " Sort styles " ) , wxYES_NO ) ;
if ( res = = wxNO ) return ;
}
// Get sorted list
2009-07-18 06:37:43 +02:00
wxArrayString styleNames ;
for ( int i = 0 ; i < nStyles ; i + + ) styleNames . Add ( srcStyls - > at ( i ) - > name ) ;
styleNames . Sort ( ) ;
std : : list < AssStyle * > styles ( srcStyls - > begin ( ) , srcStyls - > end ( ) ) ;
for ( int i = 0 ; i < nStyles ; i + + ) {
for ( std : : list < AssStyle * > : : iterator style = styles . begin ( ) ; style ! = styles . end ( ) ; style + + ) {
if ( ( * style ) - > name = = styleNames [ i ] ) {
styls . push_back ( * style ) ;
styles . erase ( style ) ;
break ;
2006-12-26 23:28:44 +01:00
}
}
}
// Zero selection
first = 0 ;
last = 0 ;
}
2006-12-26 22:45:23 +01:00
// Storage
if ( storage ) {
// Rewrite storage
Store . style . clear ( ) ;
for ( unsigned int i = 0 ; i < styls . size ( ) ; i + + ) Store . style . push_back ( styls [ i ] ) ;
// Save storage
Store . Save ( CatalogList - > GetString ( CatalogList - > GetSelection ( ) ) ) ;
}
// Current
else {
// Replace styles
entryIter next ;
int curn = 0 ;
for ( entryIter cur = subs - > Line . begin ( ) ; cur ! = subs - > Line . end ( ) ; cur = next ) {
next = cur ;
next + + ;
AssStyle * style = AssEntry : : GetAsStyle ( * cur ) ;
if ( style ) {
subs - > Line . insert ( cur , styls [ curn ] ) ;
subs - > Line . erase ( cur ) ;
curn + + ;
}
}
// Flag as modified
2007-01-26 01:47:42 +01:00
grid - > ass - > FlagAsModified ( _ ( " style move " ) ) ;
2006-12-26 22:45:23 +01:00
grid - > CommitChanges ( ) ;
}
// Update
for ( int i = 0 ; i < nStyles ; i + + ) {
list - > SetString ( i , styls [ i ] - > name ) ;
if ( i < first | | i > last ) list - > Deselect ( i ) ;
else list - > Select ( i ) ;
}
// Set map
* srcStyls = styls ;
// Update buttons
UpdateMoveButtons ( ) ;
}
Note: This was done using a script! it's far from perfect but 95% of the work has been done already formatting-wise.
Document all functions, class, struct, union, enum, macro, variable, typedefs. This isn't the actual document in itself but empty documentation using any old documentation if it was there.
This was done using exuberant ctags to get tag info, then a TCL script to parse/remove old comments and convert them into Doxygen-style.
Some notes:
* Anything labeled 'DOCME' needs to be documented, @param and @return have been left blank as it would be annoying to delete the 'DOCME' from every one of those.
* Some multiline comments may have been munged into single line comments
* Leave the /// comments above global variables with a space, if they're harder to read then we'll be less likey to use them.
* Enum comments can go after the enumeration itself '[value] /// comment'
* include/aegisub/*.h haven't been converted yet, this will be done in a later commit
* Some documentation blocks are in the wrong place, in the .h when it should be in the .cpp, or vice versa.
See http://devel.aegisub.org/wiki/Doxygen for some details on Doxygen and a 'style guide'.
Originally committed to SVN as r3312.
2009-07-30 00:59:22 +02:00
/// @brief Keydown event
/// @param event
///
2007-02-05 20:09:45 +01:00
void DialogStyleManager : : OnKeyDown ( wxKeyEvent & event ) {
wxCommandEvent evt ;
switch ( event . GetKeyCode ( ) ) {
case WXK_ESCAPE :
OnClose ( evt ) ;
break ;
case WXK_DELETE :
if ( wxWindow : : FindFocus ( ) = = StorageList ) {
OnStorageDelete ( evt ) ;
}
else if ( wxWindow : : FindFocus ( ) = = CurrentList ) {
OnCurrentDelete ( evt ) ;
}
break ;
2007-02-06 04:25:14 +01:00
case ' C ' :
case ' c ' :
2007-09-22 00:56:44 +02:00
# ifdef __APPLE__
if ( event . CmdDown ( ) ) {
# else
2007-02-06 04:25:14 +01:00
if ( event . ControlDown ( ) ) {
2007-09-22 00:56:44 +02:00
# endif
2007-02-06 04:25:14 +01:00
if ( wxWindow : : FindFocus ( ) = = CurrentList ) {
CopyToClipboard ( CurrentList , styleMap ) ;
}
else if ( wxWindow : : FindFocus ( ) = = StorageList ) {
CopyToClipboard ( StorageList , styleStorageMap ) ;
}
}
break ;
case ' V ' :
case ' v ' :
2007-09-22 00:56:44 +02:00
# ifdef __APPLE__
if ( event . CmdDown ( ) ) {
# else
2007-02-06 04:25:14 +01:00
if ( event . ControlDown ( ) ) {
2007-09-22 00:56:44 +02:00
# endif
2007-02-06 04:25:14 +01:00
if ( wxWindow : : FindFocus ( ) = = CurrentList ) {
PasteToCurrent ( ) ;
}
else if ( wxWindow : : FindFocus ( ) = = StorageList ) {
PasteToStorage ( ) ;
}
}
break ;
2007-02-05 20:09:45 +01:00
}
}
Note: This was done using a script! it's far from perfect but 95% of the work has been done already formatting-wise.
Document all functions, class, struct, union, enum, macro, variable, typedefs. This isn't the actual document in itself but empty documentation using any old documentation if it was there.
This was done using exuberant ctags to get tag info, then a TCL script to parse/remove old comments and convert them into Doxygen-style.
Some notes:
* Anything labeled 'DOCME' needs to be documented, @param and @return have been left blank as it would be annoying to delete the 'DOCME' from every one of those.
* Some multiline comments may have been munged into single line comments
* Leave the /// comments above global variables with a space, if they're harder to read then we'll be less likey to use them.
* Enum comments can go after the enumeration itself '[value] /// comment'
* include/aegisub/*.h haven't been converted yet, this will be done in a later commit
* Some documentation blocks are in the wrong place, in the .h when it should be in the .cpp, or vice versa.
See http://devel.aegisub.org/wiki/Doxygen for some details on Doxygen and a 'style guide'.
Originally committed to SVN as r3312.
2009-07-30 00:59:22 +02:00
/// DOCME
2006-01-16 22:02:54 +01:00
int DialogStyleManager : : lastx = - 1 ;
Note: This was done using a script! it's far from perfect but 95% of the work has been done already formatting-wise.
Document all functions, class, struct, union, enum, macro, variable, typedefs. This isn't the actual document in itself but empty documentation using any old documentation if it was there.
This was done using exuberant ctags to get tag info, then a TCL script to parse/remove old comments and convert them into Doxygen-style.
Some notes:
* Anything labeled 'DOCME' needs to be documented, @param and @return have been left blank as it would be annoying to delete the 'DOCME' from every one of those.
* Some multiline comments may have been munged into single line comments
* Leave the /// comments above global variables with a space, if they're harder to read then we'll be less likey to use them.
* Enum comments can go after the enumeration itself '[value] /// comment'
* include/aegisub/*.h haven't been converted yet, this will be done in a later commit
* Some documentation blocks are in the wrong place, in the .h when it should be in the .cpp, or vice versa.
See http://devel.aegisub.org/wiki/Doxygen for some details on Doxygen and a 'style guide'.
Originally committed to SVN as r3312.
2009-07-30 00:59:22 +02:00
/// DOCME
2006-01-16 22:02:54 +01:00
int DialogStyleManager : : lasty = - 1 ;
2007-02-05 20:09:45 +01:00
Note: This was done using a script! it's far from perfect but 95% of the work has been done already formatting-wise.
Document all functions, class, struct, union, enum, macro, variable, typedefs. This isn't the actual document in itself but empty documentation using any old documentation if it was there.
This was done using exuberant ctags to get tag info, then a TCL script to parse/remove old comments and convert them into Doxygen-style.
Some notes:
* Anything labeled 'DOCME' needs to be documented, @param and @return have been left blank as it would be annoying to delete the 'DOCME' from every one of those.
* Some multiline comments may have been munged into single line comments
* Leave the /// comments above global variables with a space, if they're harder to read then we'll be less likey to use them.
* Enum comments can go after the enumeration itself '[value] /// comment'
* include/aegisub/*.h haven't been converted yet, this will be done in a later commit
* Some documentation blocks are in the wrong place, in the .h when it should be in the .cpp, or vice versa.
See http://devel.aegisub.org/wiki/Doxygen for some details on Doxygen and a 'style guide'.
Originally committed to SVN as r3312.
2009-07-30 00:59:22 +02:00
/// @brief DialogStyleManagerEvent stuff
/// @param ctrl
///
2007-02-05 20:09:45 +01:00
DialogStyleManagerEvent : : DialogStyleManagerEvent ( DialogStyleManager * ctrl ) {
control = ctrl ;
}
BEGIN_EVENT_TABLE ( DialogStyleManagerEvent , wxEvtHandler )
EVT_KEY_DOWN ( DialogStyleManagerEvent : : OnKeyDown )
END_EVENT_TABLE ( )
Note: This was done using a script! it's far from perfect but 95% of the work has been done already formatting-wise.
Document all functions, class, struct, union, enum, macro, variable, typedefs. This isn't the actual document in itself but empty documentation using any old documentation if it was there.
This was done using exuberant ctags to get tag info, then a TCL script to parse/remove old comments and convert them into Doxygen-style.
Some notes:
* Anything labeled 'DOCME' needs to be documented, @param and @return have been left blank as it would be annoying to delete the 'DOCME' from every one of those.
* Some multiline comments may have been munged into single line comments
* Leave the /// comments above global variables with a space, if they're harder to read then we'll be less likey to use them.
* Enum comments can go after the enumeration itself '[value] /// comment'
* include/aegisub/*.h haven't been converted yet, this will be done in a later commit
* Some documentation blocks are in the wrong place, in the .h when it should be in the .cpp, or vice versa.
See http://devel.aegisub.org/wiki/Doxygen for some details on Doxygen and a 'style guide'.
Originally committed to SVN as r3312.
2009-07-30 00:59:22 +02:00
/// @brief DOCME
/// @param event
///
2007-02-05 20:09:45 +01:00
void DialogStyleManagerEvent : : OnKeyDown ( wxKeyEvent & event ) {
control - > OnKeyDown ( event ) ; //we need to access controls, so rather than make the controls public...
}
2007-09-12 01:22:26 +02:00
2009-07-29 07:43:02 +02:00
Note: This was done using a script! it's far from perfect but 95% of the work has been done already formatting-wise.
Document all functions, class, struct, union, enum, macro, variable, typedefs. This isn't the actual document in itself but empty documentation using any old documentation if it was there.
This was done using exuberant ctags to get tag info, then a TCL script to parse/remove old comments and convert them into Doxygen-style.
Some notes:
* Anything labeled 'DOCME' needs to be documented, @param and @return have been left blank as it would be annoying to delete the 'DOCME' from every one of those.
* Some multiline comments may have been munged into single line comments
* Leave the /// comments above global variables with a space, if they're harder to read then we'll be less likey to use them.
* Enum comments can go after the enumeration itself '[value] /// comment'
* include/aegisub/*.h haven't been converted yet, this will be done in a later commit
* Some documentation blocks are in the wrong place, in the .h when it should be in the .cpp, or vice versa.
See http://devel.aegisub.org/wiki/Doxygen for some details on Doxygen and a 'style guide'.
Originally committed to SVN as r3312.
2009-07-30 00:59:22 +02:00