71 lines
2.7 KiB
Plaintext
71 lines
2.7 KiB
Plaintext
|
/*
|
||
|
* This file is part of the Code::Blocks IDE and licensed under the GNU General Public License, version 3
|
||
|
* http://www.gnu.org/licenses/gpl-3.0.html
|
||
|
*
|
||
|
* $Revision: 7443 $
|
||
|
* $Id: edit_startup_script.script 7443 2011-09-01 16:29:16Z mortenmacfly $
|
||
|
* $HeadURL: https://mortenmacfly@svn.code.sf.net/p/codeblocks/code/branches/release-20.03/src/scripts/edit_startup_script.script $
|
||
|
*/
|
||
|
|
||
|
//
|
||
|
// Sample script that opens the "startup.script" file for editing
|
||
|
// (check startup.script which registers this script under the menu "Settings->Edit startup script")
|
||
|
//
|
||
|
|
||
|
|
||
|
|
||
|
// In order to open the startup.script file, we first have to locate it.
|
||
|
// Code::Blocks looks for scripts in two places:
|
||
|
// 1) the per-user scripts dir
|
||
|
// 2) the global scripts dir
|
||
|
//
|
||
|
// One way to achieve this is to use the following lines:
|
||
|
//
|
||
|
// // search for "startup.script" in scripts folders (user and global)
|
||
|
// local f = LocateDataFile(_T("startup.script"), sdScriptsUser | sdScriptsGlobal);
|
||
|
//
|
||
|
// LocateDataFile() looks in the specified dirs for the file in question.
|
||
|
// Per-user directories *always* have precedence in this function so if the file
|
||
|
// exists both in the global dirs as well as in the user directory, the file in
|
||
|
// the user directory will be returned.
|
||
|
//
|
||
|
// In this sample script though, we 'll follow a different procedure. We will manually
|
||
|
// ask for the user scripts dir and try to open the file there. If it is not opened
|
||
|
// (which means it doesn't exist), we will copy the script from the global scripts dir
|
||
|
// and then attempt to open it again.
|
||
|
// This will make sure that the startup.script to edit is the one the user used to use
|
||
|
// until the moment this script runs.
|
||
|
|
||
|
|
||
|
|
||
|
// get user scripts dir
|
||
|
local scriptsDir = GetFolder(sdScriptsUser);
|
||
|
|
||
|
// try to open it in the editor
|
||
|
local ed = GetEditorManager().Open(scriptsDir + _T("/startup.script"));
|
||
|
|
||
|
// if it succeeded, we 're done here
|
||
|
if (!IsNull(ed))
|
||
|
return;
|
||
|
|
||
|
// log a message
|
||
|
LogDebug(_T("First time editing startup.script: copying from global to user scripts dir"));
|
||
|
|
||
|
// nope, we must copy the global script
|
||
|
local scriptsGlobalDir = GetFolder(sdScriptsGlobal);
|
||
|
|
||
|
// don't try to copy over itself (in case something's wrong)
|
||
|
if (scriptsGlobalDir == scriptsDir)
|
||
|
return;
|
||
|
IO.CopyFile(scriptsGlobalDir + _T("/startup.script"), // source file
|
||
|
scriptsDir + _T("/startup.script"), // destination file
|
||
|
false); // don't overwrite (well, we know it's not there but better safe than sorry)
|
||
|
|
||
|
// and try again to open it in the editor
|
||
|
ed = GetEditorManager().Open(scriptsDir + _T("/startup.script"));
|
||
|
|
||
|
// we don't check anything more because the user's system is too borked to bother :)
|
||
|
// just display a message if all our efforts have failed
|
||
|
if (IsNull(ed))
|
||
|
ShowError(_T("Could not locate startup.script anywhere on this system..."));
|