diff options
author | Jens-Heiner Rechtien <hr@openoffice.org> | 2000-09-18 15:18:56 +0000 |
---|---|---|
committer | Jens-Heiner Rechtien <hr@openoffice.org> | 2000-09-18 15:18:56 +0000 |
commit | c25ec0608a167bcf1d891043f02273761c351701 (patch) | |
tree | 32c3e19f0b663e37ad1910e8fddeac200ad3856d |
initial import
493 files changed, 152257 insertions, 0 deletions
diff --git a/basic/inc/basrid.hxx b/basic/inc/basrid.hxx new file mode 100644 index 000000000000..ef7a886441d2 --- /dev/null +++ b/basic/inc/basrid.hxx @@ -0,0 +1,75 @@ +/************************************************************************* + * + * $RCSfile: basrid.hxx,v $ + * + * $Revision: 1.1.1.1 $ + * + * last change: $Author: hr $ $Date: 2000-09-18 16:12:07 $ + * + * The Contents of this file are made available subject to the terms of + * either of the following licenses + * + * - GNU Lesser General Public License Version 2.1 + * - Sun Industry Standards Source License Version 1.1 + * + * Sun Microsystems Inc., October, 2000 + * + * GNU Lesser General Public License Version 2.1 + * ============================================= + * Copyright 2000 by Sun Microsystems, Inc. + * 901 San Antonio Road, Palo Alto, CA 94303, USA + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License version 2.1, as published by the Free Software Foundation. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + * + * + * Sun Industry Standards Source License Version 1.1 + * ================================================= + * The contents of this file are subject to the Sun Industry Standards + * Source License Version 1.1 (the "License"); You may not use this file + * except in compliance with the License. You may obtain a copy of the + * License at http://www.openoffice.org/license.html. + * + * Software provided under this License is provided on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, + * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS, + * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING. + * See the License for the specific provisions governing your rights and + * obligations concerning the Software. + * + * The Initial Developer of the Original Code is: Sun Microsystems, Inc. + * + * Copyright: 2000 by Sun Microsystems, Inc. + * + * All Rights Reserved. + * + * Contributor(s): _______________________________________ + * + * + ************************************************************************/ + +#ifndef _BASRID_HXX +#define _BASRID_HXX + +#ifndef _TOOLS_RESID_HXX //autogen +#include <tools/resid.hxx> +#endif + +class BasicResId: public ResId +{ +public: + BasicResId( USHORT nId ); +}; + +#endif //_BASRID_HXX diff --git a/basic/inc/sb.hrc b/basic/inc/sb.hrc new file mode 100644 index 000000000000..c7d7c2bc6697 --- /dev/null +++ b/basic/inc/sb.hrc @@ -0,0 +1,81 @@ +/************************************************************************* + * + * $RCSfile: sb.hrc,v $ + * + * $Revision: 1.1.1.1 $ + * + * last change: $Author: hr $ $Date: 2000-09-18 16:12:07 $ + * + * The Contents of this file are made available subject to the terms of + * either of the following licenses + * + * - GNU Lesser General Public License Version 2.1 + * - Sun Industry Standards Source License Version 1.1 + * + * Sun Microsystems Inc., October, 2000 + * + * GNU Lesser General Public License Version 2.1 + * ============================================= + * Copyright 2000 by Sun Microsystems, Inc. + * 901 San Antonio Road, Palo Alto, CA 94303, USA + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License version 2.1, as published by the Free Software Foundation. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + * + * + * Sun Industry Standards Source License Version 1.1 + * ================================================= + * The contents of this file are subject to the Sun Industry Standards + * Source License Version 1.1 (the "License"); You may not use this file + * except in compliance with the License. You may obtain a copy of the + * License at http://www.openoffice.org/license.html. + * + * Software provided under this License is provided on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, + * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS, + * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING. + * See the License for the specific provisions governing your rights and + * obligations concerning the Software. + * + * The Initial Developer of the Original Code is: Sun Microsystems, Inc. + * + * Copyright: 2000 by Sun Microsystems, Inc. + * + * All Rights Reserved. + * + * Contributor(s): _______________________________________ + * + * + ************************************************************************/ + +#ifndef _SB_HRC +#define _SB_HRC + +#include <svtools/solar.hrc> + +#ifndef IDS_SBERR_START + #define IDS_SBERR_START RID_BASIC_START +#endif + +#define IDS_SBERR_TERMINATED IDS_SBERR_START+2000 +#define IDS_SBERR_STOREREF IDS_SBERR_START+2001 + +// #define IDS_SBERR_LIBLOAD IDS_SBERR_START+2002 +// #define IDS_SBERR_LIBSAVE IDS_SBERR_START+2003 +// #define IDS_SBERR_MGROPEN IDS_SBERR_START+2004 +// #define IDS_SBERR_MGRSAVE IDS_SBERR_START+2005 +// #define IDS_SBERR_REMOVELIB IDS_SBERR_START+2006 +// #define IDS_SBERR_UNLOADLIB IDS_SBERR_START+2007 + +#endif diff --git a/basic/inc/sb.hxx b/basic/inc/sb.hxx new file mode 100644 index 000000000000..5cae2d1ebefe --- /dev/null +++ b/basic/inc/sb.hxx @@ -0,0 +1,76 @@ +/************************************************************************* + * + * $RCSfile: sb.hxx,v $ + * + * $Revision: 1.1.1.1 $ + * + * last change: $Author: hr $ $Date: 2000-09-18 16:12:07 $ + * + * The Contents of this file are made available subject to the terms of + * either of the following licenses + * + * - GNU Lesser General Public License Version 2.1 + * - Sun Industry Standards Source License Version 1.1 + * + * Sun Microsystems Inc., October, 2000 + * + * GNU Lesser General Public License Version 2.1 + * ============================================= + * Copyright 2000 by Sun Microsystems, Inc. + * 901 San Antonio Road, Palo Alto, CA 94303, USA + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License version 2.1, as published by the Free Software Foundation. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + * + * + * Sun Industry Standards Source License Version 1.1 + * ================================================= + * The contents of this file are subject to the Sun Industry Standards + * Source License Version 1.1 (the "License"); You may not use this file + * except in compliance with the License. You may obtain a copy of the + * License at http://www.openoffice.org/license.html. + * + * Software provided under this License is provided on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, + * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS, + * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING. + * See the License for the specific provisions governing your rights and + * obligations concerning the Software. + * + * The Initial Developer of the Original Code is: Sun Microsystems, Inc. + * + * Copyright: 2000 by Sun Microsystems, Inc. + * + * All Rights Reserved. + * + * Contributor(s): _______________________________________ + * + * + ************************************************************************/ + +#ifndef _SB_HXX +#define _SB_HXX + +#ifndef _SBERRORS_HXX + #include "sberrors.hxx" +#endif + + +#include <sbdef.hxx> +#include <sbmeth.hxx> +#include <sbmod.hxx> +#include <sbprop.hxx> +#include <sbstar.hxx> + +#endif diff --git a/basic/inc/testtool.hrc b/basic/inc/testtool.hrc new file mode 100644 index 000000000000..28f82508fa0e --- /dev/null +++ b/basic/inc/testtool.hrc @@ -0,0 +1,70 @@ +/************************************************************************* + * + * $RCSfile: testtool.hrc,v $ + * + * $Revision: 1.1.1.1 $ + * + * last change: $Author: hr $ $Date: 2000-09-18 16:12:07 $ + * + * The Contents of this file are made available subject to the terms of + * either of the following licenses + * + * - GNU Lesser General Public License Version 2.1 + * - Sun Industry Standards Source License Version 1.1 + * + * Sun Microsystems Inc., October, 2000 + * + * GNU Lesser General Public License Version 2.1 + * ============================================= + * Copyright 2000 by Sun Microsystems, Inc. + * 901 San Antonio Road, Palo Alto, CA 94303, USA + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License version 2.1, as published by the Free Software Foundation. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + * + * + * Sun Industry Standards Source License Version 1.1 + * ================================================= + * The contents of this file are subject to the Sun Industry Standards + * Source License Version 1.1 (the "License"); You may not use this file + * except in compliance with the License. You may obtain a copy of the + * License at http://www.openoffice.org/license.html. + * + * Software provided under this License is provided on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, + * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS, + * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING. + * See the License for the specific provisions governing your rights and + * obligations concerning the Software. + * + * The Initial Developer of the Original Code is: Sun Microsystems, Inc. + * + * Copyright: 2000 by Sun Microsystems, Inc. + * + * All Rights Reserved. + * + * Contributor(s): _______________________________________ + * + * + ************************************************************************/ +#define S_INVALID_KEYCODE 257 +#define S_MANDATORY_FILE 258 +#define S_READING_LONGNAMES 259 +#define S_READING_SLOT_IDS 260 +#define S_READING_CONTROLS 261 +#define S_READING_BASIC_MODULE 262 +#define S_STARTING_APPLICATION 263 + + + diff --git a/basic/inc/ttmsg.hrc b/basic/inc/ttmsg.hrc new file mode 100644 index 000000000000..3e7074566708 --- /dev/null +++ b/basic/inc/ttmsg.hrc @@ -0,0 +1,147 @@ +/************************************************************************* + * + * $RCSfile: ttmsg.hrc,v $ + * + * $Revision: 1.1.1.1 $ + * + * last change: $Author: hr $ $Date: 2000-09-18 16:12:07 $ + * + * The Contents of this file are made available subject to the terms of + * either of the following licenses + * + * - GNU Lesser General Public License Version 2.1 + * - Sun Industry Standards Source License Version 1.1 + * + * Sun Microsystems Inc., October, 2000 + * + * GNU Lesser General Public License Version 2.1 + * ============================================= + * Copyright 2000 by Sun Microsystems, Inc. + * 901 San Antonio Road, Palo Alto, CA 94303, USA + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License version 2.1, as published by the Free Software Foundation. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + * + * + * Sun Industry Standards Source License Version 1.1 + * ================================================= + * The contents of this file are subject to the Sun Industry Standards + * Source License Version 1.1 (the "License"); You may not use this file + * except in compliance with the License. You may obtain a copy of the + * License at http://www.openoffice.org/license.html. + * + * Software provided under this License is provided on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, + * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS, + * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING. + * See the License for the specific provisions governing your rights and + * obligations concerning the Software. + * + * The Initial Developer of the Original Code is: Sun Microsystems, Inc. + * + * Copyright: 2000 by Sun Microsystems, Inc. + * + * All Rights Reserved. + * + * Contributor(s): _______________________________________ + * + * + ************************************************************************/ +#include <svtools/ttglobal.hrc> + + +// Hier sind die Messages aus dem Verzeichnis /basic/source/testtool enhalten + + +/////////////////////////////// +// Fehlermeldungen, die in das Resultfile gelangen. +// ********************* +// *** !!ACHTUNG!! *** +// ********************* +// Die Nummern dürfen sich NIE! ändern, +// da sie in den Resultfiles gespeichert sind, und bei erneutem Anzeigen +// statdessen die entsprechenden neuen oder garkeine Strings angzeigt werden. +/////////////////////////////// + +#define S_NAME_NOT_THERE ( TT_START + 0 ) +#define S_DOUBLE_NAME ( TT_START + 1 ) +#define S_READING_FILE ( TT_START + 2 ) +#define S_CANNOT_OPEN_FILE ( TT_START + 3 ) +#define S_INVALID_LINE ( TT_START + 4 ) +#define S_SHORTNAME_UNKNOWN ( TT_START + 5 ) +#define S_LONGNAME_UNKNOWN ( TT_START + 6 ) +#define S_FIRST_SHORTNAME_REQ_ASTRX ( TT_START + 7 ) +#define S_TIMOUT_WAITING ( TT_START + 8 ) +#define S_APPLICATION_RESTARTED ( TT_START + 9 ) +#define S_APPLICATION_START_FAILED ( TT_START + 10 ) +#define S_TIMOUT_SENDING ( TT_START + 11 ) +#define S_NO_CONNECTION ( TT_START + 12 ) +#define S_NO_FILES_FOUND ( TT_START + 13 ) +#define S_ERRORS_DETECTED ( TT_START + 14 ) +#define S_NO_ERRORS_DETECTED ( TT_START + 15 ) +#define S_WARNINGS_DETECTED ( TT_START + 16 ) +#define S_NO_WARNINGS_DETECTED ( TT_START + 17 ) +#define S_UNKNOWN_SLOT_CONTROL ( TT_START + 18 ) +#define S_RETURN_SEQUENCE_MISSMATCH ( TT_START + 19 ) +#define S_RETURNED_VALUE_ID_MISSMATCH ( TT_START + 20 ) +#define S_RETURNED_VALUE_NO_RECEIVER ( TT_START + 21 ) +#define S_UNKNOWN_METHOD ( TT_START + 22 ) +#define S_INCLUDE_FILE_WARNINGS_DETECTED ( TT_START + 23 ) +#define S_NO_INCLUDE_FILE_WARNINGS_DETECTED ( TT_START + 24 ) + + +// Stings + + +/* +#define S_ ( TT_START + 0 ) +#define S_ ( TT_START + 0 ) +#define S_ ( TT_START + 0 ) +#define S_ ( TT_START + 0 ) +#define S_ ( TT_START + 0 ) +#define S_ ( TT_START + 0 ) +#define S_ ( TT_START + 0 ) +#define S_ ( TT_START + 0 ) +#define S_ ( TT_START + 0 ) +#define S_ ( TT_START + 0 ) +#define S_ ( TT_START + 0 ) +#define S_ ( TT_START + 0 ) +#define S_ ( TT_START + 0 ) +#define S_ ( TT_START + 0 ) +#define S_ ( TT_START + 0 ) +#define S_ ( TT_START + 0 ) +#define S_ ( TT_START + 0 ) +#define S_ ( TT_START + 0 ) +#define S_ ( TT_START + 0 ) +#define S_ ( TT_START + 0 ) +#define S_ ( TT_START + 0 ) +#define S_ ( TT_START + 0 ) +#define S_ ( TT_START + 0 ) +#define S_ ( TT_START + 0 ) +#define S_ ( TT_START + 0 ) +#define S_ ( TT_START + 0 ) +#define S_ ( TT_START + 0 ) +#define S_ ( TT_START + 0 ) +#define S_ ( TT_START + 0 ) +#define S_ ( TT_START + 0 ) +#define S_ ( TT_START + 0 ) +#define S_ ( TT_START + 0 ) +#define S_ ( TT_START + 0 ) +#define S_ ( TT_START + 0 ) +#define S_ ( TT_START + 0 ) +#define S_ ( TT_START + 0 ) +#define S_ ( TT_START + 0 ) +#define S_ ( TT_START + 0 ) +#define S_ ( TT_START + 0 ) +*/ diff --git a/basic/prj/d.lst b/basic/prj/d.lst new file mode 100644 index 000000000000..bde728a2833c --- /dev/null +++ b/basic/prj/d.lst @@ -0,0 +1,44 @@ +touch: ..\%__SRC%\misc\basic.hid %_DEST%\bin%_EXT%\basic.hid +..\%__SRC%\lib\basic.lib %_DEST%\lib%_EXT%\basic.lib +..\%__SRC%\lib\*.so %_DEST%\lib%_EXT%\*.so +..\%__SRC%\lib\*.a %_DEST%\lib%_EXT%\*.a +..\%__SRC%\slb\sb.lib %_DEST%\lib%_EXT%\xsb.lib +..\%__SRC%\srs\classes.srs %_DEST%\res%_EXT%\basic.srs +..\%__SRC%\res\*.srs %_DEST%\res%_EXT%\*.srs +..\%__SRC%\bin\sb?????.dll %_DEST%\bin%_EXT%\sb?????.dll +..\%__SRC%\bin\sb?????.sym %_DEST%\bin%_EXT%\sb?????.sym +..\%__SRC%\misc\sb?????.map %_DEST%\bin%_EXT%\sb?????.map +..\%__SRC%\bin\testtool.exe %_DEST%\bin%_EXT%\testtool.exe +..\%__SRC%\bin\testtool %_DEST%\bin%_EXT%\testtool.bin +..\%__SRC%\bin\stt%UPD%49.res %_DEST%\bin%_EXT%\testtool.res +..\%__SRC%\bin\stt*.res %_DEST%\bin%_EXT%\stt*.res +..\%__SRC%\inc\classes %_DEST%\bin%_EXT%\classes +..\%__SRC%\inc\keycodes %_DEST%\bin%_EXT%\keycodes +..\%__SRC%\inc\res_type %_DEST%\bin%_EXT%\res_type +..\%__SRC%\lib\app.lib %_DEST%\lib%_EXT%\app.lib +..\%__SRC%\lib\libapp.a %_DEST%\lib%_EXT%\libapp.a +..\%__SRC%\lib\sample.lib %_DEST%\lib%_EXT%\sample.lib +..\%__SRC%\lib\libsample.a %_DEST%\lib%_EXT%\libsample.a + +mkdir: %_DEST%\inc%_EXT%\basic +hedabu: ..\inc\sbdef.hxx %_DEST%\inc%_EXT%\basic\sbdef.hxx +hedabu: ..\inc\sbmod.hxx %_DEST%\inc%_EXT%\basic\sbmod.hxx +hedabu: ..\inc\sbjsmod.hxx %_DEST%\inc%_EXT%\basic\sbjsmod.hxx +hedabu: ..\inc\sbmeth.hxx %_DEST%\inc%_EXT%\basic\sbmeth.hxx +hedabu: ..\inc\sbprop.hxx %_DEST%\inc%_EXT%\basic\sbprop.hxx +hedabu: ..\inc\sbstar.hxx %_DEST%\inc%_EXT%\basic\sbstar.hxx +hedabu: ..\inc\sbuno.hxx %_DEST%\inc%_EXT%\basic\sbuno.hxx +hedabu: ..\inc\basmgr.hxx %_DEST%\inc%_EXT%\basic\basmgr.hxx +hedabu: ..\inc\sberrors.hxx %_DEST%\inc%_EXT%\basic\sberrors.hxx +hedabu: ..\inc\basrdll.hxx %_DEST%\inc%_EXT%\basic\basrdll.hxx +hedabu: ..\inc\stdobj1.hxx %_DEST%\inc%_EXT%\basic\sbstdobj.hxx +hedabu: ..\inc\hilight.hxx %_DEST%\inc%_EXT%\basic\hilight.hxx +hedabu: ..\inc\process.hxx %_DEST%\inc%_EXT%\basic\process.hxx +hedabu: ..\inc\testtool.hrc %_DEST%\inc%_EXT%\basic\testtool.hrc +hedabu: ..\inc\ttmsg.hrc %_DEST%\inc%_EXT%\basic\ttmsg.hrc +hedabu: ..\inc\mybasic.hxx %_DEST%\inc%_EXT%\basic\mybasic.hxx +hedabu: ..\inc\testtool.hxx %_DEST%\inc%_EXT%\basic\testtool.hxx +hedabu: ..\inc\basicrt.hxx %_DEST%\inc%_EXT%\basic\basicrt.hxx +hedabu: ..\inc\dispdefs.hxx %_DEST%\inc%_EXT%\basic\dispdefs.hxx +hedabu: ..\inc\ttstrhlp.hxx %_DEST%\inc%_EXT%\basic\ttstrhlp.hxx + diff --git a/basic/source/app/app.cxx b/basic/source/app/app.cxx new file mode 100644 index 000000000000..35a50b904abd --- /dev/null +++ b/basic/source/app/app.cxx @@ -0,0 +1,1580 @@ +/************************************************************************* + * + * $RCSfile: app.cxx,v $ + * + * $Revision: 1.1.1.1 $ + * + * last change: $Author: hr $ $Date: 2000-09-18 16:12:08 $ + * + * The Contents of this file are made available subject to the terms of + * either of the following licenses + * + * - GNU Lesser General Public License Version 2.1 + * - Sun Industry Standards Source License Version 1.1 + * + * Sun Microsystems Inc., October, 2000 + * + * GNU Lesser General Public License Version 2.1 + * ============================================= + * Copyright 2000 by Sun Microsystems, Inc. + * 901 San Antonio Road, Palo Alto, CA 94303, USA + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License version 2.1, as published by the Free Software Foundation. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + * + * + * Sun Industry Standards Source License Version 1.1 + * ================================================= + * The contents of this file are subject to the Sun Industry Standards + * Source License Version 1.1 (the "License"); You may not use this file + * except in compliance with the License. You may obtain a copy of the + * License at http://www.openoffice.org/license.html. + * + * Software provided under this License is provided on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, + * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS, + * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING. + * See the License for the specific provisions governing your rights and + * obligations concerning the Software. + * + * The Initial Developer of the Original Code is: Sun Microsystems, Inc. + * + * Copyright: 2000 by Sun Microsystems, Inc. + * + * All Rights Reserved. + * + * Contributor(s): _______________________________________ + * + * + ************************************************************************/ + +#ifndef _MSGBOX_HXX //autogen +#include <vcl/msgbox.hxx> +#endif +#ifndef _FSYS_HXX //autogen +#include <tools/fsys.hxx> +#endif +#ifndef _SV_FILEDLG_HXX //autogen +#include <svtools/filedlg.hxx> +#endif +#ifndef _SV_CONFIG_HXX //autogen +#include <vcl/config.hxx> +#endif + +#include <vcl/system.hxx> + +#include <vcl/font.hxx> + +#ifndef _BASIC_TTRESHLP_HXX +#include "ttstrhlp.hxx" +#endif + +#ifndef _SBXCLASS_HXX //autogen +#include <svtools/sbx.hxx> +#endif +#ifdef VCL +#include <svtools/filedlg.hxx> +#endif + +#include "basic.hrc" +#include "app.hxx" +#include "printer.hxx" +#include "status.hxx" +#include "appedit.hxx" +#include "appbased.hxx" +#include "apperror.hxx" +#include "mybasic.hxx" +#include "ttbasic.hxx" +#include "dialogs.hxx" +#include "basrdll.hxx" + +#ifndef _RUNTIME_HXX +#include "runtime.hxx" +#endif + +#ifndef _SB_INTERN_HXX +#include "sbintern.hxx" +#endif + +#ifdef _USE_UNO +#include <ucbhelper/contentbroker.hxx> +#include <ucbhelper/registerucb.hxx> +#include <unotools/regpathhelper.hxx> +#include <unotools/processfactory.hxx> + +#include <cppuhelper/servicefactory.hxx> +#include <com/sun/star/registry/XImplementationRegistration.hpp> +#include <com/sun/star/lang/XMultiServiceFactory.hpp> +#include <com/sun/star/ucb/XContentProviderManager.hpp> +#include <com/sun/star/ucb/ContentProviderServiceInfo2.hpp> + +using namespace utl; +using namespace ucb; +using namespace cppu; +using namespace rtl; +using namespace com::sun::star::uno; +using namespace com::sun::star::lang; +using namespace com::sun::star::registry; +using namespace com::sun::star::ucb; + +#endif /* _USE_UNO */ + + +BasicApp aBasicApp; // Applikations-Instanz + +#ifdef _USE_UNO +Reference< XContentProviderManager > InitializeUCB( std::vector< ucb::ContentProviderRegistrationInfo > &rRegisteredProviders ) +{ + ////////////////////////////////////////////////////////////////////// + // Bootstrap service factory, set global factory + Reference< XMultiServiceFactory > xSMgr( createRegistryServiceFactory( getPathToSystemRegistry() ) ); + setProcessServiceFactory( xSMgr ); + + ////////////////////////////////////////////////////////////////////// + // Create UCB. + Reference< XImplementationRegistration > + xIR( xSMgr->createInstance( OUString::createFromAscii( "com.sun.star.registry.ImplementationRegistration" ) ), UNO_QUERY ); + xIR->registerImplementation( OUString::createFromAscii( "com.sun.star.loader.SharedLibrary" ), + OUString::createFromAscii( "ucb1.dll" ), + Reference< XSimpleRegistry >() ); + xIR->registerImplementation( OUString::createFromAscii( "com.sun.star.loader.SharedLibrary" ), + OUString::createFromAscii( "ucpfile1.dll" ), + Reference< XSimpleRegistry >() ); + xIR->registerImplementation( OUString::createFromAscii( "com.sun.star.loader.SharedLibrary" ), + OUString::createFromAscii( "fileacc.dll" ), + Reference< XSimpleRegistry >() ); + + // Create unconfigured Ucb: + Sequence< Any > aArgs(1); + aArgs[0] <<= sal_False; + ucb::ContentBroker::initialize( xSMgr, aArgs ); + Reference< XContentProviderManager > xUcb = ucb::ContentBroker::get()->getContentProviderManagerInterface(); + /* + Reference< XContentProviderManager > xUcb( + xSMgr->createInstanceWithArguments( + OUString::createFromAscii( + "com.sun.star.ucb.UniversalContentBroker" ), + aArgs ), + UNO_QUERY ); + */ + // Configure Ucb (use only file content provider): + Sequence< ContentProviderServiceInfo2 > aProviders(1); + aProviders[0].Service + = OUString::createFromAscii( + "com.sun.star.ucb.FileContentProvider"); + aProviders[0].Scheme = OUString::createFromAscii("file"); + aProviders[0].ReplaceExisting = false; + ucb::registerAtUcb(xUcb, xSMgr, aProviders, &rRegisteredProviders); + return xUcb; +} +#endif + +void BasicApp::Main( ) +{ +#ifdef _USE_UNO + std::vector< ucb::ContentProviderRegistrationInfo > aRegisteredProviders; + Reference< XContentProviderManager > xUcb = InitializeUCB( aRegisteredProviders ); +#endif + { + LanguageType aRequestedLanguage; + Config aConf(Config::GetConfigName( Config::GetDefDirectory(), CUniString("testtool") )); + + // 1033 = LANGUAGE_ENGLISH_US + // 1031 = LANGUAGE_GERMAN + aConf.SetGroup("Misc"); + ByteString aLang = aConf.ReadKey( "Language", ByteString::CreateFromInt32( LANGUAGE_SYSTEM ) ); + aRequestedLanguage = LanguageType( aLang.ToInt32() ); + + AllSettings aSettings = GetSettings(); + International aInternational; + aInternational = GetSettings().GetInternational(); + aInternational = International( aRequestedLanguage ); + aSettings.SetInternational( aInternational ); + SetSettings( aSettings ); + aInternational = GetSettings().GetInternational(); + } + + +// ResMgr::CreateResMgr( CREATEVERSIONRESMGR( stt ), ) +//const char* ResMgr::GetLang( LanguageType& nType, USHORT nPrio ) + + Resource::SetResManager( CREATEVERSIONRESMGR( stt ) ); +// ResMgr::CreateResMgr( CREATEVERSIONRESMGR( stt ) +// ResMgr *pRes = new ResMgr( "testtool.res" ); +// Resource::SetResManager( pRes ); + + BasicDLL aBasicDLL; + nWait = 0; + + // Hilfe: +// pHelp = new Help; +// SetHelp( pHelp ); +// Help::EnableContextHelp(); +// Help::EnableExtHelp(); +// DeactivateExtHelp(); + + // Acceleratoren + Accelerator aAccel( ResId( MAIN_ACCEL ) ); + InsertAccel( &aAccel ); + pMainAccel = &aAccel; + + // Frame Window: + pFrame = new BasicFrame; + aAccel.SetSelectHdl( LINK( pFrame, BasicFrame, Accel ) ); + + pFrame->Show(); + + GetpApp()->PostUserEvent( LINK( this, BasicApp, LateInit ) ); + Execute(); + + // Loeschen der Members: +// delete pHelp; + delete pFrame; + + RemoveAccel( pMainAccel ); +#ifdef _USE_UNO + ucb::deregisterFromUcb(xUcb, aRegisteredProviders); +#endif +} + +void BasicApp::LoadIniFile() +{ + pFrame->LoadIniFile(); +} + +void BasicApp::SetFocus() +{ + if( pFrame->pWork && pFrame->pWork->ISA(AppEdit) ) + ((AppEdit*)pFrame->pWork)->pDataEdit->GrabFocus(); +} + +IMPL_LINK( BasicApp, LateInit, void *, pDummy ) +{ + BOOL bFileLoaded = FALSE; + for ( int i = 0 ; i < Application::GetCommandLineParamCount() ; i++ ) + { + if ( Application::GetCommandLineParam( i ).Copy(0,1).CompareToAscii("-") != COMPARE_EQUAL ) + { + pFrame->LoadFile( Application::GetCommandLineParam( i ) ); + bFileLoaded = TRUE; + } + else + { + if ( Application::GetCommandLineParam( i ).Copy(0,4).CompareIgnoreCaseToAscii("-run") == COMPARE_EQUAL ) + pFrame->SetAutoRun( TRUE ); + } + } + + if ( !bFileLoaded ) + { + AppWin *pWin = new AppBasEd( pFrame, NULL ); + pWin->Show(); + } + + pFrame->pStatus->SetStatusSize( pFrame->pStatus->GetStatusSize()+1 ); + pFrame->pStatus->SetStatusSize( pFrame->pStatus->GetStatusSize()-1 ); + + if ( pFrame->IsAutoRun() ) + { + pFrame->Command( RID_RUNSTART ); + } + + if ( pFrame->IsAutoRun() ) + pFrame->Command( RID_QUIT ); + + return 0; +} + +////////////////////////////////////////////////////////////////////////// + +class FloatingExecutionStatus : public FloatingWindow +{ +public: + FloatingExecutionStatus( Window * pParent ); + void SetStatus( String aW ); + void SetAdditionalInfo( String aF ); + +private: + Timer aAusblend; + DECL_LINK(HideNow, FloatingExecutionStatus* ); + FixedText aStatus; + FixedText aAdditionalInfo; +}; + + +FloatingExecutionStatus::FloatingExecutionStatus( Window * pParent ) + : FloatingWindow( pParent, ResId(LOAD_CONF) ), + aStatus( this, ResId( WORK ) ), + aAdditionalInfo( this, ResId( FILENAME ) ) +{ + FreeResource(); + aAusblend.SetTimeoutHdl( LINK(this, FloatingExecutionStatus, HideNow ) ); + aAusblend.SetTimeout(5000); // in ms + aAusblend.Start(); +} + +void FloatingExecutionStatus::SetStatus( String aW ) +{ + Show( TRUE, SHOW_NOFOCUSCHANGE | SHOW_NOACTIVATE ); + ToTop( TOTOP_NOGRABFOCUS ); + aAusblend.Start(); + aStatus.SetText( aW ); +} + +void FloatingExecutionStatus::SetAdditionalInfo( String aF ) +{ + Show( TRUE, SHOW_NOFOCUSCHANGE | SHOW_NOACTIVATE ); + ToTop( TOTOP_NOGRABFOCUS ); + aAusblend.Start(); + aAdditionalInfo.SetText( aF ); +} + +IMPL_LINK(FloatingExecutionStatus, HideNow, FloatingExecutionStatus*, pFLC ) +{ + Hide(); + return 0; +} + +////////////////////////////////////////////////////////////////////////// + +TYPEINIT1(TTExecutionStatusHint, SfxSimpleHint); + +BasicFrame::BasicFrame() : WorkWindow( NULL, + WinBits( WB_APP | WB_MOVEABLE | WB_SIZEABLE | WB_CLOSEABLE ) ) +, bIsAutoRun ( FALSE ) +, pDisplayHidDlg( NULL ) +, pBasic( NULL ) +, pWork( NULL ) +, pExecutionStatus( NULL ) +{ + + pBasic = TTBasic::CreateMyBasic(); // depending on what was linked to the executable + bInBreak = FALSE; + bDisas = FALSE; + nFlags = 0; +// Icon aAppIcon; + + if ( pBasic->pTestObject ) // also sid wir testtool + { +// aAppIcon = Icon( ResId( RID_APPICON2 ) ); + aAppName = String( ResId( IDS_APPNAME2 ) ); + } + else + { +// aAppIcon = Icon( ResId( RID_APPICON ) ); + aAppName = String( ResId( IDS_APPNAME ) ); + } + + // Menu: + MenuBar *pBar = new MenuBar( ResId( RID_APPMENUBAR ) ); + SetMenuBar( pBar ); + + pBar->SetHighlightHdl( LINK( this, BasicFrame, HighlightMenu ) ); + + + // Menu Handler: + PopupMenu* pFileMenu = pBar->GetPopupMenu( RID_APPFILE ); + pFileMenu->SetSelectHdl( LINK( this, BasicFrame, MenuCommand ) ); + pFileMenu->SetHighlightHdl( LINK( this, BasicFrame, HighlightMenu ) ); + pFileMenu->SetActivateHdl( LINK( this, BasicFrame, InitMenu ) ); + pFileMenu->SetDeactivateHdl( LINK( this, BasicFrame, DeInitMenu ) ); + if (Basic().pTestObject ) // Wir sind also TestTool + { + pFileMenu->RemoveItem( pFileMenu->GetItemPos( RID_FILELOADLIB ) -1 ); // Der Trenner davor + pFileMenu->RemoveItem( pFileMenu->GetItemPos( RID_FILELOADLIB ) ); + pFileMenu->RemoveItem( pFileMenu->GetItemPos( RID_FILESAVELIB ) ); + } + + PopupMenu* pEditMenu = pBar->GetPopupMenu( RID_APPEDIT ); + pEditMenu->SetSelectHdl( LINK( this, BasicFrame, MenuCommand ) ); + pEditMenu->SetHighlightHdl( LINK( this, BasicFrame, HighlightMenu ) ); + pEditMenu->SetActivateHdl( LINK( this, BasicFrame, InitMenu ) ); + pEditMenu->SetDeactivateHdl( LINK( this, BasicFrame, DeInitMenu ) ); + PopupMenu* pRunMenu = pBar->GetPopupMenu( RID_APPRUN ); + pRunMenu->SetSelectHdl( LINK( this, BasicFrame, MenuCommand ) ); + pRunMenu->SetHighlightHdl( LINK( this, BasicFrame, HighlightMenu ) ); + pRunMenu->SetActivateHdl( LINK( this, BasicFrame, InitMenu ) ); + pRunMenu->SetDeactivateHdl( LINK( this, BasicFrame, DeInitMenu ) ); + if (Basic().pTestObject ) // Wir sind also TestTool + { + pRunMenu->RemoveItem( pRunMenu->GetItemPos( RID_RUNDISAS ) ); + } + + PopupMenu *pExtras; + if (Basic().pTestObject ) // Wir sind also TestTool + { + pExtras = new PopupMenu( ResId( RID_TT_EXTRAS ) ); + pBar->InsertItem( RID_TT_EXTRAS, String( ResId( RID_TT_EXTRAS_NAME ) ), 0, pBar->GetItemPos( RID_APPWINDOW ) ); + pBar->SetPopupMenu( RID_TT_EXTRAS, pExtras ); + + pExtras->SetSelectHdl( LINK( this, BasicFrame, MenuCommand ) ); + pExtras->SetHighlightHdl( LINK( this, BasicFrame, HighlightMenu ) ); + pExtras->SetDeactivateHdl( LINK( this, BasicFrame, DeInitMenu ) ); + } + + PopupMenu* pWinMenu = pBar->GetPopupMenu( RID_APPWINDOW ); + pWinMenu->SetSelectHdl( LINK( this, BasicFrame, MenuCommand ) ); + pWinMenu->SetHighlightHdl( LINK( this, BasicFrame, HighlightMenu ) ); + pWinMenu->SetDeactivateHdl( LINK( this, BasicFrame, DeInitMenu ) ); + PopupMenu* pHelpMenu = pBar->GetPopupMenu( RID_APPHELP ); + pHelpMenu->SetSelectHdl( LINK( this, BasicFrame, MenuCommand ) ); + pHelpMenu->SetHighlightHdl( LINK( this, BasicFrame, HighlightMenu ) ); + pHelpMenu->SetActivateHdl( LINK( this, BasicFrame, InitMenu ) ); + pHelpMenu->SetDeactivateHdl( LINK( this, BasicFrame, DeInitMenu ) ); + + LoadLRU(); + + LoadIniFile(); + +#ifndef UNX + pPrn = new BasicPrinter; +#else + pPrn = NULL; +#endif + pList = new EditList; + pStatus = new StatusLine( this ); + + UpdateTitle(); +// SetIcon( aAppIcon ); + + // Groesse: halbe Breite, dreiviertel Hoehe minus 2 * IconSize + { + Config aConf(Config::GetConfigName( Config::GetDefDirectory(), CUniString("testtool") )); + aConf.SetGroup("WinGeom"); + SetWindowState( aConf.ReadKey("WinParams", "") ); + } + +// pWork = new AppEdit( this, NULL ); +// pWork->Show(); +// pWork->Close(); + + aLineNum.SetTimeoutHdl( LINK( this, BasicFrame, ShowLineNr ) ); + aLineNum.SetTimeout(200); + aLineNum.Start(); + + + aCheckFiles.SetTimeout( 10000 ); + aCheckFiles.SetTimeoutHdl( LINK( this, BasicFrame, CheckAllFiles ) ); + aCheckFiles.Start(); + + GetMenuBar()->SetCloserHdl( LINK( this, BasicFrame, CloseButtonClick ) ); + GetMenuBar()->SetFloatButtonClickHdl( LINK( this, BasicFrame, FloatButtonClick ) ); + GetMenuBar()->SetHideButtonClickHdl( LINK( this, BasicFrame, HideButtonClick ) ); +} + +void BasicFrame::LoadIniFile() +{ + Config aConf(Config::GetConfigName( Config::GetDefDirectory(), CUniString("testtool") )); + aConf.SetGroup("Misc"); + + ByteString aTemp = aConf.ReadKey( "AutoReload", "0" ); + bAutoReload = ( aTemp.CompareTo("1") == COMPARE_EQUAL ); + + if ( pBasic ) + pBasic->LoadIniFile(); +} + +BasicFrame::~BasicFrame() +{ + AppWin* p = pList->First(); + if( p ) while( (p = pList->Remove() ) != NULL ) delete p; + delete pStatus; + delete pPrn; + delete pList; +// delete pExecutionStatus; +// delete pBasic; + pBasic.Clear(); // Da jetzt REF +} + +void BasicFrame::UpdateTitle() +{ + String aTitle; + aTitle += aAppName; + if ( aAppMode.Len() ) + { + aTitle.AppendAscii(" ["); + aTitle += aAppMode; + aTitle.AppendAscii("]"); + } + aTitle.AppendAscii(" - "); + aTitle += aAppFile; + SetText( aTitle ); +} + +IMPL_LINK( BasicFrame, CheckAllFiles, Timer*, pTimer ) +{ + if ( pWork ) + { + AppWin* pStartWin = pWork; + Window* pFocusWin = Application::GetFocusWindow(); + for ( int i = pList->Count()-1 ; i >= 0 ; i-- ) + pList->GetObject( i )->CheckReload(); + + if ( pWork != pStartWin ) + { + pWork = pStartWin; + pWork->ToTop(); + } + if ( pFocusWin ) + pFocusWin->GrabFocus(); + } + pTimer->Start(); + return 0; +} + +BOOL BasicFrame::IsAutoRun() +{ + return bIsAutoRun; +} + +void BasicFrame::SetAutoRun( BOOL bAuto ) +{ + bIsAutoRun = bAuto; +} + +void BasicFrame::SFX_NOTIFY( SfxBroadcaster&, const TypeId&, + const SfxHint& rHint, const TypeId& ) +{ + if ( rHint.ISA( TTExecutionStatusHint ) ) + { + TTExecutionStatusHint *pStatusHint = ( TTExecutionStatusHint* )&rHint; + switch ( pStatusHint->GetType() ) + { + case TT_EXECUTION_ENTERWAIT: + { + EnterWait(); + } + break; + case TT_EXECUTION_LEAVEWAIT: + { + LeaveWait(); + } + break; + case TT_EXECUTION_SHOW_ACTION: + { + if ( !pExecutionStatus ) + pExecutionStatus = new FloatingExecutionStatus( this ); + pExecutionStatus->SetStatus( pStatusHint->GetExecutionStatus() ); + pExecutionStatus->SetAdditionalInfo( pStatusHint->GetAdditionalExecutionStatus() ); + } + break; + } + } + + + Broadcast( rHint ); +} + +void BasicFrame::Resize() +{ + Config aConf(Config::GetConfigName( Config::GetDefDirectory(), CUniString("testtool") )); + aConf.SetGroup("WinGeom"); + aConf.WriteKey("WinParams",GetWindowState()); + + // Statusbar + Size aOutSize = GetOutputSizePixel(); + Size aStatusSize = pStatus->GetSizePixel(); + Point aStatusPos( 0, aOutSize.Height() - aStatusSize.Height() ); + aStatusSize.Width() = aOutSize.Width(); + + pStatus->SetPosPixel( aStatusPos ); + pStatus->SetSizePixel( aStatusSize ); + + + // Eventuell Maximized window resizen + ULONG i; + for( i = pList->Count(); i > 0 ; i-- ) + { + if ( pList->GetObject( i-1 )->GetWinState() == TT_WIN_STATE_MAX ) + pList->GetObject( i-1 )->Maximize(); // resized auch + } +} + +void BasicFrame::Move() +{ + Config aConf(Config::GetConfigName( Config::GetDefDirectory(), CUniString("testtool") )); + aConf.SetGroup("WinGeom"); + aConf.WriteKey("WinParams",GetWindowState()); +} + +IMPL_LINK( BasicFrame, CloseButtonClick, void*, EMPTYARG ) +{ + AppWin* p; + for ( p = pList->Last() ; p && p->GetWinState() != TT_WIN_STATE_MAX ; p = pList->Prev() ) + {}; + if ( p ) + p->GrabFocus(); + return Command( RID_FILECLOSE, FALSE ); +} + +IMPL_LINK( BasicFrame, FloatButtonClick, void*, EMPTYARG ) +{ + AppWin* p; + for ( p = pList->Last() ; p && p->GetWinState() != TT_WIN_STATE_MAX ; p = pList->Prev() ) + {}; + if ( p ) + p->TitleButtonClick( TITLE_BUTTON_DOCKING ); + return 1; +} + +IMPL_LINK( BasicFrame, HideButtonClick, void*, EMPTYARG ) +{ + AppWin* p; + for ( p = pList->Last() ; p && p->GetWinState() != TT_WIN_STATE_MAX ; p = pList->Prev() ) + {}; + if ( p ) + p->TitleButtonClick( TITLE_BUTTON_HIDE ); + return 1; +} + +void BasicFrame::WinShow_Hide() +{ + if ( !pList->Count() ) + return; + + AppWin* p; + BOOL bWasFullscreen = FALSE; + for ( p = pList->Last() ; p ; p = pList->Prev() ) + { + if ( p->pDataEdit ) + { + if ( p->GetWinState() & TT_WIN_STATE_HIDE // Versteckt + || ( bWasFullscreen + && ( !p->IsPined() || p->GetWinState() & TT_WIN_STATE_MAX ) + ) + ) + p->Hide( SHOW_NOFOCUSCHANGE | SHOW_NOACTIVATE ); + else + p->Show( TRUE, SHOW_NOFOCUSCHANGE | SHOW_NOACTIVATE ); + } + bWasFullscreen |= p->GetWinState() == TT_WIN_STATE_MAX; + } +} + +void BasicFrame::WinMax_Restore() +{ + // Die ApplicationButtons + AppWin* p; + BOOL bHasFullscreenWin = FALSE; + for( p = pList->First(); p && !bHasFullscreenWin ; p = pList->Next() ) + bHasFullscreenWin |= ( p->GetWinState() == TT_WIN_STATE_MAX ); + GetMenuBar()->ShowButtons( bHasFullscreenWin, bHasFullscreenWin, bHasFullscreenWin ); + WinShow_Hide(); +} + +void BasicFrame::RemoveWindow( AppWin *pWin ) +{ +// delete pIcon; + pList->Remove( pWin ); + pWork = pList->Last(); + + WinShow_Hide(); + + if ( pWork ) + pWork->ToTop(); + + WinMax_Restore(); + + Menu* pMenu = GetMenuBar(); + if( pList->Count() == 0 ) { + pMenu->EnableItem( RID_APPEDIT, FALSE ); + pMenu->EnableItem( RID_APPRUN, FALSE ); + pMenu->EnableItem( RID_APPWINDOW, FALSE ); + } + + PopupMenu* pWinMenu = pMenu->GetPopupMenu( RID_APPWINDOW ); + + pWinMenu->RemoveItem( pWinMenu->GetItemPos( pWin->GetWinId() ) ); + + // Trenner entfernen + if ( pWinMenu->GetItemType( pWinMenu->GetItemCount() - 1 ) == MENUITEM_SEPARATOR ) + pWinMenu->RemoveItem( pWinMenu->GetItemCount() - 1 ); + + pStatus->LoadTaskToolBox(); +} + +void BasicFrame::AddWindow( AppWin *pWin ) +{ + // Eintragen: + pList->Insert( pWin, LIST_APPEND ); + pWork = pWin; + + WinMax_Restore(); + + // Hauptmenue aktivieren: + MenuBar* pMenu = GetMenuBar(); + if( pList->Count() > 0 ) { + pMenu->EnableItem( RID_APPEDIT, TRUE ); + pMenu->EnableItem( RID_APPRUN, TRUE ); + pMenu->EnableItem( RID_APPWINDOW, TRUE ); + } + + PopupMenu* pWinMenu = pMenu->GetPopupMenu( RID_APPWINDOW ); + USHORT nLastID = pWinMenu->GetItemId( pWinMenu->GetItemCount() - 1 ); + + // Trenner erforderlich + if ( nLastID < RID_WIN_FILE1 && pWinMenu->GetItemType( pWinMenu->GetItemCount() - 1 ) != MENUITEM_SEPARATOR ) + pWinMenu->InsertSeparator(); + + // Freie ID finden + USHORT nFreeID = RID_WIN_FILE1; + while ( pWinMenu->GetItemPos( nFreeID ) != MENU_ITEM_NOTFOUND && nFreeID < RID_WIN_FILEn ) + nFreeID++; + + pWin->SetWinId( nFreeID ); + pWinMenu->InsertItem( nFreeID, pWin->GetText() ); +} + +void BasicFrame::WindowRenamed( AppWin *pWin ) +{ + MenuBar* pMenu = GetMenuBar(); + PopupMenu* pWinMenu = pMenu->GetPopupMenu( RID_APPWINDOW ); + + pWinMenu->SetItemText( pWin->GetWinId(), pWin->GetText() ); + + pStatus->LoadTaskToolBox(); + + aAppFile = pWin->GetText(); + UpdateTitle(); +} + +void BasicFrame::FocusWindow( AppWin *pWin ) +{ + pWork = pWin; + pList->Remove( pWin ); + pList->Insert( pWin, LIST_APPEND ); + pWin->Minimize( FALSE ); + + aAppFile = pWin->GetText(); + UpdateTitle(); + + WinShow_Hide(); + pStatus->LoadTaskToolBox(); +} + +BOOL BasicFrame::Close() +{ + if( bInBreak || Basic().IsRunning() ) + if( RET_NO == QueryBox( this, ResId( IDS_RUNNING ) ).Execute() ) + return FALSE; + + StarBASIC::Stop(); + bInBreak = FALSE; + if( CloseAll() ) + { + aLineNum.Stop(); + + // Alle übrigen Dialoge schliessen um assertions zu vermeiden!! + while ( GetWindow( WINDOW_OVERLAP )->GetWindow( WINDOW_FIRSTOVERLAP ) ) + { + delete GetWindow( WINDOW_OVERLAP )->GetWindow( WINDOW_FIRSTOVERLAP )->GetWindow( WINDOW_CLIENT ); + } + + WorkWindow::Close(); + + return TRUE; + } else return FALSE; +} + +BOOL BasicFrame::CloseAll() +{ + while ( pList->Count() ) + if ( !pList->Last()->Close() ) + return FALSE; + return TRUE; +} + +BOOL BasicFrame::CompileAll() +{ + AppWin* p; + for( p = pList->First(); p; p = pList->Next() ) + if( p->ISA(AppBasEd) && !((AppBasEd*)p)->Compile() ) return FALSE; + return TRUE; +} + +// Menu aufsetzen + +#define MENU2FILENAME Copy(3) +#define FILENAME2MENU( Nr, Name ) CUniString("~").Append( UniString::CreateFromInt32(i) ).AppendAscii(" ").Append( Name ) +#define LRUNr( nNr ) CByteString("LRU").Append( ByteString::CreateFromInt32(nNr) ) +void BasicFrame::AddToLRU(String const& aFile) +{ + Config aConfig(Config::GetConfigName( Config::GetDefDirectory(), CUniString("testtool") )); + PopupMenu *pPopup = GetMenuBar()->GetPopupMenu(RID_APPFILE); + + aConfig.SetGroup("LRU"); + DirEntry aFileEntry( aFile ); + USHORT i,nLastMove = 4; + + for ( i = 1 ; i<4 && nLastMove == 4 ; i++ ) + { + if ( DirEntry( UniString( aConfig.ReadKey(LRUNr(i),""), RTL_TEXTENCODING_UTF8 ) ) == aFileEntry ) + nLastMove = i; + } + + for ( i = nLastMove ; i>1 ; i-- ) + { + aConfig.WriteKey(LRUNr(i), aConfig.ReadKey(LRUNr(i-1),"")); + pPopup->SetItemText(IDM_FILE_LRU1 + i-1,FILENAME2MENU( i, pPopup->GetItemText(IDM_FILE_LRU1 + i-1-1).MENU2FILENAME )); + } + aConfig.WriteKey(LRUNr(1), ByteString( aFile, RTL_TEXTENCODING_UTF8 ) ); + pPopup->SetItemText(IDM_FILE_LRU1,FILENAME2MENU( 1, aFile) ); +} + +void BasicFrame::LoadLRU() +{ + Config aConfig(Config::GetConfigName( Config::GetDefDirectory(), CUniString("testtool") )); + PopupMenu *pPopup = GetMenuBar()->GetPopupMenu(RID_APPFILE); + BOOL bAddSep = TRUE; + + aConfig.SetGroup("LRU"); + + for (int i=1; i<=4 && pPopup!=NULL; i++) + { + String aFile = UniString( aConfig.ReadKey(LRUNr(i)), RTL_TEXTENCODING_UTF8 ); + + if (aFile.Len() != 0) + { + if (bAddSep) + { + pPopup->InsertSeparator(); + bAddSep = FALSE; + } + + pPopup->InsertItem(IDM_FILE_LRU1 + i-1, FILENAME2MENU( i, aFile )); + } + } +} + +IMPL_LINK( BasicFrame, InitMenu, Menu *, pMenu ) +{ + BOOL bNormal = BOOL( !bInBreak ); + pMenu->EnableItem( RID_RUNCOMPILE, bNormal ); + + BOOL bHasEdit = BOOL( /*bNormal &&*/ pWork != NULL ); + +// pMenu->EnableItem( RID_FILENEW, bNormal ); // immer möglich +// pMenu->EnableItem( RID_FILEOPEN, bNormal ); + pMenu->EnableItem( RID_FILECLOSE, bHasEdit ); + pMenu->EnableItem( RID_FILESAVE, bHasEdit ); + pMenu->EnableItem( RID_FILESAVEAS, bHasEdit ); + pMenu->EnableItem( RID_FILEPRINT, bHasEdit ); + pMenu->EnableItem( RID_FILESETUP, bHasEdit ); + pMenu->EnableItem( RID_FILELOADLIB, bNormal ); + pMenu->EnableItem( RID_FILESAVELIB, bHasEdit ); + + BOOL bHasErr = BOOL( bNormal && pBasic->GetErrors() != 0 ); + BOOL bNext = bHasErr & bNormal; + BOOL bPrev = bHasErr & bNormal; + if( bHasErr ) { + short n = (short) pBasic->aErrors.GetCurPos(); + if( n == 0 ) bPrev = FALSE; + if( n ==( pBasic->GetErrors() - 1 ) ) bNext = FALSE; + } + pMenu->EnableItem( RID_RUNNEXTERR, bNext ); + pMenu->EnableItem( RID_RUNPREVERR, bPrev ); + pMenu->CheckItem( RID_RUNDISAS, bDisas ); + if( pWork ) pWork->InitMenu( pMenu ); + + return TRUE; +} + +IMPL_LINK_INLINE_START( BasicFrame, DeInitMenu, Menu *, pMenu ) +{ + pMenu->EnableItem( RID_RUNCOMPILE ); + + pMenu->EnableItem( RID_FILECLOSE ); + pMenu->EnableItem( RID_FILESAVE ); + pMenu->EnableItem( RID_FILESAVEAS ); + pMenu->EnableItem( RID_FILEPRINT ); + pMenu->EnableItem( RID_FILESETUP ); + pMenu->EnableItem( RID_FILELOADLIB ); + pMenu->EnableItem( RID_FILESAVELIB ); + + pMenu->EnableItem( RID_RUNNEXTERR ); + pMenu->EnableItem( RID_RUNPREVERR ); + if( pWork ) pWork->DeInitMenu( pMenu ); + + + SetAutoRun( FALSE ); + String aString; + pStatus->Message( aString ); + return 0L; +} +IMPL_LINK_INLINE_END( BasicFrame, DeInitMenu, Menu *, pMenu ) + +IMPL_LINK_INLINE_START( BasicFrame, HighlightMenu, Menu *, pMenu ) +{ + String s = pMenu->GetHelpText( pMenu->GetCurItemId() ); + pStatus->Message( s ); + return 0L; +} +IMPL_LINK_INLINE_END( BasicFrame, HighlightMenu, Menu *, pMenu ) + +IMPL_LINK_INLINE_START( BasicFrame, MenuCommand, Menu *, pMenu ) +{ + USHORT nId = pMenu->GetCurItemId(); + BOOL bChecked = pMenu->IsItemChecked( nId ); + return Command( nId, bChecked ); +} +IMPL_LINK_INLINE_END( BasicFrame, MenuCommand, Menu *, pMenu ) + +IMPL_LINK_INLINE_START( BasicFrame, Accel, Accelerator*, pAcc ) +{ + SetAutoRun( FALSE ); + return Command( pAcc->GetCurItemId() ); +} +IMPL_LINK_INLINE_END( BasicFrame, Accel, Accelerator*, pAcc ) + +IMPL_LINK_INLINE_START( BasicFrame, ShowLineNr, AutoTimer *, pTimer ) +{ + String aPos; + if ( pWork ) + { + aPos = String::CreateFromInt32(pWork->GetLineNr()); + } + pStatus->Pos( aPos ); + return 0L; +} +IMPL_LINK_INLINE_END( BasicFrame, ShowLineNr, AutoTimer *, pTimer ) + + +MsgEdit* BasicFrame::GetMsgTree( String aLogFileName ) +{ + if ( FindErrorWin( aLogFileName ) ) + { + return FindErrorWin( aLogFileName )->GetMsgTree(); + } + else + { // create new Window on the fly + AppError *pNewWindow = new AppError( this, aLogFileName ); + pNewWindow->Show(); + pNewWindow->GrabFocus(); + return pNewWindow->GetMsgTree(); + } +} + +IMPL_LINK( BasicFrame, Log, TTLogMsg *, pLogMsg ) +{ + GetMsgTree( pLogMsg->aLogFileName )->AddAnyMsg( pLogMsg ); + return 0L; +} + +IMPL_LINK( BasicFrame, WinInfo, WinInfoRec*, pWinInfo ) +{ + if ( !pDisplayHidDlg ) + pDisplayHidDlg = new DisplayHidDlg( this ); + if ( pDisplayHidDlg ) + { + pDisplayHidDlg->AddData( pWinInfo ); + pDisplayHidDlg->Show(); + } + return 0; +} + +BOOL BasicFrame::LoadFile( String aFilename ) +{ + BOOL bIsResult = DirEntry( aFilename ).GetExtension().CompareIgnoreCaseToAscii("RES") == COMPARE_EQUAL; + BOOL bIsBasic = DirEntry( aFilename ).GetExtension().CompareIgnoreCaseToAscii("BAS") == COMPARE_EQUAL; + bIsBasic |= DirEntry( aFilename ).GetExtension().CompareIgnoreCaseToAscii("INC") == COMPARE_EQUAL; + + AppWin* p; + if ( bIsResult ) + { + p = new AppError( this, aFilename ); + } + else if ( bIsBasic ) + { + p = new AppBasEd( this, NULL ); + p->Load( aFilename ); + } + else + { + p = new AppEdit( this ); + p->Load( aFilename ); + } + p->Show(); + p->GrabFocus(); + return TRUE; +} + +// Kommando ausfuehren + +long BasicFrame::Command( short nID, BOOL bChecked ) +{ + BasicError* pErr; + + switch( nID ) { + case RID_FILENEW: { + AppBasEd* p = new AppBasEd( this, NULL ); + p->Show(); + p->GrabFocus(); + // InitMenu(GetMenuBar()->GetPopupMenu( RID_APPRUN )); + } break; + case RID_FILEOPEN: + { + String s; + if( QueryFileName( s, FT_BASIC_SOURCE | FT_RESULT_FILE, FALSE ) ) { + AddToLRU( s ); + LoadFile( s ); +// InitMenu(GetMenuBar()->GetPopupMenu( RID_APPRUN )); + } + } break; + case RID_FILELOADLIB: + LoadLibrary(); + break; + case RID_FILESAVELIB: + SaveLibrary(); + break; + case RID_FILECLOSE: + if( pWork && pWork->Close() ){}; +// InitMenu(GetMenuBar()->GetPopupMenu( RID_APPRUN )); + break; + case RID_FILEPRINT: +#ifndef UNX + if( pWork ) + pPrn->Print( pWork->GetText(), pWork->pDataEdit->GetText(), this ); +#else + InfoBox( this, ResId( IDS_NOPRINTERERROR ) ).Execute(); +#endif + break; + case RID_FILESETUP: +#ifndef UNX + pPrn->Setup(); +#else + InfoBox( this, ResId( IDS_NOPRINTERERROR ) ).Execute(); +#endif + break; + case RID_QUIT: + if( Close() ) aBasicApp.Quit(); + break; + case IDM_FILE_LRU1: + case IDM_FILE_LRU2: + case IDM_FILE_LRU3: + case IDM_FILE_LRU4: + { + String s = GetMenuBar()->GetPopupMenu(RID_APPFILE)->GetItemText(nID).MENU2FILENAME; + + AddToLRU( s ); + LoadFile( s ); +// InitMenu(GetMenuBar()->GetPopupMenu( RID_APPRUN )); + } + break; + + + case RID_RUNSTART: + nFlags = SbDEBUG_BREAK; + goto start; + case RID_RUNSTEPOVER: + nFlags = SbDEBUG_STEPINTO | SbDEBUG_STEPOVER; + goto start; + case RID_RUNSTEPINTO: + nFlags = SbDEBUG_STEPINTO; + goto start; + case RID_RUNTOCURSOR: + if ( pWork && pWork->ISA(AppBasEd) && ((AppBasEd*)pWork)->GetModule()->SetBP(pWork->GetLineNr()) ) + { + SbModule *pModule = ((AppBasEd*)pWork)->GetModule(); +#ifdef DEBUG + USHORT x; + x = pWork->GetLineNr(); + x = ((AppBasEd*)pWork)->GetModule()->GetBPCount(); + if ( !x ) + x = pModule->SetBP(pWork->GetLineNr()); + x = pModule->GetBPCount(); +#endif + + for ( USHORT nMethod = 0; nMethod < pModule->GetMethods()->Count(); nMethod++ ) + { + SbMethod* pMethod = (SbMethod*)pModule->GetMethods()->Get( nMethod ); + DBG_ASSERT( pMethod, "Methode nicht gefunden! (NULL)" ); + pMethod->SetDebugFlags( pMethod->GetDebugFlags() | SbDEBUG_BREAK ); + } + } + nFlags = SbDEBUG_BREAK; + goto start; + start: { +// InitMenu(GetMenuBar()->GetPopupMenu( RID_APPRUN )); + if ( !Basic().IsRunning() || bInBreak ) + { + AppBasEd* p = NULL; + if( pWork && pWork->ISA(AppBasEd) ) + { + p = ((AppBasEd*)pWork); + p->ToTop(); + } + else + SetAutoRun( FALSE ); // Wenn kein Programm geladen wurde, dann auch nicht beenden + + if( bInBreak ) + // Nur das Flag zuruecksetzen + bInBreak = FALSE; + else + { + if( !SaveAll() ) break; + if( !CompileAll() ) break; + String aString; + pStatus->Message( aString ); + if( p ) + { + BasicDLL::SetDebugMode( TRUE ); + Basic().ClearGlobalVars(); + p->Run(); + BasicDLL::SetDebugMode( FALSE ); + // Falls waehrend Interactive=FALSE abgebrochen +// BasicDLL::EnableBreak( TRUE ); + } + }} + } +// InitMenu(GetMenuBar()->GetPopupMenu( RID_APPRUN )); // nach run + break; + case RID_RUNCOMPILE: + if( pWork && pWork->ISA(AppBasEd) && SaveAll() ) + { + ((AppBasEd*)pWork)->Compile(); + pWork->ToTop(); + pWork->GrabFocus(); + } + break; + case RID_RUNDISAS: + bDisas = BOOL( !bChecked ); + break; + case RID_RUNBREAK: + if ( Basic().IsRunning() && !bInBreak ) + { +// pINST->CalcBreakCallLevel(SbDEBUG_STEPINTO); + pINST->nBreakCallLvl = pINST->nCallLvl; + } + break; + case RID_RUNSTOP: + Basic().Stop(); + bInBreak = FALSE; + break; + case RID_RUNNEXTERR: + pErr = pBasic->aErrors.Next(); + if( pErr ) pErr->Show(); + break; + case RID_RUNPREVERR: + pErr = pBasic->aErrors.Prev(); + if( pErr ) pErr->Show(); + break; + + case RID_OPTIONS: + { + new OptionsDialog( this, ResId(IDD_OPTIONS_DLG) ); + } + break; + case RID_DECLARE_HELPER: + InfoBox( this, ResId( IDS_NOT_YET_IMPLEMENTED ) ).Execute(); + break; + + case RID_WINTILE: + { + WindowArrange aArange; + for ( ULONG i = 0 ; i < pList->Count() ; i++ ) + { + aArange.AddWindow( pList->GetObject( i ) ); + pList->GetObject( i )->Restore(); + } + + + long nTitleHeight; + { + long nDummy1, nDummy2, nDummy3; + GetBorder( nDummy1, nTitleHeight, nDummy2, nDummy3 ); + } + + Size aSize = GetOutputSizePixel(); + aSize.Height() -= nTitleHeight; + Rectangle aRect( Point( 0, nTitleHeight ), aSize ); + + aArange.Arrange( WINDOWARRANGE_TILE, aRect ); + + } + break; + case RID_WINTILEHORZ: + { + WindowArrange aArange; + for ( ULONG i = 0 ; i < pList->Count() ; i++ ) + { + aArange.AddWindow( pList->GetObject( i ) ); + pList->GetObject( i )->Restore(); + } + + + long nTitleHeight; + { + long nDummy1, nDummy2, nDummy3; + GetBorder( nDummy1, nTitleHeight, nDummy2, nDummy3 ); + } + + Size aSize = GetOutputSizePixel(); + aSize.Height() -= nTitleHeight; + Rectangle aRect( Point( 0, nTitleHeight ), aSize ); + + aArange.Arrange( WINDOWARRANGE_HORZ, aRect ); + + } + break; + case RID_WINTILEVERT: +//#define WINDOWARRANGE_TILE 1 +//#define WINDOWARRANGE_HORZ 2 +//#define WINDOWARRANGE_VERT 3 +//#define WINDOWARRANGE_CASCADE 4 + { + WindowArrange aArange; + for ( ULONG i = 0 ; i < pList->Count() ; i++ ) + { + aArange.AddWindow( pList->GetObject( i ) ); + pList->GetObject( i )->Restore(); + } + + + long nTitleHeight; + { + long nDummy1, nDummy2, nDummy3; + GetBorder( nDummy1, nTitleHeight, nDummy2, nDummy3 ); + } + + Size aSize = GetOutputSizePixel(); + aSize.Height() -= nTitleHeight; + Rectangle aRect( Point( 0, nTitleHeight ), aSize ); + + aArange.Arrange( WINDOWARRANGE_VERT, aRect ); + + } + break; + case RID_WINCASCADE: + { + for ( ULONG i = 0 ; i < pList->Count() ; i++ ) + { + pList->GetObject( i )->Cascade( i ); + } + } + break; + +/* case RID_HELPTOPIC: + if( pWork ) pWork->Help(); + break; + case RID_HELPKEYS: + aBasicApp.pHelp->Start( CUniString( "Keyboard" ) ); + break; + case RID_HELPINDEX: + aBasicApp.pHelp->Start( HELP_INDEX ); + break; + case RID_HELPINTRO: + aBasicApp.pHelp->Start( HELP_HELPONHELP ); + break; +*/ case RID_HELPABOUT: + { + ResId aResId( IDD_ABOUT_DIALOG ); + if ( Basic().pTestObject ) // Wir sind also TestTool + aResId = ResId( IDD_TT_ABOUT_DIALOG ); + else + aResId = ResId( IDD_ABOUT_DIALOG ); + AboutDialog( this, aResId ).Execute(); + } + break; + case RID_POPUPEDITVAR: + { + new VarEditDialog( this, pEditVar ); + } + break; + default: + if ( nID >= RID_WIN_FILE1 && nID <= RID_WIN_FILEn ) + { + MenuBar* pMenu = GetMenuBar(); + PopupMenu* pWinMenu = pMenu->GetPopupMenu( RID_APPWINDOW ); + String aName = pWinMenu->GetItemText( nID ); + AppWin* pWin = FindWin( aName ); + if ( pWin ) + pWin->ToTop(); + } + else + { +// InitMenu(GetMenuBar()->GetPopupMenu( RID_APPEDIT )); // So daß Delete richtig ist + if( pWork ) + pWork->Command( CommandEvent( Point(), nID ) ); +// InitMenu(GetMenuBar()->GetPopupMenu( RID_APPEDIT )); // So daß Delete richtig ist + } + } + return TRUE; +} + +BOOL BasicFrame::SaveAll() +{ + AppWin* p, *q = pWork; + for( p = pList->First(); p; p = pList->Next() ) + { + USHORT nRes = p->QuerySave( QUERY_DISK_CHANGED ); + if( (( nRes == SAVE_RES_ERROR ) && QueryBox(this,ResId(IDS_ASKSAVEERROR)).Execute() == RET_NO ) + || ( nRes == SAVE_RES_CANCEL ) ) + return FALSE; + } + if ( q ) + q->ToTop(); + return TRUE; +} + +IMPL_LINK( BasicFrame, ModuleWinExists, String*, pFilename ) +{ + return FindModuleWin( *pFilename ) != NULL; +} + +AppBasEd* BasicFrame::FindModuleWin( const String& rName ) +{ + AppWin* p; + for( p = pList->First(); p; p = pList->Next() ) + { + if( p->ISA(AppBasEd) && ((AppBasEd*)p)->GetModName() == rName ) + return ((AppBasEd*)p); + } + return NULL; +} + +AppError* BasicFrame::FindErrorWin( const String& rName ) +{ + AppWin* p; + for( p = pList->First(); p; p = pList->Next() ) + { + if( p->ISA(AppError) && ((AppError*)p)->GetText() == rName ) + return ((AppError*)p); + } + return NULL; +} + +AppWin* BasicFrame::FindWin( const String& rName ) +{ + AppWin* p; + for( p = pList->First(); p; p = pList->Next() ) + { + if( p->GetText() == rName ) + return p; + } + return NULL; +} + +AppWin* BasicFrame::FindWin( USHORT nWinId ) +{ + AppWin* p; + for( p = pList->First(); p; p = pList->Next() ) + { + if( p->GetWinId() == nWinId ) + return p; + } + return NULL; +} + +class NewFileDialog : public FileDialog +{ +private: + String aLastPath; +public: + ByteString aPathName; + NewFileDialog( Window* pParent, WinBits nWinStyle ):FileDialog( pParent, nWinStyle ){}; + virtual short Execute(); + virtual void FilterSelect(); +}; + +void NewFileDialog::FilterSelect() +{ + String aTemp = GetPath(); + if ( aLastPath.Len() == 0 ) + aLastPath = DirEntry( GetPath() ).GetPath().GetFull(); + if ( aLastPath.CompareIgnoreCaseToAscii( DirEntry( GetPath() ).GetPath().GetFull() ) != COMPARE_EQUAL ) + return; // Der Benutzer entscheidet sich nachdem er den Pfad geändert hat. + + String aCurFilter = GetCurFilter(); + USHORT nFilterNr = 0; + while ( nFilterNr < GetFilterCount() && aCurFilter != GetFilterName( nFilterNr ) ) + { + nFilterNr++; + } + aPathName = ByteString( GetFilterType( nFilterNr ), RTL_TEXTENCODING_UTF8 ); + + Config aConf(Config::GetConfigName( Config::GetDefDirectory(), CUniString("testtool") )); + aConf.SetGroup( "Path" ); + aLastPath = UniString( aConf.ReadKey( aPathName, aConf.ReadKey( "Basisverzeichnis" ) ), RTL_TEXTENCODING_UTF8 ); + SetPath( aLastPath ); +// if ( IsInExecute() ) +// SetPath( "" ); +} + +short NewFileDialog::Execute() +{ + BOOL bRet = FileDialog::Execute(); + if ( bRet ) + { + Config aConf(Config::GetConfigName( Config::GetDefDirectory(), CUniString("testtool") )); + aConf.SetGroup( "Path" ); + aConf.WriteKey( aPathName, ByteString( DirEntry( GetPath() ).GetPath().GetFull(), RTL_TEXTENCODING_UTF8 ) ); + } + return bRet; +} + +BOOL BasicFrame::QueryFileName + (String& rName, FileType nFileType, BOOL bSave ) +{ + NewFileDialog aDlg( this, bSave ? WinBits( WB_SAVEAS ) : + WinBits( WB_OPEN ) ); + aDlg.SetText( String( ResId( bSave ? IDS_SAVEDLG : IDS_LOADDLG ) ) ); + + if ( nFileType & FT_RESULT_FILE ) + { + aDlg.SetDefaultExt( String( ResId( IDS_RESFILE ) ) ); + aDlg.AddFilter( String( ResId( IDS_RESFILTER ) ), String( ResId( IDS_RESFILE ) ) ); + aDlg.AddFilter( String( ResId( IDS_TXTFILTER ) ), String( ResId( IDS_TXTFILE ) ) ); + aDlg.SetCurFilter( ResId( IDS_RESFILTER ) ); + } + + if ( nFileType & FT_BASIC_SOURCE ) + { + aDlg.SetDefaultExt( String( ResId( IDS_NONAMEFILE ) ) ); + aDlg.AddFilter( String( ResId( IDS_BASFILTER ) ), String( ResId( IDS_NONAMEFILE ) ) ); + aDlg.AddFilter( String( ResId( IDS_INCFILTER ) ), String( ResId( IDS_INCFILE ) ) ); + aDlg.SetCurFilter( ResId( IDS_BASFILTER ) ); + } + + if ( nFileType & FT_BASIC_LIBRARY ) + { + aDlg.SetDefaultExt( String( ResId( IDS_LIBFILE ) ) ); + aDlg.AddFilter( String( ResId( IDS_LIBFILTER ) ), String( ResId( IDS_LIBFILE ) ) ); + aDlg.SetCurFilter( ResId( IDS_LIBFILTER ) ); + } + + + aDlg.FilterSelect(); // Setzt den Pfad vom letzten mal. +// if ( bSave ) + if ( rName.Len() > 0 ) + aDlg.SetPath( rName ); + + if( aDlg.Execute() ) + { + rName = aDlg.GetPath(); +/* rExtension = aDlg.GetCurrentFilter(); + var i:integer; + for ( i = 0 ; i < aDlg.GetFilterCount() ; i++ ) + if ( rExtension == aDlg.GetFilterName( i ) ) + rExtension = aDlg.GetFilterType( i ); +*/ + return TRUE; + } else return FALSE; +} + +USHORT BasicFrame::BreakHandler() +{ + bInBreak = TRUE; +// InitMenu(GetMenuBar()->GetPopupMenu( RID_APPRUN )); +// MenuBar aBar( ResId( RID_APPMENUBAR ) ); +// aBar.EnableItem( RID_APPEDIT, FALSE ); + SetAppMode( String( ResId ( IDS_APPMODE_BREAK ) ) ); + while( bInBreak ) +#if SUPD >= 357 + GetpApp()->Yield(); +#else + GetpApp()->Reschedule(); +#endif + SetAppMode( String( ResId ( IDS_APPMODE_RUN ) ) ); +// aBar.EnableItem( RID_APPEDIT, TRUE ); +// InitMenu(GetMenuBar()->GetPopupMenu( RID_APPRUN )); + return nFlags; +} + +void BasicFrame::LoadLibrary() +{ + String s; + if( QueryFileName( s, FT_BASIC_LIBRARY, FALSE ) ) + { + CloseAll(); + SvFileStream aStrm( s, STREAM_STD_READ ); + MyBasic* pNew = (MyBasic*) SbxBase::Load( aStrm ); + if( pNew && pNew->ISA( MyBasic ) ) + { + pBasic = pNew; + // Alle Inhalte - sofern vorhanden - anzeigen + SbxArray* pMods = pBasic->GetModules(); + for( USHORT i = 0; i < pMods->Count(); i++ ) + { + SbModule* pMod = (SbModule*) pMods->Get( i ); + AppWin* p = new AppBasEd( this, pMod ); + p->Show(); + } + } + else + { + delete pNew; + ErrorBox( this, ResId( IDS_READERROR ) ).Execute(); + } + } +} + +void BasicFrame::SaveLibrary() +{ + String s; + if( QueryFileName( s, FT_BASIC_LIBRARY, TRUE ) ) + { + SvFileStream aStrm( s, STREAM_STD_WRITE ); + if( !Basic().Store( aStrm ) ) + ErrorBox( this, ResId( IDS_WRITEERROR ) ).Execute(); + } +} + +String BasicFrame::GenRealString( const String &aResString ) +{ + xub_StrLen nStart,nGleich,nEnd,nStartPos = 0; + String aType,aValue,aResult(aResString); + String aString; + xub_StrLen nInsertPos; + BOOL bFound; + + while ( (nStart = aResult.Search(StartKenn,nStartPos)) != STRING_NOTFOUND && + (nGleich = aResult.SearchAscii("=",nStart+StartKenn.Len())) != STRING_NOTFOUND && + (nEnd = aResult.Search(EndKenn,nGleich+1)) != STRING_NOTFOUND) + { + aType = aResult.Copy(nStart,nGleich-nStart); + aValue = aResult.Copy(nGleich+1,nEnd-nGleich-1); + bFound = FALSE; + if ( aType.CompareTo(ResKenn) == COMPARE_EQUAL ) + { +// if ( Resource::GetResManager()->IsAvailable( ResId( aValue ) ) ) + aString = String( ResId( aValue.ToInt32() ) ); +// else + { +// DBG_ERROR( "Ressource konnte nicht geladen werden" ); +// return aResString; + } + nInsertPos = nStart; + nStartPos = nStart; + aResult.Erase( nStart, nEnd-nStart+1 ); + } + else if ( aType.Search(BaseArgKenn) == 0 ) // Fängt mit BaseArgKenn an + { + USHORT nArgNr = aType.Copy( BaseArgKenn.Len() ).ToInt32(); + DBG_ASSERT( aString.Search( CUniString("($Arg").Append( String::CreateFromInt32(nArgNr) ).AppendAscii(")") ) != STRING_NOTFOUND, "Extra Argument given in String"); + aString.SearchAndReplace( CUniString("($Arg").Append( String::CreateFromInt32(nArgNr) ).AppendAscii(")"), aValue ); + nStartPos = nStart; + aResult.Erase( nStart, nEnd-nStart+1 ); + } + else + { + DBG_ERROR( CByteString("Unknown replacement in String: ").Append( ByteString( aResult.Copy(nStart,nEnd-nStart), RTL_TEXTENCODING_UTF8 ) ).GetBuffer() ); + nStartPos += StartKenn.Len(); + } + } + DBG_ASSERT( aString.SearchAscii( "($Arg" ) == STRING_NOTFOUND, "Argument missing in String"); + aResult.Insert( aString, nInsertPos ); + return aResult; +} + + diff --git a/basic/source/app/app.hxx b/basic/source/app/app.hxx new file mode 100644 index 000000000000..c65a6f126abd --- /dev/null +++ b/basic/source/app/app.hxx @@ -0,0 +1,228 @@ +/************************************************************************* + * + * $RCSfile: app.hxx,v $ + * + * $Revision: 1.1.1.1 $ + * + * last change: $Author: hr $ $Date: 2000-09-18 16:12:08 $ + * + * The Contents of this file are made available subject to the terms of + * either of the following licenses + * + * - GNU Lesser General Public License Version 2.1 + * - Sun Industry Standards Source License Version 1.1 + * + * Sun Microsystems Inc., October, 2000 + * + * GNU Lesser General Public License Version 2.1 + * ============================================= + * Copyright 2000 by Sun Microsystems, Inc. + * 901 San Antonio Road, Palo Alto, CA 94303, USA + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License version 2.1, as published by the Free Software Foundation. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + * + * + * Sun Industry Standards Source License Version 1.1 + * ================================================= + * The contents of this file are subject to the Sun Industry Standards + * Source License Version 1.1 (the "License"); You may not use this file + * except in compliance with the License. You may obtain a copy of the + * License at http://www.openoffice.org/license.html. + * + * Software provided under this License is provided on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, + * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS, + * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING. + * See the License for the specific provisions governing your rights and + * obligations concerning the Software. + * + * The Initial Developer of the Original Code is: Sun Microsystems, Inc. + * + * Copyright: 2000 by Sun Microsystems, Inc. + * + * All Rights Reserved. + * + * Contributor(s): _______________________________________ + * + * + ************************************************************************/ + +#ifndef _BASICAPP_HXX +#define _BASICAPP_HXX + +#ifndef _SV_SVAPP_HXX +#include <vcl/svapp.hxx> +#endif +#ifndef _HELP_HXX //autogen +#include <vcl/help.hxx> +#endif +#ifndef _MENU_HXX //autogen +#include <vcl/menu.hxx> +#endif +#ifndef _WRKWIN_HXX //autogen +#include <vcl/wrkwin.hxx> +#endif +#ifndef _TIMER_HXX //autogen +#include <vcl/timer.hxx> +#endif +#ifndef _SFXBRDCST_HXX +#include <svtools/brdcst.hxx> +#endif +#ifndef _SFXLSTNER_HXX +#include <svtools/lstner.hxx> +#endif + +class BasicFrame; +#include "mybasic.hxx" + +class EditList; +class AppWin; +class AppEdit; +class AppBasEd; +class MsgEdit; +class AppError; +class StatusLine; +class BasicPrinter; +struct TTLogMsg; + +class BasicApp : public Application { + short nWait; // Wait-Zaehler +public: +// Help* pHelp; // Hilfesystem + BasicFrame* pFrame; // Frame Window +// MenuBar* pMainMenu; // Hauptmenue + Accelerator* pMainAccel; // Acceleratoren + +#ifndef VCL + void Main( int, char*[] ); +#else + void Main( ); +#endif + + void LoadIniFile(); + void SetFocus(); + void Wait( BOOL ); + DECL_LINK( LateInit, void * ); +}; + + +typedef USHORT FileType; + +#define FT_NO_FILE (FileType)0x00 // Ein Fehler ist aufgetreten ... +#define FT_BASIC_SOURCE (FileType)0x01 +#define FT_BASIC_INCLUDE (FileType)0x02 +#define FT_RESULT_FILE (FileType)0x04 +#define FT_RESULT_FILE_TXT (FileType)0x08 +#define FT_BASIC_LIBRARY (FileType)0x10 + +struct WinInfoRec; +class DisplayHidDlg; + +class FloatingExecutionStatus; + +class BasicFrame : public WorkWindow, public SfxBroadcaster, public SfxListener +{ +virtual BOOL Close(); // Schliessen + BOOL CloseAll(); // Alle Fenster schliessen + BOOL CompileAll(); // Alle Texte compilieren + AutoTimer aLineNum; // Zeigt die Zeilennummer an +virtual void Resize(); +virtual void Move(); + void LoadLibrary(); + void SaveLibrary(); + BOOL bIsAutoRun; + DisplayHidDlg* pDisplayHidDlg; + +// BreakPoint *pRunToCursorBP; + + SbxVariable *pEditVar; + + + + Timer aCheckFiles; // Prüfen der Dateien auf Änderungen + BOOL bAutoReload; + DECL_LINK( CheckAllFiles, Timer* ); + + MyBasicRef pBasic; // BASIC-Engine + + String aAppName; // Inhalt der Titelteile der App: + String aAppFile; // AppName AppFile [AppMode] + String aAppMode; + void UpdateTitle(); + DECL_LINK( CloseButtonClick, void* ); + DECL_LINK( FloatButtonClick, void* ); + DECL_LINK( HideButtonClick, void* ); + + FloatingExecutionStatus *pExecutionStatus; + +public: + BOOL IsAutoRun(); + void SetAutoRun( BOOL bAuto ); + BOOL bInBreak; // TRUE, wenn im Break-Handler + StatusLine* pStatus; // Statuszeile + EditList* pList; // List der Edit-Fenster + AppWin* pWork; // aktuelles Edit-Fenster + BasicPrinter* pPrn; // Drucker + BOOL bDisas; // TRUE: disassemble + USHORT nFlags; // Debugging-Flags + USHORT nMaximizedWindows; // Anzahl der Fenster, die maximized sind + void FocusWindow( AppWin *pWin ); + void WinMax_Restore(); + void WinShow_Hide(); + void RemoveWindow( AppWin *pWin ); + void AddWindow( AppWin *pWin ); + void WindowRenamed( AppWin *pWin ); + + BasicFrame(); + ~BasicFrame(); + MyBasic& Basic() { return *pBasic; } + void AddToLRU(String const& aFile); + void LoadLRU(); + DECL_LINK( InitMenu, Menu * ); + DECL_LINK( DeInitMenu, Menu * ); + DECL_LINK( HighlightMenu, Menu * ); + DECL_LINK( MenuCommand, Menu * ); + DECL_LINK( Accel, Accelerator * ); + DECL_LINK( ShowLineNr, AutoTimer * ); + MsgEdit* GetMsgTree( String aLogFileName ); + DECL_LINK( Log, TTLogMsg * ); + DECL_LINK( WinInfo, WinInfoRec * ); + BOOL LoadFile( String aFilename ); + long Command( short,BOOL=FALSE );// Kommando-Handler + BOOL SaveAll(); // Alle Fenster speichern + BOOL QueryFileName( String& rName, FileType nFileType, BOOL bSave );// Dateinamen ermitteln + DECL_LINK( ModuleWinExists, String* ); + AppBasEd* FindModuleWin( const String& ); + AppError* FindErrorWin( const String& ); + AppWin* FindWin( const String& ); + AppWin* FindWin( USHORT nWinId ); + USHORT BreakHandler(); // Break-Handler-Callback + + void SetEditVar( SbxVariable *pVar ){ pEditVar = pVar;} + SbxVariable* GetEditVar(){ return pEditVar;} + BOOL IsAutoReload() { return bAutoReload; } + void LoadIniFile(); + + virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint ); + + void SetAppMode( const String &aNewMode ){ aAppMode = aNewMode; UpdateTitle(); } + + String GenRealString( const String &aResString ); + +}; + +extern BasicApp aBasicApp; + +#endif diff --git a/basic/source/app/appbased.cxx b/basic/source/app/appbased.cxx new file mode 100644 index 000000000000..47b22bd795cb --- /dev/null +++ b/basic/source/app/appbased.cxx @@ -0,0 +1,338 @@ +/************************************************************************* + * + * $RCSfile: appbased.cxx,v $ + * + * $Revision: 1.1.1.1 $ + * + * last change: $Author: hr $ $Date: 2000-09-18 16:12:08 $ + * + * The Contents of this file are made available subject to the terms of + * either of the following licenses + * + * - GNU Lesser General Public License Version 2.1 + * - Sun Industry Standards Source License Version 1.1 + * + * Sun Microsystems Inc., October, 2000 + * + * GNU Lesser General Public License Version 2.1 + * ============================================= + * Copyright 2000 by Sun Microsystems, Inc. + * 901 San Antonio Road, Palo Alto, CA 94303, USA + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License version 2.1, as published by the Free Software Foundation. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + * + * + * Sun Industry Standards Source License Version 1.1 + * ================================================= + * The contents of this file are subject to the Sun Industry Standards + * Source License Version 1.1 (the "License"); You may not use this file + * except in compliance with the License. You may obtain a copy of the + * License at http://www.openoffice.org/license.html. + * + * Software provided under this License is provided on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, + * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS, + * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING. + * See the License for the specific provisions governing your rights and + * obligations concerning the Software. + * + * The Initial Developer of the Original Code is: Sun Microsystems, Inc. + * + * Copyright: 2000 by Sun Microsystems, Inc. + * + * All Rights Reserved. + * + * Contributor(s): _______________________________________ + * + * + ************************************************************************/ + +#ifndef _MSGBOX_HXX //autogen +#include <vcl/msgbox.hxx> +#endif +#ifndef _SBXCLASS_HXX //autogen +#include <svtools/sbx.hxx> +#endif +#ifndef _TEXTENG_HXX //autogen +#include <svtools/texteng.hxx> +#endif +#ifndef _TEXTVIEW_HXX //autogen +#include <svtools/textview.hxx> +#endif +#ifndef _SB_SBMETH_HXX //autogen +#include <sbmeth.hxx> +#endif + +#ifndef _CLIP_HXX //autogen +#include <vcl/clip.hxx> +#endif + +#ifndef _BASIC_TTRESHLP_HXX +#include "ttstrhlp.hxx" +#endif + +#include "basic.hrc" +#include "status.hxx" +#include "appbased.hxx" +#include "brkpnts.hxx" +#include "testtool.hxx" // defines für das Syntaxhighlighting + + +TYPEINIT1(AppBasEd,AppEdit); +AppBasEd::AppBasEd( BasicFrame* pParent, SbModule* p ) +: AppEdit( pParent ) +, pBreakpoints( NULL ) +{ + pBreakpoints = new BreakpointWindow( this ); + pBreakpoints->SetFont( ((TextEdit*)pDataEdit)->GetTextEditImp().pTextEngine->GetFont() ); + + pBreakpoints->Show(); + + + ((TextEdit*)pDataEdit)->GetTextEditImp().pTextView->SetAutoIndentMode( TRUE ); + ((TextEdit*)pDataEdit)->GetTextEditImp().pTextEngine->SetMaxTextLen( STRING_MAXLEN ); + ((TextEdit*)pDataEdit)->GetTextEditImp().pTextEngine->SetWordDelimiters( CUniString(" ,.;:(){}[]\"'+-*/<>^\\") ); + ((TextEdit*)pDataEdit)->GetTextEditImp().SyntaxHighlight( TRUE ); + ((TextEdit*)pDataEdit)->SaveAsUTF8( TRUE ); + + String aEmpty; + + pMod = p; + if( !pMod ) + { + String aModName = *pNoName; + aModName += String::CreateFromInt32( nCount ); + pMod = pFrame->Basic().MakeModule( aModName, aEmpty ); + } + bCompiled = pMod->IsCompiled(); + + pBreakpoints->SetModule( pMod ); + + // Icon definieren: +// pIcon = new Icon( ResId( RID_WORKICON ) ); +// if( pIcon ) SetIcon( *pIcon ); + + SetText( pMod->GetName() ); + pDataEdit->SetText( pMod->GetSource() ); + + // Wurde ein Modul übergeben, dann den Quelltext von Platte laden + if ( p ) + LoadSource(); + + // Erst nach Laden des Quelltextes die Events weiterleiten + ((TextEdit*)pDataEdit)->SetBreakpointWindow( pBreakpoints ); + + // Compiled-Flag pflegen: + pDataEdit->SetModifyHdl( LINK( this, AppBasEd, EditChange ) ); + +} + +AppBasEd::~AppBasEd() +{ + pBreakpoints->SaveBreakpoints( GetText() ); + delete pBreakpoints; + pMod->SetName( CUniString("--").Append( pMod->GetName() ) ); +} + +void AppBasEd::SFX_NOTIFY( SfxBroadcaster&, const TypeId&, + const SfxHint& rHint, const TypeId& ) +{ + const SfxSimpleHint* p = PTR_CAST(SfxSimpleHint,&rHint); + if( p ) + { + ULONG nHintId = p->GetId(); + if( nHintId == SBX_HINT_LANGUAGE_EXTENSION_LOADED ) + { + ((TextEdit*)pDataEdit)->GetTextEditImp().InvalidateSyntaxHighlight(); + } + } +} + +FileType AppBasEd::GetFileType() +{ + return FT_BASIC_SOURCE; +} + +IMPL_LINK_INLINE_START( AppBasEd, EditChange, void *, p ) +{ + bCompiled = FALSE; + return TRUE; +} +IMPL_LINK_INLINE_END( AppBasEd, EditChange, void *, p ) + +// Set up the menu +long AppBasEd::InitMenu( Menu* pMenu ) +{ + AppEdit::InitMenu (pMenu ); + BOOL bRunning = pFrame->Basic().IsRunning(); + pMenu->EnableItem( RID_RUNCOMPILE, !bCompiled && !bRunning ); + return TRUE; +} + +long AppBasEd::DeInitMenu( Menu* pMenu ) +{ + AppEdit::DeInitMenu (pMenu ); + pMenu->EnableItem( RID_RUNCOMPILE ); + return TRUE; +} + +// Menu Handler + +void AppBasEd::Command( const CommandEvent& rCEvt ) +{ + switch( rCEvt.GetCommand() ) { + case RID_TOGLEBRKPNT: + ((TextEdit*)pDataEdit)->GetBreakpointWindow()->ToggleBreakpoint( pDataEdit->GetLineNr() ); + break; + default: + AppEdit::Command( rCEvt ); + } +} + +// Sourcecode-Datei laden + +void AppBasEd::Resize() +{ + if( pDataEdit ) { + AppEdit::Resize(); + + // Breakpoint window einfügen + Size aEditSize = pDataEdit->GetSizePixel(); + Point aEditPos = pDataEdit->GetPosPixel(); + + pBreakpoints->SetPosPixel( aEditPos ); + + aEditPos.X() += BREAKPOINTSWIDTH; + pDataEdit->SetPosPixel( aEditPos ); + aEditSize.Width() -= BREAKPOINTSWIDTH; + pDataEdit->SetSizePixel( aEditSize ); + + aEditSize.Width() = BREAKPOINTSWIDTH; + pBreakpoints->SetSizePixel( aEditSize ); + } +} + +void AppBasEd::PostLoad() +{ + pMod->SetName( GetText() ); + pMod->Clear(); + pMod->SetSource( pDataEdit->GetText() ); + AppEdit::PostLoad(); + + pBreakpoints->LoadBreakpoints( GetText() ); +} + +USHORT AppBasEd::ImplSave() +{ + pBreakpoints->SaveBreakpoints( GetText() ); + return AppEdit::ImplSave(); +} + +void AppBasEd::Reload() +{ + TextSelection aSelMemo = pDataEdit->GetSelection(); + LoadSource(); + pDataEdit->SetSelection( aSelMemo ); +} + +// Sourcecode-Datei nach Änderung auf Platte neu laden +void AppBasEd::LoadSource() +{ + BOOL bErr; + +// if( pDataEdit->GetText().Len() != 0 ) return; + String aName = pMod->GetName(); + bErr = !pDataEdit->Load( aName ); + pBreakpoints->LoadBreakpoints( GetText() ); + if( bErr ) + ErrorBox( this, ResId( IDS_READERROR ) ).Execute(); + else + UpdateFileInfo( HAS_BEEN_LOADED ); +} + +// mit neuem Namen speichern +void AppBasEd::PostSaveAs() +{ + pMod->SetName( GetText() ); + AppEdit::PostSaveAs(); +} + +// Compilieren + +BOOL AppBasEd::Compile() +{ + if( !pDataEdit->HasText() || bCompiled ) + return TRUE; + pMod->SetSource( pDataEdit->GetText() ); + BOOL bRes = FALSE; + if( pFrame->Basic().Compile( pMod ) ) + { + bRes = TRUE; + if( pFrame->bDisas ) + Disassemble(); + TextSelection aSel( pDataEdit->GetSelection() ); + String aString; + pFrame->pStatus->Message( aString ); + if( aSel.HasRange() ) + aSel.GetStart() = aSel.GetEnd(), pDataEdit->SetSelection( aSel ); + + pBreakpoints->SetBPsInModule(); + } + else + { + BasicError* pErr = pFrame->Basic().aErrors.First(); + if( pErr ) pErr->Show(); + } + return bCompiled = bRes; +} + +void AppBasEd::Disassemble() +{ + String aText; + if( pFrame->Basic().Disassemble( pMod, aText ) ) + Clipboard::CopyString( aText ); +} + +void AppBasEd::Run() +{ + SbxArray* pAllModules = pFrame->Basic().GetModules(); + for (USHORT i = 0; i < pAllModules->Count(); i++) + { + if ( (pAllModules->Get(i)->GetName()).Copy(0,2).CompareToAscii( "--" ) == COMPARE_EQUAL ) + { + SbxVariableRef pMod = pAllModules->Get(i); // Kleiner Hack um ums basic rumzukommen. Sollte demnächst wieder dirkt gehen. + pFrame->Basic().Remove(pMod); + i--; + } + } + + SbMethod* pMain = (SbMethod*) pMod->Find( CUniString("Main"), SbxCLASS_METHOD ); + if( pMain ) + { + pMain->SetDebugFlags( pFrame->nFlags ); + // Loest Call aus! + pFrame->SetAppMode( String( ResId ( IDS_APPMODE_RUN ) ) ); + pMain->Run(); + if (aBasicApp.pFrame) + { + BasicError* pErr = aBasicApp.pFrame->Basic().aErrors.First(); + if( pErr ) pErr->Show(); + aBasicApp.pFrame->SetAppMode( String() ); + } + pMain->SetDebugFlags( 0 ); + } +} + + diff --git a/basic/source/app/appbased.hxx b/basic/source/app/appbased.hxx new file mode 100644 index 000000000000..b51974852afb --- /dev/null +++ b/basic/source/app/appbased.hxx @@ -0,0 +1,108 @@ +/************************************************************************* + * + * $RCSfile: appbased.hxx,v $ + * + * $Revision: 1.1.1.1 $ + * + * last change: $Author: hr $ $Date: 2000-09-18 16:12:08 $ + * + * The Contents of this file are made available subject to the terms of + * either of the following licenses + * + * - GNU Lesser General Public License Version 2.1 + * - Sun Industry Standards Source License Version 1.1 + * + * Sun Microsystems Inc., October, 2000 + * + * GNU Lesser General Public License Version 2.1 + * ============================================= + * Copyright 2000 by Sun Microsystems, Inc. + * 901 San Antonio Road, Palo Alto, CA 94303, USA + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License version 2.1, as published by the Free Software Foundation. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + * + * + * Sun Industry Standards Source License Version 1.1 + * ================================================= + * The contents of this file are subject to the Sun Industry Standards + * Source License Version 1.1 (the "License"); You may not use this file + * except in compliance with the License. You may obtain a copy of the + * License at http://www.openoffice.org/license.html. + * + * Software provided under this License is provided on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, + * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS, + * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING. + * See the License for the specific provisions governing your rights and + * obligations concerning the Software. + * + * The Initial Developer of the Original Code is: Sun Microsystems, Inc. + * + * Copyright: 2000 by Sun Microsystems, Inc. + * + * All Rights Reserved. + * + * Contributor(s): _______________________________________ + * + * + ************************************************************************/ + +#ifndef _APPBASED_HXX +#define _APPBASED_HXX + +#ifndef _SB_SBMOD_HXX //autogen +#include <sbmod.hxx> +#endif +#ifndef _SB_APPEDIT_HXX +#include "appedit.hxx" +#endif +#ifndef _SB_TEXTEDIT_HXX +#include "textedit.hxx" +#endif + +class BasicFrame; +class BreakpointWindow; + +class AppBasEd : public AppEdit { // Editor-Window: + SbModuleRef pMod; // compiliertes Modul + BOOL bCompiled; // TRUE, wenn compiliert +protected: + DECL_LINK( EditChange, void * ); +#define BREAKPOINTSWIDTH 15 + BreakpointWindow *pBreakpoints; + virtual USHORT ImplSave(); // Datei speichern + +public: + TYPEINFO(); + AppBasEd( BasicFrame*, SbModule* ); + ~AppBasEd(); + FileType GetFileType(); // Liefert den Filetype + SbModule* GetModule() { return pMod; } + long InitMenu( Menu* ); // Initialisierung des Menues + virtual long DeInitMenu( Menu* ); // rücksetzen, so daß wieder alle Shortcuts enabled sind + virtual void Command( const CommandEvent& rCEvt ); // Kommando-Handler + virtual void Resize(); // Berücksichtigt die Breakpointleiste + virtual void PostLoad(); // Nachbearbeiten des geladenen (Source am Modul setzen) + virtual void PostSaveAs(); // Nachbearbeiten des Modils ... + void Reload(); + void LoadSource(); // Quelltext zu Objekt laden + BOOL Compile(); // Text compilieren + void Run(); // Image laufenlassen + void Disassemble(); // Image disassemblieren + const String& GetModName() const { return pMod->GetName(); } + virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint ); +}; + +#endif diff --git a/basic/source/app/appedit.cxx b/basic/source/app/appedit.cxx new file mode 100644 index 000000000000..c21f8dd3c5a0 --- /dev/null +++ b/basic/source/app/appedit.cxx @@ -0,0 +1,286 @@ +/************************************************************************* + * + * $RCSfile: appedit.cxx,v $ + * + * $Revision: 1.1.1.1 $ + * + * last change: $Author: hr $ $Date: 2000-09-18 16:12:08 $ + * + * The Contents of this file are made available subject to the terms of + * either of the following licenses + * + * - GNU Lesser General Public License Version 2.1 + * - Sun Industry Standards Source License Version 1.1 + * + * Sun Microsystems Inc., October, 2000 + * + * GNU Lesser General Public License Version 2.1 + * ============================================= + * Copyright 2000 by Sun Microsystems, Inc. + * 901 San Antonio Road, Palo Alto, CA 94303, USA + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License version 2.1, as published by the Free Software Foundation. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + * + * + * Sun Industry Standards Source License Version 1.1 + * ================================================= + * The contents of this file are subject to the Sun Industry Standards + * Source License Version 1.1 (the "License"); You may not use this file + * except in compliance with the License. You may obtain a copy of the + * License at http://www.openoffice.org/license.html. + * + * Software provided under this License is provided on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, + * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS, + * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING. + * See the License for the specific provisions governing your rights and + * obligations concerning the Software. + * + * The Initial Developer of the Original Code is: Sun Microsystems, Inc. + * + * Copyright: 2000 by Sun Microsystems, Inc. + * + * All Rights Reserved. + * + * Contributor(s): _______________________________________ + * + * + ************************************************************************/ + +#ifndef _TEXTVIEW_HXX //autogen +#include <svtools/textview.hxx> +#endif + +#ifndef _TEXTENG_HXX //autogen +#include <svtools/texteng.hxx> +#endif + +#ifndef _UNDO_HXX +#include <svtools/undo.hxx> +#endif + +#ifndef _BASIC_TTRESHLP_HXX +#include "ttstrhlp.hxx" +#endif + +#include "basic.hrc" +#include "appedit.hxx" +#include "brkpnts.hxx" + +TYPEINIT1(AppEdit,AppWin); +AppEdit::AppEdit( BasicFrame* pParent ) +: AppWin( pParent ) +, nCurTextWidth(5) +, pVScroll( NULL ) +, pHScroll( NULL ) +{ + String aEmpty; + // evtl. den Untitled-String laden: + + pDataEdit = new TextEdit( this, WB_LEFT ); + // Icon definieren: +// pIcon = new Icon( ResId( RID_WORKICON ) ); +// if( pIcon ) SetIcon( *pIcon ); + + pDataEdit->SetText( aEmpty ); + + pDataEdit->Show(); + + pVScroll = new ScrollBar( this, WB_VSCROLL|WB_DRAG ); + pVScroll->Show(); + pVScroll->SetScrollHdl( LINK( this, AppEdit, Scroll ) ); + pHScroll = new ScrollBar( this, WB_HSCROLL|WB_DRAG ); + pHScroll->Show(); + pHScroll->SetScrollHdl( LINK( this, AppEdit, Scroll ) ); + + InitScrollBars(); +} + +AppEdit::~AppEdit() +{ + DataEdit *pHold = pDataEdit; + pDataEdit = NULL; // Erst abklemmen, dann löschen + delete pHold; + delete pHScroll; + delete pVScroll; +} + +IMPL_LINK( AppEdit, Scroll, ScrollBar*, pScroll ) +{ + if ( !pHScroll || !pVScroll ) + return 0; + + TextView *pTextView = ((TextEdit*)pDataEdit)->aEdit.pTextView; + pTextView->SetStartDocPos( Point( pHScroll->GetThumbPos(), pVScroll->GetThumbPos() ) ); + pTextView->Invalidate(); + + if ( ((TextEdit*)pDataEdit)->GetBreakpointWindow() ) + ((TextEdit*)pDataEdit)->GetBreakpointWindow()->Scroll( 0, ((TextEdit*)pDataEdit)->GetBreakpointWindow()->GetCurYOffset() - pTextView->GetStartDocPos().Y() ); + + return 0L; +} + + +void AppEdit::InitScrollBars() +{ + if ( !pHScroll || !pVScroll ) + return; + + TextView *pTextView = ((TextEdit*)pDataEdit)->aEdit.pTextView; +// Kopiert und angepasst. + SetScrollBarRanges(); + + Size aOutSz( pTextView->GetWindow()->GetOutputSizePixel() ); + pVScroll->SetVisibleSize( aOutSz.Height() ); + pVScroll->SetPageSize( aOutSz.Height() * 8 / 10 ); + pVScroll->SetLineSize( GetTextHeight() ); + pVScroll->SetThumbPos( pTextView->GetStartDocPos().Y() ); + pVScroll->Show(); + + pHScroll->SetVisibleSize( aOutSz.Width() ); + pHScroll->SetPageSize( aOutSz.Width() * 8 / 10 ); + pHScroll->SetLineSize( GetTextWidth( CUniString("x") ) ); + pHScroll->SetThumbPos( pTextView->GetStartDocPos().X() ); + pHScroll->Show(); +} + +void AppEdit::SetScrollBarRanges() +{ + // Extra-Methode, nicht InitScrollBars, da auch fuer EditEngine-Events. + + if ( !pHScroll || !pVScroll ) + return; + + pHScroll->SetRange( Range( 0, nCurTextWidth ) ); + + pVScroll->SetRange( Range( 0, ((TextEdit*)pDataEdit)->aEdit.pTextEngine->GetTextHeight() ) ); +} + + + +USHORT AppEdit::GetLineNr(){ return pDataEdit->GetLineNr(); } + +FileType AppEdit::GetFileType() +{ + return FT_BASIC_SOURCE; +} + +// Set up the menu +long AppEdit::InitMenu( Menu* pMenu ) +{ + AppWin::InitMenu (pMenu ); + + USHORT UndoCount = ((TextEdit*)pDataEdit)->aEdit.pTextEngine->GetUndoManager().GetUndoActionCount(); + USHORT RedoCount = ((TextEdit*)pDataEdit)->aEdit.pTextEngine->GetUndoManager().GetRedoActionCount(); + + pMenu->EnableItem( RID_EDITUNDO, UndoCount > 0 ); + pMenu->EnableItem( RID_EDITREDO, RedoCount > 0 ); + + return TRUE; +} + +long AppEdit::DeInitMenu( Menu* pMenu ) +{ + AppWin::DeInitMenu (pMenu ); + + pMenu->EnableItem( RID_EDITUNDO ); + pMenu->EnableItem( RID_EDITREDO ); + + return TRUE; +} + +// Sourcecode-Datei laden + +void AppEdit::Resize() +{ + if( !pDataEdit ) + return; + + Point rHStart,rVStart; + Size rHSize,rVSize; + Size rNewSize( GetOutputSizePixel() ); + + if ( pHScroll ) + { + rHSize = pHScroll->GetSizePixel(); + ULONG nHieght = rHSize.Height(); + rNewSize.Height() -= nHieght; + rHStart.Y() = rNewSize.Height(); + } + + if ( pVScroll ) + { + rVSize = pVScroll->GetSizePixel(); + ULONG nWidth = rVSize.Width(); + rNewSize.Width() -= nWidth; + rVStart.X() = rNewSize.Width(); + } + + rHSize.Width() = rNewSize.Width(); + rVSize.Height() = rNewSize.Height(); + + if ( pHScroll ) + { + pHScroll->SetPosPixel( rHStart ); + pHScroll->SetSizePixel( rHSize ); + } + + if ( pVScroll ) + { + pVScroll->SetPosPixel( rVStart ); + pVScroll->SetSizePixel( rVSize ); + } + pDataEdit->SetPosPixel( Point() ); + pDataEdit->SetSizePixel( rNewSize ); + + + TextView *pTextView = ((TextEdit*)pDataEdit)->aEdit.pTextView; +// Kopiert und adaptiert + long nVisY = pTextView->GetStartDocPos().Y(); + pTextView->ShowCursor(); + Size aOutSz( pTextView->GetWindow()->GetOutputSizePixel() ); + long nMaxVisAreaStart = pTextView->GetTextEngine()->GetTextHeight() - aOutSz.Height(); + if ( nMaxVisAreaStart < 0 ) + nMaxVisAreaStart = 0; + if ( pTextView->GetStartDocPos().Y() > nMaxVisAreaStart ) + { + Point aStartDocPos( pTextView->GetStartDocPos() ); + aStartDocPos.Y() = nMaxVisAreaStart; + pTextView->SetStartDocPos( aStartDocPos ); + pTextView->ShowCursor(); +// pModulWindow->GetBreakPointWindow().GetCurYOffset() = aStartDocPos.Y(); + } + InitScrollBars(); + if ( nVisY != pTextView->GetStartDocPos().Y() ) + pTextView->GetWindow()->Invalidate(); + +} + +void AppEdit::PostLoad() +{ +} + +// mit neuem Namen speichern + +void AppEdit::PostSaveAs() +{ +} + +void AppEdit::Highlight( USHORT nLine, USHORT nCol1, USHORT nCol2 ) +{ + ((TextEdit*)pDataEdit)->Highlight( nLine, nCol1, nCol2 ); + ToTop(); +} + diff --git a/basic/source/app/appedit.hxx b/basic/source/app/appedit.hxx new file mode 100644 index 000000000000..812c642c419a --- /dev/null +++ b/basic/source/app/appedit.hxx @@ -0,0 +1,101 @@ +/************************************************************************* + * + * $RCSfile: appedit.hxx,v $ + * + * $Revision: 1.1.1.1 $ + * + * last change: $Author: hr $ $Date: 2000-09-18 16:12:08 $ + * + * The Contents of this file are made available subject to the terms of + * either of the following licenses + * + * - GNU Lesser General Public License Version 2.1 + * - Sun Industry Standards Source License Version 1.1 + * + * Sun Microsystems Inc., October, 2000 + * + * GNU Lesser General Public License Version 2.1 + * ============================================= + * Copyright 2000 by Sun Microsystems, Inc. + * 901 San Antonio Road, Palo Alto, CA 94303, USA + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License version 2.1, as published by the Free Software Foundation. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + * + * + * Sun Industry Standards Source License Version 1.1 + * ================================================= + * The contents of this file are subject to the Sun Industry Standards + * Source License Version 1.1 (the "License"); You may not use this file + * except in compliance with the License. You may obtain a copy of the + * License at http://www.openoffice.org/license.html. + * + * Software provided under this License is provided on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, + * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS, + * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING. + * See the License for the specific provisions governing your rights and + * obligations concerning the Software. + * + * The Initial Developer of the Original Code is: Sun Microsystems, Inc. + * + * Copyright: 2000 by Sun Microsystems, Inc. + * + * All Rights Reserved. + * + * Contributor(s): _______________________________________ + * + * + ************************************************************************/ + +#ifndef _APPEDIT_HXX +#define _APPEDIT_HXX + +#ifndef _SCRBAR_HXX //autogen +#include <vcl/scrbar.hxx> +#endif + +#include "appwin.hxx" +#include "textedit.hxx" + +class BasicFrame; + +class AppEdit : public AppWin { // Editor-Window: +public: + ScrollBar *pVScroll; + ScrollBar *pHScroll; + void SetScrollBarRanges(); + ULONG nCurTextWidth; +private: + void InitScrollBars(); +protected: + DECL_LINK( Scroll, ScrollBar* ); +public: + TYPEINFO(); + AppEdit( BasicFrame* ); + ~AppEdit(); + USHORT GetLineNr(); // Aktuelle Zeilennummer + FileType GetFileType(); // Liefert den Filetype + virtual long InitMenu( Menu* ); // Initialisierung des Menues + virtual long DeInitMenu( Menu* ); // rücksetzen, so daß wieder alle Shortcuts enabled sind +// long Command( short ); // Kommando-Handler + void Resize(); + void PostLoad(); // Nachbearbeiten des geladenen (Source am Modul setzen) + void PostSaveAs(); // Nachbearbeiten des Modils ... + void Mark( short, short, short );// Text markieren + void Highlight( USHORT nLine, USHORT nCol1, USHORT nCol2 ); + virtual BOOL ReloadAllowed(){ return !StarBASIC::IsRunning(); } +}; + +#endif diff --git a/basic/source/app/apperror.cxx b/basic/source/app/apperror.cxx new file mode 100644 index 000000000000..15b6cb4e53fc --- /dev/null +++ b/basic/source/app/apperror.cxx @@ -0,0 +1,115 @@ +/************************************************************************* + * + * $RCSfile: apperror.cxx,v $ + * + * $Revision: 1.1.1.1 $ + * + * last change: $Author: hr $ $Date: 2000-09-18 16:12:08 $ + * + * The Contents of this file are made available subject to the terms of + * either of the following licenses + * + * - GNU Lesser General Public License Version 2.1 + * - Sun Industry Standards Source License Version 1.1 + * + * Sun Microsystems Inc., October, 2000 + * + * GNU Lesser General Public License Version 2.1 + * ============================================= + * Copyright 2000 by Sun Microsystems, Inc. + * 901 San Antonio Road, Palo Alto, CA 94303, USA + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License version 2.1, as published by the Free Software Foundation. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + * + * + * Sun Industry Standards Source License Version 1.1 + * ================================================= + * The contents of this file are subject to the Sun Industry Standards + * Source License Version 1.1 (the "License"); You may not use this file + * except in compliance with the License. You may obtain a copy of the + * License at http://www.openoffice.org/license.html. + * + * Software provided under this License is provided on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, + * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS, + * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING. + * See the License for the specific provisions governing your rights and + * obligations concerning the Software. + * + * The Initial Developer of the Original Code is: Sun Microsystems, Inc. + * + * Copyright: 2000 by Sun Microsystems, Inc. + * + * All Rights Reserved. + * + * Contributor(s): _______________________________________ + * + * + ************************************************************************/ + +#include "basic.hrc" +#include "apperror.hxx" + +TYPEINIT1(AppError,AppWin); +AppError::AppError( BasicFrame* pParent, String aFileName ) +: AppWin( pParent ) +{ + SetText( aFileName ); // Muß vor new MsgEdit stehen!! + pDataEdit = new MsgEdit( this, pParent, WB_HSCROLL | WB_VSCROLL | WB_LEFT ); + DirEntry aEntry( aFileName ); + UpdateFileInfo( HAS_BEEN_LOADED ); + // Icon definieren: +// pIcon = new Icon( ResId( RID_WORKICON ) ); +// if( pIcon ) SetIcon( *pIcon ); + + pDataEdit->Show(); + GrabFocus(); +} + +AppError::~AppError() +{ + DataEdit* pTemp = pDataEdit; + pDataEdit = NULL; + delete pTemp; +} + +// Set up the menu +long AppError::InitMenu( Menu* pMenu ) +{ + AppWin::InitMenu (pMenu ); + + pMenu->EnableItem( RID_EDITUNDO, FALSE ); + pMenu->EnableItem( RID_EDITREDO, FALSE ); + + return TRUE; +} + +long AppError::DeInitMenu( Menu* pMenu ) +{ + AppWin::DeInitMenu (pMenu ); + + pMenu->EnableItem( RID_EDITUNDO ); + pMenu->EnableItem( RID_EDITREDO ); + + return TRUE; +} + +USHORT AppError::GetLineNr(){ return pDataEdit->GetLineNr(); } + +FileType AppError::GetFileType() +{ + return FT_RESULT_FILE; +} + diff --git a/basic/source/app/apperror.hxx b/basic/source/app/apperror.hxx new file mode 100644 index 000000000000..a806175deaac --- /dev/null +++ b/basic/source/app/apperror.hxx @@ -0,0 +1,81 @@ +/************************************************************************* + * + * $RCSfile: apperror.hxx,v $ + * + * $Revision: 1.1.1.1 $ + * + * last change: $Author: hr $ $Date: 2000-09-18 16:12:08 $ + * + * The Contents of this file are made available subject to the terms of + * either of the following licenses + * + * - GNU Lesser General Public License Version 2.1 + * - Sun Industry Standards Source License Version 1.1 + * + * Sun Microsystems Inc., October, 2000 + * + * GNU Lesser General Public License Version 2.1 + * ============================================= + * Copyright 2000 by Sun Microsystems, Inc. + * 901 San Antonio Road, Palo Alto, CA 94303, USA + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License version 2.1, as published by the Free Software Foundation. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + * + * + * Sun Industry Standards Source License Version 1.1 + * ================================================= + * The contents of this file are subject to the Sun Industry Standards + * Source License Version 1.1 (the "License"); You may not use this file + * except in compliance with the License. You may obtain a copy of the + * License at http://www.openoffice.org/license.html. + * + * Software provided under this License is provided on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, + * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS, + * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING. + * See the License for the specific provisions governing your rights and + * obligations concerning the Software. + * + * The Initial Developer of the Original Code is: Sun Microsystems, Inc. + * + * Copyright: 2000 by Sun Microsystems, Inc. + * + * All Rights Reserved. + * + * Contributor(s): _______________________________________ + * + * + ************************************************************************/ + +#include <appwin.hxx> +#include <msgedit.hxx> + +class AppError : public AppWin +{ +protected: + DECL_LINK( EditChange, MsgEdit * ); +public: + TYPEINFO(); + AppError( BasicFrame*, String ); + ~AppError(); +// long Command( short nID ); + virtual long InitMenu( Menu* ); // Initialisierung des Menues + virtual long DeInitMenu( Menu* ); // rücksetzen, so daß wieder alle Shortcuts enabled sind + USHORT GetLineNr(); // Aktuelle Zeilennummer + FileType GetFileType(); // Liefert den Filetype + MsgEdit* GetMsgTree() { return ((MsgEdit*)pDataEdit); } + virtual BOOL ReloadAllowed(){ return !StarBASIC::IsRunning(); } +}; + diff --git a/basic/source/app/appwin.cxx b/basic/source/app/appwin.cxx new file mode 100644 index 000000000000..2cd1cc4196bf --- /dev/null +++ b/basic/source/app/appwin.cxx @@ -0,0 +1,647 @@ +/************************************************************************* + * + * $RCSfile: appwin.cxx,v $ + * + * $Revision: 1.1.1.1 $ + * + * last change: $Author: hr $ $Date: 2000-09-18 16:12:08 $ + * + * The Contents of this file are made available subject to the terms of + * either of the following licenses + * + * - GNU Lesser General Public License Version 2.1 + * - Sun Industry Standards Source License Version 1.1 + * + * Sun Microsystems Inc., October, 2000 + * + * GNU Lesser General Public License Version 2.1 + * ============================================= + * Copyright 2000 by Sun Microsystems, Inc. + * 901 San Antonio Road, Palo Alto, CA 94303, USA + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License version 2.1, as published by the Free Software Foundation. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + * + * + * Sun Industry Standards Source License Version 1.1 + * ================================================= + * The contents of this file are subject to the Sun Industry Standards + * Source License Version 1.1 (the "License"); You may not use this file + * except in compliance with the License. You may obtain a copy of the + * License at http://www.openoffice.org/license.html. + * + * Software provided under this License is provided on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, + * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS, + * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING. + * See the License for the specific provisions governing your rights and + * obligations concerning the Software. + * + * The Initial Developer of the Original Code is: Sun Microsystems, Inc. + * + * Copyright: 2000 by Sun Microsystems, Inc. + * + * All Rights Reserved. + * + * Contributor(s): _______________________________________ + * + * + ************************************************************************/ + +#ifndef _MSGBOX_HXX //autogen +#include <vcl/msgbox.hxx> +#endif +#ifndef _FSYS_HXX //autogen +#include <tools/fsys.hxx> +#endif +#ifndef _CLIP_HXX //autogen +#include <vcl/clip.hxx> +#endif + +#include "basic.hrc" +#include "app.hxx" +#include "mybasic.hxx" +#include "status.hxx" +#include "appwin.hxx" +#include "dataedit.hxx" +#include "dialogs.hxx" + +String *AppWin::pNoName = NULL; // enthaelt den "Untitled"-String +short AppWin::nNumber = 0; // fortlaufende Nummer +short AppWin::nCount = 0; // Anzahl Editfenster + +TYPEINIT0(AppWin); +AppWin::AppWin( BasicFrame* pParent ) +: DockingWindow( pParent, WB_SIZEMOVE | WB_CLOSEABLE | WB_PINABLE ) +, pDataEdit(NULL) +, nSkipReload(0) +, bHasFile( FALSE ) +, bReloadAborted( FALSE ) +, bFind( TRUE ) +, pFrame( pParent ) +{ + // evtl. den Untitled-String laden: + if( !pNoName ) + pNoName = new String( ResId( IDS_NONAME ) ); + nCount++; + + // Maximized Status von aktuellem Fenster holen + USHORT nInitialWinState; + if ( pFrame->pWork ) + { + nInitialWinState = pFrame->pWork->GetWinState(); + nInitialWinState &= TT_WIN_STATE_MAX | TT_WIN_STATE_FLOAT; + } + else + nInitialWinState = TT_WIN_STATE_MAX; + + StartListening( *pFrame ); + pFrame->AddWindow( this ); + + ShowTitleButton( TITLE_BUTTON_DOCKING ); + ShowTitleButton( TITLE_BUTTON_HIDE ); + SetActivateMode( ACTIVATE_MODE_GRABFOCUS ); + + Cascade( nCount ); + if ( TT_WIN_STATE_MAX == nInitialWinState ) + Maximize(); +} + +AppWin::~AppWin() +{ + nCount--; + pFrame->RemoveWindow( this ); + pFrame = NULL; // So daß nach BasicRun nicht mehr versucht wird Fenstertext zu setzen +} + +void AppWin::SetText( const XubString& rStr ) +{ + DockingWindow::SetText( rStr ); + pFrame->WindowRenamed( this ); +} + +void AppWin::TitleButtonClick( USHORT nButton ) +{ + if ( TITLE_BUTTON_DOCKING == nButton ) + if ( TT_WIN_STATE_MAX != nWinState ) + Maximize(); + else + Restore(); + else // if ( TITLE_BUTTON_HIDE == nButton ) + Minimize( TRUE ); +} + +void AppWin::Maximize() +{ + if ( TT_WIN_STATE_MAX != nWinState ) + { + nNormalPos = GetPosPixel(); + nNormalSize = GetSizePixel(); + + SetFloatingMode( FALSE ); + + pFrame->nMaximizedWindows++; + nWinState = TT_WIN_STATE_MAX; + } + long nTitleHeight; + { + long nDummy1, nDummy2, nDummy3; + pFrame->GetBorder( nDummy1, nTitleHeight, nDummy2, nDummy3 ); + } + + Size aSize = pFrame->GetOutputSizePixel(); + aSize.Height() -= nTitleHeight; + aSize.Height() -= 2; + aSize.Width() -= 2; + SetSizePixel( aSize ); + SetPosPixel( Point( 1,1 ) ); + pFrame->WinMax_Restore(); +} + +void AppWin::Restore() +{ + SetFloatingMode( TRUE ); + SetPosSizePixel( nNormalPos, nNormalSize ); + + if ( TT_WIN_STATE_MAX == nWinState ) + pFrame->nMaximizedWindows--; + + nWinState = TT_WIN_STATE_FLOAT; + pFrame->WinMax_Restore(); +} + +void AppWin::Minimize( BOOL bMinimize ) +{ + if ( bMinimize ) + nWinState |= TT_WIN_STATE_HIDE; + else + nWinState &= ~TT_WIN_STATE_HIDE; + pFrame->WinMax_Restore(); +} + +void AppWin::Cascade( USHORT nNr ) +{ + Restore(); + + nNr--; + nNr %= 10; + nNr++; + + long nTitleHeight; + { + long nDummy1, nDummy2, nDummy3; + pFrame->GetBorder( nDummy1, nTitleHeight, nDummy2, nDummy3 ); + } + + Size aWinSize = pFrame->GetOutputSizePixel(); + aWinSize.Width() -= aWinSize.Width() / 5; // auf 80 % reduzieren + aWinSize.Height() -= nTitleHeight * nNr; // Unten entsprechen kürzen + aWinSize.Height() -= 2; + + Point nPos( nTitleHeight * nNr, nTitleHeight * nNr ); + + SetPosSizePixel( nPos, aWinSize ); +} + +void AppWin::RequestHelp( const HelpEvent& ) +{ + Help(); +} + +void AppWin::Help() +{ + String s = pDataEdit->GetSelected(); + if( s.Len() ) { + // Leerstellen davor weg: + while( s.GetChar(0) == ' ' ) s.Erase( 0, 1 ); +// aBasicApp.pHelp->Start( s ); + } else { +// aBasicApp.pHelp->Start( HELP_INDEX ); + } +} + +void AppWin::Resize() +{ + if( pDataEdit ) + { + pDataEdit->SetPosPixel( Point( 0, 0 ) ); + pDataEdit->SetSizePixel( GetOutputSizePixel() ); + } +} + +void AppWin::GetFocus() +{ + pFrame->FocusWindow( this ); + if( pDataEdit ) // Im Destruktor wird GetFocus gerufen, daher diese Abfrage + { + pDataEdit->GrabFocus(); +// InitMenu(GetpApp()->GetAppMenu()->GetPopupMenu( RID_APPEDIT )); // So daß Delete richtig ist + } +} + +long AppWin::PreNotify( NotifyEvent& rNEvt ) +{ + + if ( rNEvt.GetType() == EVENT_MOUSEBUTTONDOWN ) + Activate(); + if ( rNEvt.GetType() == EVENT_GETFOCUS ) + if ( pFrame->pList->Last() != this ) + Activate(); + return FALSE; // Der event soll weiter verarbeitet werden +} + +void AppWin::Activate() +{ + GrabFocus(); +} + +// Set up the menu +long AppWin::InitMenu( Menu* pMenu ) +{ + Clipboard cb; + TextSelection r = pDataEdit->GetSelection(); + BOOL bMarked = r.HasRange(); + pMenu->EnableItem( RID_EDITREPEAT, (aFind.Len() != 0 ) ); + pMenu->EnableItem( RID_EDITCUT, bMarked ); + pMenu->EnableItem( RID_EDITCOPY, bMarked ); +// pMenu->EnableItem( RID_EDITPASTE, (cb.GetDataLen( FORMAT_STRING ) != 0 ) ); + pMenu->EnableItem( RID_EDITPASTE, (cb.HasFormat( FORMAT_STRING ) ) ); + pMenu->EnableItem( RID_EDITDEL, bMarked ); +// pMenu->EnableItem( RID_HELPTOPIC, bMarked ); + + BOOL bHasText = pDataEdit->HasText(); + BOOL bRunning = pFrame->Basic().IsRunning(); + BOOL bCanExecute = BOOL( (!bRunning && bHasText) || pFrame->bInBreak ); + pMenu->EnableItem( RID_RUNSTART, bCanExecute ); + pMenu->EnableItem( RID_RUNBREAK, bRunning && !pFrame->bInBreak); + pMenu->EnableItem( RID_RUNSTOP, bRunning ); + pMenu->EnableItem( RID_RUNTOCURSOR, bCanExecute ); + pMenu->EnableItem( RID_RUNSTEPINTO, bCanExecute ); + pMenu->EnableItem( RID_RUNSTEPOVER, bCanExecute ); + return TRUE; +} + +long AppWin::DeInitMenu( Menu* pMenu ) +{ + pMenu->EnableItem( RID_EDITREPEAT ); + pMenu->EnableItem( RID_EDITCUT ); + pMenu->EnableItem( RID_EDITCOPY ); + pMenu->EnableItem( RID_EDITPASTE ); + pMenu->EnableItem( RID_EDITDEL ); + + pMenu->EnableItem( RID_RUNSTART ); + pMenu->EnableItem( RID_RUNBREAK ); + pMenu->EnableItem( RID_RUNSTOP ); + pMenu->EnableItem( RID_RUNTOCURSOR ); + pMenu->EnableItem( RID_RUNSTEPINTO ); + pMenu->EnableItem( RID_RUNSTEPOVER ); + return TRUE; +} + +// Menu Handler + +void AppWin::Command( const CommandEvent& rCEvt ) +{ + TextSelection r = pDataEdit->GetSelection(); + BOOL bHasMark = r.HasRange(); + switch( rCEvt.GetCommand() ) { + case RID_FILESAVE: + QuerySave( QUERY_DISK_CHANGED | SAVE_NOT_DIRTY ); break; + case RID_FILESAVEAS: + SaveAs(); break; + case RID_EDITSEARCH: + Find(); break; + case RID_EDITREPLACE: + Replace(); break; + case RID_EDITREPEAT: + Repeat(); break; + case RID_EDITCUT: + if( bHasMark ) pDataEdit->Cut(); break; + case RID_EDITCOPY: + if( bHasMark ) pDataEdit->Copy(); break; + case RID_EDITPASTE: + if( Clipboard::HasFormat( FORMAT_STRING ) ) pDataEdit->Paste(); break; + case RID_EDITDEL: + /*if( bHasMark ) */pDataEdit->Delete(); + break; + case RID_EDITUNDO: + pDataEdit->Undo(); + break; + case RID_EDITREDO: + pDataEdit->Redo(); + break; + case COMMAND_CONTEXTMENU: + { + PopupMenu *pKontext = NULL; + pDataEdit->BuildKontextMenu( pKontext ); + if ( pKontext ) + { + USHORT nRes = pKontext->Execute( this, GetPointerPosPixel() ); + if ( nRes ) + pFrame->Command( nRes ); + delete pKontext; + } + } + } +} + + +BOOL AppWin::IsSkipReload() +{ + return nSkipReload != 0; +} + +void AppWin::SkipReload( BOOL bSkip ) +{ + DBG_ASSERT( bSkip || nSkipReload, "SkipReload aufgehoben ohne es zu aktivieren"); + if ( bSkip ) + nSkipReload++; + else + nSkipReload--; +} + +BOOL AppWin::DiskFileChanged( USHORT nWhat ) +{ + if ( !bHasFile ) + return FALSE; + + switch ( nWhat ) + { + case SINCE_LAST_LOAD: + { + if ( bReloadAborted ) + return TRUE; + else + return DiskFileChanged( SINCE_LAST_ASK_RELOAD ); + } + break; + case SINCE_LAST_ASK_RELOAD: + { + String aFilename( GetText() ); + + DirEntry aFile( aFilename ); + FileStat aStat( aFile ); + + return ( !aLastAccess.GetError() != !aStat.GetError() ) + || aLastAccess.IsYounger( aStat ) || aStat.IsYounger( aLastAccess ); + } + break; + default: + DBG_ERROR("Not Implemented in AppWin::DiskFileChanged"); + } + return TRUE; +} + +void AppWin::UpdateFileInfo( USHORT nWhat ) +{ + switch ( nWhat ) + { + case HAS_BEEN_LOADED: + { + bReloadAborted = FALSE; + UpdateFileInfo( ASKED_RELOAD ); + + } + break; + case ASKED_RELOAD: + { + String aFilename( GetText() ); + + DirEntry aFile( aFilename ); + aLastAccess.Update( aFile ); + } + break; + default: + DBG_ERROR("Not Implemented in AppWin::UpdateFileInfo"); + } +} + +void AppWin::CheckReload() +{ + if ( IsSkipReload() || !bHasFile ) + return; + + String aFilename( GetText() ); + DirEntry aFile( aFilename ); + if ( !aFilename.Len() ) + return; + + if ( !aFile.Exists() ) + return; + +// FileStat aStat( aFile ); + + if ( DiskFileChanged( SINCE_LAST_ASK_RELOAD ) && ReloadAllowed() ) + { + UpdateFileInfo( ASKED_RELOAD ); + ToTop(); + Update(); + if ( (IsModified() && QueryBox( this, ResId( IDS_ASKDIRTYRELOAD ) ).Execute() == RET_YES ) + || ( !IsModified() && ( pFrame->IsAutoReload() || QueryBox( this, ResId( IDS_ASKRELOAD ) ).Execute() == RET_YES ) ) ) + { + Reload(); + } + else + { + bReloadAborted = TRUE; + } + } +} + +void AppWin::Reload() +{ + SkipReload(); + TextSelection aSelMemo = pDataEdit->GetSelection(); + Load( GetText() ); + pDataEdit->SetSelection( aSelMemo ); + SkipReload( FALSE ); +} + +// Datei laden + +void AppWin::Load( const String& aName ) +{ + SkipReload(); + BOOL bErr; + +// if( !QuerySave() ) +// return; + bErr = !pDataEdit->Load( aName ); + if( bErr ) + ErrorBox( this, ResId( IDS_READERROR ) ).Execute(); + else + { + DirEntry aEntry( aName ); + String aModName = aEntry.GetFull(); + SetText( aModName ); + UpdateFileInfo( HAS_BEEN_LOADED ); + PostLoad(); + bHasFile = TRUE; + } + SkipReload( FALSE ); +} + +// Datei speichern + +USHORT AppWin::ImplSave() +{ + SkipReload(); + BOOL bResult = SAVE_RES_NOT_SAVED; + String s1 = *pNoName; + String s2 = GetText().Copy( 0, s1.Len() ); + if( s1 == s2 ) + bResult = SaveAs(); + else { + String aName = GetText(); + if ( pDataEdit->Save( aName ) ) + { + bResult = SAVE_RES_SAVED; + bHasFile = TRUE; + } + else + { + bResult = SAVE_RES_ERROR; + ErrorBox( this, ResId( IDS_WRITEERROR ) ).Execute(); + } + UpdateFileInfo( HAS_BEEN_LOADED ); + } + SkipReload( FALSE ); + return bResult; +} + +// mit neuem Namen speichern + +USHORT AppWin::SaveAs() +{ + SkipReload(); + String s1 = *pNoName; + String s2 = GetText().Copy( 0, s1.Len() ); + if( s1 == s2 ) s2.Erase(); + else s2 = GetText(); + if( pFrame->QueryFileName( s2, GetFileType(), TRUE ) ) + { + SetText( s2 ); + PostSaveAs(); + SkipReload( FALSE ); + return ImplSave(); + } + else + { + SkipReload( FALSE ); + return SAVE_RES_CANCEL; + } +} + +// Soll gespeichert werden? + +USHORT AppWin::QuerySave( QueryBits nBits ) +{ + BOOL bQueryDirty = ( nBits & QUERY_DIRTY ) != 0; + BOOL bQueryDiskChanged = ( nBits & QUERY_DISK_CHANGED ) != 0; + BOOL bSaveNotDirty = ( nBits & SAVE_NOT_DIRTY ) != 0; + + SkipReload(); + short nResult; + if ( IsModified() || bSaveNotDirty ) + nResult = RET_YES; + else + nResult = RET_NO; + + if( ( ( IsModified() || bSaveNotDirty ) && bQueryDirty ) || ( DiskFileChanged( SINCE_LAST_LOAD ) && bQueryDiskChanged ) ) + { + ToTop(); + if ( ( ( IsModified() && bQueryDirty ) && DiskFileChanged( SINCE_LAST_LOAD ) ) + || ( IsModified() && ( DiskFileChanged( SINCE_LAST_LOAD ) && bQueryDiskChanged ) ) ) + nResult = QueryBox( this, ResId( IDS_ASK_DIRTY_AND_DISKCHANGE_SAVE ) ).Execute(); + else if ( ( IsModified() && bQueryDirty ) ) + nResult = QueryBox( this, ResId( IDS_ASK_DIRTY_SAVE ) ).Execute(); + else + nResult = QueryBox( this, ResId( IDS_ASK_DISKCHANGE_SAVE ) ).Execute(); + } + + + USHORT nReturn; + switch( nResult ) + { + case RET_YES: + nReturn = ImplSave(); + break; + case RET_NO: + nReturn = SAVE_RES_NOT_SAVED; + break; + case RET_CANCEL: + nReturn = SAVE_RES_CANCEL; + break; + } + SkipReload( FALSE ); + return nReturn; +} + +BOOL AppWin::Close() +{ + switch ( QuerySave( QUERY_DIRTY ) ) + { + case SAVE_RES_NOT_SAVED: + case SAVE_RES_SAVED: + { + DockingWindow::Close(); + delete this; + return TRUE; + } + break; + case SAVE_RES_ERROR: // Fehlermeldung schon ausgegeben + return FALSE; + break; + case SAVE_RES_CANCEL: + return FALSE; + break; + default: + DBG_ERROR("Not Implemented in AppWin::Close") + return FALSE; + } +} + +// Text suchen + +void AppWin::Find() +{ + ResId aResId( IDD_FIND_DIALOG ); + FindDialog aDlg( this, aResId, aFind ); + if( aDlg.Execute() ) { + bFind = TRUE; + Repeat(); + } +} + +// Text ersetzen + +void AppWin::Replace() +{ + ResId aResId( IDD_REPLACE_DIALOG ); + ReplaceDialog* pDlg = new ReplaceDialog + (this, aResId, aFind, aReplace ); + if( pDlg->Execute() ) { + bFind = FALSE; + Repeat(); + } +} + +// Suchen/ersetzen wiederholen + +void AppWin::Repeat() +{ + if( (aFind.Len() != 0 ) && ( pDataEdit->Find( aFind ) || (ErrorBox(this,ResId(IDS_PATTERNNOTFOUND)).Execute() && FALSE) ) && !bFind ) + pDataEdit->ReplaceSelected( aReplace ); +} + diff --git a/basic/source/app/appwin.hxx b/basic/source/app/appwin.hxx new file mode 100644 index 000000000000..2a8c953acf32 --- /dev/null +++ b/basic/source/app/appwin.hxx @@ -0,0 +1,175 @@ +/************************************************************************* + * + * $RCSfile: appwin.hxx,v $ + * + * $Revision: 1.1.1.1 $ + * + * last change: $Author: hr $ $Date: 2000-09-18 16:12:08 $ + * + * The Contents of this file are made available subject to the terms of + * either of the following licenses + * + * - GNU Lesser General Public License Version 2.1 + * - Sun Industry Standards Source License Version 1.1 + * + * Sun Microsystems Inc., October, 2000 + * + * GNU Lesser General Public License Version 2.1 + * ============================================= + * Copyright 2000 by Sun Microsystems, Inc. + * 901 San Antonio Road, Palo Alto, CA 94303, USA + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License version 2.1, as published by the Free Software Foundation. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + * + * + * Sun Industry Standards Source License Version 1.1 + * ================================================= + * The contents of this file are subject to the Sun Industry Standards + * Source License Version 1.1 (the "License"); You may not use this file + * except in compliance with the License. You may obtain a copy of the + * License at http://www.openoffice.org/license.html. + * + * Software provided under this License is provided on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, + * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS, + * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING. + * See the License for the specific provisions governing your rights and + * obligations concerning the Software. + * + * The Initial Developer of the Original Code is: Sun Microsystems, Inc. + * + * Copyright: 2000 by Sun Microsystems, Inc. + * + * All Rights Reserved. + * + * Contributor(s): _______________________________________ + * + * + ************************************************************************/ + +#ifndef _APPWIN_HXX +#define _APPWIN_HXX + +//#include <sb.hxx> +#ifndef _SV_DOCKWIN_HXX +#include <vcl/dockwin.hxx> +#endif +#ifndef _FSYS_HXX //autogen +#include <tools/fsys.hxx> +#endif + +#include "app.hxx" +#include "dataedit.hxx" + +typedef USHORT QueryBits; +#define QUERY_NONE ( QueryBits ( 0x00 ) ) +#define QUERY_DIRTY ( QueryBits ( 0x01 ) ) +#define QUERY_DISK_CHANGED ( QueryBits ( 0x02 ) ) +#define QUERY_ALL ( QUERY_DIRTY | QUERY_DISK_CHANGED ) +#define SAVE_NOT_DIRTY ( QueryBits ( 0x04 ) ) + +#define SAVE_RES_SAVED TRUE +#define SAVE_RES_NOT_SAVED FALSE +#define SAVE_RES_ERROR 3 +#define SAVE_RES_CANCEL 4 + + +#define SINCE_LAST_LOAD 1 +#define SINCE_LAST_ASK_RELOAD 2 + +#define HAS_BEEN_LOADED 1 // includes ASKED_RELOAD +#define ASKED_RELOAD 2 + + +#define TT_WIN_STATE_MAX 0x01 +#define TT_WIN_STATE_FLOAT 0x02 +#define TT_WIN_STATE_HIDE 0x04 + +class BasicFrame; + +class AppWin : public DockingWindow, public SfxListener // Dokumentfenster +{ + friend MsgEdit; +protected: + static short nNumber; // fortlaufende Nummer + static short nCount; // Anzahl Editfenster + static String *pNoName; // "Untitled" + FileStat aLastAccess; // Wann wurde die geladene Dateiversion verändert + USHORT nSkipReload; // Manchmal darf kein Reload erfolgen + BOOL bHasFile; // Ansonsten hat reload auch keinen Sinn + BOOL bReloadAborted; // Wird gesetzt, wenn reload abgelehnt wurde, so daß beim Schließen nochmal gefragt werden kann + + short nId; // ID-Nummer( "Unbenannt n" ) + BasicFrame* pFrame; // Parent-Window +// Icon* pIcon; // Dokument-Icon + String aFind; // Suchstring + String aReplace; // Ersetze-String + BOOL bFind; // TRUE, wenn Suchen und nicht Ersetzen + void RequestHelp( const HelpEvent& );// Hilfe-Handler + void GetFocus(); // aktivieren + virtual USHORT ImplSave(); // Datei speichern + USHORT nWinState; // Maximized, Iconized oder Normal + Point nNormalPos; // Position wenn Normal + Size nNormalSize; // Größe wenn Normal + virtual long PreNotify( NotifyEvent& rNEvt ); + USHORT nWinId; + +public: + TYPEINFO(); + AppWin( BasicFrame* ); + ~AppWin(); + DataEdit* pDataEdit; // Daten-Flaeche + virtual USHORT GetLineNr()=0; // Aktuelle Zeilennummer + virtual long InitMenu( Menu* ); // Initialisierung des Menues + virtual long DeInitMenu( Menu* ); // rücksetzen, so daß wieder alle Shortcuts enabled sind + virtual void Command( const CommandEvent& rCEvt ); // Kommando-Handler + virtual void Resize(); // Aenderung Fenstergroesse + virtual void Help(); // Hilfe aktivieren + virtual void Load( const String& ); // Datei laden + virtual void PostLoad(){} // Nachbearbeiten des geladenen (Source am Modul setzen) + virtual USHORT SaveAs(); // Datei unter neuem Namen speichern + virtual void PostSaveAs(){} // Nachbearbeiten des Moduls ... + virtual void Find(); // Text suchen + virtual void Replace(); // Text ersetzen + virtual void Repeat(); // Suche wiederholen + virtual BOOL Close(); // Fenster schliessen + virtual void Activate(); // Fenster wurde aktiviert + virtual FileType GetFileType()=0; // Liefert den Filetype + virtual BOOL ReloadAllowed(){ return TRUE; } // Ermöglicht dem Dok temporär NEIN zu sagen + virtual void Reload(); // Reload nach änderung auf Platte + void CheckReload(); // Prüft und Fragt ob reloaded werden soll + BOOL DiskFileChanged( USHORT nWhat ); // Prüft ob die Datei sich verändert hat + void UpdateFileInfo( USHORT nWhat ); // Merkt sich den aktuellen Zustand der Datei + BOOL IsSkipReload(); // Soll reload getestet werden + void SkipReload( BOOL bSkip = TRUE ); + USHORT GetWinState(){ return nWinState; } + void Maximize(); + void Restore(); + void Minimize( BOOL bMinimize ); + void Cascade( USHORT nNr ); + + USHORT QuerySave( QueryBits nBits = QUERY_ALL ); // Speichern + BOOL IsModified() { return pDataEdit->IsModified(); } + BasicFrame* GetBasicFrame() { return pFrame; } + virtual void TitleButtonClick( USHORT nButton ); + virtual void SetText( const XubString& rStr ); + + USHORT GetWinId() { return nWinId; } + void SetWinId( USHORT nId ) { nWinId = nId; } +}; + +DECLARE_LIST( EditList, AppWin* ); + +#endif diff --git a/basic/source/app/basic.hrc b/basic/source/app/basic.hrc new file mode 100644 index 000000000000..2b49303e3c33 --- /dev/null +++ b/basic/source/app/basic.hrc @@ -0,0 +1,218 @@ +/************************************************************************* + * + * $RCSfile: basic.hrc,v $ + * + * $Revision: 1.1.1.1 $ + * + * last change: $Author: hr $ $Date: 2000-09-18 16:12:08 $ + * + * The Contents of this file are made available subject to the terms of + * either of the following licenses + * + * - GNU Lesser General Public License Version 2.1 + * - Sun Industry Standards Source License Version 1.1 + * + * Sun Microsystems Inc., October, 2000 + * + * GNU Lesser General Public License Version 2.1 + * ============================================= + * Copyright 2000 by Sun Microsystems, Inc. + * 901 San Antonio Road, Palo Alto, CA 94303, USA + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License version 2.1, as published by the Free Software Foundation. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + * + * + * Sun Industry Standards Source License Version 1.1 + * ================================================= + * The contents of this file are subject to the Sun Industry Standards + * Source License Version 1.1 (the "License"); You may not use this file + * except in compliance with the License. You may obtain a copy of the + * License at http://www.openoffice.org/license.html. + * + * Software provided under this License is provided on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, + * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS, + * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING. + * See the License for the specific provisions governing your rights and + * obligations concerning the Software. + * + * The Initial Developer of the Original Code is: Sun Microsystems, Inc. + * + * Copyright: 2000 by Sun Microsystems, Inc. + * + * All Rights Reserved. + * + * Contributor(s): _______________________________________ + * + * + ************************************************************************/ +#define RID_OPTLIST 101 +#define RID_OPTLINES 102 +#define RID_OPTPACKS 103 +#define RID_OPTPACKD 104 +#define RID_OPTWARN1 105 +#define RID_OPTWARN2 106 +#define RID_OPTVIRT 107 +#define RID_PARAMS 108 +#define RID_RETTYPE 109 +#define RID_RETVAL 110 +//#define RID_APPICON 500 +//#define RID_APPICON2 501 +//#define RID_WORKICON 502 +//#define RID_LOADICON 503 +//#define RID_SAVEICON 504 +#define RID_APPMENUBAR 1000 +#define RID_APPFILE 1001 +#define RID_APPEDIT 1002 +#define RID_APPRUN 1003 +#define RID_APPWINDOW 1004 +#define RID_APPHELP 1005 +#define RID_FILE 1100 +#define RID_FILENEW 1101 +#define RID_FILEOPEN 1102 +#define RID_FILECLOSE 1103 +#define RID_FILESAVE 1104 +#define RID_FILESAVEAS 1105 +#define RID_FILELOADLIB 1106 +#define RID_FILESAVELIB 1107 +#define RID_FILEPRINT 1109 +#define RID_FILESETUP 1110 +#define RID_QUIT 1111 +#define IDM_FILE_LRU1 1112 +#define IDM_FILE_LRU2 (IDM_FILE_LRU1 + 1) +#define IDM_FILE_LRU3 (IDM_FILE_LRU2 + 1) +#define IDM_FILE_LRU4 (IDM_FILE_LRU3 + 1) +#define RID_EDIT 1200 +#define RID_EDITUNDO 1201 +#define RID_EDITREDO 1202 +#define RID_EDITCUT 1203 +#define RID_EDITCOPY 1204 +#define RID_EDITPASTE 1205 +#define RID_EDITDEL 1206 +#define RID_EDITSEARCH 1207 +#define RID_EDITREPLACE 1208 +#define RID_EDITREPEAT 1209 +#define RID_RUN 1300 +#define RID_RUNCOMPILE 1301 +#define RID_RUNSTART 1302 +#define RID_RUNBREAK 1304 +#define RID_RUNSTOP 1303 +#define RID_RUNNEXTERR 1307 +#define RID_RUNPREVERR 1308 +#define RID_RUNDISAS 1310 +#define RID_RUNSTEPINTO 1311 +#define RID_RUNSTEPOVER 1312 +#define RID_RUNTOCURSOR 1313 +#define RID_TOGLEBRKPNT 1314 +#define RID_TT_EXTRAS_NAME 1400 +#define RID_TT_EXTRAS 1401 +#define RID_OPTIONS 1402 +#define RID_DECLARE_HELPER 1403 +#define RID_WINDOW 1501 +#define RID_WINTILE 1502 +#define RID_WINTILEHORZ 1503 +#define RID_WINTILEVERT 1504 +#define RID_WINCASCADE 1505 +#define RID_WIN_FILE1 1520 +#define RID_WIN_FILEn 1599 + +#define RID_HELP 1601 +//#define RID_HELPINDEX 1602 +//#define RID_HELPKEYS 1603 +//#define RID_HELPINTRO 1604 +//#define RID_HELPTOPIC 1605 +#define RID_HELPABOUT 1606 +#define RID_POPUP 1700 +#define RID_POPUPEDITVAR 1701 + + + +#define IDS_APPNAME 2000 +#define IDS_APPNAME2 2001 +#define IDS_APPMODE_BREAK 2002 +#define IDS_APPMODE_RUN 2003 +#define IDS_NONAME 2100 +#define IDS_NONAMEFILE 2101 +#define IDS_INCFILE 2102 +#define IDS_LIBFILE 2103 +#define IDS_RESFILE 2104 +#define IDS_TXTFILE 2105 +#define IDS_READERROR 2103 +#define IDS_WRITEERROR 2104 +#define IDS_COMPERROR 2105 +#define IDS_CONTINUE 2106 +#define IDS_CANCEL 2107 +#define IDS_NOPRINTERERROR 2108 +#define IDS_PATTERNNOTFOUND 2109 +#define IDS_INVALID_VALUE 2110 +#define IDS_ASK_DIRTY_SAVE 2200 +#define IDS_ASK_DISKCHANGE_SAVE 2201 +#define IDS_ASK_DIRTY_AND_DISKCHANGE_SAVE 2202 +#define IDS_ASKSAVEERROR 2203 +#define IDS_ASKRELOAD 2204 +#define IDS_ASKDIRTYRELOAD 2205 +#define IDS_LOADDLG 2300 +#define IDS_SAVEDLG 2301 +#define IDS_BASFILTER 2304 +#define IDS_LIBFILTER 2305 +#define IDS_INCFILTER 2306 +#define IDS_RESFILTER 2307 +#define IDS_TXTFILTER 2308 +#define IDS_PAGE 2401 +#define IDS_PRINTMSG 2402 +#define IDS_CANTLOAD 2501 +#define IDS_CANTSAVE 2502 +#define IDS_ERROR1 2601 +#define IDS_ERROR2 2602 +#define IDS_WARNING1 2603 +#define IDS_NO_LONGNAME 2604 +#define IDS_WARNING_PREFIX 2605 +#define IDS_OBJECT 2606 +#define IDS_EDIT_VAR 2607 + +#define IDS_NOMAINPGM 2701 +#define IDS_DISASWIN 2702 +#define IDS_RUNNING 2703 +#define IDS_NOT_YET_IMPLEMENTED 2704 +#define IDS_LOSS_OF_INFORMATION 2705 + +#define RID_ACCEL 3000 + +#define IDD_LOADSAVE_DIALOG 4001 +#define IDD_ABOUT_DIALOG 4002 +#define IDD_TT_ABOUT_DIALOG 4003 +#define IDD_FIND_DIALOG 4004 +#define IDD_REPLACE_DIALOG 4005 +#define IDD_PRINT_DIALOG 4006 +#define IDD_OPTIONS_DLG 4007 +#define RID_TP_SPECIAL 4008 +#define RID_TP_GENERIC 4009 +#define IDD_DISPLAY_HID 4010 +#define IDD_EDIT_VAR 4010 + + +//#define RID_APPFONT 5000 +//#define RID_APPEDITFONT 5001 +//#define RID_DLGBRUSH 5002 +#define RID_CALLDLG 6001 +#define MBP_PLUS 8001 +#define MBP_MINUS 8002 +#define MBP_ASSERT 8003 +#define RID_IMGLST_LAYOUT 8004 +#define MAIN_ACCEL 9001 + +#define LOAD_CONF 10001 +#define WORK 10002 +#define FILENAME 10003 diff --git a/basic/source/app/basic.src b/basic/source/app/basic.src new file mode 100644 index 000000000000..f96d5641ddd1 --- /dev/null +++ b/basic/source/app/basic.src @@ -0,0 +1,4089 @@ +/************************************************************************* + * + * $RCSfile: basic.src,v $ + * + * $Revision: 1.1.1.1 $ + * + * last change: $Author: hr $ $Date: 2000-09-18 16:12:08 $ + * + * The Contents of this file are made available subject to the terms of + * either of the following licenses + * + * - GNU Lesser General Public License Version 2.1 + * - Sun Industry Standards Source License Version 1.1 + * + * Sun Microsystems Inc., October, 2000 + * + * GNU Lesser General Public License Version 2.1 + * ============================================= + * Copyright 2000 by Sun Microsystems, Inc. + * 901 San Antonio Road, Palo Alto, CA 94303, USA + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License version 2.1, as published by the Free Software Foundation. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + * + * + * Sun Industry Standards Source License Version 1.1 + * ================================================= + * The contents of this file are subject to the Sun Industry Standards + * Source License Version 1.1 (the "License"); You may not use this file + * except in compliance with the License. You may obtain a copy of the + * License at http://www.openoffice.org/license.html. + * + * Software provided under this License is provided on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, + * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS, + * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING. + * See the License for the specific provisions governing your rights and + * obligations concerning the Software. + * + * The Initial Developer of the Original Code is: Sun Microsystems, Inc. + * + * Copyright: 2000 by Sun Microsystems, Inc. + * + * All Rights Reserved. + * + * Contributor(s): _______________________________________ + * + * + ************************************************************************/ + +#include "basic.hrc" +#include "resids.hrc" + +ModalDialog RID_CALLDLG { + Text = "Dynamischer Link Nr. "; + Text [ english_us ] = "Dynamic Link No. "; + PosSize = MAP_SYSFONT (18,18,142,142); + SVLook = TRUE; + MOVEABLE = TRUE; + CLOSEABLE = TRUE; +// WinChilds = { +// FixedText { +// Text = "Aktuelle Parameter"; +// Text [ english_us ] = "Aktuelle Parameter"; +// PosSize = MAP_SYSFONT (10,10,120,8); +// }; +// }; + FixedText RID_RETTYPE { + PosSize = MAP_SYSFONT (10,70,120,8); + }; + Edit RID_RETVAL { + PosSize = MAP_SYSFONT (10,85,120,12); + Border = TRUE; + TabStop = TRUE; + }; + ListBox RID_PARAMS { + PosSize = MAP_SYSFONT (10,25,120,40); + TabStop = TRUE; + Border = TRUE; + }; + OKButton RID_OK { + PosSize = MAP_SYSFONT (50,105,40,14); + TabStop = TRUE; + DefButton = TRUE; + }; + Text[ portuguese ] = "Ligação dinâmica nº. "; + Text[ russian ] = "Dynamic Link No. "; + Text[ greek ] = "Dynamic Link No. "; + Text[ dutch ] = "Dynamische link no. "; + Text[ french ] = "Lien dynamique No. "; + Text[ spanish ] = "Vínculo dinámico núm.: "; + Text[ italian ] = "Dynamic Link No. "; + Text[ danish ] = "Dynamic Link No. "; + Text[ swedish ] = "Dynamic link No. "; + Text[ polish ] = "Dynamic Link No. "; + Text[ portuguese_brazilian ] = "Dynamischer Link Nr. "; + Text[ japanese ] = "Dynamic Link No. "; + Text[ korean ] = "µ¿Àû ¸µÅ© ¹øÈ£ "; + Text[ chinese_simplified ] = "Dynamischer Link Nr. "; + Text[ chinese_traditional ] = "Dynamic Link No. "; + Text[ arabic ] = "Dynamic Link No. "; + Text[ turkish ] = "Dinamik baðlantý no. "; +}; + +ModalDialog IDD_ABOUT_DIALOG { + Pos = MAP_APPFONT( 58, 17 ); + Size = MAP_APPFONT( 155, 106 ); + SVLook = TRUE; +/* + WINCHILDS = { + FixedText { + Pos = MAP_APPFONT( 40, 5 ); + Size = MAP_APPFONT( 110, 10 ); + TEXT = "StarBasic"; + TEXT [ english_us ] = "StarBasic"; + CENTER = TRUE; + }; + FixedText { + Pos = MAP_APPFONT( 40, 20 ); + Size = MAP_APPFONT( 110, 20 ); + TEXT = "Ojektorientiertes BASIC-Entwicklungssystem"; + TEXT [ english_us ] = "Ojektorientiertes BASIC-Entwicklungssystem"; + CENTER = TRUE; + }; + FixedText { + Pos = MAP_APPFONT( 40, 45 ); + Size = MAP_APPFONT( 110, 10 ); + TEXT = "Version 2.0 Mai 1995"; + TEXT [ english_us ] = "Version 2.0 Mai 1995"; + CENTER = TRUE; + }; + FixedText { + Pos = MAP_APPFONT( 40, 60 ); + Size = MAP_APPFONT( 110, 10 ); + TEXT = "®1995 Sun Microsystems, Inc."; + TEXT [ english_us ] = "®1995 Sun Microsystems, Inc."; + CENTER = TRUE; + }; + }; +*/ +// FixedIcon RID_ICON { +// Pos = MAP_APPFONT( 20, 26 ); +// Size = MAP_APPFONT( 20, 20 ); +// FIXED = Icon { +// FILE = "basic.ico"; +// }; +// }; + OKButton RID_OK { + Pos = MAP_APPFONT( 55, 80 ); + Size = MAP_APPFONT( 40, 14 ); + DefButton = TRUE; + }; +}; + +ModalDialog IDD_TT_ABOUT_DIALOG { + Pos = MAP_APPFONT( 58, 17 ); + Size = MAP_APPFONT( 155, 106 ); + SVLook = TRUE; + FixedText 1 { + Pos = MAP_APPFONT( 40, 5 ); + Size = MAP_APPFONT( 110, 10 ); + TEXT = "StarTestTool"; + TEXT [ english_us ] = "StarTestTool"; + CENTER = TRUE; + TEXT[ portuguese ] = "StarTestTool"; + TEXT[ russian ] = "StarTestTool"; + TEXT[ greek ] = "StarTestTool"; + TEXT[ dutch ] = "StarTestTool"; + TEXT[ french ] = "StarTestTool"; + TEXT[ spanish ] = "StarTestTool"; + TEXT[ italian ] = "StarTestTool"; + TEXT[ danish ] = "StarTestTool"; + TEXT[ swedish ] = "StarTestTool"; + TEXT[ polish ] = "StarTestTool"; + TEXT[ portuguese_brazilian ] = "StarTestTool"; + TEXT[ japanese ] = "StarTestTool"; + TEXT[ korean ] = "StarTestTool"; + TEXT[ chinese_simplified ] = "StarTestTool"; + TEXT[ chinese_traditional ] = "StarTestTool"; + TEXT[ arabic ] = "StarTestTool"; + TEXT[ turkish ] = "StarTestTool"; + }; + FixedText 3 { + Pos = MAP_APPFONT( 40, 45 ); + Size = MAP_APPFONT( 110, 10 ); + TEXT = "Version 1.0"; + TEXT [ english_us ] = "Version 1.0"; + CENTER = TRUE; + TEXT[ portuguese ] = "Versão 1.0"; + TEXT[ russian ] = "Version 1.0"; + TEXT[ greek ] = "Version 1.0"; + TEXT[ dutch ] = "Versie 1.0"; + TEXT[ french ] = "Version 1.0"; + TEXT[ spanish ] = "Versión 1.0"; + TEXT[ italian ] = "Version 1.0"; + TEXT[ danish ] = "Version 1.0"; + TEXT[ swedish ] = "Version 1.0"; + TEXT[ polish ] = "Version 1.0"; + TEXT[ portuguese_brazilian ] = "Version 1.0"; + TEXT[ japanese ] = "Version 1.0"; + TEXT[ korean ] = "¹öÁ¯ 1.0"; + TEXT[ chinese_simplified ] = "Version 1.0"; + TEXT[ chinese_traditional ] = "Version 1.0"; + TEXT[ arabic ] = "Version 1.0"; + TEXT[ turkish ] = "Sürüm 1.0"; + }; + FixedText RID_VERSIONSTRING { + Pos = MAP_APPFONT( 40, 55 ); + Size = MAP_APPFONT( 110, 10 ); + Text = UPDVER; + CENTER = TRUE; + }; + FixedText 4 { + Pos = MAP_APPFONT( 40, 70 ); + Size = MAP_APPFONT( 110, 10 ); + TEXT = "®1995-1998 Sun Microsystems, Inc."; + TEXT [ english_us ] = "®1995-1998 Sun Microsystems, Inc."; + CENTER = TRUE; + TEXT[ portuguese ] = "®1995-1998 Sun Microsystems, Inc."; + TEXT[ russian ] = "®1995-1998 Sun Microsystems, Inc."; + TEXT[ greek ] = "®1995-1998 Sun Microsystems, Inc."; + TEXT[ dutch ] = "®1995-1998 Sun Microsystems, Inc."; + TEXT[ french ] = "®1995-1998 Sun Microsystems, Inc."; + TEXT[ spanish ] = "®1995-1998 Sun Microsystems, Inc."; + TEXT[ italian ] = "®1995-1998 Sun Microsystems, Inc."; + TEXT[ danish ] = "®1995-1998 Sun Microsystems, Inc."; + TEXT[ swedish ] = "®1995-1998 Sun Microsystems, Inc."; + TEXT[ polish ] = "®1995-1998 Sun Microsystems, Inc."; + TEXT[ portuguese_brazilian ] = "®1995-1998 Sun Microsystems, Inc."; + TEXT[ japanese ] = "®1995-1998 Sun Microsystems, Inc."; + TEXT[ korean ] = "1995-1998 Sun Microsystems, Inc."; + TEXT[ chinese_simplified ] = "?995-1998 Sun Microsystems, Inc."; + TEXT[ chinese_traditional ] = "1995-1998 Sun Microsystems, Inc."; + TEXT[ arabic ] = "®1995-1998 Sun Microsystems, Inc."; + TEXT[ turkish ] = "®1995-1998 Sun Microsystems, Inc."; + }; +// FixedIcon RID_ICON { +// Pos = MAP_APPFONT( 20, 26 ); +// Size = MAP_APPFONT( 20, 20 ); +// FIXED = Icon { +// FILE = "basic.ico"; +// }; +// }; + OKButton RID_OK { + Pos = MAP_APPFONT( 55, 85 ); + Size = MAP_APPFONT( 40, 14 ); + DefButton = TRUE; + }; +}; + +ModalDialog IDD_FIND_DIALOG { + Pos = MAP_APPFONT( 69, 30 ); + Size = MAP_APPFONT( 185, 70 ); + SVLook = TRUE; + TEXT = "StarBasic: Text suchen"; + TEXT [ english_us ] = "StarBasic: Find Text"; + MOVEABLE = TRUE; + // CLOSEABLE = TRUE; // Hat cancelbutton + + FixedText RID_FIXEDTEXT1 { + Pos = MAP_APPFONT( 5, 10 ); + Size = MAP_APPFONT( 30, 10 ); + TEXT = "~Text"; + TEXT [ english_us ] = "~Text"; + TEXT[ portuguese ] = "~Texto"; + TEXT[ russian ] = "~Text"; + TEXT[ greek ] = "~Text"; + TEXT[ dutch ] = "~Tekst"; + TEXT[ french ] = "~Texte"; + TEXT[ spanish ] = "Te~xto"; + TEXT[ italian ] = "~Text"; + TEXT[ danish ] = "~Text"; + TEXT[ swedish ] = "~Text"; + TEXT[ polish ] = "~Text"; + TEXT[ portuguese_brazilian ] = "~Text"; + TEXT[ japanese ] = "•¶Žš—ñ"; + TEXT[ korean ] = "ÅØ½ºÆ®(~T)"; + TEXT[ chinese_simplified ] = "~Text"; + TEXT[ chinese_traditional ] = "~Text"; + TEXT[ arabic ] = "~Text"; + TEXT[ turkish ] = "~Metin"; + }; + Edit RID_FIND { + BORDER = TRUE; + Pos = MAP_APPFONT( 40, 8 ); + Size = MAP_APPFONT( 135, 12 ); + TABSTOP = TRUE; + }; + OKButton RID_OK { + Pos = MAP_APPFONT( 30, 30 ); + Size = MAP_APPFONT( 50, 14 ); + TEXT = "~Suchen"; + TEXT [ english_us ] = "~Find"; + TABSTOP = TRUE; + DefButton = TRUE; + TEXT[ portuguese ] = "~Procurar"; + TEXT[ russian ] = "~Find"; + TEXT[ greek ] = "~Find"; + TEXT[ dutch ] = "~Zoeken"; + TEXT[ french ] = "~Rechercher"; + TEXT[ spanish ] = "~Buscar"; + TEXT[ italian ] = "~Find"; + TEXT[ danish ] = "~Find"; + TEXT[ swedish ] = "~Find"; + TEXT[ polish ] = "~Find"; + TEXT[ portuguese_brazilian ] = "~Suchen"; + TEXT[ japanese ] = "ŒŸõ"; + TEXT[ korean ] = "ã±â(~F)"; + TEXT[ chinese_simplified ] = "~Suchen"; + TEXT[ chinese_traditional ] = "~Find"; + TEXT[ arabic ] = "~Find"; + TEXT[ turkish ] = "~Ara"; + }; + CancelButton RID_CANCEL { + Pos = MAP_APPFONT( 105, 30 ); + Size = MAP_APPFONT( 50, 14 ); + TEXT = "~Abbruch"; + TEXT [ english_us ] = "~Cancel"; + TABSTOP = TRUE; + TEXT[ portuguese ] = "~Cancelar"; + TEXT[ russian ] = "~Cancel"; + TEXT[ greek ] = "~Cancel"; + TEXT[ dutch ] = "~Annuleren"; + TEXT[ french ] = "~Annuler"; + TEXT[ spanish ] = "~Cancelar"; + TEXT[ italian ] = "~Cancel"; + TEXT[ danish ] = "~Cancel"; + TEXT[ swedish ] = "~Cancel"; + TEXT[ polish ] = "~Cancel"; + TEXT[ portuguese_brazilian ] = "~Abbruch"; + TEXT[ japanese ] = "·¬Ý¾Ù"; + TEXT[ korean ] = "Ãë¼Ò(~C)"; + TEXT[ chinese_simplified ] = "~Abbruch"; + TEXT[ chinese_traditional ] = "~Cancel"; + TEXT[ arabic ] = "~Cancel"; + TEXT[ turkish ] = "~Ýptal"; + }; + TEXT[ portuguese ] = "StarOffice Basic: Procurar texto"; + TEXT[ russian ] = "StarBasic: Find Text"; + TEXT[ greek ] = "StarBasic: Find Text"; + TEXT[ dutch ] = "StarOffice Basic: tekst zoeken"; + TEXT[ french ] = "StarBasic: Recherche de texte"; + TEXT[ spanish ] = "StarBasic: Buscar texto"; + TEXT[ italian ] = "StarOffice Basic: Find Text"; + TEXT[ danish ] = "StarBasic: Find Text"; + TEXT[ swedish ] = "StarOffice Basic: Find Text"; + TEXT[ polish ] = "StarBasic: Find Text"; + TEXT[ portuguese_brazilian ] = "StarBasic: Text suchen"; + TEXT[ japanese ] = "StarBasic: •¶Žš—ñ‚ÌŒŸõ"; + TEXT[ korean ] = "StarBasic: ÅØ½ºÆ® ã±â"; + TEXT[ chinese_simplified ] = "StarBasic: Text suchen"; + TEXT[ chinese_traditional ] = "StarOffice Basic¡GFind Text"; + TEXT[ arabic ] = "StarBasic: Find Text"; + TEXT[ turkish ] = "StarBasic: Metni ara"; +}; + +ModalDialog IDD_REPLACE_DIALOG { + Pos = MAP_APPFONT( 69, 30 ); + Size = MAP_APPFONT( 185, 88 ); + SVLook = TRUE; + TEXT = "StarBasic: Text ersetzen"; + TEXT [ english_us ] = "StarBasic: Replace Text"; + MOVEABLE = TRUE; + // CLOSEABLE = TRUE; // Hat cancelbutton + FixedText RID_FIXEDTEXT1 { + Pos = MAP_APPFONT( 5, 10 ); + Size = MAP_APPFONT( 55, 10 ); + TEXT = "~Alter Text"; + TEXT [ english_us ] = "~Previous text"; + TEXT[ portuguese ] = "~Antigo texto"; + TEXT[ russian ] = "~Previous text"; + TEXT[ greek ] = "~Previous text"; + TEXT[ dutch ] = "~Oude tekst"; + TEXT[ french ] = "~Ancien texte"; + TEXT[ spanish ] = "~Antiguo texto"; + TEXT[ italian ] = "~Previous text"; + TEXT[ danish ] = "~Previous text"; + TEXT[ swedish ] = "~Previous text"; + TEXT[ polish ] = "~Previous text "; + TEXT[ portuguese_brazilian ] = "~Alter Text"; + TEXT[ japanese ] = "‹Œ•¶Žš—ñ"; + TEXT[ korean ] = "ÀÌÀü ÅØ½ºÆ®(~P)"; + TEXT[ chinese_simplified ] = "~Alter Text"; + TEXT[ chinese_traditional ] = "~Previous text"; + TEXT[ arabic ] = "~Previous text"; + TEXT[ turkish ] = "~Eski metin"; + }; + FixedText RID_FIXEDTEXT2 { + Pos = MAP_APPFONT( 5, 30 ); + Size = MAP_APPFONT( 55, 10 ); + TEXT = "~Neuer Text"; + TEXT [ english_us ] = "~New text"; + TEXT[ portuguese ] = "~Texto novo"; + TEXT[ russian ] = "~New text"; + TEXT[ greek ] = "~New text"; + TEXT[ dutch ] = "~Nieuwe tekst"; + TEXT[ french ] = "~Nouveau texte"; + TEXT[ spanish ] = "~Nuevo texto"; + TEXT[ italian ] = "~New text"; + TEXT[ danish ] = "~New text"; + TEXT[ swedish ] = "~New text"; + TEXT[ polish ] = "~New text "; + TEXT[ portuguese_brazilian ] = "~Neuer Text"; + TEXT[ japanese ] = "V•¶Žš—ñ"; + TEXT[ korean ] = "»õ ÅØ½ºÆ®(~N)"; + TEXT[ chinese_simplified ] = "~Neuer Text"; + TEXT[ chinese_traditional ] = "~New text"; + TEXT[ arabic ] = "~New text"; + TEXT[ turkish ] = "~Yeni metin"; + }; + Edit RID_FIND { + BORDER = TRUE; + Pos = MAP_APPFONT( 65, 8 ); + Size = MAP_APPFONT( 110, 12 ); + TABSTOP = TRUE; + }; + Edit RID_REPLACE { + BORDER = TRUE; + Pos = MAP_APPFONT( 65, 28 ); + Size = MAP_APPFONT( 110, 12 ); + TABSTOP = TRUE; + }; + OKButton RID_OK { + Pos = MAP_APPFONT( 30, 50 ); + Size = MAP_APPFONT( 50, 14 ); + TEXT = "~Ersetzen"; + TEXT [ english_us ] = "~Replace"; + TABSTOP = TRUE; + DefButton = TRUE; + TEXT[ portuguese ] = "~Substituir"; + TEXT[ russian ] = "~Replace"; + TEXT[ greek ] = "~Replace"; + TEXT[ dutch ] = "~Vervangen"; + TEXT[ french ] = "~Remplacer"; + TEXT[ spanish ] = "~Sustituir"; + TEXT[ italian ] = "~Replace"; + TEXT[ danish ] = "~Replace"; + TEXT[ swedish ] = "~Replace"; + TEXT[ polish ] = "~Replace"; + TEXT[ portuguese_brazilian ] = "~Ersetzen"; + TEXT[ japanese ] = "’uŠ·"; + TEXT[ korean ] = "¹Ù²Ù±â(~R)"; + TEXT[ chinese_simplified ] = "~Ersetzen"; + TEXT[ chinese_traditional ] = "~Replace"; + TEXT[ arabic ] = "~Replace"; + TEXT[ turkish ] = "~Deðiþtir"; + }; + CancelButton RID_CANCEL { + Pos = MAP_APPFONT( 105, 50 ); + Size = MAP_APPFONT( 50, 14 ); + TEXT = "~Abbruch"; + TEXT [ english_us ] = "~Cancel"; + TABSTOP = TRUE; + TEXT[ portuguese ] = "~Cancelar"; + TEXT[ russian ] = "~Cancel"; + TEXT[ greek ] = "~Cancel"; + TEXT[ dutch ] = "~Annuleren"; + TEXT[ french ] = "~Annuler"; + TEXT[ spanish ] = "~Cancelar"; + TEXT[ italian ] = "~Cancel"; + TEXT[ danish ] = "~Cancel"; + TEXT[ swedish ] = "~Cancel"; + TEXT[ polish ] = "~Cancel "; + TEXT[ portuguese_brazilian ] = "~Abbruch"; + TEXT[ japanese ] = "·¬Ý¾Ù"; + TEXT[ korean ] = "Ãë¼Ò(~C)"; + TEXT[ chinese_simplified ] = "~Abbruch"; + TEXT[ chinese_traditional ] = "~Cancel"; + TEXT[ arabic ] = "~Cancel"; + TEXT[ turkish ] = "Ýptal"; + }; + TEXT[ portuguese ] = "StarOffice Basic: Substituir texto"; + TEXT[ russian ] = "StarBasic: Replace Text"; + TEXT[ greek ] = "StarBasic: Replace Text"; + TEXT[ dutch ] = "StarOffice Basic: tekst vervangen"; + TEXT[ french ] = "StarBasic : Remplacement de texte"; + TEXT[ spanish ] = "StarBasic: Sustituir texto"; + TEXT[ italian ] = "StarOffice Basic: Replace Text"; + TEXT[ danish ] = "StarBasic: Replace Text"; + TEXT[ swedish ] = "StarOffice Basic: Replace Text"; + TEXT[ polish ] = "StarBasic: Replace Text "; + TEXT[ portuguese_brazilian ] = "StarBasic: Text ersetzen"; + TEXT[ japanese ] = "StarBasic: •¶Žš—ñ‚Ì’uŠ·"; + TEXT[ korean ] = "StarBasic: ÅØ½ºÆ® ¹Ù²Ù±â"; + TEXT[ chinese_simplified ] = "StarBasic: Text ersetzen"; + TEXT[ chinese_traditional ] = "StarOffcie Basic¡GReplace Text"; + TEXT[ arabic ] = "StarBasic: Replace Text"; + TEXT[ turkish ] = "StarBasic: Metni deðiþtir"; +}; + +InfoBox IDS_NOPRINTERERROR { + MESSAGE = "Drucken steht nicht zur Verfügung!"; + MESSAGE [ english_us ] = "The print function is not available!"; + MESSAGE[ portuguese ] = "A função de impressão não está disponível!"; + MESSAGE[ russian ] = "The print function is not available!"; + MESSAGE[ greek ] = "The print function is not available!"; + MESSAGE[ dutch ] = "De functie Afdrukken is niet beschikbaar!"; + MESSAGE[ french ] = "La fonction d'impresssion n'est pas disponible !"; + MESSAGE[ spanish ] = "¡No disponible la función para imprimir!"; + MESSAGE[ italian ] = "The print function is not available!"; + MESSAGE[ danish ] = "The print function is not available!"; + MESSAGE[ swedish ] = "The print function is not available!"; + MESSAGE[ polish ] = "The print function is not available! "; + MESSAGE[ portuguese_brazilian ] = "Drucken steht nicht zur Verfügung!"; + MESSAGE[ japanese ] = "ÌߨÝÀ‚ª‚ ‚è‚Ü‚¹‚ñ!"; + MESSAGE[ korean ] = "ÇÁ¸°ÅÍ ±â´ÉÀÌ ¾ÈµÊ!"; + MESSAGE[ chinese_simplified ] = "Drucken steht nicht zur Verfügung!"; + MESSAGE[ chinese_traditional ] = "The print function is not available!"; + MESSAGE[ arabic ] = "The print function is not available"; + MESSAGE[ turkish ] = "Yazdýrma iþlevi kullanýlamaz!"; +}; +ErrorBox IDS_CANTLOAD { + TITLE = "StarBasic-Fehler"; + TITLE [ english_us ] = "StarBasic Error"; + MESSAGE = "Library kann nicht geladen werden!"; + MESSAGE [ english_us ] = "Library cannot be loaded!"; + MESSAGE[ portuguese ] = "Impossível carregar a biblioteca!"; + MESSAGE[ russian ] = "Library cannot be loaded!"; + MESSAGE[ greek ] = "Library cannot be loaded!"; + MESSAGE[ dutch ] = "Library kan niet worden geladen!"; + MESSAGE[ french ] = "Impossible de charger la bibliothèque !"; + MESSAGE[ spanish ] = "¡No se puede cargar la biblioteca!"; + MESSAGE[ italian ] = "Library cannot be loaded!"; + MESSAGE[ danish ] = "Library cannot be loaded!"; + MESSAGE[ swedish ] = "Library cannot be loaded!"; + MESSAGE[ polish ] = "Library cannot be loaded! "; + MESSAGE[ portuguese_brazilian ] = "Library kann nicht geladen werden!"; + MESSAGE[ japanese ] = "ײÌÞר‚͓ǂݞ‚݂ł«‚Ü‚¹‚ñ!"; + MESSAGE[ korean ] = "¶óÀ̺귯¸®°¡ ·ÎµåµÉ ¼ö ¾ø½À´Ï´Ù!"; + MESSAGE[ chinese_simplified ] = "Library kann nicht geladen werden!"; + MESSAGE[ chinese_traditional ] = "Library cannot be loaded!"; + MESSAGE[ arabic ] = "Library cannot be loaded!"; + Title[ portuguese ] = "StarBasic-Fehler"; + Title[ russian ] = "StarBasic-Fehler"; + Title[ greek ] = "StarBasic Error"; + Title[ dutch ] = "StarBasic-Fehler"; + Title[ french ] = "StarBasic-Fehler"; + Title[ spanish ] = "Error de StarBasic"; + Title[ italian ] = "StarBasic-Fehler"; + Title[ danish ] = "StarBasic Error"; + Title[ swedish ] = "StarBasic Error"; + Title[ polish ] = "B³¹d StarBasic"; + Title[ portuguese_brazilian ] = "StarBasic-Fehler"; + Title[ japanese ] = "StarBasic-Fehler"; + Title[ korean ] = "StarBasic-Fehler"; + Title[ chinese_simplified ] = "StarBasic-Fehler"; + Title[ chinese_traditional ] = "StarBasic-Fehler"; + Title[ arabic ] = "StarBasic-Fehler"; + MESSAGE[ turkish ] = "Kitaplýk yüklenemiyor!"; +}; +ErrorBox IDS_CANTSAVE { + TITLE = "StarBasic-Fehler"; + TITLE [ english_us ] = "StarBasic Error"; + MESSAGE = "Library kann nicht gespeichert werden!"; + MESSAGE [ english_us ] = "Library cannot be saved!"; + MESSAGE[ portuguese ] = "Impossível guardar a biblioteca!"; + MESSAGE[ russian ] = "Library cannot be saved!"; + MESSAGE[ greek ] = "Library cannot be saved!"; + MESSAGE[ dutch ] = "Library kan niet worden opgeslagen!"; + MESSAGE[ french ] = "Impossible d'enregistrer la bibliothèque !"; + MESSAGE[ spanish ] = "¡No se puede guardar la biblioteca!"; + MESSAGE[ italian ] = "Library cannot be saved!"; + MESSAGE[ danish ] = "Library cannot be saved!"; + MESSAGE[ swedish ] = "Library cannot be saved!"; + MESSAGE[ polish ] = "Library cannot be saved! "; + MESSAGE[ portuguese_brazilian ] = "Library kann nicht gespeichert werden!"; + MESSAGE[ japanese ] = "ײÌÞר‚͕ۑ¶‚Å‚«‚Ü‚¹‚ñ!"; + MESSAGE[ korean ] = "¶óÀ̺귯¸®°¡ ÀúÀåµÇÁö¾Ê¾ÒÀ½!"; + MESSAGE[ chinese_simplified ] = "Library kann nicht gespeichert werden!"; + MESSAGE[ chinese_traditional ] = "Library cannot be saved!"; + MESSAGE[ arabic ] = "Library cannot be saved!"; + Title[ portuguese ] = "StarBasic-Fehler"; + Title[ russian ] = "StarBasic-Fehler"; + Title[ greek ] = "StarBasic Error"; + Title[ dutch ] = "StarBasic-Fehler"; + Title[ french ] = "StarBasic-Fehler"; + Title[ spanish ] = "Error de StarBasic"; + Title[ italian ] = "StarBasic-Fehler"; + Title[ danish ] = "StarBasic Error"; + Title[ swedish ] = "StarBasic Error"; + Title[ polish ] = "B³¹d StarBasic"; + Title[ portuguese_brazilian ] = "StarBasic-Fehler"; + Title[ japanese ] = "StarBasic-Fehler"; + Title[ korean ] = "StarBasic-Fehler"; + Title[ chinese_simplified ] = "StarBasic-Fehler"; + Title[ chinese_traditional ] = "StarBasic-Fehler"; + Title[ arabic ] = "StarBasic-Fehler"; + MESSAGE[ turkish ] = "Kitaplýk kaydedilemiyor!"; +}; +ErrorBox IDS_NOMAINPGM { + TITLE = "StarBasic-Fehler"; + TITLE [ english_us ] = "StarBasic Error"; + MESSAGE = "Dieses Fenster enthält kein Hauptprogramm!"; + MESSAGE [ english_us ] = "This window does not contain a main program!"; + MESSAGE[ portuguese ] = "Esta janela não contém nenhum programa principal!"; + MESSAGE[ russian ] = "This window does not contain a main program!"; + MESSAGE[ greek ] = "This window does not contain a main program!"; + MESSAGE[ dutch ] = "Dit venster bevat geen hoofdprogramma!"; + MESSAGE[ french ] = "Cette fenêtre ne contient aucun programme principal !"; + MESSAGE[ spanish ] = "¡Esta ventana no contiene ningún programa principal!"; + MESSAGE[ italian ] = "The window does not contain a main program!"; + MESSAGE[ danish ] = "This window does not contain a main program!"; + MESSAGE[ swedish ] = "This window does not contain a main program!"; + MESSAGE[ polish ] = "This window does not contain a main program! "; + MESSAGE[ portuguese_brazilian ] = "Dieses Fenster enthält kein Hauptprogramm!"; + MESSAGE[ japanese ] = "‚±‚̳¨ÝÄÞ³‚É‚ÍÒ²ÝÌßÛ¸Þ×т͂ ‚è‚Ü‚¹‚ñ!"; + MESSAGE[ korean ] = "ÀÌ À©µµ¿ì´Â ¸ÞÀÎÇÁ·Î±×·¥À» Æ÷ÇÔÇϰí ÀÖÁö ¾Ê½À´Ï´Ù !"; + MESSAGE[ chinese_simplified ] = "Dieses Fenster enthält kein Hauptprogramm!"; + MESSAGE[ chinese_traditional ] = "This window does not contain a main program!"; + MESSAGE[ arabic ] = "This window does not contain a main program!"; + Title[ portuguese ] = "StarBasic-Fehler"; + Title[ russian ] = "StarBasic-Fehler"; + Title[ greek ] = "StarBasic Error"; + Title[ dutch ] = "StarBasic-Fehler"; + Title[ french ] = "StarBasic-Fehler"; + Title[ spanish ] = "Error de StarBasic"; + Title[ italian ] = "StarBasic-Fehler"; + Title[ danish ] = "StarBasic Error"; + Title[ swedish ] = "StarBasic Error"; + Title[ polish ] = "B³¹d StarBasic"; + Title[ portuguese_brazilian ] = "StarBasic-Fehler"; + Title[ japanese ] = "StarBasic-Fehler"; + Title[ korean ] = "StarBasic-Fehler"; + Title[ chinese_simplified ] = "StarBasic-Fehler"; + Title[ chinese_traditional ] = "StarBasic-Fehler"; + Title[ arabic ] = "StarBasic-Fehler"; + MESSAGE[ turkish ] = "Bu pencere ana program içermiyor!"; +}; +ErrorBox IDS_READERROR { + TITLE = "StarBasic-Fehler"; + TITLE [ english_us ] = "StarBasic Error"; + MESSAGE = "Datei kann nicht eingelesen werden!"; + MESSAGE [ english_us ] = "File cannot be read!"; + MESSAGE[ portuguese ] = "Impossível ler ficheiro!"; + MESSAGE[ russian ] = "File cannot be read!"; + MESSAGE[ greek ] = "File cannot be read!"; + MESSAGE[ dutch ] = "Bestand kan niet worden gelezen!"; + MESSAGE[ french ] = "Impossible de lire le fichier !"; + MESSAGE[ spanish ] = "¡No se puede leer el archivo!"; + MESSAGE[ italian ] = "File cannot be read!"; + MESSAGE[ danish ] = "File cannot be read!"; + MESSAGE[ swedish ] = "File cannot be read!"; + MESSAGE[ polish ] = "File cannot be read! "; + MESSAGE[ portuguese_brazilian ] = "Datei kann nicht eingelesen werden!"; + MESSAGE[ japanese ] = "̧²Ù‚͓ǂݎæ‚ê‚Ü‚¹‚ñ!"; + MESSAGE[ korean ] = "ÆÄÀÏÀ» ÀÐÀ»¼ö ¾ø½À´Ï´Ù!"; + MESSAGE[ chinese_simplified ] = "Datei kann nicht eingelesen werden!"; + MESSAGE[ chinese_traditional ] = "File cannot be read!"; + MESSAGE[ arabic ] = "File cannot be read!"; + Title[ portuguese ] = "StarBasic-Fehler"; + Title[ russian ] = "StarBasic-Fehler"; + Title[ greek ] = "StarBasic Error"; + Title[ dutch ] = "StarBasic-Fehler"; + Title[ french ] = "StarBasic-Fehler"; + Title[ spanish ] = "Error de StarBasic"; + Title[ italian ] = "StarBasic-Fehler"; + Title[ danish ] = "StarBasic Error"; + Title[ swedish ] = "StarBasic Error"; + Title[ polish ] = "B³¹d StarBasic"; + Title[ portuguese_brazilian ] = "StarBasic-Fehler"; + Title[ japanese ] = "StarBasic-Fehler"; + Title[ korean ] = "StarBasic-Fehler"; + Title[ chinese_simplified ] = "StarBasic-Fehler"; + Title[ chinese_traditional ] = "StarBasic-Fehler"; + Title[ arabic ] = "StarBasic-Fehler"; + MESSAGE[ turkish ] = "Dosya okunamýyor!"; +}; +ErrorBox IDS_WRITEERROR { + TITLE = "StarBasic-Fehler"; + TITLE [ english_us ] = "StarBasic Error"; + MESSAGE = "Datei kann nicht abgespeichert werden!"; + MESSAGE [ english_us ] = "File cannot be saved!"; + MESSAGE[ portuguese ] = "Impossível guardar ficheiro!"; + MESSAGE[ russian ] = "File cannot be saved!"; + MESSAGE[ greek ] = "File cannot be saved!"; + MESSAGE[ dutch ] = "Bestand kan niet worden opgeslagen!"; + MESSAGE[ french ] = "Impossible d'enregister le fichier !"; + MESSAGE[ spanish ] = "¡No se puede guardar el archivo!"; + MESSAGE[ italian ] = "File cannt be saved!"; + MESSAGE[ danish ] = "File cannot be saved!"; + MESSAGE[ swedish ] = "File cannot be saved!"; + MESSAGE[ polish ] = "File cannot be saved! "; + MESSAGE[ portuguese_brazilian ] = "Datei kann nicht abgespeichert werden!"; + MESSAGE[ japanese ] = "̧²Ù‚͕ۑ¶‚Å‚«‚Ü‚¹‚ñ!"; + MESSAGE[ korean ] = "ÆÄÀÏÀÌ ÀúÀåµÇÁö ¾Ê¾Ò½À´Ï´Ù !"; + MESSAGE[ chinese_simplified ] = "Datei kann nicht abgespeichert werden!"; + MESSAGE[ chinese_traditional ] = "File cannot be saved!"; + MESSAGE[ arabic ] = "File cannot be saved!"; + Title[ portuguese ] = "StarBasic-Fehler"; + Title[ russian ] = "StarBasic-Fehler"; + Title[ greek ] = "StarBasic Error"; + Title[ dutch ] = "StarBasic-Fehler"; + Title[ french ] = "StarBasic-Fehler"; + Title[ spanish ] = "Error de StarBasic"; + Title[ italian ] = "StarBasic-Fehler"; + Title[ danish ] = "StarBasic Error"; + Title[ swedish ] = "StarBasic Error"; + Title[ polish ] = "B³¹d StarBasic"; + Title[ portuguese_brazilian ] = "StarBasic-Fehler"; + Title[ japanese ] = "StarBasic-Fehler"; + Title[ korean ] = "StarBasic-Fehler"; + Title[ chinese_simplified ] = "StarBasic-Fehler"; + Title[ chinese_traditional ] = "StarBasic-Fehler"; + Title[ arabic ] = "StarBasic-Fehler"; + MESSAGE[ turkish ] = "Dosya kaydedilemiyor!"; +}; +ErrorBox IDS_PATTERNNOTFOUND { + TITLE = "StarBasic-Fehler"; + TITLE [ english_us ] = "StarBasic Error"; + MESSAGE = "Suchbegriff nicht gefunden!"; + MESSAGE [ english_us ] = "Search key not found!"; + MESSAGE[ portuguese ] = "Impossível encontrar expressão procurada!"; + MESSAGE[ russian ] = "Search key not found!"; + MESSAGE[ greek ] = "Search key not found!"; + MESSAGE[ dutch ] = "Zoekbegrip niet gevonden!"; + MESSAGE[ french ] = "Élément recherché introuvable !"; + MESSAGE[ spanish ] = "¡No se encontró el término buscado!"; + MESSAGE[ italian ] = "Search key not found!"; + MESSAGE[ danish ] = "Search key not found!"; + MESSAGE[ swedish ] = "Search term not found!"; + MESSAGE[ polish ] = "Search key not found!"; + MESSAGE[ portuguese_brazilian ] = "Suchbegriff nicht gefunden!"; + MESSAGE[ japanese ] = "ŒŸõ·°‚ÍŒ©‚‚©‚è‚Ü‚¹‚ñ!"; + MESSAGE[ korean ] = "°Ë»ö¾î¸¦ ãÁö ¸øÇßÀ½!"; + MESSAGE[ chinese_simplified ] = "Suchbegriff nicht gefunden!"; + MESSAGE[ chinese_traditional ] = "Search key not found!"; + MESSAGE[ arabic ] = "Search term not found!"; + Title[ portuguese ] = "StarBasic-Fehler"; + Title[ russian ] = "StarBasic-Fehler"; + Title[ greek ] = "StarBasic Error"; + Title[ dutch ] = "StarBasic-Fehler"; + Title[ french ] = "StarBasic-Fehler"; + Title[ spanish ] = "Error de StarBasic"; + Title[ italian ] = "StarBasic-Fehler"; + Title[ danish ] = "StarBasic Error"; + Title[ swedish ] = "StarBasic Error"; + Title[ polish ] = "B³¹d StarBasic"; + Title[ portuguese_brazilian ] = "StarBasic-Fehler"; + Title[ japanese ] = "StarBasic-Fehler"; + Title[ korean ] = "StarBasic-Fehler"; + Title[ chinese_simplified ] = "StarBasic-Fehler"; + Title[ chinese_traditional ] = "StarBasic-Fehler"; + Title[ arabic ] = "StarBasic-Fehler"; + MESSAGE[ turkish ] = "Arama terimi bulunamadý!"; +}; +ErrorBox IDS_INVALID_VALUE { + TITLE = "StarBasic-Fehler"; + TITLE [ english_us ] = "StarBasic Error"; + MESSAGE = "Der Wert ist ungültig und kann daher nicht gesetzt werden."; + MESSAGE [ english_us ] = "The value is invalid and cannot be set."; + MESSAGE[ portuguese ] = "O valor não é válido e não pode ser aplicado."; + MESSAGE[ russian ] = "Ýòî çíà÷åíèå íå äåéñòâèòåëüíî è ïîýòîìó íå ìîæåò áûòü èñïîëüçîâàíî."; + MESSAGE[ greek ] = "The value is invalid and cannot be set."; + MESSAGE[ dutch ] = "De waarde is ongeldig en kan daarom niet worden gebruikt."; + MESSAGE[ french ] = "Valeur incorrecte, impossible de la placer."; + MESSAGE[ spanish ] = "Valor incorrecto; no se puede aplicar."; + MESSAGE[ italian ] = "The value is invalid and cannot be set."; + MESSAGE[ danish ] = "The value is invalid and cannot be set."; + MESSAGE[ swedish ] = "The value is invalid and cannot be set."; + MESSAGE[ polish ] = "Wartoœæ jest nieprawdi³owa i nie mo¿na jeje dlatego osadziæ."; + MESSAGE[ portuguese_brazilian ] = "Der Wert ist ungültig und kann daher nicht gesetzt werden."; + MESSAGE[ japanese ] = "’l‚ª–³Œø‚Ȃ̂ÅÝ’è‚Å‚«‚Ü‚¹‚ñB"; + MESSAGE[ korean ] = "À¯È¿ÇÏÁö ¾ÊÀº °ªÀ̹ǷΠ¼³Á¤µÉ ¼ö ¾ø½À´Ï´Ù ."; + MESSAGE[ chinese_simplified ] = "The value is invalid and cannot be set."; + MESSAGE[ chinese_traditional ] = "The value is invalid and cannot be set."; + MESSAGE[ arabic ] = "The value is invalid and cannot be set."; + Title[ portuguese ] = "StarBasic Error"; + Title[ russian ] = "StarBasic Error"; + Title[ greek ] = "StarBasic Error"; + Title[ dutch ] = "StarBasic Error"; + Title[ french ] = "StarBasic Error"; + Title[ spanish ] = "StarBasic Error"; + Title[ italian ] = "StarBasic Error"; + Title[ danish ] = "StarBasic Error"; + Title[ swedish ] = "StarBasic Error"; + Title[ polish ] = "B³¹d StarBasic"; + Title[ portuguese_brazilian ] = "StarBasic Error"; + Title[ japanese ] = "StarBasic Error"; + Title[ korean ] = "StarBasic Error"; + Title[ chinese_simplified ] = "StarBasic Error"; + Title[ chinese_traditional ] = "StarBasic Error"; + Title[ arabic ] = "StarBasic Error"; + MESSAGE[ turkish ] = "Bu deðer geçersiz olduðu için belirlenemez."; +}; + +QueryBox IDS_ASKSAVEERROR { + TITLE = "StarBasic"; + TITLE [ english_us ] = "StarBasic"; + MESSAGE = "Fehler beim Speichern der Dateien! Trotzdem ausführen?"; + MESSAGE [ english_us ] = "Error saving files! Run anyway?"; + BUTTONS = WB_YES_NO; + MESSAGE[ portuguese ] = "Ocorreu um erro ao guardar os ficheiros!Mesmo assim, executar?"; + MESSAGE[ russian ] = "Error saving files! Run anyway?"; + MESSAGE[ greek ] = "Error saving files! Run anyway?"; + MESSAGE[ dutch ] = "Fout bij opslaan van bestanden! Toch uitvoeren?"; + MESSAGE[ french ] = "Une erreur s'est produite lors de l'enregistrement des fichiers ! Souhaitez-vous quand même poursuivre l'exécution ?"; + MESSAGE[ spanish ] = "¡Error al guardar los archivos! ¿Ejecutar de todas formas?"; + MESSAGE[ italian ] = "Error saving files! Run anyway?"; + MESSAGE[ danish ] = "Error saving files! Run anyway?"; + MESSAGE[ swedish ] = "Error saving files! Run anyway?"; + MESSAGE[ polish ] = "Error saving files! Run anyway? "; + MESSAGE[ portuguese_brazilian ] = "Fehler beim Speichern der Dateien! Trotzdem ausführen?"; + MESSAGE[ japanese ] = "̧²Ù‚̕ۑ¶‚ÌÛ‚Ì´×°! ‚»‚ê‚Å‚àŽÀs‚µ‚Ü‚·‚©?"; + MESSAGE[ korean ] = "ÆÄÀÏ ÀúÀå ½Ã ¿À·ù°¡ ¹ß»ýÇß½À´Ï´Ù! °è¼Ó ½ÇÇàÇϽðڽÀ´Ï±î?"; + MESSAGE[ chinese_simplified ] = "Fehler beim Speichern der Dateien! Trotzdem ausführen?"; + MESSAGE[ chinese_traditional ] = "Error saving files! Run anyway?"; + MESSAGE[ arabic ] = "Error saving files! Run anyway?"; + Title[ portuguese ] = "StarBasic"; + Title[ russian ] = "StarBasic"; + Title[ greek ] = "StarBasic"; + Title[ dutch ] = "StarBasic"; + Title[ french ] = "StarBasic"; + Title[ spanish ] = "StarBasic"; + Title[ italian ] = "StarBasic"; + Title[ danish ] = "StarBasic"; + Title[ swedish ] = "StarBasic"; + Title[ polish ] = "StarBasic"; + Title[ portuguese_brazilian ] = "StarBasic"; + Title[ japanese ] = "StarBasic"; + Title[ korean ] = "StarBasic"; + Title[ chinese_simplified ] = "StarBasic"; + Title[ chinese_traditional ] = "StarBasic"; + Title[ arabic ] = "StarBasic"; + MESSAGE[ turkish ] = "Dosya kaydý sýrasýnda bir hata ortaya çýktý! Ýþlem yine de yürütülsün mü?"; +}; +QueryBox IDS_ASK_DIRTY_SAVE { + TITLE = "StarBasic"; + TITLE [ english_us ] = "StarBasic"; + MESSAGE = "Datei ist geändert worden. Abspeichern?"; + MESSAGE [ english_us ] = "File has been changed. Save?"; + BUTTONS = WB_YES_NO_CANCEL; + MESSAGE[ portuguese ] = "O ficheiro foi modificado. Guardar?"; + MESSAGE[ russian ] = "File has been changed. Save?"; + MESSAGE[ greek ] = "File has been changed. Save?"; + MESSAGE[ dutch ] = "Bestand is gewijzigd. Opslaan?"; + MESSAGE[ french ] = "Le fichier a été modifié. Souhaitez-vous l'enregistrer ?"; + MESSAGE[ spanish ] = "El archivo ha sido modificado. ¿Guardar?"; + MESSAGE[ italian ] = "File has been changed. Save?"; + MESSAGE[ danish ] = "File has been changed. Save?"; + MESSAGE[ swedish ] = "File has been changed. Save?"; + MESSAGE[ polish ] = "File has been changed. Save? "; + MESSAGE[ portuguese_brazilian ] = "Datei ist geändert worden. Abspeichern?"; + MESSAGE[ japanese ] = "̧²Ù‚ª•ÏX‚µ‚Ä‚¢‚Ü‚·Bã‘‚«‚µ‚Ü‚·‚©?"; + MESSAGE[ korean ] = "ÆÄÀÏÀÌ ¹Ù²î¾ú½À´Ï´Ù. ÀúÀåÇϽðڽÀ´Ï±î?"; + MESSAGE[ chinese_simplified ] = "Datei ist geändert worden. Abspeichern?"; + MESSAGE[ chinese_traditional ] = "File has been changed. Save?"; + MESSAGE[ arabic ] = "File has been changed. Save?"; + Title[ portuguese ] = "StarBasic"; + Title[ russian ] = "StarBasic"; + Title[ greek ] = "StarBasic"; + Title[ dutch ] = "StarBasic"; + Title[ french ] = "StarBasic"; + Title[ spanish ] = "StarBasic"; + Title[ italian ] = "StarBasic"; + Title[ danish ] = "StarBasic"; + Title[ swedish ] = "StarBasic"; + Title[ polish ] = "StarBasic"; + Title[ portuguese_brazilian ] = "StarBasic"; + Title[ japanese ] = "StarBasic"; + Title[ korean ] = "StarBasic"; + Title[ chinese_simplified ] = "StarBasic"; + Title[ chinese_traditional ] = "StarBasic"; + Title[ arabic ] = "StarBasic"; + MESSAGE[ turkish ] = "Dosya deðiþtirildi. Deðiþiklikler kaydedilsin mi?"; +}; +QueryBox IDS_ASK_DIRTY_AND_DISKCHANGE_SAVE { + TITLE = "StarBasic"; + TITLE [ english_us ] = "StarBasic"; + MESSAGE = "Datei ist auf dem Datenträger und\nim Editor geändert worden. Abspeichern?"; + MESSAGE [ english_us ] = "File has been changed on data medium\nand in the Editor. Save?"; + BUTTONS = WB_YES_NO_CANCEL; + MESSAGE[ portuguese ] = "O ficheiro foi modificado no suporte\nde dados e no Editor. Guardar?"; + MESSAGE[ russian ] = "File has been changed on data medium\nand in the Editor. Save?"; + MESSAGE[ greek ] = "File has been changed on data medium\nand in the Editor. Save?"; + MESSAGE[ dutch ] = "Bestand op datamedium en \nin editor werd gewijzigd. Opslaan?"; + MESSAGE[ french ] = "Le fichier a été modifié sur le média\net dans l'éditeur. Enregistrer ?"; + MESSAGE[ spanish ] = "El archivo se ha modificado en el disco\ny en el editor. ¿Desea guardarlo?"; + MESSAGE[ italian ] = "File has been changed on data medium\nand in the Editor. Save?"; + MESSAGE[ danish ] = "File has been changed on data medium\nand in the Editor. Save?"; + MESSAGE[ swedish ] = "File has been changed on data medium\nand in the Editor. Save?"; + MESSAGE[ polish ] = "File has been changed on data medium\nand in the Editor. Save? "; + MESSAGE[ portuguese_brazilian ] = "Datei ist auf dem Datenträger und\nim Editor geändert worden. Abspeichern?"; + MESSAGE[ japanese ] = "̧²Ù‚ÍÃÞ¨½¸ã‚Å\n•ÒW’†‚É•ÏX‚³‚ê‚Ä‚¢‚Ü‚·Bã‘‚«‚µ‚Ü‚·‚©?"; + MESSAGE[ korean ] = "µ¥ÀÌÅÍ ¸Åü¿Í ÆíÁý±â ³»ÀÇ ÆÄÀÏÀ̺¯°æµÇ¾ú½À´Ï´Ù. \nÀúÀåÇϽðڽÀ´Ï±î ?"; + MESSAGE[ chinese_simplified ] = "Datei ist auf dem Datenträger und\nim Editor geändert worden. Abspeichern?"; + MESSAGE[ chinese_traditional ] = "File has been changed on data medium\nand in the Editor. Save?"; + MESSAGE[ arabic ] = "File has been changed on data medium\nand in the Editor. Save?"; + Title[ portuguese ] = "StarBasic"; + Title[ russian ] = "StarBasic"; + Title[ greek ] = "StarBasic"; + Title[ dutch ] = "StarBasic"; + Title[ french ] = "StarBasic"; + Title[ spanish ] = "StarBasic"; + Title[ italian ] = "StarBasic"; + Title[ danish ] = "StarBasic"; + Title[ swedish ] = "StarBasic"; + Title[ polish ] = "StarBasic"; + Title[ portuguese_brazilian ] = "StarBasic"; + Title[ japanese ] = "StarBasic"; + Title[ korean ] = "StarBasic"; + Title[ chinese_simplified ] = "StarBasic"; + Title[ chinese_traditional ] = "StarBasic"; + Title[ arabic ] = "StarBasic"; + MESSAGE[ turkish ] = "Dosya, veri kayýt ortamýnda\nve editörde deðiþtirildi. Kaydedilsin mi?"; +}; +QueryBox IDS_ASK_DISKCHANGE_SAVE { + TITLE = "StarBasic"; + TITLE [ english_us ] = "StarBasic"; + MESSAGE = "Datei ist auf dem Datenträger geändert worden.\nÜberschreiben?"; + MESSAGE [ english_us ] = "File has been changed on data medium.\nOverwrite?"; + BUTTONS = WB_YES_NO_CANCEL; + MESSAGE[ portuguese ] = "O ficheiro foi modificado no suporte de dados.\nSobregravar?"; + MESSAGE[ russian ] = "File has been changed on data medium.\nOverwrite?"; + MESSAGE[ greek ] = "File has been changed on data medium.\nOverwrite?"; + MESSAGE[ dutch ] = "Bestand op het datamedium werd gewijzigd.\nOverschrijven?"; + MESSAGE[ french ] = "Le fichier a été modifié sur le média.\nRemplacer ?"; + MESSAGE[ spanish ] = "El archivo en el disco se ha modificado\n¿Desea sobrescribirlo?"; + MESSAGE[ italian ] = "File has been changed on data medium.\nOverwrite?"; + MESSAGE[ danish ] = "File has been changed on data medium.\nOverwrite?"; + MESSAGE[ swedish ] = "File has been changed on data medium.\nOverwrite?"; + MESSAGE[ polish ] = "File has been changed on data medium.\nOverwrite? "; + MESSAGE[ portuguese_brazilian ] = "Datei ist auf dem Datenträger geändert worden.\nÜberschreiben?"; + MESSAGE[ japanese ] = "̧²Ù‚ÍÃÞ¨½¸ã‚Å•ÏX‚³‚ê‚Ä‚¢‚Ü‚·B\nã‘‚«‚µ‚Ü‚·‚©?"; + MESSAGE[ korean ] = "µ¥ÀÌÅÍ ¸ÅüÀÇ ÆÄÀÏÀ̺¯°æµÇ¾ú½À´Ï´Ù. \n µ¤¾î¾²½Ã°Ú½À´Ï±î?"; + MESSAGE[ chinese_simplified ] = "Datei ist auf dem Datenträger geändert worden.\nÜberschreiben?"; + MESSAGE[ chinese_traditional ] = "File has been changed on data medium.\nOverwrite?"; + MESSAGE[ arabic ] = "File has been changed on data medium.\nOverwrite?"; + Title[ portuguese ] = "StarBasic"; + Title[ russian ] = "StarBasic"; + Title[ greek ] = "StarBasic"; + Title[ dutch ] = "StarBasic"; + Title[ french ] = "StarBasic"; + Title[ spanish ] = "StarBasic"; + Title[ italian ] = "StarBasic"; + Title[ danish ] = "StarBasic"; + Title[ swedish ] = "StarBasic"; + Title[ polish ] = "StarBasic"; + Title[ portuguese_brazilian ] = "StarBasic"; + Title[ japanese ] = "StarBasic"; + Title[ korean ] = "StarBasic"; + Title[ chinese_simplified ] = "StarBasic"; + Title[ chinese_traditional ] = "StarBasic"; + Title[ arabic ] = "StarBasic"; + MESSAGE[ turkish ] = "Dosya, veri ortamýnda deðiþtirildi.\nKaydedilsin mi?"; +}; +QueryBox IDS_ASKRELOAD { + TITLE = "StarBasic"; + TITLE [ english_us ] = "StarBasic"; + MESSAGE = "Datei ist auf dem Datenträger geändert worden. Erneut Laden?"; + MESSAGE [ english_us ] = "File has been changed on data medium. Reload?"; + BUTTONS = WB_YES_NO; + MESSAGE[ portuguese ] = "O ficheiro foi modificado no suporte de dados. Recarregar?"; + MESSAGE[ russian ] = "File has been changed on data medium. Reload?"; + MESSAGE[ greek ] = "File has been changed on data medium. Reload?"; + MESSAGE[ dutch ] = "Bestand op het datamedium werd gewijzigd. Opnieuw laden?"; + MESSAGE[ french ] = "Le fichier a été modifié sur le média. Recharger ?"; + MESSAGE[ spanish ] = "Se ha modificado el archivo en el disco. ¿Desea recargarlo?"; + MESSAGE[ italian ] = "File has been changed on data medium. Reload?"; + MESSAGE[ danish ] = "File has been changed on data medium. Reload?"; + MESSAGE[ swedish ] = "File has been changed on data medium. Reload?"; + MESSAGE[ polish ] = "File has been changed on data medium. Reload? "; + MESSAGE[ portuguese_brazilian ] = "Datei ist auf dem Datenträger geändert worden. Erneut Laden?"; + MESSAGE[ japanese ] = "̧²Ù‚ÍÃÞ¨½¸ã‚Å•ÏX‚³‚ê‚Ä‚¢‚Ü‚·Bēǂݞ‚Ý‚µ‚Ü‚·‚©?"; + MESSAGE[ korean ] = "µ¥ÀÌÅÍ ¸Åü¿Í ÆíÁý±â ³»ÀÇ ÆÄÀÏÀ̺¯°æµÇ¾ú½À´Ï´Ù. ´Ù½Ã ·ÎµåÇϰڽÀ´Ï±î?"; + MESSAGE[ chinese_simplified ] = "Datei ist auf dem Datenträger geändert worden. Erneut Laden?"; + MESSAGE[ chinese_traditional ] = "File has been changed on data medium. Reload?"; + MESSAGE[ arabic ] = "File has been changed on data medium. Reload?"; + Title[ portuguese ] = "StarBasic"; + Title[ russian ] = "StarBasic"; + Title[ greek ] = "StarBasic"; + Title[ dutch ] = "StarBasic"; + Title[ french ] = "StarBasic"; + Title[ spanish ] = "StarBasic"; + Title[ italian ] = "StarBasic"; + Title[ danish ] = "StarBasic"; + Title[ swedish ] = "StarBasic"; + Title[ polish ] = "StarBasic"; + Title[ portuguese_brazilian ] = "StarBasic"; + Title[ japanese ] = "StarBasic"; + Title[ korean ] = "StarBasic"; + Title[ chinese_simplified ] = "StarBasic"; + Title[ chinese_traditional ] = "StarBasic"; + Title[ arabic ] = "StarBasic"; + MESSAGE[ turkish ] = "Dosya, veri ortamýnda deðiþtirildi. Yeniden yüklensin mi?"; +}; +QueryBox IDS_ASKDIRTYRELOAD { + TITLE = "StarBasic"; + TITLE [ english_us ] = "StarBasic"; + MESSAGE = "Datei ist auf dem Datenträger und\nim Editor geändert worden. Erneut Laden?"; + MESSAGE [ english_us ] = "File has been changed on data medium\nand in the Editor. Reload?"; + BUTTONS = WB_YES_NO; + MESSAGE[ portuguese ] = "O ficheiro foi modificado no\\suporte de dados e no Editor. Recarregar?"; + MESSAGE[ russian ] = "File has been changed on data medium\nand in the Editor. Reload?"; + MESSAGE[ greek ] = "File has been changed on data medium\nand in the Editor. Reload?"; + MESSAGE[ dutch ] = "Bestand op het datamedium en\nin de editor werd gewijzigd. Opnieuw laden?"; + MESSAGE[ french ] = "Le fichier a été modifié sur le média\net dans l'éditeur. Recharger ?"; + MESSAGE[ spanish ] = "Se ha modificado el archivo en el disco y\nen el editor. ¿Desea recargarlo?"; + MESSAGE[ italian ] = "File has been changed on data medium\nand in the Editor. Reload?"; + MESSAGE[ danish ] = "File has been changed on data medium\nand in the Editor. Reload?"; + MESSAGE[ swedish ] = "File has been changed on data medium\nand in the Editor. Reload?"; + MESSAGE[ polish ] = "File has been changed on data medium\nand in the Editor. Reload? "; + MESSAGE[ portuguese_brazilian ] = "Datei ist auf dem Datenträger und\nim Editor geändert worden. Erneut Laden?"; + MESSAGE[ japanese ] = "̧²Ù‚ÍÃÞ¨½¸ã‚Å\n•ÒW’†‚É•ÏX‚³‚ê‚Ä‚¢‚Ü‚·Bēǂݞ‚Ý‚µ‚Ü‚·‚©?"; + MESSAGE[ korean ] = "µ¥ÀÌÅÍ ¸Åü¿Í ÆíÁý±â ³»ÀÇ ÆÄÀÏÀ̺¯°æµÇ¾ú½À´Ï´Ù. \n ´Ù½Ã ·ÎµåÇϰڽÀ´Ï±î?"; + MESSAGE[ chinese_simplified ] = "Datei ist auf dem Datenträger und\nim Editor geändert worden. Erneut Laden?"; + MESSAGE[ chinese_traditional ] = "File has been changed on data medium\nand in the Editor. Reload?"; + MESSAGE[ arabic ] = "File has been changed on data medium\nand in the Editor. Reload?"; + Title[ portuguese ] = "StarBasic"; + Title[ russian ] = "StarBasic"; + Title[ greek ] = "StarBasic"; + Title[ dutch ] = "StarBasic"; + Title[ french ] = "StarBasic"; + Title[ spanish ] = "StarBasic"; + Title[ italian ] = "StarBasic"; + Title[ danish ] = "StarBasic"; + Title[ swedish ] = "StarBasic"; + Title[ polish ] = "StarBasic"; + Title[ portuguese_brazilian ] = "StarBasic"; + Title[ japanese ] = "StarBasic"; + Title[ korean ] = "StarBasic"; + Title[ chinese_simplified ] = "StarBasic"; + Title[ chinese_traditional ] = "StarBasic"; + Title[ arabic ] = "StarBasic"; + MESSAGE[ turkish ] = "Dosya, veri ortamýnda ve\neditörde deðiþtirildi deðiþtirildi. Yeniden yüklensin mi?"; +}; +QueryBox IDS_RUNNING { + TITLE = "StarBasic"; + TITLE [ english_us ] = "StarBasic"; + MESSAGE = "BASIC-Programm ist noch aktiv! Dennoch beenden?"; + MESSAGE [ english_us ] = "BASIC is still running! Exit anyway?"; + BUTTONS = WB_YES_NO; + MESSAGE[ portuguese ] = "O programa BASIC ainda está activo! Mesmo assim, sair?"; + MESSAGE[ russian ] = "BASIC is still running! Exit anyway?"; + MESSAGE[ greek ] = "BASIC is still running! Exit anyway?"; + MESSAGE[ dutch ] = "BASIC-programma is nog actief! Toch beëindigen?"; + MESSAGE[ french ] = "BASIC est encore actif ! Êtes-vous sûr de vouloir quitter le programme ?"; + MESSAGE[ spanish ] = "¡El programa BASIC está aún activo! ¿Desea cerrar de todas formas?"; + MESSAGE[ italian ] = "BASIC is still running! Exit anyway?"; + MESSAGE[ danish ] = "BASIC is still running! Exit anyway?"; + MESSAGE[ swedish ] = "BASIC is still running! Exit anyway?"; + MESSAGE[ polish ] = "BASIC is still running! Exit anyway? "; + MESSAGE[ portuguese_brazilian ] = "BASIC-Programm ist noch aktiv! Dennoch beenden?"; + MESSAGE[ japanese ] = "BASICÌßÛ¸Þ×т͂܂¾±¸Ã¨ÌނɂȂÁ‚Ä‚¢‚Ü‚·! ‚»‚̂܂ÜI—¹‚µ‚Ü‚·‚©?"; + MESSAGE[ korean ] = "BASIC ÇÁ·Î±×·¥ÀÌ ¾ÆÁ÷ ÀÛµ¿ÁßÀÔ´Ï´Ù. Á¾·áÇϽðڽÀ´Ï±î??"; + MESSAGE[ chinese_simplified ] = "BASIC-Programm ist noch aktiv! Dennoch beenden?"; + MESSAGE[ chinese_traditional ] = "BASIC is still running! Exit anyway?"; + MESSAGE[ arabic ] = "BASIC is still running! Exit anyway?"; + Title[ portuguese ] = "StarBasic"; + Title[ russian ] = "StarBasic"; + Title[ greek ] = "StarBasic"; + Title[ dutch ] = "StarBasic"; + Title[ french ] = "StarBasic"; + Title[ spanish ] = "StarBasic"; + Title[ italian ] = "StarBasic"; + Title[ danish ] = "StarBasic"; + Title[ swedish ] = "StarBasic"; + Title[ polish ] = "StarBasic"; + Title[ portuguese_brazilian ] = "StarBasic"; + Title[ japanese ] = "StarBasic"; + Title[ korean ] = "StarBasic"; + Title[ chinese_simplified ] = "StarBasic"; + Title[ chinese_traditional ] = "StarBasic"; + Title[ arabic ] = "StarBasic"; + MESSAGE[ turkish ] = "BASIC programý hâlâ etkin. Yine de çýkmak istiyor musunuz?"; +}; +QueryBox IDS_LOSS_OF_INFORMATION { + TITLE = "StarBasic"; + TITLE [ english_us ] = "StarBasic"; + MESSAGE = "Speichern in Fremdformat verursacht Informationsverlust"; + MESSAGE [ english_us ] = "Saving in an external format causes information loss."; + BUTTONS = WB_OK_CANCEL; + MESSAGE[ portuguese ] = "Guardar em formatos externos causará perda de informação."; + MESSAGE[ russian ] = "Ñîõðàíåíèå â ÷óæîì ôîðìàòå ïðèâåäåò ê ïîòåðå èíôîðìàöèè"; + MESSAGE[ greek ] = "Saving in an external format causes information loss."; + MESSAGE[ dutch ] = "Door het opslaan in een extern formaat kan informatie verloren gaan."; + MESSAGE[ french ] = "L'enregistrement dans un format externe entraîne une perte d'informations."; + MESSAGE[ spanish ] = "Al guardar en formato externo se perderá información"; + MESSAGE[ italian ] = "Saving in an external format causes information loss."; + MESSAGE[ danish ] = "Saving in an external format causes information loss."; + MESSAGE[ swedish ] = "Saving in an external format causes information loss."; + MESSAGE[ polish ] = "Zapisanie w innym formacie spowoduje utratê informacji"; + MESSAGE[ portuguese_brazilian ] = "BASIC is still running! Exit anyway?"; + MESSAGE[ japanese ] = "ŠO•”‚Ì‘Ž®Ý’è‚ŕۑ¶‚·‚邯î•ñ‚ðŽ¸‚¤‚±‚ƂɂȂè‚Ü‚·"; + MESSAGE[ korean ] = "¿ÜºÎ Æ÷¸ËÀÇ ÀúÀåÀº Á¤º¸ ¼Õ½ÇÀ» À¯¹ßÇÕ´Ï´Ù."; + MESSAGE[ chinese_simplified ] = "Saving in an external format causes information loss."; + MESSAGE[ chinese_traditional ] = "Saving in an external format causes information loss."; + MESSAGE[ arabic ] = "Saving in an external format causes information loss."; + Title[ portuguese ] = "StarBasic"; + Title[ russian ] = "StarBasic"; + Title[ greek ] = "StarBasic"; + Title[ dutch ] = "StarBasic"; + Title[ french ] = "StarBasic"; + Title[ spanish ] = "StarBasic"; + Title[ italian ] = "StarBasic"; + Title[ danish ] = "StarBasic"; + Title[ swedish ] = "StarBasic"; + Title[ polish ] = "StarBasic"; + Title[ portuguese_brazilian ] = "StarBasic"; + Title[ japanese ] = "StarBasic"; + Title[ korean ] = "StarBasic"; + Title[ chinese_simplified ] = "StarBasic"; + Title[ chinese_traditional ] = "StarBasic"; + Title[ arabic ] = "StarBasic"; + MESSAGE[ turkish ] = "Yabancý formatta kaydetmek bilgi kaybýna yol açar"; +}; + +InfoBox IDS_NOT_YET_IMPLEMENTED +{ + MESSAGE = "Noch nicht implementiert"; + MESSAGE[ english_us ] = "Not yet implemented"; + MESSAGE[ portuguese ] = "Ainda não implementado"; + MESSAGE[ russian ] = "Åùå íå âíåäðåíî"; + MESSAGE[ greek ] = "Not yet implemented"; + MESSAGE[ dutch ] = "Nog niet geïmplementeerd"; + MESSAGE[ french ] = "Pas encore implémenté"; + MESSAGE[ spanish ] = "Todavía no implementado"; + MESSAGE[ italian ] = "Not yet implemented"; + MESSAGE[ danish ] = "Not yet implemented"; + MESSAGE[ swedish ] = "Not yet implemented"; + MESSAGE[ polish ] = "Na razie nie implementowane"; + MESSAGE[ portuguese_brazilian ] = "Noch nicht implementiert"; + MESSAGE[ japanese ] = "‚Ü‚¾ŽÀ‘•‚³‚ê‚Ä‚¢‚Ü‚¹‚ñ"; + MESSAGE[ korean ] = "¾ÆÁ÷ ±¸ÇöµÇÁö ¾Ê¾Ò½À´Ï´Ù."; + MESSAGE[ chinese_simplified ] = "Not yet implemented"; + MESSAGE[ chinese_traditional ] = "Not yet implemented"; + MESSAGE[ arabic ] = "Not yet implemented"; + MESSAGE[ turkish ] = "Henüz uygulanmadý"; +}; + + +String IDS_WARNING1 { + TEXT = "Warnung "; + TEXT [ english_us ] = "Warning "; + TEXT[ portuguese ] = "Aviso "; + TEXT[ russian ] = "Warning "; + TEXT[ greek ] = "Warning "; + TEXT[ dutch ] = "Waarschuwing "; + TEXT[ french ] = "Attention !"; + TEXT[ spanish ] = "Advertencia "; + TEXT[ italian ] = "Warning "; + TEXT[ danish ] = "Warning "; + TEXT[ swedish ] = "Warning "; + TEXT[ polish ] = "Warning "; + TEXT[ portuguese_brazilian ] = "Warnung "; + TEXT[ japanese ] = "Œx "; + TEXT[ korean ] = "°æ°í "; + TEXT[ chinese_simplified ] = "Warnung "; + TEXT[ chinese_traditional ] = "Warning "; + TEXT[ arabic ] = "Warning "; + TEXT[ turkish ] = "Uyarý "; +}; +String IDS_ERROR1 { + TEXT = "Fehler "; + TEXT [ english_us ] = "Error "; + TEXT[ portuguese ] = "Erro "; + TEXT[ russian ] = "Error "; + TEXT[ greek ] = "Error "; + TEXT[ dutch ] = "Fout "; + TEXT[ french ] = "Erreur "; + TEXT[ spanish ] = "Error "; + TEXT[ italian ] = "Error "; + TEXT[ danish ] = "Error "; + TEXT[ swedish ] = "Error "; + TEXT[ polish ] = "Error "; + TEXT[ portuguese_brazilian ] = "Fehler "; + TEXT[ japanese ] = "´×° "; + TEXT[ korean ] = "¿À·ù "; + TEXT[ chinese_simplified ] = "Fehler "; + TEXT[ chinese_traditional ] = "Error "; + TEXT[ arabic ] = "Error "; + TEXT[ turkish ] = "Hata "; +}; +String IDS_ERROR2 { + TEXT = " in Zeile "; + TEXT [ english_us ] = "in row "; + TEXT[ portuguese ] = "na linha "; + TEXT[ russian ] = "in row "; + TEXT[ greek ] = "in row "; + TEXT[ dutch ] = "in regel "; + TEXT[ french ] = "à la ligne "; + TEXT[ spanish ] = "en fila "; + TEXT[ italian ] = "in row "; + TEXT[ danish ] = "in row "; + TEXT[ swedish ] = "in row "; + TEXT[ polish ] = "in row "; + TEXT[ portuguese_brazilian ] = "in Zeile "; + TEXT[ japanese ] = "s "; + TEXT[ korean ] = "ÇàÀ¸·Î "; + TEXT[ chinese_simplified ] = "in Zeile "; + TEXT[ chinese_traditional ] = "in row "; + TEXT[ arabic ] = "in row "; + TEXT[ turkish ] = "Satýr: "; +}; +String IDS_NO_LONGNAME { + TEXT = "Kein Eintrag in Hid.Lst"; + TEXT[ english_us ] = "No entries in Hid.Lst"; + TEXT[ portuguese ] = "Nenhuma entrada em Hid.Lst"; + TEXT[ russian ] = " Hid.Lst çàïèñè íå èìååòñÿ"; + TEXT[ greek ] = "No entries in Hid.Lst"; + TEXT[ dutch ] = "Geen item in Hid.Lst"; + TEXT[ french ] = "Aucune entrée dans Hid.Lst"; + TEXT[ spanish ] = "Ninguna entrada en Hid.Lst"; + TEXT[ italian ] = "No esntries in Hid.Lst"; + TEXT[ danish ] = "No entries in Hid.Lst"; + TEXT[ swedish ] = "No entries in Hid.Lst"; + TEXT[ polish ] = "Brak wpisu w Hid.Lst"; + TEXT[ portuguese_brazilian ] = "Kein Eintrag in Hid.Lst"; + TEXT[ japanese ] = "Hid.Lst‚É€–Ú‚Í‚ ‚è‚Ü‚¹‚ñ"; + TEXT[ korean ] = "Hid.Lst ¿¡ µî·ÏµÇÁö ¾Ê¾Ò½À´Ï´Ù."; + TEXT[ chinese_simplified ] = "No entries in Hid.Lst"; + TEXT[ chinese_traditional ] = "No entries in Hid.Lst"; + TEXT[ arabic ] = "No entries in Hid.Lst"; + TEXT[ turkish ] = "Hid.Lst'te giriþ yok"; +}; +String IDS_WARNING_PREFIX +{ + Text = "Warnung: "; + Text[ english_us ] = "Warning: "; + Text[ portuguese ] = "Aviso: "; + Text[ russian ] = "Ïðåäóïðåæäåíèå: "; + Text[ greek ] = "Warning: "; + Text[ dutch ] = "Waarschuwing: "; + Text[ french ] = "Attention ! "; + Text[ spanish ] = "Advertencia: "; + Text[ italian ] = "Warning: "; + Text[ danish ] = "Warning: "; + Text[ swedish ] = "Warning: "; + Text[ polish ] = "Ostrze¿enie: "; + Text[ portuguese_brazilian ] = "Warnung: "; + Text[ japanese ] = "Œx: "; + Text[ korean ] = "°æ°í "; + Text[ chinese_simplified ] = "Warning: "; + Text[ chinese_traditional ] = "Warning: "; + Text[ arabic ] = "Warning: "; + Text[ turkish ] = "Uyarý: "; +}; +String IDS_OBJECT +{ + Text = "Objekt"; + Text[ english_us ] = "Object"; + Text[ LANGUAGE_USER1 ] = "Gemeint sind Objekte aus der Objektorientierten Programmierung"; + Text[ portuguese ] = "Objecto"; + Text[ russian ] = "Îáúåêò"; + Text[ greek ] = "Objekt"; + Text[ dutch ] = "Object"; + Text[ french ] = "Objet"; + Text[ spanish ] = "Objeto"; + Text[ italian ] = "Object"; + Text[ danish ] = "Object"; + Text[ swedish ] = "Object"; + Text[ polish ] = "Obiekt"; + Text[ portuguese_brazilian ] = "Object"; + Text[ japanese ] = "µÌÞ¼Þª¸Ä"; + Text[ korean ] = "°³Ã¼"; + Text[ chinese_simplified ] = "Object"; + Text[ chinese_traditional ] = "Object"; + Text[ arabic ] = "Object"; + Text[ turkish ] = "Nesne"; +}; +String IDS_EDIT_VAR +{ + Text = "($Arg1) Editieren"; + Text[ english_us ] = "Edit ($Arg1)"; + Text[ LANGUAGE_USER1 ] = "Keine Dati, sondern eine Variable"; + Text[ portuguese ] = "Editar ($Arg1)"; + Text[ russian ] = "Ïðàâêà ($Arg1)"; + Text[ greek ] = "Edit ($Arg1)"; + Text[ dutch ] = "Editeren ($Arg1)"; + Text[ french ] = "Éditer ($Arg1)"; + Text[ spanish ] = "Editar ($Arg1)"; + Text[ italian ] = "Edit ($Arg1)"; + Text[ danish ] = "Edit ($Arg1)"; + Text[ swedish ] = "Edit ($Arg1)"; + Text[ polish ] = "Edytuj ($Arg1)"; + Text[ portuguese_brazilian ] = "Edit ($Arg1)"; + Text[ japanese ] = "($Arg1)•ÒW"; + Text[ korean ] = "ÆíÁý ($Arg1)"; + Text[ chinese_simplified ] = "Edit ($Arg1)"; + Text[ chinese_traditional ] = "Edit ($Arg1)"; + Text[ arabic ] = "Edit ($Arg1)"; + Text[ turkish ] = "($Arg1) Düzenle"; +}; + +String IDS_APPNAME { + TEXT = "StarBasic"; + TEXT [ english_us ] = "StarBasic"; + TEXT[ portuguese ] = "StarOffice Basic"; + TEXT[ russian ] = "StarBasic"; + TEXT[ greek ] = "StarBasic"; + TEXT[ dutch ] = "StarOffice Basic"; + TEXT[ french ] = "StarBasic"; + TEXT[ spanish ] = "StarBasic"; + TEXT[ italian ] = "StarOffice Basic"; + TEXT[ danish ] = "StarBasic"; + TEXT[ swedish ] = "StarOffice Basic"; + TEXT[ polish ] = "StarBasic"; + TEXT[ portuguese_brazilian ] = "StarBasic"; + TEXT[ japanese ] = "StarBasic"; + TEXT[ korean ] = "StarOffice Basic"; + TEXT[ chinese_simplified ] = "StarOffice Basic"; + TEXT[ chinese_traditional ] = "StarOffice Basic"; + TEXT[ arabic ] = "StarBasic"; + TEXT[ turkish ] = "StarOffice Basic"; +}; +String IDS_APPNAME2 { + TEXT = "StarTestTool"; + TEXT [ english_us ] = "StarTestTool"; + TEXT[ portuguese ] = "StarTestTool"; + TEXT[ russian ] = "StarTestTool"; + TEXT[ greek ] = "StarTestTool"; + TEXT[ dutch ] = "StarTestTool"; + TEXT[ french ] = "StarTestTool"; + TEXT[ spanish ] = "StarTestTool"; + TEXT[ italian ] = "StarTestTool"; + TEXT[ danish ] = "StarTestTool"; + TEXT[ swedish ] = "StarTestTool"; + TEXT[ polish ] = "StarTestTool"; + TEXT[ portuguese_brazilian ] = "StarTestTool"; + TEXT[ japanese ] = "StarTestTool"; + TEXT[ korean ] = "StarTestTool"; + TEXT[ chinese_simplified ] = "StarTestTool"; + TEXT[ chinese_traditional ] = "StarTestTool"; + TEXT[ arabic ] = "StarTestTool"; + TEXT[ turkish ] = "StarTestTool"; +}; +String IDS_APPMODE_BREAK { + text = "Break"; + text[ english_us ] = "Break"; + text[ portuguese ] = "Break"; + text[ russian ] = "Break"; + text[ greek ] = "Break"; + text[ dutch ] = "Break"; + text[ french ] = "Break"; + text[ spanish ] = "Break"; + text[ italian ] = "Break"; + text[ danish ] = "Break"; + text[ swedish ] = "Break"; + text[ polish ] = "Przerwa"; + text[ portuguese_brazilian ] = "Break"; + text[ japanese ] = "Break"; + text[ korean ] = "Break"; + text[ chinese_simplified ] = "Break"; + text[ chinese_traditional ] = "Break"; + text[ arabic ] = "Break"; + text[ turkish ] = "Break"; +}; +String IDS_APPMODE_RUN { + text = "Run"; + text[ english_us ] = "Run"; + text[ portuguese ] = "Run"; + text[ russian ] = "Run"; + text[ greek ] = "Run"; + text[ dutch ] = "Run"; + text[ french ] = "Run"; + text[ spanish ] = "Run"; + text[ italian ] = "Run"; + text[ danish ] = "Run"; + text[ swedish ] = "Run"; + text[ polish ] = "Run"; + text[ portuguese_brazilian ] = "Run"; + text[ japanese ] = "Run"; + text[ korean ] = "½ÇÇà"; + text[ chinese_simplified ] = "Run"; + text[ chinese_traditional ] = "Run"; + text[ arabic ] = "Run"; + text[ turkish ] = "Run"; +}; +String IDS_NONAME { + TEXT = "Unbenannt"; + TEXT [ english_us ] = "Unnamed"; + TEXT[ portuguese ] = "Sem nome"; + TEXT[ russian ] = "Unnamed"; + TEXT[ greek ] = "Unnamed"; + TEXT[ dutch ] = "Naamloos"; + TEXT[ french ] = "Sans nom"; + TEXT[ spanish ] = "Desconocido"; + TEXT[ italian ] = "Unnamed"; + TEXT[ danish ] = "Unnamed"; + TEXT[ swedish ] = "Unnamed"; + TEXT[ polish ] = "Unnamed "; + TEXT[ portuguese_brazilian ] = "Unbenannt"; + TEXT[ japanese ] = "•s–¾"; + TEXT[ korean ] = "À̸§ÀÌ ¾øÀ½"; + TEXT[ chinese_simplified ] = "Unbenannt"; + TEXT[ chinese_traditional ] = "Unnamed"; + TEXT[ arabic ] = "Unnamed"; + TEXT[ turkish ] = "Adsýz"; +}; + +String IDS_NONAMEFILE { +#if defined ( UNX ) +TEXT = "*.bas"; +#else +TEXT = "*.BAS"; +#endif +}; +String IDS_INCFILE { +#if defined ( UNX ) +TEXT = "*.inc"; +#else +TEXT = "*.INC"; +#endif +}; +String IDS_LIBFILE { +#if defined ( UNX ) +TEXT = "*.sb"; +#else +TEXT = "*.SB"; +#endif +}; +String IDS_RESFILE { +#if defined ( UNX ) +TEXT = "*.res"; +#else +TEXT = "*.RES"; +#endif +}; +String IDS_TXTFILE { +#if defined ( UNX ) +TEXT = "*.txt"; +#else +TEXT = "*.TXT"; +#endif +}; + +String IDS_LOADDLG { + TEXT = "StarBasic: Datei einlesen"; + TEXT [ english_us ] = "StarBasic: Load File"; + TEXT[ portuguese ] = "StarOffice Basic: ler ficheiro"; + TEXT[ russian ] = "StarBasic: Load File"; + TEXT[ greek ] = "StarBasic: Load File"; + TEXT[ dutch ] = "StarOffice Basic: bestand lezen"; + TEXT[ french ] = "StarBasic : Lecture du fichier"; + TEXT[ spanish ] = "StarBasic: Leer archivo"; + TEXT[ italian ] = "StarBasic: Load File"; + TEXT[ danish ] = "StarBasic: Load File"; + TEXT[ swedish ] = "StarBasic: Load File"; + TEXT[ polish ] = "StarBasic: Load File "; + TEXT[ portuguese_brazilian ] = "StarBasic: Datei einlesen"; + TEXT[ japanese ] = "StarBasic: ̧²Ù‚̓ǂݞ‚Ý"; + TEXT[ korean ] = "StarBasic: ÆÄÀÏ ·Îµå"; + TEXT[ chinese_simplified ] = "StarBasic: Datei einlesen"; + TEXT[ chinese_traditional ] = "StarOffice Basic¡GLoad File"; + TEXT[ arabic ] = "StarBasic: Load File"; + TEXT[ turkish ] = "StarBasic: Dosyayý yükle"; +}; +String IDS_SAVEDLG { + TEXT = "StarBasic: Datei speichern"; + TEXT [ english_us ] = "StarBasic: Save File"; + TEXT[ portuguese ] = "StarOffice Basic: guardar ficheiro"; + TEXT[ russian ] = "StarBasic: Save File"; + TEXT[ greek ] = "StarBasic: Save File"; + TEXT[ dutch ] = "StarOffice Basic: bestand opslaan"; + TEXT[ french ] = "StarBasic: Enregistrement du fichier"; + TEXT[ spanish ] = "StarBasic: Guardar archivo"; + TEXT[ italian ] = "StarBasic: Save File"; + TEXT[ danish ] = "StarBasic: Save File"; + TEXT[ swedish ] = "StarBasic: Save File"; + TEXT[ polish ] = "StarBasic: Save File "; + TEXT[ portuguese_brazilian ] = "StarBasic: Datei speichern"; + TEXT[ japanese ] = "StarBasic: ̧²Ù‚̕ۑ¶"; + TEXT[ korean ] = "StarBasic: ÆÄÀÏ ÀúÀå"; + TEXT[ chinese_simplified ] = "StarBasic: Datei speichern"; + TEXT[ chinese_traditional ] = "StarOffice Basic: Save File"; + TEXT[ arabic ] = "StarBasic: Save File"; + TEXT[ turkish ] = "StarBasic: Dosyayý kaydet"; +}; +String IDS_BASFILTER { + TEXT = "Quelltexte (*.BAS)"; + TEXT [ english_us ] = "Source text (*.BAS)"; + TEXT[ portuguese ] = "Textos-fonte (*.BAS)"; + TEXT[ russian ] = "Source text (*.BAS)"; + TEXT[ greek ] = "Source text (*.BAS)"; + TEXT[ dutch ] = "Brontekst (*.BAS)"; + TEXT[ french ] = "Texte source (*.BAS)"; + TEXT[ spanish ] = "Textos fuente (*.BAS)"; + TEXT[ italian ] = "Source text (*.BAS)"; + TEXT[ danish ] = "Source text (*.BAS)"; + TEXT[ swedish ] = "Source text (*.BAS)"; + TEXT[ polish ] = "Source text (*.BAS) "; + TEXT[ portuguese_brazilian ] = "Quelltexte (*.BAS)"; + TEXT[ japanese ] = "¿°½(*.BAS)"; + TEXT[ korean ] = "¼Ò½º ÅØ½ºÆ® (*.BAS)"; + TEXT[ chinese_simplified ] = "Quelltexte (*.BAS)"; + TEXT[ chinese_traditional ] = "Source text(*.BAS)"; + TEXT[ arabic ] = "Source text (*.BAS)"; + TEXT[ turkish ] = "Kaynak metinler (*.BAS)"; +}; +String IDS_INCFILTER { + TEXT = "Include-Dateien (*.INC)"; + TEXT [ english_us ] = "Include files (*.INC)"; + TEXT[ portuguese ] = "Ficheiros \"Include\" (*.INC)"; + TEXT[ russian ] = "Include files (*.INC)"; + TEXT[ greek ] = "Include files (*.INC)"; + TEXT[ dutch ] = "Include-bestanden (*.INC)"; + TEXT[ french ] = "Fichiers \"Include\" (*.INC)"; + TEXT[ spanish ] = "Archivos \"Include\" (*.INC)"; + TEXT[ italian ] = "Include files (*.INC)"; + TEXT[ danish ] = "Include files (*.INC)"; + TEXT[ swedish ] = "Include files (*.INC)"; + TEXT[ polish ] = "Include files (*.INC) "; + TEXT[ portuguese_brazilian ] = "Include-Dateien (*.INC)"; + TEXT[ japanese ] = "Include files (*.INC)"; + TEXT[ korean ] = "ÆÄÀÏ Æ÷ÇÔ (*.INC)"; + TEXT[ chinese_simplified ] = "Include-Dateien (*.INC)"; + TEXT[ chinese_traditional ] = "Include files(*.INC)"; + TEXT[ arabic ] = "Include files (*.INC)"; + TEXT[ turkish ] = "Include dosyalarý (*.INC)"; +}; +String IDS_LIBFILTER { + TEXT = "Libraries (*.SB)"; + TEXT [ english_us ] = "Libraries (*.SB)"; + TEXT[ portuguese ] = "Bibliotecas (*.SB)"; + TEXT[ russian ] = "Libraries (*.SB)"; + TEXT[ greek ] = "Libraries (*.SB)"; + TEXT[ dutch ] = "Libraries (*.SB)"; + TEXT[ french ] = "Bibliothèques (*.SB)"; + TEXT[ spanish ] = "Bibliotecas (*.SB)"; + TEXT[ italian ] = "Libraries (*.SB)"; + TEXT[ danish ] = "Libraries (*.SB)"; + TEXT[ swedish ] = "Libraries (*.SB)"; + TEXT[ polish ] = "Libraries (*.SB) "; + TEXT[ portuguese_brazilian ] = "Libraries (*.SB)"; + TEXT[ japanese ] = "ײÌÞר(*.SB)"; + TEXT[ korean ] = "¶óÀ̺귯¸® (*.SB)"; + TEXT[ chinese_simplified ] = "Libraries (*.SB)"; + TEXT[ chinese_traditional ] = "Libraries(*.SB)"; + TEXT[ arabic ] = "Libraries (*.SB)"; + TEXT[ turkish ] = "Kitaplýklar (*.SB)"; +}; +String IDS_RESFILTER { + TEXT = "Results (*.RES)"; + TEXT [ english_us ] = "Results (*.RES)"; + TEXT[ portuguese ] = "Resultados (*.RES)"; + TEXT[ russian ] = "Results (*.RES)"; + TEXT[ greek ] = "Results (*.RES)"; + TEXT[ dutch ] = "Results (*.RES)"; + TEXT[ french ] = "Résultats (*.RES)"; + TEXT[ spanish ] = "Resultados (*.RES)"; + TEXT[ italian ] = "Results (*.RES)"; + TEXT[ danish ] = "Results (*.RES)"; + TEXT[ swedish ] = "Results (*.RES)"; + TEXT[ polish ] = "Results (*.RES) "; + TEXT[ portuguese_brazilian ] = "Results (*.RES)"; + TEXT[ japanese ] = "Œ‹‰Ê(*.RES)"; + TEXT[ korean ] = "°á°ú (*.RES)"; + TEXT[ chinese_simplified ] = "Results (*.RES)"; + TEXT[ chinese_traditional ] = "Results(*.RES)"; + TEXT[ arabic ] = "Results (*.RES)"; + TEXT[ turkish ] = "Sonuçlar (*.RES)"; +}; +String IDS_TXTFILTER { + TEXT = "Results als Textdatei (*.TXT)"; + TEXT [ english_us ] = "Results as text file (*.TXT)"; + TEXT[ portuguese ] = "Resultados como ficheiro de texto (*.TXT)"; + TEXT[ russian ] = "Results as text file (*.TXT)"; + TEXT[ greek ] = "Results as text file (*.TXT)"; + TEXT[ dutch ] = "Results als tekstbestand (*.TXT)"; + TEXT[ french ] = "Résultats sous forme de fichier texte (*.TXT)"; + TEXT[ spanish ] = "Resultados como archivo de texto (*.TXT)"; + TEXT[ italian ] = "Results as text file (*.TXT)"; + TEXT[ danish ] = "Results as text file (*.TXT)"; + TEXT[ swedish ] = "Results as text file (*.TXT)"; + TEXT[ polish ] = "Results as text file (*.TXT) "; + TEXT[ portuguese_brazilian ] = "Results als Textdatei (*.TXT)"; + TEXT[ japanese ] = "•¶‘̧²Ù‚Æ‚µ‚Ă̌‹‰Ê(*.TXT)"; + TEXT[ korean ] = "ÅØ½ºÆ® ÆÄÀÏ °á°ú (*.TXT)"; + TEXT[ chinese_simplified ] = "Results als Textdatei (*.TXT)"; + TEXT[ chinese_traditional ] = "Results as text file(*.TXT)"; + TEXT[ arabic ] = "Results as text file (*.TXT)"; + TEXT[ turkish ] = "Metin dosyasý olarak sonuçlar (*.TXT)"; +}; +String IDS_PAGE { + TEXT = "Seite "; + TEXT [ english_us ] = "Page "; + TEXT[ portuguese ] = "Página "; + TEXT[ russian ] = "Page "; + TEXT[ greek ] = "Page "; + TEXT[ dutch ] = "Pagina "; + TEXT[ french ] = "Page "; + TEXT[ spanish ] = "Página "; + TEXT[ italian ] = "Page "; + TEXT[ danish ] = "Page "; + TEXT[ swedish ] = "Page "; + TEXT[ polish ] = "Page "; + TEXT[ portuguese_brazilian ] = "Seite "; + TEXT[ japanese ] = "Íß°¼Þ "; + TEXT[ korean ] = "ÆäÀÌÁö "; + TEXT[ chinese_simplified ] = "Seite "; + TEXT[ chinese_traditional ] = "Page "; + TEXT[ arabic ] = "Page "; + TEXT[ turkish ] = "Sayfa "; +}; +String IDS_PRINTMSG { + TEXT = "Ausdruck von "; + TEXT [ english_us ] = "Printout from "; + TEXT[ portuguese ] = "Impressão de "; + TEXT[ russian ] = "Printout from "; + TEXT[ greek ] = "Printout from "; + TEXT[ dutch ] = "Afdruk van "; + TEXT[ french ] = "Impression de "; + TEXT[ spanish ] = "Imprimir "; + TEXT[ italian ] = "Printout from "; + TEXT[ danish ] = "Printout from "; + TEXT[ swedish ] = "Printout from "; + TEXT[ polish ] = "Printout from "; + TEXT[ portuguese_brazilian ] = "Ausdruck von "; + TEXT[ japanese ] = "ˆóü”ÍˆÍ "; + TEXT[ korean ] = "Ãâ·Â "; + TEXT[ chinese_simplified ] = "Ausdruck von "; + TEXT[ chinese_traditional ] = "Printout from "; + TEXT[ arabic ] = "Printout from "; + TEXT[ turkish ] = "Çýktý kaynaðý: "; +}; +String IDS_CONTINUE { + TEXT = "Weiter"; + TEXT [ english_us ] = "Continue"; + TEXT[ portuguese ] = "Continuar"; + TEXT[ russian ] = "Continue"; + TEXT[ greek ] = "Continue"; + TEXT[ dutch ] = "Volgende"; + TEXT[ french ] = "Poursuivre"; + TEXT[ spanish ] = "Avanzar"; + TEXT[ italian ] = "Continue"; + TEXT[ danish ] = "Continue"; + TEXT[ swedish ] = "Continue"; + TEXT[ polish ] = "Continue "; + TEXT[ portuguese_brazilian ] = "Weiter"; + TEXT[ japanese ] = "‘±s"; + TEXT[ korean ] = "°è¼Ó"; + TEXT[ chinese_simplified ] = "Weiter"; + TEXT[ chinese_traditional ] = "Contiune"; + TEXT[ arabic ] = "Continue"; + TEXT[ turkish ] = "Ýleri"; +}; +String IDS_CANCEL { + TEXT = "Abbruch"; + TEXT [ english_us ] = "Cancel"; + TEXT[ portuguese ] = "Cancelar"; + TEXT[ russian ] = "Cancel"; + TEXT[ greek ] = "Cancel"; + TEXT[ dutch ] = "Annuleren"; + TEXT[ french ] = "Annuler"; + TEXT[ spanish ] = "Cancelar"; + TEXT[ italian ] = "Cancel"; + TEXT[ danish ] = "Cancel"; + TEXT[ swedish ] = "Cancel"; + TEXT[ polish ] = "Cancel "; + TEXT[ portuguese_brazilian ] = "Abbruch"; + TEXT[ japanese ] = "·¬Ý¾Ù"; + TEXT[ korean ] = "Ãë¼Ò"; + TEXT[ chinese_simplified ] = "Abbruch"; + TEXT[ chinese_traditional ] = "Cancel"; + TEXT[ arabic ] = "Cancel"; + TEXT[ turkish ] = "Ýptal"; +}; +String IDS_DISASWIN { + TEXT = "Disassembly"; + TEXT [ english_us ] = "Disassembly"; + TEXT[ portuguese ] = "Descodificar"; + TEXT[ russian ] = "Disassembly"; + TEXT[ greek ] = "Disassembly"; + TEXT[ dutch ] = "Disassembly"; + TEXT[ french ] = "Désassembler"; + TEXT[ spanish ] = "Desensamblar"; + TEXT[ italian ] = "Disassembly"; + TEXT[ danish ] = "Disassembly"; + TEXT[ swedish ] = "Disassembly"; + TEXT[ polish ] = "Disassembly "; + TEXT[ portuguese_brazilian ] = "Disassembly"; + TEXT[ japanese ] = "Disassembly"; + TEXT[ korean ] = "Disassembly"; + TEXT[ chinese_simplified ] = "Disassembly"; + TEXT[ chinese_traditional ] = "Disassembly"; + TEXT[ arabic ] = "Disassembly"; + TEXT[ turkish ] = "Disassembly"; +}; +//Icon RID_APPICON { +// FILE = "basic.ico"; +//}; +//Icon RID_APPICON2 { +// FILE = "testtool.ico"; +//}; +//Icon RID_WORKICON { +// FILE = "work.ico"; +//}; + +Bitmap MBP_PLUS { + File = "plus.bmp"; +}; +Bitmap MBP_MINUS { + File = "minus.bmp"; +}; +Bitmap MBP_ASSERT { + File = "assert.bmp"; +}; + +Menu RID_APPMENUBAR { + ItemList = { + MenuItem { + Identifier = RID_APPFILE; + TEXT = "~Datei"; + TEXT [ english_us ] = "~File"; + HELPTEXT = "Dateien öffnen, schließen und drucken"; + HELPTEXT [ english_us ] = "Dateien öffnen, schließen und drucken"; + SUBMENU = Menu ,RID_FILE; + TEXT[ portuguese ] = "~Ficheiro"; + TEXT[ russian ] = "~Ôàéë"; + TEXT[ greek ] = "~File"; + TEXT[ dutch ] = "~Bestand"; + TEXT[ french ] = "~Fichier"; + TEXT[ spanish ] = "~Archivo"; + TEXT[ italian ] = "~File"; + TEXT[ danish ] = "~File"; + TEXT[ swedish ] = "~File"; + TEXT[ polish ] = "~File "; + TEXT[ portuguese_brazilian ] = "~Datei"; + TEXT[ japanese ] = "̧²Ù(~F)"; + TEXT[ korean ] = "ÆÄÀÏ(~F)"; + TEXT[ chinese_simplified ] = "~Datei"; + TEXT[ chinese_traditional ] = "~File"; + TEXT[ arabic ] = "~File"; + TEXT[ turkish ] = "~Dosya"; + }; + MenuItem { + Identifier = RID_APPEDIT; + TEXT = "~Bearbeiten"; + TEXT [ english_us ] = "~Edit"; + HELPTEXT = "Editier-Funktionen"; + HELPTEXT [ english_us ] = "Editier-Funktionen"; + SUBMENU = Menu ,RID_EDIT; + TEXT[ portuguese ] = "~Editar"; + TEXT[ russian ] = "~Edit"; + TEXT[ greek ] = "~Edit"; + TEXT[ dutch ] = "~Bewerken"; + TEXT[ french ] = "~Éditer"; + TEXT[ spanish ] = "~Editar"; + TEXT[ italian ] = "~Edit"; + TEXT[ danish ] = "~Edit"; + TEXT[ swedish ] = "~Edit"; + TEXT[ polish ] = "~Edit "; + TEXT[ portuguese_brazilian ] = "~Bearbeiten"; + TEXT[ japanese ] = "•ÒW(~E)"; + TEXT[ korean ] = "ÆíÁý(~E)"; + TEXT[ chinese_simplified ] = "~Bearbeiten"; + TEXT[ chinese_traditional ] = "~Edit"; + TEXT[ arabic ] = "~Edit"; + TEXT[ turkish ] = "Dü~zenle"; + }; + MenuItem { + Identifier = RID_APPRUN; + TEXT = "~Programm"; + TEXT [ english_us ] = "~Program"; + HELPTEXT = "Programme compilieren und ausführen"; + HELPTEXT [ english_us ] = "Programme compilieren und ausführen"; + SUBMENU = Menu ,RID_RUN; + TEXT[ portuguese ] = "~Programa"; + TEXT[ russian ] = "~Program"; + TEXT[ greek ] = "~Program"; + TEXT[ dutch ] = "~Programma"; + TEXT[ french ] = "~Programme"; + TEXT[ spanish ] = "~Programa"; + TEXT[ italian ] = "~Program"; + TEXT[ danish ] = "~Program"; + TEXT[ swedish ] = "~Program"; + TEXT[ polish ] = "~Program "; + TEXT[ portuguese_brazilian ] = "~Programm"; + TEXT[ japanese ] = "ÌßÛ¸Þ×Ñ(~P)"; + TEXT[ korean ] = "ÇÁ·Î±×·¥(~P)"; + TEXT[ chinese_simplified ] = "~Programm"; + TEXT[ chinese_traditional ] = "~Program"; + TEXT[ arabic ] = "~Program"; + TEXT[ turkish ] = "P~rogram"; + }; + MenuItem { + Identifier = RID_APPWINDOW; + TEXT = "~Fenster"; + TEXT [ english_us ] = "~Window"; + HELPTEXT = "Fenster anordnen"; + HELPTEXT [ english_us ] = "Fenster anordnen"; + SUBMENU = Menu ,RID_WINDOW; + TEXT[ portuguese ] = "~Janela"; + TEXT[ russian ] = "~Window"; + TEXT[ greek ] = "~Window"; + TEXT[ dutch ] = "~Venster"; + TEXT[ french ] = "~Fenêtre"; + TEXT[ spanish ] = "~Ventana"; + TEXT[ italian ] = "~Window"; + TEXT[ danish ] = "~Window"; + TEXT[ swedish ] = "~Window"; + TEXT[ polish ] = "~Window "; + TEXT[ portuguese_brazilian ] = "~Fenster"; + TEXT[ japanese ] = "³¨ÝÄÞ³(~W)"; + TEXT[ korean ] = "â(~W)"; + TEXT[ chinese_simplified ] = "~Fenster"; + TEXT[ chinese_traditional ] = "~Window"; + TEXT[ arabic ] = "~Window"; + TEXT[ turkish ] = "~Pencere"; + }; + MenuItem { + SEPARATOR = TRUE; + }; + MenuItem { + HELP = TRUE; + Identifier = RID_APPHELP; + TEXT = "~Hilfe"; + TEXT [ english_us ] = "~Help"; + HELPTEXT = "Hilfe-Funktionen"; + HELPTEXT [ english_us ] = "Hilfe-Funktionen"; + SUBMENU = Menu ,RID_HELP; + TEXT[ portuguese ] = "~Ajuda"; + TEXT[ russian ] = "~Help"; + TEXT[ greek ] = "~Help"; + TEXT[ dutch ] = "~Help"; + TEXT[ french ] = "~Aide"; + TEXT[ spanish ] = "~Ayuda"; + TEXT[ italian ] = "~Help"; + TEXT[ danish ] = "~Help"; + TEXT[ swedish ] = "~Help"; + TEXT[ polish ] = "~Help "; + TEXT[ portuguese_brazilian ] = "~Hilfe"; + TEXT[ japanese ] = "ÍÙÌß(~H)"; + TEXT[ korean ] = "µµ¿ò¸»(~H)"; + TEXT[ chinese_simplified ] = "~Hilfe"; + TEXT[ chinese_traditional ] = "~Help"; + TEXT[ arabic ] = "~Help"; + TEXT[ turkish ] = "~Yardým"; + }; + }; +}; +Menu RID_FILE { + ITEMLIST = { + MenuItem { + Identifier = RID_FILENEW; + TEXT = "~Neu"; + TEXT [ english_us ] = "~New"; + HELPTEXT = "Neues, leeres Fenster öffnen"; + HELPTEXT [ english_us ] = "Neues, leeres Fenster öffnen"; + AccelKey = KeyCode { Function = KEYFUNC_NEW; }; + TEXT[ portuguese ] = "~Novo"; + TEXT[ russian ] = "~New"; + TEXT[ greek ] = "~New"; + TEXT[ dutch ] = "~Nieuw"; + TEXT[ french ] = "~Nouveau"; + TEXT[ spanish ] = "~Nuevo"; + TEXT[ italian ] = "~New"; + TEXT[ danish ] = "~New"; + TEXT[ swedish ] = "~New"; + TEXT[ polish ] = "~New "; + TEXT[ portuguese_brazilian ] = "~Neu"; + TEXT[ japanese ] = "V‹Kì¬(~N)"; + TEXT[ korean ] = "»õ·Î(~N)"; + TEXT[ chinese_simplified ] = "~Neu"; + TEXT[ chinese_traditional ] = "~New"; + TEXT[ arabic ] = "~New"; + TEXT[ turkish ] = "Y~eni"; + }; + MenuItem { + Identifier = RID_FILEOPEN; + TEXT = "Ö~ffnen..."; + TEXT [ english_us ] = "~Open..."; + HELPTEXT = "Datei in Fenster einlesen"; + HELPTEXT [ english_us ] = "Datei in Fenster einlesen"; + AccelKey = KeyCode { Function = KEYFUNC_OPEN; }; + TEXT[ portuguese ] = "A~brir..."; + TEXT[ russian ] = "~Open..."; + TEXT[ greek ] = "~Open..."; + TEXT[ dutch ] = "O~penen..."; + TEXT[ french ] = "~Ouvrir..."; + TEXT[ spanish ] = "A~brir..."; + TEXT[ italian ] = "~Open..."; + TEXT[ danish ] = "~Open..."; + TEXT[ swedish ] = "~Open..."; + TEXT[ polish ] = "~Open... "; + TEXT[ portuguese_brazilian ] = "Ö~ffnen..."; + TEXT[ japanese ] = "ŠJ‚(~O)..."; + TEXT[ korean ] = "¿±â(~O)..."; + TEXT[ chinese_simplified ] = "Ö~ffnen..."; + TEXT[ chinese_traditional ] = "~Open..."; + TEXT[ arabic ] = "~Open..."; + TEXT[ turkish ] = "~Aç..."; + }; + MenuItem { + SEPARATOR = TRUE; + }; + MenuItem { + Identifier = RID_FILECLOSE; + TEXT = "S~chließen"; + TEXT [ english_us ] = "~Close"; + HELPTEXT = "Fenster schließen"; + HELPTEXT [ english_us ] = "Fenster schließen"; + TEXT[ portuguese ] = "~Fechar"; + TEXT[ russian ] = "~Close"; + TEXT[ greek ] = "~Close"; + TEXT[ dutch ] = "S~luiten"; + TEXT[ french ] = "~Fermer"; + TEXT[ spanish ] = "~Cerrar"; + TEXT[ italian ] = "~Close"; + TEXT[ danish ] = "~Close"; + TEXT[ swedish ] = "~Close"; + TEXT[ polish ] = "~Close "; + TEXT[ portuguese_brazilian ] = "S~chließen"; + TEXT[ japanese ] = "•‚¶‚é(~C)"; + TEXT[ korean ] = "´Ý±â(~C)"; + TEXT[ chinese_simplified ] = "S~chließen"; + TEXT[ chinese_traditional ] = "~Close"; + TEXT[ arabic ] = "~Close"; + TEXT[ turkish ] = "Kapa~t"; + }; + MenuItem { + Identifier = RID_FILESAVE; + TEXT = "~Speichern"; + TEXT [ english_us ] = "~Save"; + HELPTEXT = "Datei unter dem aktuellen Namen speichern"; + HELPTEXT [ english_us ] = "Datei unter dem aktuellen Namen speichern"; + AccelKey = KeyCode { Function = KEYFUNC_SAVE; }; + TEXT[ portuguese ] = "~Guardar"; + TEXT[ russian ] = "~Save"; + TEXT[ greek ] = "~Save"; + TEXT[ dutch ] = "~Opslaan"; + TEXT[ french ] = "~Enregistrer"; + TEXT[ spanish ] = "~Guardar"; + TEXT[ italian ] = "~Save"; + TEXT[ danish ] = "~Save"; + TEXT[ swedish ] = "~Save"; + TEXT[ polish ] = "~Save "; + TEXT[ portuguese_brazilian ] = "~Speichern"; + TEXT[ japanese ] = "•Û‘¶(~S)"; + TEXT[ korean ] = "ÀúÀå(~S)"; + TEXT[ chinese_simplified ] = "~Speichern"; + TEXT[ chinese_traditional ] = "~Save"; + TEXT[ arabic ] = "~Save"; + TEXT[ turkish ] = "Kay~det"; + }; + MenuItem { + Identifier = RID_FILESAVEAS; + TEXT = "Speichern ~unter..."; + TEXT [ english_us ] = "Save~ As..."; + HELPTEXT = "Datei unter einem neuen Namen speichern"; + HELPTEXT [ english_us ] = "Datei unter einem neuen Namen speichern"; + AccelKey = KeyCode { Function = KEYFUNC_SAVEAS; }; + TEXT[ portuguese ] = "Guardar ~como..."; + TEXT[ russian ] = "Save~ As..."; + TEXT[ greek ] = "Save~ As..."; + TEXT[ dutch ] = "Opslaan ~als..."; + TEXT[ french ] = "Enregistrer ~sous..."; + TEXT[ spanish ] = "Guardar ~como..."; + TEXT[ italian ] = "Save ~As..."; + TEXT[ danish ] = "Save~ As..."; + TEXT[ swedish ] = "Save ~As..."; + TEXT[ polish ] = "Save~ As... "; + TEXT[ portuguese_brazilian ] = "Speichern ~unter..."; + TEXT[ japanese ] = "ã‘‚«•Û‘¶(~U)..."; + TEXT[ korean ] = "´Ù¸¥ À̸§À¸·Î ÀúÀå(~ )..."; + TEXT[ chinese_simplified ] = "Speichern ~unter..."; + TEXT[ chinese_traditional ] = "Save ~as..."; + TEXT[ arabic ] = "Save~ As..."; + TEXT[ turkish ] = "~Farklý kaydet..."; + }; + MenuItem { + SEPARATOR = TRUE; + }; + MenuItem { + Identifier = RID_FILELOADLIB; + TEXT = "~Library laden..."; + TEXT [ english_us ] = "~Load Library..."; + HELPTEXT = "Modul-Library laden und aktivieren"; + HELPTEXT [ english_us ] = "Modul-Library laden und aktivieren"; + TEXT[ portuguese ] = "~Carregar biblioteca..."; + TEXT[ russian ] = "~Load Library..."; + TEXT[ greek ] = "~Load Library..."; + TEXT[ dutch ] = "~Library laden..."; + TEXT[ french ] = "Charger la ~bibliothèque..."; + TEXT[ spanish ] = "Cargar ~Biblioteca..."; + TEXT[ italian ] = "~Load Library..."; + TEXT[ danish ] = "~Load Library..."; + TEXT[ swedish ] = "~Load Library..."; + TEXT[ polish ] = "~Load Library... "; + TEXT[ portuguese_brazilian ] = "~Library laden..."; + TEXT[ japanese ] = "ײÌÞר‚̓ǂݞ‚Ý(~L)..."; + TEXT[ korean ] = "·Îµå ¶óÀ̺귯¸®(~L)..."; + TEXT[ chinese_simplified ] = "~Library laden..."; + TEXT[ chinese_traditional ] = "~Load Library..."; + TEXT[ arabic ] = "~Load Library..."; + TEXT[ turkish ] = "~Kitaplýðý yükle"; + }; + MenuItem { + Identifier = RID_FILESAVELIB; + TEXT = "Li~brary speichern..."; + TEXT [ english_us ] = "Save Li~brary..."; + HELPTEXT = "Aktuelle Module als Library speichern"; + HELPTEXT [ english_us ] = "Aktuelle Module als Library speichern"; + TEXT[ portuguese ] = "~Guardar biblioteca..."; + TEXT[ russian ] = "Save Li~brary..."; + TEXT[ greek ] = "Save Li~brary..."; + TEXT[ dutch ] = "Li~brary opslaan..."; + TEXT[ french ] = "En~registrer la bibliothèque..."; + TEXT[ spanish ] = "Guardar Bibli~oteca..."; + TEXT[ italian ] = "Save Li~brary..."; + TEXT[ danish ] = "Save Li~brary..."; + TEXT[ swedish ] = "Save Li~brary..."; + TEXT[ polish ] = "Save Li~brary... "; + TEXT[ portuguese_brazilian ] = "Li~brary speichern..."; + TEXT[ japanese ] = "ײÌÞר‚̕ۑ¶(~B)..."; + TEXT[ korean ] = "¶óÀ̺귯¸® ÀúÀå(~B)..."; + TEXT[ chinese_simplified ] = "Li~brary speichern..."; + TEXT[ chinese_traditional ] = "Save L~ibrary..."; + TEXT[ arabic ] = "Save Li~brary..."; + TEXT[ turkish ] = "Kitaplýðý kaydet..."; + }; + MenuItem { + SEPARATOR = TRUE; + }; + MenuItem { + Identifier = RID_FILEPRINT; + TEXT = "~Drucken"; + TEXT [ english_us ] = "~Print"; + HELPTEXT = "Datei ausdrucken"; + HELPTEXT [ english_us ] = "Datei ausdrucken"; + TEXT[ portuguese ] = "~Imprimir"; + TEXT[ russian ] = "~Print"; + TEXT[ greek ] = "~Print"; + TEXT[ dutch ] = "~Afdrukken"; + TEXT[ french ] = "~Imprimer"; + TEXT[ spanish ] = "~Imprimir"; + TEXT[ italian ] = "~Print"; + TEXT[ danish ] = "~Print"; + TEXT[ swedish ] = "~Print"; + TEXT[ polish ] = "~Print "; + TEXT[ portuguese_brazilian ] = "~Drucken"; + TEXT[ japanese ] = "ˆóü(~P)"; + TEXT[ korean ] = "Àμâ(~P)"; + TEXT[ chinese_simplified ] = "~Drucken"; + TEXT[ chinese_traditional ] = "~Print"; + TEXT[ arabic ] = "~Print"; + TEXT[ turkish ] = "~Yazdýr"; + }; + MenuItem { + Identifier = RID_FILESETUP; + TEXT = "Druckereinstellun~g..."; + TEXT [ english_us ] = "P~rinter Setting..."; + HELPTEXT = "Drucker einrichten"; + HELPTEXT [ english_us ] = "Drucker einrichten"; + TEXT[ portuguese ] = "Configurar ~impressora..."; + TEXT[ russian ] = "P~rinter Setup..."; + TEXT[ greek ] = "P~rinter Setup..."; + TEXT[ dutch ] = "Printerinstellin~g..."; + TEXT[ french ] = "Para~métrage de l'imprimante..."; + TEXT[ spanish ] = "~Configuración de impresora..."; + TEXT[ italian ] = "P~rinter Setup..."; + TEXT[ danish ] = "P~rinter Setup..."; + TEXT[ swedish ] = "P~rinter Setup..."; + TEXT[ polish ] = "P~rinter Setup... "; + TEXT[ portuguese_brazilian ] = "Druckereinstellun~g..."; + TEXT[ japanese ] = "ˆóüÝ’è(~R)..."; + TEXT[ korean ] = "ÇÁ¸°ÅÍ ¼³Á¤(~R)..."; + TEXT[ chinese_simplified ] = "Druckereinstellun~g..."; + TEXT[ chinese_traditional ] = "~Printer Setup..."; + TEXT[ arabic ] = "P~rinter Setup..."; + TEXT[ turkish ] = "Yazýcý ayarlarý..."; + }; + MenuItem { + SEPARATOR = TRUE; + }; + MenuItem { + Identifier = RID_QUIT; + TEXT = "~Beenden"; + TEXT [ english_us ] = "~Exit"; + HELPTEXT = "Programm beenden"; + HELPTEXT [ english_us ] = "Programm beenden"; + AccelKey = KeyCode { Function = KEYFUNC_QUIT; }; + TEXT[ portuguese ] = "~Sair"; + TEXT[ russian ] = "Âûõîä"; + TEXT[ greek ] = "~Exit"; + TEXT[ dutch ] = "~Beëindigen"; + TEXT[ french ] = "~Quitter"; + TEXT[ spanish ] = "~Terminar"; + TEXT[ italian ] = "~Exit"; + TEXT[ danish ] = "~Exit"; + TEXT[ swedish ] = "~Exit"; + TEXT[ polish ] = "~Exit "; + TEXT[ portuguese_brazilian ] = "~Beenden"; + TEXT[ japanese ] = "I—¹(~X)"; + TEXT[ korean ] = "Á¾·á(~E)"; + TEXT[ chinese_simplified ] = "~Beenden"; + TEXT[ chinese_traditional ] = "~Exit"; + TEXT[ arabic ] = "~Exit"; + TEXT[ turkish ] = "Çý~kýþ"; + }; + }; +}; +Menu RID_EDIT { + ITEMLIST = { + MenuItem { + Identifier = RID_EDITUNDO; + TEXT = "~Rückgängig"; + TEXT [ english_us ] = "~Undo"; + HELPTEXT = "Die letzte Änderung rückgängig machen"; + HELPTEXT [ english_us ] = "Die letzte Änderung rückgängig machen"; +// AccelKey = KeyCode { Function = KEYFUNC_CUT; }; + TEXT[ portuguese ] = "~Desfazer"; + TEXT[ russian ] = "~Undo"; + TEXT[ greek ] = "~Undo"; + TEXT[ dutch ] = "~Ongedaan"; + TEXT[ french ] = "~Annuler"; + TEXT[ spanish ] = "~Deshacer"; + TEXT[ italian ] = "~Undo"; + TEXT[ danish ] = "~Undo"; + TEXT[ swedish ] = "~Undo"; + TEXT[ polish ] = "~Undo "; + TEXT[ portuguese_brazilian ] = "~Rückgängig"; + TEXT[ japanese ] = "Œ³‚É–ß‚·(~U)"; + TEXT[ korean ] = "½ÇÇàÃë¼Ò(~U)"; + TEXT[ chinese_simplified ] = "~Rückgängig"; + TEXT[ chinese_traditional ] = "~Undo"; + TEXT[ arabic ] = "ÊÑÇÌÚ"; + TEXT[ turkish ] = "Geri ~al"; + }; + MenuItem { + Identifier = RID_EDITREDO; + TEXT = "~Wiederholen"; + TEXT [ english_us ] = "~Repeat"; + HELPTEXT = "Die zuletzt rückgängig gemachte Änderung wiederherstellen"; + HELPTEXT [ english_us ] = "Die zuletzt rückgängig gemachte Änderung wiederherstellen"; +// AccelKey = KeyCode { Function = KEYFUNC_CUT; }; + TEXT[ portuguese ] = "~Repetir"; + TEXT[ russian ] = "~Repeat"; + TEXT[ greek ] = "~Repeat"; + TEXT[ dutch ] = "~Herhalen"; + TEXT[ french ] = "~Répéter"; + TEXT[ spanish ] = "~Repetir"; + TEXT[ italian ] = "~Repeat"; + TEXT[ danish ] = "~Repeat"; + TEXT[ swedish ] = "~Repeat"; + TEXT[ polish ] = "~Repeat "; + TEXT[ portuguese_brazilian ] = "~Wiederholen"; + TEXT[ japanese ] = "‚â‚è’¼‚µ(~R)"; + TEXT[ korean ] = "Àç½ÇÇà(~R)"; + TEXT[ chinese_simplified ] = "~Wiederholen"; + TEXT[ chinese_traditional ] = "~Repeat"; + TEXT[ arabic ] = "~Repeat"; + TEXT[ turkish ] = "~Yinele"; + }; + MenuItem { + SEPARATOR = TRUE; + }; + MenuItem { + Identifier = RID_EDITCUT; + TEXT = "~Ausschneiden"; + TEXT [ english_us ] = "~Cut"; + HELPTEXT = "Markierten Text in Zwischenablage ablegen"; + HELPTEXT [ english_us ] = "Markierten Text in Zwischenablage ablegen"; + AccelKey = KeyCode { Function = KEYFUNC_CUT; }; + TEXT[ portuguese ] = "Cor~tar"; + TEXT[ russian ] = "~Cut"; + TEXT[ greek ] = "~Cut"; + TEXT[ dutch ] = "~Knippen"; + TEXT[ french ] = "~Couper"; + TEXT[ spanish ] = "~Cortar"; + TEXT[ italian ] = "~Cut"; + TEXT[ danish ] = "~Cut"; + TEXT[ swedish ] = "~Cut"; + TEXT[ polish ] = "~Cut "; + TEXT[ portuguese_brazilian ] = "~Ausschneiden"; + TEXT[ japanese ] = "Ø‚èŽæ‚è(~T)"; + TEXT[ korean ] = "Àß¶ó³»±â(~C)"; + TEXT[ chinese_simplified ] = "~Ausschneiden"; + TEXT[ chinese_traditional ] = "~Cut"; + TEXT[ arabic ] = "~Cut"; + TEXT[ turkish ] = "Kes"; + }; + MenuItem { + Identifier = RID_EDITCOPY; + TEXT = "~Kopieren"; + TEXT [ english_us ] = "~Copy"; + HELPTEXT = "Markierten Text in Zwischenablage kopieren"; + HELPTEXT [ english_us ] = "Markierten Text in Zwischenablage kopieren"; + AccelKey = KeyCode { Function = KEYFUNC_COPY; }; + TEXT[ portuguese ] = "~Copiar"; + TEXT[ russian ] = "~Copy"; + TEXT[ greek ] = "~Copy"; + TEXT[ dutch ] = "~Kopiëren"; + TEXT[ french ] = "Co~pier"; + TEXT[ spanish ] = "Copiar"; + TEXT[ italian ] = "~Copy"; + TEXT[ danish ] = "~Copy"; + TEXT[ swedish ] = "~Copy"; + TEXT[ polish ] = "~Copy "; + TEXT[ portuguese_brazilian ] = "~Kopieren"; + TEXT[ japanese ] = "ºËß°(~C)"; + TEXT[ korean ] = "º¹»ç(~C)"; + TEXT[ chinese_simplified ] = "~Kopieren"; + TEXT[ chinese_traditional ] = "~Copy"; + TEXT[ arabic ] = "~Copy"; + TEXT[ turkish ] = "Kopyala"; + }; + MenuItem { + Identifier = RID_EDITPASTE; + TEXT = "E~infügen"; + TEXT [ english_us ] = "~Paste"; + HELPTEXT = "Inhalt der Zwischenablage einfügen"; + HELPTEXT [ english_us ] = "Inhalt der Zwischenablage einfügen"; + AccelKey = KeyCode { Function = KEYFUNC_PASTE; }; + TEXT[ portuguese ] = "In~serir"; + TEXT[ russian ] = "~Paste"; + TEXT[ greek ] = "~Paste"; + TEXT[ dutch ] = "I~nvoegen"; + TEXT[ french ] = "C~oller"; + TEXT[ spanish ] = "In~sertar"; + TEXT[ italian ] = "~Paste"; + TEXT[ danish ] = "~Paste"; + TEXT[ swedish ] = "~Paste"; + TEXT[ polish ] = "~Paste "; + TEXT[ portuguese_brazilian ] = "E~infügen"; + TEXT[ japanese ] = "“\\‚è•t‚¯(~P)"; + TEXT[ korean ] = "ºÙ¿©³Ö±â(~P)"; + TEXT[ chinese_simplified ] = "E~infügen"; + TEXT[ chinese_traditional ] = "~Paste"; + TEXT[ arabic ] = "~Insert"; + TEXT[ turkish ] = "Ekle"; + }; + MenuItem { + Identifier = RID_EDITDEL; + TEXT = "~Löschen"; + TEXT [ english_us ] = "~Delete"; + HELPTEXT = "Markierten Text löschen"; + HELPTEXT [ english_us ] = "Markierten Text löschen"; + AccelKey = KeyCode { Function = KEYFUNC_DELETE; }; + TEXT[ portuguese ] = "E~liminar"; + TEXT[ russian ] = "~Delete"; + TEXT[ greek ] = "~Delete"; + TEXT[ dutch ] = "~Wissen"; + TEXT[ french ] = "~Supprimer"; + TEXT[ spanish ] = "~Eliminar"; + TEXT[ italian ] = "~Delete"; + TEXT[ danish ] = "~Delete"; + TEXT[ swedish ] = "~Delete"; + TEXT[ polish ] = "~Delete "; + TEXT[ portuguese_brazilian ] = "~Löschen"; + TEXT[ japanese ] = "íœ(~D)"; + TEXT[ korean ] = "Áö¿ì±â(~D)"; + TEXT[ chinese_simplified ] = "~Löschen"; + TEXT[ chinese_traditional ] = "~Delete"; + TEXT[ arabic ] = "~Delete"; + TEXT[ turkish ] = "Sil"; + }; + MenuItem { + SEPARATOR = TRUE; + }; + MenuItem { + Identifier = RID_EDITSEARCH; + TEXT = "~Suchen..."; + TEXT [ english_us ] = "~Find..."; + HELPTEXT = "Textstelle suchen"; + HELPTEXT [ english_us ] = "Textstelle suchen"; + AccelKey = KeyCode { Function = KEYFUNC_FIND; }; + TEXT[ portuguese ] = "~Localizar..."; + TEXT[ russian ] = "~Find..."; + TEXT[ greek ] = "~Find..."; + TEXT[ dutch ] = "~Zoeken..."; + TEXT[ french ] = "~Rechercher..."; + TEXT[ spanish ] = "~Buscar..."; + TEXT[ italian ] = "~Find..."; + TEXT[ danish ] = "~Find..."; + TEXT[ swedish ] = "~Find..."; + TEXT[ polish ] = "~Find... "; + TEXT[ portuguese_brazilian ] = "~Suchen..."; + TEXT[ japanese ] = "ŒŸõ(~F)..."; + TEXT[ korean ] = "ã±â(~F)..."; + TEXT[ chinese_simplified ] = "~Suchen..."; + TEXT[ chinese_traditional ] = "~Find..."; + TEXT[ arabic ] = "~Find..."; + TEXT[ turkish ] = "Ara..."; + }; + MenuItem { + Identifier = RID_EDITREPLACE; + TEXT = "~Ersetzen..."; + TEXT [ english_us ] = "~Replace..."; + HELPTEXT = "Textstelle durch anderen Text ersetzen"; + HELPTEXT [ english_us ] = "Textstelle durch anderen Text ersetzen"; + TEXT[ portuguese ] = "~Substituir..."; + TEXT[ russian ] = "~Replace..."; + TEXT[ greek ] = "~Replace..."; + TEXT[ dutch ] = "~Vervangen..."; + TEXT[ french ] = "R~emplacer..."; + TEXT[ spanish ] = "~Sustituir..."; + TEXT[ italian ] = "~Replace..."; + TEXT[ danish ] = "~Replace..."; + TEXT[ swedish ] = "~Replace..."; + TEXT[ polish ] = "~Replace... "; + TEXT[ portuguese_brazilian ] = "~Ersetzen..."; + TEXT[ japanese ] = "’uŠ·(~R)..."; + TEXT[ korean ] = "¹Ù²Ù±â(~R)..."; + TEXT[ chinese_simplified ] = "~Ersetzen..."; + TEXT[ chinese_traditional ] = "~Replace..."; + TEXT[ arabic ] = "~Replace..."; + TEXT[ turkish ] = "Deðiþtir..."; + }; + MenuItem { + Identifier = RID_EDITREPEAT; + TEXT = "S~uchen Wiederholen"; + TEXT [ english_us ] = "Repeat S~earch"; + HELPTEXT = "Suchen/ersetzen wiederholen"; + HELPTEXT [ english_us ] = "Suchen/ersetzen wiederholen"; + AccelKey = KeyCode { Code = KEY_F3; }; +// AccelKey = KeyCode { Function = KEYFUNC_REPEAT; }; + TEXT[ portuguese ] = "~Repetir Localizar"; + TEXT[ russian ] = "Repeat S~earch"; + TEXT[ greek ] = "Repeat S~earch"; + TEXT[ dutch ] = "Z~oeken herhalen"; + TEXT[ french ] = "Ré~péter la recherche"; + TEXT[ spanish ] = "~Repetir búsqueda"; + TEXT[ italian ] = "Repeat S~earch"; + TEXT[ danish ] = "Repeat S~earch"; + TEXT[ swedish ] = "Repeat S~earch"; + TEXT[ polish ] = "Repeat S~earch "; + TEXT[ portuguese_brazilian ] = "S~uchen Wiederholen"; + TEXT[ japanese ] = "ŒŸõ‚ÌŒJ‚è•Ô‚µ(~U)"; + TEXT[ korean ] = "´Ù½Ã ã±â(~E)"; + TEXT[ chinese_simplified ] = "S~uchen Wiederholen"; + TEXT[ chinese_traditional ] = "Repeat S~earch"; + TEXT[ arabic ] = "Repeat S~earch"; + TEXT[ turkish ] = "Yeniden ara"; + }; + }; +}; +Menu RID_RUN { + ITEMLIST = { + MenuItem { + Identifier = RID_RUNCOMPILE; + TEXT = "~Compilieren"; + TEXT [ english_us ] = "~Compile"; + HELPTEXT = "Programm übersetzen"; + HELPTEXT [ english_us ] = "Programm übersetzen"; + AccelKey = KeyCode { Code = KEY_F5; Shift = TRUE; }; + TEXT[ portuguese ] = "~Compilar"; + TEXT[ russian ] = "~Compile"; + TEXT[ greek ] = "~Compile"; + TEXT[ dutch ] = "~Compileren"; + TEXT[ french ] = "~Compiler"; + TEXT[ spanish ] = "~Compilar"; + TEXT[ italian ] = "~Compile"; + TEXT[ danish ] = "~Compile"; + TEXT[ swedish ] = "~Compile"; + TEXT[ polish ] = "~Compile "; + TEXT[ portuguese_brazilian ] = "~Compilieren"; + TEXT[ japanese ] = "ºÝÊß²Ù‚ðs‚¤"; + TEXT[ korean ] = "ÄÄÆÄÀÏ(~C)"; + TEXT[ chinese_simplified ] = "~Compilieren"; + TEXT[ chinese_traditional ] = "~Compile"; + TEXT[ arabic ] = "~Compile"; + TEXT[ turkish ] = "~Derle"; + }; + MenuItem { + Identifier = RID_RUNDISAS; + TEXT = "~Disassemblieren"; + TEXT [ english_us ] = "~Disassemble"; + HELPTEXT = "Programm disassemblieren und Ergebnis ins Clipboard stellen"; + HELPTEXT [ english_us ] = "Programm disassemblieren und Ergebnis ins Clipboard stellen"; + TEXT[ portuguese ] = "~Descodificar"; + TEXT[ russian ] = "~Disassemble"; + TEXT[ greek ] = "~Disassemble"; + TEXT[ dutch ] = "~Disassembleren"; + TEXT[ french ] = "~Désassembler"; + TEXT[ spanish ] = "~Desensamblar"; + TEXT[ italian ] = "~Disassemble"; + TEXT[ danish ] = "~Disassemble"; + TEXT[ swedish ] = "~Disassemble"; + TEXT[ polish ] = "~Disassemble "; + TEXT[ portuguese_brazilian ] = "~Disassemblieren"; + TEXT[ japanese ] = "~Disassemble"; + TEXT[ korean ] = "ÇØÃ¼(~D)"; + TEXT[ chinese_simplified ] = "~Disassemblieren"; + TEXT[ chinese_traditional ] = "~Disassemble"; + TEXT[ arabic ] = "~Disassemble"; + TEXT[ turkish ] = "~Disassemble"; + }; + MenuItem { + Identifier = RID_RUNSTART; + TEXT = "~Start"; + TEXT [ english_us ] = "~Start"; + HELPTEXT = "Programm starten"; + HELPTEXT [ english_us ] = "Programm starten"; + AccelKey = KeyCode { Code = KEY_F5; }; + TEXT[ portuguese ] = "~Iniciar"; + TEXT[ russian ] = "~Start"; + TEXT[ greek ] = "~Start"; + TEXT[ dutch ] = "~Start"; + TEXT[ french ] = "~Démarrer"; + TEXT[ spanish ] = "~Iniciar"; + TEXT[ italian ] = "~Start"; + TEXT[ danish ] = "~Start"; + TEXT[ swedish ] = "~Start"; + TEXT[ polish ] = "~Start"; + TEXT[ portuguese_brazilian ] = "~Start"; + TEXT[ japanese ] = "½À°Ä"; + TEXT[ korean ] = "½ÃÀÛ(~S)"; + TEXT[ chinese_simplified ] = "~Start"; + TEXT[ chinese_traditional ] = "~Start"; + TEXT[ arabic ] = "~Start"; + TEXT[ turkish ] = "~Baþlat"; + }; + MenuItem { + Identifier = RID_RUNSTEPINTO; + TEXT = "~Einzelschritt"; + TEXT [ english_us ] = "~Single Stepping"; + HELPTEXT = "Ein Programmschritt"; + HELPTEXT [ english_us ] = "Ein Programmschritt"; + AccelKey = KeyCode { Code = KEY_F8; }; + TEXT[ portuguese ] = "Pa~sso a passo"; + TEXT[ russian ] = "~Single Stepping"; + TEXT[ greek ] = "~Single Stepping"; + TEXT[ dutch ] = "~Stap voor stap"; + TEXT[ french ] = "É~tape par étape"; + TEXT[ spanish ] = "~Paso a paso"; + TEXT[ italian ] = "~Single Stepping"; + TEXT[ danish ] = "~Single Stepping"; + TEXT[ swedish ] = "~Single stepping"; + TEXT[ polish ] = "~Single Stepping "; + TEXT[ portuguese_brazilian ] = "~Einzelschritt"; + TEXT[ japanese ] = "~Single Stepping"; + TEXT[ korean ] = "°³º° ´Ü°è(~S)"; + TEXT[ chinese_simplified ] = "~Einzelschritt"; + TEXT[ chinese_traditional ] = "~Single Stepping"; + TEXT[ arabic ] = "~Single Stepping"; + TEXT[ turkish ] = "~Tek adým"; + }; + MenuItem { + Identifier = RID_RUNSTEPOVER; + TEXT = "Einzelschritt über ~Prozeduren"; + TEXT [ english_us ] = "Si~ngle Step over Procedure"; + HELPTEXT = "Ein Programmschritt, ohne Prozeduren"; + HELPTEXT [ english_us ] = "Ein Programmschritt, ohne Prozeduren"; + AccelKey = KeyCode { Code = KEY_F10; }; + TEXT[ portuguese ] = "~Procedimentos passo a passo"; + TEXT[ russian ] = "Si~ngle Step over Procedure"; + TEXT[ greek ] = "Si~ngle Step over Procedure"; + TEXT[ dutch ] = "Stap voor stap ~procedures"; + TEXT[ french ] = "~Procédures étape par étape"; + TEXT[ spanish ] = "Procesos ~paso a paso"; + TEXT[ italian ] = "Si~ngle Stepping (subroutines excluded)"; + TEXT[ danish ] = "Si~ngle Step over Procedure"; + TEXT[ swedish ] = "Si~ngle Step over Procedure"; + TEXT[ polish ] = "Si~ngle Step over Procedure"; + TEXT[ portuguese_brazilian ] = "Einzelschritt über ~Prozeduren"; + TEXT[ japanese ] = "Si~ngle Stepping (subroutines excluded)"; + TEXT[ korean ] = "ÇÁ·Î½ÃÀú À§ÀÇ °³º° ´Ü°è(~N)"; + TEXT[ chinese_simplified ] = "Einzelschritt über ~Prozeduren"; + TEXT[ chinese_traditional ] = "Si~ngle Step over Procedure"; + TEXT[ arabic ] = "Si~ngle Step over Procedure"; + TEXT[ turkish ] = "Si~ngle Step over Procedure"; + }; +// MenuItem { +// Identifier = RID_RUNTOCURSOR; +// TEXT = "Ausführen ~bis Cursor"; +// TEXT [ english_us ] = "Ausführen ~bis Cursor"; +// HELPTEXT = "Ausführen des Programmes bis zur aktuellen Cursorposition"; +// HELPTEXT [ english_us ] = "Ausführen des Programmes bis zur aktuellen Cursorposition"; +// AccelKey = KeyCode { Code = KEY_F7; }; +// }; + MenuItem { + Identifier = RID_TOGLEBRKPNT; + TEXT = "Brechpunkt setzen/löschen"; + TEXT [ english_us ] = "Set / Delete Break Point"; + HELPTEXT = "Brechpunkt setzen/löschen an der aktuellen Cursorposition"; + HELPTEXT [ english_us ] = "Brechpunkt setzen/löschen an der aktuellen Cursorposition"; + AccelKey = KeyCode { Code = KEY_F9; }; + TEXT[ portuguese ] = "Colocar/Eliminar ponto de quebra "; + TEXT[ russian ] = "Set / Delete Break Point"; + TEXT[ greek ] = "Set / Delete Break Point"; + TEXT[ dutch ] = "Break point zetten/wissen"; + TEXT[ french ] = "Placer / supprimer un point d'arrêt (breakpoint)"; + TEXT[ spanish ] = "Poner/eliminar punto de detención"; + TEXT[ italian ] = "Set / Delete Break Point"; + TEXT[ danish ] = "Set / Delete Break Point"; + TEXT[ swedish ] = "Set / Delete Break Point"; + TEXT[ polish ] = "Set / Delete Break Point"; + TEXT[ portuguese_brazilian ] = "Brechpunkt setzen/löschen"; + TEXT[ japanese ] = "Set / Delete Break Point"; + TEXT[ korean ] = "Break Æ÷ÀÎÆ® ¼³Á¤/»èÁ¦"; + TEXT[ chinese_simplified ] = "Brechpunkt setzen/löschen"; + TEXT[ chinese_traditional ] = "Set / Delete Break Point"; + TEXT[ arabic ] = "Set / Delete Break Point"; + TEXT[ turkish ] = "Set / Delete Break Point"; + }; + MenuItem { + Identifier = RID_RUNBREAK; + TEXT = "~Unterbrechen"; + TEXT [ english_us ] = "~Interrupt"; + HELPTEXT = "Programmlauf unterbrechen"; + HELPTEXT [ english_us ] = "Programmlauf unterbrechen"; + AccelKey = KeyCode { Code = KEY_F5; Modifier1 = TRUE; }; + TEXT[ portuguese ] = "~Interromper"; + TEXT[ russian ] = "~Interrupt"; + TEXT[ greek ] = "~Interrupt"; + TEXT[ dutch ] = "~Onderbreken"; + TEXT[ french ] = "~Interrompre"; + TEXT[ spanish ] = "Interru~mpir"; + TEXT[ italian ] = "~Interrupt"; + TEXT[ danish ] = "~Interrupt"; + TEXT[ swedish ] = "~Interrupt"; + TEXT[ polish ] = "~Interrupt "; + TEXT[ portuguese_brazilian ] = "~Unterbrechen"; + TEXT[ japanese ] = "’†’f"; + TEXT[ korean ] = "ÀÎÅÍ·´Æ®(~I)"; + TEXT[ chinese_simplified ] = "~Unterbrechen"; + TEXT[ chinese_traditional ] = "~Interrupt"; + TEXT[ arabic ] = "~Interrupt"; + TEXT[ turkish ] = "~Duraklat"; + }; + MenuItem { + Identifier = RID_RUNSTOP; + TEXT = "~Abbrechen"; + TEXT [ english_us ] = "~Cancel"; + HELPTEXT = "Programmlauf abbrechen"; + HELPTEXT [ english_us ] = "Programmlauf abbrechen"; + TEXT[ portuguese ] = "~Cancelar"; + TEXT[ russian ] = "~Cancel"; + TEXT[ greek ] = "~Cancel"; + TEXT[ dutch ] = "~Stoppen"; + TEXT[ french ] = "~Annuler"; + TEXT[ spanish ] = "~Cancelar"; + TEXT[ italian ] = "~Cancel"; + TEXT[ danish ] = "~Cancel"; + TEXT[ swedish ] = "~Cancel"; + TEXT[ polish ] = "~Cancel"; + TEXT[ portuguese_brazilian ] = "~Abbrechen"; + TEXT[ japanese ] = "·¬Ý¾Ù"; + TEXT[ korean ] = "Ãë¼Ò(~C)"; + TEXT[ chinese_simplified ] = "~Abbrechen"; + TEXT[ chinese_traditional ] = "~Cancel"; + TEXT[ arabic ] = "~Cancel"; + TEXT[ turkish ] = "~Ýptal"; + }; + MenuItem { + Identifier = RID_RUNNEXTERR; + TEXT = "~Nächster Fehler"; + TEXT [ english_us ] = "~Next Error"; + HELPTEXT = "Den nächsten Programmfehler anzeigen"; + HELPTEXT [ english_us ] = "Den nächsten Programmfehler anzeigen"; + AccelKey = KeyCode { Code = KEY_F8; Shift = TRUE; }; + TEXT[ portuguese ] = "Erro ~seguinte"; + TEXT[ russian ] = "~Next Error"; + TEXT[ greek ] = "~Next Error"; + TEXT[ dutch ] = "~Volgende fout"; + TEXT[ french ] = "~Erreur suivante"; + TEXT[ spanish ] = "~Error siguiente"; + TEXT[ italian ] = "Errore successivo"; + TEXT[ danish ] = "~Next Error"; + TEXT[ swedish ] = "~Next Error"; + TEXT[ polish ] = "~Next Error"; + TEXT[ portuguese_brazilian ] = "~Nächster Fehler"; + TEXT[ japanese ] = "ŽŸ‚Ì´×°"; + TEXT[ korean ] = "´ÙÀ½ ¿À·ù(~N)"; + TEXT[ chinese_simplified ] = "~Nächster Fehler"; + TEXT[ chinese_traditional ] = "~Next Error"; + TEXT[ arabic ] = "~Next Error"; + TEXT[ turkish ] = "~Sonraki hata"; + }; + MenuItem { + Identifier = RID_RUNPREVERR; + TEXT = "~Vorheriger Fehler"; + TEXT [ english_us ] = "~Previous Error"; + HELPTEXT = "Den vorherigen Programmfehler anzeigen"; + HELPTEXT [ english_us ] = "Den vorherigen Programmfehler anzeigen"; + AccelKey = KeyCode { Code = KEY_F7; Shift = TRUE; }; + TEXT[ portuguese ] = "Erro ~anterior"; + TEXT[ russian ] = "~Previous Error"; + TEXT[ greek ] = "~Previous Error"; + TEXT[ dutch ] = "~Vorige fout"; + TEXT[ french ] = "~Erreur précédente"; + TEXT[ spanish ] = "Error ~anterior"; + TEXT[ italian ] = "~Previous error"; + TEXT[ danish ] = "~Previous Error"; + TEXT[ swedish ] = "~Previous Error"; + TEXT[ polish ] = "~Previous Error"; + TEXT[ portuguese_brazilian ] = "~Vorheriger Fehler"; + TEXT[ japanese ] = "‘O‚Ì´×°"; + TEXT[ korean ] = "ÀÌÀü ¿À·ù(~P)"; + TEXT[ chinese_simplified ] = "~Vorheriger Fehler"; + TEXT[ chinese_traditional ] = "~Previous Error"; + TEXT[ arabic ] = "~Previous Error"; + TEXT[ turkish ] = "~Önceki hata"; + }; + MenuItem { + SEPARATOR = TRUE; + }; + }; +}; +// Wird nur beim Test Tool eingef³gt + +// unter Folgendem Name +String RID_TT_EXTRAS_NAME +{ + Text = "E~xtras"; + Text[ english_us ] = "E~xtras"; + Text[ portuguese ] = "~Ferramentas"; + Text[ russian ] = "Áîëüøå"; + Text[ greek ] = "E~xtras"; + Text[ dutch ] = "E~xtra"; + Text[ french ] = "~Outils"; + Text[ spanish ] = "~Herramientas"; + Text[ italian ] = "E~xtras"; + Text[ danish ] = "E~xtras"; + Text[ swedish ] = "E~xtras"; + Text[ polish ] = "Narzêdzia"; + Text[ portuguese_brazilian ] = "E~xtras"; + Text[ japanese ] = "E~xtras"; + Text[ korean ] = "º°µµ Ãß°¡(~X)"; + Text[ chinese_simplified ] = "E~xtras"; + Text[ chinese_traditional ] = "E~xtras"; + Text[ arabic ] = "E~xtras"; + Text[ turkish ] = "Araçlar"; +}; + +Menu RID_TT_EXTRAS { + ITEMLIST = { + MenuItem { + Identifier = RID_OPTIONS; + TEXT = "~Einstellungen"; + TEXT [ english_us ] = "~Settings"; + HELPTEXT = "Einstellungen f³r das Test Tool"; + HELPTEXT [ english_us ] = "Einstellungen f³r das Test Tool"; + TEXT[ portuguese ] = "~Definições"; + TEXT[ russian ] = "~Settings"; + TEXT[ greek ] = "~Settings"; + TEXT[ dutch ] = "~Instellingen"; + TEXT[ french ] = "~Paramètres"; + TEXT[ spanish ] = "~Configuración"; + TEXT[ italian ] = "~Settings"; + TEXT[ danish ] = "~Settings"; + TEXT[ swedish ] = "~Settings"; + TEXT[ polish ] = "~Settings"; + TEXT[ portuguese_brazilian ] = "~Einstellungen"; + TEXT[ japanese ] = "Ý’è"; + TEXT[ korean ] = "¼³Á¤(~S)"; + TEXT[ chinese_simplified ] = "~Einstellungen"; + TEXT[ chinese_traditional ] = "~Settings"; + TEXT[ arabic ] = "~Settings"; + TEXT[ turkish ] = "~Ayarlar"; + }; + MenuItem { + Identifier = RID_DECLARE_HELPER; + TEXT = "~Dialoge aufnehmen"; + TEXT [ english_us ] = "~Include Dialogs"; + HELPTEXT = "Modus zum aufnehmen der Dialoge aktivieren"; + HELPTEXT [ english_us ] = "Modus zum aufnehmen der Dialoge aktivieren"; + TEXT[ portuguese ] = "~Incluir caixas de diálogo"; + TEXT[ russian ] = "~Include Dialogs"; + TEXT[ greek ] = "~Include Dialogs"; + TEXT[ dutch ] = "~Dialogen opnemen"; + TEXT[ french ] = "Ajouter une boîte de ~dialogue"; + TEXT[ spanish ] = "In~cluir diálogos"; + TEXT[ italian ] = "~Include Dialogs"; + TEXT[ danish ] = "~Include Dialogs"; + TEXT[ swedish ] = "~Include Dialogs"; + TEXT[ polish ] = "~Include Dialogs"; + TEXT[ portuguese_brazilian ] = "~Dialoge aufnehmen"; + TEXT[ japanese ] = "ÀÞ²±Û¸Þ‚ðŽn‚ß‚é"; + TEXT[ korean ] = "´ÙÀ̾ó·Î±× Æ÷ÇÔ(~I)"; + TEXT[ chinese_simplified ] = "~Dialoge aufnehmen"; + TEXT[ chinese_traditional ] = "~Include Dialogs"; + TEXT[ arabic ] = "~Include Dialogs"; + TEXT[ turkish ] = "~Diyaloglarý ekle"; + }; + }; +}; +Menu RID_WINDOW { + ITEMLIST = { + MenuItem { + Identifier = RID_WINCASCADE; + TEXT = "~Überlappend"; + TEXT [ english_us ] = "~Overlapping"; + HELPTEXT = "Fenster überlappend anordnen"; + HELPTEXT [ english_us ] = "Fenster überlappend anordnen"; + TEXT[ portuguese ] = "Em ~cascata"; + TEXT[ russian ] = "~Overlapping"; + TEXT[ greek ] = "~Overlapping"; + TEXT[ dutch ] = "~Overlappend"; + TEXT[ french ] = "~Cascade"; + TEXT[ spanish ] = "~Cascada"; + TEXT[ italian ] = "~Overlapping"; + TEXT[ danish ] = "~Overlapping"; + TEXT[ swedish ] = "~Overlapping"; + TEXT[ polish ] = "~Overlapping"; + TEXT[ portuguese_brazilian ] = "~Überlappend"; + TEXT[ japanese ] = "d‚˂ĕ\\ަ"; + TEXT[ korean ] = "°ãÄ¡±â(~O)"; + TEXT[ chinese_simplified ] = "~Überlappend"; + TEXT[ chinese_traditional ] = "~Overlapping"; + TEXT[ arabic ] = "~Overlapping"; + TEXT[ turkish ] = "B~asamakla"; + }; + MenuItem { + Identifier = RID_WINTILE; + TEXT = "~Nebeneinander"; + TEXT [ english_us ] = "~Tile"; + HELPTEXT = "Fenster nebeneinander anordnen"; + HELPTEXT [ english_us ] = "Fenster nebeneinander anordnen"; + TEXT[ portuguese ] = "~Lado a lado"; + TEXT[ russian ] = "~Tile"; + TEXT[ greek ] = "~Tile"; + TEXT[ dutch ] = "~Naast elkaar"; + TEXT[ french ] = "Ca~rrelage"; + TEXT[ spanish ] = "~Mosaico"; + TEXT[ italian ] = "~Tile"; + TEXT[ danish ] = "~Tile"; + TEXT[ swedish ] = "~Tile"; + TEXT[ polish ] = "~Tile"; + TEXT[ portuguese_brazilian ] = "~Nebeneinander"; + TEXT[ japanese ] = "•À‚ׂĕ\\ަ"; + TEXT[ korean ] = "â ³ª´©±â(~T)"; + TEXT[ chinese_simplified ] = "~Nebeneinander"; + TEXT[ chinese_traditional ] = "~Tiled"; + TEXT[ arabic ] = "~Tiled"; + TEXT[ turkish ] = "~Yan yana"; + }; + MenuItem { + Identifier = RID_WINTILEHORZ; + TEXT = "~Horizontal anordnen"; + TEXT [ english_us ] = "~Arrange Horizontally"; + HELPTEXT = "Fenster horizontal übereinander anordnen"; + HELPTEXT [ english_us ] = "Fenster horizontal übereinander anordnen"; + TEXT[ portuguese ] = "~Dispor na horizontal"; + TEXT[ russian ] = "~Arrange Horizontally"; + TEXT[ greek ] = "~Arrange Horizontally"; + TEXT[ dutch ] = "~Horizontaal schikken"; + TEXT[ french ] = "~Aligner horizontalement"; + TEXT[ spanish ] = "~Horizontal"; + TEXT[ italian ] = "~Arrange Horizontally"; + TEXT[ danish ] = "~Arrange Horizontally"; + TEXT[ swedish ] = "~Arrange Horizontally"; + TEXT[ polish ] = "~Arrange Horizontally"; + TEXT[ portuguese_brazilian ] = "~Horizontal anordnen"; + TEXT[ japanese ] = "¶‰E‚É•À‚ׂĕ\\ަ"; + TEXT[ korean ] = "¼öÆò ³ª´©±â(~A)"; + TEXT[ chinese_simplified ] = "~Horizontal anordnen"; + TEXT[ chinese_traditional ] = "~Arrange Horizontally"; + TEXT[ arabic ] = "~Arrange Horizontally"; + TEXT[ turkish ] = "~Yatay yerleþtir"; + }; + MenuItem { + Identifier = RID_WINTILEVERT; + TEXT = "~Vertikal anordnen"; + TEXT [ english_us ] = "~Arrange Vertically"; + HELPTEXT = "Fenster vertikal nebeneinander anordnen"; + HELPTEXT [ english_us ] = "Fenster vertikal nebeneinander anordnen"; + TEXT[ portuguese ] = "~Dispor na vertical"; + TEXT[ russian ] = "~Arrange Vertically"; + TEXT[ greek ] = "~Arrange Vertically"; + TEXT[ dutch ] = "~Verticaal schikken"; + TEXT[ french ] = "~Verticalement"; + TEXT[ spanish ] = "~Vertical"; + TEXT[ italian ] = "~Arrange Vertically"; + TEXT[ danish ] = "~Arrange Vertically"; + TEXT[ swedish ] = "~Arrange Vertically"; + TEXT[ polish ] = "~Arrange Vertically"; + TEXT[ portuguese_brazilian ] = "~Vertikal anordnen"; + TEXT[ japanese ] = "㉺‚É•À‚ׂĕ\\ަ"; + TEXT[ korean ] = "¼öÁ÷ ³ª´©±â(~A)"; + TEXT[ chinese_simplified ] = "~Vertikal anordnen"; + TEXT[ chinese_traditional ] = "~Arrange Vertically"; + TEXT[ arabic ] = "~Arrange Vertically"; + TEXT[ turkish ] = "~Dikey yerleþtir"; + }; + }; +}; +Menu RID_HELP { + ITEMLIST = { +/* MenuItem { + Identifier = RID_HELPINDEX; + TEXT = "~Index"; + TEXT [ english_us ] = "~Index"; + HELPTEXT = "Inhaltsverzeichnis der Hilfe"; + HELPTEXT [ english_us ] = "Inhaltsverzeichnis der Hilfe"; + }; + MenuItem { + SEPARATOR = TRUE; + }; + MenuItem { + Identifier = RID_HELPKEYS; + TEXT = "~Tastaturbelegung"; + TEXT [ english_us ] = "~Tastaturbelegung"; + HELPTEXT = "Liste der definierten Sondertasten"; + HELPTEXT [ english_us ] = "Liste der definierten Sondertasten"; + }; + MenuItem { + Identifier = RID_HELPINTRO; + TEXT = "~Anleitung"; + TEXT [ english_us ] = "~Anleitung"; + HELPTEXT = "Einführung in die Programmierung"; + HELPTEXT [ english_us ] = "Einführung in die Programmierung"; + }; + MenuItem { + SEPARATOR = TRUE; + }; + MenuItem { + Identifier = RID_HELPTOPIC; + TEXT = "~Markierter Text"; + TEXT [ english_us ] = "~Markierter Text"; + HELPTEXT = "Aktuell markierten Text erläutern"; + HELPTEXT [ english_us ] = "Aktuell markierten Text erläutern"; + }; + MenuItem { + SEPARATOR = TRUE; + }; +*/ MenuItem { + ABOUT = TRUE; + Identifier = RID_HELPABOUT; + TEXT = "~Info..."; + TEXT [ english_us ] = "~About..."; + HELPTEXT = "Copyright-Informationen"; + HELPTEXT [ english_us ] = "Copyright-Informationen"; + TEXT[ portuguese ] = "~Informação..."; + TEXT[ russian ] = "~About..."; + TEXT[ greek ] = "~About..."; + TEXT[ dutch ] = "~Info..."; + TEXT[ french ] = "~Info..."; + TEXT[ spanish ] = "~Información..."; + TEXT[ italian ] = "~Info..."; + TEXT[ danish ] = "~About..."; + TEXT[ swedish ] = "~About..."; + TEXT[ polish ] = "~About..."; + TEXT[ portuguese_brazilian ] = "~Info..."; + TEXT[ japanese ] = "î•ñ(~I)..."; + TEXT[ korean ] = "Á¤º¸(~A)..."; + TEXT[ chinese_simplified ] = "~Info..."; + TEXT[ chinese_traditional ] = "~About..."; + TEXT[ arabic ] = "ãÚáæãÇÊ..."; + TEXT[ turkish ] = "~Bilgi..."; + }; + }; +}; +ModelessDialog IDD_PRINT_DIALOG { + Pos = MAP_APPFONT( 83, 42 ); + Size = MAP_APPFONT( 171, 94 ); + TEXT = "StarBasic: Datei drucken"; + TEXT [ english_us ] = "StarBasic: Print File"; + MOVEABLE = TRUE; + SVLook = TRUE; + FixedText RID_TEXT { + Pos = MAP_APPFONT( 11, 9 ); + Size = MAP_APPFONT( 146, 28 ); + TEXT = "Druck von "; + TEXT [ english_us ] = "Print from "; + CENTER = TRUE; + TEXT[ portuguese ] = "Impressão de "; + TEXT[ russian ] = "Print from "; + TEXT[ greek ] = "Print from "; + TEXT[ dutch ] = "Afdruk van "; + TEXT[ french ] = "Impression de "; + TEXT[ spanish ] = "Imprimir "; + TEXT[ italian ] = "Print from "; + TEXT[ danish ] = "Print from "; + TEXT[ swedish ] = "Print from "; + TEXT[ polish ] = "Print from "; + TEXT[ portuguese_brazilian ] = "Druck von "; + TEXT[ japanese ] = "ˆóü”ÍˆÍ "; + TEXT[ korean ] = "·ÎºÎÅÍ Àμâ "; + TEXT[ chinese_simplified ] = "Druck von "; + TEXT[ chinese_traditional ] = "Print from "; + TEXT[ arabic ] = "Print from "; + TEXT[ turkish ] = "Çýktý kaynaðý "; + }; + CancelButton RID_CANCEL { + Pos = MAP_APPFONT( 56, 46 ); + Size = MAP_APPFONT( 47, 19 ); + TEXT = "Abbruch"; + TEXT [ english_us ] = "Cancel"; + TEXT[ portuguese ] = "Cancelar"; + TEXT[ russian ] = "Cancel"; + TEXT[ greek ] = "Cancel"; + TEXT[ dutch ] = "Annuleren"; + TEXT[ french ] = "Annuler"; + TEXT[ spanish ] = "Cancelar"; + TEXT[ italian ] = "Cancel"; + TEXT[ danish ] = "Cancel"; + TEXT[ swedish ] = "Cancel"; + TEXT[ polish ] = "Cancel"; + TEXT[ portuguese_brazilian ] = "Abbruch"; + TEXT[ japanese ] = "·¬Ý¾Ù"; + TEXT[ korean ] = "Ãë¼Ò"; + TEXT[ chinese_simplified ] = "Abbruch"; + TEXT[ chinese_traditional ] = "Cancel"; + TEXT[ arabic ] = "Cancel"; + TEXT[ turkish ] = "Ýptal"; + }; + TEXT[ portuguese ] = "StarOffice Basic: imprimir ficheiro"; + TEXT[ russian ] = "StarBasic: Print File"; + TEXT[ greek ] = "StarBasic: Print File"; + TEXT[ dutch ] = "StarOffice Basic: bestand afdrukken"; + TEXT[ french ] = "StarBasic: Impression d'un fichier"; + TEXT[ spanish ] = "StarBasic: Imprimir archivo"; + TEXT[ italian ] = "StarBasic: Print file"; + TEXT[ danish ] = "StarBasic: Print File"; + TEXT[ swedish ] = "StarBasic: Print File"; + TEXT[ polish ] = "StarBasic: Print File"; + TEXT[ portuguese_brazilian ] = "StarBasic: Datei drucken"; + TEXT[ japanese ] = "StarBasic: ̧²Ù‚̈óü"; + TEXT[ korean ] = "StarBasic: ÇÁ¸°Æ® ÆÄÀÏ"; + TEXT[ chinese_simplified ] = "StarBasic: Datei drucken"; + TEXT[ chinese_traditional ] = "StarOffcie Basic: Print File"; + TEXT[ arabic ] = "StarBasic: Print File"; + TEXT[ turkish ] = "StarBasic: Dosyayý yazdýr"; +}; + + +ModelessDialog IDD_OPTIONS_DLG +{ + OutputSize = TRUE ; + SVLook = TRUE ; + Size = MAP_APPFONT( 248, 140 ); + Text = "Einstellungen" ; + Text [ english_us ] = "Settings" ; + Moveable = TRUE ; + Closeable = TRUE ; + TabControl RES_TC_OPTIONS + { + OutputSize = TRUE ; + Pos = MAP_APPFONT( 4, 4 ); + Size = MAP_APPFONT( 240, 116 ); + Hide = FALSE ; + PageList = + { + PageItem + { + Identifier = RID_TP_GEN ; + Text = "Generisch" ; + Text [ english_us ] = "Generic" ; + Text[ portuguese ] = "Genérico"; + Text[ russian ] = "Generic"; + Text[ greek ] = "Generic"; + Text[ dutch ] = "Generiek"; + Text[ french ] = "Générique"; + Text[ spanish ] = "Genérico"; + Text[ italian ] = "Generic"; + Text[ danish ] = "Generic"; + Text[ swedish ] = "Generic"; + Text[ polish ] = "Generic"; + Text[ portuguese_brazilian ] = "Generisch"; + Text[ japanese ] = "•“I"; + Text[ korean ] = "ÀϹÝÀûÀÎ"; + Text[ chinese_simplified ] = "Generisch"; + Text[ chinese_traditional ] = "Generic"; + Text[ arabic ] = "Generic"; + Text[ turkish ] = "Genel"; + }; + PageItem + { + Identifier = RID_TP_SPE ; + Text = "Spezial" ; + Text [ english_us ] = "Specialized" ; + Text[ portuguese ] = "Especial"; + Text[ russian ] = "Specialized"; + Text[ greek ] = "Specialized"; + Text[ dutch ] = "Speciaal"; + Text[ french ] = "Spécial"; + Text[ spanish ] = "Especial"; + Text[ italian ] = "Special"; + Text[ danish ] = "Specialized"; + Text[ swedish ] = "Specialized"; + Text[ polish ] = "Specialized"; + Text[ portuguese_brazilian ] = "Spezial"; + Text[ japanese ] = "“ÁŽê"; + Text[ korean ] = "Ư¼öÇÑ"; + Text[ chinese_simplified ] = "Spezial"; + Text[ chinese_traditional ] = "Specialized"; + Text[ arabic ] = "Specialized"; + Text[ turkish ] = "Özel"; + }; + }; + OKButton RID_OK { + Pos = MAP_APPFONT( 65, 124 ); + Size = MAP_APPFONT( 55, 12 ); + TabStop = TRUE; + DefButton = TRUE; + }; + CancelButton RID_CANCEL { + Pos = MAP_APPFONT( 135, 124 ); + Size = MAP_APPFONT( 55, 12 ); + TabStop = TRUE; + }; + }; + Text[ portuguese ] = "Definições"; + Text[ russian ] = "Settings"; + Text[ greek ] = "Settings"; + Text[ dutch ] = "Instellingen"; + Text[ french ] = "Paramètres"; + Text[ spanish ] = "Configuración"; + Text[ italian ] = "Settings"; + Text[ danish ] = "Settings"; + Text[ swedish ] = "Settings"; + Text[ polish ] = "Settings"; + Text[ portuguese_brazilian ] = "Einstellungen"; + Text[ japanese ] = "Ý’è"; + Text[ korean ] = "¼³Á¤"; + Text[ chinese_simplified ] = "Einstellungen"; + Text[ chinese_traditional ] = "Settings"; + Text[ arabic ] = "Settings"; + Text[ turkish ] = "Ayarlar"; +}; + + +TabPage RID_TP_GENERIC { + Hide = TRUE ; + SVLook = TRUE ; + Size = MAP_APPFONT( 244, 100 ); + GroupBox RID_GB_AREA { + Pos = MAP_APPFONT( 4, 4 ); + Size = MAP_APPFONT( 228, 28 ); + Text = "Bereich"; + Text [ english_us ] = "Range"; + Text[ portuguese ] = "Área"; + Text[ russian ] = "Range"; + Text[ greek ] = "Range"; + Text[ dutch ] = "Bereik"; + Text[ french ] = "Zone"; + Text[ spanish ] = "Área"; + Text[ italian ] = "Range"; + Text[ danish ] = "Range"; + Text[ swedish ] = "Range"; + Text[ polish ] = "Range"; + Text[ portuguese_brazilian ] = "Bereich"; + Text[ japanese ] = "”͈Í"; + Text[ korean ] = "¹üÀ§"; + Text[ chinese_simplified ] = "Bereich"; + Text[ chinese_traditional ] = "Range"; + Text[ arabic ] = "Range"; + Text[ turkish ] = "Aralýk"; + }; + ComboBox RID_CB_AREA { + HScroll = TRUE; + VScroll = TRUE; + AutoHScroll = TRUE; + Border = TRUE; + Pos = MAP_APPFONT( 8, 16 ); + Size = MAP_APPFONT( 132, 88 ); + TabStop = TRUE; + DropDown = TRUE; + }; + PushButton RID_PB_NEW_AREA { + Pos = MAP_APPFONT( 144, 16 ); + Size = MAP_APPFONT( 40, 12 ); + Text = "Neu"; + Text [ english_us ] = "New"; + TabStop = TRUE; + Text[ portuguese ] = "Novo"; + Text[ russian ] = "New"; + Text[ greek ] = "New"; + Text[ dutch ] = "Nieuw"; + Text[ french ] = "Nouveau"; + Text[ spanish ] = "Nuevo"; + Text[ italian ] = "New"; + Text[ danish ] = "New"; + Text[ swedish ] = "New"; + Text[ polish ] = "New "; + Text[ portuguese_brazilian ] = "Neu"; + Text[ japanese ] = "V‹K"; + Text[ korean ] = "»õ·Î"; + Text[ chinese_simplified ] = "Neu"; + Text[ chinese_traditional ] = "New"; + Text[ arabic ] = "New"; + Text[ turkish ] = "Yeni"; + }; + PushButton RID_PD_DEL_AREA { + Pos = MAP_APPFONT( 188, 16 ); + Size = MAP_APPFONT( 40, 12 ); + Text = "Löschen"; + Text [ english_us ] = "Delete"; + TabStop = TRUE; + Text[ portuguese ] = "Eliminar"; + Text[ russian ] = "Delete"; + Text[ greek ] = "Delete"; + Text[ dutch ] = "Wissen"; + Text[ french ] = "Supprimer"; + Text[ spanish ] = "Eliminar"; + Text[ italian ] = "Cancel"; + Text[ danish ] = "Delete"; + Text[ swedish ] = "Delete"; + Text[ polish ] = "Delete"; + Text[ portuguese_brazilian ] = "Löschen"; + Text[ japanese ] = "íœ"; + Text[ korean ] = "Áö¿ì±â"; + Text[ chinese_simplified ] = "Löschen"; + Text[ chinese_traditional ] = "Delete"; + Text[ arabic ] = "Delete"; + Text[ turkish ] = "Sil"; + }; + GroupBox RID_GB_VALUE { + Pos = MAP_APPFONT( 4, 36 ); + Size = MAP_APPFONT( 228, 60 ); + Text = "Einstellung"; + Text [ english_us ] = "Setting"; + Text[ portuguese ] = "Configuração"; + Text[ russian ] = "Setting"; + Text[ greek ] = "Setting"; + Text[ dutch ] = "Instelling"; + Text[ french ] = "Paramètre"; + Text[ spanish ] = "Configuración"; + Text[ italian ] = "Setting"; + Text[ danish ] = "Setting"; + Text[ swedish ] = "Setting"; + Text[ polish ] = "Setting"; + Text[ portuguese_brazilian ] = "Einstellung"; + Text[ japanese ] = "Ý’è"; + Text[ korean ] = "¼³Á¤"; + Text[ chinese_simplified ] = "Einstellung"; + Text[ chinese_traditional ] = "Settings"; + Text[ arabic ] = "Setting"; + Text[ turkish ] = "Ayarlar"; + }; + ComboBox RID_CB_VALUE { + HScroll = TRUE; + VScroll = TRUE; + AutoHScroll = TRUE; + Border = TRUE; + Pos = MAP_APPFONT( 8, 48 ); + Size = MAP_APPFONT( 176, 44 ); + TabStop = TRUE; + }; + PushButton RID_PB_NEW_VALUE { + Pos = MAP_APPFONT( 188, 48 ); + Size = MAP_APPFONT( 40, 12 ); + Text = "Neu"; + Text [ english_us ] = "New"; + TabStop = TRUE; + Text[ portuguese ] = "Novo"; + Text[ russian ] = "New"; + Text[ greek ] = "New"; + Text[ dutch ] = "Nieuw"; + Text[ french ] = "Nouveau"; + Text[ spanish ] = "Nuevo"; + Text[ italian ] = "New"; + Text[ danish ] = "New"; + Text[ swedish ] = "New"; + Text[ polish ] = "New"; + Text[ portuguese_brazilian ] = "Neu"; + Text[ japanese ] = "V‹K"; + Text[ korean ] = "»õ·Î"; + Text[ chinese_simplified ] = "Neu"; + Text[ chinese_traditional ] = "New"; + Text[ arabic ] = "New"; + Text[ turkish ] = "Yeni"; + }; + PushButton RID_PB_DEL_VALUE { + Pos = MAP_APPFONT( 188, 64 ); + Size = MAP_APPFONT( 40, 12 ); + Text = "Löschen"; + Text [ english_us ] = "Delete"; + TabStop = TRUE; + Text[ portuguese ] = "Eliminar"; + Text[ russian ] = "Delete"; + Text[ greek ] = "Delete"; + Text[ dutch ] = "Wissen"; + Text[ french ] = "Supprimer"; + Text[ spanish ] = "Eliminar"; + Text[ italian ] = "Cancel"; + Text[ danish ] = "Delete"; + Text[ swedish ] = "Delete"; + Text[ polish ] = "Delete"; + Text[ portuguese_brazilian ] = "Löschen"; + Text[ japanese ] = "íœ"; + Text[ korean ] = "Áö¿ì±â"; + Text[ chinese_simplified ] = "Löschen"; + Text[ chinese_traditional ] = "Delete"; + Text[ arabic ] = "Delete"; + Text[ turkish ] = "Sil"; + }; +}; + + +TabPage RID_TP_SPECIAL { + Hide = TRUE ; + SVLook = TRUE ; + Size = MAP_APPFONT( 244, 100 ); + GroupBox GB_DIRECTORIES { + Pos = MAP_APPFONT( 4, 4 ); + Size = MAP_APPFONT( 230, 56 ); + Text = "Verzeichnisse"; + Text [ english_us ] = "Directories"; + Text[ portuguese ] = "Directórios"; + Text[ russian ] = "Directories"; + Text[ greek ] = "Directories"; + Text[ dutch ] = "Directory's"; + Text[ french ] = "Répertoires"; + Text[ spanish ] = "Directorios"; + Text[ italian ] = "Directories"; + Text[ danish ] = "Directories"; + Text[ swedish ] = "Directories"; + Text[ polish ] = "Directories"; + Text[ portuguese_brazilian ] = "Verzeichnisse"; + Text[ japanese ] = "ÃÞ¨Ú¸ÄØ"; + Text[ korean ] = "µð·ºÅ丮"; + Text[ chinese_simplified ] = "Verzeichnisse"; + Text[ chinese_traditional ] = "Directories"; + Text[ arabic ] = "Directories"; + Text[ turkish ] = "Dizinler"; + }; + FixedText LOG_TEXT { + Pos = MAP_APPFONT( 7, 12 ); + Size = MAP_APPFONT( 76, 12 ); + Text = "Log Basisverzeichnis"; + Text [ english_us ] = "Log home directory"; + Text[ portuguese ] = "Directório LOG de base"; + Text[ russian ] = "Log home directory"; + Text[ greek ] = "Log home directory"; + Text[ dutch ] = "Log home directory"; + Text[ french ] = "Répertoire racine LOG"; + Text[ spanish ] = "Directorio base de Log"; + Text[ italian ] = "Cartella log home"; + Text[ danish ] = "Log home directory"; + Text[ swedish ] = "Log home directory"; + Text[ polish ] = "Log home directory"; + Text[ portuguese_brazilian ] = "Log Basisverzeichnis"; + Text[ japanese ] = "Û¸Þ Î°Ñ ÃÞ¨Ú¸ÄØ"; + Text[ korean ] = "·Î±× Ȩ µð·ºÅ丮"; + Text[ chinese_simplified ] = "Log Basisverzeichnis"; + Text[ chinese_traditional ] = "Log home directory"; + Text[ arabic ] = "Log home directory"; + Text[ turkish ] = "Log ana dizin"; + }; + FixedText BASIS_TEXT { + Pos = MAP_APPFONT( 7, 28 ); + Size = MAP_APPFONT( 76, 12 ); + Text = "Basisverzeichnis"; + Text [ english_us ] = "Home directory"; + Text[ portuguese ] = "Directório de base"; + Text[ russian ] = "Home directory"; + Text[ greek ] = "Home directory"; + Text[ dutch ] = "Home directory"; + Text[ french ] = "Répertoire racine"; + Text[ spanish ] = "Directorio base"; + Text[ italian ] = "Cartella home"; + Text[ danish ] = "Home directory"; + Text[ swedish ] = "Home directory"; + Text[ polish ] = "Home directory"; + Text[ portuguese_brazilian ] = "Basisverzeichnis"; + Text[ japanese ] = "롄 ÃÞ¨Ú¸ÄØ"; + Text[ korean ] = "Ȩ µð·ºÅ丮"; + Text[ chinese_simplified ] = "Basisverzeichnis"; + Text[ chinese_traditional ] = "Home directory"; + Text[ arabic ] = "Home directory"; + Text[ turkish ] = "Ana dizin"; + }; + FixedText HID_TEXT { + Pos = MAP_APPFONT( 7, 44 ); + Size = MAP_APPFONT( 76, 12 ); + Text = "HID Verzeichnis"; + Text [ english_us ] = "HID directory"; + Text[ portuguese ] = "Directório HID"; + Text[ russian ] = "HID directory"; + Text[ greek ] = "HID directory"; + Text[ dutch ] = "HID directory"; + Text[ french ] = "Répertoire HID"; + Text[ spanish ] = "Directorio HID"; + Text[ italian ] = "Cartella HID"; + Text[ danish ] = "HID directory"; + Text[ swedish ] = "HID directory"; + Text[ polish ] = "HID directory"; + Text[ portuguese_brazilian ] = "HID Verzeichnis"; + Text[ japanese ] = "HID ÃÞ¨Ú¸ÄØ"; + Text[ korean ] = "HID µð·ºÅ丮"; + Text[ chinese_simplified ] = "HID Verzeichnis"; + Text[ chinese_traditional ] = "HID directory"; + Text[ arabic ] = "HID directory"; + Text[ turkish ] = "HID diziniz"; + }; + Edit LOG_NAME { + Border = TRUE; + Pos = MAP_APPFONT( 87, 12 ); + Size = MAP_APPFONT( 126, 12 ); + TabStop = TRUE; + }; + Edit BASIS_NAME { + Border = TRUE; + Pos = MAP_APPFONT( 87, 28 ); + Size = MAP_APPFONT( 126, 12 ); + TabStop = TRUE; + }; + Edit HID_NAME { + Border = TRUE; + Pos = MAP_APPFONT( 87, 44 ); + Size = MAP_APPFONT( 126, 12 ); + TabStop = TRUE; + }; + PushButton LOG_SET { + Pos = MAP_APPFONT( 217, 12 ); + Size = MAP_APPFONT( 12, 12 ); + Text = "..."; + Text [ english_us ] = "..."; + TabStop = TRUE; + Text[ portuguese ] = "..."; + Text[ russian ] = "..."; + Text[ greek ] = "..."; + Text[ dutch ] = "..."; + Text[ french ] = "..."; + Text[ spanish ] = "..."; + Text[ italian ] = "..."; + Text[ danish ] = "..."; + Text[ swedish ] = "..."; + Text[ polish ] = "..."; + Text[ portuguese_brazilian ] = "..."; + Text[ japanese ] = "..."; + Text[ korean ] = "..."; + Text[ chinese_simplified ] = "..."; + Text[ chinese_traditional ] = "..."; + Text[ arabic ] = "..."; + Text[ turkish ] = "..."; + }; + PushButton BASIS_SET { + Pos = MAP_APPFONT( 217, 28 ); + Size = MAP_APPFONT( 12, 12 ); + Text = "..."; + Text [ english_us ] = "..."; + TabStop = TRUE; + Text[ portuguese ] = "..."; + Text[ russian ] = "..."; + Text[ greek ] = "..."; + Text[ dutch ] = "..."; + Text[ french ] = "..."; + Text[ spanish ] = "..."; + Text[ italian ] = "..."; + Text[ danish ] = "..."; + Text[ swedish ] = "..."; + Text[ polish ] = "..."; + Text[ portuguese_brazilian ] = "..."; + Text[ japanese ] = "..."; + Text[ korean ] = "..."; + Text[ chinese_simplified ] = "..."; + Text[ chinese_traditional ] = "..."; + Text[ arabic ] = "..."; + Text[ turkish ] = "..."; + }; + PushButton HID_SET { + Pos = MAP_APPFONT( 217, 44 ); + Size = MAP_APPFONT( 12, 12 ); + Text = "..."; + Text [ english_us ] = "..."; + TabStop = TRUE; + Text[ portuguese ] = "..."; + Text[ russian ] = "..."; + Text[ greek ] = "..."; + Text[ dutch ] = "..."; + Text[ french ] = "..."; + Text[ spanish ] = "..."; + Text[ italian ] = "..."; + Text[ danish ] = "..."; + Text[ swedish ] = "..."; + Text[ polish ] = "..."; + Text[ portuguese_brazilian ] = "..."; + Text[ japanese ] = "..."; + Text[ korean ] = "..."; + Text[ chinese_simplified ] = "..."; + Text[ chinese_traditional ] = "..."; + Text[ arabic ] = "..."; + Text[ turkish ] = "..."; + }; + GroupBox GB_OTHER { + Pos = MAP_APPFONT( 4, 62 ); + Size = MAP_APPFONT( 230, 34 ); + Text = "Andere Einstellungen"; + Text [ english_us ] = "Other settings"; + Text[ portuguese ] = "Outras definições"; + Text[ russian ] = "Other settings"; + Text[ greek ] = "Other settings"; + Text[ dutch ] = "Andere instellingen"; + Text[ french ] = "Autres paramètres"; + Text[ spanish ] = "Otra configuración"; + Text[ italian ] = "Other settings"; + Text[ danish ] = "Other settings"; + Text[ swedish ] = "Other settings"; + Text[ polish ] = "Other settings"; + Text[ portuguese_brazilian ] = "Andere Einstellungen"; + Text[ japanese ] = "‚»‚Ì‘¼‚ÌÝ’è"; + Text[ korean ] = "´Ù¸¥ ¼³Á¤"; + Text[ chinese_simplified ] = "Andere Einstellungen"; + Text[ chinese_traditional ] = "Ohter settings"; + Text[ arabic ] = "Other settings"; + Text[ turkish ] = "Diðer ayarlar"; + }; + FixedText TIMEOUT_TEXT { + Pos = MAP_APPFONT( 8, 70 ); + Size = MAP_APPFONT( 70, 12 ); + Text = "Server Timeout"; + Text [ english_us ] = "Server Timeout"; + Text[ portuguese ] = "Timeout do servidor"; + Text[ russian ] = "Server Timeout"; + Text[ greek ] = "Server Timeout"; + Text[ dutch ] = "Server timeout"; + Text[ french ] = "Timeout du serveur (dépassement de délai)"; + Text[ spanish ] = "Server Timeout"; + Text[ italian ] = "Server Timeout"; + Text[ danish ] = "Server Timeout"; + Text[ swedish ] = "Server Timeout"; + Text[ polish ] = "Server Timeout"; + Text[ portuguese_brazilian ] = "Server Timeout"; + Text[ japanese ] = "»°ÊÞ° À²Ñ±³Ä"; + Text[ korean ] = "¼¹ö ŸÀӾƿô"; + Text[ chinese_simplified ] = "Server Timeout"; + Text[ chinese_traditional ] = "Server Timeout"; + Text[ arabic ] = "Server Timeout"; + Text[ turkish ] = "Sunucu zaman aþýmý"; + }; + TimeField SERVER_TIMEOUT { + Border = TRUE; + Pos = MAP_APPFONT( 83, 70 ); + Size = MAP_APPFONT( 40, 12 ); + TabStop = TRUE; + Repeat = TRUE; + Spin = TRUE; + Format = TIMEF_SEC; + Duration = TRUE; + }; + CheckBox CB_AUTORELOAD { + Pos = MAP_APPFONT( 8, 83 ); + Size = MAP_APPFONT( 115, 12 ); + Text = "Automatischer Reload"; + Text [ english_us ] = "AutoReload"; + Text[ portuguese ] = "Recarga automática"; + Text[ russian ] = "AutoReload"; + Text[ greek ] = "AutoReload"; + Text[ dutch ] = "Automatische reload"; + Text[ french ] = "Recharge automatique"; + Text[ spanish ] = "Recarga automática"; + Text[ italian ] = "AutoReload"; + Text[ danish ] = "AutoReload"; + Text[ swedish ] = "AutoReload"; + Text[ polish ] = "AutoReload"; + Text[ portuguese_brazilian ] = "Automatischer Reload"; + Text[ japanese ] = "AutoReload"; + Text[ korean ] = "ÀÚµ¿·Îµå"; + Text[ chinese_simplified ] = "Automatischer Reload"; + Text[ chinese_traditional ] = "AutoReload"; + Text[ arabic ] = "AutoReload"; + Text[ turkish ] = "Otomatik yeniden yükleme"; + }; +// CheckBox 5555 { +// Pos = MAP_APPFONT( 127, 70 ); +// Size = MAP_APPFONT( 103, 12 ); +// Text = "Unbenutzt aber Positioniert"; +// Text [ english_us ] = "Unbenutzt aber Positioniert"; +// }; +}; + + + +FloatingWindow IDD_DISPLAY_HID { + OutputSize = TRUE; + SVLook = TRUE; + Size = MAP_APPFONT( 261, 160 ); + Text = "Display HId"; + Text [ english_us ] = "Display HId"; + Moveable = TRUE; + Closeable = TRUE; + Sizeable = TRUE; + Zoomable = TRUE; + Hide = TRUE; + ClipChildren = TRUE; + ToolBox RID_TB_CONF { + Border = TRUE; + Pos = MAP_APPFONT( 0, 0 ); + Size = MAP_APPFONT( 260, 14 ); +/* ItemList = { + ToolBoxItem { + Text = "erster der Toolbox"; + Text [ english_us ] = "erster der Toolbox"; + }; + };*/ +// Hide = TRUE; + }; + FixedText RID_FT_CONTROLS { + Pos = MAP_APPFONT( 4, 16 ); + Size = MAP_APPFONT( 128, 10 ); + Text = "Controls"; + Text [ english_us ] = "Controls"; + Text[ portuguese ] = "Controlos"; + Text[ russian ] = "Controls"; + Text[ greek ] = "Controls"; + Text[ dutch ] = "Controls"; + Text[ french ] = "Contrôles"; + Text[ spanish ] = "Controles"; + Text[ italian ] = "Controls"; + Text[ danish ] = "Controls"; + Text[ swedish ] = "Controls"; + Text[ polish ] = "Controls"; + Text[ portuguese_brazilian ] = "Controls"; + Text[ japanese ] = "Controls"; + Text[ korean ] = "ÄÁÆ®·Ñ"; + Text[ chinese_simplified ] = "Controls"; + Text[ chinese_traditional ] = "Controls"; + Text[ arabic ] = "Controls"; + Text[ turkish ] = "Denetimler"; + }; + MultiListBox RID_MLB_CONTROLS { + Border = TRUE; + AutoHScroll = TRUE; + Pos = MAP_APPFONT( 4, 28 ); + Size = MAP_APPFONT( 208, 88 ); + TabStop = TRUE; + }; + FixedText RID_FT_SLOTS { + Pos = MAP_APPFONT( 4, 120 ); + Size = MAP_APPFONT( 128, 10 ); + Text = "Slots"; + Text [ english_us ] = "Slots"; + Text[ portuguese ] = "Slots"; + Text[ russian ] = "Slots"; + Text[ greek ] = "Slots"; + Text[ dutch ] = "Slots"; + Text[ french ] = "Ports (slots)"; + Text[ spanish ] = "Puertos (slots)"; + Text[ italian ] = "Slots"; + Text[ danish ] = "Slots"; + Text[ swedish ] = "Slots"; + Text[ polish ] = "Slots"; + Text[ portuguese_brazilian ] = "Slots"; + Text[ japanese ] = "Slots"; + Text[ korean ] = "Slots"; + Text[ chinese_simplified ] = "Slots"; + Text[ chinese_traditional ] = "Slots"; + Text[ arabic ] = "Slots"; + Text[ turkish ] = "Yuvalar"; + }; + MultiListBox RID_MLB_SLOTS { + Border = TRUE; + AutoHScroll = TRUE; + Pos = MAP_APPFONT( 4, 132 ); + Size = MAP_APPFONT( 208, 24 ); + TabStop = TRUE; + }; + PushButton RID_PB_KOPIEREN { + Pos = MAP_APPFONT( 216, 28 ); + Size = MAP_APPFONT( 40, 12 ); + Text = "Kopieren"; + Text [ english_us ] = "Copy"; + TabStop = TRUE; + Text[ portuguese ] = "Copiar"; + Text[ russian ] = "Copy"; + Text[ greek ] = "Copy"; + Text[ dutch ] = "Kopiëren"; + Text[ french ] = "Copier"; + Text[ spanish ] = "Copiar"; + Text[ italian ] = "Copy"; + Text[ danish ] = "Copy"; + Text[ swedish ] = "Copy"; + Text[ polish ] = "Copy"; + Text[ portuguese_brazilian ] = "Kopieren"; + Text[ japanese ] = "Copy"; + Text[ korean ] = "º¹»ç"; + Text[ chinese_simplified ] = "Kopieren"; + Text[ chinese_traditional ] = "Copy"; + Text[ arabic ] = "Copy"; + Text[ turkish ] = "Kopyala"; + }; + PushButton RID_PB_BENENNEN { + Pos = MAP_APPFONT( 216, 44 ); + Size = MAP_APPFONT( 40, 12 ); + Text = "Benennen"; + Text [ english_us ] = "Name"; + TabStop = TRUE; + Hide = TRUE; + Text[ portuguese ] = "Atribuir nome"; + Text[ russian ] = "Name"; + Text[ greek ] = "Name"; + Text[ dutch ] = "Naam geven"; + Text[ french ] = "Nommer"; + Text[ spanish ] = "Nombrar"; + Text[ italian ] = "Name"; + Text[ danish ] = "Name"; + Text[ swedish ] = "Name"; + Text[ polish ] = "Name"; + Text[ portuguese_brazilian ] = "Benennen"; + Text[ japanese ] = "Name"; + Text[ korean ] = "À̸§"; + Text[ chinese_simplified ] = "Benennen"; + Text[ chinese_traditional ] = "Name"; + Text[ arabic ] = "Name"; + Text[ turkish ] = "Adlandýr"; + }; + PushButton RID_PB_SELECTALL { + Pos = MAP_APPFONT( 216, 44 ); + Size = MAP_APPFONT( 40, 12 ); + Text = "Alle Markieren"; + Text [ english_us ] = "Select all"; + TabStop = TRUE; + Text[ portuguese ] = "Seleccionar tudo"; + Text[ russian ] = "Select all"; + Text[ greek ] = "Select all"; + Text[ dutch ] = "Alle markeren"; + Text[ french ] = "Sélectionner tout"; + Text[ spanish ] = "Seleccionar todos"; + Text[ italian ] = "Select all"; + Text[ danish ] = "Select all"; + Text[ swedish ] = "Select all"; + Text[ polish ] = "Select all"; + Text[ portuguese_brazilian ] = "Alle Markieren"; + Text[ japanese ] = "Select all"; + Text[ korean ] = "Àüü ¼±ÅÃ"; + Text[ chinese_simplified ] = "Alle Markieren"; + Text[ chinese_traditional ] = "Select all"; + Text[ arabic ] = "Select all"; + Text[ turkish ] = "Tümünü seç"; + }; + OKButton RID_OK_CLOSE { + Pos = MAP_APPFONT( 216, 144 ); + Size = MAP_APPFONT( 40, 12 ); + Text = "Schließen"; + Text [ english_us ] = "Close"; + TabStop = TRUE; + Text[ portuguese ] = "Fechar"; + Text[ russian ] = "Close"; + Text[ greek ] = "Close"; + Text[ dutch ] = "Sluiten"; + Text[ french ] = "Fermer"; + Text[ spanish ] = "Cerrar"; + Text[ italian ] = "Close"; + Text[ danish ] = "Close"; + Text[ swedish ] = "Close"; + Text[ polish ] = "Close"; + Text[ portuguese_brazilian ] = "Schließen"; + Text[ japanese ] = "Close"; + Text[ korean ] = "´Ý±â"; + Text[ chinese_simplified ] = "Schließen"; + Text[ chinese_traditional ] = "Close"; + Text[ arabic ] = "Close"; + Text[ turkish ] = "Kapat"; + }; + Text[ portuguese ] = "Mostrar HId"; + Text[ russian ] = "Display HId"; + Text[ greek ] = "Display HId"; + Text[ dutch ] = "Display HId"; + Text[ french ] = "Display HId"; + Text[ spanish ] = "Mostrar HId"; + Text[ italian ] = "Display HId"; + Text[ danish ] = "Display HId"; + Text[ swedish ] = "Display HId"; + Text[ polish ] = "Display HId"; + Text[ portuguese_brazilian ] = "Display HId"; + Text[ japanese ] = "Display HId"; + Text[ korean ] = "µð½ºÇ÷¹ÀÌ HId"; + Text[ chinese_simplified ] = "Display HId"; + Text[ chinese_traditional ] = "Display HId"; + Text[ arabic ] = "Display HId"; + Text[ turkish ] = "Görüntüle: HId"; +}; + + + +Accelerator MAIN_ACCEL { + ItemList = { + AcceleratorItem { + Identifier = RID_FILENEW; + Key = KeyCode { Function = KEYFUNC_NEW; }; + }; + AcceleratorItem { + Identifier = RID_FILEOPEN; + Key = KeyCode { Function = KEYFUNC_OPEN; }; + }; + AcceleratorItem { + Identifier = RID_FILESAVE; + Key = KeyCode { Function = KEYFUNC_SAVE; }; + }; + AcceleratorItem { + Identifier = RID_FILESAVEAS; + Key = KeyCode { Function = KEYFUNC_SAVEAS; }; + }; + AcceleratorItem { + Identifier = RID_QUIT; + Key = KeyCode { Function = KEYFUNC_QUIT; }; + }; +// AcceleratorItem { +// Identifier = RID_EDITCUT; +// Key = KeyCode { Function = KEYFUNC_CUT; }; +// }; +// AcceleratorItem { +// Identifier = RID_EDITCOPY; +// Key = KeyCode { Function = KEYFUNC_COPY; }; +// }; +// AcceleratorItem { +// Identifier = RID_EDITPASTE; +// Key = KeyCode { Function = KEYFUNC_PASTE; }; +// }; +// AcceleratorItem { +// Identifier = RID_EDITDEL; +// Key = KeyCode { Function = KEYFUNC_DELETE; }; +// }; + AcceleratorItem { + Identifier = RID_EDITSEARCH; + Key = KeyCode { Function = KEYFUNC_FIND; }; + }; + AcceleratorItem { + Identifier = RID_EDITREPEAT; + Key = KeyCode { Code = KEY_F3; }; +// Key = KeyCode { Function = KEYFUNC_REPEAT; }; + }; + AcceleratorItem { + Identifier = RID_RUNCOMPILE; + Key = KeyCode { Code = KEY_F5; Shift = TRUE; }; + }; + AcceleratorItem { + Identifier = RID_RUNSTART; + Key = KeyCode { Code = KEY_F5; }; + }; + AcceleratorItem { + Identifier = RID_RUNSTEPINTO; + Key = KeyCode { Code = KEY_F8; }; + }; + AcceleratorItem { + Identifier = RID_TOGLEBRKPNT; + Key = KeyCode { Code = KEY_F9; }; + }; + AcceleratorItem { + Identifier = RID_RUNSTEPOVER; + Key = KeyCode { Code = KEY_F10; }; + }; + AcceleratorItem { + Identifier = RID_RUNTOCURSOR; + Key = KeyCode { Code = KEY_F7; }; + }; + AcceleratorItem { + Identifier = RID_RUNBREAK; + Key = KeyCode { Code = KEY_F5; Modifier1 = TRUE; }; + }; + AcceleratorItem { + Identifier = RID_RUNNEXTERR; + Key = KeyCode { Code = KEY_F8; Shift = TRUE; }; + }; + AcceleratorItem { + Identifier = RID_RUNPREVERR; + Key = KeyCode { Code = KEY_F7; Shift = TRUE; }; + }; + }; +}; + +ImageList RID_IMGLST_LAYOUT +{ + ImageBitmap = Bitmap { FILE = "images2.bmp" ; }; + MaskColor = Color { Red = 0xFFFF ; Green = 0xFFFF ; Blue = 0xFFFF ; }; + IdList = + { + IMGID_BRKENABLED ; + IMGID_BRKDISABLED ; + IMGID_STEPMARKER ; + IMGID_ERRORMARKER ; + }; +}; + + +ModelessDialog IDD_EDIT_VAR { + Pos = MAP_APPFONT( 0, 0 ); + Size = MAP_APPFONT( 171, 87 ); + Text = "Variable editieren"; + Text [ english_us ] = "Edit variable"; + Moveable = TRUE; + Closeable = TRUE; + FixedText RID_FT_NAME { + Pos = MAP_APPFONT( 8, 8 ); + Size = MAP_APPFONT( 40, 10 ); + Text = "Name"; + Text [ english_us ] = "Name"; + Text[ portuguese ] = "Nome"; + Text[ russian ] = "Name"; + Text[ greek ] = "Name"; + Text[ dutch ] = "Naam"; + Text[ french ] = "Nom"; + Text[ spanish ] = "Nombre"; + Text[ italian ] = "Name"; + Text[ danish ] = "Name"; + Text[ swedish ] = "Name"; + Text[ polish ] = "Name"; + Text[ portuguese_brazilian ] = "Name"; + Text[ japanese ] = "Name"; + Text[ korean ] = "À̸§"; + Text[ chinese_simplified ] = "Name"; + Text[ chinese_traditional ] = "Name"; + Text[ arabic ] = "Name"; + Text[ turkish ] = "Ad"; + }; + FixedText RID_FT_CONTENT { + Pos = MAP_APPFONT( 8, 21 ); + Size = MAP_APPFONT( 40, 10 ); + Text = "Inhalt"; + Text [ english_us ] = "Content"; + Text[ portuguese ] = "Conteúdo"; + Text[ russian ] = "Content"; + Text[ greek ] = "Content"; + Text[ dutch ] = "Inhoud"; + Text[ french ] = "Contenu"; + Text[ spanish ] = "Contenido"; + Text[ italian ] = "Content"; + Text[ danish ] = "Content"; + Text[ swedish ] = "Content"; + Text[ polish ] = "Content"; + Text[ portuguese_brazilian ] = "Inhalt"; + Text[ japanese ] = "Content"; + Text[ korean ] = "¸ñÂ÷"; + Text[ chinese_simplified ] = "Inhalt"; + Text[ chinese_traditional ] = "Content"; + Text[ arabic ] = "Content"; + Text[ turkish ] = "Ýçerik"; + }; + FixedText RID_FT_NEW_CONTENT { + Pos = MAP_APPFONT( 8, 38 ); + Size = MAP_APPFONT( 40, 10 ); + Text = "Neuer Inhalt"; + Text [ english_us ] = "New content"; + Text[ portuguese ] = "Novo conteúdo"; + Text[ russian ] = "New content"; + Text[ greek ] = "New content"; + Text[ dutch ] = "Nieuwe inhoud"; + Text[ french ] = "Nouveau contenu"; + Text[ spanish ] = "Nuevo contenido"; + Text[ italian ] = "New content"; + Text[ danish ] = "New content"; + Text[ swedish ] = "New content"; + Text[ polish ] = "New content"; + Text[ portuguese_brazilian ] = "Neuer Inhalt"; + Text[ japanese ] = "New content"; + Text[ korean ] = "»õ·Î¿î ¸ñÂ÷"; + Text[ chinese_simplified ] = "Neuer Inhalt"; + Text[ chinese_traditional ] = "New content"; + Text[ arabic ] = "New content"; + Text[ turkish ] = "Yeni içerik"; + }; + FixedText RID_FT_NAME_VALUE { + Pos = MAP_APPFONT( 53, 8 ); + Size = MAP_APPFONT( 111, 10 ); + Text = "name der variablen"; + Text [ english_us ] = "Name of variable"; + Text[ portuguese ] = "nome das variáveis"; + Text[ russian ] = "Name of variable"; + Text[ greek ] = "Name of variable"; + Text[ dutch ] = "Naam van de variabelen"; + Text[ french ] = "Noms des variables"; + Text[ spanish ] = "nombre de variables"; + Text[ italian ] = "Name of variables"; + Text[ danish ] = "Name of variable"; + Text[ swedish ] = "Name of variable"; + Text[ polish ] = "Name of variable"; + Text[ portuguese_brazilian ] = "name der variablen"; + Text[ japanese ] = "Name of variable"; + Text[ korean ] = "º¯¼ö ¸í"; + Text[ chinese_simplified ] = "name der variablen"; + Text[ chinese_traditional ] = "name of variable"; + Text[ arabic ] = "Name of variable"; + Text[ turkish ] = "Deðiþken adý"; + }; + FixedText RID_FT_CONTENT_VALUE { + Pos = MAP_APPFONT( 53, 21 ); + Size = MAP_APPFONT( 111, 10 ); + Text = "Alter Inhalt"; + Text [ english_us ] = "Previous contents"; + Text[ portuguese ] = "Antigo conteúdo"; + Text[ russian ] = "Previous contents"; + Text[ greek ] = "Previous contents"; + Text[ dutch ] = "Oude inhoud"; + Text[ french ] = "Ancien contenu"; + Text[ spanish ] = "Contenido antiguo"; + Text[ italian ] = "Previous content"; + Text[ danish ] = "Previous contents"; + Text[ swedish ] = "Previous content"; + Text[ polish ] = "Previous contents"; + Text[ portuguese_brazilian ] = "Alter Inhalt"; + Text[ japanese ] = "Previous contents"; + Text[ korean ] = "ÀÌÀü ¸ñÂ÷"; + Text[ chinese_simplified ] = "Alter Inhalt"; + Text[ chinese_traditional ] = "Previous content"; + Text[ arabic ] = "Previous contents"; + Text[ turkish ] = "Eski içerik"; + }; + RadioButton RID_RB_NEW_BOOL_T { + Hide = TRUE; + Pos = MAP_APPFONT( 53, 37 ); + Size = MAP_APPFONT( 40, 12 ); + Text = "True"; + Text [ english_us ] = "True"; + TabStop = TRUE; + Text[ portuguese ] = "Verdadeiro"; + Text[ russian ] = "True"; + Text[ greek ] = "True"; + Text[ dutch ] = "True"; + Text[ french ] = "Vrai"; + Text[ spanish ] = "Verdadero"; + Text[ italian ] = "True"; + Text[ danish ] = "True"; + Text[ swedish ] = "True"; + Text[ polish ] = "True"; + Text[ portuguese_brazilian ] = "True"; + Text[ japanese ] = "True"; + Text[ korean ] = "Âü"; + Text[ chinese_simplified ] = "True"; + Text[ chinese_traditional ] = "True"; + Text[ arabic ] = "True"; + Text[ turkish ] = "Doðru"; + }; + RadioButton RID_RB_NEW_BOOL_F { + Hide = TRUE; + Pos = MAP_APPFONT( 98, 37 ); + Size = MAP_APPFONT( 40, 12 ); + Text = "False"; + Text [ english_us ] = "False"; + TabStop = TRUE; + Text[ portuguese ] = "Falso"; + Text[ russian ] = "False"; + Text[ greek ] = "False"; + Text[ dutch ] = "False"; + Text[ french ] = "Faux"; + Text[ spanish ] = "Falso"; + Text[ italian ] = "False"; + Text[ danish ] = "False"; + Text[ swedish ] = "False"; + Text[ polish ] = "False"; + Text[ portuguese_brazilian ] = "False"; + Text[ japanese ] = "False"; + Text[ korean ] = "°ÅÁþ"; + Text[ chinese_simplified ] = "False"; + Text[ chinese_traditional ] = "False"; + Text[ arabic ] = "False"; + Text[ turkish ] = "Yanlýþ"; + }; + NumericField RID_NF_NEW_INTEGER { + Border = TRUE; + Hide = TRUE; + Pos = MAP_APPFONT( 53, 37 ); + Size = MAP_APPFONT( 111, 12 ); + TabStop = TRUE; + Repeat = TRUE; + Spin = TRUE; + Minimum = -32768; + Maximum = 32767; + First = -32768; + Last = 32767; + SpinSize = 10; + }; + NumericField RID_NF_NEW_LONG { + Border = TRUE; + Hide = TRUE; + Pos = MAP_APPFONT( 53, 37 ); + Size = MAP_APPFONT( 111, 12 ); + TabStop = TRUE; + Repeat = TRUE; + Spin = TRUE; + Minimum = -2147483648; + Maximum = 2147483647; + First = -2147483648; + Last = 2147483647; + SpinSize = 10; + }; + Edit RID_ED_NEW_STRING { + Hide = TRUE; + Border = TRUE; + Pos = MAP_APPFONT( 53, 37 ); + Size = MAP_APPFONT( 111, 12 ); + Text = "Edit"; + Text [ english_us ] = "Edit"; + TabStop = TRUE; + Text[ portuguese ] = "Editar"; + Text[ russian ] = "Edit"; + Text[ greek ] = "Edit"; + Text[ dutch ] = "Edit"; + Text[ french ] = "Éditer"; + Text[ spanish ] = "Editar"; + Text[ italian ] = "Edit"; + Text[ danish ] = "Edit"; + Text[ swedish ] = "Edit"; + Text[ polish ] = "Edit"; + Text[ portuguese_brazilian ] = "Edit"; + Text[ japanese ] = "Edit"; + Text[ korean ] = "ÆíÁý"; + Text[ chinese_simplified ] = "Edit"; + Text[ chinese_traditional ] = "Edit"; + Text[ arabic ] = "Edit"; + Text[ turkish ] = "Düzenle"; + }; + OKButton RID_OK { + Pos = MAP_APPFONT( 33, 58 ); + Size = MAP_APPFONT( 40, 12 ); + TabStop = TRUE; + }; + CancelButton RID_CANCEL { + Pos = MAP_APPFONT( 93, 58 ); + Size = MAP_APPFONT( 40, 12 ); + TabStop = TRUE; + }; + Text[ portuguese ] = "Editar variáveis"; + Text[ russian ] = "Edit variable"; + Text[ greek ] = "Edit variable"; + Text[ dutch ] = "Variabele editeren"; + Text[ french ] = "Édition de variable"; + Text[ spanish ] = "Editar variable"; + Text[ italian ] = "Edit variable"; + Text[ danish ] = "Edit variable"; + Text[ swedish ] = "Edit variable"; + Text[ polish ] = "Edit variable"; + Text[ portuguese_brazilian ] = "Variable editieren"; + Text[ japanese ] = "Edit variable"; + Text[ korean ] = "º¯¼ö ÆíÁý"; + Text[ chinese_simplified ] = "Variable editieren"; + Text[ chinese_traditional ] = "Edit variable"; + Text[ arabic ] = "Edit variable"; + Text[ turkish ] = "Deðiþken düzenle"; +}; + +FloatingWindow LOAD_CONF { + SVLook = TRUE; + Pos = MAP_APPFONT( 66, 23 ); + Size = MAP_APPFONT( 156, 51 ); + Text = "Lese Konfigurationsdateien"; + Text[ english_us ] = "Load configuration files"; + Moveable = TRUE; + FixedText WORK { + SVLook = TRUE; + Pos = MAP_APPFONT( 0, 8 ); + Size = MAP_APPFONT( 155, 10 ); + Text = "Slot IDs"; + Text[ english_us ] = "Slot IDs"; + Center = TRUE; + Text[ portuguese ] = "Slot IDs"; + Text[ russian ] = "Slot IDs"; + Text[ greek ] = "Slot IDs"; + Text[ dutch ] = "Slot IDs"; + Text[ french ] = "Slot IDs"; + Text[ spanish ] = "Slot IDs"; + Text[ italian ] = "Slot IDs"; + Text[ danish ] = "Slot IDs"; + Text[ swedish ] = "Slot IDs"; + Text[ polish ] = "Slot IDs"; + Text[ portuguese_brazilian ] = "Slot IDs"; + Text[ japanese ] = "Slot IDs"; + Text[ korean ] = "Slot IDs"; + Text[ chinese_simplified ] = "Slot IDs"; + Text[ chinese_traditional ] = "Slot IDs"; + Text[ arabic ] = "Slot IDs"; + Text[ turkish ] = "Slot IDs"; + }; + FixedText FILENAME { + SVLook = TRUE; + Pos = MAP_APPFONT( 0, 21 ); + Size = MAP_APPFONT( 155, 10 ); + Text = "Datei.win"; + Text[ english_us ] = "File.win"; + Center = TRUE; + Text[ portuguese ] = "File.win"; + Text[ russian ] = "File.win"; + Text[ greek ] = "File.win"; + Text[ dutch ] = "Bestand.win"; + Text[ french ] = "Fichier.win"; + Text[ spanish ] = "Archivo.win"; + Text[ italian ] = "File.win"; + Text[ danish ] = "File.win"; + Text[ swedish ] = "File.win"; + Text[ polish ] = "Plik.win"; + Text[ portuguese_brazilian ] = "Datei.win"; + Text[ japanese ] = "File.win"; + Text[ korean ] = "File.win"; + Text[ chinese_simplified ] = "File.win"; + Text[ chinese_traditional ] = "Datei.win"; + Text[ arabic ] = "File.win"; + Text[ turkish ] = "File.win"; + }; + Text[ portuguese ] = "A ler ficheiros de configuração"; + Text[ russian ] = "Load configuration files"; + Text[ greek ] = "Load configuration files"; + Text[ dutch ] = "Lees configuratiebestanden"; + Text[ french ] = "Lecture des fichiers de configuration"; + Text[ spanish ] = "Leyendo archivos de configuración"; + Text[ italian ] = "Load configuration files"; + Text[ danish ] = "Load configuration files"; + Text[ swedish ] = "Load configuration files"; + Text[ polish ] = "Czytaj pliki konfiguracyjne"; + Text[ portuguese_brazilian ] = "Lese Konfigurationsdateien"; + Text[ japanese ] = "Load configuration files"; + Text[ korean ] = "±¸¼º ÆÄÀÏ ·Îµå"; + Text[ chinese_simplified ] = "Load configuration files"; + Text[ chinese_traditional ] = "Lese Konfigurationsdateien"; + Text[ arabic ] = "Load configuration files"; + Text[ turkish ] = "Konfigürasyon dosyalarý okunuyor"; +}; diff --git a/basic/source/app/basicrt.cxx b/basic/source/app/basicrt.cxx new file mode 100644 index 000000000000..2ca8d5ee6edf --- /dev/null +++ b/basic/source/app/basicrt.cxx @@ -0,0 +1,163 @@ +/************************************************************************* + * + * $RCSfile: basicrt.cxx,v $ + * + * $Revision: 1.1.1.1 $ + * + * last change: $Author: hr $ $Date: 2000-09-18 16:12:08 $ + * + * The Contents of this file are made available subject to the terms of + * either of the following licenses + * + * - GNU Lesser General Public License Version 2.1 + * - Sun Industry Standards Source License Version 1.1 + * + * Sun Microsystems Inc., October, 2000 + * + * GNU Lesser General Public License Version 2.1 + * ============================================= + * Copyright 2000 by Sun Microsystems, Inc. + * 901 San Antonio Road, Palo Alto, CA 94303, USA + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License version 2.1, as published by the Free Software Foundation. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + * + * + * Sun Industry Standards Source License Version 1.1 + * ================================================= + * The contents of this file are subject to the Sun Industry Standards + * Source License Version 1.1 (the "License"); You may not use this file + * except in compliance with the License. You may obtain a copy of the + * License at http://www.openoffice.org/license.html. + * + * Software provided under this License is provided on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, + * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS, + * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING. + * See the License for the specific provisions governing your rights and + * obligations concerning the Software. + * + * The Initial Developer of the Original Code is: Sun Microsystems, Inc. + * + * Copyright: 2000 by Sun Microsystems, Inc. + * + * All Rights Reserved. + * + * Contributor(s): _______________________________________ + * + * + ************************************************************************/ + + +#include "sbintern.hxx" +#include "runtime.hxx" +#include "basicrt.hxx" + + +const String BasicRuntime::GetModuleName( SbxNameType nType ) +{ + return pRun->GetModule()->GetName( nType ); +} + +const String BasicRuntime::GetMethodName( SbxNameType nType ) +{ + return pRun->GetMethod()->GetName( nType ); +} + +xub_StrLen BasicRuntime::GetLine() +{ + return pRun->nLine; +} + +xub_StrLen BasicRuntime::GetCol1() +{ + return pRun->nCol1; +} + +xub_StrLen BasicRuntime::GetCol2() +{ + return pRun->nCol2; +} + +BasicRuntime BasicRuntime::GetNextRuntime() +{ + return BasicRuntime ( pRun->pNext ); +} + + + + +const String BasicErrorStackEntry::GetModuleName( SbxNameType nType ) +{ + return pEntry->aMethod->GetModule()->GetName( nType ); +} + +const String BasicErrorStackEntry::GetMethodName( SbxNameType nType ) +{ + return pEntry->aMethod->GetName( nType ); +} + +xub_StrLen BasicErrorStackEntry::GetLine() +{ + return pEntry->nLine; +} + +xub_StrLen BasicErrorStackEntry::GetCol1() +{ + return pEntry->nCol1; +} + +xub_StrLen BasicErrorStackEntry::GetCol2() +{ + return pEntry->nCol2; +} + + + + +BasicRuntime BasicRuntimeAccess::GetRuntime() +{ + return BasicRuntime( pINST->pRun ); +} + +BOOL BasicRuntimeAccess::HasRuntime() +{ + return pINST ? ( pINST->pRun != NULL ) : FALSE; +} + +USHORT BasicRuntimeAccess::GetStackEntryCount() +{ + return GetSbData()->pErrStack->Count(); +} + +BasicErrorStackEntry BasicRuntimeAccess::GetStackEntry( USHORT nIndex ) +{ + return BasicErrorStackEntry( GetSbData()->pErrStack->GetObject( nIndex ) ); +} + +BOOL BasicRuntimeAccess::HasStack() +{ + return GetSbData()->pErrStack != NULL; +} + +void BasicRuntimeAccess::DeleteStack() +{ + delete GetSbData()->pErrStack; + GetSbData()->pErrStack = NULL; +} + +BOOL BasicRuntimeAccess::IsRunInit() +{ + return GetSbData()->bRunInit; +} diff --git a/basic/source/app/basmsg.hrc b/basic/source/app/basmsg.hrc new file mode 100644 index 000000000000..2e900e258209 --- /dev/null +++ b/basic/source/app/basmsg.hrc @@ -0,0 +1,79 @@ +/************************************************************************* + * + * $RCSfile: basmsg.hrc,v $ + * + * $Revision: 1.1.1.1 $ + * + * last change: $Author: hr $ $Date: 2000-09-18 16:12:08 $ + * + * The Contents of this file are made available subject to the terms of + * either of the following licenses + * + * - GNU Lesser General Public License Version 2.1 + * - Sun Industry Standards Source License Version 1.1 + * + * Sun Microsystems Inc., October, 2000 + * + * GNU Lesser General Public License Version 2.1 + * ============================================= + * Copyright 2000 by Sun Microsystems, Inc. + * 901 San Antonio Road, Palo Alto, CA 94303, USA + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License version 2.1, as published by the Free Software Foundation. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + * + * + * Sun Industry Standards Source License Version 1.1 + * ================================================= + * The contents of this file are subject to the Sun Industry Standards + * Source License Version 1.1 (the "License"); You may not use this file + * except in compliance with the License. You may obtain a copy of the + * License at http://www.openoffice.org/license.html. + * + * Software provided under this License is provided on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, + * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS, + * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING. + * See the License for the specific provisions governing your rights and + * obligations concerning the Software. + * + * The Initial Developer of the Original Code is: Sun Microsystems, Inc. + * + * Copyright: 2000 by Sun Microsystems, Inc. + * + * All Rights Reserved. + * + * Contributor(s): _______________________________________ + * + * + ************************************************************************/ +#include <svtools/ttglobal.hrc> + + +// Hier sind die Messages aus dem Verzeichnis /basic/source/app enhalten + + +/////////////////////////////// +// Fehlermeldungen, die in das Resultfile gelangen. +// ********************* +// *** !!ACHTUNG!! *** +// ********************* +// Die Nummern dürfen sich NIE! ändern, +// da sie in den Resultfiles gespeichert sind, und bei erneutem Anzeigen +// statdessen die entsprechenden neuen oder garkeine Strings angzeigt werden. +/////////////////////////////// + +#define S_PROG_START ( BAS_START + 0 ) +#define S_ERROR_OUTSIDE_TESTCASE ( BAS_START + 1 ) +#define S_WARNING_PREFIX ( BAS_START + 2 ) diff --git a/basic/source/app/basmsg.src b/basic/source/app/basmsg.src new file mode 100644 index 000000000000..abaab9a6b21f --- /dev/null +++ b/basic/source/app/basmsg.src @@ -0,0 +1,142 @@ +/************************************************************************* + * + * $RCSfile: basmsg.src,v $ + * + * $Revision: 1.1.1.1 $ + * + * last change: $Author: hr $ $Date: 2000-09-18 16:12:08 $ + * + * The Contents of this file are made available subject to the terms of + * either of the following licenses + * + * - GNU Lesser General Public License Version 2.1 + * - Sun Industry Standards Source License Version 1.1 + * + * Sun Microsystems Inc., October, 2000 + * + * GNU Lesser General Public License Version 2.1 + * ============================================= + * Copyright 2000 by Sun Microsystems, Inc. + * 901 San Antonio Road, Palo Alto, CA 94303, USA + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License version 2.1, as published by the Free Software Foundation. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + * + * + * Sun Industry Standards Source License Version 1.1 + * ================================================= + * The contents of this file are subject to the Sun Industry Standards + * Source License Version 1.1 (the "License"); You may not use this file + * except in compliance with the License. You may obtain a copy of the + * License at http://www.openoffice.org/license.html. + * + * Software provided under this License is provided on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, + * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS, + * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING. + * See the License for the specific provisions governing your rights and + * obligations concerning the Software. + * + * The Initial Developer of the Original Code is: Sun Microsystems, Inc. + * + * Copyright: 2000 by Sun Microsystems, Inc. + * + * All Rights Reserved. + * + * Contributor(s): _______________________________________ + * + * + ************************************************************************/ +#include "basmsg.hrc" + + +// Hier sind die Messages aus dem Verzeichnis /basic/source/app enhalten + + +/////////////////////////////// +// Fehlermeldungen, die in das Resultfile gelangen. +// ********************* +// *** !!ACHTUNG!! *** +// ********************* +// Die Nummern dürfen sich NIE! ändern, +// da sie in den Resultfiles gespeichert sind, und bei erneutem Anzeigen +// statdessen die entsprechenden neuen oder garkeine Strings angzeigt werden. +/////////////////////////////// +String S_PROG_START +{ + Text = "Programmstart: ($Arg1); ($Arg2)"; + Text[ english_us ] = "Program start: ($Arg1); ($Arg2)"; + Text[ LANGUAGE_USER1 ] = "Programmstart: <Datum>; <Uhrzeit>"; + Text[ portuguese ] = "Início do programa: ($Arg1); ($Arg2)"; + Text[ russian ] = "Program start: ($Arg1); ($Arg2)"; + Text[ greek ] = "Program start: ($Arg1); ($Arg2)"; + Text[ dutch ] = "Programma start: ($Arg1); ($Arg2)"; + Text[ french ] = "Démarrage du programme : ($Arg1); ($Arg2)"; + Text[ spanish ] = "Inicio de programa: ($Arg1); ($Arg2)"; + Text[ italian ] = "Program start: ($Arg1); ($Arg2)"; + Text[ danish ] = "Program start: ($Arg1); ($Arg2)"; + Text[ swedish ] = "Program start: ($Arg1); ($Arg2)"; + Text[ polish ] = "Uruchomienie programu: ($Arg1); ($Arg2)"; + Text[ portuguese_brazilian ] = "Programmstart: ($Arg1); ($Arg2)"; + Text[ japanese ] = "Program start: ($Arg1); ($Arg2)"; + Text[ korean ] = "Programmstart: ($Arg1); ($Arg2)"; + Text[ chinese_simplified ] = "Program start: ($Arg1); ($Arg2)"; + Text[ chinese_traditional ] = "Program start: ($Arg1); ($Arg2)"; + Text[ arabic ] = "Program start: ($Arg1); ($Arg2)"; + Text[ turkish ] = "Program baþlatma: ($Arg1); ($Arg2)"; +}; +String S_ERROR_OUTSIDE_TESTCASE +{ + Text = "Fehler außerhalb eines Testcase."; + Text[ english_us ] = "Error outside of test case"; + Text[ portuguese ] = "Erro fora de um «test case»."; + Text[ russian ] = "Error outside of test case."; + Text[ greek ] = "Error outside of test case."; + Text[ dutch ] = "Fout buiten testcase."; + Text[ french ] = "Erreur en dehors d'un scénario de test (test case)."; + Text[ spanish ] = "Error fuera de un Testcase."; + Text[ italian ] = "Error outside of test case"; + Text[ danish ] = "Error outside of test case."; + Text[ swedish ] = "Error outside of test case"; + Text[ polish ] = "B³¹d poza Testcase."; + Text[ portuguese_brazilian ] = "Fehler außerhalb eines Testcase."; + Text[ japanese ] = "Error outside of test case."; + Text[ korean ] = "Å×½ºÆ® ÄÉÀ̽º ¿ÜºÎÀÇ ¿À·ù"; + Text[ chinese_simplified ] = "Error outside of test case"; + Text[ chinese_traditional ] = "Error outside of test case"; + Text[ arabic ] = "Error outside of test case"; + Text[ turkish ] = "Error outside of test case"; +}; +String S_WARNING_PREFIX +{ + Text = "Warnung: "; + Text[ english_us ] = "Warning: "; + Text[ portuguese ] = "Aviso: "; + Text[ russian ] = "Ïðåäóïðåæäåíèå: "; + Text[ greek ] = "Warning: "; + Text[ dutch ] = "Waarschuwing: "; + Text[ french ] = "Avertissement : "; + Text[ spanish ] = "Advertencia: "; + Text[ italian ] = "Warning: "; + Text[ danish ] = "Warning: "; + Text[ swedish ] = "Warning: "; + Text[ polish ] = "Ostrze¿enie: "; + Text[ portuguese_brazilian ] = "Warning: "; + Text[ japanese ] = "Œx: "; + Text[ korean ] = "°æ°í: "; + Text[ chinese_simplified ] = "Warning: "; + Text[ chinese_traditional ] = "Warning: "; + Text[ arabic ] = "ÊÍÐíÑ: "; + Text[ turkish ] = "Uyarý: "; +}; diff --git a/basic/source/app/brkpnts.cxx b/basic/source/app/brkpnts.cxx new file mode 100644 index 000000000000..29b7326c2ff7 --- /dev/null +++ b/basic/source/app/brkpnts.cxx @@ -0,0 +1,434 @@ +/************************************************************************* + * + * $RCSfile: brkpnts.cxx,v $ + * + * $Revision: 1.1.1.1 $ + * + * last change: $Author: hr $ $Date: 2000-09-18 16:12:08 $ + * + * The Contents of this file are made available subject to the terms of + * either of the following licenses + * + * - GNU Lesser General Public License Version 2.1 + * - Sun Industry Standards Source License Version 1.1 + * + * Sun Microsystems Inc., October, 2000 + * + * GNU Lesser General Public License Version 2.1 + * ============================================= + * Copyright 2000 by Sun Microsystems, Inc. + * 901 San Antonio Road, Palo Alto, CA 94303, USA + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License version 2.1, as published by the Free Software Foundation. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + * + * + * Sun Industry Standards Source License Version 1.1 + * ================================================= + * The contents of this file are subject to the Sun Industry Standards + * Source License Version 1.1 (the "License"); You may not use this file + * except in compliance with the License. You may obtain a copy of the + * License at http://www.openoffice.org/license.html. + * + * Software provided under this License is provided on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, + * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS, + * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING. + * See the License for the specific provisions governing your rights and + * obligations concerning the Software. + * + * The Initial Developer of the Original Code is: Sun Microsystems, Inc. + * + * Copyright: 2000 by Sun Microsystems, Inc. + * + * All Rights Reserved. + * + * Contributor(s): _______________________________________ + * + * + ************************************************************************/ + +#ifndef _LIST_HXX //autogen +#include <tools/list.hxx> +#endif +#ifndef _SBXCLASS_HXX //autogen +#include <svtools/sbx.hxx> +#endif +#ifndef _SB_SBMOD_HXX //autogen +#include <sbmod.hxx> +#endif +#ifndef _SB_SBSTAR_HXX //autogen +#include <sbstar.hxx> +#endif +#ifndef _SB_SBMETH_HXX //autogen +#include <sbmeth.hxx> +#endif +#ifndef _SV_IMAGE_HXX //autogen +#include <vcl/image.hxx> +#endif +#ifndef _TEXTDATA_HXX //autogen +#include <svtools/textdata.hxx> +#endif +#ifndef _SV_CONFIG_HXX //autogen +#include <vcl/config.hxx> +#endif +#ifndef _SV_GRADIENT_HXX +#include <vcl/gradient.hxx> +#endif + +#ifndef _BASIC_TTRESHLP_HXX +#include "ttstrhlp.hxx" +#endif + +#include <brkpnts.hxx> +#include "basic.hrc" +#include "resids.hrc" + +struct Breakpoint +{ + USHORT nLine; + + Breakpoint( USHORT nL ) { nLine = nL; } +}; + + +ImageList* BreakpointWindow::pImages = NULL; + + +BreakpointWindow::BreakpointWindow( Window *pParent ) +: Window( pParent ) +, nCurYOffset( 0 ) +, pModule( NULL ) +{ + if ( !pImages ) + pImages = new ImageList( ResId( RID_IMGLST_LAYOUT ) ); + + Gradient aGradient( GRADIENT_AXIAL, Color( 185, 182, 215 ), Color( 250, 245, 255 ) ); + aGradient.SetAngle(900); + SetBackground( aGradient ); + Show(); +} + + +void BreakpointWindow::Reset() +{ + Breakpoint* pBrk = First(); + while ( pBrk ) + { + delete pBrk; + pBrk = Next(); + } + Clear(); + + pModule->ClearAllBP(); +} + +void BreakpointWindow::SetModule( SbModule *pMod ) +{ + pModule = pMod; + USHORT i; + for ( i=0 ; i < pModule->GetBPCount() ; i++ ) + { + InsertBreakpoint( pModule->GetBP( i ) ); + } + SetBPsInModule(); +} + + +void BreakpointWindow::SetBPsInModule() +{ + pModule->ClearAllBP(); + + Breakpoint* pBrk = First(); + while ( pBrk ) + { + pModule->SetBP( (USHORT)pBrk->nLine ); +#ifdef DEBUG + DBG_ASSERT( pModule->IsBP( (USHORT)pBrk->nLine ), "Brechpunkt wurde nicht gesetzt" ) +#endif + pBrk = Next(); + } + for ( USHORT nMethod = 0; nMethod < pModule->GetMethods()->Count(); nMethod++ ) + { + SbMethod* pMethod = (SbMethod*)pModule->GetMethods()->Get( nMethod ); + DBG_ASSERT( pMethod, "Methode nicht gefunden! (NULL)" ); + pMethod->SetDebugFlags( pMethod->GetDebugFlags() | SbDEBUG_BREAK ); + } +} + + +void BreakpointWindow::InsertBreakpoint( USHORT nLine ) +{ + Breakpoint* pNewBrk = new Breakpoint( nLine ); + Breakpoint* pBrk = First(); + while ( pBrk ) + { + if ( nLine <= pBrk->nLine ) + { + if ( pBrk->nLine != nLine ) + Insert( pNewBrk ); + else + delete pNewBrk; + pNewBrk = NULL; + pBrk = NULL; + } + else + pBrk = Next(); + } + // Keine Einfuegeposition gefunden => LIST_APPEND + if ( pNewBrk ) + Insert( pNewBrk, LIST_APPEND ); + + // vielleicht mal etwas genauer... + Invalidate(); + + if ( pModule->SetBP( nLine ) ) + { +#ifdef DEBUG + DBG_ASSERT( pModule->IsBP( nLine ), "Brechpunkt wurde nicht gesetzt" ) +#endif + if ( StarBASIC::IsRunning() ) + { + for ( USHORT nMethod = 0; nMethod < pModule->GetMethods()->Count(); nMethod++ ) + { + SbMethod* pMethod = (SbMethod*)pModule->GetMethods()->Get( nMethod ); + DBG_ASSERT( pMethod, "Methode nicht gefunden! (NULL)" ); + pMethod->SetDebugFlags( pMethod->GetDebugFlags() | SbDEBUG_BREAK ); + } + } + } +#ifdef DEBUG + DBG_ASSERT( pModule->IsBP( nLine ), "Brechpunkt wurde nicht gesetzt" ) +#endif +} + + +Breakpoint* BreakpointWindow::FindBreakpoint( ULONG nLine ) +{ + Breakpoint* pBrk = First(); + while ( pBrk ) + { + if ( pBrk->nLine == nLine ) + return pBrk; + + pBrk = Next(); + } + + return (Breakpoint*)0; +} + + +void BreakpointWindow::AdjustBreakpoints( ULONG nLine, BOOL bInserted ) +{ + if ( nLine == TEXT_PARA_ALL+1 ) + return; + Breakpoint* pBrk = First(); + while ( pBrk ) + { + BOOL bDelBrk = FALSE; + if ( pBrk->nLine == nLine ) + { + if ( bInserted ) + pBrk->nLine++; + else + bDelBrk = TRUE; + } + else if ( pBrk->nLine > nLine ) + { + if ( bInserted ) + pBrk->nLine++; + else + pBrk->nLine--; + } + + if ( bDelBrk ) + { + ULONG n = GetCurPos(); + delete Remove( pBrk ); + pBrk = Seek( n ); + } + else + { + pBrk = Next(); + } + } +} + + +void BreakpointWindow::LoadBreakpoints( String aFilename ) +{ + Config aConfig(Config::GetConfigName( Config::GetDefDirectory(), CUniString("testtool") )); + + aConfig.SetGroup("Breakpoints"); + + ByteString aBreakpoints; + aBreakpoints = aConfig.ReadKey( ByteString( aFilename, RTL_TEXTENCODING_UTF8 ) ); + + xub_StrLen i; + + for ( i = 0 ; i < aBreakpoints.GetTokenCount( ';' ) ; i++ ) + { + InsertBreakpoint( aBreakpoints.GetToken( i, ';' ).ToInt32() ); + } +} + + +void BreakpointWindow::SaveBreakpoints( String aFilename ) +{ + ByteString aBreakpoints; + + Breakpoint* pBrk = First(); + while ( pBrk ) + { + if ( aBreakpoints.Len() ) + aBreakpoints += ';'; + + aBreakpoints += ByteString::CreateFromInt32( pBrk->nLine ); + pBrk = Next(); + } + + Config aConfig(Config::GetConfigName( Config::GetDefDirectory(), CUniString("testtool") )); + + aConfig.SetGroup("Breakpoints"); + + if ( aBreakpoints.Len() ) + aConfig.WriteKey( ByteString( aFilename, RTL_TEXTENCODING_UTF8 ), aBreakpoints ); + else + aConfig.DeleteKey( ByteString( aFilename, RTL_TEXTENCODING_UTF8 ) ); +} + + +void BreakpointWindow::Paint( const Rectangle& ) +{ + Size aOutSz( GetOutputSize() ); + long nLineHeight = GetTextHeight(); + + Image aBrk( pImages->GetImage( IMGID_BRKENABLED ) ); + Size aBmpSz( aBrk.GetSizePixel() ); + aBmpSz = PixelToLogic( aBmpSz ); + Point aBmpOff( 0, 0 ); + aBmpOff.X() = ( aOutSz.Width() - aBmpSz.Width() ) / 2; + aBmpOff.Y() = ( nLineHeight - aBmpSz.Height() ) / 2; + + Breakpoint* pBrk = First(); + while ( pBrk ) + { +#ifdef DEBUG + DBG_ASSERT( pModule->IsBP( pBrk->nLine ), "Brechpunkt wurde nicht gesetzt" ) +#endif + ULONG nLine = pBrk->nLine-1; + ULONG nY = nLine*nLineHeight - nCurYOffset; + DrawImage( Point( 0, nY ) + aBmpOff, aBrk ); + pBrk = Next(); + } + ShowMarker( TRUE ); +} + + +Breakpoint* BreakpointWindow::FindBreakpoint( const Point& rMousePos ) +{ + long nLineHeight = GetTextHeight(); + long nYPos = rMousePos.Y() + nCurYOffset; + + Breakpoint* pBrk = First(); + while ( pBrk ) + { + ULONG nLine = pBrk->nLine-1; + long nY = nLine*nLineHeight; + if ( ( nYPos > nY ) && ( nYPos < ( nY + nLineHeight ) ) ) + return pBrk; + pBrk = Next(); + } + return 0; +} + + +void BreakpointWindow::ToggleBreakpoint( USHORT nLine ) +{ + BOOL bNewBreakPoint = FALSE; + Breakpoint* pBrk = FindBreakpoint( nLine ); + if ( pBrk ) // entfernen + { + pModule->ClearBP( nLine ); + delete Remove( pBrk ); + } + else // einen erzeugen + { + InsertBreakpoint( nLine ); + } + // vielleicht mal etwas genauer... + Invalidate(); +} + +void BreakpointWindow::ShowMarker( BOOL bShow ) +{ + if ( nMarkerPos == MARKER_NOMARKER ) + return; + + Size aOutSz( GetOutputSize() ); + long nLineHeight = GetTextHeight(); + + Image aMarker; + if ( bErrorMarker ) + aMarker = pImages->GetImage( IMGID_ERRORMARKER ); + else + aMarker = pImages->GetImage( IMGID_STEPMARKER ); + + Size aMarkerSz( aMarker.GetSizePixel() ); + aMarkerSz = PixelToLogic( aMarkerSz ); + Point aMarkerOff( 0, 0 ); + aMarkerOff.X() = ( aOutSz.Width() - aMarkerSz.Width() ) / 2; + aMarkerOff.Y() = ( nLineHeight - aMarkerSz.Height() ) / 2; + + ULONG nY = nMarkerPos*nLineHeight - nCurYOffset; + Point aPos( 0, nY ); + aPos += aMarkerOff; + if ( bShow ) + DrawImage( aPos, aMarker ); + else + Invalidate( Rectangle( aPos, aMarkerSz ) ); +} + + +void BreakpointWindow::MouseButtonDown( const MouseEvent& rMEvt ) +{ + if ( rMEvt.GetClicks() == 2 ) + { + Point aMousePos( PixelToLogic( rMEvt.GetPosPixel() ) ); + long nLineHeight = GetTextHeight(); + long nYPos = aMousePos.Y() + nCurYOffset; + long nLine = nYPos / nLineHeight + 1; + ToggleBreakpoint( nLine ); + // vielleicht mal etwas genauer... + Invalidate(); + } +} + + +void BreakpointWindow::SetMarkerPos( USHORT nLine, BOOL bError ) +{ + ShowMarker( FALSE ); // Alten wegzeichen... + nMarkerPos = nLine; + bErrorMarker = bError; + ShowMarker( TRUE ); // Neuen zeichnen... + Update(); +} + + +void BreakpointWindow::Scroll( long nHorzScroll, long nVertScroll ) +{ + nCurYOffset -= nVertScroll; + Window::Scroll( nHorzScroll, nVertScroll ); +} + diff --git a/basic/source/app/brkpnts.hxx b/basic/source/app/brkpnts.hxx new file mode 100644 index 000000000000..9150542a9304 --- /dev/null +++ b/basic/source/app/brkpnts.hxx @@ -0,0 +1,130 @@ +/************************************************************************* + * + * $RCSfile: brkpnts.hxx,v $ + * + * $Revision: 1.1.1.1 $ + * + * last change: $Author: hr $ $Date: 2000-09-18 16:12:08 $ + * + * The Contents of this file are made available subject to the terms of + * either of the following licenses + * + * - GNU Lesser General Public License Version 2.1 + * - Sun Industry Standards Source License Version 1.1 + * + * Sun Microsystems Inc., October, 2000 + * + * GNU Lesser General Public License Version 2.1 + * ============================================= + * Copyright 2000 by Sun Microsystems, Inc. + * 901 San Antonio Road, Palo Alto, CA 94303, USA + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License version 2.1, as published by the Free Software Foundation. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + * + * + * Sun Industry Standards Source License Version 1.1 + * ================================================= + * The contents of this file are subject to the Sun Industry Standards + * Source License Version 1.1 (the "License"); You may not use this file + * except in compliance with the License. You may obtain a copy of the + * License at http://www.openoffice.org/license.html. + * + * Software provided under this License is provided on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, + * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS, + * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING. + * See the License for the specific provisions governing your rights and + * obligations concerning the Software. + * + * The Initial Developer of the Original Code is: Sun Microsystems, Inc. + * + * Copyright: 2000 by Sun Microsystems, Inc. + * + * All Rights Reserved. + * + * Contributor(s): _______________________________________ + * + * + ************************************************************************/ + +#ifndef _SV_WINDOW_HXX //autogen +#include <vcl/window.hxx> +#endif + +#define MARKER_NOMARKER 0xFFFF + + +class SbModule; +class BreakpointListe; +struct Breakpoint; +class ImageList; + +DECLARE_LIST( BreakpointList, Breakpoint* ); + +class BreakpointWindow : public Window, public BreakpointList +{ +public: + BreakpointWindow( Window *pParent ); +// ~BreakpointWindow(); + + void Reset(); + + void SetModule( SbModule *pMod ); + void SetBPsInModule(); + + void InsertBreakpoint( USHORT nLine ); + void ToggleBreakpoint( USHORT nLine ); + void AdjustBreakpoints( ULONG nLine, BOOL bInserted ); + + void LoadBreakpoints( String aFilename ); + void SaveBreakpoints( String aFilename ); + +protected: + Breakpoint* FindBreakpoint( ULONG nLine ); + +private: + BreakpointListe *pBreakpoints; + +private: + long nCurYOffset; + USHORT nMarkerPos; + SbModule* pModule; + BOOL bErrorMarker; + static ImageList *pImages; + +protected: + virtual void Paint( const Rectangle& ); + Breakpoint* FindBreakpoint( const Point& rMousePos ); + void ShowMarker( BOOL bShow ); + virtual void MouseButtonDown( const MouseEvent& rMEvt ); + +public: + +// void SetModulWindow( ModulWindow* pWin ) +// { pModulWindow = pWin; } + + void SetMarkerPos( USHORT nLine, BOOL bErrorMarker = FALSE ); + + void Scroll( long nHorzScroll, long nVertScroll ); + long& GetCurYOffset() { return nCurYOffset; } +}; + + + + + + + + diff --git a/basic/source/app/dataedit.hxx b/basic/source/app/dataedit.hxx new file mode 100644 index 000000000000..5727f157bd37 --- /dev/null +++ b/basic/source/app/dataedit.hxx @@ -0,0 +1,155 @@ +/************************************************************************* + * + * $RCSfile: dataedit.hxx,v $ + * + * $Revision: 1.1.1.1 $ + * + * last change: $Author: hr $ $Date: 2000-09-18 16:12:08 $ + * + * The Contents of this file are made available subject to the terms of + * either of the following licenses + * + * - GNU Lesser General Public License Version 2.1 + * - Sun Industry Standards Source License Version 1.1 + * + * Sun Microsystems Inc., October, 2000 + * + * GNU Lesser General Public License Version 2.1 + * ============================================= + * Copyright 2000 by Sun Microsystems, Inc. + * 901 San Antonio Road, Palo Alto, CA 94303, USA + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License version 2.1, as published by the Free Software Foundation. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + * + * + * Sun Industry Standards Source License Version 1.1 + * ================================================= + * The contents of this file are subject to the Sun Industry Standards + * Source License Version 1.1 (the "License"); You may not use this file + * except in compliance with the License. You may obtain a copy of the + * License at http://www.openoffice.org/license.html. + * + * Software provided under this License is provided on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, + * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS, + * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING. + * See the License for the specific provisions governing your rights and + * obligations concerning the Software. + * + * The Initial Developer of the Original Code is: Sun Microsystems, Inc. + * + * Copyright: 2000 by Sun Microsystems, Inc. + * + * All Rights Reserved. + * + * Contributor(s): _______________________________________ + * + * + ************************************************************************/ + +#ifndef DATAEDIT_HXX +#define DATAEDIT_HXX + +#ifndef _SV_MENU_HXX +#include <vcl/menu.hxx> +#endif +#ifndef _LINK_HXX //autogen +#include <tools/link.hxx> +#endif +#ifndef _SV_GEN_HXX +#include <tools/gen.hxx> +#endif +#ifndef _TEXTDATA_HXX //autogen +#include <svtools/textdata.hxx> +#endif + +class String; +class Font; + +// Find, Load und Save müssen implementiert werden, +// die anderen müssen in MemberType existieren +#define DATA_FUNC_DEF( MemberName, MemberType ) \ +public: \ + MemberType MemberName; \ + BOOL Find( const String& rStr ); \ + BOOL Load( const String& rStr ); \ + BOOL Save( const String& rStr ); \ + \ + void GrabFocus(){ MemberName.GrabFocus(); } \ + void Show(){ MemberName.Show(); } \ + void SetPosPixel( const Point& rNewPos ){ MemberName.SetPosPixel(rNewPos); }\ + void SetSizePixel( const Size& rNewSize ){ MemberName.SetSizePixel(rNewSize); } \ + Size GetSizePixel(){ return MemberName.GetSizePixel(); } \ + Point GetPosPixel(){ return MemberName.GetPosPixel(); } \ + void Update(){ MemberName.Update(); } \ + void SetFont( const Font& rNewFont ){ MemberName.SetFont(rNewFont); } \ + \ + void Delete(); \ + void Cut(); \ + void Copy(); \ + void Paste(); \ + void Undo(); \ + void Redo(); \ + String GetText() const; \ + void SetText( const String& rStr ); \ + BOOL HasText() const; \ + String GetSelected(); \ + TextSelection GetSelection() const; \ + void SetSelection( const TextSelection& rSelection ); \ + USHORT GetLineNr() const; \ + void ReplaceSelected( const String& rStr ); \ + BOOL IsModified(); \ + void SetModifyHdl( Link l ); + + +class DataEdit +{ +public: + virtual ~DataEdit(){} + + virtual void Delete()=0; + virtual void Cut()=0; + virtual void Copy()=0; + virtual void Paste()=0; + + virtual void Undo()=0; + virtual void Redo()=0; + + virtual BOOL Find( const String& )=0; // Text suchen & markieren + virtual BOOL Load( const String& )=0; // Text aus Datei laden + virtual BOOL Save( const String& )=0; // Text in Datei speichern + virtual String GetSelected()=0; + virtual void GrabFocus()=0; + virtual TextSelection GetSelection() const=0; + virtual void SetSelection( const TextSelection& rSelection )=0; + virtual USHORT GetLineNr() const=0; + virtual String GetText() const=0; + virtual void SetText( const String& rStr )=0; + virtual BOOL HasText() const=0; // damit vermeiden wir GetText.Len() + virtual void ReplaceSelected( const String& rStr )=0; + virtual BOOL IsModified()=0; + virtual void SetModifyHdl( Link )=0; + virtual void Show()=0; + virtual void SetPosPixel( const Point& rNewPos )=0; + virtual void SetSizePixel( const Size& rNewSize )=0; + virtual Size GetSizePixel()=0; + virtual Point GetPosPixel()=0; + virtual void Update()=0; + virtual void SetFont( const Font& rNewFont )=0; + + virtual void BuildKontextMenu( PopupMenu *&pMenu ){;} // Wer will kann hier eigene Einträge hinzufügen +}; + +#endif diff --git a/basic/source/app/dialogs.cxx b/basic/source/app/dialogs.cxx new file mode 100644 index 000000000000..31865100b098 --- /dev/null +++ b/basic/source/app/dialogs.cxx @@ -0,0 +1,1064 @@ +/************************************************************************* + * + * $RCSfile: dialogs.cxx,v $ + * + * $Revision: 1.1.1.1 $ + * + * last change: $Author: hr $ $Date: 2000-09-18 16:12:09 $ + * + * The Contents of this file are made available subject to the terms of + * either of the following licenses + * + * - GNU Lesser General Public License Version 2.1 + * - Sun Industry Standards Source License Version 1.1 + * + * Sun Microsystems Inc., October, 2000 + * + * GNU Lesser General Public License Version 2.1 + * ============================================= + * Copyright 2000 by Sun Microsystems, Inc. + * 901 San Antonio Road, Palo Alto, CA 94303, USA + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License version 2.1, as published by the Free Software Foundation. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + * + * + * Sun Industry Standards Source License Version 1.1 + * ================================================= + * The contents of this file are subject to the Sun Industry Standards + * Source License Version 1.1 (the "License"); You may not use this file + * except in compliance with the License. You may obtain a copy of the + * License at http://www.openoffice.org/license.html. + * + * Software provided under this License is provided on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, + * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS, + * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING. + * See the License for the specific provisions governing your rights and + * obligations concerning the Software. + * + * The Initial Developer of the Original Code is: Sun Microsystems, Inc. + * + * Copyright: 2000 by Sun Microsystems, Inc. + * + * All Rights Reserved. + * + * Contributor(s): _______________________________________ + * + * + ************************************************************************/ + +#ifndef _SOLAR_H +#include <tools/solar.h> +#endif + +HACK( #define protected public ) +#define protected public // Kleine Schweinerei um an FreeResource ranzukommen +#ifndef _TOOLS_RC_HXX //autogen +#include <tools/rc.hxx> +#endif +#undef protected + +#ifndef _DIALOG_HXX //autogen +#include <vcl/dialog.hxx> +#endif +#ifndef _BUTTON_HXX //autogen +#include <vcl/button.hxx> +#endif +#ifndef _FIXED_HXX //autogen +#include <vcl/fixed.hxx> +#endif +#ifndef _EDIT_HXX //autogen +#include <vcl/edit.hxx> +#endif +#ifndef _CONFIG_HXX //autogen +#include <vcl/config.hxx> +#endif +#ifndef _MSGBOX_HXX //autogen +#include <vcl/msgbox.hxx> +#endif +#ifndef _TOOLS_DEBUG_HXX //autogen +#include <tools/debug.hxx> +#endif +#ifndef _SV_FILEDLG_HXX //autogen +#include <svtools/filedlg.hxx> +#endif +#ifndef _STREAM_HXX //autogen +#include <tools/stream.hxx> +#endif +#ifndef _FSYS_HXX //autogen +#include <tools/fsys.hxx> +#endif +#ifndef _SV_CLIP_HXX //autogen +#include <vcl/clip.hxx> +#endif +#ifndef _SV_SPLITWIN_HXX //autogen +#include <vcl/splitwin.hxx> +#endif +#ifndef _ZFORLIST_HXX //autogen +#include <svtools/zformat.hxx> +#endif + +#include <svtools/pver.hxx> + +// Ohne Includeschutz +#include <svtools/svtdata.hxx> +#include <svtools/solar.hrc> + + +#ifndef _BASIC_DISPDEFS_HXX +#include "dispdefs.hxx" +#endif +#include "testtool.hxx" +#include "dialogs.hxx" +#include "resids.hrc" +#include "basic.hrc" + +#include "app.hxx" + +AboutDialog::AboutDialog( Window* pParent, const ResId& id ) +: ModalDialog( pParent, id ) +, a1( this, ResId( 1 ) ) +, a3( this, ResId( 3 ) ) +, a4( this, ResId( 4 ) ) +, aVersionString( this, ResId( RID_VERSIONSTRING ) ) +//, aIcon( this, ResId( RID_ICON ) ) +, aOk ( this, ResId( RID_OK ) ) +{ + aVersionString.SetText( ProductVersion::GetMajorVersion().Append( ProductVersion::GetMinorVersion() ) + .AppendAscii( " BUILD:" ).Append( ProductVersion::GetBuildNumber() ) ); + FreeResource(); +} + +//////////////////////////////////////////////////////////////////// + +FindDialog::FindDialog( Window* pParent, const ResId& id, String& Text ) +: ModalDialog( pParent, id ) +, aFT1( this, ResId( RID_FIXEDTEXT1 ) ) +, aFind( this, ResId( RID_FIND ) ) +, aOk( this, ResId( RID_OK ) ) +, aCancel( this, ResId( RID_CANCEL ) ) +{ + FreeResource(); + pFind = &Text; + // Button-Handler: + aOk.SetClickHdl( LINK( this, FindDialog, ButtonClick ) ); + aCancel.SetClickHdl( LINK( this, FindDialog, ButtonClick ) ); + aFind.SetText( Text ); +} + +IMPL_LINK_INLINE_START( FindDialog, ButtonClick, Button *, pB ) +{ + if( pB == &aOk ) { + *pFind = aFind.GetText(); + EndDialog( TRUE ); + } else EndDialog( FALSE ); + return TRUE; +} +IMPL_LINK_INLINE_END( FindDialog, ButtonClick, Button *, pB ) + +ReplaceDialog::ReplaceDialog(Window* pParent, const ResId& id, String& Old, String& New ) +: ModalDialog( pParent, id ) +, aFT1( this, ResId( RID_FIXEDTEXT1 ) ) +, aFT2( this, ResId( RID_FIXEDTEXT2 ) ) +, aFind( this, ResId( RID_FIND ) ) +, aReplace(this, ResId( RID_REPLACE ) ) +, aOk( this, ResId( RID_OK ) ) +, aCancel( this, ResId( RID_CANCEL ) ) +{ + FreeResource(); + pFind = &Old; + pReplace = &New; + // Button-Handler: + aOk.SetClickHdl( LINK( this, ReplaceDialog, ButtonClick ) ); + aCancel.SetClickHdl( LINK( this, ReplaceDialog, ButtonClick ) ); + aFind.SetText( Old ); + aReplace.SetText( New ); +} + +IMPL_LINK( ReplaceDialog, ButtonClick, Button *, pB ) +{ + if( pB == &aOk ) { + *pFind = aFind.GetText(); + *pReplace = aReplace.GetText(); + EndDialog( TRUE ); + } else EndDialog( FALSE ); + return TRUE; +} + +//////////////////////////////////////////////////////////////////// + +ConfEdit::ConfEdit( Window* pParent, USHORT nResText, USHORT nResEdit, USHORT nResButton, const ByteString& aKN ) +: PushButton( pParent, ResId(nResButton) ) +, aText( pParent, ResId(nResText) ) +, aEdit( pParent, ResId(nResEdit) ) +, aKeyName(aKN) +{ + Config aConf(Config::GetConfigName( Config::GetDefDirectory(), CUniString("testtool") )); + aConf.SetGroup("Path"); + + String aTemp = UniString( aConf.ReadKey( aKeyName ), RTL_TEXTENCODING_UTF8 ); + aEdit.SetText( aTemp ); +} + +void ConfEdit::Save() +{ + Config aConf(Config::GetConfigName( Config::GetDefDirectory(), CUniString("testtool") )); + aConf.SetGroup("Path"); + + aConf.WriteKey( aKeyName, ByteString( aEdit.GetText(), RTL_TEXTENCODING_UTF8 ) ); +} + +void ConfEdit::Click() +{ + PathDialog aPD( this ); + aPD.SetPath( aEdit.GetText() ); + aPD.Execute(); + aEdit.SetText( aPD.GetPath() ); +} + + +OptionsDialog::OptionsDialog( Window* pParent, const ResId& aResId ) +: ModelessDialog( pParent, aResId ) +, aTabCtrl( this, ResId( RES_TC_OPTIONS ) ) +, aOK( this, ResId( RID_OK ) ) +, aCancel( this, ResId( RID_CANCEL ) ) +{ + aTabCtrl.FreeResource(); + FreeResource(); + aTabCtrl.SetActivatePageHdl( LINK( this, OptionsDialog, ActivatePageHdl ) ); + aTabCtrl.SetCurPageId( RID_TP_GEN ); + ActivatePageHdl( &aTabCtrl ); + + aOK.SetClickHdl( LINK( this, OptionsDialog, OKClick ) ); +} + +OptionsDialog::~OptionsDialog() +{ + for ( USHORT i = 0; i < aTabCtrl.GetPageCount(); i++ ) + delete aTabCtrl.GetTabPage( aTabCtrl.GetPageId( i ) ); +}; + +BOOL OptionsDialog::Close() +{ + if ( ModelessDialog::Close() ) + { + delete this; + return TRUE; + } + else + return FALSE; +} + + +IMPL_LINK( OptionsDialog, ActivatePageHdl, TabControl *, pTabCtrl ) +{ + USHORT nId = pTabCtrl->GetCurPageId(); + // Wenn TabPage noch nicht erzeugt wurde, dann erzeugen + if ( !pTabCtrl->GetTabPage( nId ) ) + { + TabPage *pNewTabPage = NULL; + switch ( nId ) + { + case RID_TP_SPE: + pNewTabPage = new SpecialOptions( pTabCtrl ); + break; + case RID_TP_GEN: + pNewTabPage = new GenericOptions( pTabCtrl ); + break; + default: DBG_ERROR( "PageHdl: Unbekannte ID!" ); + } + DBG_ASSERT( pNewTabPage, "Keine Page!" ); + pTabCtrl->SetTabPage( nId, pNewTabPage ); + } + return 0; +} + + + + +IMPL_LINK( OptionsDialog, OKClick, Button *, pButton ) +{ + SpecialOptions *pSpecial; + pSpecial = (SpecialOptions*)aTabCtrl.GetTabPage( RID_TP_SPE ); + if ( pSpecial ) + pSpecial->Save(); + + GenericOptions *pGeneric; + pGeneric = (GenericOptions*)aTabCtrl.GetTabPage( RID_TP_GEN ); + if ( pGeneric ) + pGeneric->Save(); + + Close(); + return 0; +} + + +SpecialOptions::SpecialOptions( Window* pParent ) +: TabPage( pParent, ResId( RID_TP_SPECIAL ) ) +, aDirs( this, ResId(GB_DIRECTORIES) ) +, aLog( this, LOG_TEXT, LOG_NAME, LOG_SET ,"LogBasisverzeichnis" ) +, aBasis( this, BASIS_TEXT, BASIS_NAME, BASIS_SET ,"Basisverzeichnis" ) +, aHID( this, HID_TEXT, HID_NAME, HID_SET ,"HIDVerzeichnis" ) +, aOther( this, ResId(GB_OTHER) ) +, aTimeoutText( this, ResId(TIMEOUT_TEXT) ) +, aServerTimeout( this, ResId(SERVER_TIMEOUT) ) +, aAutoReload( this, ResId(CB_AUTORELOAD) ) +{ + FreeResource(); + + Config aConf(Config::GetConfigName( Config::GetDefDirectory(), CUniString("testtool") )); + aConf.SetGroup("Misc"); + ByteString aTemp = aConf.ReadKey( "ServerTimeout", "10000" ); // Vorgabe 1 Minute + aServerTimeout.SetTime( Time(aTemp.ToInt32()) ); + + aTemp = aConf.ReadKey( "AutoReload", "0" ); + aAutoReload.Check( aTemp.CompareTo("1") == COMPARE_EQUAL ); +} + + +void SpecialOptions::Save() +{ + aLog.Save(); + aBasis.Save(); + aHID.Save(); + + Config aConf(Config::GetConfigName( Config::GetDefDirectory(), CUniString("testtool") )); + aConf.SetGroup("Misc"); + aConf.WriteKey( "ServerTimeout", ByteString::CreateFromInt32( aServerTimeout.GetTime().GetTime() ) ); + aConf.WriteKey( "AutoReload", aAutoReload.IsChecked()?"1":"0" ); + + ((BasicApp*)GetpApp())->LoadIniFile(); +} + + +GenericOptions::GenericOptions( Window* pParent ) +: TabPage( pParent, ResId( RID_TP_GENERIC ) ) +, aConf( Config::GetConfigName( Config::GetDefDirectory(), CUniString("testtool") ) ) + +, aGbArea( this, ResId( RID_GB_AREA ) ) +, aCbArea( this, ResId( RID_CB_AREA ) ) +, aPbNewArea( this, ResId( RID_PB_NEW_AREA ) ) +, aPbDelArea( this, ResId( RID_PD_DEL_AREA ) ) + +, aGbValue( this, ResId( RID_GB_VALUE ) ) +, aCbValue( this, ResId( RID_CB_VALUE ) ) +, aPbNewValue( this, ResId( RID_PB_NEW_VALUE ) ) +, aPbDelValue( this, ResId( RID_PB_DEL_VALUE ) ) +{ + FreeResource(); + DirEntry aDE; + aTempConfName = aDE.TempName().GetFull(); + pTempConf = new Config( aTempConfName ); + pTempConf->SetGroup("Main"); + + LoadData(); + + aCbArea.EnableAutocomplete( TRUE ); + aCbValue.EnableAutocomplete( TRUE ); + + aCbArea.SetSelectHdl( LINK( this, GenericOptions, LoadGroup ) ); + + aPbNewArea.SetClickHdl( LINK( this, GenericOptions, NewGroup ) ); + aPbDelArea.SetClickHdl( LINK( this, GenericOptions, DelGroup ) ); + + aPbNewValue.SetClickHdl( LINK( this, GenericOptions, NewValue ) ); + aPbDelValue.SetClickHdl( LINK( this, GenericOptions, DelValue ) ); + + + aCbArea.SetModifyHdl( LINK( this, GenericOptions, CheckButtonsHdl ) ); + aCbValue.SetModifyHdl( LINK( this, GenericOptions, CheckButtonsHdl ) ); + aCbValue.SetSelectHdl( LINK( this, GenericOptions, CheckButtonsHdl ) ); + +} + +GenericOptions::~GenericOptions() +{ + pTempConf->DeleteGroup("Main"); + delete pTempConf; +} + +StringList* GenericOptions::GetAllGroups() +{ + StringList* pGroups = new StringList(); + for ( USHORT i = 0 ; i < aConf.GetGroupCount() ; i++ ) + { + String *pGroup = new String( aConf.GetGroupName( i ), RTL_TEXTENCODING_UTF8 ); + pGroups->Insert( pGroup ); + } + return pGroups; +} + +void GenericOptions::LoadData() +{ + StringList* pGroups = GetAllGroups(); + String* pGroup; + while ( pGroup = pGroups->First() ) + { + pGroups->Remove( pGroup ); + aConf.SetGroup( ByteString( *pGroup, RTL_TEXTENCODING_UTF8 ) ); + if ( HasKey( aConf, C_KEY_AKTUELL ) ) + { + aCbArea.InsertEntry( *pGroup ); + } + delete pGroup; + } + aCbArea.SetText( aCbArea.GetEntry( 0 ) ); + CheckButtons( aCbArea, aPbNewArea, aPbDelArea ); + + // Und auch die Daten laden + LINK( this, GenericOptions, LoadGroup ).Call( NULL ); +} + + +String GenericOptions::ReadKey( const ByteString &aGroup, const ByteString &aKey ) +{ + ByteString aGroupKey( aGroup ); + aGroupKey.Append( aKey ); + if ( HasKey( *pTempConf, aGroupKey ) ) + return UniString( pTempConf->ReadKey( aGroupKey ), RTL_TEXTENCODING_UTF8 ); + else + { + aConf.SetGroup( aGroup ); + return UniString( aConf.ReadKey( aKey ), RTL_TEXTENCODING_UTF8 ); + } +} + +BOOL GenericOptions::HasKey( Config &aConfig, const ByteString &aKey ) +{ + return ! ( aConfig.ReadKey( aKey ).Len() == 0 && aConfig.ReadKey( aKey, "Default" ).Len() != 0 ); +} + +IMPL_LINK( GenericOptions, LoadGroup, ComboBox*, EMPTYARG ) +{ + String aCurrentValue; + String aAllValues; + + if ( aLastGroupName.Len() ) + { // Werte zwischenspeichern? + aCurrentValue = aCbValue.GetText(); + if ( aCbValue.GetEntryPos( aCurrentValue ) == COMBOBOX_ENTRY_NOTFOUND ) + { // Dann legen wir mal einen neuen Wert an + LINK( this, GenericOptions, NewValue ).Call( NULL ); + } + + pTempConf->WriteKey( ByteString( aLastGroupName ).Append( C_KEY_AKTUELL ), ByteString( aCurrentValue, RTL_TEXTENCODING_UTF8 ) ); + USHORT i; + for ( i=0 ; i < aCbValue.GetEntryCount() ; i++ ) + { + if ( i ) // ab Entry 1 + aAllValues += ';'; + aAllValues += aCbValue.GetEntry( i ); + } + pTempConf->WriteKey( ByteString( aLastGroupName ).Append( C_KEY_ALLE ), ByteString( aAllValues, RTL_TEXTENCODING_UTF8 ) ); + } + + aCbValue.Clear(); + + ByteString aGroupName = ByteString( aCbArea.GetText(), RTL_TEXTENCODING_UTF8 ); + aCurrentValue = ReadKey( aGroupName, C_KEY_AKTUELL ); + aAllValues = ReadKey( aGroupName, C_KEY_ALLE ); + + xub_StrLen i; + for ( i=0 ; i < aAllValues.GetTokenCount() ; i++ ) + { + aCbValue.InsertEntry( aAllValues.GetToken( i ) ); + } + aCbValue.SetText( aCurrentValue ); + + aLastGroupName = aGroupName; + CheckButtons( aCbArea, aPbNewArea, aPbDelArea ); + CheckButtons( aCbValue, aPbNewValue, aPbDelValue ); + return 0; +} + +IMPL_LINK( GenericOptions, DelGroup, Button*, EMPTYARG ) +{ + String aGroup = aCbArea.GetText(); + if ( aCbArea.GetEntryPos( aGroup ) != COMBOBOX_ENTRY_NOTFOUND ) + { + aCbArea.RemoveEntry( aGroup ); + ByteString aByteGroup( aGroup, RTL_TEXTENCODING_UTF8 ); + pTempConf->WriteKey( C_KEY_DELETE, pTempConf->ReadKey( C_KEY_DELETE ).Append( aByteGroup ) ); + pTempConf->DeleteKey( ByteString( aByteGroup ).Append( C_KEY_AKTUELL ) ); + pTempConf->DeleteKey( ByteString( aByteGroup ).Append( C_KEY_ALLE ) ); + } + + aCbArea.SetText( aCbArea.GetEntry( 0 ) ); + LINK( this, GenericOptions, LoadGroup ).Call( NULL ); + + return 0; +} + +IMPL_LINK( GenericOptions, NewGroup, Button*, EMPTYARG ) +{ + aCbArea.InsertEntry( aCbArea.GetText() ); + + LINK( this, GenericOptions, LoadGroup ).Call( NULL ); + + return 0; +} + +IMPL_LINK( GenericOptions, DelValue, Button*, EMPTYARG ) +{ + String aValue = aCbValue.GetText(); + if ( aCbValue.GetEntryPos( aValue ) != COMBOBOX_ENTRY_NOTFOUND ) + { + aCbValue.RemoveEntry( aValue ); + } + + aCbValue.SetText( aCbValue.GetEntry( 0 ) ); + CheckButtons( aCbValue, aPbNewValue, aPbDelValue ); + return 0; +} + +IMPL_LINK( GenericOptions, NewValue, Button*, EMPTYARG ) +{ + aCbValue.InsertEntry( aCbValue.GetText() ); + CheckButtons( aCbValue, aPbNewValue, aPbDelValue ); + return 0; +} + +IMPL_LINK( GenericOptions, CheckButtonsHdl, ComboBox*, pCB ) +{ + if ( pCB == &aCbArea ) + CheckButtons( aCbArea, aPbNewArea, aPbDelArea ); + if ( pCB == &aCbValue ) + CheckButtons( aCbValue, aPbNewValue, aPbDelValue ); + return 0; +} + +void GenericOptions::CheckButtons( ComboBox &aCB, Button &aNewB, Button &aDelB ) +{ + aNewB.Enable( aCB.GetEntryPos( aCB.GetText() ) == COMBOBOX_ENTRY_NOTFOUND && aCB.GetText().Len() ); +} + +void GenericOptions::Save() +{ + xub_StrLen i; + + // Erstmal eventuelle Änderungen Speichern + LINK( this, GenericOptions, LoadGroup ).Call( NULL ); + + // Zuerst alles was wir Gelöscht haben raushauen + ByteString aDelete = pTempConf->ReadKey( C_KEY_DELETE ); + for ( i=0 ; i < aDelete.GetTokenCount() ; i++ ) + { + aConf.DeleteGroup( aDelete.GetToken( i ) ); + } + + // Dann alles aus der Temporären in die Echte ini kopieren. + for ( i=0 ; i < aCbArea.GetEntryCount() ; i++ ) + { + ByteString aGroup = ByteString( aCbArea.GetEntry( i ), RTL_TEXTENCODING_UTF8 ); + ByteString aGroupKeyAktuell( aGroup ); + aGroupKeyAktuell.Append( C_KEY_AKTUELL ); + if ( HasKey( *pTempConf, aGroupKeyAktuell ) ) + { + ByteString aCurrentValue = pTempConf->ReadKey( aGroupKeyAktuell ); + aConf.SetGroup( ByteString( aCbArea.GetEntry( i ), RTL_TEXTENCODING_UTF8 ) ); + aConf.WriteKey( C_KEY_AKTUELL, aCurrentValue ); + aConf.WriteKey( C_KEY_ALLE, pTempConf->ReadKey( ByteString( aGroup ).Append( C_KEY_ALLE ) ) ); + } + } + aConf.Flush(); +} + + +class TextAndWin : public DockingWindow +{ + FixedText *pFt; + Window *pWin; + Window* pFtOriginalParent; + Window* pWinOriginalParent; + long nSpace; // Standardabstand + BOOL bAlignTop; + +public: + TextAndWin( Window *pParent, FixedText *pFtP, Window *pWinP, long nSpaceP, BOOL bAlignTopP ); + ~TextAndWin(); + + virtual void Resize(); +}; + +TextAndWin::TextAndWin( Window *pParent, FixedText *pFtP, Window *pWinP, long nSpaceP, BOOL bAlignTopP ) +: DockingWindow( pParent ) +, pFt( pFtP ) +, pWin( pWinP ) +, nSpace( nSpaceP ) +, bAlignTop( bAlignTopP ) +{ + pFtOriginalParent = pFt->GetParent(); + pWinOriginalParent = pWin->GetParent(); + pFt->SetParent( this ); + pWin->SetParent( this ); +} + +TextAndWin::~TextAndWin() +{ + pFt->SetParent( pFtOriginalParent ); + pWin->SetParent( pWinOriginalParent ); +} + +void TextAndWin::Resize() +{ + long nTopSpace = bAlignTop ? 0 : nSpace; + long nBottomSpace = bAlignTop ? nSpace : 0; + + long nFixedTextOffset; + if ( GetOutputSizePixel().Height() < 3 * pFt->GetSizePixel().Height() ) + { + pFt->Hide(); + nFixedTextOffset = 0; + } + else + { + pFt->Show(); + nFixedTextOffset = pFt->GetSizePixel().Height() + nSpace; + + // FixedText Positionieren + pFt->SetPosPixel( Point( 0, nTopSpace ) ); + } + + // Window Positionieren + long nWinPosY = nFixedTextOffset; + nWinPosY += nTopSpace; + pWin->SetPosPixel( Point( 0, nWinPosY ) ); + + // Größe des Window anpassen + long nWinHeight = GetOutputSizePixel().Height(); + nWinHeight -= nWinPosY; + nWinHeight -= nBottomSpace; + pWin->SetSizePixel( Size( GetOutputSizePixel().Width(), nWinHeight ) ); +} + +DisplayHidDlg::DisplayHidDlg( Window * pParent ) +: FloatingWindow( pParent, ResId( IDD_DISPLAY_HID ) ) +, aTbConf( this, ResId( RID_TB_CONF ) ) +, aFtControls( this, ResId( RID_FT_CONTROLS ) ) +, aMlbControls( this, ResId( RID_MLB_CONTROLS ) ) +, aFtSlots( this, ResId( RID_FT_SLOTS ) ) +, aMlbSlots( this, ResId( RID_MLB_SLOTS ) ) +, aPbKopieren( this, ResId( RID_PB_KOPIEREN ) ) +, aPbBenennen( this, ResId( RID_PB_BENENNEN ) ) +, aPbSelectAll( this, ResId( RID_PB_SELECTALL ) ) +, aOKClose( this, ResId( RID_OK_CLOSE ) ) +, nDisplayMode( DH_MODE_KURZNAME | DH_MODE_LANGNAME ) // Falls wir ein altes Office haben diesen Default verwenden +{ + FreeResource(); + + ResMgr* pRM = CREATERESMGR( svt ); + ToolBox aOrig( this, ResId( 12345, pRM ) ); + delete pRM; + + aTbConf.CopyItem( aOrig, 4 ); + aTbConf.InsertSeparator(); + aTbConf.CopyItem( aOrig, 5 ); + aTbConf.CopyItem( aOrig, 6 ); + aTbConf.CopyItem( aOrig, 7 ); + aTbConf.SetOutStyle( TOOLBOX_STYLE_FLAT ); + +#ifndef DEBUG + aTbConf.Hide(); +#endif + + pSplit = new SplitWindow( this ); + pControls = new TextAndWin( pSplit, &aFtControls, &aMlbControls, aMlbControls.GetPosPixel().X(), TRUE ); + pSlots = new TextAndWin( pSplit, &aFtSlots, &aMlbSlots, aMlbControls.GetPosPixel().X(), FALSE ); + + pSplit->SetPosPixel( aFtControls.GetPosPixel() ); + pSplit->InsertItem( 1, pControls, 70, SPLITWINDOW_APPEND, 0, SWIB_PERCENTSIZE ); + pSplit->InsertItem( 2, pSlots, 30, SPLITWINDOW_APPEND, 0, SWIB_PERCENTSIZE ); + pSplit->Show(); + + aTbConf.SetBorderStyle( WINDOW_BORDER_NORMAL ); + aPbKopieren.SetClickHdl( LINK( this, DisplayHidDlg, CopyToClipboard ) ); + aPbSelectAll.SetClickHdl( LINK( this, DisplayHidDlg, SelectAll ) ); + + aMlbControls.SetSelectHdl( LINK( this, DisplayHidDlg, Select ) ); + aMlbSlots.SetSelectHdl( LINK( this, DisplayHidDlg, Select ) ); + Select( NULL ); +} + +DisplayHidDlg::~DisplayHidDlg() +{ + delete pControls; + delete pSlots; + delete pSplit; +} + +IMPL_LINK( DisplayHidDlg, CopyToClipboard, void*, EMPTYARG ) +{ + String aSammel; + USHORT i; + + for ( i=0 ; i < aMlbControls.GetSelectEntryCount() ; i++ ) + { + if ( aSammel.Len() ) + aSammel += '\n'; + aSammel += aMlbControls.GetSelectEntry( i ); + } + for ( i=0 ; i < aMlbSlots.GetSelectEntryCount() ; i++ ) + { + if ( aSammel.Len() ) + aSammel += '\n'; + aSammel += aMlbSlots.GetSelectEntry( i ); + } + Clipboard::Clear(); + Clipboard::CopyString( aSammel ); + return 0; +} + +IMPL_LINK( DisplayHidDlg, SelectAll, PushButton*, pButton ) +{ + if ( pButton->GetState() != STATE_CHECK ) + { + USHORT i; + for ( i=0 ; i < aMlbControls.GetEntryCount() ; i++ ) + aMlbControls.SelectEntryPos( i ); + for ( i=0 ; i < aMlbSlots.GetEntryCount() ; i++ ) + aMlbSlots.SelectEntryPos( i ); + } + else + { + aMlbControls.SetNoSelection(); + aMlbControls.Invalidate(); + aMlbSlots.SetNoSelection(); + aMlbSlots.Invalidate(); + } + Select( NULL ); + return 0; +} + +IMPL_LINK( DisplayHidDlg, Select, void*, EMPTYARG ) +{ + if ( !aMlbControls.GetSelectEntryCount() && !aMlbSlots.GetSelectEntryCount() ) + aPbSelectAll.SetState( STATE_NOCHECK ); + else if ( aMlbControls.GetSelectEntryCount() == aMlbControls.GetEntryCount() + && aMlbSlots.GetSelectEntryCount() == aMlbSlots.GetEntryCount() ) + aPbSelectAll.SetState( STATE_CHECK ); + else + aPbSelectAll.SetState( STATE_DONTKNOW ); + return 0; +} + +void DisplayHidDlg::AddData( WinInfoRec* pWinInfo ) +{ + if ( pWinInfo->bIsReset ) + { + aMlbControls.Clear(); + aMlbSlots.Clear(); + + if ( pWinInfo->nUId & DH_MODE_DATA_VALID ) // kein altes Office + nDisplayMode = pWinInfo->nUId; // Wird im Reset zur Übermittlung des Modus verwendet + + return; + } + + String aMsg; + if ( ( nDisplayMode & DH_MODE_KURZNAME ) ) + { + if ( pWinInfo->aKurzname.Len() > 0 ) + aMsg += pWinInfo->aKurzname; + else + { + aMsg.AppendAscii( "--" ); + aMsg += String::CreateFromInt64( pWinInfo->nUId ); + aMsg.AppendAscii( ": " ); + aMsg += pWinInfo->aRName; + } + aMsg.Expand(20); + } + else + { + aMsg += String::CreateFromInt64( pWinInfo->nUId ); + aMsg.Expand(13); + } + aMsg.AppendAscii( " " ); // Mindestens 3 Blanks sollten schon sein. + + if ( nDisplayMode & DH_MODE_LANGNAME ) + { + if ( pWinInfo->aLangname.Len() > 0 ) + aMsg += pWinInfo->aLangname; + else + aMsg += String( ResId( IDS_NO_LONGNAME ) ); + } + + aMlbControls.InsertEntry( aMsg ); + + + // Haben wir noch einen Slotname? + if ( ( nDisplayMode & DH_MODE_KURZNAME ) && pWinInfo->aSlotname.Len() > 0 ) + { + aMsg = pWinInfo->aSlotname; + aMsg.Expand(20); + aMsg.AppendAscii( " " ); // Mindestens 3 Blanks sollten schon sein. + + if ( nDisplayMode & DH_MODE_LANGNAME ) + { + if ( pWinInfo->aLangname.Len() > 0 ) + aMsg += pWinInfo->aLangname; + else + aMsg += String( ResId( IDS_NO_LONGNAME ) ); + } + + aMlbSlots.InsertEntry( aMsg ); + } +} + +void DisplayHidDlg::Resize() +{ + + if ( IsRollUp() ) + { + // Wir wollen nur die Toolbox sehen + SetOutputSizePixel( aTbConf.GetSizePixel() ); + } + else + { +// SetUpdateMode( FALSE ); + + // Minimalgröße + Size aSize( GetOutputSizePixel() ); + aSize.Width() = max( aSize.Width(), aOKClose.GetSizePixel().Width() * 3 ); + aSize.Height() = max( aSize.Height(), aOKClose.GetSizePixel().Height() * 8 ); + SetOutputSizePixel( aSize ); + + // Standardabstand + long nSpace = pSplit->GetPosPixel().X(); + + // ToolBox Breite anpassen + aTbConf.SetSizePixel( Size ( GetSizePixel().Width(), aTbConf.CalcWindowSizePixel().Height() ) ); + aTbConf.SetSizePixel( Size() ); // Vorerst verstecken! + + // SplitWindow Positionieren + pSplit->SetPosPixel( Point( nSpace, nSpace + aTbConf.GetPosPixel().Y() + aTbConf.GetSizePixel().Height() ) ); + + // Breite des SplitWindows bestimmen + long nSplitWidth = GetSizePixel().Width(); + nSplitWidth -= aPbBenennen.GetSizePixel().Width(); + nSplitWidth -= 3 * nSpace; // Die Zwischenräume + nSplitWidth -= nSpace / 2; // Etwas mehr Platz am rechten Rand + + // Höhe des SplitWindows bestimmen + long nSplitHeight = GetOutputSizePixel().Height(); + nSplitHeight -= pSplit->GetPosPixel().Y(); + nSplitHeight -= nSpace; // der Abstand unten + + // Größe des SplitWindows setzen + pSplit->SetSizePixel( Size( nSplitWidth, nSplitHeight ) ); + + Point aPos; + + // Button "Kopieren" Positionieren + aPos = pSplit->GetPosPixel(); + aPos.Move( nSplitWidth, 0 ); + aPos.Move( nSpace, 0 ); + aPbKopieren.SetPosPixel( aPos ); + + // Button "Alles Wählen" gleich darunter positionieren + aPos.Move( 0, aPbKopieren.GetSizePixel().Height() ); + aPos.Move( 0, nSpace ); + aPbSelectAll.SetPosPixel( aPos ); + + // Button "Benennen" gleich darunter positionieren + aPos.Move( 0, aPbSelectAll.GetSizePixel().Height() ); + aPos.Move( 0, nSpace ); + aPbBenennen.SetPosPixel( aPos ); + + // Und zum Schluß noch den "Close" Button positionieren + aPos = pSplit->GetPosPixel(); + aPos.Move( nSpace, -aOKClose.GetSizePixel().Height() ); + aPos.Move( pSplit->GetSizePixel().Width(), pSplit->GetSizePixel().Height() ); + aOKClose.SetPosPixel( aPos ); + +// SetUpdateMode( TRUE ); +// Invalidate(); + } + FloatingWindow::Resize(); +} + + +VarEditDialog::VarEditDialog( Window * pParent, SbxVariable *pPVar ) +: ModelessDialog( pParent, ResId( IDD_EDIT_VAR ) ) +, aFixedTextRID_FT_NAME( this, ResId( RID_FT_NAME ) ) +, aFixedTextRID_FT_CONTENT( this, ResId( RID_FT_CONTENT ) ) +, aFixedTextRID_FT_NEW_CONTENT( this, ResId( RID_FT_NEW_CONTENT ) ) +, aFixedTextRID_FT_NAME_VALUE( this, ResId( RID_FT_NAME_VALUE ) ) +, aFixedTextRID_FT_CONTENT_VALUE( this, ResId( RID_FT_CONTENT_VALUE ) ) + +, aRadioButtonRID_RB_NEW_BOOL_T( this, ResId( RID_RB_NEW_BOOL_T ) ) +, aRadioButtonRID_RB_NEW_BOOL_F( this, ResId( RID_RB_NEW_BOOL_F ) ) +, aNumericFieldRID_NF_NEW_INTEGER( this, ResId( RID_NF_NEW_INTEGER ) ) +, aNumericFieldRID_NF_NEW_LONG( this, ResId( RID_NF_NEW_LONG ) ) +, aEditRID_ED_NEW_STRING( this, ResId( RID_ED_NEW_STRING ) ) + +, aOKButtonRID_OK( this, ResId( RID_OK ) ) +, aCancelButtonRID_CANCEL( this, ResId( RID_CANCEL ) ) +, pVar( pPVar ) +{ + aFixedTextRID_FT_NAME_VALUE.SetText( pVar->GetName() ); + aFixedTextRID_FT_CONTENT_VALUE.SetText( pVar->GetString() ); + + SbxDataType eType = pVar->GetType(); + if ( ( eType & ( SbxVECTOR | SbxARRAY | SbxBYREF )) == 0 ) + { + switch ( eType ) + { + case SbxBOOL: + aRadioButtonRID_RB_NEW_BOOL_T.Show(); + aRadioButtonRID_RB_NEW_BOOL_F.Show(); + if ( pVar->GetBool() ) + aRadioButtonRID_RB_NEW_BOOL_T.Check(); + else + aRadioButtonRID_RB_NEW_BOOL_F.Check(); + break; +// case SbxCURRENCY: +// case SbxDATE: + break; + case SbxINTEGER: + aNumericFieldRID_NF_NEW_INTEGER.Show(); + aNumericFieldRID_NF_NEW_INTEGER.SetText( pVar->GetString() ); + aNumericFieldRID_NF_NEW_INTEGER.Reformat(); + break; + case SbxLONG: + aNumericFieldRID_NF_NEW_LONG.Show(); + aNumericFieldRID_NF_NEW_LONG.SetText( pVar->GetString() ); + aNumericFieldRID_NF_NEW_LONG.Reformat(); + // Müssen hart gesetzt werden, da der Rsc Compiler damit nicht klar kommt. + aNumericFieldRID_NF_NEW_LONG.SetMin( -aNumericFieldRID_NF_NEW_LONG.GetMax()-1 ); + aNumericFieldRID_NF_NEW_LONG.SetFirst( -aNumericFieldRID_NF_NEW_LONG.GetLast()-1 ); + break; +// case SbxOBJECT: // kann nicht editiert werden + break; + case SbxSINGLE: + case SbxDOUBLE: + case SbxSTRING: + case SbxVARIANT: // Taucht wohl auch nicht auf. stattdessen SbxEMPTY + case SbxEMPTY: + aEditRID_ED_NEW_STRING.Show(); + aEditRID_ED_NEW_STRING.SetText( pVar->GetString() ); + break; + } + } + + + aOKButtonRID_OK.SetClickHdl( LINK( this, VarEditDialog, OKClick ) ); +} + + +IMPL_LINK( VarEditDialog, OKClick, Button *, pButton ) +{ + BOOL bWasError = SbxBase::IsError(); // Da eventuell ein Fehler geschmissen wird. + + + SbxDataType eType = pVar->GetType(); +/* +Boolean +Currency +Date +Double +Integer +Long +Object +Single +String +Variant + + +atof + + ecvt + f + gcvt + +SvNumberformat:: + static double StringToDouble( const xub_Unicode* pStr, + const International& rIntl, + int& nErrno, + const xub_Unicode** ppEnd = NULL ); + // Konvertiert analog strtod einen dezimalen String in einen double, + // Dezimalseparator und Tausenderseparator werden aus International + // genommen, fuehrende Leerzeichen werden weggeparst. + // Ist ppEnd!=NULL wird *ppEnd hinter das Weggeparste gesetzt. + // Enthaelt pStr nur den zu parsenden String, ist also bei Erfolg + // **ppEnd=='\0' und *ppEnd-pStr==strlen(pStr). + // Bei Ueberlauf wird fVal=+/-HUGE_VAL gesetzt, bei Unterlauf 0, + // nErrno wird in diesen Faellen auf ERANGE gesetzt, sonst 0. + // "+/-1.#INF" werden als +/-HUGE_VAL erkannt. + + */ + + + + String aContent( aEditRID_ED_NEW_STRING.GetText() ); + BOOL bError = FALSE; + switch ( eType ) + { + case SbxBOOL: + pVar->PutBool( aRadioButtonRID_RB_NEW_BOOL_T.IsChecked() ); + break; +// case SbxCURRENCY: +// pVar->PutCurrency( aContent ); + break; +// case SbxDATE: +// pVar->PutDate( aContent ); + break; + case SbxINTEGER: + pVar->PutInteger( aNumericFieldRID_NF_NEW_INTEGER.GetValue() ); + break; + case SbxLONG: + pVar->PutLong( aNumericFieldRID_NF_NEW_LONG.GetValue() ); + break; + case SbxDOUBLE: + case SbxSINGLE: + bError = !pVar->PutStringExt( aContent ); + break; + case SbxSTRING: + pVar->PutString( aContent ); + break; + case SbxVARIANT: + case SbxEMPTY: + bError = !pVar->PutStringExt( aContent ); + break; + } + + +// pVar->PutStringExt( aEditRID_ED_NEW_STRING.GetText() ); + if ( !bWasError && SbxBase::IsError() ) + { + bError = TRUE; + SbxBase::ResetError(); + } + + if ( bError ) + { +// ErrorBox( this, WB_OK | WB_DEF_OK, "Der Wert ist ungültig und kann daher nicht gesetzt werden" ).Execute(); + ErrorBox( this, ResId( IDS_INVALID_VALUE ) ).Execute(); + return 1; + } + +// if ( aEditRID_ED_NEW_STRING.GetText().Compare( pVar->GetString() ) != COMPARE_EQUAL ) +// { +// aFixedTextRID_FT_CONTENT_VALUE.SetText( pVar->GetString() ); +// aEditRID_ED_NEW_STRING.SetText( pVar->GetString() ); +// return 1; +// } + + Close(); + return 0; +} + + + diff --git a/basic/source/app/dialogs.hxx b/basic/source/app/dialogs.hxx new file mode 100644 index 000000000000..ab98752d2741 --- /dev/null +++ b/basic/source/app/dialogs.hxx @@ -0,0 +1,307 @@ +/************************************************************************* + * + * $RCSfile: dialogs.hxx,v $ + * + * $Revision: 1.1.1.1 $ + * + * last change: $Author: hr $ $Date: 2000-09-18 16:12:09 $ + * + * The Contents of this file are made available subject to the terms of + * either of the following licenses + * + * - GNU Lesser General Public License Version 2.1 + * - Sun Industry Standards Source License Version 1.1 + * + * Sun Microsystems Inc., October, 2000 + * + * GNU Lesser General Public License Version 2.1 + * ============================================= + * Copyright 2000 by Sun Microsystems, Inc. + * 901 San Antonio Road, Palo Alto, CA 94303, USA + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License version 2.1, as published by the Free Software Foundation. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + * + * + * Sun Industry Standards Source License Version 1.1 + * ================================================= + * The contents of this file are subject to the Sun Industry Standards + * Source License Version 1.1 (the "License"); You may not use this file + * except in compliance with the License. You may obtain a copy of the + * License at http://www.openoffice.org/license.html. + * + * Software provided under this License is provided on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, + * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS, + * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING. + * See the License for the specific provisions governing your rights and + * obligations concerning the Software. + * + * The Initial Developer of the Original Code is: Sun Microsystems, Inc. + * + * Copyright: 2000 by Sun Microsystems, Inc. + * + * All Rights Reserved. + * + * Contributor(s): _______________________________________ + * + * + ************************************************************************/ + +#ifndef _DIALOGS_HXX +#define _DIALOGS_HXX + +#ifndef _DIALOG_HXX //autogen +#include <vcl/dialog.hxx> +#endif +#ifndef _BUTTON_HXX //autogen +#include <vcl/button.hxx> +#endif +#ifndef _EDIT_HXX //autogen +#include <vcl/edit.hxx> +#endif +#ifndef _FIELD_HXX //autogen +#include <vcl/field.hxx> +#endif +#ifndef _SV_FIXED_HXX //autogen +#include <vcl/fixed.hxx> +#endif +#ifndef _SV_TABDLG_HXX //autogen +#include <vcl/tabdlg.hxx> +#endif +#ifndef _SV_TABCTRL_HXX //autogen +#include <vcl/tabctrl.hxx> +#endif +#ifndef _SV_TABPAGE_HXX //autogen +#include <vcl/tabpage.hxx> +#endif +#ifndef _SV_GROUP_HXX //autogen +#include <vcl/group.hxx> +#endif +#ifndef _SV_CONFIG_HXX //autogen +#include <vcl/config.hxx> +#endif +#ifndef _TOOLS_LIST_HXX +#include <tools/list.hxx> +#endif +#ifndef _SV_LSTBOX_HXX //autogen +#include <vcl/lstbox.hxx> +#endif +#ifndef _SV_FLOATWIN_HXX //autogen +#include <vcl/floatwin.hxx> +#endif +#ifndef _SV_TOOLBOX_HXX //autogen +#include <vcl/toolbox.hxx> +#endif + +class SbxVariable; + +#ifndef _BASIC_TTRESHLP_HXX +#include "ttstrhlp.hxx" +#endif + +class AboutDialog : public ModalDialog { + FixedText a1,a3,a4,aVersionString; + OKButton aOk; +// FixedIcon aIcon; +public: + AboutDialog (Window*, const ResId&); +}; + +class FindDialog : public ModalDialog { + FixedText aFT1; + Edit aFind; + OKButton aOk; + CancelButton aCancel; + String* pFind; + DECL_LINK( ButtonClick, Button * ); +public: + FindDialog (Window*, const ResId&, String&); +}; + +class ReplaceDialog : public ModalDialog { + FixedText aFT1; + FixedText aFT2; + Edit aFind; + Edit aReplace; + OKButton aOk; + CancelButton aCancel; + String* pFind; + String* pReplace; + DECL_LINK( ButtonClick, Button * ); +public: + ReplaceDialog (Window*, const ResId&, String&, String&); +}; + +class ConfEdit : public PushButton +{ + FixedText aText; + ByteString aKeyName; + Edit aEdit; +public: + ConfEdit( Window* pParent, USHORT nResText, USHORT nResEdit, USHORT nResButton, const ByteString& aKN ); + void Save(); + void Click(); +}; + + +class OptionsDialog : public ModelessDialog +{ +private: + TabControl aTabCtrl; + + OKButton aOK; + CancelButton aCancel; + DECL_LINK( OKClick, Button * ); + +public: + OptionsDialog( Window* pParent, const ResId& ); + ~OptionsDialog(); + virtual BOOL Close(); + + + DECL_LINK( ActivatePageHdl, TabControl * ); +}; + +class SpecialOptions : public TabPage +{ + GroupBox aDirs; + ConfEdit aLog; + ConfEdit aBasis; + ConfEdit aHID; + GroupBox aOther; + FixedText aTimeoutText; + TimeField aServerTimeout; + CheckBox aAutoReload; + +public: + SpecialOptions( Window* ); + void Save(); +}; + + +DECLARE_LIST( StringList, String * ); +#define C_KEY_ALLE CByteString("Alle") +#define C_KEY_AKTUELL CByteString("Aktuell") +#define C_KEY_DELETE CByteString("Deleted Groups") + +class GenericOptions : public TabPage +{ + GroupBox aGbArea; + ComboBox aCbArea; + PushButton aPbNewArea; + PushButton aPbDelArea; + + GroupBox aGbValue; + ComboBox aCbValue; + PushButton aPbNewValue; + PushButton aPbDelValue; + + Config aConf; + String aTempConfName; + Config *pTempConf; + ByteString aLastGroupName; + + String ReadKey( const ByteString &aGroup, const ByteString &aKey ); + BOOL HasKey( Config &aConfig, const ByteString &aKey ); + + void LoadValues(); + + StringList* GetAllGroups(); + void LoadData(); + + DECL_LINK( LoadGroup, ComboBox* ); + DECL_LINK( DelGroup, Button* ); + DECL_LINK( NewGroup, Button* ); + DECL_LINK( DelValue, Button* ); + DECL_LINK( NewValue, Button* ); + DECL_LINK( CheckButtonsHdl, ComboBox* ); + + void CheckButtons( ComboBox &aCB, Button &aNewB, Button &aDelB ); + +public: + GenericOptions( Window* ); + ~GenericOptions(); + void Save(); +}; + + +struct WinInfoRec; +class SplitWindow; + +class DisplayHidDlg : public FloatingWindow +{ +protected: + ToolBox aTbConf; + FixedText aFtControls; + MultiListBox aMlbControls; + FixedText aFtSlots; + MultiListBox aMlbSlots; + PushButton aPbKopieren; + PushButton aPbBenennen; + PushButton aPbSelectAll; + OKButton aOKClose; + + DockingWindow* pControls; + DockingWindow* pSlots; + SplitWindow *pSplit; + + ULONG nDisplayMode; + + DECL_LINK( Select, void* ); + DECL_LINK( SelectAll, PushButton* ); + DECL_LINK( CopyToClipboard, void* ); + +public: + DisplayHidDlg( Window * pParent ); + virtual ~DisplayHidDlg(); + + virtual void Resize(); + + void AddData( WinInfoRec* pWinInfo ); + +}; + + +class VarEditDialog : public ModelessDialog +{ +protected: + FixedText aFixedTextRID_FT_NAME; + FixedText aFixedTextRID_FT_CONTENT; + FixedText aFixedTextRID_FT_NEW_CONTENT; + FixedText aFixedTextRID_FT_NAME_VALUE; + FixedText aFixedTextRID_FT_CONTENT_VALUE; + + RadioButton aRadioButtonRID_RB_NEW_BOOL_T; + RadioButton aRadioButtonRID_RB_NEW_BOOL_F; + NumericField aNumericFieldRID_NF_NEW_INTEGER; + NumericField aNumericFieldRID_NF_NEW_LONG; + Edit aEditRID_ED_NEW_STRING; + + OKButton aOKButtonRID_OK; + CancelButton aCancelButtonRID_CANCEL; + + SbxVariable *pVar; + + DECL_LINK( OKClick, Button * ); + +// BOOL bCompare = FALSE; +// String aCompareString; + +public: + VarEditDialog( Window * pParent, SbxVariable *pPVar ); +}; + + +#endif diff --git a/basic/source/app/makefile.mk b/basic/source/app/makefile.mk new file mode 100644 index 000000000000..8150a9e7cff8 --- /dev/null +++ b/basic/source/app/makefile.mk @@ -0,0 +1,164 @@ +#************************************************************************* +# +# $RCSfile: makefile.mk,v $ +# +# $Revision: 1.1.1.1 $ +# +# last change: $Author: hr $ $Date: 2000-09-18 16:12:09 $ +# +# The Contents of this file are made available subject to the terms of +# either of the following licenses +# +# - GNU Lesser General Public License Version 2.1 +# - Sun Industry Standards Source License Version 1.1 +# +# Sun Microsystems Inc., October, 2000 +# +# GNU Lesser General Public License Version 2.1 +# ============================================= +# Copyright 2000 by Sun Microsystems, Inc. +# 901 San Antonio Road, Palo Alto, CA 94303, USA +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License version 2.1, as published by the Free Software Foundation. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, +# MA 02111-1307 USA +# +# +# Sun Industry Standards Source License Version 1.1 +# ================================================= +# The contents of this file are subject to the Sun Industry Standards +# Source License Version 1.1 (the "License"); You may not use this file +# except in compliance with the License. You may obtain a copy of the +# License at http://www.openoffice.org/license.html. +# +# Software provided under this License is provided on an "AS IS" basis, +# WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, +# WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS, +# MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING. +# See the License for the specific provisions governing your rights and +# obligations concerning the Software. +# +# The Initial Developer of the Original Code is: Sun Microsystems, Inc. +# +# Copyright: 2000 by Sun Microsystems, Inc. +# +# All Rights Reserved. +# +# Contributor(s): _______________________________________ +# +# +# +#************************************************************************* + +PRJ=..$/.. + +PRJNAME=BASIC +TARGET=app + +# --- Settings ------------------------------------------------------------ + +.INCLUDE : svpre.mk +.INCLUDE : settings.mk +.INCLUDE : sv.mk + +# --- Allgemein ------------------------------------------------------------ + +.INCLUDE : $(UPD)minor.mk +RSCUPDVER=$(RSCREVISION)SV$(UPD)$(UPDMINOR) + + +CXXFILES = \ + ttstrhlp.cxx \ + ttbasic.cxx \ + basicrt.cxx \ + processw.cxx \ + process.cxx \ + brkpnts.cxx \ + app.cxx \ + mybasic.cxx \ + status.cxx \ + printer.cxx \ + appwin.cxx \ + appedit.cxx \ + appbased.cxx \ + apperror.cxx \ + textedit.cxx \ + msgedit.cxx \ + dialogs.cxx \ + comm_bas.cxx \ + testbasi.cxx + + +OBJFILES = \ + $(OBJ)$/ttstrhlp.obj \ + $(OBJ)$/ttbasic.obj \ + $(OBJ)$/basicrt.obj \ + $(OBJ)$/processw.obj \ + $(OBJ)$/process.obj \ + $(OBJ)$/brkpnts.obj \ + $(OBJ)$/app.obj \ + $(OBJ)$/mybasic.obj \ + $(OBJ)$/status.obj \ + $(OBJ)$/printer.obj \ + $(OBJ)$/appwin.obj \ + $(OBJ)$/appedit.obj \ + $(OBJ)$/appbased.obj \ + $(OBJ)$/apperror.obj \ + $(OBJ)$/textedit.obj \ + $(OBJ)$/msgedit.obj \ + $(OBJ)$/dialogs.obj \ + $(OBJ)$/comm_bas.obj \ + $(SLO)$/sbintern.obj + + +SRCFILES = \ + basic.src \ + ttmsg.src \ + basmsg.src \ + svtmsg.src \ + testtool.src + +LIBTARGET = NO + +LIB1TARGET=$(LB)$/app.lib +LIB1ARCHIV=$(LB)$/libapp.a +LIB1OBJFILES = \ + $(OBJ)$/ttstrhlp.obj \ + $(OBJ)$/basicrt.obj \ + $(OBJ)$/processw.obj \ + $(OBJ)$/process.obj \ + $(OBJ)$/brkpnts.obj \ + $(OBJ)$/app.obj \ + $(OBJ)$/mybasic.obj \ + $(OBJ)$/status.obj \ + $(OBJ)$/printer.obj \ + $(OBJ)$/appwin.obj \ + $(OBJ)$/appedit.obj \ + $(OBJ)$/appbased.obj \ + $(OBJ)$/apperror.obj \ + $(OBJ)$/textedit.obj \ + $(OBJ)$/msgedit.obj \ + $(OBJ)$/dialogs.obj \ + $(OBJ)$/comm_bas.obj \ + $(SLO)$/sbintern.obj + +.IF "$(depend)" == "" + +ALL: $(LB)$/app.lib \ + ALLTAR + +.ENDIF + +# --- Targets ------------------------------------------------------------ + +.INCLUDE : target.mk diff --git a/basic/source/app/msgedit.cxx b/basic/source/app/msgedit.cxx new file mode 100644 index 000000000000..6de5e44a892c --- /dev/null +++ b/basic/source/app/msgedit.cxx @@ -0,0 +1,858 @@ +/************************************************************************* + * + * $RCSfile: msgedit.cxx,v $ + * + * $Revision: 1.1.1.1 $ + * + * last change: $Author: hr $ $Date: 2000-09-18 16:12:09 $ + * + * The Contents of this file are made available subject to the terms of + * either of the following licenses + * + * - GNU Lesser General Public License Version 2.1 + * - Sun Industry Standards Source License Version 1.1 + * + * Sun Microsystems Inc., October, 2000 + * + * GNU Lesser General Public License Version 2.1 + * ============================================= + * Copyright 2000 by Sun Microsystems, Inc. + * 901 San Antonio Road, Palo Alto, CA 94303, USA + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License version 2.1, as published by the Free Software Foundation. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + * + * + * Sun Industry Standards Source License Version 1.1 + * ================================================= + * The contents of this file are subject to the Sun Industry Standards + * Source License Version 1.1 (the "License"); You may not use this file + * except in compliance with the License. You may obtain a copy of the + * License at http://www.openoffice.org/license.html. + * + * Software provided under this License is provided on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, + * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS, + * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING. + * See the License for the specific provisions governing your rights and + * obligations concerning the Software. + * + * The Initial Developer of the Original Code is: Sun Microsystems, Inc. + * + * Copyright: 2000 by Sun Microsystems, Inc. + * + * All Rights Reserved. + * + * Contributor(s): _______________________________________ + * + * + ************************************************************************/ +/************************************************************************* +File Versions so far: +No Version Initial Implementation without Version Information +Version 2 changed order of entries(New Entries at the end) +Version 3 Changed Charset from CHARSET_IBMPC to RTL_TEXTENCODING_UTF8 + +*************************************************************************/ +#ifndef _INTN_HXX //autogen +#include <tools/intn.hxx> +#endif +#ifndef _TIME_HXX //autogen +#include <tools/time.hxx> +#endif +#ifndef _STREAM_HXX //autogen +#include <tools/stream.hxx> +#endif +#ifndef _MSGBOX_HXX //autogen +#include <vcl/msgbox.hxx> +#endif +#ifndef _SOUND_HXX //autogen +#include <vcl/sound.hxx> +#endif +#ifndef _FSYS_HXX //autogen +#include <tools/fsys.hxx> +#endif +#ifndef _CLIP_HXX //autogen +#include <vcl/clip.hxx> +#endif +#ifndef NOOLDSV //autogen +#include <vcl/system.hxx> +#endif +#ifndef _BASIC_TTRESHLP_HXX +#include "ttstrhlp.hxx" +#endif +#ifndef _SV_SYSTEM_HXX +#include <vcl/system.hxx> +#endif + +#include "basic.hrc" +#include "msgedit.hxx" +#include "app.hxx" +#include "appbased.hxx" +#include "basmsg.hrc" + +#define WARNING_PREFIX String( ResId( S_WARNING_PREFIX ) ) +#define VERSION_STRING CUniString("File Format Version: ") +#define THIS_VERSION 2 + +#define LOGTYPE( pEntry ) ((pEntry && pEntry->GetUserData())?((TTDebugData*)pEntry->GetUserData())->aLogType:LOG_ERROR) + +MsgEdit::MsgEdit( AppWin* pParent, BasicFrame *pBF, const WinBits& aBits ) +: aEditTree( pParent, pBF, aBits | WB_HASBUTTONS | WB_HASLINES | WB_HASBUTTONSATROOT ) +, pBasicFrame(pBF) +, pCurrentRun(NULL) +, pCurrentTestCase(NULL) +, pCurrentError(NULL) +, nVersion(0) +, bFileLoading(FALSE) +, bModified(FALSE) +, pAppWin( pParent ) +{ + SetFont( System::GetStandardFont(STDFONT_FIXED) ); + aEditTree.SetNodeBitmaps( Bitmap( ResId (MBP_PLUS) ), Bitmap( ResId (MBP_MINUS) ) ); + aEditTree.SetSelectionMode( MULTIPLE_SELECTION ); + if ( aEditTree.GetModel()->GetSortMode() != SortNone ) + aEditTree.GetModel()->SetSortMode( SortNone ); + + pParent->bHasFile = Load( pParent->GetText() ); +} + +MsgEdit::~MsgEdit() +{} + +#define ADD_TTDEBUGDATA( aLBoxEntry ) \ + { \ + TTDebugData *pData = new TTDebugData; \ + *pData = aDebugData; \ + aLBoxEntry->SetUserData( pData ); \ + } \ + + +void MsgEdit::AddAnyMsg( TTLogMsg *LogMsg ) +{ + if ( LogMsg->aDebugData.aFilename.Copy(0,2).CompareToAscii( "--" ) == COMPARE_EQUAL ) + LogMsg->aDebugData.aFilename.Erase(0,2); + xub_StrLen nPos; + LogMsg->aDebugData.aMsg.ConvertLineEnd(); + if ( (nPos = LogMsg->aDebugData.aMsg.Search( CUniString("\n").ConvertLineEnd() )) != STRING_NOTFOUND ) + { + xub_StrLen nSysLineEndLen = CUniString("\n").ConvertLineEnd().Len(); + String aLastPart = LogMsg->aDebugData.aMsg.Copy( nPos+nSysLineEndLen ); + LogMsg->aDebugData.aMsg.Erase( nPos ); + AddAnyMsg( LogMsg ); + LogMsg->aDebugData.aMsg = aLastPart; + AddAnyMsg( LogMsg ); + } + else + { + String aUILogMsg( pBasicFrame->GenRealString( LogMsg->aDebugData.aMsg ) ); + switch ( LogMsg->aDebugData.aLogType ) + { + case LOG_RUN: + { + if ( LogMsg->aDebugData.aMsg.Len() == 0 ) + { + LogMsg->aDebugData.aMsg = GEN_RES_STR2( S_PROG_START, + GetpApp()->GetAppInternational().GetDate(Date()), + GetpApp()->GetAppInternational().GetTime(Time(),FALSE) ); + aUILogMsg = pBasicFrame->GenRealString( LogMsg->aDebugData.aMsg ); + } + AddRun( aUILogMsg, LogMsg->aDebugData ); break; + } + case LOG_TEST_CASE: AddTestCase( aUILogMsg, LogMsg->aDebugData ); break; + case LOG_ERROR: AddError( aUILogMsg, LogMsg->aDebugData ); break; + case LOG_CALL_STACK:AddCallStack( aUILogMsg, LogMsg->aDebugData ); break; + case LOG_MESSAGE: AddMessage( aUILogMsg, LogMsg->aDebugData ); break; + case LOG_WARNING: AddWarning( aUILogMsg, LogMsg->aDebugData ); break; + case LOG_ASSERTION: AddAssertion( aUILogMsg, LogMsg->aDebugData ); break; + } + + if ( !bFileLoading ) + { // Kommt vom Testtool und muß gleich geschrieben werden. + BOOL bFileWasChanged = pAppWin->DiskFileChanged( SINCE_LAST_LOAD ); + + DBG_ASSERT( aLogFileName == LogMsg->aLogFileName, "Logging to different logfile as before" ); + SvFileStream aStrm( LogMsg->aLogFileName, STREAM_STD_WRITE ); + String aLogMsg = Impl_MakeSaveText( LogMsg->aDebugData ).AppendAscii("\n"); + if( aStrm.IsOpen() ) + { + aLogMsg.ConvertLineEnd(LINEEND_CRLF); + aStrm.Seek(STREAM_SEEK_TO_END); + aStrm << ByteString( aLogMsg, RTL_TEXTENCODING_UTF8 ).GetBuffer(); + aStrm.Close(); + } + if ( !bFileWasChanged ) + pAppWin->UpdateFileInfo( HAS_BEEN_LOADED ); + } + } +} + +void MsgEdit::AddRun( String aMsg, TTDebugData aDebugData ) +{ + if ( !bFileLoading || ( bFileLoading && nVersion >= 2 ) ) + pCurrentRun = aEditTree.InsertEntry( aMsg, NULL, FALSE, 0 ); + else // Erstes Dateiformat + pCurrentRun = aEditTree.InsertEntry( aMsg ); // und damit an Ende! + + aEditTree.ShowEntry( pCurrentRun ); + pCurrentTestCase = NULL; + pCurrentError = NULL; + aDebugData.aLogType = LOG_RUN; // Da auch von anderswo aufgerufen + ADD_TTDEBUGDATA( pCurrentRun ); +} + +void MsgEdit::AddTestCase( String aMsg, TTDebugData aDebugData ) +{ + if ( pCurrentRun ) + { + if ( aMsg.Len() == 0 ) // Am Ende des Testcase + { + pCurrentTestCase = NULL; + } + else + { + pCurrentTestCase = aEditTree.InsertEntry( aMsg, pCurrentRun ); + aEditTree.ShowEntry( pCurrentTestCase ); + aDebugData.aLogType = LOG_TEST_CASE; // Da auch von anderswo aufgerufen + ADD_TTDEBUGDATA( pCurrentTestCase ); + } + } + pCurrentError = NULL; +} + +void MsgEdit::AddError( String aMsg, TTDebugData aDebugData ) +{ + if ( !pCurrentTestCase ) + { + TTLogMsg aLogMsg; + aLogMsg.aDebugData = aDebugData; + aLogMsg.aDebugData.aMsg = GEN_RES_STR0( S_ERROR_OUTSIDE_TESTCASE ); + aLogMsg.aDebugData.aLogType = LOG_TEST_CASE; + aLogMsg.aLogFileName = aLogFileName; + AddAnyMsg( &aLogMsg ); + } + if ( pCurrentTestCase ) + { + pCurrentError = aEditTree.InsertEntry( aMsg, pCurrentTestCase ); + aEditTree.ShowEntry( pCurrentError ); + aDebugData.aLogType = LOG_ERROR; // Da auch von anderswo aufgerufen + ADD_TTDEBUGDATA( pCurrentError ); + } +} + +void MsgEdit::AddCallStack( String aMsg, TTDebugData aDebugData ) +{ + DBG_ASSERT( pCurrentError, "Callstack ohne CurrentError im Journal" ); + if ( pCurrentError ) + { + SvLBoxEntry *pThisEntry = aEditTree.InsertEntry( aMsg, pCurrentError ,0 ); + aDebugData.aLogType = LOG_CALL_STACK; // Da auch von anderswo aufgerufen + ADD_TTDEBUGDATA( pThisEntry ); + } +} + +void MsgEdit::AddMessage( String aMsg, TTDebugData aDebugData ) +{ + SvLBoxEntry *pThisEntry = NULL; + if ( pCurrentTestCase ) + pThisEntry = aEditTree.InsertEntry( aMsg, pCurrentTestCase ); + else if ( pCurrentRun ) + { + pThisEntry = aEditTree.InsertEntry( aMsg, pCurrentRun ); + aEditTree.ShowEntry( pThisEntry ); + } + else + { + AddRun( aMsg, aDebugData ); + pThisEntry = aEditTree.InsertEntry( aMsg, pCurrentRun ); + aEditTree.ShowEntry( pThisEntry ); + } + aDebugData.aLogType = LOG_MESSAGE; // Da auch von anderswo aufgerufen + ADD_TTDEBUGDATA( pThisEntry ); +} + +void MsgEdit::AddWarning( String aMsg, TTDebugData aDebugData ) +{ + SvLBoxEntry *pThisEntry = NULL; + String aCompleteMsg; + aCompleteMsg = WARNING_PREFIX.Append( aMsg ); + + if ( pCurrentTestCase ) + pThisEntry = aEditTree.InsertEntry( aCompleteMsg, pCurrentTestCase ); + else if ( pCurrentRun ) + { + pThisEntry = aEditTree.InsertEntry( aCompleteMsg, pCurrentRun ); + aEditTree.ShowEntry( pThisEntry ); + } + else + { + AddRun( aMsg, aDebugData ); + pThisEntry = aEditTree.InsertEntry( aCompleteMsg, pCurrentRun ); + aEditTree.ShowEntry( pThisEntry ); + } + aDebugData.aLogType = LOG_WARNING; // Da auch von anderswo aufgerufen + ADD_TTDEBUGDATA( pThisEntry ); + + while ( !aEditTree.IsEntryVisible( pThisEntry ) && ( pThisEntry = aEditTree.GetParent( pThisEntry ) ) ) + aEditTree.InvalidateEntry( pThisEntry ); +} + +void MsgEdit::AddAssertion( String aMsg, TTDebugData aDebugData ) +{ + SvLBoxEntry *pThisEntry = NULL; + if ( pCurrentTestCase ) + pThisEntry = aEditTree.InsertEntry( aMsg, pCurrentTestCase ); + else if ( pCurrentRun ) + { + pThisEntry = aEditTree.InsertEntry( aMsg, pCurrentRun ); + aEditTree.ShowEntry( pThisEntry ); + } + else + { + AddRun( aMsg, aDebugData ); + pThisEntry = aEditTree.InsertEntry( aMsg, pCurrentRun ); + aEditTree.ShowEntry( pThisEntry ); + } + aDebugData.aLogType = LOG_ASSERTION; // Da auch von anderswo aufgerufen + ADD_TTDEBUGDATA( pThisEntry ); + + while ( !aEditTree.IsEntryVisible( pThisEntry ) && ( pThisEntry = aEditTree.GetParent( pThisEntry ) ) ) + aEditTree.InvalidateEntry( pThisEntry ); +} + +/* + SvLBoxEntry* GetEntry( SvLBoxEntry* pParent, ULONG nPos ) const { return SvLBox::GetEntry(pParent,nPos); } + SvLBoxEntry* GetEntry( ULONG nRootPos ) const { return SvLBox::GetEntry(nRootPos);} + + + + SvLBoxEntry* FirstChild(SvLBoxEntry* pParent ) const { return (SvLBoxEntry*)(pModel->FirstChild(pParent)); } + SvLBoxEntry* NextSibling(SvLBoxEntry* pEntry ) const { return (SvLBoxEntry*)(pModel->NextSibling( pEntry )); } + SvLBoxEntry* PrevSibling(SvLBoxEntry* pEntry ) const { return (SvLBoxEntry*)(pModel->PrevSibling( pEntry )); } + + SvLBoxEntry* FirstSelected() const { return (SvLBoxEntry*)SvListView::FirstSelected(); } + SvLBoxEntry* NextSelected( SvLBoxEntry* pEntry ) const { return (SvLBoxEntry*)(SvListView::NextSelected(pEntry)); } + SvLBoxEntry* PrevSelected( SvLBoxEntry* pEntry ) const { return (SvLBoxEntry*)(SvListView::PrevSelected(pEntry)); } + SvLBoxEntry* LastSelected() const { return (SvLBoxEntry*)(SvListView::LastSelected()); } + + SvLBoxEntry* GetEntry( SvLBoxEntry* pParent, ULONG nPos ) const { return (SvLBoxEntry*)(pModel->GetEntry(pParent,nPos)); } + SvLBoxEntry* GetEntry( ULONG nRootPos ) const { return (SvLBoxEntry*)(pModel->GetEntry(nRootPos)); } + + SvLBoxEntry* GetParent( SvLBoxEntry* pEntry ) const { return (SvLBoxEntry*)(pModel->GetParent(pEntry)); } + SvLBoxEntry* GetRootLevelParent(SvLBoxEntry* pEntry ) const { return (SvLBoxEntry*)(pModel->GetRootLevelParent( pEntry ));} + + BOOL IsInChildList( SvListEntry* pParent, SvListEntry* pChild) const; + SvListEntry* GetEntry( SvListEntry* pParent, ULONG nPos ) const; + SvListEntry* GetEntry( ULONG nRootPos ) const; + SvListEntry* GetEntryAtAbsPos( ULONG nAbsPos ) const; + SvListEntry* GetParent( SvListEntry* pEntry ) const; + SvListEntry* GetRootLevelParent( SvListEntry* pEntry ) const; +*/ + +//#define CHECK( pMemo ) if ( pMemo && !aEditTree.GetViewData( pMemo ) ) pMemo = NULL +#define CHECK( pMemo ) if ( pMemo && !aEditTree.GetModel()->IsInChildList( NULL, pMemo ) ) pMemo = NULL +void MsgEdit::Delete() +{ + aEditTree.RemoveSelection(); + CHECK( pCurrentRun ); + CHECK( pCurrentTestCase ); + CHECK( pCurrentError ); + bModified = TRUE; + lModify.Call( NULL ); +} + +void MsgEdit::Cut(){ Copy(); Delete(); bModified = TRUE; lModify.Call( NULL ); } +void MsgEdit::Copy(){ Clipboard::Clear();Clipboard::CopyString( GetSelected() ); } +/**/void MsgEdit::Paste(){ Sound::Beep(); } +void MsgEdit::Undo(){ Sound::Beep(); } +void MsgEdit::Redo(){ Sound::Beep(); } + + +String MsgEdit::Impl_MakeText( SvLBoxEntry *pEntry ) const +{ + String aRet; + TTDebugData *aData = (TTDebugData*)pEntry->GetUserData(); + switch ( aData->aLogType ) + { + case LOG_RUN: aRet.AppendAscii("\n"); break; + case LOG_TEST_CASE: break; + case LOG_ERROR: break; + case LOG_CALL_STACK:aRet.AppendAscii("--> "); break; + case LOG_MESSAGE: break; + case LOG_WARNING: break; + case LOG_ASSERTION: break; + default:DBG_ERROR("Unbekannter Typ im ResultFenster"); + } + aRet += aEditTree.GetEntryText( pEntry ); + return aRet; +} + +String MsgEdit::Impl_MakeSaveText( TTDebugData aData ) const +{ +// LogType;Filename;Line;Col1;Col2;Message + String aRet; + aRet += String::CreateFromInt32( (int)aData.aLogType ); + aRet += ';'; + aRet += aData.aFilename; + aRet += ';'; + aRet += String::CreateFromInt32( aData.nLine ); + aRet += ';'; + aRet += String::CreateFromInt32( aData.nCol1 ); + aRet += ';'; + aRet += String::CreateFromInt32( aData.nCol2 ); + aRet += ';'; + aRet += '"'; + aRet += aData.aMsg; + aRet += '"'; + return aRet; +} + +String MsgEdit::Impl_MakeSaveText( SvLBoxEntry *pEntry ) const +{ +// LogType;Filename;Line;Col1;Col2;Message + String aRet; + TTDebugData *aData = (TTDebugData*)pEntry->GetUserData(); + + if ( aEditTree.PrevSibling( pEntry ) && LOGTYPE( aEditTree.PrevSibling( pEntry ) ) == LOG_TEST_CASE ) + { // Um Cases richtig abzuschliessen, so daß Warnings und Msgs in Hirarchie richtig. + aRet += String::CreateFromInt32( (int)LOG_TEST_CASE ); + aRet.AppendAscii(";;0;0;0;\"\"\n"); + } + aRet += Impl_MakeSaveText( *aData ); + return aRet; +} + +String MsgEdit::GetSelected() +{ + String aRet; + SvLBoxEntry *pEntry = aEditTree.FirstSelected(); + while ( pEntry ) + { + aRet += Impl_MakeText( pEntry ); + aRet += '\n'; + pEntry = aEditTree.NextSelected( pEntry ); + } + aRet.ConvertLineEnd(); + return aRet; +} + +TextSelection MsgEdit::GetSelection() const +{ + ULONG nStart=0,nEnd=0; + + if ( aEditTree.FirstSelected() ) + { + nStart = aEditTree.GetModel()->GetAbsPos(aEditTree.FirstSelected() ); + if ( aEditTree.LastSelected() ) + nEnd = aEditTree.GetModel()->GetAbsPos(aEditTree.LastSelected() ); + return TextSelection( TextPaM( nStart, 0 ), TextPaM( nEnd, STRING_MAXLEN ) ); + } + else + return TextSelection(); +} + +void MsgEdit::SetSelection( const TextSelection& rSelection ) +{ + USHORT nStart,nEnd; + + while ( aEditTree.GetSelectionCount() ) + aEditTree.Select( aEditTree.FirstSelected(), FALSE ); + + if ( rSelection.HasRange() ) + { + nStart = rSelection.GetStart().GetPara(); + nEnd = rSelection.GetEnd().GetPara(); + + for ( int i = nStart ; i <= nEnd ; i++ ) + aEditTree.Select( aEditTree.GetModel()->GetEntryAtAbsPos( i ), TRUE ); + } +} + +USHORT MsgEdit::GetLineNr() const +{ + if ( aEditTree.GetCurEntry() ) + return aEditTree.GetModel()->GetAbsPos(aEditTree.GetCurEntry() ) + 1; + else + return 0; +} + +void MsgEdit::ReplaceSelected( const String& rStr ){ Sound::Beep();DBG_ERROR("Not Implemented"); } +BOOL MsgEdit::IsModified(){ return bModified; } +void MsgEdit::SetModifyHdl( Link l ){ lModify = l; } + +String MsgEdit::GetText() const +{ + String aRet; + SvLBoxEntry *pEntry = aEditTree.First(); + while ( pEntry ) + { + aRet += Impl_MakeText( pEntry ); + aRet += '\n'; + pEntry = aEditTree.Next( pEntry ); + } + aRet.ConvertLineEnd(); + return aRet; +} + +/**/void MsgEdit::SetText( const String& rStr ){ DBG_ERROR("Not Implemented"); } + +BOOL MsgEdit::HasText() const { return aEditTree.First() != NULL; } + +// Es wird entweder ab Beginn oder ab Markierungsbegin + 1 gesucht. +BOOL MsgEdit::Find( const String& s ) +{ + TextSelection r = GetSelection(); + USHORT bgn = (USHORT) r.GetStart().GetPara() + 1; + if ( r.GetStart().GetPara() == 0 ) bgn = 0; // Suchen ganz von Anfang + + SvLBoxEntry *pEntry = aEditTree.GetModel()->GetEntryAtAbsPos( bgn ); + while ( pEntry ) + { + if( aEditTree.GetEntryText( pEntry ).Search( s, 0 ) != STRING_NOTFOUND ) + { + aEditTree.SetCurEntry( pEntry ); + return TRUE; + } + pEntry = aEditTree.Next( pEntry ); + } + return FALSE; +} +/****************************************************************** + +Zum Fileformat der *.res Dateien: +Die Informationenn werden als Semikolon getrennte Strings +zusammengebastelt. Reihenfolge: + + LogType;Filename;Line;Col1;Col2;Message + +******************************************************************/ + +BOOL MsgEdit::Load( const String& aName ) +{ + aLogFileName = aName; + BOOL bOk = TRUE, bFirstLine = TRUE; + BOOL bLoadError = FALSE; + SvFileStream aStrm( aName, STREAM_STD_READ ); + if( aStrm.IsOpen() ) + { + aEditTree.Clear(); + String aLine; + bFileLoading = TRUE; // So daß nicht gleich wieder auf Platte mitgelogt wird. + TTLogMsg *pLogMsg = new TTLogMsg; + while( !aStrm.IsEof() && bOk ) + { + if ( nVersion >= 3 ) // Wir habe utf8 + aStrm.ReadByteStringLine( aLine, RTL_TEXTENCODING_UTF8 ); + else + aStrm.ReadByteStringLine( aLine, RTL_TEXTENCODING_IBM_850 ); + + if( aStrm.GetError() != SVSTREAM_OK ) + bOk = FALSE; + +#define TOKEN( n ) aLine.GetToken( n ) + + if ( aLine.GetTokenCount() >= 6 ) + { +// LogType;Filename;Line;Col1;Col2;Message + TTDebugData aDebugData; + aDebugData.aLogType = TTLogType( TOKEN(0).ToInt32() ); + aDebugData.aFilename = TOKEN(1); + aDebugData.nLine = TOKEN(2).ToInt32(); + aDebugData.nCol1 = TOKEN(3).ToInt32(); + aDebugData.nCol2 = TOKEN(4).ToInt32(); + aDebugData.aMsg = aLine.GetQuotedToken( 5, CUniString("\"\"") ); + aDebugData.aMsg.Erase(0,1); // Anführungszeichen entfernen + aDebugData.aMsg.Erase(aDebugData.aMsg.Len()-1,1); + + pLogMsg->aLogFileName.Erase(); + pLogMsg->aDebugData = aDebugData; + + AddAnyMsg( pLogMsg ); + } + else if ( bFirstLine && (aLine.Search( VERSION_STRING ) == 0) ) + nVersion = aLine.Copy( VERSION_STRING.Len() ).ToInt32(); + else bLoadError = TRUE; + + bFirstLine = FALSE; + } + bFileLoading = FALSE; + delete pLogMsg; + aStrm.Close(); + if ( nVersion < 2 && !bLoadError ) + Save( aName ); // Muß sein, sonst passiert beim mitloggen Blödsinn. + + } + else + bOk = FALSE; + return bOk; +} + +BOOL MsgEdit::Save( const String& aName ) +{ + BOOL bOk = TRUE; + BOOL bIsText = DirEntry( aName ).GetExtension().CompareIgnoreCaseToAscii("TXT") == COMPARE_EQUAL; + if ( bIsText && !QueryBox( NULL, ResId( IDS_LOSS_OF_INFORMATION ) ).Execute() ) + return FALSE; + SvFileStream aStrm( aName, STREAM_STD_WRITE | STREAM_TRUNC ); + if( aStrm.IsOpen() ) + { + if ( bIsText ) + { + String aSave = GetText(); + aSave.ConvertLineEnd(LINEEND_CRLF); + aStrm << ByteString( aSave, RTL_TEXTENCODING_UTF8 ).GetBuffer(); + } + else + { +// LogType;Filename;Line;Col1;Col2;Message + String aSave = VERSION_STRING.Append( UniString::CreateFromInt32( 3 ) ).AppendAscii("\n"); // Version 2 + SvLBoxEntry *pRun = aEditTree.First(); + while ( pRun && aEditTree.NextSibling( pRun ) ) + pRun = aEditTree.NextSibling( pRun ); + + aSave.ConvertLineEnd(LINEEND_CRLF); + aStrm << ByteString( aSave, RTL_TEXTENCODING_UTF8 ).GetBuffer(); + + SvLBoxEntry *pEntry; + while ( pRun ) + { + pEntry = pRun; + while ( pEntry && ( pEntry == pRun || LOGTYPE( pEntry ) != LOG_RUN ) ) + { + aSave = Impl_MakeSaveText( pEntry ); + aSave += '\n'; + aSave.ConvertLineEnd(LINEEND_CRLF); + aStrm << ByteString( aSave, RTL_TEXTENCODING_UTF8 ).GetBuffer(); + pEntry = aEditTree.Next( pEntry ); + } + pRun = aEditTree.PrevSibling( pRun ); + + } + } + if( aStrm.GetError() != SVSTREAM_OK ) + bOk = FALSE; + else + { + bModified = FALSE; + lModify.Call( NULL ); + } + + } + else + bOk = FALSE; + return bOk; +} + + +TTTreeListBox::TTTreeListBox( Window* pParent, BasicFrame* pBF, WinBits nWinStyle ) +: SvTreeListBox( pParent, nWinStyle ) +, pBasicFrame(pBF) +//, nDeselectParent(0) +{} + +BOOL TTTreeListBox::DoubleClickHdl() +{ + SvLBoxEntry *pThisEntry = GetHdlEntry(); + if ( pThisEntry && pThisEntry->GetUserData() && ((TTDebugData*)pThisEntry->GetUserData())->aFilename.Len() > 0 ) + { + TTDebugData *aData = (TTDebugData*)pThisEntry->GetUserData(); + if ( pBasicFrame->FindModuleWin( aData->aFilename ) ) + { + AppEdit *pWin = pBasicFrame->FindModuleWin( aData->aFilename ); + pWin->ToTop(); + } + else + pBasicFrame->LoadFile( aData->aFilename ); + + if ( pBasicFrame->pWork && pBasicFrame->pWork->ISA(AppEdit) ) + ((AppEdit*)pBasicFrame->pWork)->Highlight( aData->nLine, aData->nCol1, aData->nCol2 ); + return FALSE; + } + return TRUE; +} + +/*ULONG TTTreeListBox::SelectChildren( SvLBoxEntry* pParent, BOOL bSelect ) +{ + SvLBoxEntry *pEntry = FirstChild( pParent ); + ULONG nRet = 0; + while ( pEntry ) + { + nRet++; + Select( pEntry, bSelect ); + pEntry = NextSibling( pEntry ); + } + return nRet; +} + + +void TTTreeListBox::SelectHdl() +{ + SvLBoxEntry* pHdlEntry = GetHdlEntry(); + + SelectChildren( pHdlEntry, TRUE ); + Select( pHdlEntry, TRUE ); +// InitMenu(pApp->GetAppMenu()->GetPopupMenu( RID_APPEDIT )); // So daß Delete richtig ist +} + +void TTTreeListBox::DeselectHdl() +{ + SvLBoxEntry* pHdlEntry = GetHdlEntry(); + if ( GetParent( pHdlEntry ) ) + { + nDeselectParent++; + Select( GetParent( pHdlEntry ), FALSE ); + nDeselectParent--; + } + if ( !nDeselectParent ) + { + SelectChildren( pHdlEntry, FALSE ); + Select( pHdlEntry, FALSE ); + } + Invalidate(); +} */ + + +void TTTreeListBox::KeyInput( const KeyEvent& rKEvt ) +{ + switch ( rKEvt.GetKeyCode().GetFunction() ) + { + case KEYFUNC_CUT: + Control::GetParent()->Command( CommandEvent( Point(), RID_EDITCUT ) ); + break; + case KEYFUNC_COPY: + Control::GetParent()->Command( CommandEvent( Point(), RID_EDITCOPY ) ); + break; + case KEYFUNC_PASTE: + Control::GetParent()->Command( CommandEvent( Point(), RID_EDITPASTE ) ); + break; + case KEYFUNC_DELETE: + Control::GetParent()->Command( CommandEvent( Point(), RID_EDITDEL ) ); + break; + default: + SvTreeListBox::KeyInput( rKEvt ); + } +} + + +TTFeatures TTTreeListBox::GetFeatures( SvLBoxEntry* pEntry ) +{ + switch ( LOGTYPE( pEntry ) ) + { + case LOG_MESSAGE: + return HasNothing; + case LOG_WARNING : + return HasWarning; + case LOG_ERROR: + case LOG_CALL_STACK: + return HasError; + case LOG_RUN: + case LOG_TEST_CASE: + { + SvLBoxEntry* pThisEntry = FirstChild( pEntry ); + TTFeatures aResult = HasNothing; + while ( pThisEntry && !( (aResult & HasError) == HasError ) ) + { + if ( !IsEntryVisible( pThisEntry ) ) + aResult |= GetFeatures( pThisEntry ); + pThisEntry = NextSibling( pThisEntry ); + } + return aResult; + } + case LOG_ASSERTION: + return HasAssertion; + default: + DBG_ERROR("Unbekannter Typ im ResultFenster"); + } + return HasNothing; // da der Comp nich sieht, daß kein dafault nötig ist. +} + + +class TTLBoxString : public SvLBoxString +{ +public: + + TTLBoxString( SvLBoxEntry* pEntry, USHORT nFlags, + const String& rStr ) : SvLBoxString(pEntry,nFlags,rStr) {} + + virtual void Paint( const Point& rPos, SvLBox& rDev, USHORT nFlags, + SvLBoxEntry* pEntry); +}; + + +void TTLBoxString::Paint( const Point& rPos, SvLBox& rDev, USHORT nFlags, + SvLBoxEntry* pEntry ) +{ + TTFeatures aFeatures = ((TTTreeListBox*)&rDev)->GetFeatures( pEntry ); + + if ( aFeatures != HasNothing ) + { + Font aOldFont( rDev.GetFont()); + Font aFont( aOldFont ); + + if ( ( aFeatures & HasError ) != 0 || ( aFeatures & HasWarning ) != 0 ) + { + Color aCol; + if ( ( aFeatures & HasError ) == HasError ) + aCol = Color( 255, 120, 120 ); // Rot + else + aCol = Color( 255, 200, 120 ); // Ocker oder so + + if( rDev.IsSelected(pEntry) ) + aFont.SetColor( aCol ); + else + { + aFont.SetFillColor( aCol ); + aFont.SetTransparent( FALSE ); + } + } + else // also HasAssertion + { + if( rDev.IsSelected(pEntry) ) + { + Color aCol( 255, 255, 153 ); + aFont.SetColor( aCol ); + } + else + { + Size aSize( rDev.GetTextWidth( GetText() ), rDev.GetTextHeight() ); + Rectangle aRect( rPos, aSize ); + + static Bitmap aBmp( ResId( MBP_ASSERT ) ); + static BitmapEx aBmpEx( aBmp ); + static Wallpaper aWP( aBmpEx ); + + rDev.DrawWallpaper( aRect, aWP ); + } + +// virtual void NotifyScrolling( long nLines ); + } + rDev.SetFont( aFont ); + rDev.DrawText( rPos, GetText() ); + rDev.SetFont( aOldFont ); + } + else + SvLBoxString::Paint( rPos, rDev, nFlags, pEntry ); +} + + +void TTTreeListBox::InitEntry(SvLBoxEntry* pEntry, + const String& rStr ,const Image& rImg1, const Image& rImg2 ) +{ + USHORT nColToHilite = 1; //0==Bitmap;1=="Spalte1";2=="Spalte2" + SvTreeListBox::InitEntry( pEntry, rStr, rImg1, rImg2 ); + SvLBoxString* pCol = (SvLBoxString*)pEntry->GetItem( nColToHilite ); + TTLBoxString* pStr = new TTLBoxString( pEntry, 0, pCol->GetText() ); + pEntry->ReplaceItem( pStr, nColToHilite ); +} + diff --git a/basic/source/app/msgedit.hxx b/basic/source/app/msgedit.hxx new file mode 100644 index 000000000000..ce26378694cb --- /dev/null +++ b/basic/source/app/msgedit.hxx @@ -0,0 +1,134 @@ +/************************************************************************* + * + * $RCSfile: msgedit.hxx,v $ + * + * $Revision: 1.1.1.1 $ + * + * last change: $Author: hr $ $Date: 2000-09-18 16:12:09 $ + * + * The Contents of this file are made available subject to the terms of + * either of the following licenses + * + * - GNU Lesser General Public License Version 2.1 + * - Sun Industry Standards Source License Version 1.1 + * + * Sun Microsystems Inc., October, 2000 + * + * GNU Lesser General Public License Version 2.1 + * ============================================= + * Copyright 2000 by Sun Microsystems, Inc. + * 901 San Antonio Road, Palo Alto, CA 94303, USA + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License version 2.1, as published by the Free Software Foundation. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + * + * + * Sun Industry Standards Source License Version 1.1 + * ================================================= + * The contents of this file are subject to the Sun Industry Standards + * Source License Version 1.1 (the "License"); You may not use this file + * except in compliance with the License. You may obtain a copy of the + * License at http://www.openoffice.org/license.html. + * + * Software provided under this License is provided on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, + * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS, + * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING. + * See the License for the specific provisions governing your rights and + * obligations concerning the Software. + * + * The Initial Developer of the Original Code is: Sun Microsystems, Inc. + * + * Copyright: 2000 by Sun Microsystems, Inc. + * + * All Rights Reserved. + * + * Contributor(s): _______________________________________ + * + * + ************************************************************************/ + +#ifndef _MSGEDIT_HXX +#define _MSGEDIT_HXX + +#ifndef _SVTREEBOX_HXX //autogen +#include <svtools/svtreebx.hxx> +#endif + +#include "dataedit.hxx" +#include "testtool.hxx" +class BasicFrame; +class AppWin; + +#define SelectChildren SelectChilds // Sonst wird mir schlecht + +typedef USHORT TTFeatures; // Bitfeld für Features der Entrys +#define HasNothing TTFeatures(0x00) +#define HasError TTFeatures(0x01) +#define HasWarning TTFeatures(0x02) +#define HasAssertion TTFeatures(0x04) + + +class TTTreeListBox : public SvTreeListBox +{ +protected: +// virtual void Command( const CommandEvent& rCEvt ); +// USHORT nDeselectParent; + BasicFrame *pBasicFrame; + void InitEntry( SvLBoxEntry*, const String&, const Image&, const Image& ); +public: + TTTreeListBox( Window* pParent, BasicFrame* pBF, WinBits nWinStyle=0 ); + ~TTTreeListBox(){} + +// virtual void SelectHdl(); +// virtual void DeselectHdl(); + virtual BOOL DoubleClickHdl(); + + virtual void KeyInput( const KeyEvent& rKEvt ); + +// ULONG SelectChildren( SvLBoxEntry* pParent, BOOL bSelect ); + TTFeatures GetFeatures( SvLBoxEntry* ); +}; + +class MsgEdit : public DataEdit +{ + SvLBoxEntry *pCurrentRun; + SvLBoxEntry *pCurrentTestCase; + SvLBoxEntry *pCurrentError; +protected: + BOOL bModified; + Link lModify; + BasicFrame *pBasicFrame; + BOOL bFileLoading; // TRUE während eine Datei geladen wird. + String Impl_MakeText( SvLBoxEntry *pEntry ) const; + String Impl_MakeSaveText( SvLBoxEntry *pEntry ) const; + String Impl_MakeSaveText( TTDebugData aData ) const; + USHORT nVersion; // Speichert die Dateiversion + AppWin* pAppWin; + String aLogFileName; // Name der Logdatei +public: + MsgEdit( AppWin*, BasicFrame *pBF, const WinBits& ); + ~MsgEdit(); + void AddAnyMsg( TTLogMsg *LogMsg ); + void AddRun( String aMsg, TTDebugData aDebugData ); + void AddTestCase( String aMsg, TTDebugData aDebugData ); + void AddError( String aMsg, TTDebugData aDebugData ); + void AddCallStack( String aMsg, TTDebugData aDebugData ); + void AddMessage( String aMsg, TTDebugData aDebugData ); + void AddWarning( String aMsg, TTDebugData aDebugData ); + void AddAssertion( String aMsg, TTDebugData aDebugData ); +DATA_FUNC_DEF( aEditTree, TTTreeListBox ) +}; + +#endif diff --git a/basic/source/app/mybasic.cxx b/basic/source/app/mybasic.cxx new file mode 100644 index 000000000000..e9d823a6ff8f --- /dev/null +++ b/basic/source/app/mybasic.cxx @@ -0,0 +1,330 @@ +/************************************************************************* + * + * $RCSfile: mybasic.cxx,v $ + * + * $Revision: 1.1.1.1 $ + * + * last change: $Author: hr $ $Date: 2000-09-18 16:12:09 $ + * + * The Contents of this file are made available subject to the terms of + * either of the following licenses + * + * - GNU Lesser General Public License Version 2.1 + * - Sun Industry Standards Source License Version 1.1 + * + * Sun Microsystems Inc., October, 2000 + * + * GNU Lesser General Public License Version 2.1 + * ============================================= + * Copyright 2000 by Sun Microsystems, Inc. + * 901 San Antonio Road, Palo Alto, CA 94303, USA + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License version 2.1, as published by the Free Software Foundation. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + * + * + * Sun Industry Standards Source License Version 1.1 + * ================================================= + * The contents of this file are subject to the Sun Industry Standards + * Source License Version 1.1 (the "License"); You may not use this file + * except in compliance with the License. You may obtain a copy of the + * License at http://www.openoffice.org/license.html. + * + * Software provided under this License is provided on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, + * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS, + * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING. + * See the License for the specific provisions governing your rights and + * obligations concerning the Software. + * + * The Initial Developer of the Original Code is: Sun Microsystems, Inc. + * + * Copyright: 2000 by Sun Microsystems, Inc. + * + * All Rights Reserved. + * + * Contributor(s): _______________________________________ + * + * + ************************************************************************/ + +#ifndef _MSGBOX_HXX //autogen +#include <vcl/msgbox.hxx> +#endif +#ifndef _SBXCLASS_HXX //autogen +#include <svtools/sbx.hxx> +#endif + +// AB-Uno-Test +//#define unotest +#ifdef unotest +#ifndef _USR_UNO_HXX +#include <usr/uno.hxx> +#endif +#include <sbuno.hxx> +#include <sbunoobj.hxx> +#endif + +#include "sbintern.hxx" + +#ifndef _BASIC_TTRESHLP_HXX +#include "ttstrhlp.hxx" +#endif +#include "mybasic.hxx" +#include "basic.hrc" +#include "appbased.hxx" + +#include "status.hxx" +#include "basic.hrc" + +#include "object.hxx" + +#include "comm_bas.hxx" +#include "processw.hxx" + +TYPEINIT1(MyBasic,StarBASIC) + +class MyFactory : public SbxFactory +{ +public: + virtual SbxBase* Create( UINT16 nSbxId, UINT32 = SBXCR_SBX ); +}; + +static SampleObjectFac aFac1; +static MyFactory aFac2; +static CommunicationFactory aComManFac; +static ProcessFactory aProcessFac; +static short nInst = 0; + +SbxBase* MyFactory::Create( UINT16 nSbxId, UINT32 nCr ) +{ + if( nCr == SBXCR_TEST && nSbxId == SBXID_MYBASIC ) + return new MyBasic; + else + return NULL; +} + +MyBasic::MyBasic() : StarBASIC() +{ + nError = 0; + if( !nInst++ ) + { + AddFactory( &aFac1 ); + AddFactory( &aFac2 ); + AddFactory( &aComManFac ); + AddFactory( &aProcessFac ); + } + SbxVariable* p = new SbxCollection( CUniString("MyColl") ); + p->SetName( CUniString("Objects") ); + Insert( p ); + + // AB-Uno-Test +#ifdef unotest + // Uno-Service-Manager holenReflection Service bolen + createAndSetDefaultServiceManager(); // spaeter schon erledigt + + // Uno-Test-Objekt holen + UsrAny aObjAny = getIntrospectionTestObject(); + + // Objekt verpacken in ein SbUnoObject packen + String aName( "UnoObject" ); + SbxObjectRef xSbUnoObj = GetSbUnoObject( aName, aObjAny ); + //SbxObjectRef xSbUnoObj = new SbUnoObject( aName, aObjAny ); + Insert( (SbxObject*)xSbUnoObj ); +#endif + + pTestObject = NULL; +} + +Link MyBasic::GenLogHdl() +{ + return LINK( GetpApp()->GetAppWindow(), BasicFrame, Log ); +} + +Link MyBasic::GenWinInfoHdl() +{ + return LINK( GetpApp()->GetAppWindow(), BasicFrame, WinInfo ); +} + +Link MyBasic::GenModuleWinExistsHdl() +{ + return LINK( GetpApp()->GetAppWindow(), BasicFrame, ModuleWinExists ); +} + +void MyBasic::StartListening( SfxBroadcaster &rBroadcaster ) +{ + ((BasicFrame*)GetpApp()->GetAppWindow())->StartListening( rBroadcaster ); +} + +void MyBasic::SetCompileModule( SbModule *pMod ) +{ + GetSbData()->pCompMod = pMod; +} + +SbModule *MyBasic::GetCompileModule() +{ + return GetSbData()->pCompMod; +} + +String MyBasic::GenRealString( const String &aResString ) +{ + return ((BasicFrame*)GetpApp()->GetAppWindow())->GenRealString( aResString ); +} + +void MyBasic::LoadIniFile() +{ +} + +SbTextType MyBasic::GetSymbolType( const String &rSymbol, BOOL bWasTTControl ) +{ + return SB_SYMBOL; // Alles was hier landet ist vom Typ SB_SYMBOL und bleibt es auch +} + + +MyBasic::~MyBasic() +{ + aErrors.Clear(); + if( !--nInst ) + { + RemoveFactory( &aFac1 ); + RemoveFactory( &aFac2 ); + RemoveFactory( &aComManFac ); + RemoveFactory( &aProcessFac ); + } +} + +BOOL MyBasic::Compile( SbModule* p ) +{ + aErrors.Clear(); + nError = 0; + return StarBASIC::Compile( p ); +} + +BOOL MyBasic::ErrorHdl() +{ + AppEdit *CurrWin = aBasicApp.pFrame->FindModuleWin( GetActiveModule()->GetName() ); + if(CurrWin) + CurrWin->ToTop(); + else + { // erstmal Fenster aufmachen + String aModName = GetActiveModule()->GetName(); + if ( aModName.Copy(0,2).CompareToAscii("--") == COMPARE_EQUAL ) + aModName.Erase(0,2); + GetActiveModule()->SetName(aModName); + AppWin* p = new AppBasEd( aBasicApp.pFrame, GetActiveModule() ); + p->Show(); + p->GrabFocus(); + } + if( IsCompilerError() ) + { + aErrors.Insert( + new BasicError + ( aBasicApp.pFrame->pWork, + 0, StarBASIC::GetErrorText(), GetLine(), GetCol1(), GetCol2() ), + LIST_APPEND ); + nError++; + return BOOL( nError < 20 ); // Abbruch nach 20 Fehlern + } + else + { + ReportRuntimeError(); + return FALSE; + } +} + +void MyBasic::ReportRuntimeError() +{ + String nErrorText; + nErrorText = GetSpechialErrorText(); + + BasicError( aBasicApp.pFrame->pWork, + GetVBErrorCode( GetErrorCode() ), nErrorText, GetLine(), + GetCol1(), GetCol2() ).Show(); +} + +const String MyBasic::GetSpechialErrorText() +{ + return GetErrorText(); +} + +USHORT MyBasic::BreakHdl() +{ + SbModule* pMod = GetActiveModule(); + if( pMod ) + { + AppEdit* pWin = aBasicApp.pFrame->FindModuleWin( pMod->GetName() ); + if( !pWin ) + { // erstmal Fenster aufmachen + String aModName = GetActiveModule()->GetName(); + if ( aModName.Copy(0,2).CompareToAscii("--") == COMPARE_EQUAL ) + aModName.Erase(0,2); + GetActiveModule()->SetName(aModName); + AppWin* p = new AppBasEd( aBasicApp.pFrame, GetActiveModule() ); + p->Show(); + p->GrabFocus(); + p->ToTop(); + pWin = aBasicApp.pFrame->FindModuleWin( aModName ); + } + pWin->Highlight( GetLine(), GetCol1(), GetCol2() ); + } + + if( IsBreak() ) // Wenn Breakpoint (oder "Run to Cursor") + { +// if ( GetActiveModule()->IsBP(GetLine()) ) +// GetActiveModule()->ClearBP(GetLine()); + return aBasicApp.pFrame->BreakHandler(); + } + else + { + return aBasicApp.pFrame->BreakHandler(); + } +} + +/*************************************************************************** +|* +|* class BasicError +|* +***************************************************************************/ + +BasicError::BasicError + ( AppWin* w, USHORT nE, const String& r, USHORT nL, USHORT nC1, USHORT nC2 ) + : aText( ResId( IDS_ERROR1 ) ) +{ + pWin = w; + nLine = nL; + nCol1 = nC1; + nCol2 = nC2; + if( nE ) + { + aText += String::CreateFromInt32( nE ); + aText.AppendAscii(": "); + aText += r; + } + else + aText = r; +} + +// Dies ist ein Beispiel, wie die Fehler-Information geschickt +// aufgebaut werden kann, um ein Statement zu highlighten. + +void BasicError::Show() +{ + if( pWin && pWin->ISA(AppEdit) ) { + ((AppEdit*)pWin)->Highlight( nLine, nCol1, nCol2 ); + aBasicApp.pFrame->pStatus->Message( aText ); + } else MessBox( aBasicApp.pFrame, WB_OK, aBasicApp.pFrame->GetText(), + aText ).Execute(); +} + + diff --git a/basic/source/app/printer.cxx b/basic/source/app/printer.cxx new file mode 100644 index 000000000000..2de59e17bf9e --- /dev/null +++ b/basic/source/app/printer.cxx @@ -0,0 +1,216 @@ +/************************************************************************* + * + * $RCSfile: printer.cxx,v $ + * + * $Revision: 1.1.1.1 $ + * + * last change: $Author: hr $ $Date: 2000-09-18 16:12:09 $ + * + * The Contents of this file are made available subject to the terms of + * either of the following licenses + * + * - GNU Lesser General Public License Version 2.1 + * - Sun Industry Standards Source License Version 1.1 + * + * Sun Microsystems Inc., October, 2000 + * + * GNU Lesser General Public License Version 2.1 + * ============================================= + * Copyright 2000 by Sun Microsystems, Inc. + * 901 San Antonio Road, Palo Alto, CA 94303, USA + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License version 2.1, as published by the Free Software Foundation. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + * + * + * Sun Industry Standards Source License Version 1.1 + * ================================================= + * The contents of this file are subject to the Sun Industry Standards + * Source License Version 1.1 (the "License"); You may not use this file + * except in compliance with the License. You may obtain a copy of the + * License at http://www.openoffice.org/license.html. + * + * Software provided under this License is provided on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, + * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS, + * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING. + * See the License for the specific provisions governing your rights and + * obligations concerning the Software. + * + * The Initial Developer of the Original Code is: Sun Microsystems, Inc. + * + * Copyright: 2000 by Sun Microsystems, Inc. + * + * All Rights Reserved. + * + * Contributor(s): _______________________________________ + * + * + ************************************************************************/ + +#ifndef _PRINT_HXX //autogen +#include <vcl/print.hxx> +#endif +#ifndef _DIALOG_HXX //autogen +#include <vcl/dialog.hxx> +#endif +#ifndef _FIXED_HXX //autogen +#include <vcl/fixed.hxx> +#endif +#ifndef _BUTTON_HXX //autogen +#include <vcl/button.hxx> +#endif +#ifndef _BASIC_TTRESHLP_HXX +#include "ttstrhlp.hxx" +#endif + +#include "app.hxx" +#include "printer.hxx" +#include "basic.hrc" +#include "resids.hrc" + +class PrintingDialog : public ModelessDialog { + String aName; + FixedText aText; + CancelButton aCancel; +public: + PrintingDialog( Window*, BasicPrinter*, ResId&, String& ); + void ChangeMessage( short ); +}; + +BasicPrinter::BasicPrinter() : Printer() +{ + nPage = 0; nLine = 9999; + SetMapMode( MapMode( MAP_POINT ) ); + Size s( GetOutputSize() ); + // 10-Punkt-Schrift verwenden + Font aFont( FAMILY_MODERN, Size( 0, 10 ) ); + aFont.SetPitch( PITCH_FIXED ); + SetFont( aFont ); + // Ausgabe: 6 Zeilen/Zoll = 12 Punkt + nLines = (short) s.Height() / 12; + nYoff = 12; + SetStartPrintHdl( LINK( this, BasicPrinter, StartPrintHdl ) ); + SetEndPrintHdl( LINK( this, BasicPrinter, EndPrintHdl ) ); + SetPrintPageHdl( LINK( this, BasicPrinter, PrintPageHdl ) ); +} + +void BasicPrinter::Header() +{ + if( nPage ) EndPage(); + nPage++; + StartPage(); + String aHdr; + String aPage( ResId( IDS_PAGE ) ); + aPage.Append( String::CreateFromInt32(nPage) ); + aHdr = aFile.Copy( 0, 80 - aPage.Len() ); + aHdr.Expand( 80 - aPage.Len(), ' ' ); + aHdr += aPage; + DrawText( Point( 0, 0 ), aHdr ); + nLine = 2; +} + +void BasicPrinter::Print( const String& rFile, const String& rText, BasicFrame *pFrame ) +{ + nPage = 0; nLine = 9999; + aFile = rFile; + // Dialog einrichten + ResId aResId( IDD_PRINT_DIALOG ); + pDlg = new PrintingDialog + ( aBasicApp.pFrame, this, aResId, aFile ); + // Position des Dialogs setzen + Size s1 = aBasicApp.pFrame->GetSizePixel(); + Size s2 = pDlg->GetSizePixel(); + pDlg->SetPosPixel( Point( (s1.Width() - s2.Width() ) / 2, + (s1.Height()- s2.Height() ) / 2 ) ); + // PRINT-Menu disablen + MenuBar* pBar = pFrame->GetMenuBar(); + Menu* pFileMenu = pBar->GetPopupMenu( RID_APPFILE ); + pFileMenu->EnableItem( RID_FILEPRINT, FALSE ); + + pDlg->ChangeMessage( 1 ); + pDlg->Show(); + StartJob( rFile ); + StartPage(); + xub_StrLen nDone=0; + while( nDone < rText.Len() ) + { + if( nLine >= nLines ) Header(); + xub_StrLen nLineEnd = min( rText.Search( '\n', nDone ), rText.Search( '\r', nDone ) ); + DrawText( Point( 0, nLine * nYoff ), rText, nDone, nLineEnd-nDone-1 ); + nDone = nLineEnd; + if( nDone <= rText.Len() && rText.GetChar(nDone) == '\r' ) nDone++; + if( nDone <= rText.Len() && rText.GetChar(nDone) == '\n' ) nDone++; + nLine++; + Application::Reschedule(); + } + EndPage(); + EndJob(); + nPage = 1; + while( IsPrinting() ) Application::Reschedule(); + delete pDlg; pDlg = NULL; + pFileMenu->EnableItem( RID_FILEPRINT, TRUE ); +} + +IMPL_LINK_INLINE_START( BasicPrinter, StartPrintHdl, Printer *, pPrinter ) +{ + if( pDlg ) pDlg->Show(); + return 0; +} +IMPL_LINK_INLINE_END( BasicPrinter, StartPrintHdl, Printer *, pPrinter ) + +IMPL_LINK_INLINE_START( BasicPrinter, EndPrintHdl, Printer *, pPrinter ) +{ + if( pDlg ) pDlg->Hide(); + return 0; +} +IMPL_LINK_INLINE_END( BasicPrinter, EndPrintHdl, Printer *, pPrinter ) + +IMPL_LINK_INLINE_START( BasicPrinter, PrintPageHdl, Printer *, pPrinter ) +{ + if( pDlg ) pDlg->ChangeMessage( nPage ); + return 0; +} +IMPL_LINK_INLINE_END( BasicPrinter, PrintPageHdl, Printer *, pPrinter ) + +IMPL_LINK_INLINE( BasicPrinter, Abort , void *, EMPTYARG, +{ + AbortJob(); + return 0L; +} +) + +///////////////////////////////////////////////////////////////////////// + +PrintingDialog::PrintingDialog + ( Window* pParent, BasicPrinter* pPrn, ResId& rId, String& rName ) + : ModelessDialog( pParent, rId ), + aCancel( this, ResId( RID_CANCEL ) ), + aText ( this, ResId( RID_TEXT ) ), + aName ( rName ) +{ + FreeResource(); + aCancel.SetClickHdl( LINK( pPrn, BasicPrinter, Abort ) ); +} + +void PrintingDialog::ChangeMessage( short nPage ) +{ + String aMsg( ResId( IDS_PRINTMSG ) ); + aMsg += aName; + aMsg += CUniString("\n"); + aMsg += String( ResId( IDS_PAGE ) ); + aMsg += String::CreateFromInt32( nPage ); + aText.SetText( aMsg ); +} + diff --git a/basic/source/app/printer.hxx b/basic/source/app/printer.hxx new file mode 100644 index 000000000000..5478fed7efa3 --- /dev/null +++ b/basic/source/app/printer.hxx @@ -0,0 +1,92 @@ +/************************************************************************* + * + * $RCSfile: printer.hxx,v $ + * + * $Revision: 1.1.1.1 $ + * + * last change: $Author: hr $ $Date: 2000-09-18 16:12:09 $ + * + * The Contents of this file are made available subject to the terms of + * either of the following licenses + * + * - GNU Lesser General Public License Version 2.1 + * - Sun Industry Standards Source License Version 1.1 + * + * Sun Microsystems Inc., October, 2000 + * + * GNU Lesser General Public License Version 2.1 + * ============================================= + * Copyright 2000 by Sun Microsystems, Inc. + * 901 San Antonio Road, Palo Alto, CA 94303, USA + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License version 2.1, as published by the Free Software Foundation. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + * + * + * Sun Industry Standards Source License Version 1.1 + * ================================================= + * The contents of this file are subject to the Sun Industry Standards + * Source License Version 1.1 (the "License"); You may not use this file + * except in compliance with the License. You may obtain a copy of the + * License at http://www.openoffice.org/license.html. + * + * Software provided under this License is provided on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, + * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS, + * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING. + * See the License for the specific provisions governing your rights and + * obligations concerning the Software. + * + * The Initial Developer of the Original Code is: Sun Microsystems, Inc. + * + * Copyright: 2000 by Sun Microsystems, Inc. + * + * All Rights Reserved. + * + * Contributor(s): _______________________________________ + * + * + ************************************************************************/ + +#ifndef _BASICPRN_HXX +#define _BASICPRN_HXX + +#ifndef _PRINT_HXX //autogen +#include <vcl/print.hxx> +#endif + +class PrintingDialog; + +class BasicPrinter : public Printer { + short nLine; // aktuelle Zeile + short nPage; // aktuelle Seite + short nLines; // Zeilen pro Seite + short nYoff; // Zeilenabstand in Points + String aFile; // Dateiname + PrintingDialog* pDlg; // Druck-Dialog + void Header(); // Seitenkopf drucken +public: + BasicPrinter(); + void Print( const String& rFile, const String& rText, BasicFrame *pFrame ); + DECL_LINK( Abort, void * ); + DECL_LINK( StartPrintHdl, Printer * ); + DECL_LINK( EndPrintHdl, Printer * ); + DECL_LINK( PrintPageHdl, Printer * ); +#if defined( PM20 ) + // StarView-Bug, bald wieder zu entfernen: + virtual void SetPageQueueSize( USHORT ) {} +#endif +}; + +#endif diff --git a/basic/source/app/process.cxx b/basic/source/app/process.cxx new file mode 100644 index 000000000000..0a0a9beae762 --- /dev/null +++ b/basic/source/app/process.cxx @@ -0,0 +1,222 @@ +/************************************************************************* + * + * $RCSfile: process.cxx,v $ + * + * $Revision: 1.1.1.1 $ + * + * last change: $Author: hr $ $Date: 2000-09-18 16:12:09 $ + * + * The Contents of this file are made available subject to the terms of + * either of the following licenses + * + * - GNU Lesser General Public License Version 2.1 + * - Sun Industry Standards Source License Version 1.1 + * + * Sun Microsystems Inc., October, 2000 + * + * GNU Lesser General Public License Version 2.1 + * ============================================= + * Copyright 2000 by Sun Microsystems, Inc. + * 901 San Antonio Road, Palo Alto, CA 94303, USA + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License version 2.1, as published by the Free Software Foundation. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + * + * + * Sun Industry Standards Source License Version 1.1 + * ================================================= + * The contents of this file are subject to the Sun Industry Standards + * Source License Version 1.1 (the "License"); You may not use this file + * except in compliance with the License. You may obtain a copy of the + * License at http://www.openoffice.org/license.html. + * + * Software provided under this License is provided on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, + * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS, + * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING. + * See the License for the specific provisions governing your rights and + * obligations concerning the Software. + * + * The Initial Developer of the Original Code is: Sun Microsystems, Inc. + * + * Copyright: 2000 by Sun Microsystems, Inc. + * + * All Rights Reserved. + * + * Contributor(s): _______________________________________ + * + * + ************************************************************************/ + + +#ifdef WNT +#include <tools/prewin.h> +#include "winbase.h" +#include <tools/postwin.h> +#endif + +#ifndef _ERRCODE_HXX //autogen +#include <tools/errcode.hxx> +#endif +#ifndef _VOS_PROCESS_HXX_ +#include <vos/process.hxx> +#endif +#ifndef _SBXCORE_HXX +#include <svtools/sbxcore.hxx> +#endif +#ifndef _STRING_HXX +#include <tools/string.hxx> +#endif +#ifndef _OSL_FILE_HXX_ +#include <osl/file.hxx> +#endif + +#ifndef _BASIC_TTRESHLP_HXX +#include "ttstrhlp.hxx" +#endif + +//#ifndef _BYTE_STRING_LIST +//DECLARE_LIST( ByteStringList, ByteString * ); +//#define _BYTE_STRING_LIST +//#endif + +#include "process.hxx" + +// Konstruktor für den Process +Process::Process() +: bWasGPF( FALSE ) +, pArgumentList( NULL ) +, pProcess( NULL ) +, bHasBeenStarted( FALSE ) +{ +} + +// Destruktor +Process::~Process() +{ + delete pArgumentList; + delete pProcess; +} + + +BOOL Process::ImplIsRunning() +{ + if ( pProcess && bHasBeenStarted ) + { + NAMESPACE_VOS(OProcess::TProcessInfo) aProcessInfo; + pProcess->getInfo( NAMESPACE_VOS(OProcess::TData_ExitCode), &aProcessInfo ); + if ( !(aProcessInfo.Fields & NAMESPACE_VOS(OProcess::TData_ExitCode)) ) + return TRUE; + else + return FALSE; + } + else + return FALSE; +} + +long Process::ImplGetExitCode() +{ + if ( pProcess ) + { + NAMESPACE_VOS(OProcess::TProcessInfo) aProcessInfo; + pProcess->getInfo( NAMESPACE_VOS(OProcess::TData_ExitCode), &aProcessInfo ); + if ( !(aProcessInfo.Fields & NAMESPACE_VOS(OProcess::TData_ExitCode)) ) + SbxBase::SetError( SbxERR_NO_ACTIVE_OBJECT ); + return aProcessInfo.Code; + } + else + SbxBase::SetError( SbxERR_NO_ACTIVE_OBJECT ); + return 0; +} + + +//////////////////////////////////////////////////////////////////////////// + +// Die Methoden: +void Process::SetImage( const String &aAppPath, const String &aAppParams ) +{ // Imagedatei des Executables + if ( pProcess && ImplIsRunning() ) + SbxBase::SetError( SbxERR_NO_ACTIVE_OBJECT ); + else + { + delete pArgumentList; + delete pProcess; + + xub_StrLen i, nCount = aAppParams.GetQuotedTokenCount( CUniString("\"\"" ), ' ' ); + NAMESPACE_RTL(OUString) *pParamList = new NAMESPACE_RTL(OUString)[nCount]; + for ( i = 0 ; i < nCount ; i++ ) + { + NAMESPACE_RTL(OUString) aTemp = NAMESPACE_RTL(OUString)(aAppParams.GetQuotedToken( i, CUniString("\"\"" ), ' ' )); + if ( aTemp.getLength() ) + pParamList[i] = aTemp; + } + pArgumentList = new NAMESPACE_VOS(OArgumentList)( pParamList, nCount ); + NAMESPACE_RTL(OUString) aNormalizedAppPath; + osl::FileBase::normalizePath( NAMESPACE_RTL(OUString)(aAppPath), aNormalizedAppPath ); + pProcess = new NAMESPACE_VOS(OProcess)( aNormalizedAppPath ); + bHasBeenStarted = FALSE; + } +} + +BOOL Process::Start() +{ // Programm wird gestartet + BOOL bSuccess=FALSE; + if ( pProcess && !ImplIsRunning() ) + { + bWasGPF = FALSE; +#ifdef WNT +// sal_uInt32 nErrorMode = SetErrorMode(SEM_NOOPENFILEERRORBOX | SEM_NOALIGNMENTFAULTEXCEPT | SEM_FAILCRITICALERRORS | SEM_NOGPFAULTERRORBOX); + sal_uInt32 nErrorMode = SetErrorMode(SEM_NOOPENFILEERRORBOX | SEM_NOALIGNMENTFAULTEXCEPT | SEM_NOGPFAULTERRORBOX); + try + { +#endif + bSuccess = pProcess->execute( (NAMESPACE_VOS(OProcess)::TProcessOption) + ( NAMESPACE_VOS(OProcess)::TOption_SearchPath + /*| NAMESPACE_VOS(OProcess)::TOption_Detached*/ + /*| NAMESPACE_VOS(OProcess)::TOption_Wait*/ ), + *pArgumentList ) == NAMESPACE_VOS(OProcess)::E_None; +#ifdef WNT + } + catch( ... ) + { + bWasGPF = TRUE; + } + nErrorMode = SetErrorMode(nErrorMode); +#endif + bHasBeenStarted = bSuccess; + } + else + SbxBase::SetError( SbxERR_NO_ACTIVE_OBJECT ); + return bSuccess; +} + +ULONG Process::GetExitCode() +{ // ExitCode des Programms(nachdem es beendet ist) + return ImplGetExitCode(); +} + +BOOL Process::IsRunning() +{ // Programm läuft noch + return ImplIsRunning(); +} + +BOOL Process::WasGPF() +{ // Programm mit GPF o.ä. abgebrochen +#ifdef WNT + return ImplGetExitCode() == 3221225477; +#else + return bWasGPF; +#endif +} + diff --git a/basic/source/app/processw.cxx b/basic/source/app/processw.cxx new file mode 100644 index 000000000000..d33c9ddfa208 --- /dev/null +++ b/basic/source/app/processw.cxx @@ -0,0 +1,324 @@ +/************************************************************************* + * + * $RCSfile: processw.cxx,v $ + * + * $Revision: 1.1.1.1 $ + * + * last change: $Author: hr $ $Date: 2000-09-18 16:12:09 $ + * + * The Contents of this file are made available subject to the terms of + * either of the following licenses + * + * - GNU Lesser General Public License Version 2.1 + * - Sun Industry Standards Source License Version 1.1 + * + * Sun Microsystems Inc., October, 2000 + * + * GNU Lesser General Public License Version 2.1 + * ============================================= + * Copyright 2000 by Sun Microsystems, Inc. + * 901 San Antonio Road, Palo Alto, CA 94303, USA + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License version 2.1, as published by the Free Software Foundation. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + * + * + * Sun Industry Standards Source License Version 1.1 + * ================================================= + * The contents of this file are subject to the Sun Industry Standards + * Source License Version 1.1 (the "License"); You may not use this file + * except in compliance with the License. You may obtain a copy of the + * License at http://www.openoffice.org/license.html. + * + * Software provided under this License is provided on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, + * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS, + * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING. + * See the License for the specific provisions governing your rights and + * obligations concerning the Software. + * + * The Initial Developer of the Original Code is: Sun Microsystems, Inc. + * + * Copyright: 2000 by Sun Microsystems, Inc. + * + * All Rights Reserved. + * + * Contributor(s): _______________________________________ + * + * + ************************************************************************/ + + +#ifndef _ERRCODE_HXX //autogen +#include <tools/errcode.hxx> +#endif +#ifndef _SBX_SBXOBJECT_HXX //autogen +#include <svtools/sbxobj.hxx> +#endif +#ifndef _SBXCLASS_HXX //autogen +#include <svtools/sbx.hxx> +#endif +#ifndef __SBX_SBXVARIABLE_HXX //autogen +#include <svtools/sbxvar.hxx> +#endif + +//#include <osl/thread.h> +#ifndef _BASIC_TTRESHLP_HXX +#include "ttstrhlp.hxx" +#endif + +#include "processw.hxx" + +//#include "collelem.hxx" +// Makro MEMBER() +#include "macfix.hxx" + +// Der Process hat folgende Elemente: +// 1) Properties: +// Keine +// 2) Methoden: +// SetImage( Filename ) +// BOOL Start +// USHORT GetExitCode +// BOOL IsRunning +// BOOL WasGPF + + +// Diese Implementation ist ein Beispiel fuer eine tabellengesteuerte +// Version, die sehr viele Elemente enthalten kann. Die Elemente werden +// je nach Bedarf aus der Tabelle in das Objekt uebernommen. + +// Das nArgs-Feld eines Tabelleneintrags ist wie folgt verschluesselt: + +#define _ARGSMASK 0x00FF // Bis zu 255 Argumente +#define _RWMASK 0x0F00 // Maske fuer R/W-Bits +#define _TYPEMASK 0xF000 // Maske fuer den Typ des Eintrags + +#define _READ 0x0100 // kann gelesen werden +#define _BWRITE 0x0200 // kann as Lvalue verwendet werden +#define _LVALUE _BWRITE // kann as Lvalue verwendet werden +#define _READWRITE 0x0300 // beides +#define _OPT 0x0400 // TRUE: optionaler Parameter +#define _METHOD 0x1000 // Masken-Bit fuer eine Methode +#define _PROPERTY 0x2000 // Masken-Bit fuer eine Property +#define _COLL 0x4000 // Masken-Bit fuer eine Collection + // Kombination von oberen Bits: +#define _FUNCTION 0x1100 // Maske fuer Function +#define _LFUNCTION 0x1300 // Maske fuer Function, die auch als Lvalue geht +#define _ROPROP 0x2100 // Maske Read Only-Property +#define _WOPROP 0x2200 // Maske Write Only-Property +#define _RWPROP 0x2300 // Maske Read/Write-Property +#define _COLLPROP 0x4100 // Maske Read-Collection-Element + +#define COLLNAME "Elements" // Name der Collection, hier mal hart verdrahtet + + + +ProcessWrapper::Methods ProcessWrapper::aProcessMethods[] = { +// Imagedatei des Executables +{ "SetImage", SbxEMPTY, 1 | _FUNCTION, MEMBER(ProcessWrapper::PSetImage) }, + // Zwei Named Parameter + { "Filename",SbxSTRING }, + { "Params",SbxSTRING, _OPT }, +// Programm wird gestartet +{ "Start", SbxBOOL, 0 | _FUNCTION, MEMBER(ProcessWrapper::PStart) }, +// ExitCode des Programms(nachdem es beendet ist) +{ "GetExitCode", SbxULONG, 0 | _FUNCTION, MEMBER(ProcessWrapper::PGetExitCode) }, +// Programm läuft noch +{ "IsRunning", SbxBOOL, 0 | _FUNCTION, MEMBER(ProcessWrapper::PIsRunning) }, +// Programm mit GPF o.ä. abgebrochen +{ "WasGPF", SbxBOOL, 0 | _FUNCTION, MEMBER(ProcessWrapper::PWasGPF) }, + +{ NULL, SbxNULL, -1 }}; // Tabellenende + + + +// Konstruktor für den Process +ProcessWrapper::ProcessWrapper() : SbxObject( CUniString("Process") ) +{ + pProcess = new Process(); + SetName( CUniString("Process") ); + pMethods = &aProcessMethods[0]; +} + +// Destruktor +ProcessWrapper::~ProcessWrapper() +{ + delete pProcess; +} + +// Suche nach einem Element: +// Hier wird linear durch die Methodentabelle gegangen, bis eine +// passende Methode gefunden wurde. +// Wenn die Methode/Property nicht gefunden wurde, nur NULL ohne +// Fehlercode zurueckliefern, da so auch eine ganze Chain von +// Objekten nach der Methode/Property befragt werden kann. + +SbxVariable* ProcessWrapper::Find( const String& rName, SbxClassType t ) +{ + // Ist das Element bereits vorhanden? + SbxVariable* pRes = SbxObject::Find( rName, t ); + if( !pRes && t != SbxCLASS_OBJECT ) + { + // sonst suchen + Methods* p = pMethods; + short nIndex = 0; + BOOL bFound = FALSE; + while( p->nArgs != -1 ) + { + if( rName.CompareIgnoreCaseToAscii( p->pName ) == COMPARE_EQUAL ) + { + bFound = TRUE; break; + } + nIndex += ( p->nArgs & _ARGSMASK ) + 1; + p = pMethods + nIndex; + } + if( bFound ) + { + // Args-Felder isolieren: + short nAccess = ( p->nArgs & _RWMASK ) >> 8; + short nType = ( p->nArgs & _TYPEMASK ); + String aName( p->pName, RTL_TEXTENCODING_ASCII_US ); + SbxClassType eCT = SbxCLASS_OBJECT; + if( nType & _PROPERTY ) + eCT = SbxCLASS_PROPERTY; + else if( nType & _METHOD ) + eCT = SbxCLASS_METHOD; + pRes = Make( aName, eCT, p->eType ); + // Wir setzen den Array-Index + 1, da ja noch andere + // Standard-Properties existieren, die auch aktiviert + // werden muessen. + pRes->SetUserData( nIndex + 1 ); + pRes->SetFlags( nAccess ); + } + } + return pRes; +} + +// Aktivierung eines Elements oder Anfordern eines Infoblocks + +void ProcessWrapper::SFX_NOTIFY( SfxBroadcaster& rBC, const TypeId& rBCT, + const SfxHint& rHint, const TypeId& rHT ) +{ + const SbxHint* pHint = PTR_CAST(SbxHint,&rHint); + if( pHint ) + { + SbxVariable* pVar = pHint->GetVar(); + SbxArray* pPar = pVar->GetParameters(); + USHORT nIndex = (USHORT) pVar->GetUserData(); + // kein Index: weiterreichen! + if( nIndex ) + { + ULONG t = pHint->GetId(); + if( t == SBX_HINT_INFOWANTED ) + pVar->SetInfo( GetInfo( (short) pVar->GetUserData() ) ); + else + { + BOOL bWrite = FALSE; + if( t == SBX_HINT_DATACHANGED ) + bWrite = TRUE; + if( t == SBX_HINT_DATAWANTED || bWrite ) + { + // Parameter-Test fuer Methoden: + USHORT nPar = pMethods[ --nIndex ].nArgs & 0x00FF; + // Element 0 ist der Returnwert + if( ( !pPar && nPar ) + || ( pPar && pPar->Count() < nPar+1 ) ) + SetError( SbxERR_WRONG_ARGS ); + // Alles klar, man kann den Call ausfuehren + else + { + (this->*(pMethods[ nIndex ].pFunc))( pVar, pPar, bWrite ); + } + } + } + } + SbxObject::SFX_NOTIFY( rBC, rBCT, rHint, rHT ); + } +} + +// Zusammenbau der Infostruktur fuer einzelne Elemente + +SbxInfo* ProcessWrapper::GetInfo( short nIdx ) +{ + Methods* p = &pMethods[ nIdx ]; + // Wenn mal eine Hilfedatei zur Verfuegung steht: + // SbxInfo* pInfo = new SbxInfo( Hilfedateiname, p->nHelpId ); + SbxInfo* pInfo = new SbxInfo; + short nPar = p->nArgs & _ARGSMASK; + for( short i = 0; i < nPar; i++ ) + { + p++; + String aName( p->pName, RTL_TEXTENCODING_ASCII_US ); + USHORT nFlags = ( p->nArgs >> 8 ) & 0x03; + if( p->nArgs & _OPT ) + nFlags |= SBX_OPTIONAL; + pInfo->AddParam( aNa |