diff --git a/reactos/base/applications/applications.rbuild b/reactos/base/applications/applications.rbuild
index 273ee1bba92..de108400735 100644
--- a/reactos/base/applications/applications.rbuild
+++ b/reactos/base/applications/applications.rbuild
@@ -7,6 +7,12 @@
+
+
+
+
+
+
@@ -43,6 +49,9 @@
+
+
+
@@ -61,6 +70,9 @@
+
+
+
@@ -73,4 +85,8 @@
+
+
+
+
diff --git a/reactos/base/applications/cacls/cacls.c b/reactos/base/applications/cacls/cacls.c
index ad93e130377..733882ba529 100644
--- a/reactos/base/applications/cacls/cacls.c
+++ b/reactos/base/applications/cacls/cacls.c
@@ -507,18 +507,8 @@ PrintSpecialAccess:
}
-#ifdef _UNICODE
-int __cdecl main(void)
-#else
-int __cdecl _main (int argc, char *argv[])
-#endif
+int __cdecl _tmain(int argc, const TCHAR *argv[])
{
-#ifdef _UNICODE
- PWCHAR *argv;
- int argc = 0;
- argv = CommandLineToArgvW(GetCommandLineW(), &argc);
-#endif
-
if (argc < 2)
{
PrintHelp();
diff --git a/reactos/base/applications/cacls/cacls.rbuild b/reactos/base/applications/cacls/cacls.rbuild
index b15e9b54b00..a2abe968a6d 100644
--- a/reactos/base/applications/cacls/cacls.rbuild
+++ b/reactos/base/applications/cacls/cacls.rbuild
@@ -1,15 +1,15 @@
-
+
.
-
-
0x0500
0x0600
0x0600
kernel32
advapi32
ntdll
+ user32
+ shell32
cacls.c
- cacls.rc
+ lang/cacls.rc
precomp.h
diff --git a/reactos/base/applications/cacls/De.rc b/reactos/base/applications/cacls/lang/De.rc
similarity index 100%
rename from reactos/base/applications/cacls/De.rc
rename to reactos/base/applications/cacls/lang/De.rc
diff --git a/reactos/base/applications/cacls/En.rc b/reactos/base/applications/cacls/lang/En.rc
similarity index 100%
rename from reactos/base/applications/cacls/En.rc
rename to reactos/base/applications/cacls/lang/En.rc
diff --git a/reactos/base/applications/cacls/Nl.rc b/reactos/base/applications/cacls/lang/Nl.rc
similarity index 100%
rename from reactos/base/applications/cacls/Nl.rc
rename to reactos/base/applications/cacls/lang/Nl.rc
diff --git a/reactos/base/applications/cacls/lang/No.rc b/reactos/base/applications/cacls/lang/No.rc
new file mode 100644
index 00000000000..efde40a5f0f
--- /dev/null
+++ b/reactos/base/applications/cacls/lang/No.rc
@@ -0,0 +1,74 @@
+LANGUAGE LANG_NORWEGIAN, SUBLANG_NEUTRAL
+
+STRINGTABLE DISCARDABLE
+{
+
+IDS_HELP, "Viser eller endrer tilgang kontroll lister (ACL) av filer\n\n\
+CACLS filnavn [/T] [/E] [/C] [/G bruker:perm [...]] [/R user [...]]\n\
+ [/P bruker:perm [...]] [/D bruker [...]]\n\
+ filnavn Viser ACL.\n\
+ /T Endrer ACL av spesifiserte filer i\n\
+ nåværende katalog og alle under-mapper.\n\
+ /E Rediger ACL isteden for erstatte det.\n\
+ /C Fortsett på tilgang nektet feiler.\n\
+ /G user:perm Innrømme spesifiert bruker tilgang rettigheter.\n\
+ Perm kan bli: L Les\n\
+ S Skriv\n\
+ E Endre (skriv)\n\
+ F Full kontroll\n\
+ /R bruker Tilbakekalle spesifisert bruker tilgang rettighet (bare gyldig med /E).\n\
+ /P bruker:perm Erstatte spesifisert bruker tilgang rettighet.\n\
+ Perm kan bli: I Ingen\n\
+ L Les\n\
+ S Skrive\n\
+ E Endre (skriv)\n\
+ F Full kontroll\n\
+ /D bruker Avslå spesifisert bruker tilgang.\n\
+Wildcards kan bli brukt for å spesifisere mere enn en fil i en kommando.\n\
+Du kan spesifisere mere enn en bruker i en kommando.\n\n\
+Forkortelse:\n\
+ CI - Container Inherit.\n\
+ ACE vil bli inherited av directories.\n\
+ OI - Object Inherit.\n\
+ ACE will be inherited by files.\n\
+ IO - Inherit Only.\n\
+ ACE gjelder ikke til nåværende fil/katalog.\n"
+
+IDS_ABBR_CI, "(CI)"
+IDS_ABBR_OI, "(OI)"
+IDS_ABBR_IO, "(IO)"
+IDS_ABBR_FULL, "F"
+IDS_ABBR_READ, "R"
+IDS_ABBR_WRITE, "W"
+IDS_ABBR_CHANGE, "C"
+IDS_ABBR_NONE, "N"
+IDS_ALLOW, ""
+IDS_DENY, "(NEKTE)"
+IDS_SPECIAL_ACCESS, "(spesiell tilgang:)"
+IDS_GENERIC_READ, "GENERISK_LESE"
+IDS_GENERIC_WRITE, "GENERISK_SKRIVE"
+IDS_GENERIC_EXECUTE, "GENERISK_KJØRE"
+IDS_GENERIC_ALL, "GENERISK_ALT"
+IDS_FILE_GENERIC_EXECUTE, "FIL_GENERISK_KJØRE"
+IDS_FILE_GENERIC_READ, "FIL_GENERISK_LESE"
+IDS_FILE_GENERIC_WRITE, "FIL_GENERISK_SKRIVE"
+IDS_FILE_READ_DATA, "FIL_LES_DATA"
+IDS_FILE_WRITE_DATA, "FIL_SKRIV_DATA"
+IDS_FILE_APPEND_DATA, "FIL_TILFØYE_DATA"
+IDS_FILE_READ_EA, "FIL_LESE_EA"
+IDS_FILE_WRITE_EA, "FIL_SKRIVE_EA"
+IDS_FILE_EXECUTE, "FIL_KJØRE"
+IDS_FILE_DELETE_CHILD, "FIL_SLETT_BARN"
+IDS_FILE_READ_ATTRIBUTES, "FIL_LESE_ATTRIBUTTER"
+IDS_FILE_WRITE_ATTRIBUTES, "FIL_SKRIVE_ATTRIBUTTER"
+IDS_MAXIMUM_ALLOWED, "MAKSIMUM_TILATT"
+IDS_ACCESS_SYSTEM_SECURITY, "TILGANG_SYSTEM_SIKKERHET"
+IDS_SPECIFIC_RIGHTS_ALL, "SPESIFIKT_RETTIGHETER_ALT"
+IDS_STANDARD_RIGHTS_REQUIRED, "STANDARD_RETTIGHETER_PÅBUDT"
+IDS_SYNCHRONIZE, "SYNKRONISERE"
+IDS_WRITE_OWNER, "SKRIVE_EIER"
+IDS_WRITE_DAC, "SKRIVE_DAC"
+IDS_READ_CONTROL, "LESE_KONTROLL"
+IDS_DELETE, "SLETT"
+IDS_STANDARD_RIGHTS_ALL, "STANDARD_RETTIGHETER_ALT"
+}
diff --git a/reactos/base/applications/cacls/Ru.rc b/reactos/base/applications/cacls/lang/Ru.rc
similarity index 100%
rename from reactos/base/applications/cacls/Ru.rc
rename to reactos/base/applications/cacls/lang/Ru.rc
diff --git a/reactos/base/applications/cacls/cacls.rc b/reactos/base/applications/cacls/lang/cacls.rc
similarity index 100%
rename from reactos/base/applications/cacls/cacls.rc
rename to reactos/base/applications/cacls/lang/cacls.rc
diff --git a/reactos/base/applications/cacls/rsrc.rc b/reactos/base/applications/cacls/rsrc.rc
index a7f2223665c..3c472888f34 100644
--- a/reactos/base/applications/cacls/rsrc.rc
+++ b/reactos/base/applications/cacls/rsrc.rc
@@ -8,8 +8,9 @@
LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
/* include localised resources */
-#include "En.rc"
-#include "Nl.rc"
-#include "Ru.rc"
-#include "De.rc"
+#include "lang/En.rc"
+#include "lang/Nl.rc"
+#include "lang/Ru.rc"
+#include "lang/De.rc"
+#include "lang/No.rc"
diff --git a/reactos/base/applications/calc/Cz.rc b/reactos/base/applications/calc/lang/Cz.rc
similarity index 96%
rename from reactos/base/applications/calc/Cz.rc
rename to reactos/base/applications/calc/lang/Cz.rc
index 7aca39f9209..53eea8496f1 100644
--- a/reactos/base/applications/calc/Cz.rc
+++ b/reactos/base/applications/calc/lang/Cz.rc
@@ -1,157 +1,157 @@
-/*
- * Czech language support
- *
- * WineCalc (En.rc)
- *
- * Copyright 2005 Denzil
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * 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
- */
-
-#include "windows.h"
-#include "resource.h"
-#include "winecalc.h"
-
-LANGUAGE LANG_CZECH, SUBLANG_DEFAULT
-
-STRINGTABLE DISCARDABLE
-{
- IDS_APPNAME, "Kalkulátor"
-
- IDS_COPYRIGHT1, "Kalkulátor 5.0. Licencován pod LGPL 2"
- IDS_COPYRIGHT2 "Copyright 2003, James Briggs"
- IDS_COPYRIGHT3 "San Jose, California, USA"
- IDS_COPYRIGHT4 "james@ActionMessage.com"
- IDS_COPYRIGHT5 "http://www.ActionMessage.com/winecalc/"
-
- IDS_BTN_BACKSPACE, "Zpìt"
- IDS_BTN_CLEAR_ENTRY, "CE"
- IDS_BTN_CLEAR_ALL, "C"
- IDS_BTN_MEM_CLEAR, "MC"
- IDS_BTN_MEM_RECALL, "MR"
- IDS_BTN_MEM_STORE, "MS"
- IDS_BTN_MEM_PLUS, "M+"
- IDS_BTN_MEM_STATUS_M, "M"
- IDS_BTN_SQRT, "sqrt"
- IDS_ERR_INVALID_INPUT, "Neplatný vstup pro funkci."
- IDS_ERR_DIVIDE_BY_ZERO, "Nelze dìlit nulou."
- IDS_ERR_UNDEFINED, "Výsledek funkce není definován."
-}
-
-MAIN_MENU MENU DISCARDABLE
-{
- POPUP "&Editace" {
- MENUITEM "&Kopírovat Ctrl+C", IDM_COPY
- MENUITEM "&Vložit Ctrl+V", IDM_PASTE
- }
- POPUP "&Zobrazení" {
- MENUITEM "Standartní", IDM_MODE_STANDARD
- MENUITEM "Vìdecké", IDM_MODE_SCIENTIFIC
- MENUITEM SEPARATOR
- MENUITEM "Seskupování èíslic", IDM_DIGIT_GROUPING
- }
- POPUP "&Pomoc" {
- MENUITEM "Témata nápovìdy", IDM_HELP_TOPICS
- MENUITEM SEPARATOR
- MENUITEM "O Kalkulátoru", IDM_ABOUT
- }
-}
-
-SCIMS_MENU MENU DISCARDABLE
-{
- POPUP "&Editace" {
- MENUITEM "&Kopírovat Ctrl+C", IDM_COPY
- MENUITEM "&Vložit Ctrl+V", IDM_PASTE
- }
- POPUP "&Zobrazení" {
- MENUITEM "Standartní", IDM_MODE_STANDARD
- MENUITEM "Vìdecké", IDM_MODE_SCIENTIFIC
- MENUITEM SEPARATOR
- MENUITEM "Šestnáctkové\tF5", ID_CALC_NS_HEX
- MENUITEM "Desítkové\tF6", ID_CALC_NS_DEC
- MENUITEM "Osmièkové\tF7", ID_CALC_NS_OCT
- MENUITEM "Dvojkové\tF8", ID_CALC_NS_BIN
- MENUITEM SEPARATOR
- MENUITEM "Stupnì\tF2", ID_CALC_MS_DEGREES
- MENUITEM "Radiány\tF3", ID_CALC_MS_RADIANS
- MENUITEM "Grady\tF4", ID_CALC_MS_GRADS
- MENUITEM SEPARATOR
- MENUITEM "Seskupování èíslic", IDM_DIGIT_GROUPING
- }
- POPUP "&Pomoc" {
- MENUITEM "Témata nápovìdy", IDM_HELP_TOPICS
- MENUITEM SEPARATOR
- MENUITEM "O Kalkulátoru", IDM_ABOUT
- }
-}
-
-SCIWS_MENU MENU DISCARDABLE
-{
- POPUP "&Editace" {
- MENUITEM "&Kopírovat Ctrl+C", IDM_COPY
- MENUITEM "&Vložit Ctrl+V", IDM_PASTE
- }
- POPUP "&Zobrazení" {
- MENUITEM "Standartní", IDM_MODE_STANDARD
- MENUITEM "Vìdecké", IDM_MODE_SCIENTIFIC
- MENUITEM SEPARATOR
- MENUITEM "Šestnáctkové\tF5", ID_CALC_NS_HEX
- MENUITEM "Desítkové\tF6", ID_CALC_NS_DEC
- MENUITEM "Osmièkové\tF7", ID_CALC_NS_OCT
- MENUITEM "Dvojkové\tF8", ID_CALC_NS_BIN
- MENUITEM SEPARATOR
- MENUITEM "Qword\tF12", ID_CALC_WS_QWORD
- MENUITEM "Dword\tF2", ID_CALC_WS_DWORD
- MENUITEM "Word\tF3", ID_CALC_WS_WORD
- MENUITEM "Byte\tF4", ID_CALC_WS_BYTE
- MENUITEM SEPARATOR
- MENUITEM "Seskupování èíslic", IDM_DIGIT_GROUPING
- }
- POPUP "&Pomoc" {
- MENUITEM "Témata nápovìdy", IDM_HELP_TOPICS
- MENUITEM SEPARATOR
- MENUITEM "O Kalkulátoru", IDM_ABOUT
- }
-}
-
-MAIN_MENU ACCELERATORS
-BEGIN
- VK_F1, IDV_HELP, VIRTKEY
-END
-
-DLG_ABOUT DIALOG 12,0,120,82
-CAPTION "O GNU winecalc"
-STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
-BEGIN
- DEFPUSHBUTTON "OK", IDOK, 42, 60, 30, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
-END
-
-WHATS_THIS_MENU MENU DISCARDABLE
-{
- POPUP "" {
- MENUITEM "Co je toto?", IDM_WHATS_THIS
- }
-}
-
-DLG_STATS DIALOG 12,0,125,78
-CAPTION "Statistics Box"
-FONT 9, "Tahoma"
-STYLE WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE
-BEGIN
- DEFPUSHBUTTON "&RET", ID_STATS_RET, 4, 52, 25, 13, WS_TABSTOP | WS_GROUP
- PUSHBUTTON "&LOAD", ID_STATS_LOAD, 34, 52, 25, 13, WS_TABSTOP | WS_GROUP
- PUSHBUTTON "&CD" ID_STATS_CD, 64, 52, 25, 13, WS_TABSTOP | WS_GROUP
- PUSHBUTTON "C&AD", ID_STATS_CAD, 94, 52, 25, 13, WS_TABSTOP | WS_GROUP
-END
+/*
+ * Czech language support
+ *
+ * WineCalc (En.rc)
+ *
+ * Copyright 2005 Denzil
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * 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
+ */
+
+#include "windows.h"
+#include "resource.h"
+#include "winecalc.h"
+
+LANGUAGE LANG_CZECH, SUBLANG_DEFAULT
+
+STRINGTABLE DISCARDABLE
+{
+ IDS_APPNAME, "Kalkulátor"
+
+ IDS_COPYRIGHT1, "Kalkulátor 5.0. Licencován pod LGPL 2"
+ IDS_COPYRIGHT2 "Copyright 2003, James Briggs"
+ IDS_COPYRIGHT3 "San Jose, California, USA"
+ IDS_COPYRIGHT4 "james@ActionMessage.com"
+ IDS_COPYRIGHT5 "http://www.ActionMessage.com/winecalc/"
+
+ IDS_BTN_BACKSPACE, "Zpìt"
+ IDS_BTN_CLEAR_ENTRY, "CE"
+ IDS_BTN_CLEAR_ALL, "C"
+ IDS_BTN_MEM_CLEAR, "MC"
+ IDS_BTN_MEM_RECALL, "MR"
+ IDS_BTN_MEM_STORE, "MS"
+ IDS_BTN_MEM_PLUS, "M+"
+ IDS_BTN_MEM_STATUS_M, "M"
+ IDS_BTN_SQRT, "sqrt"
+ IDS_ERR_INVALID_INPUT, "Neplatný vstup pro funkci."
+ IDS_ERR_DIVIDE_BY_ZERO, "Nelze dìlit nulou."
+ IDS_ERR_UNDEFINED, "Výsledek funkce není definován."
+}
+
+MAIN_MENU MENU DISCARDABLE
+{
+ POPUP "&Editace" {
+ MENUITEM "&Kopírovat Ctrl+C", IDM_COPY
+ MENUITEM "&Vložit Ctrl+V", IDM_PASTE
+ }
+ POPUP "&Zobrazení" {
+ MENUITEM "Standartní", IDM_MODE_STANDARD
+ MENUITEM "Vìdecké", IDM_MODE_SCIENTIFIC
+ MENUITEM SEPARATOR
+ MENUITEM "Seskupování èíslic", IDM_DIGIT_GROUPING
+ }
+ POPUP "&Pomoc" {
+ MENUITEM "Témata nápovìdy", IDM_HELP_TOPICS
+ MENUITEM SEPARATOR
+ MENUITEM "O Kalkulátoru", IDM_ABOUT
+ }
+}
+
+SCIMS_MENU MENU DISCARDABLE
+{
+ POPUP "&Editace" {
+ MENUITEM "&Kopírovat Ctrl+C", IDM_COPY
+ MENUITEM "&Vložit Ctrl+V", IDM_PASTE
+ }
+ POPUP "&Zobrazení" {
+ MENUITEM "Standartní", IDM_MODE_STANDARD
+ MENUITEM "Vìdecké", IDM_MODE_SCIENTIFIC
+ MENUITEM SEPARATOR
+ MENUITEM "Šestnáctkové\tF5", ID_CALC_NS_HEX
+ MENUITEM "Desítkové\tF6", ID_CALC_NS_DEC
+ MENUITEM "Osmièkové\tF7", ID_CALC_NS_OCT
+ MENUITEM "Dvojkové\tF8", ID_CALC_NS_BIN
+ MENUITEM SEPARATOR
+ MENUITEM "Stupnì\tF2", ID_CALC_MS_DEGREES
+ MENUITEM "Radiány\tF3", ID_CALC_MS_RADIANS
+ MENUITEM "Grady\tF4", ID_CALC_MS_GRADS
+ MENUITEM SEPARATOR
+ MENUITEM "Seskupování èíslic", IDM_DIGIT_GROUPING
+ }
+ POPUP "&Pomoc" {
+ MENUITEM "Témata nápovìdy", IDM_HELP_TOPICS
+ MENUITEM SEPARATOR
+ MENUITEM "O Kalkulátoru", IDM_ABOUT
+ }
+}
+
+SCIWS_MENU MENU DISCARDABLE
+{
+ POPUP "&Editace" {
+ MENUITEM "&Kopírovat Ctrl+C", IDM_COPY
+ MENUITEM "&Vložit Ctrl+V", IDM_PASTE
+ }
+ POPUP "&Zobrazení" {
+ MENUITEM "Standartní", IDM_MODE_STANDARD
+ MENUITEM "Vìdecké", IDM_MODE_SCIENTIFIC
+ MENUITEM SEPARATOR
+ MENUITEM "Šestnáctkové\tF5", ID_CALC_NS_HEX
+ MENUITEM "Desítkové\tF6", ID_CALC_NS_DEC
+ MENUITEM "Osmièkové\tF7", ID_CALC_NS_OCT
+ MENUITEM "Dvojkové\tF8", ID_CALC_NS_BIN
+ MENUITEM SEPARATOR
+ MENUITEM "Qword\tF12", ID_CALC_WS_QWORD
+ MENUITEM "Dword\tF2", ID_CALC_WS_DWORD
+ MENUITEM "Word\tF3", ID_CALC_WS_WORD
+ MENUITEM "Byte\tF4", ID_CALC_WS_BYTE
+ MENUITEM SEPARATOR
+ MENUITEM "Seskupování èíslic", IDM_DIGIT_GROUPING
+ }
+ POPUP "&Pomoc" {
+ MENUITEM "Témata nápovìdy", IDM_HELP_TOPICS
+ MENUITEM SEPARATOR
+ MENUITEM "O Kalkulátoru", IDM_ABOUT
+ }
+}
+
+MAIN_MENU ACCELERATORS
+BEGIN
+ VK_F1, IDV_HELP, VIRTKEY
+END
+
+DLG_ABOUT DIALOG 12,0,120,82
+CAPTION "O GNU winecalc"
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+BEGIN
+ DEFPUSHBUTTON "OK", IDOK, 42, 60, 30, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
+END
+
+WHATS_THIS_MENU MENU DISCARDABLE
+{
+ POPUP "" {
+ MENUITEM "Co je toto?", IDM_WHATS_THIS
+ }
+}
+
+DLG_STATS DIALOG 12,0,125,78
+CAPTION "Statistics Box"
+FONT 9, "Tahoma"
+STYLE WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE
+BEGIN
+ DEFPUSHBUTTON "&RET", ID_STATS_RET, 4, 52, 25, 13, WS_TABSTOP | WS_GROUP
+ PUSHBUTTON "&LOAD", ID_STATS_LOAD, 34, 52, 25, 13, WS_TABSTOP | WS_GROUP
+ PUSHBUTTON "&CD" ID_STATS_CD, 64, 52, 25, 13, WS_TABSTOP | WS_GROUP
+ PUSHBUTTON "C&AD", ID_STATS_CAD, 94, 52, 25, 13, WS_TABSTOP | WS_GROUP
+END
diff --git a/reactos/base/applications/calc/De.rc b/reactos/base/applications/calc/lang/De.rc
similarity index 84%
rename from reactos/base/applications/calc/De.rc
rename to reactos/base/applications/calc/lang/De.rc
index 4f2f14ad0ba..143b99cd503 100644
--- a/reactos/base/applications/calc/De.rc
+++ b/reactos/base/applications/calc/lang/De.rc
@@ -45,7 +45,7 @@ STRINGTABLE DISCARDABLE
IDS_BTN_SQRT, "sqrt"
IDS_ERR_INVALID_INPUT, "Ungültige Eingabe für Funktion."
IDS_ERR_DIVIDE_BY_ZERO, "Teilen durch 0 unmöglich."
- IDS_ERR_UNDEFINED, "Das Ergebnis der Funktion is undefiniert."
+ IDS_ERR_UNDEFINED, "Das Ergebnis der Funktion ist undefiniert."
}
MAIN_MENU MENU DISCARDABLE
@@ -77,14 +77,14 @@ SCIMS_MENU MENU DISCARDABLE
MENUITEM "&Standard", IDM_MODE_STANDARD
MENUITEM "&Wissenschaftlich", IDM_MODE_SCIENTIFIC
MENUITEM SEPARATOR
- MENUITEM "&Hex\tF5", ID_CALC_NS_HEX
- MENUITEM "De&zimal\tF6", ID_CALC_NS_DEC
- MENUITEM "O&ktal\tF7", ID_CALC_NS_OCT
- MENUITEM "&Binär\tF8", ID_CALC_NS_BIN
+ MENUITEM "&Hex\tF5", ID_CALC_NS_HEX
+ MENUITEM "De&zimal\tF6", ID_CALC_NS_DEC
+ MENUITEM "O&ktal\tF7", ID_CALC_NS_OCT
+ MENUITEM "&Binär\tF8", ID_CALC_NS_BIN
MENUITEM SEPARATOR
MENUITEM "&Deg\tF2", ID_CALC_MS_DEGREES
MENUITEM "&Rad\tF3", ID_CALC_MS_RADIANS
- MENUITEM "&Grad\tF4", ID_CALC_MS_GRADS
+ MENUITEM "&Grad\tF4", ID_CALC_MS_GRADS
MENUITEM SEPARATOR
MENUITEM "Zifferngr&uppierung", IDM_DIGIT_GROUPING
}
@@ -105,15 +105,15 @@ SCIWS_MENU MENU DISCARDABLE
MENUITEM "&Standard", IDM_MODE_STANDARD
MENUITEM "&Wissenschaftlich", IDM_MODE_SCIENTIFIC
MENUITEM SEPARATOR
- MENUITEM "&Hex\tF5", ID_CALC_NS_HEX
- MENUITEM "De&zimal\tF6", ID_CALC_NS_DEC
- MENUITEM "O&ktal\tF7", ID_CALC_NS_OCT
- MENUITEM "&Binär\tF8", ID_CALC_NS_BIN
+ MENUITEM "&Hex\tF5", ID_CALC_NS_HEX
+ MENUITEM "De&zimal\tF6", ID_CALC_NS_DEC
+ MENUITEM "O&ktal\tF7", ID_CALC_NS_OCT
+ MENUITEM "&Binär\tF8", ID_CALC_NS_BIN
MENUITEM SEPARATOR
- MENUITEM "&Qword\tF12", ID_CALC_WS_QWORD
- MENUITEM "Dw&ord\tF2", ID_CALC_WS_DWORD
- MENUITEM "Wo&rd\tF3", ID_CALC_WS_WORD
- MENUITEM "&Byte\tF4", ID_CALC_WS_BYTE
+ MENUITEM "&Qword\tF12", ID_CALC_WS_QWORD
+ MENUITEM "Dw&ord\tF2", ID_CALC_WS_DWORD
+ MENUITEM "Wo&rd\tF3", ID_CALC_WS_WORD
+ MENUITEM "&Byte\tF4", ID_CALC_WS_BYTE
MENUITEM SEPARATOR
MENUITEM "&Zifferngruppierung", IDM_DIGIT_GROUPING
}
diff --git a/reactos/base/applications/calc/En.rc b/reactos/base/applications/calc/lang/En.rc
similarity index 100%
rename from reactos/base/applications/calc/En.rc
rename to reactos/base/applications/calc/lang/En.rc
diff --git a/reactos/base/applications/calc/Es.rc b/reactos/base/applications/calc/lang/Es.rc
similarity index 100%
rename from reactos/base/applications/calc/Es.rc
rename to reactos/base/applications/calc/lang/Es.rc
diff --git a/reactos/base/applications/calc/Fr.rc b/reactos/base/applications/calc/lang/Fr.rc
similarity index 100%
rename from reactos/base/applications/calc/Fr.rc
rename to reactos/base/applications/calc/lang/Fr.rc
diff --git a/reactos/base/applications/calc/lang/Gr.rc b/reactos/base/applications/calc/lang/Gr.rc
new file mode 100644
index 00000000000..926183cf4b0
--- /dev/null
+++ b/reactos/base/applications/calc/lang/Gr.rc
@@ -0,0 +1,154 @@
+/*
+ * WineCalc (Gr.rc)
+ *
+ * Copyright 2006 Dj Apal
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * 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
+ */
+
+#include "windows.h"
+#include "resource.h"
+#include "winecalc.h"
+
+LANGUAGE LANG_GREEK, SUBLANG_DEFAULT
+
+STRINGTABLE DISCARDABLE
+{
+ IDS_APPNAME, "ÕðïëïãéóôÞò"
+
+ IDS_COPYRIGHT1, "ÕðïëïãéóôÞò 5.0. Licensed under LGPL 2"
+ IDS_COPYRIGHT2 "Copyright 2003, James Briggs"
+ IDS_COPYRIGHT3 "San Jose, California, USA"
+ IDS_COPYRIGHT4 "james@ActionMessage.com"
+ IDS_COPYRIGHT5 "http://www.ActionMessage.com/winecalc/"
+
+ IDS_BTN_BACKSPACE, "Backspace"
+ IDS_BTN_CLEAR_ENTRY, "CE"
+ IDS_BTN_CLEAR_ALL, "C"
+ IDS_BTN_MEM_CLEAR, "MC"
+ IDS_BTN_MEM_RECALL, "MR"
+ IDS_BTN_MEM_STORE, "MS"
+ IDS_BTN_MEM_PLUS, "M+"
+ IDS_BTN_MEM_STATUS_M, "M"
+ IDS_BTN_SQRT, "sqrt"
+ IDS_ERR_INVALID_INPUT, "ËáíèáóìÝíï üñéóìá ãéá ôç óõíÜñôçóç."
+ IDS_ERR_DIVIDE_BY_ZERO, "Äå ìðïñåß íá ãßíåé äéáßñåóç ôïõ ìçäåíüò."
+ IDS_ERR_UNDEFINED, "Ôï áðïôÝëåóìá ôçò óõíÜñôçóçò åßíáé áäéåõêñßíéóôï."
+}
+
+MAIN_MENU MENU DISCARDABLE
+{
+ POPUP "&Åðåîåñãáóßá" {
+ MENUITEM "&ÁíôéãñáöÞ Ctrl+C", IDM_COPY
+ MENUITEM "&Åðéêüëëçóç Ctrl+V", IDM_PASTE
+ }
+ POPUP "&¸íäåéîç" {
+ MENUITEM "Êáíïíéêü", IDM_MODE_STANDARD
+ MENUITEM "Åðéóôçìïíéêü", IDM_MODE_SCIENTIFIC
+ MENUITEM SEPARATOR
+ MENUITEM "ÏñãÜíùóç øçößùí", IDM_DIGIT_GROUPING
+ }
+ POPUP "&ÂïÞèåéá" {
+ MENUITEM "ÈÝìáôá âïÞèåéáò", IDM_HELP_TOPICS
+ MENUITEM SEPARATOR
+ MENUITEM "Ðåñß ôïõ ÕðïëïãéóôÞ", IDM_ABOUT
+ }
+}
+
+SCIMS_MENU MENU DISCARDABLE
+{
+ POPUP "&Åðåîåñãáóßá" {
+ MENUITEM "&ÁíôéãñáöÞ Ctrl+C", IDM_COPY
+ MENUITEM "&Åðéêüëëçóç Ctrl+V", IDM_PASTE
+ }
+ POPUP "&¸íäåéîç" {
+ MENUITEM "Êáíïíéêü", IDM_MODE_STANDARD
+ MENUITEM "Åðéóôçìïíéêü", IDM_MODE_SCIENTIFIC
+ MENUITEM SEPARATOR
+ MENUITEM "Äåêáåîáäéêü\tF5", ID_CALC_NS_HEX
+ MENUITEM "Äåêáäéêü\tF6", ID_CALC_NS_DEC
+ MENUITEM "Ïêôáäéêü\tF7", ID_CALC_NS_OCT
+ MENUITEM "Äõáäéêü\tF8", ID_CALC_NS_BIN
+ MENUITEM SEPARATOR
+ MENUITEM "Âáèìïß\tF2", ID_CALC_MS_DEGREES
+ MENUITEM "Ìïßñåò\tF3", ID_CALC_MS_RADIANS
+ MENUITEM "Grads\tF4", ID_CALC_MS_GRADS
+ MENUITEM SEPARATOR
+ MENUITEM "ÏñãÜíùóç øçößùí", IDM_DIGIT_GROUPING
+ }
+ POPUP "&ÂïÞèåéá" {
+ MENUITEM "ÈÝìáôá âïÞèåéáò", IDM_HELP_TOPICS
+ MENUITEM SEPARATOR
+ MENUITEM "Ðåñß ôïõ ÕðïëïãéóôÞ", IDM_ABOUT
+ }
+}
+
+SCIWS_MENU MENU DISCARDABLE
+{
+ POPUP "&Åðåîåñãáóßá" {
+ MENUITEM "&ÁíôéãñáöÞ Ctrl+C", IDM_COPY
+ MENUITEM "&Åðéêüëëçóç Ctrl+V", IDM_PASTE
+ }
+ POPUP "&¸íäåéîç" {
+ MENUITEM "Êáíïíéêü", IDM_MODE_STANDARD
+ MENUITEM "Åðéóôçìïíéêü", IDM_MODE_SCIENTIFIC
+ MENUITEM SEPARATOR
+ MENUITEM "Äåêáåîáäéêü\tF5", ID_CALC_NS_HEX
+ MENUITEM "Äåêáäéêü\tF6", ID_CALC_NS_DEC
+ MENUITEM "Ïêôáäéêü\tF7", ID_CALC_NS_OCT
+ MENUITEM "Äõáäéêü\tF8", ID_CALC_NS_BIN
+ MENUITEM SEPARATOR
+ MENUITEM "Âáèìïß\tF2", ID_CALC_MS_DEGREES
+ MENUITEM "Ìïßñåò\tF3", ID_CALC_MS_RADIANS
+ MENUITEM "Grads\tF4", ID_CALC_MS_GRADS
+ MENUITEM SEPARATOR
+ MENUITEM "ÏñãÜíùóç øçößùí", IDM_DIGIT_GROUPING
+ }
+ POPUP "&ÂïÞèåéá" {
+ MENUITEM "ÈÝìáôá âïÞèåéáò", IDM_HELP_TOPICS
+ MENUITEM SEPARATOR
+ MENUITEM "Ðåñß ôïõ ÕðïëïãéóôÞ", IDM_ABOUT
+ }
+}
+
+MAIN_MENU ACCELERATORS
+BEGIN
+ VK_F1, IDV_HELP, VIRTKEY
+END
+
+DLG_ABOUT DIALOG 12,0,120,82
+CAPTION "Ðåñß ôïõ GNU winecalc"
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+BEGIN
+ DEFPUSHBUTTON "OK", IDOK, 42, 60, 30, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
+END
+
+WHATS_THIS_MENU MENU DISCARDABLE
+{
+ POPUP "" {
+ MENUITEM "Ôé åßíáé áõôü;", IDM_WHATS_THIS
+ }
+}
+
+DLG_STATS DIALOG 12,0,125,78
+CAPTION "Statistics Box"
+FONT 9, "Tahoma"
+STYLE WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE
+BEGIN
+ DEFPUSHBUTTON "&RET", ID_STATS_RET, 4, 52, 25, 13, WS_TABSTOP | WS_GROUP
+ PUSHBUTTON "&LOAD", ID_STATS_LOAD, 34, 52, 25, 13, WS_TABSTOP | WS_GROUP
+ PUSHBUTTON "&CD" ID_STATS_CD, 64, 52, 25, 13, WS_TABSTOP | WS_GROUP
+ PUSHBUTTON "C&AD", ID_STATS_CAD, 94, 52, 25, 13, WS_TABSTOP | WS_GROUP
+END
diff --git a/reactos/base/applications/calc/Hu.rc b/reactos/base/applications/calc/lang/Hu.rc
similarity index 97%
rename from reactos/base/applications/calc/Hu.rc
rename to reactos/base/applications/calc/lang/Hu.rc
index cf0071ad233..dc7cc1351c4 100644
--- a/reactos/base/applications/calc/Hu.rc
+++ b/reactos/base/applications/calc/lang/Hu.rc
@@ -1,156 +1,156 @@
-/*
- * WineCalc (Hu.rc)
- *
- * Copyright 2003 James Briggs
- * Hungarian translation by Adam Medveczky
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * 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
- */
-
-#include "windows.h"
-#include "resource.h"
-#include "winecalc.h"
-
-LANGUAGE LANG_HUNGARIAN, SUBLANG_DEFAULT
-
-STRINGTABLE DISCARDABLE
-{
- IDS_APPNAME, "Számológép"
-
- IDS_COPYRIGHT1, "Calculator 5.0. Licensed under LGPL 2"
- IDS_COPYRIGHT2 "Copyright 2003, James Briggs"
- IDS_COPYRIGHT3 "San Jose, California, USA"
- IDS_COPYRIGHT4 "james@ActionMessage.com"
- IDS_COPYRIGHT5 "http://www.ActionMessage.com/winecalc/"
-
- IDS_BTN_BACKSPACE, "Backspace"
- IDS_BTN_CLEAR_ENTRY, "CE"
- IDS_BTN_CLEAR_ALL, "C"
- IDS_BTN_MEM_CLEAR, "MC"
- IDS_BTN_MEM_RECALL, "MR"
- IDS_BTN_MEM_STORE, "MS"
- IDS_BTN_MEM_PLUS, "M+"
- IDS_BTN_MEM_STATUS_M, "M"
- IDS_BTN_SQRT, "gyök"
- IDS_ERR_INVALID_INPUT, "Hibás bemenet."
- IDS_ERR_DIVIDE_BY_ZERO, "Nem tudok nullával osztani."
- IDS_ERR_UNDEFINED, "Result of function is undefined."
-}
-
-MAIN_MENU MENU DISCARDABLE
-{
- POPUP "&Szerkesztés" {
- MENUITEM "&Másolás Ctrl+C", IDM_COPY
- MENUITEM "&Beillesztés Ctrl+V", IDM_PASTE
- }
- POPUP "&Nézet" {
- MENUITEM "Alap", IDM_MODE_STANDARD
- MENUITEM "Tudományos", IDM_MODE_SCIENTIFIC
- MENUITEM SEPARATOR
- MENUITEM "Számjegyek csoportosítása", IDM_DIGIT_GROUPING
- }
- POPUP "Sú&gó" {
- MENUITEM "&Témakörök", IDM_HELP_TOPICS
- MENUITEM SEPARATOR
- MENUITEM "Számológép névjegye", IDM_ABOUT
- }
-}
-
-SCIMS_MENU MENU DISCARDABLE
-{
- POPUP "&Szerkesztés" {
- MENUITEM "&Másolás Ctrl+C", IDM_COPY
- MENUITEM "&Beillesztés Ctrl+V", IDM_PASTE
- }
- POPUP "&Nézet" {
- MENUITEM "Alap", IDM_MODE_STANDARD
- MENUITEM "Tudományos", IDM_MODE_SCIENTIFIC
- MENUITEM SEPARATOR
- MENUITEM "Hexadecimális\tF5", ID_CALC_NS_HEX
- MENUITEM "Decimális\tF6", ID_CALC_NS_DEC
- MENUITEM "Oktális\tF7", ID_CALC_NS_OCT
- MENUITEM "Bináris\tF8", ID_CALC_NS_BIN
- MENUITEM SEPARATOR
- MENUITEM "Fok\tF2", ID_CALC_MS_DEGREES
- MENUITEM "Radián\tF3", ID_CALC_MS_RADIANS
- MENUITEM "Újfok\tF4", ID_CALC_MS_GRADS
- MENUITEM SEPARATOR
- MENUITEM "Számjegyek csoportosítása", IDM_DIGIT_GROUPING
- }
- POPUP "Sú&gó" {
- MENUITEM "&Témakörök", IDM_HELP_TOPICS
- MENUITEM SEPARATOR
- MENUITEM "Számológép névjegye", IDM_ABOUT
- }
-}
-
-SCIWS_MENU MENU DISCARDABLE
-{
- POPUP "&Szerkesztés" {
- MENUITEM "&Másolás Ctrl+C", IDM_COPY
- MENUITEM "&Beillesztés Ctrl+V", IDM_PASTE
- }
- POPUP "&Nézet" {
- MENUITEM "Alap", IDM_MODE_STANDARD
- MENUITEM "Tudományos", IDM_MODE_SCIENTIFIC
- MENUITEM SEPARATOR
- MENUITEM "Hexadecimális\tF5", ID_CALC_NS_HEX
- MENUITEM "Decimális\tF6", ID_CALC_NS_DEC
- MENUITEM "Oktális\tF7", ID_CALC_NS_OCT
- MENUITEM "Bináris\tF8", ID_CALC_NS_BIN
- MENUITEM SEPARATOR
- MENUITEM "Négyszeres szó\tF12", ID_CALC_WS_QWORD
- MENUITEM "Duplaszó\tF2", ID_CALC_WS_DWORD
- MENUITEM "Szó\tF3", ID_CALC_WS_WORD
- MENUITEM "Bájt\tF4", ID_CALC_WS_BYTE
- MENUITEM SEPARATOR
- MENUITEM "Számjegyek csoportosítása", IDM_DIGIT_GROUPING
- }
- POPUP "Sú&gó" {
- MENUITEM "&Témakörök", IDM_HELP_TOPICS
- MENUITEM SEPARATOR
- MENUITEM "Számológép névjegye", IDM_ABOUT
- }
-}
-
-MAIN_MENU ACCELERATORS
-BEGIN
- VK_F1, IDV_HELP, VIRTKEY
-END
-
-DLG_ABOUT DIALOG 12,0,120,82
-CAPTION "GNU winecalc (számológép) névjegye"
-STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
-BEGIN
- DEFPUSHBUTTON "OK", IDOK, 42, 60, 30, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
-END
-
-WHATS_THIS_MENU MENU DISCARDABLE
-{
- POPUP "" {
- MENUITEM "Mi ez?", IDM_WHATS_THIS
- }
-}
-
-DLG_STATS DIALOG 12,0,125,78
-CAPTION "Statisztika"
-FONT 9, "Tahoma"
-STYLE WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE
-BEGIN
- DEFPUSHBUTTON "&RET", ID_STATS_RET, 4, 52, 25, 13, WS_TABSTOP | WS_GROUP
- PUSHBUTTON "&LOAD", ID_STATS_LOAD, 34, 52, 25, 13, WS_TABSTOP | WS_GROUP
- PUSHBUTTON "&CD" ID_STATS_CD, 64, 52, 25, 13, WS_TABSTOP | WS_GROUP
- PUSHBUTTON "C&AD", ID_STATS_CAD, 94, 52, 25, 13, WS_TABSTOP | WS_GROUP
-END
+/*
+ * WineCalc (Hu.rc)
+ *
+ * Copyright 2003 James Briggs
+ * Hungarian translation by Adam Medveczky
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * 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
+ */
+
+#include "windows.h"
+#include "resource.h"
+#include "winecalc.h"
+
+LANGUAGE LANG_HUNGARIAN, SUBLANG_DEFAULT
+
+STRINGTABLE DISCARDABLE
+{
+ IDS_APPNAME, "Számológép"
+
+ IDS_COPYRIGHT1, "Calculator 5.0. Licensed under LGPL 2"
+ IDS_COPYRIGHT2 "Copyright 2003, James Briggs"
+ IDS_COPYRIGHT3 "San Jose, California, USA"
+ IDS_COPYRIGHT4 "james@ActionMessage.com"
+ IDS_COPYRIGHT5 "http://www.ActionMessage.com/winecalc/"
+
+ IDS_BTN_BACKSPACE, "Backspace"
+ IDS_BTN_CLEAR_ENTRY, "CE"
+ IDS_BTN_CLEAR_ALL, "C"
+ IDS_BTN_MEM_CLEAR, "MC"
+ IDS_BTN_MEM_RECALL, "MR"
+ IDS_BTN_MEM_STORE, "MS"
+ IDS_BTN_MEM_PLUS, "M+"
+ IDS_BTN_MEM_STATUS_M, "M"
+ IDS_BTN_SQRT, "gyök"
+ IDS_ERR_INVALID_INPUT, "Hibás bemenet."
+ IDS_ERR_DIVIDE_BY_ZERO, "Nem tudok nullával osztani."
+ IDS_ERR_UNDEFINED, "Result of function is undefined."
+}
+
+MAIN_MENU MENU DISCARDABLE
+{
+ POPUP "&Szerkesztés" {
+ MENUITEM "&Másolás Ctrl+C", IDM_COPY
+ MENUITEM "&Beillesztés Ctrl+V", IDM_PASTE
+ }
+ POPUP "&Nézet" {
+ MENUITEM "Alap", IDM_MODE_STANDARD
+ MENUITEM "Tudományos", IDM_MODE_SCIENTIFIC
+ MENUITEM SEPARATOR
+ MENUITEM "Számjegyek csoportosítása", IDM_DIGIT_GROUPING
+ }
+ POPUP "Sú&gó" {
+ MENUITEM "&Témakörök", IDM_HELP_TOPICS
+ MENUITEM SEPARATOR
+ MENUITEM "Számológép névjegye", IDM_ABOUT
+ }
+}
+
+SCIMS_MENU MENU DISCARDABLE
+{
+ POPUP "&Szerkesztés" {
+ MENUITEM "&Másolás Ctrl+C", IDM_COPY
+ MENUITEM "&Beillesztés Ctrl+V", IDM_PASTE
+ }
+ POPUP "&Nézet" {
+ MENUITEM "Alap", IDM_MODE_STANDARD
+ MENUITEM "Tudományos", IDM_MODE_SCIENTIFIC
+ MENUITEM SEPARATOR
+ MENUITEM "Hexadecimális\tF5", ID_CALC_NS_HEX
+ MENUITEM "Decimális\tF6", ID_CALC_NS_DEC
+ MENUITEM "Oktális\tF7", ID_CALC_NS_OCT
+ MENUITEM "Bináris\tF8", ID_CALC_NS_BIN
+ MENUITEM SEPARATOR
+ MENUITEM "Fok\tF2", ID_CALC_MS_DEGREES
+ MENUITEM "Radián\tF3", ID_CALC_MS_RADIANS
+ MENUITEM "Újfok\tF4", ID_CALC_MS_GRADS
+ MENUITEM SEPARATOR
+ MENUITEM "Számjegyek csoportosítása", IDM_DIGIT_GROUPING
+ }
+ POPUP "Sú&gó" {
+ MENUITEM "&Témakörök", IDM_HELP_TOPICS
+ MENUITEM SEPARATOR
+ MENUITEM "Számológép névjegye", IDM_ABOUT
+ }
+}
+
+SCIWS_MENU MENU DISCARDABLE
+{
+ POPUP "&Szerkesztés" {
+ MENUITEM "&Másolás Ctrl+C", IDM_COPY
+ MENUITEM "&Beillesztés Ctrl+V", IDM_PASTE
+ }
+ POPUP "&Nézet" {
+ MENUITEM "Alap", IDM_MODE_STANDARD
+ MENUITEM "Tudományos", IDM_MODE_SCIENTIFIC
+ MENUITEM SEPARATOR
+ MENUITEM "Hexadecimális\tF5", ID_CALC_NS_HEX
+ MENUITEM "Decimális\tF6", ID_CALC_NS_DEC
+ MENUITEM "Oktális\tF7", ID_CALC_NS_OCT
+ MENUITEM "Bináris\tF8", ID_CALC_NS_BIN
+ MENUITEM SEPARATOR
+ MENUITEM "Négyszeres szó\tF12", ID_CALC_WS_QWORD
+ MENUITEM "Duplaszó\tF2", ID_CALC_WS_DWORD
+ MENUITEM "Szó\tF3", ID_CALC_WS_WORD
+ MENUITEM "Bájt\tF4", ID_CALC_WS_BYTE
+ MENUITEM SEPARATOR
+ MENUITEM "Számjegyek csoportosítása", IDM_DIGIT_GROUPING
+ }
+ POPUP "Sú&gó" {
+ MENUITEM "&Témakörök", IDM_HELP_TOPICS
+ MENUITEM SEPARATOR
+ MENUITEM "Számológép névjegye", IDM_ABOUT
+ }
+}
+
+MAIN_MENU ACCELERATORS
+BEGIN
+ VK_F1, IDV_HELP, VIRTKEY
+END
+
+DLG_ABOUT DIALOG 12,0,120,82
+CAPTION "GNU winecalc (számológép) névjegye"
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+BEGIN
+ DEFPUSHBUTTON "OK", IDOK, 42, 60, 30, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
+END
+
+WHATS_THIS_MENU MENU DISCARDABLE
+{
+ POPUP "" {
+ MENUITEM "Mi ez?", IDM_WHATS_THIS
+ }
+}
+
+DLG_STATS DIALOG 12,0,125,78
+CAPTION "Statisztika"
+FONT 9, "Tahoma"
+STYLE WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE
+BEGIN
+ DEFPUSHBUTTON "&RET", ID_STATS_RET, 4, 52, 25, 13, WS_TABSTOP | WS_GROUP
+ PUSHBUTTON "&LOAD", ID_STATS_LOAD, 34, 52, 25, 13, WS_TABSTOP | WS_GROUP
+ PUSHBUTTON "&CD" ID_STATS_CD, 64, 52, 25, 13, WS_TABSTOP | WS_GROUP
+ PUSHBUTTON "C&AD", ID_STATS_CAD, 94, 52, 25, 13, WS_TABSTOP | WS_GROUP
+END
diff --git a/reactos/base/applications/calc/It.rc b/reactos/base/applications/calc/lang/It.rc
similarity index 59%
rename from reactos/base/applications/calc/It.rc
rename to reactos/base/applications/calc/lang/It.rc
index b7ae104b7a4..30ff7f97acb 100644
--- a/reactos/base/applications/calc/It.rc
+++ b/reactos/base/applications/calc/lang/It.rc
@@ -1,7 +1,7 @@
/*
* WineCalc (It.rc)
*
- * Copyright 2003 James Briggs
+ * Copyright 2006 Gabriel ilardi
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
@@ -26,9 +26,9 @@ LANGUAGE LANG_ITALIAN, SUBLANG_NEUTRAL
STRINGTABLE DISCARDABLE
{
- IDS_APPNAME, "Calculator"
+ IDS_APPNAME, "Calcolatrice"
- IDS_COPYRIGHT1, "Calculator 5.0. Licensed under LGPL 2"
+ IDS_COPYRIGHT1, "Calcolatrice 5.0. sotto licenza LGPL 2"
IDS_COPYRIGHT2 "Copyright 2003, James Briggs"
IDS_COPYRIGHT3 "San Jose, California, USA"
IDS_COPYRIGHT4 "james@ActionMessage.com"
@@ -43,84 +43,84 @@ STRINGTABLE DISCARDABLE
IDS_BTN_MEM_PLUS, "M+"
IDS_BTN_MEM_STATUS_M, "M"
IDS_BTN_SQRT, "sqrt"
- IDS_ERR_INVALID_INPUT, "Invalid input for function."
- IDS_ERR_DIVIDE_BY_ZERO, "Cannot divide by zero."
- IDS_ERR_UNDEFINED, "Result of function is undefined."
+ IDS_ERR_INVALID_INPUT, "Input invalido per la funzione."
+ IDS_ERR_DIVIDE_BY_ZERO, "Non si può dividere per zero."
+ IDS_ERR_UNDEFINED, "Il risultato della funzione è indefinito."
}
MAIN_MENU MENU DISCARDABLE
{
- POPUP "&Edit" {
- MENUITEM "&Copy Ctrl+C", IDM_COPY
- MENUITEM "&Paste Ctrl+V", IDM_PASTE
+ POPUP "&Modifica" {
+ MENUITEM "&Copia Ctrl+C", IDM_COPY
+ MENUITEM "I&ncolla Ctrl+V", IDM_PASTE
}
- POPUP "&View" {
+ POPUP "&Visualizza" {
MENUITEM "Standard", IDM_MODE_STANDARD
- MENUITEM "Scientific", IDM_MODE_SCIENTIFIC
+ MENUITEM "Scientifica", IDM_MODE_SCIENTIFIC
MENUITEM SEPARATOR
- MENUITEM "Digit Grouping", IDM_DIGIT_GROUPING
+ MENUITEM "Raggruppamento cifre", IDM_DIGIT_GROUPING
}
- POPUP "&Help" {
- MENUITEM "Help Topics", IDM_HELP_TOPICS
+ POPUP "&?" {
+ MENUITEM "Guida in linea", IDM_HELP_TOPICS
MENUITEM SEPARATOR
- MENUITEM "About Calculator", IDM_ABOUT
+ MENUITEM "Informazioni su Calcolatrice", IDM_ABOUT
}
}
SCIMS_MENU MENU DISCARDABLE
{
- POPUP "&Edit" {
- MENUITEM "&Copy Ctrl+C", IDM_COPY
- MENUITEM "&Paste Ctrl+V", IDM_PASTE
+ POPUP "&Modifica" {
+ MENUITEM "&Copia Ctrl+C", IDM_COPY
+ MENUITEM "I&ncolla Ctrl+V", IDM_PASTE
}
- POPUP "&View" {
+ POPUP "&Visualizza" {
MENUITEM "Standard", IDM_MODE_STANDARD
- MENUITEM "Scientific", IDM_MODE_SCIENTIFIC
+ MENUITEM "Scientifica", IDM_MODE_SCIENTIFIC
MENUITEM SEPARATOR
MENUITEM "Hex\tF5", ID_CALC_NS_HEX
- MENUITEM "Decimal\tF6", ID_CALC_NS_DEC
- MENUITEM "Octal\tF7", ID_CALC_NS_OCT
- MENUITEM "Binary\tF8", ID_CALC_NS_BIN
+ MENUITEM "Dec\tF6", ID_CALC_NS_DEC
+ MENUITEM "Oct\tF7", ID_CALC_NS_OCT
+ MENUITEM "Bin\tF8", ID_CALC_NS_BIN
MENUITEM SEPARATOR
- MENUITEM "Degrees\tF2", ID_CALC_MS_DEGREES
- MENUITEM "Radians\tF3", ID_CALC_MS_RADIANS
- MENUITEM "Grads\tF4", ID_CALC_MS_GRADS
+ MENUITEM "Gradi\tF2", ID_CALC_MS_DEGREES
+ MENUITEM "Radianti\tF3", ID_CALC_MS_RADIANS
+ MENUITEM "Gradienti\tF4", ID_CALC_MS_GRADS
MENUITEM SEPARATOR
- MENUITEM "Digit Grouping", IDM_DIGIT_GROUPING
+ MENUITEM "Raggruppamento cifre", IDM_DIGIT_GROUPING
}
- POPUP "&Help" {
- MENUITEM "Help Topics", IDM_HELP_TOPICS
+ POPUP "&?" {
+ MENUITEM "Guida in linea", IDM_HELP_TOPICS
MENUITEM SEPARATOR
- MENUITEM "About Calculator", IDM_ABOUT
+ MENUITEM "Informazioni su calcolatrice", IDM_ABOUT
}
}
SCIWS_MENU MENU DISCARDABLE
{
- POPUP "&Edit" {
- MENUITEM "&Copy Ctrl+C", IDM_COPY
- MENUITEM "&Paste Ctrl+V", IDM_PASTE
+ POPUP "&Modifica" {
+ MENUITEM "&Copia Ctrl+C", IDM_COPY
+ MENUITEM "I&ncolla Ctrl+V", IDM_PASTE
}
- POPUP "&View" {
+ POPUP "&Visualizza" {
MENUITEM "Standard", IDM_MODE_STANDARD
- MENUITEM "Scientific", IDM_MODE_SCIENTIFIC
+ MENUITEM "Scientifica", IDM_MODE_SCIENTIFIC
MENUITEM SEPARATOR
MENUITEM "Hex\tF5", ID_CALC_NS_HEX
- MENUITEM "Decimal\tF6", ID_CALC_NS_DEC
- MENUITEM "Octal\tF7", ID_CALC_NS_OCT
- MENUITEM "Binary\tF8", ID_CALC_NS_BIN
+ MENUITEM "Dec\tF6", ID_CALC_NS_DEC
+ MENUITEM "Oct\tF7", ID_CALC_NS_OCT
+ MENUITEM "Bin\tF8", ID_CALC_NS_BIN
MENUITEM SEPARATOR
MENUITEM "Qword\tF12", ID_CALC_WS_QWORD
MENUITEM "Dword\tF2", ID_CALC_WS_DWORD
MENUITEM "Word\tF3", ID_CALC_WS_WORD
MENUITEM "Byte\tF4", ID_CALC_WS_BYTE
MENUITEM SEPARATOR
- MENUITEM "Digit Grouping", IDM_DIGIT_GROUPING
+ MENUITEM "Raggruppamento cifre", IDM_DIGIT_GROUPING
}
- POPUP "&Help" {
- MENUITEM "Help Topics", IDM_HELP_TOPICS
+ POPUP "&?" {
+ MENUITEM "Guida in linea", IDM_HELP_TOPICS
MENUITEM SEPARATOR
- MENUITEM "About Calculator", IDM_ABOUT
+ MENUITEM "Informazioni su calcolatrice", IDM_ABOUT
}
}
@@ -132,19 +132,19 @@ END
WHATS_THIS_MENU MENU DISCARDABLE
{
POPUP "" {
- MENUITEM "What's This?", IDM_WHATS_THIS
+ MENUITEM "?", IDM_WHATS_THIS
}
}
DLG_ABOUT DIALOG 12,0,120,82
-CAPTION "About GNU winecalc"
+CAPTION "Informazioni su GNU winecalc"
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
BEGIN
DEFPUSHBUTTON "OK", IDOK, 42, 60, 30, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
END
DLG_STATS DIALOG 12,0,125,78
-CAPTION "Statistics Box"
+CAPTION "Statistiche"
FONT 9, "Tahoma"
STYLE WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE
BEGIN
diff --git a/reactos/base/applications/calc/Ja.rc b/reactos/base/applications/calc/lang/Ja.rc
similarity index 100%
rename from reactos/base/applications/calc/Ja.rc
rename to reactos/base/applications/calc/lang/Ja.rc
diff --git a/reactos/base/applications/calc/Nl.rc b/reactos/base/applications/calc/lang/Nl.rc
similarity index 100%
rename from reactos/base/applications/calc/Nl.rc
rename to reactos/base/applications/calc/lang/Nl.rc
diff --git a/reactos/base/applications/calc/lang/No.rc b/reactos/base/applications/calc/lang/No.rc
new file mode 100644
index 00000000000..60bc66a6c46
--- /dev/null
+++ b/reactos/base/applications/calc/lang/No.rc
@@ -0,0 +1,155 @@
+/*
+ * WineCalc (En.rc)
+ *
+ * Copyright 2003 James Briggs
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * 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
+ */
+
+#include "windows.h"
+#include "resource.h"
+#include "winecalc.h"
+
+LANGUAGE LANG_NORWEGIAN, SUBLANG_NEUTRAL
+
+STRINGTABLE DISCARDABLE
+{
+ IDS_APPNAME, "Kalkulator"
+
+ IDS_COPYRIGHT1, "Kalkulator 5.0. Lisensert under LGPL 2"
+ IDS_COPYRIGHT2 "Copyright 2003, James Briggs"
+ IDS_COPYRIGHT3 "San Jose, California, USA"
+ IDS_COPYRIGHT4 "james@ActionMessage.com"
+ IDS_COPYRIGHT5 "http://www.ActionMessage.com/winecalc/"
+
+ IDS_BTN_BACKSPACE, "Tilbake"
+ IDS_BTN_CLEAR_ENTRY, "CE"
+ IDS_BTN_CLEAR_ALL, "C"
+ IDS_BTN_MEM_CLEAR, "MC"
+ IDS_BTN_MEM_RECALL, "MR"
+ IDS_BTN_MEM_STORE, "MS"
+ IDS_BTN_MEM_PLUS, "M+"
+ IDS_BTN_MEM_STATUS_M, "M"
+ IDS_BTN_SQRT, "sqrt"
+ IDS_ERR_INVALID_INPUT, "Ugyldig informasjon for funksjon."
+ IDS_ERR_DIVIDE_BY_ZERO, "Kan ikke dividere på null."
+ IDS_ERR_UNDEFINED, "Resultatet av funksjoner er ubestemt."
+}
+
+MAIN_MENU MENU DISCARDABLE
+{
+ POPUP "&Rediger" {
+ MENUITEM "&Kopier Ctrl+C", IDM_COPY
+ MENUITEM "&Lim inn Ctrl+V", IDM_PASTE
+ }
+ POPUP "&Vis" {
+ MENUITEM "Standard", IDM_MODE_STANDARD
+ MENUITEM "Vitenskapelig", IDM_MODE_SCIENTIFIC
+ MENUITEM SEPARATOR
+ MENUITEM "Siffergruppering", IDM_DIGIT_GROUPING
+ }
+ POPUP "&Hjelp" {
+ MENUITEM "Emner i hjelp", IDM_HELP_TOPICS
+ MENUITEM SEPARATOR
+ MENUITEM "Om kalkulator", IDM_ABOUT
+ }
+}
+
+SCIMS_MENU MENU DISCARDABLE
+{
+ POPUP "&Rediger" {
+ MENUITEM "&Kopiere Ctrl+C", IDM_COPY
+ MENUITEM "&Lim inn Ctrl+V", IDM_PASTE
+ }
+ POPUP "&Vis" {
+ MENUITEM "Standard", IDM_MODE_STANDARD
+ MENUITEM "Vitenskapelig", IDM_MODE_SCIENTIFIC
+ MENUITEM SEPARATOR
+ MENUITEM "Heksadesimalt\tF5", ID_CALC_NS_HEX
+ MENUITEM "Desimalt\tF6", ID_CALC_NS_DEC
+ MENUITEM "Oktalt\tF7", ID_CALC_NS_OCT
+ MENUITEM "Binært\tF8", ID_CALC_NS_BIN
+ MENUITEM SEPARATOR
+ MENUITEM "Grader\tF2", ID_CALC_MS_DEGREES
+ MENUITEM "Radianer\tF3", ID_CALC_MS_RADIANS
+ MENUITEM "Gradienter\tF4", ID_CALC_MS_GRADS
+ MENUITEM SEPARATOR
+ MENUITEM "Siffergruppering", IDM_DIGIT_GROUPING
+ }
+ POPUP "&Hjelp" {
+ MENUITEM "Emner i hjelp", IDM_HELP_TOPICS
+ MENUITEM SEPARATOR
+ MENUITEM "Om Kalkulator", IDM_ABOUT
+ }
+}
+
+SCIWS_MENU MENU DISCARDABLE
+{
+ POPUP "&Rediger" {
+ MENUITEM "&Kopier Ctrl+C", IDM_COPY
+ MENUITEM "&Lim inn Ctrl+V", IDM_PASTE
+ }
+ POPUP "&Vis" {
+ MENUITEM "Standard", IDM_MODE_STANDARD
+ MENUITEM "Vitenskapelig", IDM_MODE_SCIENTIFIC
+ MENUITEM SEPARATOR
+ MENUITEM "Heksadesimalt\tF5", ID_CALC_NS_HEX
+ MENUITEM "Desimal\tF6", ID_CALC_NS_DEC
+ MENUITEM "Oktalt\tF7", ID_CALC_NS_OCT
+ MENUITEM "Binært\tF8", ID_CALC_NS_BIN
+ MENUITEM SEPARATOR
+ MENUITEM "Qword\tF12", ID_CALC_WS_QWORD
+ MENUITEM "Dword\tF2", ID_CALC_WS_DWORD
+ MENUITEM "Word\tF3", ID_CALC_WS_WORD
+ MENUITEM "Byte\tF4", ID_CALC_WS_BYTE
+ MENUITEM SEPARATOR
+ MENUITEM "Siffergruppering", IDM_DIGIT_GROUPING
+ }
+ POPUP "&Help" {
+ MENUITEM "Emner i hjelp", IDM_HELP_TOPICS
+ MENUITEM SEPARATOR
+ MENUITEM "Om Kalkulator", IDM_ABOUT
+ }
+}
+
+MAIN_MENU ACCELERATORS
+BEGIN
+ VK_F1, IDV_HELP, VIRTKEY
+END
+
+DLG_ABOUT DIALOG 12,0,120,82
+CAPTION "Om GNU winecalc"
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+BEGIN
+ DEFPUSHBUTTON "OK", IDOK, 42, 60, 30, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
+END
+
+WHATS_THIS_MENU MENU DISCARDABLE
+{
+ POPUP "" {
+ MENUITEM "Hva er dette?", IDM_WHATS_THIS
+ }
+}
+
+DLG_STATS DIALOG 12,0,125,78
+CAPTION "Statistics Box"
+FONT 9, "Tahoma"
+STYLE WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE
+BEGIN
+ DEFPUSHBUTTON "&RET", ID_STATS_RET, 4, 52, 25, 13, WS_TABSTOP | WS_GROUP
+ PUSHBUTTON "&LOAD", ID_STATS_LOAD, 34, 52, 25, 13, WS_TABSTOP | WS_GROUP
+ PUSHBUTTON "&CD" ID_STATS_CD, 64, 52, 25, 13, WS_TABSTOP | WS_GROUP
+ PUSHBUTTON "C&AD", ID_STATS_CAD, 94, 52, 25, 13, WS_TABSTOP | WS_GROUP
+END
diff --git a/reactos/base/applications/calc/Pt.rc b/reactos/base/applications/calc/lang/Pt.rc
similarity index 100%
rename from reactos/base/applications/calc/Pt.rc
rename to reactos/base/applications/calc/lang/Pt.rc
diff --git a/reactos/base/applications/calc/Ru.rc b/reactos/base/applications/calc/lang/Ru.rc
similarity index 100%
rename from reactos/base/applications/calc/Ru.rc
rename to reactos/base/applications/calc/lang/Ru.rc
diff --git a/reactos/base/applications/calc/Sv.rc b/reactos/base/applications/calc/lang/Sv.rc
similarity index 96%
rename from reactos/base/applications/calc/Sv.rc
rename to reactos/base/applications/calc/lang/Sv.rc
index 2c53b2d310c..2974b099f36 100644
--- a/reactos/base/applications/calc/Sv.rc
+++ b/reactos/base/applications/calc/lang/Sv.rc
@@ -1,155 +1,155 @@
-/*
- * WineCalc (En.rc)
- *
- * Copyright 2005 David Nordenberg
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * 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
- */
-
-#include "windows.h"
-#include "resource.h"
-#include "winecalc.h"
-
-LANGUAGE LANG_SWEDISH, SUBLANG_NEUTRAL
-
-STRINGTABLE DISCARDABLE
-{
- IDS_APPNAME, "Kalkylatorn"
-
- IDS_COPYRIGHT1, "Kalkylatorn 5.0. Licenserad under LGPL 2"
- IDS_COPYRIGHT2 "Copyright 2003, James Briggs"
- IDS_COPYRIGHT3 "San Jose, California, USA"
- IDS_COPYRIGHT4 "james@ActionMessage.com"
- IDS_COPYRIGHT5 "http://www.ActionMessage.com/winecalc/"
-
- IDS_BTN_BACKSPACE, "Backsteg"
- IDS_BTN_CLEAR_ENTRY, "CE"
- IDS_BTN_CLEAR_ALL, "C"
- IDS_BTN_MEM_CLEAR, "MC"
- IDS_BTN_MEM_RECALL, "MR"
- IDS_BTN_MEM_STORE, "MS"
- IDS_BTN_MEM_PLUS, "M+"
- IDS_BTN_MEM_STATUS_M, "M"
- IDS_BTN_SQRT, "sqrt"
- IDS_ERR_INVALID_INPUT, "Felaktig indata för funktion."
- IDS_ERR_DIVIDE_BY_ZERO, "Kan inte dividera med noll."
- IDS_ERR_UNDEFINED, "Funktionens resultat är odefinerat."
-}
-
-MAIN_MENU MENU DISCARDABLE
-{
- POPUP "&Redigera" {
- MENUITEM "&Kopiera\tCtrl+C", IDM_COPY
- MENUITEM "K&listra in\tCtrl+V", IDM_PASTE
- }
- POPUP "&Visa" {
- MENUITEM "Standard", IDM_MODE_STANDARD
- MENUITEM "Vetenskaplig", IDM_MODE_SCIENTIFIC
- MENUITEM SEPARATOR
- MENUITEM "Siffergruppering", IDM_DIGIT_GROUPING
- }
- POPUP "&Hjälp" {
- MENUITEM "Hjälpavsnitt", IDM_HELP_TOPICS
- MENUITEM SEPARATOR
- MENUITEM "Om Kalkylatorn", IDM_ABOUT
- }
-}
-
-SCIMS_MENU MENU DISCARDABLE
-{
- POPUP "&Redigera" {
- MENUITEM "&Kopiera\tCtrl+C", IDM_COPY
- MENUITEM "K&listra in\tCtrl+V", IDM_PASTE
- }
- POPUP "&Visa" {
- MENUITEM "Standard", IDM_MODE_STANDARD
- MENUITEM "Vetenskaplig", IDM_MODE_SCIENTIFIC
- MENUITEM SEPARATOR
- MENUITEM "Hex\tF5", ID_CALC_NS_HEX
- MENUITEM "Decimal\tF6", ID_CALC_NS_DEC
- MENUITEM "Oktal\tF7", ID_CALC_NS_OCT
- MENUITEM "Binär\tF8", ID_CALC_NS_BIN
- MENUITEM SEPARATOR
- MENUITEM "Grader\tF2", ID_CALC_MS_DEGREES
- MENUITEM "Radianer\tF3", ID_CALC_MS_RADIANS
- MENUITEM "Gradienter\tF4", ID_CALC_MS_GRADS
- MENUITEM SEPARATOR
- MENUITEM "Siffergruppering", IDM_DIGIT_GROUPING
- }
- POPUP "&Hjälp" {
- MENUITEM "Hjälpavsnitt", IDM_HELP_TOPICS
- MENUITEM SEPARATOR
- MENUITEM "Om Kalkylatorn", IDM_ABOUT
- }
-}
-
-SCIWS_MENU MENU DISCARDABLE
-{
- POPUP "&Redigera" {
- MENUITEM "&Kopiera\tCtrl+C", IDM_COPY
- MENUITEM "K&listra in\tCtrl+V", IDM_PASTE
- }
- POPUP "&Visa" {
- MENUITEM "Standard", IDM_MODE_STANDARD
- MENUITEM "Vetenskaplig", IDM_MODE_SCIENTIFIC
- MENUITEM SEPARATOR
- MENUITEM "Hex\tF5", ID_CALC_NS_HEX
- MENUITEM "Decimal\tF6", ID_CALC_NS_DEC
- MENUITEM "Oktal\tF7", ID_CALC_NS_OCT
- MENUITEM "Binär\tF8", ID_CALC_NS_BIN
- MENUITEM SEPARATOR
- MENUITEM "Qword\tF12", ID_CALC_WS_QWORD
- MENUITEM "Dword\tF2", ID_CALC_WS_DWORD
- MENUITEM "Word\tF3", ID_CALC_WS_WORD
- MENUITEM "Byte\tF4", ID_CALC_WS_BYTE
- MENUITEM SEPARATOR
- MENUITEM "Siffergruppering", IDM_DIGIT_GROUPING
- }
- POPUP "&Hjälp" {
- MENUITEM "Hjälpavsnitt", IDM_HELP_TOPICS
- MENUITEM SEPARATOR
- MENUITEM "Om Kalkylatorn", IDM_ABOUT
- }
-}
-
-MAIN_MENU ACCELERATORS
-BEGIN
- VK_F1, IDV_HELP, VIRTKEY
-END
-
-DLG_ABOUT DIALOG 12,0,120,82
-CAPTION "Om GNU Kalkylatorn (winecalc)"
-STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
-BEGIN
- DEFPUSHBUTTON "OK", IDOK, 42, 60, 30, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
-END
-
-WHATS_THIS_MENU MENU DISCARDABLE
-{
- POPUP "" {
- MENUITEM "Vad är det här?", IDM_WHATS_THIS
- }
-}
-
-DLG_STATS DIALOG 12,0,125,78
-CAPTION "Statistikruta"
-FONT 9, "Tahoma"
-STYLE WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE
-BEGIN
- DEFPUSHBUTTON "&RET", ID_STATS_RET, 4, 52, 25, 13, WS_TABSTOP | WS_GROUP
- PUSHBUTTON "&LOAD", ID_STATS_LOAD, 34, 52, 25, 13, WS_TABSTOP | WS_GROUP
- PUSHBUTTON "&CD" ID_STATS_CD, 64, 52, 25, 13, WS_TABSTOP | WS_GROUP
- PUSHBUTTON "C&AD", ID_STATS_CAD, 94, 52, 25, 13, WS_TABSTOP | WS_GROUP
-END
+/*
+ * WineCalc (En.rc)
+ *
+ * Copyright 2005 David Nordenberg
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * 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
+ */
+
+#include "windows.h"
+#include "resource.h"
+#include "winecalc.h"
+
+LANGUAGE LANG_SWEDISH, SUBLANG_NEUTRAL
+
+STRINGTABLE DISCARDABLE
+{
+ IDS_APPNAME, "Kalkylatorn"
+
+ IDS_COPYRIGHT1, "Kalkylatorn 5.0. Licenserad under LGPL 2"
+ IDS_COPYRIGHT2 "Copyright 2003, James Briggs"
+ IDS_COPYRIGHT3 "San Jose, California, USA"
+ IDS_COPYRIGHT4 "james@ActionMessage.com"
+ IDS_COPYRIGHT5 "http://www.ActionMessage.com/winecalc/"
+
+ IDS_BTN_BACKSPACE, "Backsteg"
+ IDS_BTN_CLEAR_ENTRY, "CE"
+ IDS_BTN_CLEAR_ALL, "C"
+ IDS_BTN_MEM_CLEAR, "MC"
+ IDS_BTN_MEM_RECALL, "MR"
+ IDS_BTN_MEM_STORE, "MS"
+ IDS_BTN_MEM_PLUS, "M+"
+ IDS_BTN_MEM_STATUS_M, "M"
+ IDS_BTN_SQRT, "sqrt"
+ IDS_ERR_INVALID_INPUT, "Felaktig indata för funktion."
+ IDS_ERR_DIVIDE_BY_ZERO, "Kan inte dividera med noll."
+ IDS_ERR_UNDEFINED, "Funktionens resultat är odefinerat."
+}
+
+MAIN_MENU MENU DISCARDABLE
+{
+ POPUP "&Redigera" {
+ MENUITEM "&Kopiera\tCtrl+C", IDM_COPY
+ MENUITEM "K&listra in\tCtrl+V", IDM_PASTE
+ }
+ POPUP "&Visa" {
+ MENUITEM "Standard", IDM_MODE_STANDARD
+ MENUITEM "Vetenskaplig", IDM_MODE_SCIENTIFIC
+ MENUITEM SEPARATOR
+ MENUITEM "Siffergruppering", IDM_DIGIT_GROUPING
+ }
+ POPUP "&Hjälp" {
+ MENUITEM "Hjälpavsnitt", IDM_HELP_TOPICS
+ MENUITEM SEPARATOR
+ MENUITEM "Om Kalkylatorn", IDM_ABOUT
+ }
+}
+
+SCIMS_MENU MENU DISCARDABLE
+{
+ POPUP "&Redigera" {
+ MENUITEM "&Kopiera\tCtrl+C", IDM_COPY
+ MENUITEM "K&listra in\tCtrl+V", IDM_PASTE
+ }
+ POPUP "&Visa" {
+ MENUITEM "Standard", IDM_MODE_STANDARD
+ MENUITEM "Vetenskaplig", IDM_MODE_SCIENTIFIC
+ MENUITEM SEPARATOR
+ MENUITEM "Hex\tF5", ID_CALC_NS_HEX
+ MENUITEM "Decimal\tF6", ID_CALC_NS_DEC
+ MENUITEM "Oktal\tF7", ID_CALC_NS_OCT
+ MENUITEM "Binär\tF8", ID_CALC_NS_BIN
+ MENUITEM SEPARATOR
+ MENUITEM "Grader\tF2", ID_CALC_MS_DEGREES
+ MENUITEM "Radianer\tF3", ID_CALC_MS_RADIANS
+ MENUITEM "Gradienter\tF4", ID_CALC_MS_GRADS
+ MENUITEM SEPARATOR
+ MENUITEM "Siffergruppering", IDM_DIGIT_GROUPING
+ }
+ POPUP "&Hjälp" {
+ MENUITEM "Hjälpavsnitt", IDM_HELP_TOPICS
+ MENUITEM SEPARATOR
+ MENUITEM "Om Kalkylatorn", IDM_ABOUT
+ }
+}
+
+SCIWS_MENU MENU DISCARDABLE
+{
+ POPUP "&Redigera" {
+ MENUITEM "&Kopiera\tCtrl+C", IDM_COPY
+ MENUITEM "K&listra in\tCtrl+V", IDM_PASTE
+ }
+ POPUP "&Visa" {
+ MENUITEM "Standard", IDM_MODE_STANDARD
+ MENUITEM "Vetenskaplig", IDM_MODE_SCIENTIFIC
+ MENUITEM SEPARATOR
+ MENUITEM "Hex\tF5", ID_CALC_NS_HEX
+ MENUITEM "Decimal\tF6", ID_CALC_NS_DEC
+ MENUITEM "Oktal\tF7", ID_CALC_NS_OCT
+ MENUITEM "Binär\tF8", ID_CALC_NS_BIN
+ MENUITEM SEPARATOR
+ MENUITEM "Qword\tF12", ID_CALC_WS_QWORD
+ MENUITEM "Dword\tF2", ID_CALC_WS_DWORD
+ MENUITEM "Word\tF3", ID_CALC_WS_WORD
+ MENUITEM "Byte\tF4", ID_CALC_WS_BYTE
+ MENUITEM SEPARATOR
+ MENUITEM "Siffergruppering", IDM_DIGIT_GROUPING
+ }
+ POPUP "&Hjälp" {
+ MENUITEM "Hjälpavsnitt", IDM_HELP_TOPICS
+ MENUITEM SEPARATOR
+ MENUITEM "Om Kalkylatorn", IDM_ABOUT
+ }
+}
+
+MAIN_MENU ACCELERATORS
+BEGIN
+ VK_F1, IDV_HELP, VIRTKEY
+END
+
+DLG_ABOUT DIALOG 12,0,120,82
+CAPTION "Om GNU Kalkylatorn (winecalc)"
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+BEGIN
+ DEFPUSHBUTTON "OK", IDOK, 42, 60, 30, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
+END
+
+WHATS_THIS_MENU MENU DISCARDABLE
+{
+ POPUP "" {
+ MENUITEM "Vad är det här?", IDM_WHATS_THIS
+ }
+}
+
+DLG_STATS DIALOG 12,0,125,78
+CAPTION "Statistikruta"
+FONT 9, "Tahoma"
+STYLE WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE
+BEGIN
+ DEFPUSHBUTTON "&RET", ID_STATS_RET, 4, 52, 25, 13, WS_TABSTOP | WS_GROUP
+ PUSHBUTTON "&LOAD", ID_STATS_LOAD, 34, 52, 25, 13, WS_TABSTOP | WS_GROUP
+ PUSHBUTTON "&CD" ID_STATS_CD, 64, 52, 25, 13, WS_TABSTOP | WS_GROUP
+ PUSHBUTTON "C&AD", ID_STATS_CAD, 94, 52, 25, 13, WS_TABSTOP | WS_GROUP
+END
diff --git a/reactos/base/applications/calc/Uk.rc b/reactos/base/applications/calc/lang/Uk.rc
similarity index 100%
rename from reactos/base/applications/calc/Uk.rc
rename to reactos/base/applications/calc/lang/Uk.rc
diff --git a/reactos/base/applications/calc/rsrc.rc b/reactos/base/applications/calc/rsrc.rc
index 3838c8ef8df..45e2a73cebc 100644
--- a/reactos/base/applications/calc/rsrc.rc
+++ b/reactos/base/applications/calc/rsrc.rc
@@ -23,18 +23,20 @@
IDI_CALCICON ICON "calculator.ico"
-#include "En.rc"
-#include "Cz.rc"
-#include "De.rc"
-#include "Es.rc"
-#include "Fr.rc"
-#include "It.rc"
-#include "Ja.rc"
-#include "Nl.rc"
-#include "Pt.rc"
-#include "Ru.rc"
-#include "Sv.rc"
-#include "Hu.rc"
-#include "Uk.rc"
+#include "lang/En.rc"
+#include "lang/Cz.rc"
+#include "lang/De.rc"
+#include "lang/Es.rc"
+#include "lang/Fr.rc"
+#include "lang/It.rc"
+#include "lang/Ja.rc"
+#include "lang/Nl.rc"
+#include "lang/Pt.rc"
+#include "lang/Ru.rc"
+#include "lang/Sv.rc"
+#include "lang/Hu.rc"
+#include "lang/Uk.rc"
+#include "lang/Gr.rc"
+#include "lang/No.rc"
LANGUAGE LANG_NEUTRAL,SUBLANG_NEUTRAL
diff --git a/reactos/base/applications/cmdutils/cmdutils.rbuild b/reactos/base/applications/cmdutils/cmdutils.rbuild
new file mode 100644
index 00000000000..9964af9635c
--- /dev/null
+++ b/reactos/base/applications/cmdutils/cmdutils.rbuild
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
diff --git a/reactos/base/applications/cmdutils/find/find.c b/reactos/base/applications/cmdutils/find/find.c
new file mode 100644
index 00000000000..c779be71453
--- /dev/null
+++ b/reactos/base/applications/cmdutils/find/find.c
@@ -0,0 +1,248 @@
+/* find.c */
+
+/* Copyright (C) 1994-2002, Jim Hall */
+
+/* Adapted for ReactOS */
+
+/*
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program 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 General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+*/
+
+
+/* This program locates a string in a text file and prints those lines
+ * that contain the string. Multiple files are clearly separated.
+ */
+
+#include
+#include
+#include
+#include
+
+#include
+#include
+
+
+/* Symbol definition */
+#define MAX_STR 1024
+
+
+/* This function prints out all lines containing a substring. There are some
+ * conditions that may be passed to the function.
+ *
+ * RETURN: If the string was found at least once, returns 1.
+ * If the string was not found at all, returns 0.
+ */
+int
+find_str (char *sz, FILE *p, int invert_search,
+ int count_lines, int number_output, int ignore_case)
+{
+ int i, length;
+ long line_number = 0, total_lines = 0;
+ char *c, temp_str[MAX_STR], this_line[MAX_STR];
+
+ /* Convert to upper if needed */
+ if (ignore_case)
+ {
+ length = strlen (sz);
+ for (i = 0; i < length; i++)
+ sz[i] = toupper (sz[i]);
+ }
+
+ /* Scan the file until EOF */
+ while (fgets (temp_str, MAX_STR, p) != NULL)
+ {
+ /* Remove the trailing newline */
+ length = strlen (temp_str);
+ if (temp_str[length-1] == '\n')
+ {
+ temp_str[length-1] = '\0';
+ }
+
+ /* Increment number of lines */
+ line_number++;
+ strcpy (this_line, temp_str);
+
+ /* Convert to upper if needed */
+ if (ignore_case)
+ {
+ for (i = 0; i < length; i++)
+ {
+ temp_str[i] = toupper (temp_str[i]);
+ }
+ }
+
+ /* Locate the substring */
+
+ /* strstr() returns a pointer to the first occurrence in the
+ string of the substring */
+ c = strstr (temp_str, sz);
+
+ if ( ((invert_search) ? (c == NULL) : (c != NULL)) )
+ {
+ if (!count_lines)
+ {
+ if (number_output)
+ printf ("%ld:", line_number);
+
+ /* Print the line of text */
+ puts (this_line);
+ }
+
+ total_lines++;
+ } /* long if */
+ } /* while fgets */
+
+ if (count_lines)
+ {
+ /* Just show num. lines that contain the string */
+ printf ("%ld\n", total_lines);
+ }
+
+
+ /* RETURN: If the string was found at least once, returns 1.
+ * If the string was not found at all, returns 0.
+ */
+ return (total_lines > 0 ? 1 : 0);
+}
+
+
+/* Show usage */
+void
+usage (void)
+{
+ fprintf (stderr, "FIND: Prints all lines of a file that contain a string\n");
+ fprintf (stderr, "FIND [ /C ] [ /I ] [ /N ] [ /V ] \"string\" [ file... ]\n");
+ fprintf (stderr, " /C Count the number of lines that contain string\n");
+ fprintf (stderr, " /I Ignore case\n");
+ fprintf (stderr, " /N Number the displayed lines, starting at 1\n");
+ fprintf (stderr, " /V Print lines that do not contain the string\n");
+}
+
+
+/* Main program */
+int
+main (int argc, char **argv)
+{
+ char *opt, *needle = NULL;
+ int ret = 0;
+
+ int invert_search = 0; /* flag to invert the search */
+ int count_lines = 0; /* flag to whether/not count lines */
+ int number_output = 0; /* flag to print line numbers */
+ int ignore_case = 0; /* flag to be case insensitive */
+
+ FILE *pfile; /* file pointer */
+ int hfind; /* search handle */
+ struct _finddata_t finddata; /* _findfirst, filenext block */
+
+ /* Scan the command line */
+ while ((--argc) && (needle == NULL))
+ {
+ if (*(opt = *++argv) == '/')
+ {
+ switch (opt[1])
+ {
+ case 'c':
+ case 'C': /* Count */
+ count_lines = 1;
+ break;
+
+ case 'i':
+ case 'I': /* Ignore */
+ ignore_case = 1;
+ break;
+
+ case 'n':
+ case 'N': /* Number */
+ number_output = 1;
+ break;
+
+ case 'v':
+ case 'V': /* Not with */
+ invert_search = 1;
+ break;
+
+ default:
+ usage ();
+ exit (2); /* syntax error .. return error 2 */
+ break;
+ }
+ }
+ else
+ {
+ /* Get the string */
+ if (needle == NULL)
+ {
+ /* Assign the string to find */
+ needle = *argv;
+ }
+ }
+ }
+
+ /* Check for search string */
+ if (needle == NULL)
+ {
+ /* No string? */
+ usage ();
+ exit (1);
+ }
+
+ /* Scan the files for the string */
+ if (argc == 0)
+ {
+ ret = find_str (needle, stdin, invert_search, count_lines,
+ number_output, ignore_case);
+ }
+
+ while (--argc >= 0)
+ {
+ hfind = _findfirst (*++argv, &finddata);
+ if (hfind < 0)
+ {
+ /* We were not able to find a file. Display a message and
+ set the exit status. */
+ fprintf (stderr, "FIND: %s: No such file\n", *argv);
+ }
+ else
+ {
+ /* repeat find next file to match the filemask */
+ do
+ {
+ /* We have found a file, so try to open it */
+ if ((pfile = fopen (finddata.name, "r")) != NULL)
+ {
+ printf ("---------------- %s\n", finddata.name);
+ ret = find_str (needle, pfile, invert_search, count_lines,
+ number_output, ignore_case);
+ fclose (pfile);
+ }
+ else
+ {
+ fprintf (stderr, "FIND: %s: Cannot open file\n",
+ finddata.name);
+ }
+ }
+ while (_findnext(hfind, &finddata) > 0);
+ }
+ _findclose(hfind);
+ } /* for each argv */
+
+ /* RETURN: If the string was found at least once, returns 0.
+ * If the string was not found at all, returns 1.
+ * (Note that find_str.c returns the exact opposite values.)
+ */
+ exit ( (ret ? 0 : 1) );
+}
+
diff --git a/reactos/base/applications/cmdutils/find/find.rbuild b/reactos/base/applications/cmdutils/find/find.rbuild
new file mode 100644
index 00000000000..aaaa2899961
--- /dev/null
+++ b/reactos/base/applications/cmdutils/find/find.rbuild
@@ -0,0 +1,8 @@
+
+
+ 0x0501
+ 0x0501
+ kernel32
+ find.c
+ find.rc
+
diff --git a/reactos/base/applications/cmdutils/find/find.rc b/reactos/base/applications/cmdutils/find/find.rc
new file mode 100644
index 00000000000..b5dd91d8136
--- /dev/null
+++ b/reactos/base/applications/cmdutils/find/find.rc
@@ -0,0 +1,6 @@
+/* $Id$ */
+
+#define REACTOS_STR_FILE_DESCRIPTION "W32 find command\0"
+#define REACTOS_STR_INTERNAL_NAME "find\0"
+#define REACTOS_STR_ORIGINAL_FILENAME "find.exe\0"
+#include
diff --git a/reactos/base/applications/cmdutils/more/more.c b/reactos/base/applications/cmdutils/more/more.c
new file mode 100644
index 00000000000..2ebf669aec1
--- /dev/null
+++ b/reactos/base/applications/cmdutils/more/more.c
@@ -0,0 +1,168 @@
+/*
+ * MORE.C - external command.
+ *
+ * clone from 4nt more command
+ *
+ * 26 Sep 1999 - Paolo Pantaleo
+ * started
+ * Oct 2003 - Timothy Schepens
+ * use window size instead of buffer size.
+ */
+
+#include
+#include
+#include
+
+
+DWORD len;
+LPTSTR msg = _T("--- continue ---");
+
+
+/*handle for file and console*/
+HANDLE hStdIn;
+HANDLE hStdOut;
+HANDLE hStdErr;
+HANDLE hKeyboard;
+
+
+static VOID
+GetScreenSize (PSHORT maxx, PSHORT maxy)
+{
+ CONSOLE_SCREEN_BUFFER_INFO csbi;
+
+ GetConsoleScreenBufferInfo (hStdOut, &csbi);
+ *maxx = (csbi.srWindow.Right - csbi.srWindow.Left) + 1;
+ *maxy = (csbi.srWindow.Bottom - csbi.srWindow.Top) - 4;
+
+}
+
+
+static
+VOID ConOutPuts (LPTSTR szText)
+{
+ DWORD dwWritten;
+
+ WriteFile (GetStdHandle (STD_OUTPUT_HANDLE), szText, _tcslen(szText), &dwWritten, NULL);
+ WriteFile (GetStdHandle (STD_OUTPUT_HANDLE), "\n", 1, &dwWritten, NULL);
+}
+
+
+static VOID
+ConInKey (VOID)
+{
+ INPUT_RECORD ir;
+ DWORD dwRead;
+
+ do
+ {
+ ReadConsoleInput (hKeyboard, &ir, 1, &dwRead);
+ if ((ir.EventType == KEY_EVENT) &&
+ (ir.Event.KeyEvent.bKeyDown == TRUE))
+ return;
+ }
+ while (TRUE);
+}
+
+
+static VOID
+WaitForKey (VOID)
+{
+ DWORD dwWritten;
+
+ WriteFile (hStdErr,msg , len, &dwWritten, NULL);
+
+ ConInKey();
+
+ WriteFile (hStdErr, _T("\n"), 1, &dwWritten, NULL);
+
+// FlushConsoleInputBuffer (hConsoleIn);
+}
+
+
+//INT CommandMore (LPTSTR cmd, LPTSTR param)
+int main (int argc, char **argv)
+{
+ SHORT maxx,maxy;
+ SHORT line_count=0,ch_count=0;
+ INT i, last;
+ HANDLE hFile = INVALID_HANDLE_VALUE;
+ TCHAR szFullPath[MAX_PATH];
+
+ /*reading/writing buffer*/
+ TCHAR *buff;
+
+ /*bytes written by WriteFile and ReadFile*/
+ DWORD dwRead,dwWritten;
+
+ /*ReadFile() return value*/
+ BOOL bRet;
+
+ len = _tcslen (msg);
+ hStdIn = GetStdHandle(STD_INPUT_HANDLE);
+ hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);
+ hStdErr = GetStdHandle(STD_ERROR_HANDLE);
+
+ if (argc > 1 && _tcsncmp (argv[1], _T("/?"), 2) == 0)
+ {
+ ConOutPuts(_T("Help text still missing!!"));
+ return 0;
+ }
+
+ hKeyboard = CreateFile (_T("CONIN$"), GENERIC_READ,
+ 0,NULL,OPEN_ALWAYS,0,0);
+
+ GetScreenSize(&maxx,&maxy);
+
+ buff=malloc(4096);
+
+ FlushConsoleInputBuffer (hKeyboard);
+
+ if(argc > 1)
+ {
+ GetFullPathName(argv[1], MAX_PATH, szFullPath, NULL);
+ hFile = CreateFile (szFullPath, GENERIC_READ,
+ 0,NULL,OPEN_ALWAYS,0,0);
+ }
+
+ do
+ {
+ if(hFile != INVALID_HANDLE_VALUE)
+ {
+ bRet = ReadFile(hFile,buff,4096,&dwRead,NULL);
+ }
+ else
+ {
+ bRet = ReadFile(hStdIn,buff,4096,&dwRead,NULL);
+ }
+
+ for(last=i=0;i0 && bRet);
+
+ free (buff);
+ CloseHandle (hKeyboard);
+ CloseHandle (hFile);
+
+ return 0;
+}
+
+/* EOF */
diff --git a/reactos/base/applications/cmdutils/more/more.rbuild b/reactos/base/applications/cmdutils/more/more.rbuild
new file mode 100644
index 00000000000..7f28c47dd55
--- /dev/null
+++ b/reactos/base/applications/cmdutils/more/more.rbuild
@@ -0,0 +1,8 @@
+
+
+ 0x0501
+ 0x0501
+ kernel32
+ more.c
+ more.rc
+
diff --git a/reactos/base/applications/cmdutils/more/more.rc b/reactos/base/applications/cmdutils/more/more.rc
new file mode 100644
index 00000000000..e1741c20501
--- /dev/null
+++ b/reactos/base/applications/cmdutils/more/more.rc
@@ -0,0 +1,6 @@
+/* $Id$ */
+
+#define REACTOS_STR_FILE_DESCRIPTION "W32 more command\0"
+#define REACTOS_STR_INTERNAL_NAME "more\0"
+#define REACTOS_STR_ORIGINAL_FILENAME "more.exe\0"
+#include
diff --git a/reactos/base/applications/control/control.rc b/reactos/base/applications/control/control.rc
index 1c6b9ff3830..84039e7e76b 100644
--- a/reactos/base/applications/control/control.rc
+++ b/reactos/base/applications/control/control.rc
@@ -25,23 +25,4 @@ IDI_MAINICON ICON DISCARDABLE "resources/config.ico"
/////////////////////////////////////////////////////////////////////////////
-/*
- * Everything specific to any language goes in one of the specific
- * files. Note that you can and may override resources which also have
- * a neutral version. This is to get localized bitmaps for example.
- */
-
-#include "En.rc"
-#include "Cz.rc"
-#include "De.rc"
-#include "Dk.rc"
-#include "Gr.rc"
-#include "Ja.rc"
-#include "Nl.rc"
-#include "Pl.rc"
-#include "Ru.rc"
-#include "Sv.rc"
-#include "Es.rc"
-#include "Hu.rc"
-#include "Fi.rc"
-
+#include "rsrc.rc"
diff --git a/reactos/base/applications/control/Cz.rc b/reactos/base/applications/control/lang/Cz.rc
similarity index 100%
rename from reactos/base/applications/control/Cz.rc
rename to reactos/base/applications/control/lang/Cz.rc
diff --git a/reactos/base/applications/control/De.rc b/reactos/base/applications/control/lang/De.rc
similarity index 100%
rename from reactos/base/applications/control/De.rc
rename to reactos/base/applications/control/lang/De.rc
diff --git a/reactos/base/applications/control/Dk.rc b/reactos/base/applications/control/lang/Dk.rc
similarity index 94%
rename from reactos/base/applications/control/Dk.rc
rename to reactos/base/applications/control/lang/Dk.rc
index b129c18647d..808c955e36e 100644
--- a/reactos/base/applications/control/Dk.rc
+++ b/reactos/base/applications/control/lang/Dk.rc
@@ -1,6 +1,6 @@
// Danish language resource file (Thomas Larsen, 2005-03-11)
-LANGUAGE LANG_DANISH, SUBLANG_NEUTRAL
+LANGUAGE LANG_DANISH, SUBLANG_DEFAULT
/////////////////////////////////////////////////////////////////////////////
//
diff --git a/reactos/base/applications/control/En.rc b/reactos/base/applications/control/lang/En.rc
similarity index 100%
rename from reactos/base/applications/control/En.rc
rename to reactos/base/applications/control/lang/En.rc
diff --git a/reactos/base/applications/control/Es.rc b/reactos/base/applications/control/lang/Es.rc
similarity index 100%
rename from reactos/base/applications/control/Es.rc
rename to reactos/base/applications/control/lang/Es.rc
diff --git a/reactos/base/applications/control/Fi.rc b/reactos/base/applications/control/lang/Fi.rc
similarity index 94%
rename from reactos/base/applications/control/Fi.rc
rename to reactos/base/applications/control/lang/Fi.rc
index 6483970677b..623086d6187 100644
--- a/reactos/base/applications/control/Fi.rc
+++ b/reactos/base/applications/control/lang/Fi.rc
@@ -1,6 +1,6 @@
// English language resource file (frik85, 2005-03-08)
-LANGUAGE LANG_FINNISH, SUBLANG_NEUTRAL
+LANGUAGE LANG_FINNISH, SUBLANG_DEFAULT
/////////////////////////////////////////////////////////////////////////////
//
diff --git a/reactos/base/applications/control/Gr.rc b/reactos/base/applications/control/lang/Gr.rc
similarity index 100%
rename from reactos/base/applications/control/Gr.rc
rename to reactos/base/applications/control/lang/Gr.rc
diff --git a/reactos/base/applications/control/Hu.rc b/reactos/base/applications/control/lang/Hu.rc
similarity index 90%
rename from reactos/base/applications/control/Hu.rc
rename to reactos/base/applications/control/lang/Hu.rc
index f177a57a430..2c391dbc42c 100644
--- a/reactos/base/applications/control/Hu.rc
+++ b/reactos/base/applications/control/lang/Hu.rc
@@ -1,6 +1,6 @@
// Hungarian language resource file (talley, 2005-10-12)
-LANGUAGE LANG_HUNGARIAN, SUBLANG_NEUTRAL
+LANGUAGE LANG_HUNGARIAN, SUBLANG_DEFAULT
/////////////////////////////////////////////////////////////////////////////
//
diff --git a/reactos/base/applications/control/Ja.rc b/reactos/base/applications/control/lang/Ja.rc
similarity index 100%
rename from reactos/base/applications/control/Ja.rc
rename to reactos/base/applications/control/lang/Ja.rc
diff --git a/reactos/base/applications/control/Nl.rc b/reactos/base/applications/control/lang/Nl.rc
similarity index 100%
rename from reactos/base/applications/control/Nl.rc
rename to reactos/base/applications/control/lang/Nl.rc
diff --git a/reactos/base/applications/control/lang/No.rc b/reactos/base/applications/control/lang/No.rc
new file mode 100644
index 00000000000..f6234a185cc
--- /dev/null
+++ b/reactos/base/applications/control/lang/No.rc
@@ -0,0 +1,33 @@
+/*
+ * PROJECT: ReactOS Control Application
+ * LICENSE: GPL - See COPYING in the top level directory
+ * FILE: base/applications/control/No.rc
+ * PURPOSE: Norwegian translation
+ * TRANSLATOR: LMH1
+ *
+ */
+LANGUAGE LANG_NORWEGIAN, SUBLANG_NEUTRAL
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Menu
+//
+
+IDM_MAINMENU MENU DISCARDABLE
+BEGIN
+ POPUP "&Fil"
+ BEGIN
+ MENUITEM "&Avslutt", IDM_CLOSE
+ END
+ POPUP "&Vis"
+ BEGIN
+ MENUITEM "Større Ikoner", IDM_LARGEICONS
+ MENUITEM "Mindre Ikoner", IDM_SMALLICONS
+ MENUITEM "Liste", IDM_LIST
+ MENUITEM "Detaljer", IDM_DETAILS
+ END
+ POPUP "Hjelp"
+ BEGIN
+ MENUITEM "Om", IDM_ABOUT
+ END
+END
diff --git a/reactos/base/applications/control/Pl.rc b/reactos/base/applications/control/lang/Pl.rc
similarity index 94%
rename from reactos/base/applications/control/Pl.rc
rename to reactos/base/applications/control/lang/Pl.rc
index 45792e63ea2..181e9f0ad0e 100644
--- a/reactos/base/applications/control/Pl.rc
+++ b/reactos/base/applications/control/lang/Pl.rc
@@ -1,6 +1,6 @@
// Polish language resource file (Sebastian Gasiorek, 2005-07-06)
-LANGUAGE LANG_POLISH, SUBLANG_NEUTRAL
+LANGUAGE LANG_POLISH, SUBLANG_DEFAULT
/////////////////////////////////////////////////////////////////////////////
//
diff --git a/reactos/base/applications/control/Ru.rc b/reactos/base/applications/control/lang/Ru.rc
similarity index 94%
rename from reactos/base/applications/control/Ru.rc
rename to reactos/base/applications/control/lang/Ru.rc
index 1af847d45ce..78c5690215b 100644
--- a/reactos/base/applications/control/Ru.rc
+++ b/reactos/base/applications/control/lang/Ru.rc
@@ -1,6 +1,6 @@
// Russian language resource file (unC0Rr, 2005-03-11)
-LANGUAGE LANG_RUSSIAN, SUBLANG_NEUTRAL
+LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT
/////////////////////////////////////////////////////////////////////////////
//
diff --git a/reactos/base/applications/control/Sv.rc b/reactos/base/applications/control/lang/Sv.rc
similarity index 100%
rename from reactos/base/applications/control/Sv.rc
rename to reactos/base/applications/control/lang/Sv.rc
diff --git a/reactos/base/applications/control/lang/Uk.rc b/reactos/base/applications/control/lang/Uk.rc
new file mode 100644
index 00000000000..2fdfe730932
--- /dev/null
+++ b/reactos/base/applications/control/lang/Uk.rc
@@ -0,0 +1,34 @@
+/*
+ * PROJECT: ReactOS System Control Panel
+ * LICENSE: GPL - See COPYING in the top level directory
+ * FILE: base/applications/control/Uk.rc
+ * PURPOSE: Ukraianian Language File for ReactOS System Control Panel
+ * PROGRAMMERS: temarez
+ */
+
+LANGUAGE LANG_UKRAINIAN, SUBLANG_DEFAULT
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Menu
+//
+
+IDM_MAINMENU MENU DISCARDABLE
+BEGIN
+ POPUP "&Ôàéë"
+ BEGIN
+ MENUITEM "&Çàêðèòè", IDM_CLOSE
+ END
+ POPUP "&Âèãëÿä"
+ BEGIN
+ MENUITEM "&Âåëèê³ ²êîíêè", IDM_LARGEICONS
+ MENUITEM "&Ìàë³ ²êîíêè", IDM_SMALLICONS
+ MENUITEM "&Ñïèñîê", IDM_LIST
+ MENUITEM "&Ïîäðîáèö³", IDM_DETAILS
+ END
+ POPUP "&Äîâ³äêà"
+ BEGIN
+ MENUITEM "&Ïðî ïðîãðàìó", IDM_ABOUT
+ END
+END
+
diff --git a/reactos/base/applications/control/rsrc.rc b/reactos/base/applications/control/rsrc.rc
new file mode 100644
index 00000000000..871c65577a7
--- /dev/null
+++ b/reactos/base/applications/control/rsrc.rc
@@ -0,0 +1,27 @@
+
+
+#include
+#include "resource.h"
+
+/* define language neutral resources */
+
+LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
+
+/* include localised resources */
+#include "lang/Cz.rc"
+#include "lang/De.rc"
+#include "lang/Dk.rc"
+#include "lang/En.rc"
+#include "lang/Es.rc"
+#include "lang/Fi.rc"
+#include "lang/Gr.rc"
+#include "lang/Hu.rc"
+#include "lang/Ja.rc"
+#include "lang/Nl.rc"
+#include "lang/No.rc"
+#include "lang/Pl.rc"
+#include "lang/Ru.rc"
+#include "lang/Sv.rc"
+#include "lang/Uk.rc"
+
+
diff --git a/reactos/base/applications/devmgmt/En.rc b/reactos/base/applications/devmgmt/En.rc
new file mode 100644
index 00000000000..9016db75c4e
--- /dev/null
+++ b/reactos/base/applications/devmgmt/En.rc
@@ -0,0 +1,79 @@
+IDR_MAINMENU MENU
+BEGIN
+ POPUP "&File"
+ BEGIN
+ MENUITEM "E&xit", IDC_EXIT
+ END
+ POPUP "Action"
+ BEGIN
+ MENUITEM "Print", IDC_PRINT, GRAYED
+ MENUITEM SEPARATOR
+ MENUITEM "Properties", IDC_PROP
+ MENUITEM SEPARATOR
+ MENUITEM "Help", IDC_PROGHELP, GRAYED
+ END
+ POPUP "View"
+ BEGIN
+ MENUITEM "Devices by type", IDC_DEVBYTYPE, CHECKED
+ MENUITEM "Devices by connection", IDC_STATIC, GRAYED
+ MENUITEM "Resources by type", IDC_STATIC, GRAYED
+ MENUITEM "Resources by connection", IDC_STATIC, GRAYED
+ END
+ POPUP "Help"
+ BEGIN
+ MENUITEM "Help", IDC_PROGHELP
+ MENUITEM "About", IDC_ABOUT
+ END
+END
+
+IDR_POPUP MENU
+BEGIN
+ POPUP "popup"
+ BEGIN
+ MENUITEM "Properties", IDC_PROP
+ MENUITEM SEPARATOR
+ MENUITEM "Help", IDC_PROGHELP
+ END
+END
+
+IDD_ABOUTBOX DIALOGEX 22,16,190,182
+CAPTION "About Device Manager"
+FONT 8,"Tahoma",0,0
+STYLE WS_BORDER | WS_DLGFRAME | WS_SYSMENU | DS_MODALFRAME
+BEGIN
+ LTEXT "Device Manager v0.1\nCopyright (C) 2006\nby Ged Murphy (gedmurphy@gmail.com)", IDC_STATIC, 48, 7, 130, 26
+ PUSHBUTTON "Close", IDOK, 75, 162, 44, 15
+ ICON IDI_MAIN_ICON, IDC_STATIC, 10, 10, 7, 30
+ EDITTEXT IDC_LICENSE_EDIT, 8, 44, 174, 107, WS_VISIBLE | WS_VSCROLL | WS_TABSTOP | ES_READONLY | ES_MULTILINE
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ IDS_LICENSE "This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.\r\n\r\nThis program 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 General Public License for more details.\r\n\r\nYou should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA."
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ IDS_TOOLTIP_PROP "Properties"
+ IDS_TOOLTIP_REFRESH "Refresh"
+ IDS_TOOLTIP_HELP "Help"
+ IDS_TOOLTIP_EXIT "Exit"
+END
+
+/* Hints */
+STRINGTABLE DISCARDABLE
+BEGIN
+ IDS_HINT_BLANK " "
+ IDS_HINT_EXIT " Exits the program."
+ IDS_HINT_REFRESH " Refresh the service list."
+ IDS_HINT_PROP " Open property sheet for the current selection."
+ IDS_HINT_HELP " Display help window."
+ IDS_HINT_ABOUT " About ReactOS Device Manager."
+
+ IDS_HINT_SYS_RESTORE " Restores this window to normal size."
+ IDS_HINT_SYS_MOVE " Moves this window."
+ IDS_HINT_SYS_SIZE " Resizes this window."
+ IDS_HINT_SYS_MINIMIZE " Collapses this window to an icon."
+ IDS_HINT_SYS_MAXIMIZE " Expands this window to fill this screen."
+ IDS_HINT_SYS_CLOSE " Closes this window."
+END
diff --git a/reactos/base/applications/devmgmt/about.c b/reactos/base/applications/devmgmt/about.c
new file mode 100644
index 00000000000..1e798a785bd
--- /dev/null
+++ b/reactos/base/applications/devmgmt/about.c
@@ -0,0 +1,62 @@
+/*
+ * PROJECT: ReactOS Device Managment
+ * LICENSE: GPL - See COPYING in the top level directory
+ * FILE: base/system/devmgmt/about.c
+ * PURPOSE: About dialog box message handler
+ * COPYRIGHT: Copyright 2006 Ged Murphy
+ *
+ */
+
+#include "precomp.h"
+
+BOOL CALLBACK
+AboutDialogProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
+{
+ HWND hLicenseEditWnd;
+ HICON hIcon = NULL;
+ TCHAR strLicense[700];
+
+ switch (message)
+ {
+ case WM_INITDIALOG:
+
+ hIcon = LoadImage(hInstance,
+ MAKEINTRESOURCE(IDI_MAIN_ICON),
+ IMAGE_ICON,
+ 16,
+ 16,
+ 0);
+
+ SendMessage(hDlg,
+ WM_SETICON,
+ ICON_SMALL,
+ (LPARAM)hIcon);
+
+ hLicenseEditWnd = GetDlgItem(hDlg,
+ IDC_LICENSE_EDIT);
+
+ LoadString(hInstance,
+ IDS_LICENSE,
+ strLicense,
+ sizeof(strLicense) / sizeof(TCHAR));
+
+ SetWindowText(hLicenseEditWnd,
+ strLicense);
+
+ return TRUE;
+
+ case WM_COMMAND:
+
+ if ((LOWORD(wParam) == IDOK) || (LOWORD(wParam) == IDCANCEL))
+ {
+ DestroyIcon(hIcon);
+ EndDialog(hDlg,
+ LOWORD(wParam));
+ return TRUE;
+ }
+
+ break;
+ }
+
+ return FALSE;
+}
diff --git a/reactos/base/applications/devmgmt/devmgmt.c b/reactos/base/applications/devmgmt/devmgmt.c
new file mode 100644
index 00000000000..678e4baddad
--- /dev/null
+++ b/reactos/base/applications/devmgmt/devmgmt.c
@@ -0,0 +1,70 @@
+/*
+ * PROJECT: ReactOS Device Managment
+ * LICENSE: GPL - See COPYING in the top level directory
+ * FILE: base/system/devmgmt/devmgmt.c
+ * PURPOSE: Program HQ
+ * COPYRIGHT: Copyright 2006 Ged Murphy
+ *
+ */
+
+#include "precomp.h"
+
+HINSTANCE hInstance;
+HANDLE ProcessHeap;
+
+int WINAPI
+WinMain(HINSTANCE hThisInstance,
+ HINSTANCE hPrevInstance,
+ LPSTR lpCmdLine,
+ int nCmdShow)
+{
+ LPTSTR lpAppName;
+ HWND hMainWnd;
+ MSG Msg;
+ int Ret = 1;
+ INITCOMMONCONTROLSEX icex;
+
+ hInstance = hThisInstance;
+ ProcessHeap = GetProcessHeap();
+
+ icex.dwSize = sizeof(INITCOMMONCONTROLSEX);
+ icex.dwICC = ICC_BAR_CLASSES | ICC_COOL_CLASSES;
+ InitCommonControlsEx(&icex);
+
+ if (!AllocAndLoadString(&lpAppName,
+ hInstance,
+ IDS_APPNAME))
+ {
+ return 1;
+ }
+
+// FreeConsole();
+// AllocConsole();
+
+ if (InitMainWindowImpl())
+ {
+ hMainWnd = CreateMainWindow(lpAppName,
+ nCmdShow);
+ if (hMainWnd != NULL)
+ {
+ /* pump the message queue */
+ while( GetMessage( &Msg, NULL, 0, 0 ) )
+ {
+ TranslateMessage(&Msg);
+ DispatchMessage(&Msg);
+
+ }
+
+ Ret = 0;
+ }
+
+ UninitMainWindowImpl();
+ }
+
+ LocalFree((HLOCAL)lpAppName);
+
+ return Ret;
+}
+
+
+
diff --git a/reactos/base/applications/devmgmt/devmgmt.rbuild b/reactos/base/applications/devmgmt/devmgmt.rbuild
new file mode 100644
index 00000000000..4c41615c3ca
--- /dev/null
+++ b/reactos/base/applications/devmgmt/devmgmt.rbuild
@@ -0,0 +1,29 @@
+
+
+
+ .
+
+
+
+
+ 0x600
+ 0x501
+ ntdll
+ setupapi
+ gdi32
+ kernel32
+ user32
+ comctl32
+ advapi32
+ devmgr
+
+ about.c
+ devmgmt.c
+ enumdevices.c
+ mainwnd.c
+ misc.c
+
+ devmgmt.rc
+ precomp.h
+
+
diff --git a/reactos/base/applications/devmgmt/devmgmt.rc b/reactos/base/applications/devmgmt/devmgmt.rc
new file mode 100644
index 00000000000..9821767f69c
--- /dev/null
+++ b/reactos/base/applications/devmgmt/devmgmt.rc
@@ -0,0 +1,29 @@
+#include
+#include
+#include "resource.h"
+
+#define REACTOS_STR_FILE_DESCRIPTION "ReactOS Device Manager\0"
+#define REACTOS_STR_INTERNAL_NAME "devmgmt\0"
+#define REACTOS_STR_ORIGINAL_FILENAME "devmgmt.exe\0"
+#include
+
+LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
+
+1 24 DISCARDABLE "manifest.xml"
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ IDS_APPNAME "ReactOS Device Manager"
+END
+
+IDI_MAIN_ICON ICON "res/computer.ico"
+IDB_ROOT_IMAGE BITMAP "res/root.bmp"
+
+/* main toolbar icons */
+IDB_PROP BITMAP DISCARDABLE "res/properties.bmp"
+IDB_REFRESH BITMAP DISCARDABLE "res/refresh.bmp"
+IDB_HELP BITMAP DISCARDABLE "res/help.bmp"
+IDB_EXIT BITMAP DISCARDABLE "res/exit.bmp"
+
+
+#include "En.rc"
diff --git a/reactos/base/applications/devmgmt/enumdevices.c b/reactos/base/applications/devmgmt/enumdevices.c
new file mode 100644
index 00000000000..2a22d0ed6e1
--- /dev/null
+++ b/reactos/base/applications/devmgmt/enumdevices.c
@@ -0,0 +1,438 @@
+/*
+ * PROJECT: ReactOS Device Managment
+ * LICENSE: GPL - See COPYING in the top level directory
+ * FILE: base/system/devmgmt/enumdevices.c
+ * PURPOSE: Enumerates all devices on the local machine
+ * COPYRIGHT: Copyright 2006 Ged Murphy
+ *
+ */
+
+#include "precomp.h"
+
+static SP_CLASSIMAGELIST_DATA ImageListData;
+static HDEVINFO hDevInfo;
+
+VOID
+FreeDeviceStrings(HWND hTV)
+{
+ HTREEITEM hItem;
+
+ hItem = TreeView_GetRoot(hTV);
+
+ if (hItem)
+ {
+ hItem = TreeView_GetChild(hTV,
+ hItem);
+ /* loop the parent items */
+ while (hItem)
+ {
+ hItem = TreeView_GetChild(hTV,
+ hItem);
+ if (hItem == NULL)
+ break;
+
+ /* loop the child items and free the DeviceID */
+ while (TRUE)
+ {
+ HTREEITEM hOldItem;
+ TV_ITEM tvItem;
+ //TCHAR Buf[100];
+
+ tvItem.hItem = hItem;
+ tvItem.mask = TVIF_PARAM;// | TVIF_TEXT;
+ //tvItem.pszText = Buf;
+ //tvItem.cchTextMax = 99;
+
+ (void)TreeView_GetItem(hTV, &tvItem);
+
+ //MessageBox(NULL, Buf, NULL, 0);
+
+ HeapFree(GetProcessHeap(),
+ 0,
+ (LPTSTR)tvItem.lParam);
+
+ hOldItem = hItem;
+
+ hItem = TreeView_GetNextSibling(hTV,
+ hItem);
+ if (hItem == NULL)
+ {
+ hItem = hOldItem;
+ break;
+ }
+ }
+
+ hItem = TreeView_GetParent(hTV,
+ hItem);
+ hItem = TreeView_GetNextSibling(hTV,
+ hItem);
+ }
+ }
+}
+
+
+VOID
+OpenPropSheet(HWND hTV,
+ HTREEITEM hItem)
+{
+ TV_ITEM tvItem;
+
+ tvItem.hItem = hItem;
+ tvItem.mask = TVIF_PARAM;
+
+ if (TreeView_GetItem(hTV, &tvItem) &&
+ (LPTSTR)tvItem.lParam != NULL)
+ {
+ DevicePropertiesExW(hTV,
+ NULL,
+ (LPTSTR)tvItem.lParam,
+ 0,
+ FALSE);
+ }
+
+}
+
+
+static HTREEITEM
+InsertIntoTreeView(HWND hTV,
+ HTREEITEM hRoot,
+ LPTSTR lpLabel,
+ LPTSTR DeviceID,
+ INT DevImage)
+{
+ TV_ITEM tvi;
+ TV_INSERTSTRUCT tvins;
+
+ ZeroMemory(&tvi, sizeof(tvi));
+ ZeroMemory(&tvins, sizeof(tvins));
+
+ tvi.mask = TVIF_TEXT | TVIF_PARAM | TVIF_IMAGE | TVIF_SELECTEDIMAGE;
+ tvi.pszText = lpLabel;
+ tvi.cchTextMax = lstrlen(lpLabel);
+ tvi.lParam = (LPARAM)DeviceID;
+ tvi.iImage = DevImage;
+ tvi.iSelectedImage = DevImage;
+
+ tvins.item = tvi;
+ tvins.hParent = hRoot;
+
+ return TreeView_InsertItem(hTV, &tvins);
+}
+
+
+static INT
+EnumDeviceClasses(INT ClassIndex,
+ LPTSTR DevClassName,
+ LPTSTR DevClassDesc,
+ BOOL *DevPresent,
+ INT *ClassImage)
+{
+ GUID ClassGuid;
+ HKEY KeyClass;
+ TCHAR ClassName[MAX_CLASS_NAME_LEN];
+ DWORD RequiredSize = MAX_CLASS_NAME_LEN;
+ UINT Ret;
+
+ *DevPresent = FALSE;
+ *DevClassName = _T('\0');
+
+ Ret = CM_Enumerate_Classes(ClassIndex,
+ &ClassGuid,
+ 0);
+ if (Ret != CR_SUCCESS)
+ {
+ /* all classes enumerated */
+ if(Ret == CR_NO_SUCH_VALUE)
+ {
+ hDevInfo = NULL;
+ return -1;
+ }
+
+ if (Ret == CR_INVALID_DATA)
+ ; /*FIXME: what should we do here? */
+
+ /* handle other errors... */
+ }
+
+ if (SetupDiClassNameFromGuid(&ClassGuid,
+ ClassName,
+ RequiredSize,
+ &RequiredSize))
+ {
+ lstrcpy(DevClassName, ClassName);
+ }
+
+ if (!SetupDiGetClassImageIndex(&ImageListData,
+ &ClassGuid,
+ ClassImage))
+ {
+ /* FIXME: can we do this?
+ * Set the blank icon: IDI_SETUPAPI_BLANK = 41
+ * it'll be image 24 in the imagelist */
+ *ClassImage = 24;
+ }
+
+ /* Get device info for all devices of a particular class */
+ hDevInfo = SetupDiGetClassDevs(&ClassGuid,
+ NULL,
+ NULL,
+ DIGCF_PRESENT);
+ if (hDevInfo == INVALID_HANDLE_VALUE)
+ {
+ hDevInfo = NULL;
+ return 0;
+ }
+
+ KeyClass = SetupDiOpenClassRegKeyEx(&ClassGuid,
+ MAXIMUM_ALLOWED,
+ DIOCR_INSTALLER,
+ NULL,
+ 0);
+ if (KeyClass != INVALID_HANDLE_VALUE)
+ {
+
+ LONG dwSize = MAX_DEV_LEN;
+
+ if (RegQueryValue(KeyClass,
+ NULL,
+ DevClassDesc,
+ &dwSize) != ERROR_SUCCESS)
+ {
+ *DevClassDesc = _T('\0');
+ }
+ }
+ else
+ {
+ return -3;
+ }
+
+ *DevPresent = TRUE;
+
+ RegCloseKey(KeyClass);
+
+ return 0;
+}
+
+
+static INT
+EnumDevices(INT index,
+ LPTSTR DeviceClassName,
+ LPTSTR DeviceName,
+ LPTSTR *DeviceID)
+{
+ SP_DEVINFO_DATA DeviceInfoData;
+ DWORD DevIdSize;
+
+ *DeviceName = _T('\0');
+ *DeviceID = NULL;
+
+ ZeroMemory(&DeviceInfoData, sizeof(SP_DEVINFO_DATA));
+ DeviceInfoData.cbSize = sizeof(SP_DEVINFO_DATA);
+
+ if (!SetupDiEnumDeviceInfo(hDevInfo,
+ index,
+ &DeviceInfoData))
+ {
+ /* no such device */
+ return -1;
+ }
+
+ /* get the device ID */
+ if (!SetupDiGetDeviceInstanceId(hDevInfo,
+ &DeviceInfoData,
+ NULL,
+ 0,
+ &DevIdSize))
+ {
+ if (GetLastError() == ERROR_INSUFFICIENT_BUFFER)
+ {
+ (*DeviceID) = (LPTSTR)HeapAlloc(GetProcessHeap(),
+ 0,
+ DevIdSize * sizeof(TCHAR));
+ if (*DeviceID)
+ {
+ if (!SetupDiGetDeviceInstanceId(hDevInfo,
+ &DeviceInfoData,
+ *DeviceID,
+ DevIdSize,
+ NULL))
+ {
+ HeapFree(GetProcessHeap(),
+ 0,
+ *DeviceID);
+ *DeviceID = NULL;
+ }
+ }
+ }
+ }
+
+ /* get the device's friendly name */
+ if (!SetupDiGetDeviceRegistryProperty(hDevInfo,
+ &DeviceInfoData,
+ SPDRP_FRIENDLYNAME,
+ 0,
+ (BYTE*)DeviceName,
+ MAX_DEV_LEN,
+ NULL))
+ {
+ /* if the friendly name fails, try the description instead */
+ if (!SetupDiGetDeviceRegistryProperty(hDevInfo,
+ &DeviceInfoData,
+ SPDRP_DEVICEDESC,
+ 0,
+ (BYTE*)DeviceName,
+ MAX_DEV_LEN,
+ NULL))
+ {
+ /* if the description fails, just give up! */
+ return -2;
+ }
+ }
+
+ return 0;
+}
+
+
+VOID
+ListDevicesByType(PMAIN_WND_INFO Info,
+ HTREEITEM hRoot)
+{
+ HTREEITEM hDevItem;
+ TCHAR DevName[MAX_DEV_LEN];
+ TCHAR DevDesc[MAX_DEV_LEN];
+ LPTSTR DeviceID = NULL;
+ BOOL DevExist = FALSE;
+ INT ClassRet;
+ INT index = 0;
+ INT DevImage;
+
+ do
+ {
+ ClassRet = EnumDeviceClasses(index,
+ DevName,
+ DevDesc,
+ &DevExist,
+ &DevImage);
+
+ if ((ClassRet != -1) && (DevExist))
+ {
+ TCHAR DeviceName[MAX_DEV_LEN];
+ INT Ret, DevIndex = 0;
+
+ if (DevDesc[0] != _T('\0'))
+ {
+ hDevItem = InsertIntoTreeView(Info->hTreeView,
+ hRoot,
+ DevDesc,
+ NULL,
+ DevImage);
+ }
+ else
+ {
+ hDevItem = InsertIntoTreeView(Info->hTreeView,
+ hRoot,
+ DevName,
+ NULL,
+ DevImage);
+ }
+
+ do
+ {
+ Ret = EnumDevices(DevIndex,
+ DevName,
+ DeviceName,
+ &DeviceID);
+ if (Ret == 0)
+ {
+ InsertIntoTreeView(Info->hTreeView,
+ hDevItem,
+ DeviceName,
+ DeviceID,
+ DevImage);
+ }
+
+ DevIndex++;
+
+ } while (Ret != -1);
+
+ /* kill InfoList initialized in EnumDeviceClasses */
+ if (hDevInfo)
+ {
+ SetupDiDestroyDeviceInfoList(hDevInfo);
+ hDevInfo = NULL;
+ }
+
+ /* don't insert classes with no devices */
+ if (!TreeView_GetChild(Info->hTreeView,
+ hDevItem))
+ {
+ (void)TreeView_DeleteItem(Info->hTreeView,
+ hDevItem);
+ }
+ else
+ {
+ (void)TreeView_SortChildren(Info->hTreeView,
+ hDevItem,
+ 0);
+ }
+ }
+
+ index++;
+
+ } while (ClassRet != -1);
+
+ (void)TreeView_Expand(Info->hTreeView,
+ hRoot,
+ TVE_EXPAND);
+
+ (void)TreeView_SortChildren(Info->hTreeView,
+ hRoot,
+ 0);
+}
+
+
+HTREEITEM
+InitTreeView(PMAIN_WND_INFO Info)
+{
+ HTREEITEM hRoot;
+ HBITMAP hComp;
+ TCHAR ComputerName[MAX_PATH];
+ DWORD dwSize = MAX_PATH;
+ INT RootImage;
+
+ (void)TreeView_DeleteAllItems(Info->hTreeView);
+
+ /* get the device image List */
+ ImageListData.cbSize = sizeof(ImageListData);
+ SetupDiGetClassImageList(&ImageListData);
+
+ hComp = LoadBitmap(hInstance,
+ MAKEINTRESOURCE(IDB_ROOT_IMAGE));
+
+ ImageList_Add(ImageListData.ImageList,
+ hComp,
+ NULL);
+
+ DeleteObject(hComp);
+
+ (void)TreeView_SetImageList(Info->hTreeView,
+ ImageListData.ImageList,
+ TVSIL_NORMAL);
+
+ if (!GetComputerName(ComputerName,
+ &dwSize))
+ {
+ ComputerName[0] = _T('\0');
+ }
+
+ RootImage = ImageList_GetImageCount(ImageListData.ImageList) - 1;
+
+ /* insert the root item into the tree */
+ hRoot = InsertIntoTreeView(Info->hTreeView,
+ NULL,
+ ComputerName,
+ NULL,
+ RootImage);
+
+ return hRoot;
+}
diff --git a/reactos/base/applications/devmgmt/mainwnd.c b/reactos/base/applications/devmgmt/mainwnd.c
new file mode 100644
index 00000000000..218a98f5d11
--- /dev/null
+++ b/reactos/base/applications/devmgmt/mainwnd.c
@@ -0,0 +1,641 @@
+/*
+ * PROJECT: ReactOS Device Managment
+ * LICENSE: GPL - See COPYING in the top level directory
+ * FILE: base/system/devmgmt/mainwnd.c
+ * PURPOSE: Main window message handler
+ * COPYRIGHT: Copyright 2006 Ged Murphy
+ *
+ */
+
+#include "precomp.h"
+
+static const TCHAR szMainWndClass[] = TEXT("DevMgmtWndClass");
+
+
+/* Toolbar buttons */
+TBBUTTON Buttons [] =
+{ /* iBitmap, idCommand, fsState, fsStyle, bReserved[2], dwData, iString */
+ {TBICON_PROP, IDC_PROP, TBSTATE_ENABLED, BTNS_BUTTON, {0}, 0, 0}, /* properties */
+ {TBICON_REFRESH, IDC_REFRESH, TBSTATE_ENABLED, BTNS_BUTTON, {0}, 0, 0}, /* refresh */
+
+ /* Note: First item for a seperator is its width in pixels */
+ {15, 0, TBSTATE_ENABLED, BTNS_SEP, {0}, 0, 0}, /* separator */
+
+ {TBICON_HELP, IDC_PROGHELP,TBSTATE_ENABLED, BTNS_BUTTON, {0}, 0, 0 }, /* help */
+ {TBICON_EXIT, IDC_EXIT, TBSTATE_ENABLED, BTNS_BUTTON, {0}, 0, 0 }, /* exit */
+
+};
+
+
+/* menu hints */
+static const MENU_HINT MainMenuHintTable[] = {
+ /* File Menu */
+ {IDC_EXIT, IDS_HINT_EXIT},
+
+ /* Action Menu */
+ {IDC_REFRESH, IDS_HINT_REFRESH},
+ {IDC_PROP, IDS_HINT_PROP},
+
+ /* Help Menu */
+ {IDC_PROGHELP, IDS_HINT_HELP},
+ {IDC_ABOUT, IDS_HINT_ABOUT}
+};
+
+/* system menu hints */
+static const MENU_HINT SystemMenuHintTable[] = {
+ {SC_RESTORE, IDS_HINT_SYS_RESTORE},
+ {SC_MOVE, IDS_HINT_SYS_MOVE},
+ {SC_SIZE, IDS_HINT_SYS_SIZE},
+ {SC_MINIMIZE, IDS_HINT_SYS_MINIMIZE},
+ {SC_MAXIMIZE, IDS_HINT_SYS_MAXIMIZE},
+ {SC_CLOSE, IDS_HINT_SYS_CLOSE},
+};
+
+
+static BOOL
+MainWndMenuHint(PMAIN_WND_INFO Info,
+ WORD CmdId,
+ const MENU_HINT *HintArray,
+ DWORD HintsCount,
+ UINT DefHintId)
+{
+ BOOL Found = FALSE;
+ const MENU_HINT *LastHint;
+ UINT HintId = DefHintId;
+
+ LastHint = HintArray + HintsCount;
+ while (HintArray != LastHint)
+ {
+ if (HintArray->CmdId == CmdId)
+ {
+ HintId = HintArray->HintId;
+ Found = TRUE;
+ break;
+ }
+ HintArray++;
+ }
+
+ StatusBarLoadString(Info->hStatus,
+ SB_SIMPLEID,
+ hInstance,
+ HintId);
+
+ return Found;
+}
+
+
+static VOID
+UpdateMainStatusBar(PMAIN_WND_INFO Info)
+{
+ if (Info->hStatus != NULL)
+ {
+ SendMessage(Info->hStatus,
+ SB_SIMPLE,
+ (WPARAM)Info->InMenuLoop,
+ 0);
+ }
+}
+
+
+static BOOL
+CreateToolbar(PMAIN_WND_INFO Info)
+{
+ INT NumButtons = sizeof(Buttons) / sizeof(Buttons[0]);
+
+ Info->hTool = CreateWindowEx(0,
+ TOOLBARCLASSNAME,
+ NULL,
+ WS_CHILD | WS_VISIBLE | TBSTYLE_FLAT | TBSTYLE_TOOLTIPS,
+ 0, 0, 0, 0,
+ Info->hMainWnd,
+ (HMENU)IDC_TOOLBAR,
+ hInstance,
+ NULL);
+ if(Info->hTool != NULL)
+ {
+ HIMAGELIST hImageList;
+
+ SendMessage(Info->hTool,
+ TB_SETEXTENDEDSTYLE,
+ 0,
+ TBSTYLE_EX_HIDECLIPPEDBUTTONS);
+
+ SendMessage(Info->hTool,
+ TB_BUTTONSTRUCTSIZE,
+ sizeof(Buttons[0]),
+ 0);
+
+ hImageList = InitImageList(IDB_PROP,
+ IDB_EXIT,
+ 16,
+ 16);
+ if (hImageList == NULL)
+ return FALSE;
+
+ ImageList_Destroy((HIMAGELIST)SendMessage(Info->hTool,
+ TB_SETIMAGELIST,
+ 0,
+ (LPARAM)hImageList));
+
+ SendMessage(Info->hTool,
+ TB_ADDBUTTONS,
+ NumButtons,
+ (LPARAM)Buttons);
+
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+
+static BOOL
+CreateTreeView(PMAIN_WND_INFO Info)
+{
+ Info->hTreeView = CreateWindowEx(0,
+ WC_TREEVIEW,
+ NULL,
+ WS_CHILD | WS_VISIBLE | WS_BORDER | TVS_HASLINES |
+ TVS_HASBUTTONS | TVS_SHOWSELALWAYS | TVS_LINESATROOT,
+ 0, 0, 0, 0,
+ Info->hMainWnd,
+ (HMENU)IDC_TREEVIEW,
+ hInstance,
+ NULL);
+ if (Info->hTreeView == NULL)
+ {
+ DisplayString(_T("Could not create TreeView."));
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+static BOOL
+CreateStatusBar(PMAIN_WND_INFO Info)
+{
+ INT StatWidths[] = {110, -1}; /* widths of status bar */
+
+ Info->hStatus = CreateWindowEx(0,
+ STATUSCLASSNAME,
+ NULL,
+ WS_CHILD | WS_VISIBLE | SBARS_SIZEGRIP,
+ 0, 0, 0, 0,
+ Info->hMainWnd,
+ (HMENU)IDC_STATUSBAR,
+ hInstance,
+ NULL);
+ if(Info->hStatus == NULL)
+ return FALSE;
+
+
+ SendMessage(Info->hStatus,
+ SB_SETPARTS,
+ sizeof(StatWidths) / sizeof(INT),
+ (LPARAM)StatWidths);
+
+ return TRUE;
+}
+
+
+
+static VOID
+InitMainWnd(PMAIN_WND_INFO Info)
+{
+ HMENU hMenu;
+ HTREEITEM hRoot;
+
+ if (!CreateToolbar(Info))
+ DisplayString(_T("error creating toolbar"));
+
+ if (!CreateTreeView(Info))
+ {
+ DisplayString(_T("error creating list view"));
+ return;
+ }
+
+ if (!CreateStatusBar(Info))
+ DisplayString(_T("error creating status bar"));
+
+ /* make 'properties' bold */
+ hMenu = GetMenu(Info->hMainWnd);
+ hMenu = GetSubMenu(hMenu, 1);
+ SetMenuDefaultItem(hMenu, IDC_PROP, FALSE);
+
+ /* Create Popup Menu */
+ Info->hShortcutMenu = LoadMenu(hInstance,
+ MAKEINTRESOURCE(IDR_POPUP));
+ Info->hShortcutMenu = GetSubMenu(Info->hShortcutMenu,
+ 0);
+ SetMenuDefaultItem(Info->hShortcutMenu, IDC_PROP, FALSE);
+
+ /* emum all devices */
+ hRoot = InitTreeView(Info);
+ if (hRoot)
+ ListDevicesByType(Info, hRoot);
+}
+
+
+static VOID
+OnContext(PMAIN_WND_INFO Info,
+ LPARAM lParam)
+{
+ HTREEITEM hSelected;
+ POINT pt;
+ RECT rc;
+
+ INT xPos = GET_X_LPARAM(lParam);
+ INT yPos = GET_Y_LPARAM(lParam);
+
+ hSelected = TreeView_GetSelection(Info->hTreeView);
+
+ if (TreeView_GetItemRect(Info->hTreeView,
+ hSelected,
+ &rc,
+ TRUE))
+ {
+ if (GetCursorPos(&pt) &&
+ ScreenToClient(Info->hTreeView, &pt) &&
+ PtInRect(&rc, pt))
+ {
+ TrackPopupMenuEx(Info->hShortcutMenu,
+ TPM_RIGHTBUTTON,
+ xPos,
+ yPos,
+ Info->hMainWnd,
+ NULL);
+ }
+ }
+}
+
+
+static VOID
+OnNotify(PMAIN_WND_INFO Info,
+ LPARAM lParam)
+{
+
+ LPNMHDR pnmhdr = (LPNMHDR)lParam;
+
+ switch (pnmhdr->code)
+ {
+ case NM_DBLCLK:
+ {
+ HTREEITEM hSelected = TreeView_GetSelection(Info->hTreeView);
+
+ if (!TreeView_GetChild(Info->hTreeView,
+ hSelected))
+ {
+ OpenPropSheet(Info->hTreeView,
+ hSelected);
+ }
+ }
+ break;
+
+ case NM_RCLICK:
+ {
+ TV_HITTESTINFO HitTest;
+
+ if (GetCursorPos(&HitTest.pt) &&
+ ScreenToClient(Info->hTreeView, &HitTest.pt))
+ {
+ if (TreeView_HitTest(Info->hTreeView, &HitTest))
+ (void)TreeView_SelectItem(Info->hTreeView, HitTest.hItem);
+ }
+ }
+ break;
+
+ case TTN_GETDISPINFO:
+ {
+ LPTOOLTIPTEXT lpttt;
+ UINT idButton;
+
+ lpttt = (LPTOOLTIPTEXT)lParam;
+
+ idButton = (UINT)lpttt->hdr.idFrom;
+ switch (idButton)
+ {
+ case IDC_PROP:
+ lpttt->lpszText = MAKEINTRESOURCE(IDS_TOOLTIP_PROP);
+ break;
+
+ case IDC_REFRESH:
+ lpttt->lpszText = MAKEINTRESOURCE(IDS_TOOLTIP_REFRESH);
+ break;
+
+ case IDC_PROGHELP:
+ lpttt->lpszText = MAKEINTRESOURCE(IDS_TOOLTIP_HELP);
+ break;
+
+ case IDC_EXIT:
+ lpttt->lpszText = MAKEINTRESOURCE(IDS_TOOLTIP_EXIT);
+ break;
+
+ }
+ }
+ break;
+ }
+}
+
+
+static VOID
+MainWndCommand(PMAIN_WND_INFO Info,
+ WORD CmdId,
+ HWND hControl)
+{
+ UNREFERENCED_PARAMETER(hControl);
+
+ switch (CmdId)
+ {
+ case IDC_PROP:
+ {
+ HTREEITEM hSelected = TreeView_GetSelection(Info->hTreeView);
+ OpenPropSheet(Info->hTreeView,
+ hSelected);
+ }
+ break;
+
+ case IDC_REFRESH:
+ {
+ HTREEITEM hRoot;
+
+ FreeDeviceStrings(Info->hTreeView);
+
+ hRoot = InitTreeView(Info);
+ if (hRoot)
+ ListDevicesByType(Info, hRoot);
+ }
+ break;
+
+ case IDC_PROGHELP:
+ {
+ DisplayString(_T("Help is not yet implemented\n"));
+ SetFocus(Info->hTreeView);
+ }
+ break;
+
+ case IDC_EXIT:
+ {
+ PostMessage(Info->hMainWnd,
+ WM_CLOSE,
+ 0,
+ 0);
+ }
+ break;
+
+ case IDC_ABOUT:
+ {
+ DialogBox(hInstance,
+ MAKEINTRESOURCE(IDD_ABOUTBOX),
+ Info->hMainWnd,
+ (DLGPROC)AboutDialogProc);
+
+ SetFocus(Info->hTreeView);
+ }
+ break;
+
+ }
+}
+
+
+static VOID CALLBACK
+MainWndResize(PMAIN_WND_INFO Info,
+ WORD cx,
+ WORD cy)
+{
+ RECT rcClient, rcTool, rcStatus;
+ int lvHeight, iToolHeight, iStatusHeight;
+
+ /* Size toolbar and get height */
+ SendMessage(Info->hTool, TB_AUTOSIZE, 0, 0);
+ GetWindowRect(Info->hTool, &rcTool);
+ iToolHeight = rcTool.bottom - rcTool.top;
+
+ /* Size status bar and get height */
+ SendMessage(Info->hStatus, WM_SIZE, 0, 0);
+ GetWindowRect(Info->hStatus, &rcStatus);
+ iStatusHeight = rcStatus.bottom - rcStatus.top;
+
+ /* Calculate remaining height and size list view */
+ GetClientRect(Info->hMainWnd, &rcClient);
+ lvHeight = rcClient.bottom - iToolHeight - iStatusHeight;
+ SetWindowPos(Info->hTreeView,
+ NULL,
+ 0,
+ iToolHeight,
+ rcClient.right,
+ lvHeight,
+ SWP_NOZORDER);
+}
+
+
+static LRESULT CALLBACK
+MainWndProc(HWND hwnd,
+ UINT msg,
+ WPARAM wParam,
+ LPARAM lParam)
+{
+ PMAIN_WND_INFO Info;
+ LRESULT Ret = 0;
+
+ /* Get the window context */
+ Info = (PMAIN_WND_INFO)GetWindowLongPtr(hwnd,
+ GWLP_USERDATA);
+ if (Info == NULL && msg != WM_CREATE)
+ {
+ goto HandleDefaultMessage;
+ }
+
+ switch(msg)
+ {
+ case WM_CREATE:
+ {
+ Info = (PMAIN_WND_INFO)(((LPCREATESTRUCT)lParam)->lpCreateParams);
+
+ /* Initialize the main window context */
+ Info->hMainWnd = hwnd;
+
+ SetWindowLongPtr(hwnd,
+ GWLP_USERDATA,
+ (LONG_PTR)Info);
+
+ InitMainWnd(Info);
+
+ /* Show the window */
+ ShowWindow(hwnd,
+ Info->nCmdShow);
+
+ }
+ break;
+
+ case WM_SIZE:
+ {
+ MainWndResize(Info,
+ LOWORD(lParam),
+ HIWORD(lParam));
+ }
+ break;
+
+ case WM_NOTIFY:
+ {
+ OnNotify(Info, lParam);
+ }
+ break;
+
+ case WM_CONTEXTMENU:
+ {
+ OnContext(Info, lParam);
+ }
+ break;
+
+ case WM_COMMAND:
+ {
+ MainWndCommand(Info,
+ LOWORD(wParam),
+ (HWND)lParam);
+ goto HandleDefaultMessage;
+ }
+
+ case WM_MENUSELECT:
+ {
+ if (Info->hStatus != NULL)
+ {
+ if (!MainWndMenuHint(Info,
+ LOWORD(wParam),
+ MainMenuHintTable,
+ sizeof(MainMenuHintTable) / sizeof(MainMenuHintTable[0]),
+ IDS_HINT_BLANK))
+ {
+ MainWndMenuHint(Info,
+ LOWORD(wParam),
+ SystemMenuHintTable,
+ sizeof(SystemMenuHintTable) / sizeof(SystemMenuHintTable[0]),
+ IDS_HINT_BLANK);
+ }
+ }
+ }
+ break;
+
+ case WM_ENTERMENULOOP:
+ {
+ Info->InMenuLoop = TRUE;
+ UpdateMainStatusBar(Info);
+ break;
+ }
+
+ case WM_EXITMENULOOP:
+ {
+ Info->InMenuLoop = FALSE;
+ UpdateMainStatusBar(Info);
+ break;
+ }
+
+ case WM_CLOSE:
+ {
+ FreeDeviceStrings(Info->hTreeView);
+ DestroyMenu(Info->hShortcutMenu);
+ DestroyWindow(hwnd);
+ }
+ break;
+
+ case WM_DESTROY:
+ {
+ HeapFree(ProcessHeap,
+ 0,
+ Info);
+ SetWindowLongPtr(hwnd,
+ GWLP_USERDATA,
+ 0);
+
+ /* Break the message queue loop */
+ PostQuitMessage(0);
+ }
+ break;
+
+ default:
+ {
+HandleDefaultMessage:
+
+ Ret = DefWindowProc(hwnd,
+ msg,
+ wParam,
+ lParam);
+ }
+ break;
+ }
+ return Ret;
+}
+
+
+
+HWND
+CreateMainWindow(LPCTSTR lpCaption,
+ int nCmdShow)
+{
+ PMAIN_WND_INFO Info;
+ HWND hMainWnd = NULL;
+
+ Info = HeapAlloc(ProcessHeap,
+ HEAP_ZERO_MEMORY,
+ sizeof(MAIN_WND_INFO));
+
+ if (Info != NULL)
+ {
+ Info->nCmdShow = nCmdShow;
+
+ hMainWnd = CreateWindowEx(WS_EX_WINDOWEDGE,
+ szMainWndClass,
+ lpCaption,
+ WS_OVERLAPPEDWINDOW | WS_CLIPCHILDREN | WS_CLIPSIBLINGS,
+ CW_USEDEFAULT,
+ CW_USEDEFAULT,
+ 600,
+ 450,
+ NULL,
+ NULL,
+ hInstance,
+ Info);
+ if (hMainWnd == NULL)
+ {
+ GetError();
+ HeapFree(ProcessHeap,
+ 0,
+ Info);
+ }
+ }
+
+ return hMainWnd;
+}
+
+BOOL
+InitMainWindowImpl(VOID)
+{
+ WNDCLASSEX wc = {0};
+
+ wc.cbSize = sizeof(WNDCLASSEX);
+ wc.lpfnWndProc = MainWndProc;
+ wc.hInstance = hInstance;
+ wc.hIcon = LoadIcon(hInstance,
+ MAKEINTRESOURCE(IDI_MAIN_ICON));
+ wc.hCursor = LoadCursor(NULL,
+ IDC_ARROW);
+ wc.hbrBackground = (HBRUSH)(COLOR_BTNFACE + 1);
+ wc.lpszMenuName = MAKEINTRESOURCE(IDR_MAINMENU);
+ wc.lpszClassName = szMainWndClass;
+ wc.hIconSm = (HICON)LoadImage(hInstance,
+ MAKEINTRESOURCE(IDI_MAIN_ICON),
+ IMAGE_ICON,
+ 16,
+ 16,
+ LR_SHARED);
+
+ return RegisterClassEx(&wc) != (ATOM)0;
+}
+
+
+VOID
+UninitMainWindowImpl(VOID)
+{
+ UnregisterClass(szMainWndClass,
+ hInstance);
+}
+
diff --git a/reactos/base/applications/devmgmt/manifest.xml b/reactos/base/applications/devmgmt/manifest.xml
new file mode 100644
index 00000000000..2320af6a533
--- /dev/null
+++ b/reactos/base/applications/devmgmt/manifest.xml
@@ -0,0 +1,23 @@
+
+
+
+ReactOS Device Manager
+
+
+
+
+
+
diff --git a/reactos/base/applications/devmgmt/misc.c b/reactos/base/applications/devmgmt/misc.c
new file mode 100644
index 00000000000..171b54d46e2
--- /dev/null
+++ b/reactos/base/applications/devmgmt/misc.c
@@ -0,0 +1,278 @@
+/*
+ * PROJECT: ReactOS Device Managment
+ * LICENSE: GPL - See COPYING in the top level directory
+ * FILE: base/system/devmgmt/misc.c
+ * PURPOSE: miscallanous functions
+ * COPYRIGHT: Copyright 2006 Ged Murphy
+ *
+ */
+
+#include "precomp.h"
+
+static INT
+LengthOfStrResource(IN HINSTANCE hInst,
+ IN UINT uID)
+{
+ HRSRC hrSrc;
+ HGLOBAL hRes;
+ LPWSTR lpName, lpStr;
+
+ if (hInst == NULL)
+ {
+ return -1;
+ }
+
+ /* There are always blocks of 16 strings */
+ lpName = (LPWSTR)MAKEINTRESOURCE((uID >> 4) + 1);
+
+ /* Find the string table block */
+ if ((hrSrc = FindResourceW(hInst, lpName, (LPWSTR)RT_STRING)) &&
+ (hRes = LoadResource(hInst, hrSrc)) &&
+ (lpStr = LockResource(hRes)))
+ {
+ UINT x;
+
+ /* Find the string we're looking for */
+ uID &= 0xF; /* position in the block, same as % 16 */
+ for (x = 0; x < uID; x++)
+ {
+ lpStr += (*lpStr) + 1;
+ }
+
+ /* Found the string */
+ return (int)(*lpStr);
+ }
+ return -1;
+}
+
+INT
+AllocAndLoadString(OUT LPTSTR *lpTarget,
+ IN HINSTANCE hInst,
+ IN UINT uID)
+{
+ INT ln;
+
+ ln = LengthOfStrResource(hInst,
+ uID);
+ if (ln++ > 0)
+ {
+ (*lpTarget) = (LPTSTR)LocalAlloc(LMEM_FIXED,
+ ln * sizeof(TCHAR));
+ if ((*lpTarget) != NULL)
+ {
+ INT Ret;
+ if (!(Ret = LoadString(hInst, uID, *lpTarget, ln)))
+ {
+ LocalFree((HLOCAL)(*lpTarget));
+ }
+ return Ret;
+ }
+ }
+ return 0;
+}
+
+DWORD
+LoadAndFormatString(IN HINSTANCE hInstance,
+ IN UINT uID,
+ OUT LPTSTR *lpTarget,
+ ...)
+{
+ DWORD Ret = 0;
+ LPTSTR lpFormat;
+ va_list lArgs;
+
+ if (AllocAndLoadString(&lpFormat,
+ hInstance,
+ uID) > 0)
+ {
+ va_start(lArgs, lpTarget);
+ /* let's use FormatMessage to format it because it has the ability to allocate
+ memory automatically */
+ Ret = FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_STRING,
+ lpFormat,
+ 0,
+ 0,
+ (LPTSTR)lpTarget,
+ 0,
+ &lArgs);
+ va_end(lArgs);
+
+ LocalFree((HLOCAL)lpFormat);
+ }
+
+ return Ret;
+}
+
+BOOL
+StatusBarLoadAndFormatString(IN HWND hStatusBar,
+ IN INT PartId,
+ IN HINSTANCE hInstance,
+ IN UINT uID,
+ ...)
+{
+ BOOL Ret = FALSE;
+ LPTSTR lpFormat, lpStr;
+ va_list lArgs;
+
+ if (AllocAndLoadString(&lpFormat,
+ hInstance,
+ uID) > 0)
+ {
+ va_start(lArgs, uID);
+ /* let's use FormatMessage to format it because it has the ability to allocate
+ memory automatically */
+ Ret = FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_STRING,
+ lpFormat,
+ 0,
+ 0,
+ (LPTSTR)&lpStr,
+ 0,
+ &lArgs);
+ va_end(lArgs);
+
+ if (lpStr != NULL)
+ {
+ Ret = (BOOL)SendMessage(hStatusBar,
+ SB_SETTEXT,
+ (WPARAM)PartId,
+ (LPARAM)lpStr);
+ LocalFree((HLOCAL)lpStr);
+ }
+
+ LocalFree((HLOCAL)lpFormat);
+ }
+
+ return Ret;
+}
+
+BOOL
+StatusBarLoadString(IN HWND hStatusBar,
+ IN INT PartId,
+ IN HINSTANCE hInstance,
+ IN UINT uID)
+{
+ BOOL Ret = FALSE;
+ LPTSTR lpStr;
+
+ if (AllocAndLoadString(&lpStr,
+ hInstance,
+ uID) > 0)
+ {
+ Ret = (BOOL)SendMessage(hStatusBar,
+ SB_SETTEXT,
+ (WPARAM)PartId,
+ (LPARAM)lpStr);
+ LocalFree((HLOCAL)lpStr);
+ }
+
+ return Ret;
+}
+
+
+INT
+GetTextFromEdit(OUT LPTSTR lpString,
+ IN HWND hDlg,
+ IN UINT Res)
+{
+ INT len = GetWindowTextLength(GetDlgItem(hDlg, Res));
+ if(len > 0)
+ {
+ GetDlgItemText(hDlg,
+ Res,
+ lpString,
+ len + 1);
+ }
+ else
+ lpString = NULL;
+
+ return len;
+}
+
+
+HIMAGELIST
+InitImageList(UINT StartResource,
+ UINT EndResource,
+ UINT Width,
+ UINT Height)
+{
+ HBITMAP hBitmap;
+ HIMAGELIST hImageList;
+ UINT i;
+ INT Ret;
+
+ /* Create the toolbar icon image list */
+ hImageList = ImageList_Create(Width,
+ Height,
+ ILC_MASK | ILC_COLOR24,
+ EndResource - StartResource,
+ 0);
+ if (hImageList == NULL)
+ return NULL;
+
+ /* Add all icons to the image list */
+ for (i = StartResource; i <= EndResource; i++)
+ {
+ hBitmap = LoadImage(hInstance,
+ MAKEINTRESOURCE(i),
+ IMAGE_BITMAP,
+ Width,
+ Height,
+ LR_LOADTRANSPARENT);
+ if (hBitmap == NULL)
+ return NULL;
+
+ Ret = ImageList_AddMasked(hImageList,
+ hBitmap,
+ RGB(255, 0, 128));
+ if (Ret == -1)
+ return NULL;
+
+ DeleteObject(hBitmap);
+ }
+
+ return hImageList;
+}
+
+
+VOID GetError(VOID)
+{
+ LPVOID lpMsgBuf;
+
+ FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER |
+ FORMAT_MESSAGE_FROM_SYSTEM |
+ FORMAT_MESSAGE_IGNORE_INSERTS,
+ NULL,
+ GetLastError(),
+ MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
+ (LPTSTR) &lpMsgBuf,
+ 0,
+ NULL );
+
+ MessageBox(NULL, lpMsgBuf, _T("Error!"), MB_OK | MB_ICONERROR);
+
+ LocalFree(lpMsgBuf);
+}
+
+
+VOID DisplayString(PTCHAR Msg)
+{
+ MessageBox(NULL, Msg, _T("Note!"), MB_ICONEXCLAMATION|MB_OK);
+}
+
+
+VOID TimerInfo(LPTSTR text)
+{
+ static HANDLE hOut = NULL;
+ DWORD Count;
+ TCHAR buf[256];
+ static DWORD start = 0;
+
+ if (!start) start = GetTickCount();
+
+ if (!hOut) hOut = GetStdHandle(STD_ERROR_HANDLE);
+
+ if (text) _sntprintf(buf, 256, _T("%s\ttime : %d\n"), text, GetTickCount() - start);
+ else _sntprintf(buf, 256, _T("time : %d\n"), GetTickCount() - start);
+
+ WriteConsole(hOut, buf, lstrlen(buf)+1, &Count, NULL);
+}
diff --git a/reactos/base/applications/devmgmt/precomp.h b/reactos/base/applications/devmgmt/precomp.h
new file mode 100644
index 00000000000..83a27089cff
--- /dev/null
+++ b/reactos/base/applications/devmgmt/precomp.h
@@ -0,0 +1,120 @@
+#ifndef __DEVMGMT_PRECOMP_H
+#define __DEVMGMT_PRECOMP_H
+
+#define WIN32_LEAN_AND_MEAN
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include "resource.h"
+
+#ifdef _MSC_VER
+#pragma warning(disable : 4100)
+#endif
+
+#define MAX_DEV_LEN 256
+
+typedef struct _MAIN_WND_INFO
+{
+ HWND hMainWnd;
+ HWND hTreeView;
+ HWND hStatus;
+ HWND hTool;
+ HWND hProgDlg;
+ HMENU hShortcutMenu;
+ int nCmdShow;
+
+ /* status flags */
+ UINT InMenuLoop : 1;
+
+} MAIN_WND_INFO, *PMAIN_WND_INFO;
+
+
+BOOL CALLBACK AboutDialogProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);
+
+
+/* devmgmt.c */
+extern HINSTANCE hInstance;
+extern HANDLE ProcessHeap;
+
+/* mainwnd.c */
+typedef struct _MENU_HINT
+{
+ WORD CmdId;
+ UINT HintId;
+} MENU_HINT, *PMENU_HINT;
+
+BOOL InitMainWindowImpl(VOID);
+VOID UninitMainWindowImpl(VOID);
+HWND CreateMainWindow(LPCTSTR lpCaption, int nCmdShow);
+
+
+/* enumdevices.c */
+// undocumented API's from devmgr
+#ifdef _UNICODE
+#define DevicePropertiesEx DevicePropertiesExW
+INT_PTR
+WINAPI
+DevicePropertiesExW(IN HWND hWndParent OPTIONAL,
+ IN LPCWSTR lpMachineName OPTIONAL,
+ IN LPCWSTR lpDeviceID OPTIONAL,
+ IN DWORD dwFlags OPTIONAL,
+ IN BOOL bShowDevMgr);
+#else
+#define DevicePropertiesEx DevicePropertiesExA
+INT_PTR
+WINAPI
+DevicePropertiesExA(IN HWND hWndParent OPTIONAL,
+ IN LPCSTR lpMachineName OPTIONAL,
+ IN LPCSTR lpDeviceID OPTIONAL,
+ IN DWORD dwFlags OPTIONAL,
+ IN BOOL bShowDevMgr);
+#endif
+
+VOID FreeDeviceStrings(HWND hTV);
+VOID OpenPropSheet(HWND hTV, HTREEITEM hItem);
+HTREEITEM InitTreeView(PMAIN_WND_INFO Info);
+VOID ListDevicesByType(PMAIN_WND_INFO Info, HTREEITEM hRoot);
+
+
+/* misc.c */
+INT AllocAndLoadString(OUT LPTSTR *lpTarget,
+ IN HINSTANCE hInst,
+ IN UINT uID);
+
+DWORD LoadAndFormatString(IN HINSTANCE hInstance,
+ IN UINT uID,
+ OUT LPTSTR *lpTarget,
+ ...);
+
+BOOL StatusBarLoadAndFormatString(IN HWND hStatusBar,
+ IN INT PartId,
+ IN HINSTANCE hInstance,
+ IN UINT uID,
+ ...);
+
+BOOL StatusBarLoadString(IN HWND hStatusBar,
+ IN INT PartId,
+ IN HINSTANCE hInstance,
+ IN UINT uID);
+
+INT GetTextFromEdit(OUT LPTSTR lpString,
+ IN HWND hDlg,
+ IN UINT Res);
+
+HIMAGELIST InitImageList(UINT NumButtons,
+ UINT StartResource,
+ UINT Width,
+ UINT Height);
+
+VOID GetError(VOID);
+
+VOID DisplayString(PTCHAR);
+
+VOID TimerInfo(LPTSTR);
+
+
+#endif /* __DEVMGMT_PRECOMP_H */
diff --git a/reactos/base/applications/devmgmt/res/computer.ico b/reactos/base/applications/devmgmt/res/computer.ico
new file mode 100644
index 00000000000..deb7f520f20
Binary files /dev/null and b/reactos/base/applications/devmgmt/res/computer.ico differ
diff --git a/reactos/base/applications/devmgmt/res/exit.bmp b/reactos/base/applications/devmgmt/res/exit.bmp
new file mode 100644
index 00000000000..97381f1f6f7
Binary files /dev/null and b/reactos/base/applications/devmgmt/res/exit.bmp differ
diff --git a/reactos/base/applications/devmgmt/res/help.bmp b/reactos/base/applications/devmgmt/res/help.bmp
new file mode 100644
index 00000000000..4c958c2e9a0
Binary files /dev/null and b/reactos/base/applications/devmgmt/res/help.bmp differ
diff --git a/reactos/base/applications/devmgmt/res/properties.bmp b/reactos/base/applications/devmgmt/res/properties.bmp
new file mode 100644
index 00000000000..15e080ec923
Binary files /dev/null and b/reactos/base/applications/devmgmt/res/properties.bmp differ
diff --git a/reactos/base/applications/devmgmt/res/refresh.bmp b/reactos/base/applications/devmgmt/res/refresh.bmp
new file mode 100644
index 00000000000..e7c12bbd302
Binary files /dev/null and b/reactos/base/applications/devmgmt/res/refresh.bmp differ
diff --git a/reactos/base/applications/devmgmt/res/root.bmp b/reactos/base/applications/devmgmt/res/root.bmp
new file mode 100644
index 00000000000..e2734fb590b
Binary files /dev/null and b/reactos/base/applications/devmgmt/res/root.bmp differ
diff --git a/reactos/base/applications/devmgmt/resource.h b/reactos/base/applications/devmgmt/resource.h
new file mode 100644
index 00000000000..ad94561340e
--- /dev/null
+++ b/reactos/base/applications/devmgmt/resource.h
@@ -0,0 +1,63 @@
+#define IDC_STATIC -1
+
+#define IDI_MAIN_ICON 50
+#define IDB_ROOT_IMAGE 51
+
+/* windows */
+#define IDC_TREEVIEW 1000
+#define IDC_TOOLBAR 1001
+#define IDC_STATUSBAR 1002
+
+/* commands */
+#define IDC_PROP 2000
+#define IDC_REFRESH 2001
+#define IDC_PRINT 2002
+#define IDC_PROGHELP 2003
+#define IDC_EXIT 2004
+#define IDC_ABOUT 4031
+
+/* menus */
+#define IDR_MAINMENU 102
+#define IDR_POPUP 103
+#define IDC_DEVBYTYPE 104
+
+/* tooltips */
+#define IDS_TOOLTIP_PROP 6000
+#define IDS_TOOLTIP_REFRESH 6001
+#define IDS_TOOLTIP_HELP 6002
+#define IDS_TOOLTIP_EXIT 6003
+
+/* button bitmaps */
+#define IDB_PROP 10000
+#define IDB_REFRESH 10001
+#define IDB_HELP 10002
+#define IDB_EXIT 10003
+
+/* toolbar buttons */
+#define TBICON_PROP 0
+#define TBICON_REFRESH 1
+#define TBICON_HELP 2
+#define TBICON_EXIT 3
+
+/* about box info */
+#define IDD_ABOUTBOX 200
+#define IDC_LICENSE_EDIT 201
+#define IDS_APPNAME 202
+#define IDS_LICENSE 203
+
+
+/* menu hints */
+#define IDS_HINT_BLANK 20000
+#define IDS_HINT_REFRESH 20002
+#define IDS_HINT_PROP 20003
+#define IDS_HINT_HELP 20004
+#define IDS_HINT_ABOUT 20005
+#define IDS_HINT_EXIT 20006
+
+/* system menu hints */
+#define IDS_HINT_SYS_RESTORE 21001
+#define IDS_HINT_SYS_MOVE 21002
+#define IDS_HINT_SYS_SIZE 21003
+#define IDS_HINT_SYS_MINIMIZE 21004
+#define IDS_HINT_SYS_MAXIMIZE 21005
+#define IDS_HINT_SYS_CLOSE 21006
diff --git a/reactos/base/applications/devmgr/devmgr.c b/reactos/base/applications/devmgr/devmgr.c
index 6fb93d8ee70..a13b528798d 100644
--- a/reactos/base/applications/devmgr/devmgr.c
+++ b/reactos/base/applications/devmgr/devmgr.c
@@ -131,8 +131,8 @@ void ListByClass()
if (rc == ERROR_SUCCESS)
{
InsertIntoListView(i,ClassDescription,ClassName);
- TextOut(hDC, 200, 40, empty, strlen(empty));
- TextOut(hDC, 200, 40, ClassDescription, strlen(ClassDescription));
+ TextOut(hDC, 200, 40, empty, (int) strlen(empty));
+ TextOut(hDC, 200, 40, ClassDescription, (int) strlen(ClassDescription));
_tprintf(_T("%d %s (%s)\n"), i, ClassName, ClassDescription);
}
else
@@ -183,8 +183,8 @@ void ListByClass()
{
_tprintf(_T("- %s\n"), PropertyBuffer);
InsertIntoListView(0,PropertyBuffer," ");
- TextOut(hDC, 200, 40, empty, strlen(empty));
- TextOut(hDC, 200, 40, PropertyBuffer, strlen(PropertyBuffer));
+ TextOut(hDC, 200, 40, empty, (int) strlen(empty));
+ TextOut(hDC, 200, 40, PropertyBuffer, (int) strlen(PropertyBuffer));
}
else
_tprintf(_T("SetupDiGetDeviceRegistryProperty() failed with status 0x%lx\n"), GetLastError());
@@ -239,16 +239,16 @@ CONFIGRET ListSubNodes(DEVINST parent, DWORD Level)
_tprintf(_T("%s\n"), DisplayName);
sprintf(temp,"%s%s",LevelSpaces,DisplayName);
InsertIntoListView(0,temp," ");
- TextOut(hDC, 200, 40, empty, strlen(empty));
- TextOut(hDC, 200, 40, DisplayName, strlen(DisplayName));
+ TextOut(hDC, 200, 40, empty, (int) strlen(empty));
+ TextOut(hDC, 200, 40, DisplayName, (int) strlen(DisplayName));
}
else
{
_tprintf(_T("(unknown device)\n"));
sprintf(temp,"%s%s",LevelSpaces,"(unknown device)");
InsertIntoListView(0,temp," ");
- TextOut(hDC, 200, 40, empty, strlen(empty));
- TextOut(hDC, 200, 40, "(unknown device)", strlen("(unknown device)"));
+ TextOut(hDC, 200, 40, empty, (int) strlen(empty));
+ TextOut(hDC, 200, 40, "(unknown device)", (int) strlen("(unknown device)"));
}
cr = ListSubNodes(child, Level + 1);
if (cr != CR_SUCCESS)
@@ -328,8 +328,8 @@ int ListByInterface(const GUID* guid)
if (SetupDiGetDeviceInterfaceDetail(hDevInfo, &DeviceInterfaceData, DeviceInterfaceDetailData, sizeof(Buffer), NULL, NULL))
{
_tprintf(_T("- device %-2ld: %s\n"), i, DeviceInterfaceDetailData->DevicePath);
- TextOut(hDC, 200, 40, empty, strlen(empty));
- TextOut(hDC, 200, 40, DeviceInterfaceDetailData->DevicePath, strlen(DeviceInterfaceDetailData->DevicePath));
+ TextOut(hDC, 200, 40, empty, (int) strlen(empty));
+ TextOut(hDC, 200, 40, DeviceInterfaceDetailData->DevicePath, (int) strlen(DeviceInterfaceDetailData->DevicePath));
InsertIntoListView(i,DeviceInterfaceDetailData->DevicePath," ");
}
else
@@ -362,6 +362,9 @@ int WINAPI WinMain( HINSTANCE hInstance,
{
MSG msg;
+UNREFERENCED_PARAMETER(lpCmdLine);
+UNREFERENCED_PARAMETER(hInstance);
+
g_hInst = hInstance;
if(!hPrevInstance)
@@ -481,7 +484,7 @@ switch (uMessage)
InitListView();
CreateButtons(g_hInst, hWnd);
- TextOut(hDC, 200, 40, empty, strlen(empty));
+ TextOut(hDC, 200, 40, empty, (int) strlen(empty));
break;
@@ -525,6 +528,8 @@ void CreateListView(HINSTANCE hInstance, HWND hwndParent)
{
DWORD dwStyle;
+UNREFERENCED_PARAMETER(hInstance);
+
dwStyle = WS_TABSTOP |
WS_CHILD |
WS_BORDER |
@@ -657,7 +662,7 @@ void InsertIntoListView(int typ, LPTSTR name, LPTSTR intern_name)
}
else
item.pszText = "";
- item.cchTextMax = _tcslen(item.pszText);
+ item.cchTextMax = (int) _tcslen(item.pszText);
if (item.cchTextMax == 0)
item.pszText = LPSTR_TEXTCALLBACK;
item.iImage = 0;
@@ -676,6 +681,8 @@ void InsertIntoListView(int typ, LPTSTR name, LPTSTR intern_name)
void CreateButtons(HINSTANCE hInstance, HWND hwndParent)
{
+ UNREFERENCED_PARAMETER(hInstance);
+
hwndButtonListByClass = CreateWindowEx (
0,
"button", /* Builtin button class */
diff --git a/reactos/base/applications/devmgr/devmgr.rbuild b/reactos/base/applications/devmgr/devmgr.rbuild
index 78e60550960..b9014c42a65 100644
--- a/reactos/base/applications/devmgr/devmgr.rbuild
+++ b/reactos/base/applications/devmgr/devmgr.rbuild
@@ -9,6 +9,7 @@
kernel32
user32
comctl32
+ advapi32
devmgr.c
devmgr.rc
diff --git a/reactos/base/applications/games/solitaire/cardlib/cardrgndraw.cpp b/reactos/base/applications/games/solitaire/cardlib/cardrgndraw.cpp
index 2f20010695b..d9b34050ed9 100644
--- a/reactos/base/applications/games/solitaire/cardlib/cardrgndraw.cpp
+++ b/reactos/base/applications/games/solitaire/cardlib/cardrgndraw.cpp
@@ -5,6 +5,7 @@
// Copyright J Brown 2001
//
#include
+#include
#include "cardlib.h"
#include "cardregion.h"
#include "cardcolor.h"
diff --git a/reactos/base/applications/games/solitaire/cardlib/cardwindow.cpp b/reactos/base/applications/games/solitaire/cardlib/cardwindow.cpp
index 1eea0bffb90..48682ae9628 100644
--- a/reactos/base/applications/games/solitaire/cardlib/cardwindow.cpp
+++ b/reactos/base/applications/games/solitaire/cardlib/cardwindow.cpp
@@ -6,6 +6,7 @@
//
#include
#include
+#include
#include "globals.h"
#include "cardlib.h"
diff --git a/reactos/base/applications/games/solitaire/de.rc b/reactos/base/applications/games/solitaire/de.rc
new file mode 100644
index 00000000000..bad20480792
--- /dev/null
+++ b/reactos/base/applications/games/solitaire/de.rc
@@ -0,0 +1,128 @@
+/*
+ * PROJECT: Solitaire
+ * LICENSE: Freeware, permission to use under Public Domain
+ * FILE: base/applications/games/solitaire/de.rc
+ * PURPOSE: German Language File for Solitaire
+ * PROGRAMMERS: Daniel "EmuandCo" Reimer (reimer.daniel@freenet.de)
+ */
+#include "resource.h"
+
+#define APSTUDIO_READONLY_SYMBOLS
+
+/* winemaker: #include "afxres.h" */
+/* winemaker:warning: 'afxres.h' is an MFC specific header. Replacing it with 'winres.h' */
+#include "winres.h"
+
+/////
+
+#undef APSTUDIO_READONLY_SYMBOLS
+
+/////
+// German resources
+
+#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENG)
+#ifdef _WIN32
+LANGUAGE LANG_GERMAN, SUBLANG_GERMAN
+#pragma code_page(1252)
+#endif //_WIN32
+
+/////
+// Dialog
+
+IDD_DIALOG1 DIALOGEX DISCARDABLE 0, 0, 186, 95
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Dialog"
+FONT 8, "MS Shell Dlg"
+EXSTYLE DS_SHELLFONT
+BEGIN
+ DEFPUSHBUTTON "OK",IDOK,129,7,50,14
+ PUSHBUTTON "Abbrechen",IDCANCEL,129,24,50,14
+END
+
+
+/////
+// DESIGNINFO
+
+#ifdef APSTUDIO_INVOKED
+GUIDELINES DESIGNINFO DISCARDABLE
+BEGIN
+ IDD_DIALOG1, DIALOGEX
+ BEGIN
+ LEFTMARGIN, 7
+ RIGHTMARGIN, 179
+ TOPMARGIN, 7
+ BOTTOMMARGIN, 88
+ END
+END
+#endif // APSTUDIO_INVOKED
+
+
+#ifdef APSTUDIO_INVOKED
+
+/////
+// TEXTINCLUDE
+
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+ "resource.h\0"
+END
+
+2 TEXTINCLUDE DISCARDABLE
+BEGIN
+ "#include ""winres.h""\r\n"
+ "\0"
+END
+
+3 TEXTINCLUDE DISCARDABLE
+BEGIN
+ "\r\n"
+ "\0"
+END
+
+#endif // APSTUDIO_INVOKED
+
+
+/////
+// Menu
+
+IDR_MENU1 MENU DISCARDABLE
+BEGIN
+ POPUP "&Spiel"
+ BEGIN
+ MENUITEM "&Karten geben\t F2", IDM_GAME_NEW
+ MENUITEM SEPARATOR
+ MENUITEM "&Deckblatt...", IDM_GAME_DECK
+ MENUITEM "&Optionen...", IDM_GAME_OPTIONS
+ MENUITEM SEPARATOR
+ MENUITEM "&Beenden", IDM_GAME_EXIT
+ END
+ POPUP "&?"
+ BEGIN
+ MENUITEM "&Inhalt\tF1", IDM_HELP_CONTENTS
+ MENUITEM "Inf&o", IDM_HELP_ABOUT
+ END
+END
+
+/////
+// Accelerator
+
+IDR_ACCELERATOR1 ACCELERATORS DISCARDABLE
+BEGIN
+ VK_F1, IDM_HELP_CONTENTS, VIRTKEY, NOINVERT
+ VK_F2, IDM_GAME_NEW, VIRTKEY, NOINVERT
+END
+
+
+/////
+// Icon
+
+IDI_ICON1 ICON DISCARDABLE "solitaire.ico"
+#endif // German resources
+
+/////
+
+
+#ifndef APSTUDIO_INVOKED
+
+/////
+#endif // not APSTUDIO_INVOKED
diff --git a/reactos/base/applications/games/solitaire/en.rc b/reactos/base/applications/games/solitaire/en.rc
new file mode 100644
index 00000000000..22823aa8815
--- /dev/null
+++ b/reactos/base/applications/games/solitaire/en.rc
@@ -0,0 +1,128 @@
+/*
+ * PROJECT: Solitaire
+ * LICENSE: Freeware, permission to use under Public Domain
+ * FILE: base/applications/games/solitaire/en.rc
+ * PURPOSE: English Language File for Solitaire
+ * PROGRAMMERS: Daniel "EmuandCo" Reimer (reimer.daniel@freenet.de)
+ */
+#include "resource.h"
+
+#define APSTUDIO_READONLY_SYMBOLS
+
+/* winemaker: #include "afxres.h" */
+/* winemaker:warning: 'afxres.h' is an MFC specific header. Replacing it with 'winres.h' */
+#include "winres.h"
+
+/////
+
+#undef APSTUDIO_READONLY_SYMBOLS
+
+/////
+// English (U.K.) resources
+
+#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENG)
+#ifdef _WIN32
+LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
+#pragma code_page(1252)
+#endif //_WIN32
+
+/////
+// Dialog
+
+IDD_DIALOG1 DIALOGEX DISCARDABLE 0, 0, 186, 95
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Dialog"
+FONT 8, "MS Shell Dlg"
+EXSTYLE DS_SHELLFONT
+BEGIN
+ DEFPUSHBUTTON "OK",IDOK,129,7,50,14
+ PUSHBUTTON "Cancel",IDCANCEL,129,24,50,14
+END
+
+
+/////
+// DESIGNINFO
+
+#ifdef APSTUDIO_INVOKED
+GUIDELINES DESIGNINFO DISCARDABLE
+BEGIN
+ IDD_DIALOG1, DIALOGEX
+ BEGIN
+ LEFTMARGIN, 7
+ RIGHTMARGIN, 179
+ TOPMARGIN, 7
+ BOTTOMMARGIN, 88
+ END
+END
+#endif // APSTUDIO_INVOKED
+
+
+#ifdef APSTUDIO_INVOKED
+
+/////
+// TEXTINCLUDE
+
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+ "resource.h\0"
+END
+
+2 TEXTINCLUDE DISCARDABLE
+BEGIN
+ "#include ""winres.h""\r\n"
+ "\0"
+END
+
+3 TEXTINCLUDE DISCARDABLE
+BEGIN
+ "\r\n"
+ "\0"
+END
+
+#endif // APSTUDIO_INVOKED
+
+
+/////
+// Menu
+
+IDR_MENU1 MENU DISCARDABLE
+BEGIN
+ POPUP "&Game"
+ BEGIN
+ MENUITEM "&Deal\tF2", IDM_GAME_NEW
+ MENUITEM SEPARATOR
+ MENUITEM "De&ck...", IDM_GAME_DECK
+ MENUITEM "&Options...", IDM_GAME_OPTIONS
+ MENUITEM SEPARATOR
+ MENUITEM "&Exit", IDM_GAME_EXIT
+ END
+ POPUP "&Help"
+ BEGIN
+ MENUITEM "&Contents\tF1", IDM_HELP_CONTENTS
+ MENUITEM "&About", IDM_HELP_ABOUT
+ END
+END
+
+/////
+// Accelerator
+
+IDR_ACCELERATOR1 ACCELERATORS DISCARDABLE
+BEGIN
+ VK_F1, IDM_HELP_CONTENTS, VIRTKEY, NOINVERT
+ VK_F2, IDM_GAME_NEW, VIRTKEY, NOINVERT
+END
+
+
+/////
+// Icon
+
+IDI_ICON1 ICON DISCARDABLE "solitaire.ico"
+#endif // English (U.K.) resources
+
+/////
+
+
+#ifndef APSTUDIO_INVOKED
+
+/////
+#endif // not APSTUDIO_INVOKED
diff --git a/reactos/base/applications/games/solitaire/sol.rc b/reactos/base/applications/games/solitaire/sol.rc
index 021bbc0c148..3bf475111b0 100644
--- a/reactos/base/applications/games/solitaire/sol.rc
+++ b/reactos/base/applications/games/solitaire/sol.rc
@@ -1,144 +1,5 @@
-//Microsoft Developer Studio generated resource script.
-//
#include "resource.h"
-#define APSTUDIO_READONLY_SYMBOLS
-/////////////////////////////////////////////////////////////////////////////
-//
-// Generated from the TEXTINCLUDE 2 resource.
-//
-/* winemaker: #include "afxres.h" */
-/* winemaker:warning: 'afxres.h' is an MFC specific header. Replacing it with 'winres.h' */
-#include "winres.h"
-
-/////////////////////////////////////////////////////////////////////////////
-#undef APSTUDIO_READONLY_SYMBOLS
-
-/////////////////////////////////////////////////////////////////////////////
-// English (U.K.) resources
-
-#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENG)
-#ifdef _WIN32
-LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_UK
-#pragma code_page(1252)
-#endif //_WIN32
-
-/////////////////////////////////////////////////////////////////////////////
-//
-// Dialog
-//
-
-IDD_DIALOG1 DIALOG DISCARDABLE 0, 0, 186, 95
-STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
-CAPTION "Dialog"
-FONT 8, "MS Sans Serif"
-BEGIN
- DEFPUSHBUTTON "OK",IDOK,129,7,50,14
- PUSHBUTTON "Cancel",IDCANCEL,129,24,50,14
-END
-
-
-/////////////////////////////////////////////////////////////////////////////
-//
-// DESIGNINFO
-//
-
-#ifdef APSTUDIO_INVOKED
-GUIDELINES DESIGNINFO DISCARDABLE
-BEGIN
- IDD_DIALOG1, DIALOG
- BEGIN
- LEFTMARGIN, 7
- RIGHTMARGIN, 179
- TOPMARGIN, 7
- BOTTOMMARGIN, 88
- END
-END
-#endif // APSTUDIO_INVOKED
-
-
-#ifdef APSTUDIO_INVOKED
-/////////////////////////////////////////////////////////////////////////////
-//
-// TEXTINCLUDE
-//
-
-1 TEXTINCLUDE DISCARDABLE
-BEGIN
- "resource.h\0"
-END
-
-2 TEXTINCLUDE DISCARDABLE
-BEGIN
- "#include ""winres.h""\r\n"
- "\0"
-END
-
-3 TEXTINCLUDE DISCARDABLE
-BEGIN
- "\r\n"
- "\0"
-END
-
-#endif // APSTUDIO_INVOKED
-
-
-/////////////////////////////////////////////////////////////////////////////
-//
-// Menu
-//
-
-IDR_MENU1 MENU DISCARDABLE
-BEGIN
- POPUP "&Game"
- BEGIN
- MENUITEM "&Deal\tF2", IDM_GAME_NEW
- MENUITEM SEPARATOR
- MENUITEM "De&ck...", IDM_GAME_DECK
- MENUITEM "&Options...", IDM_GAME_OPTIONS
- MENUITEM SEPARATOR
- MENUITEM "&Exit", IDM_GAME_EXIT
- END
- POPUP "&Help"
- BEGIN
- MENUITEM "&Contents\tF1", IDM_HELP_CONTENTS
- MENUITEM "&About", IDM_HELP_ABOUT
- END
-END
-
-
-/////////////////////////////////////////////////////////////////////////////
-//
-// Accelerator
-//
-
-IDR_ACCELERATOR1 ACCELERATORS DISCARDABLE
-BEGIN
- VK_F1, IDM_HELP_CONTENTS, VIRTKEY, NOINVERT
- VK_F2, IDM_GAME_NEW, VIRTKEY, NOINVERT
-END
-
-
-/////////////////////////////////////////////////////////////////////////////
-//
-// Icon
-//
-
-// Icon with lowest ID value placed first to ensure application icon
-// remains consistent on all systems.
-IDI_ICON1 ICON DISCARDABLE "solitaire.ico"
-#endif // English (U.K.) resources
-/////////////////////////////////////////////////////////////////////////////
-
-
-
-#ifndef APSTUDIO_INVOKED
-/////////////////////////////////////////////////////////////////////////////
-//
-// Generated from the TEXTINCLUDE 3 resource.
-//
-
-
-/////////////////////////////////////////////////////////////////////////////
-#endif // not APSTUDIO_INVOKED
-
+#include "de.rc"
+#include "en.rc"
+#include "uk.rc"
diff --git a/reactos/base/applications/games/solitaire/solitaire.cpp b/reactos/base/applications/games/solitaire/solitaire.cpp
index 5689c429065..cda7203bea1 100644
--- a/reactos/base/applications/games/solitaire/solitaire.cpp
+++ b/reactos/base/applications/games/solitaire/solitaire.cpp
@@ -1,6 +1,8 @@
#include
#include
#include
+#include
+
#include "resource.h"
#include "cardlib/cardlib.h"
diff --git a/reactos/base/applications/games/solitaire/solitaire.rbuild b/reactos/base/applications/games/solitaire/solitaire.rbuild
index 51c36c9f0f5..6478c45e701 100644
--- a/reactos/base/applications/games/solitaire/solitaire.rbuild
+++ b/reactos/base/applications/games/solitaire/solitaire.rbuild
@@ -1,6 +1,6 @@
-
+
.
cardlib
-lstdc++
diff --git a/reactos/base/applications/games/solitaire/uk.rc b/reactos/base/applications/games/solitaire/uk.rc
new file mode 100644
index 00000000000..b19eafd0906
--- /dev/null
+++ b/reactos/base/applications/games/solitaire/uk.rc
@@ -0,0 +1,128 @@
+/*
+ * PROJECT: Solitaire
+ * LICENSE: Freeware, permission to use under Public Domain
+ * FILE: base/applications/games/solitaire/uk.rc
+ * PURPOSE: Ukraianian Language File for Solitaire
+ * TRANSLATOR: Artem Reznikov
+ */
+#include "resource.h"
+
+#define APSTUDIO_READONLY_SYMBOLS
+
+/* winemaker: #include "afxres.h" */
+/* winemaker:warning: 'afxres.h' is an MFC specific header. Replacing it with 'winres.h' */
+#include "winres.h"
+
+/////
+
+#undef APSTUDIO_READONLY_SYMBOLS
+
+/////
+// Ukraianian resources
+
+#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENG)
+#ifdef _WIN32
+LANGUAGE LANG_UKRAINIAN, SUBLANG_DEFAULT
+#pragma code_page(1251)
+#endif //_WIN32
+
+/////
+// Dialog
+
+IDD_DIALOG1 DIALOGEX DISCARDABLE 0, 0, 186, 95
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Dialog"
+FONT 8, "MS Shell Dlg"
+EXSTYLE DS_SHELLFONT
+BEGIN
+ DEFPUSHBUTTON "OK",IDOK,129,7,50,14
+ PUSHBUTTON "Ñêàñóâàòè",IDCANCEL,129,24,50,14
+END
+
+
+/////
+// DESIGNINFO
+
+#ifdef APSTUDIO_INVOKED
+GUIDELINES DESIGNINFO DISCARDABLE
+BEGIN
+ IDD_DIALOG1, DIALOGEX
+ BEGIN
+ LEFTMARGIN, 7
+ RIGHTMARGIN, 179
+ TOPMARGIN, 7
+ BOTTOMMARGIN, 88
+ END
+END
+#endif // APSTUDIO_INVOKED
+
+
+#ifdef APSTUDIO_INVOKED
+
+/////
+// TEXTINCLUDE
+
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+ "resource.h\0"
+END
+
+2 TEXTINCLUDE DISCARDABLE
+BEGIN
+ "#include ""winres.h""\r\n"
+ "\0"
+END
+
+3 TEXTINCLUDE DISCARDABLE
+BEGIN
+ "\r\n"
+ "\0"
+END
+
+#endif // APSTUDIO_INVOKED
+
+
+/////
+// Menu
+
+IDR_MENU1 MENU DISCARDABLE
+BEGIN
+ POPUP "&Ãðà"
+ BEGIN
+ MENUITEM "&Ðîçäàòè êàðòè\tF2", IDM_GAME_NEW
+ MENUITEM SEPARATOR
+ MENUITEM "&Êîëîäà...", IDM_GAME_DECK
+ MENUITEM "&Ïàðàìåòðè...", IDM_GAME_OPTIONS
+ MENUITEM SEPARATOR
+ MENUITEM "Â&èõ³ä", IDM_GAME_EXIT
+ END
+ POPUP "&Äîâ³äêà"
+ BEGIN
+ MENUITEM "&Çì³ñò\tF1", IDM_HELP_CONTENTS
+ MENUITEM "&Ïðî", IDM_HELP_ABOUT
+ END
+END
+
+/////
+// Accelerator
+
+IDR_ACCELERATOR1 ACCELERATORS DISCARDABLE
+BEGIN
+ VK_F1, IDM_HELP_CONTENTS, VIRTKEY, NOINVERT
+ VK_F2, IDM_GAME_NEW, VIRTKEY, NOINVERT
+END
+
+
+/////
+// Icon
+
+IDI_ICON1 ICON DISCARDABLE "solitaire.ico"
+#endif // Ukraianian resources
+
+/////
+
+
+#ifndef APSTUDIO_INVOKED
+
+/////
+#endif // not APSTUDIO_INVOKED
diff --git a/reactos/base/applications/games/winemine/No.rc b/reactos/base/applications/games/winemine/No.rc
new file mode 100644
index 00000000000..2c5a997e5fd
--- /dev/null
+++ b/reactos/base/applications/games/winemine/No.rc
@@ -0,0 +1,83 @@
+#include "resource.h"
+
+LANGUAGE LANG_NORWEGIAN, SUBLANG_NEUTRAL
+
+STRINGTABLE {
+ IDS_APPNAME, "Minesveiper"
+
+}
+
+MENU_WINEMINE MENU DISCARDABLE
+{
+ POPUP "&Valg" {
+ MENUITEM "&Nytt", IDM_NEW
+ MENUITEM SEPARATOR
+ MENUITEM "&Merk spørsmål", IDM_MARKQ
+ MENUITEM SEPARATOR
+ MENUITEM "&Nybegynner", IDM_BEGINNER
+ MENUITEM "&Anvansert", IDM_ADVANCED
+ MENUITEM "&Ekspert", IDM_EXPERT
+ MENUITEM "&Egendefinert", IDM_CUSTOM
+ MENUITEM SEPARATOR
+ MENUITEM "A&vslutt", IDM_EXIT
+ }
+ POPUP "&Informasjon" {
+ MENUITEM "&Beste tider", IDM_TIMES
+ MENUITEM "&Om", IDM_ABOUT
+ }
+}
+
+DLG_TIMES DIALOG DISCARDABLE 0, 0, 160, 80
+STYLE DS_MODALFRAME | DS_3DLOOK |
+ WS_VISIBLE | WS_CAPTION | WS_SYSMENU | WS_POPUP
+CAPTION "Beste tider"
+{
+ GROUPBOX "Beste tider", IDNONE, 10, 10, 140, 45
+ LTEXT "Nybegynner", IDNONE, 20, 20, 40, 8
+ LTEXT "Anvansert", IDNONE, 20, 30, 40, 8
+ LTEXT "Ekspert", IDNONE, 20, 40, 40, 8
+ LTEXT "999", IDC_TIME1, 70, 20, 15, 8
+ LTEXT "999", IDC_TIME2, 70, 30, 15, 8
+ LTEXT "999", IDC_TIME3, 70, 40, 15, 8
+ LTEXT "", IDC_NAME1, 90, 20, 55, 8
+ LTEXT "", IDC_NAME2, 90, 30, 55, 8
+ LTEXT "", IDC_NAME3, 90, 40, 55, 8
+ DEFPUSHBUTTON "OK", IDOK, 55, 60, 50, 15
+}
+
+DLG_CONGRATS DIALOG DISCARDABLE 0, 0, 160, 60
+STYLE DS_MODALFRAME | DS_3DLOOK |
+ WS_VISIBLE | WS_CAPTION | WS_SYSMENU | WS_POPUP
+CAPTION "Congratulations!"
+{
+ LTEXT "Skriv inn navnet ditt", IDIGNORE, 10, 10, 150, 10
+ EDITTEXT IDC_EDITNAME, 25, 20, 110, 12
+ DEFPUSHBUTTON "Ok", IDOK, 60, 40, 40, 15
+}
+
+DLG_CUSTOM DIALOG DISCARDABLE 0, 0, 100, 100
+STYLE DS_MODALFRAME | DS_3DLOOK |
+ WS_VISIBLE | WS_CAPTION | WS_SYSMENU | WS_POPUP
+CAPTION "Egendefinert spill"
+{
+ LTEXT "Høyde", IDNONE, 5, 5, 30, 10
+ LTEXT "Bredde", IDNONE, 5, 35, 30, 10
+ LTEXT "Miner", IDNONE, 5, 65, 30, 10
+ EDITTEXT IDC_EDITROWS, 5, 15, 20, 12, ES_NUMBER
+ EDITTEXT IDC_EDITCOLS, 5, 45, 20, 12, ES_NUMBER
+ EDITTEXT IDC_EDITMINES, 5, 75, 20, 12, ES_NUMBER
+ DEFPUSHBUTTON "Ok", IDOK, 40, 30, 50, 15
+ PUSHBUTTON "Avbryt", IDCANCEL, 40, 50, 50, 15
+}
+
+DLG_ABOUT DIALOG DISCARDABLE 0, 0, 145, 80
+STYLE DS_MODALFRAME | DS_3DLOOK |
+ WS_VISIBLE | WS_CAPTION | WS_SYSMENU | WS_POPUP
+CAPTION "Om"
+{
+ LTEXT "Minesveiper", IDNONE, 10, 10, 35, 10
+ LTEXT "Copyright 2000, Joshua Thielen", IDNONE, 35, 25, 100, 10
+ LTEXT "under Wine lisensen", IDNONE, 35, 35, 100, 10
+ ICON "Minesveiper", IDNONE, 10, 25, 20, 20
+ DEFPUSHBUTTON "Ok", IDOK, 50, 60, 55, 15
+}
diff --git a/reactos/base/applications/games/winemine/Uk.rc b/reactos/base/applications/games/winemine/Uk.rc
new file mode 100644
index 00000000000..020cd37cbba
--- /dev/null
+++ b/reactos/base/applications/games/winemine/Uk.rc
@@ -0,0 +1,91 @@
+/*
+ * PROJECT: WineMine
+ * LICENSE: GPL - See COPYING in the top level directory
+ * FILE: base/applications/games/winemine/Uk.rc
+ * PURPOSE: Ukraianian Language File for WineMine
+ * TRANSLATOR: Artem Reznikov
+ */
+
+#include "resource.h"
+
+LANGUAGE LANG_UKRAINIAN, SUBLANG_DEFAULT
+
+STRINGTABLE {
+ IDS_APPNAME, "Ñàïåð"
+
+}
+
+MENU_WINEMINE MENU DISCARDABLE
+{
+ POPUP "&Îïö³¿" {
+ MENUITEM "&Íîâà", IDM_NEW
+ MENUITEM SEPARATOR
+ MENUITEM "&̳òêè (?)", IDM_MARKQ
+ MENUITEM SEPARATOR
+ MENUITEM "&Ïî÷àòê³âåöü", IDM_BEGINNER
+ MENUITEM "&Ëþáèòåëü", IDM_ADVANCED
+ MENUITEM "&Åêñïåðò", IDM_EXPERT
+ MENUITEM "&Îñîáëèâà", IDM_CUSTOM
+ MENUITEM SEPARATOR
+ MENUITEM "Â&èõ³ä", IDM_EXIT
+ }
+ POPUP "&²íôîðìàö³ÿ" {
+ MENUITEM "&Êðàù³ ÷àñè", IDM_TIMES
+ MENUITEM "&Ïðî", IDM_ABOUT
+ }
+}
+
+DLG_TIMES DIALOG DISCARDABLE 0, 0, 160, 80
+STYLE DS_MODALFRAME | DS_3DLOOK |
+ WS_VISIBLE | WS_CAPTION | WS_SYSMENU | WS_POPUP
+CAPTION "Êðàù³ ÷àñè"
+{
+ GROUPBOX "Êðàù³ ÷àñè", IDNONE, 10, 10, 140, 45
+ LTEXT "Ïî÷àòê³âåöü", IDNONE, 20, 20, 40, 8
+ LTEXT "Ëþáèòåëü", IDNONE, 20, 30, 40, 8
+ LTEXT "Åêñïåðò", IDNONE, 20, 40, 40, 8
+ LTEXT "999", IDC_TIME1, 70, 20, 15, 8
+ LTEXT "999", IDC_TIME2, 70, 30, 15, 8
+ LTEXT "999", IDC_TIME3, 70, 40, 15, 8
+ LTEXT "", IDC_NAME1, 90, 20, 55, 8
+ LTEXT "", IDC_NAME2, 90, 30, 55, 8
+ LTEXT "", IDC_NAME3, 90, 40, 55, 8
+ DEFPUSHBUTTON "OK", IDOK, 55, 60, 50, 15
+}
+
+DLG_CONGRATS DIALOG DISCARDABLE 0, 0, 160, 60
+STYLE DS_MODALFRAME | DS_3DLOOK |
+ WS_VISIBLE | WS_CAPTION | WS_SYSMENU | WS_POPUP
+CAPTION "³òàííÿ!"
+{
+ LTEXT "Ââåä³òü Âàøå ³ì'ÿ", IDIGNORE, 10, 10, 150, 10
+ EDITTEXT IDC_EDITNAME, 25, 20, 110, 12
+ DEFPUSHBUTTON "OK", IDOK, 60, 40, 40, 15
+}
+
+DLG_CUSTOM DIALOG DISCARDABLE 0, 0, 100, 100
+STYLE DS_MODALFRAME | DS_3DLOOK |
+ WS_VISIBLE | WS_CAPTION | WS_SYSMENU | WS_POPUP
+CAPTION "Îñîáëèâà ãðà"
+{
+ LTEXT "Âèñîòà", IDNONE, 5, 5, 30, 10
+ LTEXT "Øèðèíà", IDNONE, 5, 35, 30, 10
+ LTEXT "̳í", IDNONE, 5, 65, 30, 10
+ EDITTEXT IDC_EDITROWS, 5, 15, 20, 12, ES_NUMBER
+ EDITTEXT IDC_EDITCOLS, 5, 45, 20, 12, ES_NUMBER
+ EDITTEXT IDC_EDITMINES, 5, 75, 20, 12, ES_NUMBER
+ DEFPUSHBUTTON "OK", IDOK, 40, 30, 50, 15
+ PUSHBUTTON "Ñêàñóâàòè", IDCANCEL, 40, 50, 50, 15
+}
+
+DLG_ABOUT DIALOG DISCARDABLE 0, 0, 145, 80
+STYLE DS_MODALFRAME | DS_3DLOOK |
+ WS_VISIBLE | WS_CAPTION | WS_SYSMENU | WS_POPUP
+CAPTION "About"
+{
+ LTEXT "Ñàïåð", IDNONE, 10, 10, 35, 10
+ LTEXT "Copyright 2000, Joshua Thielen", IDNONE, 35, 25, 100, 10
+ LTEXT "ïî ë³öåí糿 Wine", IDNONE, 35, 35, 100, 10
+ ICON "WINEMINE", IDNONE, 10, 25, 20, 20
+ DEFPUSHBUTTON "OK", IDOK, 50, 60, 55, 15
+}
diff --git a/reactos/base/applications/games/winemine/main.c b/reactos/base/applications/games/winemine/main.c
index 61916920c3b..4954ba37abe 100644
--- a/reactos/base/applications/games/winemine/main.c
+++ b/reactos/base/applications/games/winemine/main.c
@@ -58,7 +58,7 @@ int WINAPI WinMain( HINSTANCE hInst, HINSTANCE hPrevInst, LPSTR cmdline, int cmd
wc.hInstance = hInst;
wc.hIcon = LoadIcon( hInst, appname );
wc.hCursor = LoadCursor( NULL_HANDLE, (LPCTSTR)IDI_APPLICATION );
- wc.hbrBackground = (HBRUSH) GetStockObject( BLACK_BRUSH );
+ wc.hbrBackground = (HBRUSH) GetStockObject( LTGRAY_BRUSH );
wc.lpszMenuName = "MENU_WINEMINE";
wc.lpszClassName = appname;
@@ -519,14 +519,14 @@ void CreateBoard( BOARD *p_board )
top = BOARD_HMARGIN;
right = left + LED_WIDTH * 3;
bottom = top + LED_HEIGHT;
- SetRect( &p_board->timer_rect, left, top, right, bottom );
+ SetRect( &p_board->counter_rect, left, top, right, bottom );
/* setting the counter rectangle boundary */
left = p_board->width - BOARD_WMARGIN - LED_WIDTH * 3;
top = BOARD_HMARGIN;
right = p_board->width - BOARD_WMARGIN;
bottom = top + LED_HEIGHT;
- SetRect( &p_board->counter_rect, left, top, right, bottom );
+ SetRect( &p_board->timer_rect, left, top, right, bottom );
p_board->status = WAITING;
p_board->face_bmp = SMILE_BMP;
@@ -723,9 +723,9 @@ void DrawLeds( HDC hdc, HDC hMemDC, BOARD *p_board, int number, int x, int y )
}
/* use unlit led if not playing */
- if( p_board->status == WAITING )
+ /* if( p_board->status == WAITING )
for( i = 0; i < 3; i++ )
- led[i] = 11;
+ led[i] = 11;*/
hOldObj = SelectObject (hMemDC, p_board->hLedsBMP);
@@ -766,7 +766,7 @@ void DrawBoard( HDC hdc, HDC hMemDC, PAINTSTRUCT *ps, BOARD *p_board )
{
RECT tmp_rect;
- if( IntersectRect( &tmp_rect, &ps->rcPaint, &p_board->counter_rect ) )
+ if( IntersectRect( &tmp_rect, &ps->rcPaint, &p_board->counter_rect) )
DrawLeds( hdc, hMemDC, p_board, p_board->mines - p_board->num_flags,
p_board->counter_rect.left,
p_board->counter_rect.top );
@@ -774,7 +774,7 @@ void DrawBoard( HDC hdc, HDC hMemDC, PAINTSTRUCT *ps, BOARD *p_board )
if( IntersectRect( &tmp_rect, &ps->rcPaint, &p_board->timer_rect ) )
DrawLeds( hdc, hMemDC, p_board, p_board->time,
p_board->timer_rect.left,
- p_board->timer_rect.top );
+ p_board->timer_rect.top);
if( IntersectRect( &tmp_rect, &ps->rcPaint, &p_board->face_rect ) )
DrawFace( hdc, hMemDC, p_board );
diff --git a/reactos/base/applications/games/winemine/rc/faces.bmp b/reactos/base/applications/games/winemine/rc/faces.bmp
index 77f20f44115..0d6b1c02161 100644
Binary files a/reactos/base/applications/games/winemine/rc/faces.bmp and b/reactos/base/applications/games/winemine/rc/faces.bmp differ
diff --git a/reactos/base/applications/games/winemine/rc/leds.bmp b/reactos/base/applications/games/winemine/rc/leds.bmp
index 5473cc3569b..ceb5f649268 100644
Binary files a/reactos/base/applications/games/winemine/rc/leds.bmp and b/reactos/base/applications/games/winemine/rc/leds.bmp differ
diff --git a/reactos/base/applications/games/winemine/rc/mines.bmp b/reactos/base/applications/games/winemine/rc/mines.bmp
index ff234cbbe0f..f67bb519c81 100644
Binary files a/reactos/base/applications/games/winemine/rc/mines.bmp and b/reactos/base/applications/games/winemine/rc/mines.bmp differ
diff --git a/reactos/base/applications/games/winemine/winemine.rbuild b/reactos/base/applications/games/winemine/winemine.rbuild
index 1ed457d6ea6..18893df9270 100644
--- a/reactos/base/applications/games/winemine/winemine.rbuild
+++ b/reactos/base/applications/games/winemine/winemine.rbuild
@@ -6,7 +6,9 @@
0x0501
0x0501
kernel32
- gdi32
+ gdi32
+ user32
+ advapi32
main.c
dialog.c
winemine.rc
diff --git a/reactos/base/applications/games/winemine/winemine.rc b/reactos/base/applications/games/winemine/winemine.rc
index 78e5ebf1f6e..0df8f98f762 100644
--- a/reactos/base/applications/games/winemine/winemine.rc
+++ b/reactos/base/applications/games/winemine/winemine.rc
@@ -26,7 +26,8 @@
#include "Fr.rc"
#include "Pl.rc"
#include "Nl.rc"
-
+#include "Uk.rc"
+#include "No.rc"
IDI_WINEMINE ICON MOVEABLE "rc/winemine.ico"
diff --git a/reactos/base/applications/getfirefox/getfirefox.rbuild b/reactos/base/applications/getfirefox/getfirefox.rbuild
index ce493e8eb70..b0c276d6592 100644
--- a/reactos/base/applications/getfirefox/getfirefox.rbuild
+++ b/reactos/base/applications/getfirefox/getfirefox.rbuild
@@ -1,19 +1,21 @@
- .
-
-
-
- 0x0501
- .
+
+
+
+ 0x0501
+
-/*
- * Note: this icon is the "default logo" referenced here:
- * http://www.mozilla.org/foundation/trademarks/faq.html (under "What are the
- * Mozilla Trademarks and Logos?"). Don't use the official Firefox logo as it
- * is trademarked.
- */
-1 ICON "firefox.ico"
-
-#include "De.rc"
-#include "En.rc"
-#include "Fr.rc"
-#include "Hu.rc"
-#include "Nl.rc"
-#include "Ru.rc"
-#include "Sv.rc"
-#include "Uk.rc"
+#include "rsrc.rc"
+
+
+
diff --git a/reactos/base/applications/getfirefox/De.rc b/reactos/base/applications/getfirefox/lang/De.rc
similarity index 100%
rename from reactos/base/applications/getfirefox/De.rc
rename to reactos/base/applications/getfirefox/lang/De.rc
diff --git a/reactos/base/applications/getfirefox/En.rc b/reactos/base/applications/getfirefox/lang/En.rc
similarity index 100%
rename from reactos/base/applications/getfirefox/En.rc
rename to reactos/base/applications/getfirefox/lang/En.rc
diff --git a/reactos/base/applications/getfirefox/Fr.rc b/reactos/base/applications/getfirefox/lang/Fr.rc
similarity index 100%
rename from reactos/base/applications/getfirefox/Fr.rc
rename to reactos/base/applications/getfirefox/lang/Fr.rc
diff --git a/reactos/base/applications/getfirefox/Hu.rc b/reactos/base/applications/getfirefox/lang/Hu.rc
similarity index 95%
rename from reactos/base/applications/getfirefox/Hu.rc
rename to reactos/base/applications/getfirefox/lang/Hu.rc
index 0324218b810..10b784dd82a 100644
--- a/reactos/base/applications/getfirefox/Hu.rc
+++ b/reactos/base/applications/getfirefox/lang/Hu.rc
@@ -25,7 +25,7 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
-LANGUAGE LANG_HUNGARIAN, SUBLANG_NEUTRAL
+LANGUAGE LANG_HUNGARIAN, SUBLANG_DEFAULT
IDD_GETFIREFOX DIALOG LOADONCALL MOVEABLE DISCARDABLE 0, 0, 220, 76
STYLE DS_MODALFRAME | DS_CENTER | WS_VISIBLE | WS_POPUP | WS_CAPTION | WS_SYSMENU
diff --git a/reactos/base/applications/getfirefox/Nl.rc b/reactos/base/applications/getfirefox/lang/Nl.rc
similarity index 100%
rename from reactos/base/applications/getfirefox/Nl.rc
rename to reactos/base/applications/getfirefox/lang/Nl.rc
diff --git a/reactos/base/applications/getfirefox/lang/No.rc b/reactos/base/applications/getfirefox/lang/No.rc
new file mode 100644
index 00000000000..8a8c4e0ae3e
--- /dev/null
+++ b/reactos/base/applications/getfirefox/lang/No.rc
@@ -0,0 +1,44 @@
+/*
+ * PROJECT: ReactOS utilities
+ * LICENSE: GPL - See COPYING in the top level directory
+ * FILE: apps/utils/getfirefox/En.rc
+ * PURPOSE: Norwegian resources
+ * COPYRIGHT: Copyright 2004 Mike McCormack for CodeWeavers
+ * Copyright 2005 Ge van Geldorp (gvg@reactos.org)
+ */
+/*
+ * Based on Wine dlls/shdocvw/En.rc
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * 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
+ */
+
+LANGUAGE LANG_NORWEGIAN, SUBLANG_NEUTRAL
+
+IDD_GETFIREFOX DIALOG LOADONCALL MOVEABLE DISCARDABLE 0, 0, 220, 76
+STYLE DS_MODALFRAME | DS_CENTER | WS_VISIBLE | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "laster ned Firefox"
+FONT 8, "MS Shell Dlg"
+{
+ CONTROL "Progress1",IDC_PROGRESS,"msctls_progress32",WS_BORDER|PBS_SMOOTH,10,10,200,12
+ LTEXT "", IDC_STATUS, 10, 30, 200, 10, SS_CENTER
+ CHECKBOX "Fjern 'Last Ned Firefox' fra startmenyen", IDC_REMOVE,
+ 10, 44, 200, 10, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP
+ PUSHBUTTON "Avbryt", IDCANCEL, 85, 58, 50, 15, WS_GROUP | WS_TABSTOP
+}
+
+STRINGTABLE
+BEGIN
+ IDS_START_MENU_NAME "Få Firefox"
+END
diff --git a/reactos/base/applications/getfirefox/Ru.rc b/reactos/base/applications/getfirefox/lang/Ru.rc
similarity index 94%
rename from reactos/base/applications/getfirefox/Ru.rc
rename to reactos/base/applications/getfirefox/lang/Ru.rc
index 877cc1b6158..00d3c197f0e 100644
--- a/reactos/base/applications/getfirefox/Ru.rc
+++ b/reactos/base/applications/getfirefox/lang/Ru.rc
@@ -1,4 +1,4 @@
-LANGUAGE LANG_RUSSIAN, SUBLANG_NEUTRAL
+LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT
IDD_GETFIREFOX DIALOG LOADONCALL MOVEABLE DISCARDABLE 0, 0, 220, 76
STYLE DS_MODALFRAME | DS_CENTER | WS_VISIBLE | WS_POPUP | WS_CAPTION | WS_SYSMENU
diff --git a/reactos/base/applications/getfirefox/Sv.rc b/reactos/base/applications/getfirefox/lang/Sv.rc
similarity index 100%
rename from reactos/base/applications/getfirefox/Sv.rc
rename to reactos/base/applications/getfirefox/lang/Sv.rc
diff --git a/reactos/base/applications/getfirefox/Uk.rc b/reactos/base/applications/getfirefox/lang/Uk.rc
similarity index 100%
rename from reactos/base/applications/getfirefox/Uk.rc
rename to reactos/base/applications/getfirefox/lang/Uk.rc
diff --git a/reactos/base/applications/getfirefox/rsrc.rc b/reactos/base/applications/getfirefox/rsrc.rc
new file mode 100644
index 00000000000..48ceb931521
--- /dev/null
+++ b/reactos/base/applications/getfirefox/rsrc.rc
@@ -0,0 +1,30 @@
+
+
+#include
+#include "resource.h"
+
+/*
+ * Note: this icon is the "default logo" referenced here:
+ * http://www.mozilla.org/foundation/trademarks/faq.html (under "What are the
+ * Mozilla Trademarks and Logos?"). Don't use the official Firefox logo as it
+ * is trademarked.
+ */
+1 ICON "firefox.ico"
+
+
+/* define language neutral resources */
+
+LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
+
+/* include localised resources */
+#include "lang/De.rc"
+#include "lang/En.rc"
+#include "lang/Fr.rc"
+#include "lang/Hu.rc"
+#include "lang/Nl.rc"
+#include "lang/No.rc"
+#include "lang/Ru.rc"
+#include "lang/Sv.rc"
+#include "lang/Uk.rc"
+
+
diff --git a/reactos/base/applications/ibrowser/Makefile-MinGW b/reactos/base/applications/ibrowser/Makefile-MinGW
index cd1d90f5821..8d71521635c 100644
--- a/reactos/base/applications/ibrowser/Makefile-MinGW
+++ b/reactos/base/applications/ibrowser/Makefile-MinGW
@@ -50,13 +50,14 @@ OBJECTS = \
webchild.o \
mainframe.o \
favorites.o \
+ xs-native.o \
xmlstorage.o
LIBS = gdi32 comctl32 shell32 ole32 uuid oleaut32
all: $(TARGET)
-$(TARGET): $(OBJECTS) $(PROGRAM)$(RES_SUFFIX) libexpat.dll
+$(TARGET): $(OBJECTS) $(PROGRAM)$(RES_SUFFIX)
$(LINK) $(LFLAGS) -o $@ $^ $(addprefix -l,$(LIBS)) $(addprefix -l,$(DELAYIMPORTS))
ibrowser$(RES_SUFFIX): $(PROGRAM)_intres.rc res/*.bmp res/*.ico
diff --git a/reactos/base/applications/ibrowser/Makefile-precomp b/reactos/base/applications/ibrowser/Makefile-precomp
index 08b7f253a4f..47b5f305501 100644
--- a/reactos/base/applications/ibrowser/Makefile-precomp
+++ b/reactos/base/applications/ibrowser/Makefile-precomp
@@ -52,6 +52,7 @@ OBJECTS = \
webchild.o \
mainframe.o \
favorites.o \
+ xs-native.o \
xmlstorage.o
LIBS = gdi32 comctl32 shell32 ole32 oleaut32 uuid
@@ -61,7 +62,7 @@ all: precomp.h.gch $(TARGET)
precomp.h.gch: *.h utility/*.h
$(CXX) $(CFLAGS) precomp.h
-$(TARGET): $(OBJECTS) $(PROGRAM)$(RES_SUFFIX) libexpat.dll
+$(TARGET): $(OBJECTS) $(PROGRAM)$(RES_SUFFIX)
$(LINK) $(LFLAGS) -o $@ $^ $(addprefix -l,$(LIBS)) $(addprefix -l,$(DELAYIMPORTS))
ibrowser$(RES_SUFFIX): $(PROGRAM)_intres.rc res/*.bmp res/*.ico
diff --git a/reactos/base/applications/ibrowser/No.rc b/reactos/base/applications/ibrowser/No.rc
new file mode 100644
index 00000000000..2ad20e5a9bf
--- /dev/null
+++ b/reactos/base/applications/ibrowser/No.rc
@@ -0,0 +1,161 @@
+//Microsoft Developer Studio generated resource script.
+//
+#include "ibrowser_intres.h"
+
+#define APSTUDIO_READONLY_SYMBOLS
+/////////////////////////////////////////////////////////////////////////////
+//
+// Generated from the TEXTINCLUDE 2 resource.
+//
+#include
+/////////////////////////////////////////////////////////////////////////////
+#undef APSTUDIO_READONLY_SYMBOLS
+
+/////////////////////////////////////////////////////////////////////////////
+// German (Germany) resources
+
+#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_DEU)
+#ifdef _WIN32
+LANGUAGE LANG_GERMAN, SUBLANG_GERMAN
+#pragma code_page(1252)
+#endif //_WIN32
+
+#ifdef APSTUDIO_INVOKED
+/////////////////////////////////////////////////////////////////////////////
+//
+// TEXTINCLUDE
+//
+
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+ "ibrowser_intres.h\0"
+END
+
+2 TEXTINCLUDE DISCARDABLE
+BEGIN
+ "#include \0"
+END
+
+3 TEXTINCLUDE DISCARDABLE
+BEGIN
+ "#ifndef _ROS_\r\n"
+ "LANGUAGE LANG_NORWEGIAN, SUBLANG_NORWEGIAN_NO\r\n"
+ "STRINGTABLE DISCARDABLE \r\n"
+ "BEGIN\r\n"
+ "#ifdef UNICODE\r\n"
+ "IDS_IBROWSER_VERSION_STR ""ROS IBrowser%0s""\r\n"
+ "#else\r\n"
+ "IDS_IBROWSER_VERSION_STR ""ROS IBrowser Ansi%0s""\r\n"
+ "#endif\r\n"
+ "END\r\n"
+ "#endif\r\n"
+ "\0"
+END
+
+#endif // APSTUDIO_INVOKED
+
+#endif // German (Germany) resources
+/////////////////////////////////////////////////////////////////////////////
+
+
+/////////////////////////////////////////////////////////////////////////////
+// Norwegian (N.O.) resources
+
+#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
+#ifdef _WIN32
+LANGUAGE LANG_NORWEGIAN, SUBLANG_NEUTRAL
+#pragma code_page(1252)
+#endif //_WIN32
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Menu
+//
+
+IDM_SDIFRAME MENU PRELOAD DISCARDABLE
+BEGIN
+ POPUP "&Fil"
+ BEGIN
+ MENUITEM "&Åpne", ID_FILE_OPEN
+ MENUITEM "A&vslutt", ID_FILE_EXIT
+ END
+ POPUP "&Vis"
+ BEGIN
+ MENUITEM "&Verktøylinje", ID_VIEW_TOOL_BAR
+ MENUITEM "S&idelinje", ID_VIEW_SIDE_BAR, GRAYED
+ MENUITEM "&Statuslinje", ID_VIEW_STATUSBAR
+ MENUITEM SEPARATOR
+ MENUITEM "&Oppdater\tF5", ID_REFRESH
+ MENUITEM "&Fullskjerm\tCtrl+Shift+S", ID_VIEW_FULLSCREEN
+ END
+ POPUP "&Hjelp"
+ BEGIN
+ MENUITEM "IBrowser &FAQ...", ID_IBROWSER_FAQ
+ MENUITEM "&Om IBrowser...", ID_ABOUT_IBROWSER
+ MENUITEM "Om &OS...", ID_ABOUT_WINDOWS
+ END
+END
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Dialog
+//
+
+IDD_ABOUT_IBROWSER DIALOG DISCARDABLE 0, 0, 199, 106
+STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "Om ReactOS Internett nettleser"
+FONT 10, "MS Sans Serif"
+BEGIN
+ LTEXT "ReactOS Internett nettleser",IDC_ROS_IBROWSER,91,13,104,11
+ LTEXT "V 0.9",IDC_VERSION_TXT,91,27,104,8
+ LTEXT "(c) 2005 Martin Fuchs",IDC_STATIC,91,42,104,8
+ LTEXT "",IDC_WIN_VERSION,91,58,98,22
+ LTEXT "http://www.sky.franken.de/explorer/",IDC_WWW,17,84,129,
+ 8
+ CONTROL "&OK",IDOK,"Button",BS_OWNERDRAW | BS_FLAT | WS_GROUP,
+ 154,90,38,12
+END
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// String Table
+//
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ IDS_TITLE "Reactos Internett nettleser"
+ IDS_EMPTY "(TOM)"
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ IDS_ABOUT_IBROWSER "&Om..."
+END
+
+#endif // NORWEGIAN (N.O.) resources
+/////////////////////////////////////////////////////////////////////////////
+
+
+
+#ifndef APSTUDIO_INVOKED
+/////////////////////////////////////////////////////////////////////////////
+//
+// Generated from the TEXTINCLUDE 3 resource.
+//
+#ifndef _ROS_
+LANGUAGE LANG_NORWEGIAN, SUBLANG_NORWEGIAN_BOKMAL
+STRINGTABLE DISCARDABLE
+BEGIN
+#ifdef UNICODE
+IDS_IBROWSER_VERSION_STR "ROS IBrowser%0s"
+#else
+IDS_IBROWSER_VERSION_STR "ROS IBrowser Ansi%0s"
+#endif
+END
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+#endif // not APSTUDIO_INVOKED
+
diff --git a/reactos/base/applications/ibrowser/expat-license.txt b/reactos/base/applications/ibrowser/expat-license.txt
deleted file mode 100644
index 5c5d524a1f8..00000000000
--- a/reactos/base/applications/ibrowser/expat-license.txt
+++ /dev/null
@@ -1,22 +0,0 @@
-Copyright (c) 1998, 1999, 2000 Thai Open Source Software Center Ltd
- and Clark Cooper
-Copyright (c) 2001, 2002, 2003 Expat maintainers.
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files (the
-"Software"), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
-
-The above copyright notice and this permission notice shall be included
-in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
-CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
-TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
-SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/reactos/base/applications/ibrowser/favorites.cpp b/reactos/base/applications/ibrowser/favorites.cpp
index 47f7948b688..60843a411ab 100644
--- a/reactos/base/applications/ibrowser/favorites.cpp
+++ b/reactos/base/applications/ibrowser/favorites.cpp
@@ -429,10 +429,10 @@ bool Favorites::read(LPCTSTR path)
XMLDoc xbel;
if (!xbel.read(path))
- if (xbel._last_error == XML_ERROR_NO_ELEMENTS)
+/*@@ if (xbel._last_error == XML_ERROR_NO_ELEMENTS)
return false;
- else
- MessageBox(0/*@@g_Globals._hwndDesktop*/, String(xbel._last_error_msg.c_str()),
+ else */
+ MessageBox(0/*@@g_Globals._hwndDesktop*/, xbel._errors.str(),
TEXT("ROS Explorer - reading bookmark file"), MB_OK);
const_XMLPos pos(&xbel);
@@ -457,9 +457,9 @@ void Favorites::write(LPCTSTR path) const
super::write(pos);
pos.back();
- xbel._header._doctype = "";
+ xbel._format._doctype._name = "xbel";
+ xbel._format._doctype._public = "//IDN python.org//DTD XML Bookmark Exchange Language 1.0//EN//XML";
+ xbel._format._doctype._system = "http://www.python.org/topics/xml/dtds/xbel-1.0.dtd";
xbel.write(path);
}
diff --git a/reactos/base/applications/ibrowser/ibrowser.dsp b/reactos/base/applications/ibrowser/ibrowser.dsp
index 902a9901ded..6de0920891c 100644
--- a/reactos/base/applications/ibrowser/ibrowser.dsp
+++ b/reactos/base/applications/ibrowser/ibrowser.dsp
@@ -28,7 +28,7 @@ CFG=IBROWSER - WIN32 DEBUG
# PROP AllowPerConfigDependencies 0
# PROP Scc_ProjName ""
# PROP Scc_LocalPath ""
-CPP=cl.exe
+CPP=cl.cmd
RSC=rc.exe
!IF "$(CFG)" == "ibrowser - Win32 Release"
@@ -199,6 +199,10 @@ SOURCE=.\utility\xmlstorage.cpp
SOURCE=.\utility\xmlstorage.h
# End Source File
+# Begin Source File
+
+SOURCE=".\utility\xs-native.cpp"
+# End Source File
# End Group
# Begin Group "resources"
@@ -263,10 +267,6 @@ SOURCE=.\ibrowser_intres.rc
# End Source File
# Begin Source File
-SOURCE=.\res\iexplore.ico
-# End Source File
-# Begin Source File
-
SOURCE=.\Ja.rc
# PROP Exclude_From_Build 1
# End Source File
diff --git a/reactos/base/applications/ibrowser/ibrowser.rbuild b/reactos/base/applications/ibrowser/ibrowser.rbuild
index a90eb16fad6..38c1105f2c2 100644
--- a/reactos/base/applications/ibrowser/ibrowser.rbuild
+++ b/reactos/base/applications/ibrowser/ibrowser.rbuild
@@ -1,9 +1,8 @@
-
+
-fexceptions
.
- include/expat
@@ -18,12 +17,12 @@
ole32
oleaut32
shell32
- expat
precomp.h
utility.cpp
window.cpp
xmlstorage.cpp
+ xs-native.cpp
ibrowser.cpp
favorites.cpp
diff --git a/reactos/base/applications/ibrowser/ibrowser_intres.rc b/reactos/base/applications/ibrowser/ibrowser_intres.rc
index d4432e29fb3..5911d099402 100644
--- a/reactos/base/applications/ibrowser/ibrowser_intres.rc
+++ b/reactos/base/applications/ibrowser/ibrowser_intres.rc
@@ -35,9 +35,8 @@ IDB_TOOLBAR BITMAP DISCARDABLE "res/toolbar.bmp"
IDA_IBROWSER ACCELERATORS DISCARDABLE
BEGIN
- "X", ID_FILE_EXIT, VIRTKEY, ALT, NOINVERT
- "S", ID_VIEW_FULLSCREEN, VIRTKEY, SHIFT, CONTROL,
- NOINVERT
+ 120, ID_FILE_EXIT, ASCII, ALT // "X"
+ 115, ID_VIEW_FULLSCREEN, ASCII, SHIFT, CONTROL // "S"
END
@@ -66,7 +65,8 @@ BEGIN
"#include ""Sv.rc""\r\n"
"#include ""Hu.rc""\r\n"
"#include ""Ro.rc""\r\n"
- "#include ""Nl.rc""\r\n"
+ "#include ""Nl.rc""\r\n"
+ "#include ""No.rc""\r\n"
"#include ""Ja.rc""\0"
END
@@ -104,6 +104,7 @@ IDI_IBROWSER ICON DISCARDABLE "res/ibrowser.ico"
#include "Ro.rc"
#include "Nl.rc"
#include "Ja.rc"
+#include "No.rc"
/////////////////////////////////////////////////////////////////////////////
#endif // not APSTUDIO_INVOKED
diff --git a/reactos/base/applications/ibrowser/make_ibrowser.dsp b/reactos/base/applications/ibrowser/make_ibrowser.dsp
index 64850314d87..46f54a75a6c 100644
--- a/reactos/base/applications/ibrowser/make_ibrowser.dsp
+++ b/reactos/base/applications/ibrowser/make_ibrowser.dsp
@@ -4,7 +4,7 @@
# TARGTYPE "Win32 (x86) External Target" 0x0106
-CFG=make_ibrowser - Win32 bjam
+CFG=make_ibrowser - Win32 Release
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
!MESSAGE use the Export Makefile command and run
!MESSAGE
@@ -13,7 +13,7 @@ CFG=make_ibrowser - Win32 bjam
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
-!MESSAGE NMAKE /f "make_ibrowser.mak" CFG="make_ibrowser - Win32 bjam"
+!MESSAGE NMAKE /f "make_ibrowser.mak" CFG="make_ibrowser - Win32 Release"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
@@ -43,7 +43,7 @@ CFG=make_ibrowser - Win32 bjam
# PROP Use_Debug_Libraries 0
# PROP Output_Dir "Release"
# PROP Intermediate_Dir "Release"
-# PROP Cmd_Line "msdevfilt -gcc -pipe "perl d:\tools\gSTLFilt.pl" make -f Makefile-precomp UNICODE=0"
+# PROP Cmd_Line "msdevfilt -gcc -pipe "perl d:\tools\gSTLFilt.pl" mingw32-make -f Makefile-precomp UNICODE=0"
# PROP Rebuild_Opt "clean all"
# PROP Target_File "ibrowser.exe"
# PROP Bsc_Name ""
@@ -64,7 +64,7 @@ CFG=make_ibrowser - Win32 bjam
# PROP Use_Debug_Libraries 1
# PROP Output_Dir "Debug"
# PROP Intermediate_Dir "Debug"
-# PROP Cmd_Line "msdevfilt -gcc -pipe "perl d:\tools\gSTLFilt.pl" make -f Makefile-precomp UNICODE=0 DEBUG=1"
+# PROP Cmd_Line "msdevfilt -gcc -pipe "perl d:\tools\gSTLFilt.pl" mingw32-make -f Makefile-precomp UNICODE=0 DEBUG=1"
# PROP Rebuild_Opt "clean all"
# PROP Target_File "ibrowser.exe"
# PROP Bsc_Name "msdevfilt -gcc -pipe "perl d:\tools\gSTLFilt.pl" make -f Makefile.MinGW UNICODE=0 DEBUG=1"
@@ -85,7 +85,7 @@ CFG=make_ibrowser - Win32 bjam
# PROP Use_Debug_Libraries 1
# PROP Output_Dir "UDebug"
# PROP Intermediate_Dir "UDebug"
-# PROP Cmd_Line "msdevfilt -gcc -pipe "perl d:\tools\gSTLFilt.pl" make -f Makefile.MinGW UNICODE=1 DEBUG=1"
+# PROP Cmd_Line "msdevfilt -gcc -pipe "perl d:\tools\gSTLFilt.pl" mingw32-make -f Makefile.MinGW UNICODE=1 DEBUG=1"
# PROP Rebuild_Opt "clean all"
# PROP Target_File "ibrowser.exe"
# PROP Bsc_Name ""
@@ -106,7 +106,7 @@ CFG=make_ibrowser - Win32 bjam
# PROP Use_Debug_Libraries 0
# PROP Output_Dir "URelease"
# PROP Intermediate_Dir "URelease"
-# PROP Cmd_Line "msdevfilt -gcc make -f Makefile-precomp UNICODE=1"
+# PROP Cmd_Line "msdevfilt -gcc mingw32-make -f Makefile-precomp UNICODE=1"
# PROP Rebuild_Opt "clean all"
# PROP Target_File "ibrowser.exe"
# PROP Bsc_Name ""
@@ -137,10 +137,6 @@ SOURCE=.\ibrowser.rbuild
# End Source File
# Begin Source File
-SOURCE=.\Makefile
-# End Source File
-# Begin Source File
-
SOURCE=".\Makefile-MinGW"
# End Source File
# Begin Source File
diff --git a/reactos/base/applications/ibrowser/utility/xmlstorage.cpp b/reactos/base/applications/ibrowser/utility/xmlstorage.cpp
index 0a2dc79d8a7..1eb5b6e02c1 100644
--- a/reactos/base/applications/ibrowser/utility/xmlstorage.cpp
+++ b/reactos/base/applications/ibrowser/utility/xmlstorage.cpp
@@ -4,7 +4,7 @@
//
// xmlstorage.cpp
//
- // Copyright (c) 2004, 2005 Martin Fuchs
+ // Copyright (c) 2004, 2005, 2006 Martin Fuchs
//
@@ -36,22 +36,29 @@
*/
+#ifndef XS_NO_COMMENT
+#define XS_NO_COMMENT // no #pragma comment(lib, ...) statements in .lib files
+#endif
+
//#include "xmlstorage.h"
#include
- // work around GCC's wide string constant bug
-#ifdef __GNUC__
-const LPCXSSTR XMLStorage::XS_TRUE = XS_TEXT("true");
-const LPCXSSTR XMLStorage::XS_FALSE = XS_TEXT("false");
-const LPCXSSTR XMLStorage::XS_NUMBERFMT = XS_TEXT("%d");
-#endif
-
-
namespace XMLStorage {
-static std::string unescape(const char* s, char b='"', char e='"')
+ // work around GCC's wide string constant bug
+#ifdef __GNUC__
+const LPCXSSTR XS_EMPTY = XS_EMPTY_STR;
+const LPCXSSTR XS_TRUE = XS_TRUE_STR;
+const LPCXSSTR XS_FALSE = XS_FALSE_STR;
+const LPCXSSTR XS_INTFMT = XS_INTFMT_STR;
+const LPCXSSTR XS_FLOATFMT = XS_FLOATFMT_STR;
+#endif
+
+
+ /// remove escape characters from zero terminated string
+static std::string unescape(const char* s, char b, char e)
{
const char* end = s + strlen(s);
@@ -68,7 +75,13 @@ static std::string unescape(const char* s, char b='"', char e='"')
return std::string(s, end-s);
}
-static std::string unescape(const char* s, int l, char b='"', char e='"')
+inline std::string unescape(const char* s)
+{
+ return unescape(s, '"', '"');
+}
+
+ /// remove escape characters from string with specified length
+static std::string unescape(const char* s, size_t l, char b, char e)
{
const char* end = s + l;
@@ -85,6 +98,11 @@ static std::string unescape(const char* s, int l, char b='"', char e='"')
return std::string(s, end-s);
}
+inline std::string unescape(const char* s, size_t l)
+{
+ return unescape(s, l, '"', '"');
+}
+
/// move XPath like to position in XML tree
bool XMLPos::go(const char* path)
@@ -137,7 +155,7 @@ const XMLNode* XMLNode::find_relative(const char* path) const
if (slash == path)
return NULL;
- int l = slash? slash-path: strlen(path);
+ size_t l = slash? slash-path: strlen(path);
std::string comp(path, l);
path += l;
@@ -198,7 +216,7 @@ XMLNode* XMLNode::create_relative(const char* path)
if (slash == path)
return NULL;
- int l = slash? slash-path: strlen(path);
+ size_t l = slash? slash-path: strlen(path);
std::string comp(path, l);
path += l;
@@ -259,239 +277,113 @@ XMLNode* XMLNode::create_relative(const char* path)
}
- /// read XML stream into XML tree below _pos
-XML_Status XMLReaderBase::read()
-{
- XML_Status status = XML_STATUS_OK;
-
- while(status == XML_STATUS_OK) {
- char* buffer = (char*) XML_GetBuffer(_parser, BUFFER_LEN);
-
- int l = read_buffer(buffer, BUFFER_LEN);
- if (l < 0)
- break;
-
- status = XML_ParseBuffer(_parser, l, false);
- }
-
- if (status != XML_STATUS_ERROR)
- status = XML_ParseBuffer(_parser, 0, true);
-
- if (_pos->_children.empty())
- _pos->_trailing.append(_content);
- else
- _pos->_children.back()->_trailing.append(_content);
-
- _content.erase();
-
- return status;
-}
-
-
- /// store XML version and encoding into XML reader
-void XMLCALL XMLReaderBase::XML_XmlDeclHandler(void* userData, const XML_Char* version, const XML_Char* encoding, int standalone)
-{
- XMLReaderBase* pReader = (XMLReaderBase*) userData;
-
- if (version)
- pReader->_xml_version = version;
-
- if (encoding)
- pReader->_encoding = encoding;
-}
-
- /// notifications about XML start tag
-void XMLCALL XMLReaderBase::XML_StartElementHandler(void* userData, const XML_Char* name, const XML_Char** atts)
-{
- XMLReaderBase* pReader = (XMLReaderBase*) userData;
- XMLPos& pos = pReader->_pos;
-
- // search for end of first line
- const char* s = pReader->_content.c_str();
- const char* p = s;
- const char* e = p + pReader->_content.length();
-
- for(; p_children.empty()) { // no children in last node?
- if (pReader->_last_tag == TAG_START)
- pos->_content.append(s, p-s);
- else if (pReader->_last_tag == TAG_END)
- pos->_trailing.append(s, p-s);
- // else TAG_NONE -> don't store white space in root node
- } else
- pos->_children.back()->_trailing.append(s, p-s);
-
- std::string leading;
-
- if (p != e)
- leading.assign(p, e-p);
-
- XMLNode* node = new XMLNode(String_from_XML_Char(name), leading);
-
- pos.add_down(node);
-
- while(*atts) {
- const XML_Char* attr_name = *atts++;
- const XML_Char* attr_value = *atts++;
-
- (*node)[String_from_XML_Char(attr_name)] = String_from_XML_Char(attr_value);
- }
-
- pReader->_last_tag = TAG_START;
- pReader->_content.erase();
-}
-
- /// notifications about XML end tag
-void XMLCALL XMLReaderBase::XML_EndElementHandler(void* userData, const XML_Char* name)
-{
- XMLReaderBase* pReader = (XMLReaderBase*) userData;
- XMLPos& pos = pReader->_pos;
-
- // search for end of first line
- const char* s = pReader->_content.c_str();
- const char* p = s;
- const char* e = p + pReader->_content.length();
-
- for(; p_children.empty()) // no children in current node?
- pos->_content.append(s, p-s);
- else
- if (pReader->_last_tag == TAG_START)
- pos->_content.append(s, p-s);
- else
- pos->_children.back()->_trailing.append(s, p-s);
-
- if (p != e)
- pos->_end_leading.assign(p, e-p);
-
- pos.back();
-
- pReader->_last_tag = TAG_END;
- pReader->_content.erase();
-}
-
- /// store content, white space and comments
-void XMLCALL XMLReaderBase::XML_DefaultHandler(void* userData, const XML_Char* s, int len)
-{
- XMLReaderBase* pReader = (XMLReaderBase*) userData;
-
- pReader->_content.append(s, len);
-}
-
-
-std::string XMLReaderBase::get_error_string() const
-{
- XML_Error error = XML_GetErrorCode(_parser);
-
- switch(error) {
- case XML_ERROR_NONE: return "XML_ERROR_NONE";
- case XML_ERROR_NO_MEMORY: return "XML_ERROR_NO_MEMORY";
- case XML_ERROR_SYNTAX: return "XML_ERROR_SYNTAX";
- case XML_ERROR_NO_ELEMENTS: return "XML_ERROR_NO_ELEMENTS";
- case XML_ERROR_INVALID_TOKEN: return "XML_ERROR_INVALID_TOKEN";
- case XML_ERROR_UNCLOSED_TOKEN: return "XML_ERROR_UNCLOSED_TOKEN";
- case XML_ERROR_PARTIAL_CHAR: return "XML_ERROR_PARTIAL_CHAR";
- case XML_ERROR_TAG_MISMATCH: return "XML_ERROR_TAG_MISMATCH";
- case XML_ERROR_DUPLICATE_ATTRIBUTE: return "XML_ERROR_DUPLICATE_ATTRIBUTE";
- case XML_ERROR_JUNK_AFTER_DOC_ELEMENT: return "XML_ERROR_JUNK_AFTER_DOC_ELEMENT";
- case XML_ERROR_PARAM_ENTITY_REF: return "XML_ERROR_PARAM_ENTITY_REF";
- case XML_ERROR_UNDEFINED_ENTITY: return "XML_ERROR_UNDEFINED_ENTITY";
- case XML_ERROR_RECURSIVE_ENTITY_REF: return "XML_ERROR_RECURSIVE_ENTITY_REF";
- case XML_ERROR_ASYNC_ENTITY: return "XML_ERROR_ASYNC_ENTITY";
- case XML_ERROR_BAD_CHAR_REF: return "XML_ERROR_BAD_CHAR_REF";
- case XML_ERROR_BINARY_ENTITY_REF: return "XML_ERROR_BINARY_ENTITY_REF";
- case XML_ERROR_ATTRIBUTE_EXTERNAL_ENTITY_REF: return "XML_ERROR_ATTRIBUTE_EXTERNAL_ENTITY_REF";
- case XML_ERROR_MISPLACED_XML_PI: return "XML_ERROR_MISPLACED_XML_PI";
- case XML_ERROR_UNKNOWN_ENCODING: return "XML_ERROR_UNKNOWN_ENCODING";
- case XML_ERROR_INCORRECT_ENCODING: return "XML_ERROR_INCORRECT_ENCODING";
- case XML_ERROR_UNCLOSED_CDATA_SECTION: return "XML_ERROR_UNCLOSED_CDATA_SECTION";
- case XML_ERROR_EXTERNAL_ENTITY_HANDLING: return "XML_ERROR_EXTERNAL_ENTITY_HANDLING";
- case XML_ERROR_NOT_STANDALONE: return "XML_ERROR_NOT_STANDALONE";
- case XML_ERROR_UNEXPECTED_STATE: return "XML_ERROR_UNEXPECTED_STATE";
- case XML_ERROR_ENTITY_DECLARED_IN_PE: return "XML_ERROR_ENTITY_DECLARED_IN_PE";
- case XML_ERROR_FEATURE_REQUIRES_XML_DTD: return "XML_ERROR_FEATURE_REQUIRES_XML_DTD";
- case XML_ERROR_CANT_CHANGE_FEATURE_ONCE_PARSING: return "XML_ERROR_CANT_CHANGE_FEATURE_ONCE_PARSING";
- case XML_ERROR_UNBOUND_PREFIX: return "XML_ERROR_UNBOUND_PREFIX";
- // EXPAT version >= 1.95.8
-#if XML_MAJOR_VERSION>1 || (XML_MAJOR_VERSION==1 && XML_MINOR_VERSION>95) || (XML_MAJOR_VERSION==1 && XML_MINOR_VERSION==95 && XML_MICRO_VERSION>7)
- case XML_ERROR_UNDECLARING_PREFIX: return "XML_ERROR_UNDECLARING_PREFIX";
- case XML_ERROR_INCOMPLETE_PE: return "XML_ERROR_INCOMPLETE_PE";
- case XML_ERROR_XML_DECL: return "XML_ERROR_XML_DECL";
- case XML_ERROR_TEXT_DECL: return "XML_ERROR_TEXT_DECL";
- case XML_ERROR_PUBLICID: return "XML_ERROR_PUBLICID";
- case XML_ERROR_SUSPENDED: return "XML_ERROR_SUSPENDED";
- case XML_ERROR_NOT_SUSPENDED: return "XML_ERROR_NOT_SUSPENDED";
- case XML_ERROR_ABORTED: return "XML_ERROR_ABORTED";
- case XML_ERROR_FINISHED: return "XML_ERROR_FINISHED";
- case XML_ERROR_SUSPEND_PE: return "XML_ERROR_SUSPEND_PE";
-//#endif
-//#if XML_MAJOR_VERSION>=2
- /* Added in 2.0. */
- case XML_ERROR_RESERVED_PREFIX_XML: return "XML_ERROR_RESERVED_PREFIX_XML";
- case XML_ERROR_RESERVED_PREFIX_XMLNS: return "XML_ERROR_RESERVED_PREFIX_XMLNS";
- case XML_ERROR_RESERVED_NAMESPACE_URI: return "XML_ERROR_RESERVED_NAMESPACE_URI";
-#endif
- }
-
- std::ostringstream out;
-
- out << "XML parser error #" << error;
-
- return out.str();
-}
-
-
+ /// encode XML string literals
std::string EncodeXMLString(const XS_String& str)
{
LPCXSSTR s = str.c_str();
- LPXSSTR buffer = (LPXSSTR)alloca(5*sizeof(XS_CHAR)*XS_len(s)); // worst case. "&"
- LPXSSTR o = buffer;
+ size_t l = XS_len(s);
- for(LPCXSSTR p=s; *p; ++p)
- switch(*p) {
- case '&':
- *o++ = '&'; *o++ = 'a'; *o++ = 'm'; *o++ = 'p'; *o++ = ';';
- break;
+ if (l <= BUFFER_LEN) {
+ LPXSSTR buffer = (LPXSSTR)alloca(6*sizeof(XS_CHAR)*XS_len(s)); // worst case """ / "'"
+ LPXSSTR o = buffer;
- case '<':
- *o++ = '&'; *o++ = 'l'; *o++ = 't'; *o++ = ';';
- break;
+ for(LPCXSSTR p=s; *p; ++p)
+ switch(*p) {
+ case '&':
+ *o++ = '&'; *o++ = 'a'; *o++ = 'm'; *o++ = 'p'; *o++ = ';';
+ break;
- case '>':
- *o++ = '&'; *o++ = 'g'; *o++ = 't'; *o++ = ';';
- break;
+ case '<':
+ *o++ = '&'; *o++ = 'l'; *o++ = 't'; *o++ = ';';
+ break;
- case '"':
- *o++ = '&'; *o++ = 'q'; *o++ = 'u'; *o++ = 'o'; *o++ = 't'; *o++ = ';';
- break;
+ case '>':
+ *o++ = '&'; *o++ = 'g'; *o++ = 't'; *o++ = ';';
+ break;
- case '\'':
- *o++ = '&'; *o++ = 'a'; *o++ = 'p'; *o++ = 'o'; *o++ = 's'; *o++ = ';';
- break;
+ case '"':
+ *o++ = '&'; *o++ = 'q'; *o++ = 'u'; *o++ = 'o'; *o++ = 't'; *o++ = ';';
+ break;
- default:
- *o++ = *p;
- }
+ case '\'':
+ *o++ = '&'; *o++ = 'a'; *o++ = 'p'; *o++ = 'o'; *o++ = 's'; *o++ = ';';
+ break;
+
+ default:
+ if ((unsigned)*p<20 && *p!='\t' && *p!='\r' && *p!='\n') {
+ char b[16];
+ sprintf(b, "&%d;", (unsigned)*p);
+ for(const char*q=b; *q; )
+ *o++ = *q++;
+ } else
+ *o++ = *p;
+ }
#ifdef XS_STRING_UTF8
- return XS_String(buffer, o-buffer);
+ return XS_String(buffer, o-buffer);
#else
- return get_utf8(buffer, o-buffer);
+ return get_utf8(buffer, o-buffer);
#endif
+ } else { // l > BUFFER_LEN
+ // encode the whole string in a CDATA section
+ std::string ret = "";
+
+ return ret;
+
+/* alternative code using ostringstream (beware: quite slow)
+#include
+
+ std::ostringstream out;
+
+ LPCXSSTR s = str.c_str();
+
+ for(LPCXSSTR p=s; *p; ++p)
+ switch(*p) {
+ case '&':
+ out << "&";
+ break;
+
+ case '<':
+ out << "<";
+ break;
+
+ case '>':
+ out << ">";
+ break;
+
+ case '"':
+ out << """;
+ break;
+
+ case '\'':
+ out << "'";
+ break;
+
+ default:
+ if ((unsigned)*p<20 && *p!='\t' *p!='\r' && *p!='\n')
+ out << "&" << (unsigned)*p << ";";
+ else
+ out << *p;
+ }
+
+#ifdef XS_STRING_UTF8
+ return XS_String(out.str());
+#else
+ return get_utf8(out.str());
+#endif
+ */
+ }
}
+ /// decode XML string literals
XS_String DecodeXMLString(const XS_String& str)
{
LPCXSSTR s = str.c_str();
@@ -517,6 +409,16 @@ XS_String DecodeXMLString(const XS_String& str)
p += 5;
} else
*o++ = *p;
+ } else if (*p=='<' && !XS_nicmp(p+1,XS_TEXT("!CDATA["),7)) {
+ p += 9;
+ LPCXSSTR e = XS_strstr(p, XS_TEXT("]]>"));
+ if (e) {
+ size_t l = e - p;
+ memcpy(o, p, l);
+ o += l;
+ p += 3;
+ } else
+ *o++ = *p;
} else
*o++ = *p;
@@ -546,8 +448,28 @@ void XMLNode::write_worker(std::ostream& out, int indent) const
}
+ /// print node without any white space
+void XMLNode::plain_write_worker(std::ostream& out) const
+{
+ out << '<' << EncodeXMLString(*this);
+
+ for(AttributeMap::const_iterator it=_attributes.begin(); it!=_attributes.end(); ++it)
+ out << ' ' << EncodeXMLString(it->first) << "=\"" << EncodeXMLString(it->second) << "\"";
+
+ if (!_children.empty()/*@@ || !_content.empty()*/) {
+ out << ">";
+
+ for(Children::const_iterator it=_children.begin(); it!=_children.end(); ++it)
+ (*it)->plain_write_worker(out);
+
+ out << "" << EncodeXMLString(*this) << ">";
+ } else
+ out << "/>";
+}
+
+
/// pretty print node with children tree to output stream
-void XMLNode::pretty_write_worker(std::ostream& out, int indent) const
+void XMLNode::pretty_write_worker(std::ostream& out, const XMLFormat& format, int indent) const
{
for(int i=indent; i--; )
out << XML_INDENT_SPACE;
@@ -557,23 +479,23 @@ void XMLNode::pretty_write_worker(std::ostream& out, int indent) const
for(AttributeMap::const_iterator it=_attributes.begin(); it!=_attributes.end(); ++it)
out << ' ' << EncodeXMLString(it->first) << "=\"" << EncodeXMLString(it->second) << "\"";
- if (!_children.empty() || !_content.empty()) {
- out << ">\n";
+ if (!_children.empty()/*@@ || !_content.empty()*/) {
+ out << '>' << format._endl;
for(Children::const_iterator it=_children.begin(); it!=_children.end(); ++it)
- (*it)->pretty_write_worker(out, indent+1);
+ (*it)->pretty_write_worker(out, format, indent+1);
for(int i=indent; i--; )
out << XML_INDENT_SPACE;
- out << "" << EncodeXMLString(*this) << ">\n";
+ out << "" << EncodeXMLString(*this) << '>' << format._endl;
} else
- out << "/>\n";
+ out << "/>" << format._endl;
}
/// write node with children tree to output stream using smart formating
-void XMLNode::smart_write_worker(std::ostream& out, int indent) const
+void XMLNode::smart_write_worker(std::ostream& out, const XMLFormat& format, int indent) const
{
if (_leading.empty())
for(int i=indent; i--; )
@@ -592,7 +514,7 @@ void XMLNode::smart_write_worker(std::ostream& out, int indent) const
out << '>';
if (_content.empty())
- out << '\n';
+ out << format._endl;
else
out << _content;
@@ -600,7 +522,7 @@ void XMLNode::smart_write_worker(std::ostream& out, int indent) const
if (it != _children.end()) {
for(; it!=_children.end(); ++it)
- (*it)->smart_write_worker(out, indent+1);
+ (*it)->smart_write_worker(out, format, indent+1);
if (_end_leading.empty())
for(int i=indent; i--; )
@@ -614,10 +536,268 @@ void XMLNode::smart_write_worker(std::ostream& out, int indent) const
}
if (_trailing.empty())
- out << '\n';
+ out << format._endl;
else
out << _trailing;
}
+std::ostream& operator<<(std::ostream& out, const XMLError& err)
+{
+ out << err._systemId << "(" << err._line << ") [column " << err._column << "] : "
+ << err._message;
+
+ return out;
+}
+
+
+void DocType::parse(const char* p)
+{
+ while(isspace((unsigned char)*p)) ++p;
+
+ const char* start = p;
+ while(isxmlsym(*p)) ++p;
+ _name.assign(start, p-start);
+
+ while(isspace((unsigned char)*p)) ++p;
+
+ start = p;
+ while(isxmlsym(*p)) ++p;
+ std::string keyword(p, p-start); // "PUBLIC" or "SYSTEM"
+
+ while(isspace((unsigned char)*p)) ++p;
+
+ if (*p=='"' || *p=='\'') {
+ char delim = *p;
+
+ start = ++p;
+ while(*p && *p!=delim) ++p;
+
+ if (*p == delim)
+ _public.assign(start, p++-start);
+ } else
+ _public.erase();
+
+ while(isspace((unsigned char)*p)) ++p;
+
+ if (*p=='"' || *p=='\'') {
+ char delim = *p;
+
+ start = ++p;
+ while(*p && *p!=delim) ++p;
+
+ if (*p == delim)
+ _system.assign(start, p++-start);
+ } else
+ _system.erase();
+}
+
+
+void XMLFormat::print_header(std::ostream& out, bool lf) const
+{
+ out << "";
+
+ if (lf)
+ out << _endl;
+
+ if (!_doctype.empty()) {
+ out << "";
+
+ if (lf)
+ out << _endl;
+ }
+
+ for(StyleSheetList::const_iterator it=_stylesheets.begin(); it!=_stylesheets.end(); ++it) {
+ it->print(out);
+
+ if (lf)
+ out << _endl;
+ }
+
+/* if (!_additional.empty()) {
+ out << _additional;
+
+ if (lf)
+ out << _endl;
+ } */
+}
+
+void StyleSheet::print(std::ostream& out) const
+{
+ out << "";
+}
+
+
+ /// return formated error message
+std::string XMLError::str() const
+{
+ std::ostringstream out;
+
+ out << *this;
+
+ return out.str();
+}
+
+
+ /// return merged error strings
+XS_String XMLErrorList::str() const
+{
+ std::ostringstream out;
+
+ for(const_iterator it=begin(); it!=end(); ++it)
+ out << *it << std::endl;
+
+ return out.str();
+}
+
+
+void XMLReaderBase::finish_read()
+{
+ if (_pos->_children.empty())
+ _pos->_trailing.append(_content);
+ else
+ _pos->_children.back()->_trailing.append(_content);
+
+ _content.erase();
+}
+
+
+ /// store XML version and encoding into XML reader
+void XMLReaderBase::XmlDeclHandler(const char* version, const char* encoding, int standalone)
+{
+ if (version)
+ _format._version = version;
+
+ if (encoding)
+ _format._encoding = encoding;
+
+ _format._standalone = standalone;
+}
+
+
+ /// notifications about XML start tag
+void XMLReaderBase::StartElementHandler(const XS_String& name, const XMLNode::AttributeMap& attributes)
+{
+ // search for end of first line
+ const char* s = _content.c_str();
+ const char* p = s;
+ const char* e = p + _content.length();
+
+ for(; p_children.empty()) { // no children in last node?
+ if (_last_tag == TAG_START)
+ _pos->_content.append(s, p-s);
+ else if (_last_tag == TAG_END)
+ _pos->_trailing.append(s, p-s);
+ else // TAG_NONE at root node
+ p = s;
+ } else
+ _pos->_children.back()->_trailing.append(s, p-s);
+
+ std::string leading;
+
+ if (p != e)
+ leading.assign(p, e-p);
+
+ XMLNode* node = new XMLNode(name, leading);
+
+ _pos.add_down(node);
+
+#ifdef XMLNODE_LOCATION
+ node->_location = get_location();
+#endif
+
+ node->_attributes = attributes;
+
+ _last_tag = TAG_START;
+ _content.erase();
+}
+
+ /// notifications about XML end tag
+void XMLReaderBase::EndElementHandler()
+{
+ // search for end of first line
+ const char* s = _content.c_str();
+ const char* p = s;
+ const char* e = p + _content.length();
+
+ for(; p_children.empty()) // no children in current node?
+ _pos->_content.append(s, p-s);
+ else
+ if (_last_tag == TAG_START)
+ _pos->_content.append(s, p-s);
+ else
+ _pos->_children.back()->_trailing.append(s, p-s);
+
+ if (p != e)
+ _pos->_end_leading.assign(p, e-p);
+
+ _pos.back();
+
+ _last_tag = TAG_END;
+ _content.erase();
+}
+
+#if defined(XS_USE_XERCES) || defined(XS_USE_EXPAT)
+ /// store content, white space and comments
+void XMLReaderBase::DefaultHandler(const XML_Char* s, int len)
+{
+#if defined(XML_UNICODE) || defined(XS_USE_XERCES)
+ _content.append(String_from_XML_Char(s, len));
+#else
+ _content.append(s, len);
+#endif
+}
+#endif
+
+
+XS_String XMLWriter::s_empty_attr;
+
+
} // namespace XMLStorage
diff --git a/reactos/base/applications/ibrowser/utility/xmlstorage.h b/reactos/base/applications/ibrowser/utility/xmlstorage.h
index f3ef5cf781d..0eadea679b1 100644
--- a/reactos/base/applications/ibrowser/utility/xmlstorage.h
+++ b/reactos/base/applications/ibrowser/utility/xmlstorage.h
@@ -4,7 +4,7 @@
//
// xmlstorage.h
//
- // Copyright (c) 2004, 2005 Martin Fuchs
+ // Copyright (c) 2004, 2005, 2006 Martin Fuchs
//
@@ -38,19 +38,107 @@
#ifndef _XMLSTORAGE_H
+
+#if _MSC_VER>=1400
+#ifndef _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES
+#define _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES 1
+#define _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT 1
+#define _CRT_SECURE_CPP_OVERLOAD_SECURE_NAMES 1
+#endif
+#endif
+
+
+#ifdef XS_USE_XERCES
+
+#ifndef UNICODE
+#ifndef XS_STRING_UTF8
+#define XS_STRING_UTF8
+#endif
+#endif
+
+#include
+#include
+
+using XERCES_CPP_NAMESPACE_QUALIFIER Locator;
+using XERCES_CPP_NAMESPACE_QUALIFIER SAXParser;
+using XERCES_CPP_NAMESPACE_QUALIFIER HandlerBase;
+using XERCES_CPP_NAMESPACE_QUALIFIER InputSource;
+using XERCES_CPP_NAMESPACE_QUALIFIER AttributeList;
+using XERCES_CPP_NAMESPACE_QUALIFIER SAXParseException;
+
+typedef XMLCh XML_Char;
+
+#elif defined(XS_USE_EXPAT)
+
#include
-#ifdef _MSC_VER
-#pragma comment(lib, "libexpat.lib")
-#pragma warning(disable: 4786)
#endif
-#include // for LPCTSTR
+#ifdef _MSC_VER
+#pragma warning(disable: 4786)
+
+#ifndef XS_NO_COMMENT
+
+#ifdef XS_USE_XERCES
+#ifdef _DEBUG
+#pragma comment(lib, "xerces-c_2D")
+#else
+#pragma comment(lib, "xerces-c_2")
+#endif
+#elif defined(XS_USE_EXPAT)
+#ifdef XML_STATIC
+#ifndef _DEBUG
+#pragma comment(lib, "libexpatMT")
+#endif
+#else
+#pragma comment(lib, "libexpat")
+#endif
+#endif
+
+#ifndef _STRING_DEFINED // _STRING_DEFINED only allowed if using xmlstorage.cpp embedded in the project
+#if defined(_DEBUG) && defined(_DLL) // DEBUG version only supported with MSVCRTD
+#if _MSC_VER==1400
+#pragma comment(lib, "xmlstorage-vc8d")
+#else
+#pragma comment(lib, "xmlstorage-vc6d")
+#endif
+#else
+#ifdef _DLL
+#if _MSC_VER==1400
+#pragma comment(lib, "xmlstorage-vc8")
+#else
+#pragma comment(lib, "xmlstorage-vc6")
+#endif
+#elif defined(_MT)
+#if _MSC_VER==1400
+#pragma comment(lib, "xmlstorage-vc8t")
+#else
+#pragma comment(lib, "xmlstorage-vc6t")
+#endif
+#else
+ // -ML is no more supported by VS2005.
+#pragma comment(lib, "xmlstorage-vc6l")
+#endif
+#endif
+#endif // _STRING_DEFINED
+
+#endif // XS_NO_COMMENT
+
+#endif // _MSC_VER
+
#ifdef UNICODE
+#ifndef _UNICODE
#define _UNICODE
#endif
+#else
+#ifdef _UNICODE
+#define UNICODE
+#endif
+#endif
+
+#include // for LPCTSTR
#include
#include
@@ -78,25 +166,48 @@ namespace XMLStorage {
#define XS_TEXT(x) x
#define LPXSSTR LPSTR
#define LPCXSSTR LPCSTR
+#define XS_cmp strcmp
#define XS_icmp stricmp
+#define XS_ncmp strncmp
#define XS_nicmp strnicmp
#define XS_toi atoi
+#define XS_tod strtod
#define XS_len strlen
-#define XS_sprintf sprintf
-#define XS_vsprintf vsprintf
+#define XS_snprintf _snprintf
+#define XS_vsnprintf _vsnprintf
+#define XS_strstr strstr
#else
#define XS_CHAR TCHAR
#define XS_TEXT(x) TEXT(x)
#define LPXSSTR LPTSTR
#define LPCXSSTR LPCTSTR
+#define XS_cmp _tcscmp
#define XS_icmp _tcsicmp
+#define XS_ncmp _tcsncmp
#define XS_nicmp _tcsnicmp
#define XS_toi _ttoi
+#define XS_tod _tcstod
#define XS_len _tcslen
-#define XS_sprintf _stprintf
-#define XS_vsprintf _vstprintf
+#define XS_snprintf _sntprintf
+#define XS_vsnprintf _vsntprintf
+#define XS_strstr _tcsstr
#endif
+#ifndef COUNTOF
+#if _MSC_VER>=1400
+#define COUNTOF _countof
+#else
+#define COUNTOF(b) (sizeof(b)/sizeof(b[0]))
+#endif
+#endif
+
+
+int inline isxmlsym(unsigned char c)
+{
+ return isalnum(c) || c=='_' || c=='-';
+}
+
+
#if defined(_STRING_DEFINED) && !defined(XS_STRING_UTF8)
#define XS_String String
@@ -121,46 +232,46 @@ struct XS_String
XS_String() {}
XS_String(LPCXSSTR s) {if (s) super::assign(s);}
- XS_String(LPCXSSTR s, int l) : super(s, l) {}
+ XS_String(LPCXSSTR s, size_t l) : super(s, l) {}
XS_String(const super& other) : super(other) {}
XS_String(const XS_String& other) : super(other) {}
#if defined(UNICODE) && !defined(XS_STRING_UTF8)
XS_String(LPCSTR s) {assign(s);}
- XS_String(LPCSTR s, int l) {assign(s, l);}
+ XS_String(LPCSTR s, size_t l) {assign(s, l);}
XS_String(const std::string& other) {assign(other.c_str());}
XS_String& operator=(LPCSTR s) {assign(s); return *this;}
- void assign(LPCSTR s) {if (s) {int bl=strlen(s); LPWSTR b=(LPWSTR)alloca(sizeof(WCHAR)*bl); super::assign(b, MultiByteToWideChar(CP_ACP, 0, s, bl, b, bl));} else erase();}
- void assign(LPCSTR s, int l) {if (s) {int bl=l; LPWSTR b=(LPWSTR)alloca(sizeof(WCHAR)*bl); super::assign(b, MultiByteToWideChar(CP_ACP, 0, s, l, b, bl));} else erase();}
+ void assign(LPCSTR s) {if (s) {size_t bl=strlen(s); LPWSTR b=(LPWSTR)alloca(sizeof(WCHAR)*bl); super::assign(b, MultiByteToWideChar(CP_ACP, 0, s, bl, b, bl));} else erase();}
+ void assign(LPCSTR s, size_t l) {if (s) {size_t bl=l; LPWSTR b=(LPWSTR)alloca(sizeof(WCHAR)*bl); super::assign(b, MultiByteToWideChar(CP_ACP, 0, s, l, b, bl));} else erase();}
#else
XS_String(LPCWSTR s) {assign(s);}
- XS_String(LPCWSTR s, int l) {assign(s, l);}
+ XS_String(LPCWSTR s, size_t l) {assign(s, l);}
XS_String(const std::wstring& other) {assign(other.c_str());}
XS_String& operator=(LPCWSTR s) {assign(s); return *this;}
#ifdef XS_STRING_UTF8
void assign(const XS_String& s) {assign(s.c_str());}
- void assign(LPCWSTR s) {if (s) {int bl=wcslen(s); LPSTR b=(LPSTR)alloca(bl); super::assign(b, WideCharToMultiByte(CP_UTF8, 0, s, bl, b, bl, 0, 0));} else erase();}
- void assign(LPCWSTR s, int l) {int bl=l; if (s) {LPSTR b=(LPSTR)alloca(bl); super::assign(b, WideCharToMultiByte(CP_UTF8, 0, s, l, b, bl, 0, 0));} else erase();}
+ void assign(LPCWSTR s) {if (s) {size_t bl=wcslen(s); LPSTR b=(LPSTR)alloca(bl); super::assign(b, WideCharToMultiByte(CP_UTF8, 0, s, (int)bl, b, (int)bl, 0, 0));} else erase();}
+ void assign(LPCWSTR s, size_t l) {size_t bl=l; if (s) {LPSTR b=(LPSTR)alloca(bl); super::assign(b, WideCharToMultiByte(CP_UTF8, 0, s, (int)l, b, (int)bl, 0, 0));} else erase();}
#else // if !UNICODE && !XS_STRING_UTF8
- void assign(LPCWSTR s) {if (s) {int bl=wcslen(s); LPSTR b=(LPSTR)alloca(bl); super::assign(b, WideCharToMultiByte(CP_ACP, 0, s, bl, b, bl, 0, 0));} else erase();}
- void assign(LPCWSTR s, int l) {int bl=l; if (s) {LPSTR b=(LPSTR)alloca(bl); super::assign(b, WideCharToMultiByte(CP_ACP, 0, s, l, b, bl, 0, 0));} else erase();}
+ void assign(LPCWSTR s) {if (s) {size_t bl=wcslen(s); LPSTR b=(LPSTR)alloca(bl); super::assign(b, WideCharToMultiByte(CP_ACP, 0, s, (int)bl, b, (int)bl, 0, 0));} else erase();}
+ void assign(LPCWSTR s, size_t l) {size_t bl=l; if (s) {LPSTR b=(LPSTR)alloca(bl); super::assign(b, WideCharToMultiByte(CP_ACP, 0, s, (int)l, b, (int)bl, 0, 0));} else erase();}
#endif
#endif
XS_String& operator=(LPCXSSTR s) {if (s) super::assign(s); else erase(); return *this;}
XS_String& operator=(const super& s) {super::assign(s); return *this;}
void assign(LPCXSSTR s) {super::assign(s);}
- void assign(LPCXSSTR s, int l) {super::assign(s, l);}
+ void assign(LPCXSSTR s, size_t l) {super::assign(s, l);}
operator LPCXSSTR() const {return c_str();}
#ifdef XS_STRING_UTF8
- operator std::wstring() const {int bl=length(); LPWSTR b=(LPWSTR)alloca(sizeof(WCHAR)*bl); return std::wstring(b, MultiByteToWideChar(CP_UTF8, 0, c_str(), bl, b, bl));}
+ operator std::wstring() const {size_t bl=length(); LPWSTR b=(LPWSTR)alloca(sizeof(WCHAR)*bl); return std::wstring(b, MultiByteToWideChar(CP_UTF8, 0, c_str(), bl, b, bl));}
#elif defined(UNICODE)
- operator std::string() const {int bl=length(); LPSTR b=(LPSTR)alloca(bl); return std::string(b, WideCharToMultiByte(CP_ACP, 0, c_str(), bl, b, bl, 0, 0));}
+ operator std::string() const {size_t bl=length(); LPSTR b=(LPSTR)alloca(bl); return std::string(b, WideCharToMultiByte(CP_ACP, 0, c_str(), bl, b, bl, 0, 0));}
#else
- operator std::wstring() const {int bl=length(); LPWSTR b=(LPWSTR)alloca(sizeof(WCHAR)*bl); return std::wstring(b, MultiByteToWideChar(CP_ACP, 0, c_str(), bl, b, bl));}
+ operator std::wstring() const {size_t bl=length(); LPWSTR b=(LPWSTR)alloca(sizeof(WCHAR)*bl); return std::wstring(b, MultiByteToWideChar(CP_ACP, 0, c_str(), (int)bl, b, (int)bl));}
#endif
XS_String& printf(LPCXSSTR fmt, ...)
@@ -169,7 +280,7 @@ struct XS_String
XS_CHAR b[BUFFER_LEN];
va_start(l, fmt);
- super::assign(b, XS_vsprintf(b, fmt, l));
+ super::assign(b, XS_vsnprintf(b, COUNTOF(b), fmt, l));
va_end(l);
return *this;
@@ -179,7 +290,7 @@ struct XS_String
{
XS_CHAR b[BUFFER_LEN];
- super::assign(b, XS_vsprintf(b, fmt, l));
+ super::assign(b, XS_vsnprintf(b, COUNTOF(b), fmt, l));
return *this;
}
@@ -190,7 +301,7 @@ struct XS_String
XS_CHAR b[BUFFER_LEN];
va_start(l, fmt);
- super::append(b, XS_vsprintf(b, fmt, l));
+ super::append(b, XS_vsnprintf(b, COUNTOF(b), fmt, l));
va_end(l);
return *this;
@@ -200,7 +311,7 @@ struct XS_String
{
XS_CHAR b[BUFFER_LEN];
- super::append(b, XS_vsprintf(b, fmt, l));
+ super::append(b, XS_vsnprintf(b, COUNTOF(b), fmt, l));
return *this;
}
@@ -211,12 +322,33 @@ struct XS_String
#endif // XS_String
+#define XS_EMPTY_STR XS_TEXT("")
+#define XS_TRUE_STR XS_TEXT("true")
+#define XS_FALSE_STR XS_TEXT("false")
+#define XS_INTFMT_STR XS_TEXT("%d")
+#define XS_FLOATFMT_STR XS_TEXT("%f")
+
+ // work around GCC's wide string constant bug
+#ifdef __GNUC__
+extern const LPCXSSTR XS_EMPTY;
+extern const LPCXSSTR XS_TRUE;
+extern const LPCXSSTR XS_FALSE;
+extern const LPCXSSTR XS_INTFMT;
+extern const LPCXSSTR XS_FLOATFMT;
+#else
+#define XS_EMPTY XS_EMPTY_STR
+#define XS_TRUE XS_TRUE_STR
+#define XS_FALSE XS_FALSE_STR
+#define XS_INTFMT XS_INTFMT_STR
+#define XS_FLOATFMT XS_FLOATFMT_STR
+#endif
+
+
#ifndef XS_STRING_UTF8
-inline void assign_utf8(XS_String& s, const char* str)
+ // from UTF-8 to XS internal string encoding
+inline void assign_utf8(XS_String& s, const char* str, int lutf8)
{
- int lutf8 = strlen(str);
-
#ifdef UNICODE
LPTSTR buffer = (LPTSTR)alloca(sizeof(TCHAR)*lutf8);
int l = MultiByteToWideChar(CP_UTF8, 0, str, lutf8, buffer, lutf8);
@@ -231,22 +363,44 @@ inline void assign_utf8(XS_String& s, const char* str)
s.assign(buffer, l);
}
-inline std::string get_utf8(LPCTSTR s, int l)
+ // from UTF-8 to XS internal string encoding
+inline void assign_utf8(XS_String& s, const char* str)
+{
+ assign_utf8(s, str, strlen(str));
+}
+
+ // from XS internal string encoding to UTF-8
+inline std::string get_utf8(LPCTSTR s, size_t l)
{
#ifdef UNICODE
- int bl=2*l; LPSTR buffer = (LPSTR)alloca(bl);
- l = WideCharToMultiByte(CP_UTF8, 0, s, l, buffer, bl, 0, 0);
+ size_t bl=2*l; LPSTR buffer = (LPSTR)alloca(bl);
+ l = WideCharToMultiByte(CP_UTF8, 0, s, (int)l, buffer, (int)bl, 0, 0);
#else
LPWSTR wbuffer = (LPWSTR)alloca(sizeof(WCHAR)*l);
- l = MultiByteToWideChar(CP_ACP, 0, s, l, wbuffer, l);
+ l = MultiByteToWideChar(CP_ACP, 0, s, (int)l, wbuffer, (int)l);
- int bl=2*l; LPSTR buffer = (LPSTR)alloca(bl);
- l = WideCharToMultiByte(CP_UTF8, 0, wbuffer, l, buffer, bl, 0, 0);
+ size_t bl=2*l; LPSTR buffer = (LPSTR)alloca(bl);
+ l = WideCharToMultiByte(CP_UTF8, 0, wbuffer, (int)l, buffer, (int)bl, 0, 0);
#endif
return std::string(buffer, l);
}
+#ifdef UNICODE
+ // from XS internal string encoding to UTF-8
+inline std::string get_utf8(const char* s, size_t l)
+{
+ LPWSTR wbuffer = (LPWSTR)alloca(sizeof(WCHAR)*l);
+ l = MultiByteToWideChar(CP_ACP, 0, s, (int)l, wbuffer, (int)l);
+
+ size_t bl=2*l; LPSTR buffer = (LPSTR)alloca(bl);
+ l = WideCharToMultiByte(CP_UTF8, 0, wbuffer, (int)l, buffer, (int)bl, 0, 0);
+
+ return std::string(buffer, l);
+}
+#endif
+
+ // from XS internal string encoding to UTF-8
inline std::string get_utf8(const XS_String& s)
{
return get_utf8(s.c_str(), s.length());
@@ -265,23 +419,19 @@ typedef __gnu_cxx::stdio_filebuf STDIO_FILEBUF;
typedef std::filebuf STDIO_FILEBUF;
#endif
- /// input file stream with ANSI/UNICODE file names
-struct tifstream : public std::istream
+struct FileHolder
{
- typedef std::istream super;
-
- tifstream(LPCTSTR path)
- : super(&_buf),
- _pfile(_tfopen(path, TEXT("r"))),
-#ifdef __GNUC__
- _buf(_pfile, ios::in)
-#else
- _buf(_pfile)
-#endif
+ FileHolder(LPCTSTR path, LPCTSTR mode)
{
+#ifdef __STDC_WANT_SECURE_LIB__ // secure CRT functions using VS 2005
+ if (_tfopen_s(&_pfile, path, mode) != 0)
+ _pfile = NULL;
+#else
+ _pfile = _tfopen(path, mode);
+#endif
}
- ~tifstream()
+ ~FileHolder()
{
if (_pfile)
fclose(_pfile);
@@ -289,19 +439,38 @@ struct tifstream : public std::istream
protected:
FILE* _pfile;
+};
+
+ /// input file stream with ANSI/UNICODE file names
+struct tifstream : public std::istream, FileHolder
+{
+ typedef std::istream super;
+
+ tifstream(LPCTSTR path)
+ : super(&_buf),
+ FileHolder(path, TEXT("rb")), // binary mode is important for XMLReader::read_buffer() with MinGW libraries
+#ifdef __GNUC__
+ _buf(_pfile, std::ios::in)
+#else
+ _buf(_pfile)
+#endif
+ {
+ }
+
+protected:
STDIO_FILEBUF _buf;
};
/// output file stream with ANSI/UNICODE file names
-struct tofstream : public std::ostream
+struct tofstream : public std::ostream, FileHolder
{
typedef std::ostream super;
tofstream(LPCTSTR path)
: super(&_buf),
- _pfile(_tfopen(path, TEXT("w"))),
+ FileHolder(path, TEXT("wb")),
#ifdef __GNUC__
- _buf(_pfile, ios::out)
+ _buf(_pfile, std::ios::out)
#else
_buf(_pfile)
#endif
@@ -311,13 +480,9 @@ struct tofstream : public std::ostream
~tofstream()
{
flush();
-
- if (_pfile)
- fclose(_pfile);
}
protected:
- FILE* _pfile;
STDIO_FILEBUF _buf;
};
@@ -326,16 +491,17 @@ protected:
#define XML_INDENT_SPACE " "
-#ifdef XML_UNICODE // Are XML_Char strings UTF-16 encoded?
+#if defined(XS_USE_XERCES) || defined(XS_USE_EXPAT)
+#if defined(XML_UNICODE)/*Expat*/ || defined(XS_USE_XERCES)/*Xerces*/ // Are Expat/Xerces XML strings UTF-16 encoded?
typedef XS_String String_from_XML_Char;
#elif defined(XS_STRING_UTF8)
-
typedef XS_String String_from_XML_Char;
#else
+ /// converter from Expat/Xerces strings to XMLStorage internal strings
struct String_from_XML_Char : public XS_String
{
String_from_XML_Char(const XML_Char* str)
@@ -346,6 +512,8 @@ struct String_from_XML_Char : public XS_String
#endif
+#endif // defined(XS_USE_XERCES) || defined(XS_USE_EXPAT)
+
#if defined(UNICODE) && !defined(XS_STRING_UTF8)
@@ -365,6 +533,152 @@ inline bool operator==(const XS_String& s1, const char* s2)
#endif
+ /// XML Error with message and location
+struct XMLError
+{
+ XMLError()
+ : _line(0),
+ _column(0),
+ _error_code(0)
+ {
+ }
+
+ std::string str() const;
+ friend std::ostream& operator<<(std::ostream&, const XMLError& err);
+
+ XS_String _message;
+ XS_String _systemId;
+ int _line;
+ int _column;
+ int _error_code;
+};
+
+struct XMLErrorList : public std::list
+{
+ XS_String str() const;
+};
+
+
+#ifdef XMLNODE_LOCATION
+ /// location of XML Node including XML file name
+struct XMLLocation
+{
+ XMLLocation()
+ : _pdisplay_path(NULL),
+ _line(0),
+ _column(0)
+ {
+ }
+
+ XMLLocation(const char* display_path, int line, int column)
+ : _pdisplay_path(display_path),
+ _line(line),
+ _column(column)
+ {
+ }
+
+ std::string str() const;
+
+protected:
+ const char* _pdisplay_path; // character pointer for fast reference
+ int _line;
+ int _column;
+};
+#endif
+
+
+enum PRETTY_FLAGS {
+ PRETTY_PLAIN = 0,
+ PRETTY_LINEFEED = 1,
+ PRETTY_INDENT = 2
+};
+
+
+struct StyleSheet
+{
+ std::string _href; // CDATA #REQUIRED
+ std::string _type; // CDATA #REQUIRED
+ std::string _title; // CDATA #IMPLIED
+ std::string _media; // CDATA #IMPLIED
+ std::string _charset; // CDATA #IMPLIED
+ bool _alternate; // (yes|no) "no"
+
+ StyleSheet() : _alternate(false) {}
+
+ StyleSheet(const std::string& href, const std::string& type="text/xsl", bool alternate=false)
+ : _href(href),
+ _type(type),
+ _alternate(alternate)
+ {
+ }
+
+ bool empty() const {return _href.empty();}
+ void print(std::ostream& out) const;
+};
+
+struct StyleSheetList : public std::list
+{
+ void set(const StyleSheet& stylesheet)
+ {
+ clear();
+ push_back(stylesheet);
+ }
+};
+
+
+struct DocType
+{
+ std::string _name;
+
+ // External Document Types are noted, but not parsed.
+ std::string _public;
+ std::string _system;
+
+ // Internal DTDs are not supported.
+
+ void parse(const char* str);
+ bool empty() const {return _name.empty();}
+};
+
+ /// Management of XML file headers and formating
+struct XMLFormat
+{
+ XMLFormat(PRETTY_FLAGS pretty=PRETTY_INDENT, const std::string& xml_version="1.0", const std::string& encoding="utf-8", const DocType& doctype=DocType())
+ : _pretty(pretty),
+ _endl("\n"),
+ _version(xml_version),
+ _encoding(encoding),
+ _doctype(doctype),
+ _standalone(-1)
+ {
+ }
+
+ void print_header(std::ostream& out, bool lf=true) const;
+
+ PRETTY_FLAGS _pretty;
+ const char* _endl; // line ending string: "\n" or "\r\n"
+
+ std::string _version;
+ std::string _encoding;
+
+ DocType _doctype;
+
+ StyleSheetList _stylesheets;
+
+// std::string _additional;
+
+ int _standalone;
+};
+
+
+enum WRITE_MODE {
+ FORMAT_PLAIN, /// write XML without any white space
+ FORMAT_SMART, /// preserve original white space and comments if present; pretty print otherwise
+ FORMAT_ORIGINAL, /// write XML stream preserving original white space and comments
+ FORMAT_PRETTY /// pretty print node to stream without preserving original white space
+};
+
+
/// in memory representation of an XML node
struct XMLNode : public XS_String
{
@@ -392,11 +706,33 @@ struct XMLNode : public XS_String
{
return super::find(x);
}
+
+ XS_String get(const char* x, LPXSSTR def=XS_EMPTY_STR) const
+ {
+ const_iterator found = find(x);
+
+ if (found != end())
+ return found->second;
+ else
+ return def;
+ }
};
#else
- typedef std::map AttributeMap;
+ struct AttributeMap : public std::map
+ {
+ XS_String get(const char* x, LPXSSTR def=XS_EMPTY_STR) const
+ {
+ const_iterator found = find(x);
+
+ if (found != end())
+ return found->second;
+ else
+ return def;
+ }
+ };
#endif
+ /// internal children node list
struct Children : public std::list
{
void assign(const Children& other)
@@ -436,17 +772,21 @@ struct XMLNode : public XS_String
}
XMLNode(const XMLNode& other)
- : _attributes(other._attributes),
+ : XS_String(other),
+ _attributes(other._attributes),
_leading(other._leading),
_content(other._content),
_end_leading(other._end_leading),
_trailing(other._trailing)
+#ifdef XMLNODE_LOCATION
+ , _location(other._location)
+#endif
{
for(Children::const_iterator it=other._children.begin(); it!=other._children.end(); ++it)
_children.push_back(new XMLNode(**it));
}
- ~XMLNode()
+ virtual ~XMLNode()
{
while(!_children.empty()) {
delete _children.back();
@@ -500,14 +840,14 @@ struct XMLNode : public XS_String
}
/// read only access to an attribute
- template XS_String get(const T& attr_name) const
+ template XS_String get(const T& attr_name, LPXSSTR def=XS_EMPTY_STR) const
{
AttributeMap::const_iterator found = _attributes.find(attr_name);
if (found != _attributes.end())
return found->second;
else
- return XS_String();
+ return def;
}
/// convenient value access in children node
@@ -570,13 +910,23 @@ struct XMLNode : public XS_String
return _children;
}
+ const AttributeMap& get_attributes() const
+ {
+ return _attributes;
+ }
+
+ AttributeMap& get_attributes()
+ {
+ return _attributes;
+ }
+
XS_String get_content() const
{
#ifdef XS_STRING_UTF8
const XS_String& ret = _content;
#else
XS_String ret;
- assign_utf8(ret, _content.c_str());
+ assign_utf8(ret, _content.c_str(), _content.length());
#endif
return DecodeXMLString(ret.c_str());
@@ -587,18 +937,20 @@ struct XMLNode : public XS_String
_content.assign(EncodeXMLString(s.c_str()));
}
- enum WRITE_MODE {
- FORMAT_SMART = 0, /// preserve original white space and comments if present; pretty print otherwise
- FORMAT_ORIGINAL = 1, /// write XML stream preserving original white space and comments
- FORMAT_PRETTY = 2 /// pretty print node to stream without preserving original white space
- };
+#ifdef XMLNODE_LOCATION
+ const XMLLocation& get_location() const {return _location;}
+#endif
/// write node with children tree to output stream
- std::ostream& write(std::ostream& out, WRITE_MODE mode=FORMAT_SMART, int indent=0) const
+ std::ostream& write(std::ostream& out, const XMLFormat& format, WRITE_MODE mode=FORMAT_SMART, int indent=0) const
{
switch(mode) {
+ case FORMAT_PLAIN:
+ plain_write_worker(out);
+ break;
+
case FORMAT_PRETTY:
- pretty_write_worker(out, indent);
+ pretty_write_worker(out, format, indent);
break;
case FORMAT_ORIGINAL:
@@ -606,7 +958,7 @@ struct XMLNode : public XS_String
break;
default: // FORMAT_SMART
- smart_write_worker(out, indent);
+ smart_write_worker(out, format, indent);
}
return out;
@@ -616,10 +968,14 @@ protected:
Children _children;
AttributeMap _attributes;
- std::string _leading;
- std::string _content;
- std::string _end_leading;
- std::string _trailing;
+ std::string _leading; // UTF-8 encoded
+ std::string _content; // UTF-8 and entity encoded, may contain CDATA sections; decode with DecodeXMLString()
+ std::string _end_leading; // UTF-8 encoded
+ std::string _trailing; // UTF-8 encoded
+
+#ifdef XMLNODE_LOCATION
+ XMLLocation _location;
+#endif
XMLNode* get_first_child() const
{
@@ -678,18 +1034,20 @@ protected:
}
#endif
- /// XPath find functions
+ /// XPath find function (const)
const XMLNode* find_relative(const char* path) const;
+ /// XPath find function
XMLNode* find_relative(const char* path)
{return const_cast(const_cast(this)->find_relative(path));}
/// relative XPath create function
XMLNode* create_relative(const char* path);
- void write_worker(std::ostream& out, int indent) const;
- void pretty_write_worker(std::ostream& out, int indent) const;
- void smart_write_worker(std::ostream& out, int indent) const;
+ void write_worker(std::ostream& out, int indent) const;
+ void plain_write_worker(std::ostream& out) const;
+ void pretty_write_worker(std::ostream& out, const XMLFormat& format, int indent) const;
+ void smart_write_worker(std::ostream& out, const XMLFormat& format, int indent) const;
};
@@ -708,6 +1066,7 @@ struct XMLChildrenFilter
{
}
+ /// internal iterator class
struct iterator
{
typedef XMLNode::Children::iterator BaseIterator;
@@ -806,6 +1165,7 @@ struct const_XMLChildrenFilter
{
}
+ /// internal iterator class
struct const_iterator
{
typedef XMLNode::Children::const_iterator BaseIterator;
@@ -954,6 +1314,7 @@ struct XMLPos
return _cur->get(attr_name);
}
+ /// attribute setting
void put(const XS_String& attr_name, const XS_String& value)
{
_cur->put(attr_name, value);
@@ -1218,18 +1579,7 @@ protected:
};
- // work around GCC's wide string constant bug
-#ifdef __GNUC__
-extern const LPCXSSTR XS_TRUE;
-extern const LPCXSSTR XS_FALSE;
-extern const LPCXSSTR XS_NUMBERFMT;
-#else
-#define XS_TRUE XS_TEXT("true")
-#define XS_FALSE XS_TEXT("false")
-#define XS_NUMBERFMT XS_TEXT("%d")
-#endif
-
-
+ /// type converter for boolean data
struct XMLBool
{
XMLBool(bool value=false)
@@ -1277,6 +1627,7 @@ private:
void operator=(const XMLBool&); // disallow assignment operations
};
+ /// type converter for boolean data with write access
struct XMLBoolRef
{
XMLBoolRef(XMLNode* node, const XS_String& attr_name, bool def=false)
@@ -1318,6 +1669,7 @@ protected:
};
+ /// type converter for integer data
struct XMLInt
{
XMLInt(int value)
@@ -1351,7 +1703,7 @@ struct XMLInt
operator XS_String() const
{
XS_CHAR buffer[32];
- XS_sprintf(buffer, XS_NUMBERFMT, _value);
+ XS_snprintf(buffer, COUNTOF(buffer), XS_INTFMT, _value);
return buffer;
}
@@ -1362,6 +1714,7 @@ private:
void operator=(const XMLInt&); // disallow assignment operations
};
+ /// type converter for integer data with write access
struct XMLIntRef
{
XMLIntRef(XMLNode* node, const XS_String& attr_name, int def=0)
@@ -1386,7 +1739,7 @@ struct XMLIntRef
void assign(int value)
{
XS_CHAR buffer[32];
- XS_sprintf(buffer, XS_NUMBERFMT, value);
+ XS_snprintf(buffer, COUNTOF(buffer), XS_INTFMT, value);
_ref.assign(buffer);
}
@@ -1395,6 +1748,90 @@ protected:
};
+ /// type converter for numeric data
+struct XMLDouble
+{
+ XMLDouble(double value)
+ : _value(value)
+ {
+ }
+
+ XMLDouble(LPCXSSTR value, double def=0.)
+ {
+ LPTSTR end;
+
+ if (value && *value)
+ _value = XS_tod(value, &end);
+ else
+ _value = def;
+ }
+
+ XMLDouble(const XMLNode* node, const XS_String& attr_name, double def=0.)
+ {
+ LPTSTR end;
+ const XS_String& value = node->get(attr_name);
+
+ if (!value.empty())
+ _value = XS_tod(value.c_str(), &end);
+ else
+ _value = def;
+ }
+
+ operator double() const
+ {
+ return _value;
+ }
+
+ operator XS_String() const
+ {
+ XS_CHAR buffer[32];
+ XS_snprintf(buffer, COUNTOF(buffer), XS_FLOATFMT, _value);
+ return buffer;
+ }
+
+protected:
+ double _value;
+
+private:
+ void operator=(const XMLDouble&); // disallow assignment operations
+};
+
+ /// type converter for numeric data with write access
+struct XMLDoubleRef
+{
+ XMLDoubleRef(XMLNode* node, const XS_String& attr_name, double def=0.)
+ : _ref((*node)[attr_name])
+ {
+ if (_ref.empty())
+ assign(def);
+ }
+
+ XMLDoubleRef& operator=(double value)
+ {
+ assign(value);
+
+ return *this;
+ }
+
+ operator double() const
+ {
+ LPTSTR end;
+ return XS_tod(_ref.c_str(), &end);
+ }
+
+ void assign(double value)
+ {
+ XS_CHAR buffer[32];
+ XS_snprintf(buffer, COUNTOF(buffer), XS_FLOATFMT, value);
+ _ref.assign(buffer);
+ }
+
+protected:
+ XS_String& _ref;
+};
+
+
+ /// type converter for string data
struct XMLString
{
XMLString(const XS_String& value)
@@ -1402,7 +1839,7 @@ struct XMLString
{
}
- XMLString(LPCXSSTR value, LPCXSSTR def=XS_TEXT(""))
+ XMLString(LPCXSSTR value, LPCXSSTR def=XS_EMPTY)
{
if (value && *value)
_value = value;
@@ -1410,7 +1847,7 @@ struct XMLString
_value = def;
}
- XMLString(const XMLNode* node, const XS_String& attr_name, LPCXSSTR def=XS_TEXT(""))
+ XMLString(const XMLNode* node, const XS_String& attr_name, LPCXSSTR def=XS_EMPTY)
{
const XS_String& value = node->get(attr_name);
@@ -1437,16 +1874,17 @@ private:
void operator=(const XMLString&); // disallow assignment operations
};
+ /// type converter for string data with write access
struct XMStringRef
{
- XMStringRef(XMLNode* node, const XS_String& attr_name, LPCXSSTR def=XS_TEXT(""))
+ XMStringRef(XMLNode* node, const XS_String& attr_name, LPCXSSTR def=XS_EMPTY)
: _ref((*node)[attr_name])
{
if (_ref.empty())
assign(def);
}
- XMStringRef(XMLNode* node, const XS_String& node_name, const XS_String& attr_name, LPCXSSTR def=XS_TEXT(""))
+ XMStringRef(XMLNode* node, const XS_String& node_name, const XS_String& attr_name, LPCXSSTR def=XS_EMPTY)
: _ref(node->subvalue(node_name, attr_name))
{
if (_ref.empty())
@@ -1500,65 +1938,151 @@ template<>
/// XML reader base class
struct XMLReaderBase
+#ifdef XS_USE_XERCES
+ : public HandlerBase
+#endif
{
- XMLReaderBase(XMLNode* node)
- : _pos(node),
- _parser(XML_ParserCreate(NULL))
- {
- XML_SetUserData(_parser, this);
- XML_SetXmlDeclHandler(_parser, XML_XmlDeclHandler);
- XML_SetElementHandler(_parser, XML_StartElementHandler, XML_EndElementHandler);
- XML_SetDefaultHandler(_parser, XML_DefaultHandler);
+#ifdef XS_USE_XERCES
- _last_tag = TAG_NONE;
- }
+ XMLReaderBase(XMLNode* node, InputSource* source, bool adoptSource=false);
+ virtual ~XMLReaderBase();
- virtual ~XMLReaderBase()
- {
- XML_ParserFree(_parser);
- }
-
- XML_Status read();
-
- virtual int read_buffer(char* buffer, int len) = 0;
-
- std::string get_position() const
- {
- int line = XML_GetCurrentLineNumber(_parser);
- int column = XML_GetCurrentColumnNumber(_parser);
-
- std::ostringstream out;
- out << "(" << line << ") : [column " << column << "]";
-
- return out.str();
- }
-
- std::string get_instructions() const {return _instructions;}
-
- XML_Error get_error_code() {return XML_GetErrorCode(_parser);}
- std::string get_error_string() const;
+ void read();
+
+protected:
+ SAXParser* _parser;
+ InputSource* _source;
+ bool _deleteSource;
+
+ virtual void XMLDecl(const XMLCh* const versionStr, const XMLCh* const encodingStr,
+ const XMLCh* const standaloneStr, const XMLCh* const actualEncodingStr);
+
+ // Handlers for the SAX DocumentHandler interface
+ virtual void setDocumentLocator(const Locator* const locator);
+ virtual void startElement(const XMLCh* const name, AttributeList& attributes);
+ virtual void endElement(const XMLCh* const name);
+ virtual void characters(const XMLCh* const chars, const unsigned int length);
+ virtual void ignorableWhitespace(const XMLCh* const chars, const unsigned int length);
+
+ // Handlers for the SAX ErrorHandler interface
+ virtual void error(const SAXParseException& e);
+ virtual void fatalError(const SAXParseException& e);
+ virtual void warning(const SAXParseException& e);
+ virtual void resetErrors();
+
+#elif defined(XS_USE_EXPAT) // !XS_USE_XERCES
+
+ XMLReaderBase(XMLNode* node);
+ virtual ~XMLReaderBase();
protected:
- XMLPos _pos;
XML_Parser _parser;
- std::string _xml_version;
- std::string _encoding;
- std::string _instructions;
- std::string _content;
- enum {TAG_NONE, TAG_START, TAG_END} _last_tag;
-
- static void XMLCALL XML_XmlDeclHandler(void* userData, const XML_Char* version, const XML_Char* encoding, int standalone);
+ static void XMLCALL XML_XmlDeclHandler(void* userData, const XML_Char* version, const XML_Char* encoding, int standalone=-1);
static void XMLCALL XML_StartElementHandler(void* userData, const XML_Char* name, const XML_Char** atts);
static void XMLCALL XML_EndElementHandler(void* userData, const XML_Char* name);
static void XMLCALL XML_DefaultHandler(void* userData, const XML_Char* s, int len);
+
+ static std::string get_expat_error_string(XML_Error error_code);
+
+#else // XS_USE_EXPAT
+
+ XMLReaderBase(XMLNode* node)
+ : _pos(node),
+ _endl_defined(false),
+ _utf8(false)
+ {
+ _last_tag = TAG_NONE;
+ }
+
+ virtual ~XMLReaderBase();
+
+ bool parse();
+
+#endif
+
+public:
+#ifndef XS_USE_XERCES
+ void read();
+
+ std::string get_position() const;
+#endif
+ const XMLFormat& get_format() const {return _format;}
+ const char* get_endl() const {return _endl_defined? _format._endl: "\n";}
+
+ const XMLErrorList& get_errors() const {return _errors;}
+ const XMLErrorList& get_warnings() const {return _warnings;}
+
+ void clear_errors() {_errors.clear(); _warnings.clear();}
+
+#ifdef XMLNODE_LOCATION
+ const char* _display_path; // character pointer for fast reference in XMLLocation
+
+#ifdef XS_USE_XERCES
+ const Locator* _locator;
+#endif
+
+ XMLLocation get_location() const;
+#endif
+
+protected:
+ XMLPos _pos;
+
+ std::string _content; // UTF-8 encoded
+ enum {TAG_NONE, TAG_START, TAG_END} _last_tag;
+
+ XMLErrorList _errors;
+ XMLErrorList _warnings;
+
+ XMLFormat _format;
+ bool _endl_defined;
+
+#ifdef XS_USE_XERCES
+ //@@
+#elif defined(XS_USE_EXPAT)
+ virtual int read_buffer(char* buffer, int len) = 0;
+#else
+ virtual int get() = 0;
+ int eat_endl();
+
+ bool _utf8;
+#endif
+
+ void finish_read();
+
+ virtual void XmlDeclHandler(const char* version, const char* encoding, int standalone);
+ virtual void StartElementHandler(const XS_String& name, const XMLNode::AttributeMap& attributes);
+ virtual void EndElementHandler();
+#if defined(XS_USE_XERCES) || defined(XS_USE_EXPAT)
+ virtual void DefaultHandler(const XML_Char* s, int len);
+#else
+ virtual void DefaultHandler(const std::string& s);
+#endif
};
/// XML file reader
-struct XMLReader : public XMLReaderBase
+
+#ifdef XS_USE_XERCES
+
+struct XercesXMLReader : public XMLReaderBase
{
- XMLReader(XMLNode* node, std::istream& in)
+ XercesXMLReader(XMLNode* node, InputSource* source, bool adoptSource=false)
+ : XMLReaderBase(node, source, adoptSource)
+ {
+ }
+
+ XercesXMLReader(XMLNode* node, LPCTSTR path);
+ XercesXMLReader(XMLNode* node, const XMLByte* buffer, size_t bytes, const std::string& system_id=std::string());
+};
+
+#define XMLReader XercesXMLReader
+
+#elif defined(XS_USE_EXPAT)
+
+struct ExpatXMLReader : public XMLReaderBase
+{
+ ExpatXMLReader(XMLNode* node, std::istream& in)
: XMLReaderBase(node),
_in(in)
{
@@ -1579,112 +2103,122 @@ protected:
std::istream& _in;
};
+#define XMLReader ExpatXMLReader
-struct XMLHeader
+#else // XS_USE_XERCES, XS_USE_EXPAT
+
+struct XMLReader : public XMLReaderBase
{
- XMLHeader(const std::string& xml_version="1.0", const std::string& encoding="UTF-8", const std::string& doctype="")
- : _version(xml_version),
- _encoding(encoding),
- _doctype(doctype)
+ XMLReader(XMLNode* node, std::istream& in)
+ : XMLReaderBase(node),
+ _in(in)
{
}
- void print(std::ostream& out) const
+ /// read one character from XML stream
+ int get()
{
- out << "\n";
-
- if (!_doctype.empty())
- out << _doctype << '\n';
- if (!_additional.empty())
- out << _additional << '\n';
+ return _in.get();
}
- std::string _version;
- std::string _encoding;
- std::string _doctype;
- std::string _additional;
+protected:
+ std::istream& _in;
};
+#endif // XS_USE_XERCES
+
+ /// XML document holder
struct XMLDoc : public XMLNode
{
XMLDoc()
- : XMLNode(""),
- _last_error(XML_ERROR_NONE)
+ : XMLNode("")
{
}
XMLDoc(LPCTSTR path)
- : XMLNode(""),
- _last_error(XML_ERROR_NONE)
+ : XMLNode("")
{
read(path);
}
- std::istream& read(std::istream& in)
+#ifdef XS_USE_XERCES
+ bool read(LPCTSTR path)
{
- XMLReader reader(this, in);
+ XMLReader reader(this, path);
- read(reader);
-
- return in;
+#if defined(_STRING_DEFINED) && !defined(XS_STRING_UTF8)
+ return read(reader, std::string(ANS(path)));
+#else
+ return read(reader, XS_String(path));
+#endif
}
+ bool read(const char* buffer, size_t len, const std::string& system_id=std::string())
+ {
+ XMLReader reader(this, (const XMLByte*)buffer, len, system_id);
+
+ return read(reader, system_id);
+ }
+
+#else // XS_USE_XERCES
+
bool read(LPCTSTR path)
{
tifstream in(path);
XMLReader reader(this, in);
-//#if defined(_STRING_DEFINED) && !defined(XS_STRING_UTF8)
-// return read(reader, std::string(ANS(path)));
-//#else
+#if defined(_STRING_DEFINED) && !defined(XS_STRING_UTF8)
+ return read(reader, std::string(ANS(path)));
+#else
return read(reader, XS_String(path));
-//#endif
+#endif
}
- bool read(XMLReaderBase& reader)
+ bool read(const char* buffer, size_t len, const std::string& system_id=std::string())
{
- XML_Status status = reader.read();
+ std::istringstream in(std::string(buffer, len));
- _header._additional = reader.get_instructions();
-
- if (status == XML_STATUS_ERROR) {
- std::ostringstream out;
-
- out << "input stream" << reader.get_position() << " " << reader.get_error_string();
-
- _last_error = reader.get_error_code();
- _last_error_msg = out.str();
- }
-
- return status != XML_STATUS_ERROR;
+ return read(in, system_id);
}
+ bool read(std::istream& in, const std::string& system_id=std::string())
+ {
+ XMLReader reader(this, in);
+
+ return read(reader, system_id);
+ }
+#endif // XS_USE_XERCES
+
bool read(XMLReaderBase& reader, const std::string& display_path)
{
- XML_Status status = reader.read();
+#ifdef XMLNODE_LOCATION
+ // make a string copy to handle temporary string objects
+ _display_path = display_path;
+ reader._display_path = _display_path.c_str();
+#endif
- _header._additional = reader.get_instructions();
+ reader.clear_errors();
+ reader.read();
- if (status == XML_STATUS_ERROR) {
- std::ostringstream out;
+ _format = reader.get_format();
+ _format._endl = reader.get_endl();
- out << display_path << reader.get_position() << " " << reader.get_error_string();
-
- _last_error = reader.get_error_code();
- _last_error_msg = out.str();
+ if (!reader.get_errors().empty()) {
+ _errors = reader.get_errors();
+ return false;
}
- return status != XML_STATUS_ERROR;
+ return true;
}
/// write XML stream preserving previous white space and comments
std::ostream& write(std::ostream& out, WRITE_MODE mode=FORMAT_SMART) const
{
- _header.print(out);
+ _format.print_header(out, mode!=FORMAT_PLAIN);
if (!_children.empty())
- _children.front()->write(out);
+ _children.front()->write(out, _format, mode);
return out;
}
@@ -1695,26 +2229,30 @@ struct XMLDoc : public XMLNode
return write(out, FORMAT_PRETTY);
}
- void write(LPCTSTR path, WRITE_MODE mode=FORMAT_SMART) const
+ bool write(LPCTSTR path, WRITE_MODE mode=FORMAT_SMART) const
{
tofstream out(path);
- write(out, mode);
+ return write(out, mode).good();
}
- void write_formating(LPCTSTR path) const
+ bool write_formating(LPCTSTR path) const
{
tofstream out(path);
- write_formating(out);
+ return write_formating(out).good();
}
- XMLHeader _header;
- XML_Error _last_error;
- std::string _last_error_msg;
+ XMLFormat _format;
+ XMLErrorList _errors;
+
+#ifdef XMLNODE_LOCATION
+ std::string _display_path;
+#endif
};
+ /// XML message wrapper
struct XMLMessage : public XMLDoc
{
XMLMessage(const char* name)
@@ -1723,7 +2261,212 @@ struct XMLMessage : public XMLDoc
_pos.create(name);
}
+ std::string toString() const
+ {
+ std::ostringstream out;
+
+ write(out);
+
+ return out.str();
+ }
+
XMLPos _pos;
+
+protected:
+ XMLMessage()
+ : _pos(this)
+ {
+ }
+};
+
+
+struct XMLMessageFromString : public XMLMessage
+{
+ XMLMessageFromString(const std::string& xml_str, const std::string& system_id=std::string())
+ {
+ read(xml_str.c_str(), xml_str.length(), system_id);
+ }
+};
+
+
+ /// Reader for XML Messages
+struct XMLMessageReader : public XMLPos
+{
+ XMLMessageReader(const std::string& xml_str, const std::string& system_id=std::string())
+ : XMLPos(&_msg)
+ {
+ _msg.read(xml_str.c_str(), xml_str.length(), system_id);
+ }
+
+ const XMLDoc& get_document()
+ {
+ return _msg;
+ }
+
+protected:
+ XMLDoc _msg;
+};
+
+
+struct XMLWriter
+{
+ XMLWriter(std::ostream& out, const XMLFormat& format=XMLFormat())
+ : _pofstream(NULL),
+ _out(out),
+ _format(format)
+ {
+ format.print_header(_out, false); // _format._endl is printed in write_pre()
+ }
+
+ XMLWriter(LPCTSTR path, const XMLFormat& format=XMLFormat())
+ : _pofstream(new tofstream(path)),
+ _out(*_pofstream),
+ _format(format)
+ {
+ format.print_header(_out, false); // _format._endl is printed in write_pre()
+ }
+
+ ~XMLWriter()
+ {
+ _out << _format._endl;
+ delete _pofstream;
+ }
+
+ /// create node and move to it
+ void create(const XS_String& name)
+ {
+ if (!_stack.empty()) {
+ StackEntry& last = _stack.top();
+
+ if (last._state < PRE_CLOSED) {
+ write_attributes(last);
+ close_pre(last);
+ }
+
+ ++last._children;
+ }
+
+ StackEntry entry;
+ entry._node_name = name;
+ _stack.push(entry);
+
+ write_pre(entry);
+ }
+
+ /// go back to previous position
+ bool back()
+ {
+ if (!_stack.empty()) {
+ write_post(_stack.top());
+
+ _stack.pop();
+ return true;
+ } else
+ return false;
+ }
+
+ /// attribute setting
+ void put(const XS_String& attr_name, const XS_String& value)
+ {
+ if (!_stack.empty())
+ _stack.top()._attributes[attr_name] = value;
+ }
+
+ /// C++ write access to an attribute
+ XS_String& operator[](const XS_String& attr_name)
+ {
+ if (_stack.empty())
+ return s_empty_attr;
+
+ return _stack.top()._attributes[attr_name];
+ }
+
+ void set_content(const XS_String& s)
+ {
+ if (!_stack.empty())
+ _stack.top()._content = EncodeXMLString(s.c_str());
+ }
+
+ // public for access in StackEntry
+ enum WRITESTATE {
+ NOTHING, /*PRE,*/ ATTRIBUTES, PRE_CLOSED, /*CONTENT,*/ POST
+ };
+
+protected:
+ tofstream* _pofstream;
+ std::ostream& _out;
+ const XMLFormat&_format;
+
+ typedef XMLNode::AttributeMap AttrMap;
+
+ struct StackEntry {
+ XS_String _node_name;
+ AttrMap _attributes;
+ std::string _content;
+ WRITESTATE _state;
+ bool _children;
+
+ StackEntry() : _state(NOTHING), _children(false) {}
+ };
+
+ std::stack _stack;
+
+ static XS_String s_empty_attr;
+
+ void close_pre(StackEntry& entry)
+ {
+ _out << '>';
+
+ entry._state = PRE_CLOSED;
+ }
+
+ void write_pre(StackEntry& entry)
+ {
+ if (_format._pretty >= PRETTY_LINEFEED)
+ _out << _format._endl;
+
+ if (_format._pretty == PRETTY_INDENT)
+ for(size_t i=_stack.size(); --i>0; )
+ _out << XML_INDENT_SPACE;
+
+ _out << '<' << EncodeXMLString(entry._node_name);
+ //entry._state = PRE;
+ }
+
+ void write_attributes(StackEntry& entry)
+ {
+ for(AttrMap::const_iterator it=entry._attributes.begin(); it!=entry._attributes.end(); ++it)
+ _out << ' ' << EncodeXMLString(it->first) << "=\"" << EncodeXMLString(it->second) << "\"";
+
+ entry._state = ATTRIBUTES;
+ }
+
+ void write_post(StackEntry& entry)
+ {
+ if (entry._state < ATTRIBUTES)
+ write_attributes(entry);
+
+ if (entry._children || !entry._content.empty()) {
+ if (entry._state < PRE_CLOSED)
+ close_pre(entry);
+
+ _out << entry._content;
+ //entry._state = CONTENT;
+
+ if (_format._pretty>=PRETTY_LINEFEED && entry._content.empty())
+ _out << _format._endl;
+
+ if (_format._pretty==PRETTY_INDENT && entry._content.empty())
+ for(size_t i=_stack.size(); --i>0; )
+ _out << XML_INDENT_SPACE;
+
+ _out << "" << EncodeXMLString(entry._node_name) << ">";
+ } else {
+ _out << "/>";
+ }
+
+ entry._state = POST;
+ }
};
diff --git a/reactos/base/applications/ibrowser/utility/xs-native.cpp b/reactos/base/applications/ibrowser/utility/xs-native.cpp
new file mode 100644
index 00000000000..90f5bea5852
--- /dev/null
+++ b/reactos/base/applications/ibrowser/utility/xs-native.cpp
@@ -0,0 +1,438 @@
+
+ //
+ // XML storage classes
+ //
+ // xs-native.cpp
+ //
+ // Copyright (c) 2006 Martin Fuchs
+ //
+
+
+/*
+
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in
+ the documentation and/or other materials provided with the
+ distribution.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ POSSIBILITY OF SUCH DAMAGE.
+
+*/
+
+#ifndef XS_NO_COMMENT
+#define XS_NO_COMMENT // no #pragma comment(lib, ...) statements in .lib files to enable static linking
+#endif
+
+//#include "xmlstorage.h"
+#include
+
+
+#if !defined(XS_USE_EXPAT) && !defined(XS_USE_XERCES)
+
+namespace XMLStorage {
+
+
+XMLReaderBase::~XMLReaderBase()
+{
+}
+
+ /// read XML stream into XML tree below _pos
+void XMLReaderBase::read()
+{
+ if (!parse()) {
+ XMLError error;
+
+ error._message = "XML parsing error";
+ //error._line = ;
+ //error._column = ;
+
+ _errors.push_back(error);
+ }
+
+ finish_read();
+}
+
+
+struct Buffer
+{
+ Buffer()
+ {
+ _buffer = (char*) malloc(BUFFER_LEN);
+ _len = BUFFER_LEN;
+
+ reset();
+ }
+
+ ~Buffer()
+ {
+ free(_buffer);
+ }
+
+ void reset()
+ {
+ _wptr = _buffer;
+ _buffer_str.erase();
+ }
+
+ void append(char c)
+ {
+ size_t wpos = _wptr-_buffer;
+
+ if (wpos >= _len) {
+ _len <<= 1;
+ _buffer = (char*) realloc(_buffer, _len);
+ _wptr = _buffer + wpos;
+ }
+
+ *_wptr++ = c;
+ }
+
+ const std::string& str(bool utf8) // returns UTF-8 encoded buffer content
+ {
+ if (utf8)
+ _buffer_str.assign(_buffer, _wptr-_buffer);
+ else
+ _buffer_str = get_utf8(_buffer, _wptr-_buffer);
+
+ return _buffer_str;
+ }
+
+ size_t len() const
+ {
+ return _wptr - _buffer;
+ }
+
+ bool has_CDEnd() const
+ {
+ //if (_wptr-_buffer < 3)
+ // return false;
+
+ return !strncmp(_wptr-3, "]]>", 3);
+ }
+
+ XS_String get_tag() const
+ {
+ const char* p = _buffer_str.c_str();
+
+ if (*p == '<')
+ ++p;
+
+ if (*p == '/')
+ ++p;
+
+ const char* q = p;
+
+ if (*q == '?')
+ ++q;
+
+ while(isxmlsym(*q))
+ ++q;
+
+#ifdef XS_STRING_UTF8
+ return XS_String(p, q-p);
+#else
+ XS_String tag;
+ assign_utf8(tag, p, q-p);
+ return tag;
+#endif
+ }
+
+ /// read attributes and values
+ void get_attributes(XMLNode::AttributeMap& attributes) const
+ {
+ const char* p = _buffer_str.c_str();
+
+ // find end of tag name
+ if (*p == '<')
+ ++p;
+
+ if (*p == '/')
+ ++p;
+ else if (*p == '?')
+ ++p;
+
+ while(isxmlsym(*p))
+ ++p;
+
+ // read attributes from buffer
+ while(*p && *p!='>' && *p!='/') {
+ while(isspace((unsigned char)*p))
+ ++p;
+
+ const char* attr_name = p;
+
+ while(isxmlsym(*p))
+ ++p;
+
+ if (*p != '=')
+ break; //@TODO error handling
+
+ size_t attr_len = p - attr_name;
+
+ if (*++p!='"' && *p!='\'')
+ break; //@TODO error handling
+
+ char delim = *p;
+ const char* value = ++p;
+
+ while(*p && *p!=delim)
+ ++p;
+
+ size_t value_len = p - value;
+
+ if (*p)
+ ++p; // '"'
+
+#ifdef XS_STRING_UTF8
+ XS_String name_str(attr_name, attr_len);
+ XS_String value_str(value, value_len);
+#else
+ XS_String name_str, value_str;
+ assign_utf8(name_str, attr_name, attr_len);
+ assign_utf8(value_str, value, value_len);
+#endif
+
+ attributes[name_str] = DecodeXMLString(value_str);
+ }
+ }
+
+protected:
+ char* _buffer;
+ char* _wptr;
+ size_t _len;
+ std::string _buffer_str; // UF-8 encoded
+};
+
+bool XMLReaderBase::parse()
+{
+ Buffer buffer;
+ int c = get();
+ bool in_comment = false;
+
+ while(c != EOF) {
+ if (in_comment || c=='<') {
+ buffer.append(c);
+
+ // read start or end tag
+ for(;;) {
+ c = get();
+
+ if (c == EOF)
+ break;
+
+ buffer.append(c);
+
+ if (c == '>')
+ break;
+ }
+
+ const std::string& b = buffer.str(_utf8);
+ const char* str = b.c_str();
+
+ if (in_comment || !strncmp(str+1, "!--", 3)) {
+ // XML comment
+ DefaultHandler(b);
+
+ if (strcmp(str+b.length()-3, "-->"))
+ in_comment = true;
+ else
+ in_comment = false;
+
+ c = get();
+ } else if (str[1] == '/') {
+ // end tag
+
+ /*@TODO error handling
+ const XS_String& tag = buffer.get_tag();
+
+ if (tag != last_opened_tag) {
+ ERROR
+ }
+ */
+
+ EndElementHandler();
+
+ c = get();
+ } else if (str[1] == '?') {
+ // XML declaration
+ const XS_String& tag = buffer.get_tag();
+
+ if (tag == "?xml") {
+ XMLNode::AttributeMap attributes;
+ buffer.get_attributes(attributes);
+
+ const std::string& version = attributes.get("version");
+ const std::string& encoding = attributes.get("encoding");
+
+ int standalone;
+ XMLNode::AttributeMap::const_iterator found = // const_cast for ISO C++ compatibility error of GCC
+ const_cast(attributes).find("standalone");
+ if (found != attributes.end())
+ standalone = !XS_icmp(found->second.c_str(), XS_TEXT("yes"));
+ else
+ standalone = -1;
+
+ XmlDeclHandler(version.empty()?NULL:version.c_str(), encoding.empty()?NULL:encoding.c_str(), standalone);
+
+ if (!encoding.empty() && !_stricmp(encoding.c_str(), "utf-8"))
+ _utf8 = true;
+
+ c = eat_endl();
+ } else if (tag == "?xml-stylesheet") {
+ XMLNode::AttributeMap attributes;
+ buffer.get_attributes(attributes);
+
+ StyleSheet stylesheet(attributes.get("href"), attributes.get("type"), !XS_icmp(attributes.get("alternate"), XS_TEXT("yes")));
+ stylesheet._title = attributes.get("title");
+ stylesheet._media = attributes.get("media");
+ stylesheet._charset = attributes.get("charset");
+
+ _format._stylesheets.push_back(stylesheet);
+
+ c = eat_endl();
+ } else {
+ DefaultHandler(b);
+ c = get();
+ }
+ } else if (str[1] == '!') {
+ if (!strncmp(str+2, "DOCTYPE ", 8)) {
+ _format._doctype.parse(str+10);
+
+ c = eat_endl();
+ } else if (!strncmp(str+2, "[CDATA[", 7)) {
+ // parse strings
+ while(!buffer.has_CDEnd()) {
+ c = get();
+
+ if (c == EOF)
+ break;
+
+ buffer.append(c);
+ }
+
+ DefaultHandler(buffer.str(_utf8));
+
+ c = get();
+ }
+ } else {
+ // start tag
+ const XS_String& tag = buffer.get_tag();
+
+ if (!tag.empty()) {
+ XMLNode::AttributeMap attributes;
+ buffer.get_attributes(attributes);
+
+ StartElementHandler(tag, attributes);
+
+ if (str[b.length()-2] == '/')
+ EndElementHandler();
+ }
+
+ c = get();
+ }
+ } else {
+ buffer.append(c);
+
+ // read white space
+ for(;;) {
+ // check for the encoding of the first line end
+ if (!_endl_defined)
+ if (c == '\n') {
+ _format._endl = "\n";
+ _endl_defined = true;
+ } else if (c == '\r') {
+ _format._endl = "\r\n";
+ _endl_defined = true;
+ }
+
+ c = get();
+
+ if (c == EOF)
+ break;
+
+ if (c == '<')
+ break;
+
+ buffer.append(c);
+ }
+
+ DefaultHandler(buffer.str(_utf8));
+ }
+
+ buffer.reset();
+ }
+
+ return true;
+}
+
+int XMLReaderBase::eat_endl()
+{
+ int c = get();
+
+ if (c == '\r')
+ c = get();
+
+ if (c == '\n')
+ c = get();
+
+ return c;
+}
+
+ /// return current parser position as string
+std::string XMLReaderBase::get_position() const
+{
+/*@TODO display parser position in case of errors
+ int line = XML_GetCurrentLineNumber(_parser);
+ int column = XML_GetCurrentColumnNumber(_parser);
+
+ std::ostringstream out;
+ out << "(" << line << ") : [column " << column << "]";
+
+ return out.str();
+*/
+ return "";
+}
+
+
+#ifdef XMLNODE_LOCATION
+
+XMLLocation XMLReaderBase::get_location() const
+{
+ return XMLLocation(); //@TODO XMLLocation for XS-native
+}
+
+std::string XMLLocation::str() const
+{
+ return ""; //TODO
+}
+
+#endif
+
+
+ /// store content, white space and comments
+void XMLReaderBase::DefaultHandler(const std::string& s)
+{
+ _content.append(s);
+}
+
+
+} // namespace XMLStorage
+
+#endif // !defined(XS_USE_EXPAT) && !defined(XS_USE_XERCES)
diff --git a/reactos/base/applications/imagesoft/floatwindow.c b/reactos/base/applications/imagesoft/floatwindow.c
index 1012d4f367c..cca17faafad 100644
--- a/reactos/base/applications/imagesoft/floatwindow.c
+++ b/reactos/base/applications/imagesoft/floatwindow.c
@@ -49,7 +49,7 @@ ShowHideWindow(PFLT_WND FltInfo)
}
-VOID
+BOOL
FloatToolbarCreateToolsGui(PMAIN_WND_INFO Info)
{
HWND hTb;
@@ -67,39 +67,45 @@ FloatToolbarCreateToolsGui(PMAIN_WND_INFO Info)
NULL,
hInstance,
NULL);
+ if (hTb != NULL)
+ {
+ SendMessage(hTb,
+ TB_SETEXTENDEDSTYLE,
+ 0,
+ TBSTYLE_EX_HIDECLIPPEDBUTTONS);
- SendMessage(hTb,
- TB_SETEXTENDEDSTYLE,
- 0,
- TBSTYLE_EX_HIDECLIPPEDBUTTONS);
+ SendMessage(hTb,
+ TB_BUTTONSTRUCTSIZE,
+ sizeof(ToolsButtons[0]),
+ 0);
- SendMessage(hTb,
- TB_BUTTONSTRUCTSIZE,
- sizeof(ToolsButtons[0]),
- 0);
+ SendMessage(hTb,
+ TB_SETBITMAPSIZE,
+ 0,
+ (LPARAM)MAKELONG(16, 16));
- SendMessage(hTb,
- TB_SETBITMAPSIZE,
- 0,
- (LPARAM)MAKELONG(16, 16));
+ hImageList = InitImageList(NumButtons,
+ IDB_TOOLSRECTSEL);
- hImageList = InitImageList(NumButtons,
- IDB_TOOLSRECTSEL);
+ ImageList_Destroy((HIMAGELIST)SendMessage(hTb,
+ TB_SETIMAGELIST,
+ 0,
+ (LPARAM)hImageList));
- ImageList_Destroy((HIMAGELIST)SendMessage(hTb,
- TB_SETIMAGELIST,
- 0,
- (LPARAM)hImageList));
+ SendMessage(hTb,
+ TB_ADDBUTTONS,
+ NumButtons,
+ (LPARAM)ToolsButtons);
- SendMessage(hTb,
- TB_ADDBUTTONS,
- NumButtons,
- (LPARAM)ToolsButtons);
+ SendMessage(hTb,
+ TB_AUTOSIZE,
+ 0,
+ 0);
- SendMessage(hTb,
- TB_AUTOSIZE,
- 0,
- 0);
+ return TRUE;
+ }
+
+ return FALSE;
}
@@ -158,7 +164,7 @@ FloatWindowPaintHueSlider(HWND hHueSlider)
}
-VOID
+BOOL
FloatToolbarCreateColorsGui(PMAIN_WND_INFO Info)
{
HWND hColorPicker;
@@ -183,6 +189,8 @@ FloatToolbarCreateColorsGui(PMAIN_WND_INFO Info)
NULL,
hInstance,
NULL);
+ if (hColorPicker == NULL)
+ return FALSE;
hHueSlider = CreateWindowEx(0,
WC_STATIC,
@@ -196,6 +204,8 @@ FloatToolbarCreateColorsGui(PMAIN_WND_INFO Info)
NULL,
hInstance,
NULL);
+ if (hHueSlider == NULL)
+ return FALSE;
hMouseButton = CreateWindowEx(0,
WC_COMBOBOX,
@@ -206,16 +216,16 @@ FloatToolbarCreateColorsGui(PMAIN_WND_INFO Info)
NULL,
hInstance,
NULL);
+ if (hMouseButton == NULL)
+ return FALSE;
+
//MakeFlatCombo(hMouseButton);
/* temp, just testing */
- if (hMouseButton != NULL)
- {
- SendMessage(hMouseButton, CB_ADDSTRING, 0, (LPARAM)_T("Primary"));
- SendMessage(hMouseButton, CB_ADDSTRING, 0, (LPARAM)_T("Secondary"));
- SendMessage(hMouseButton, CB_SETCURSEL, 0, 0);
+ SendMessage(hMouseButton, CB_ADDSTRING, 0, (LPARAM)_T("Primary"));
+ SendMessage(hMouseButton, CB_ADDSTRING, 0, (LPARAM)_T("Secondary"));
+ SendMessage(hMouseButton, CB_SETCURSEL, 0, 0);
- }
hMore = CreateWindowEx(WS_EX_STATICEDGE,
WC_BUTTON,
@@ -228,6 +238,8 @@ FloatToolbarCreateColorsGui(PMAIN_WND_INFO Info)
NULL,
hInstance,
NULL);
+ if (hMore == NULL)
+ return FALSE;
hMoreBitmap = (HBITMAP)LoadImage(hInstance,
MAKEINTRESOURCE(IDB_COLORSMORE),
@@ -255,10 +267,12 @@ FloatToolbarCreateColorsGui(PMAIN_WND_INFO Info)
ReleaseDC(hColorPicker, hDc);
}
+ return TRUE;
+
}
-VOID
+BOOL
FloatToolbarCreateHistoryGui(PMAIN_WND_INFO Info)
{
HWND hList;
@@ -275,6 +289,8 @@ FloatToolbarCreateHistoryGui(PMAIN_WND_INFO Info)
NULL,
hInstance,
NULL);
+ if (hList == NULL)
+ return FALSE;
NumButtons = sizeof(HistoryButtons) / sizeof(HistoryButtons[0]);
hButtons = CreateWindowEx(0,
@@ -286,34 +302,40 @@ FloatToolbarCreateHistoryGui(PMAIN_WND_INFO Info)
NULL,
hInstance,
NULL);
+ if (hButtons != NULL)
+ {
+ SendMessage(hButtons,
+ TB_BUTTONSTRUCTSIZE,
+ sizeof(ToolsButtons[0]),
+ 0);
- SendMessage(hButtons,
- TB_BUTTONSTRUCTSIZE,
- sizeof(ToolsButtons[0]),
- 0);
+ SendMessage(hButtons,
+ TB_SETBITMAPSIZE,
+ 0,
+ (LPARAM)MAKELONG(10, 10));
- SendMessage(hButtons,
- TB_SETBITMAPSIZE,
- 0,
- (LPARAM)MAKELONG(10, 10));
+ hImageList = InitImageList(NumButtons,
+ IDB_HISTBACK);
- hImageList = InitImageList(NumButtons,
- IDB_HISTBACK);
+ ImageList_Destroy((HIMAGELIST)SendMessage(hButtons,
+ TB_SETIMAGELIST,
+ 0,
+ (LPARAM)hImageList));
- ImageList_Destroy((HIMAGELIST)SendMessage(hButtons,
- TB_SETIMAGELIST,
- 0,
- (LPARAM)hImageList));
+ SendMessage(hButtons,
+ TB_SETBUTTONSIZE,
+ 0,
+ MAKELONG(18, 16));
- SendMessage(hButtons,
- TB_SETBUTTONSIZE,
- 0,
- MAKELONG(18, 16));
+ SendMessage(hButtons,
+ TB_ADDBUTTONS,
+ NumButtons,
+ (LPARAM)HistoryButtons);
- SendMessage(hButtons,
- TB_ADDBUTTONS,
- NumButtons,
- (LPARAM)HistoryButtons);
+ return TRUE;
+ }
+
+ return FALSE;
}
LRESULT CALLBACK
diff --git a/reactos/base/applications/imagesoft/imagesoft.c b/reactos/base/applications/imagesoft/imagesoft.c
index 19ed215d8b5..5b5dcf580a4 100644
--- a/reactos/base/applications/imagesoft/imagesoft.c
+++ b/reactos/base/applications/imagesoft/imagesoft.c
@@ -29,19 +29,28 @@ WinMain(HINSTANCE hThisInstance,
if (!AllocAndLoadString(&lpAppName, hInstance, IDS_APPNAME) ||
!AllocAndLoadString(&lpVersion, hInstance, IDS_VERSION) )
{
- return 1;
+ return Ret;
}
len = (int)_tcslen(lpAppName) + (int)_tcslen(lpVersion);
lpTitle = HeapAlloc(ProcessHeap,
0,
(len + 2) * sizeof(TCHAR));
+ if (lpTitle == NULL)
+ {
+ LocalFree((HLOCAL)lpAppName);
+ LocalFree((HLOCAL)lpVersion);
+ return Ret;
+ }
wsprintf(lpTitle,
_T("%s %s"),
lpAppName,
lpVersion);
+ LocalFree((HLOCAL)lpAppName);
+ LocalFree((HLOCAL)lpVersion);
+
if (TbdInitImpl())
{
if (InitMainWindowImpl())
@@ -62,7 +71,6 @@ WinMain(HINSTANCE hThisInstance,
{
if (bRet != (BOOL)-1)
{
- //if (Msg.message == WM_SIZE) MessageBox(NULL, _T("Got it"), NULL, 0);
if (!MainWndTranslateMDISysAccel(hMainWnd,
&Msg))
{
@@ -87,7 +95,9 @@ WinMain(HINSTANCE hThisInstance,
TbdUninitImpl();
}
- LocalFree((HLOCAL)lpAppName);
+ HeapFree(GetProcessHeap(),
+ 0,
+ lpTitle);
return Ret;
}
diff --git a/reactos/base/applications/imagesoft/imagesoft.rc b/reactos/base/applications/imagesoft/imagesoft.rc
index 4ff065e4e4b..4892fdce134 100644
--- a/reactos/base/applications/imagesoft/imagesoft.rc
+++ b/reactos/base/applications/imagesoft/imagesoft.rc
@@ -11,12 +11,6 @@ LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
1 24 DISCARDABLE "manifest.xml"
-STRINGTABLE DISCARDABLE
-BEGIN
- IDS_APPNAME "ImageSoft"
- IDS_VERSION "v0.1"
-END
-
IDI_IMAGESOFTICON ICON "res/imagesoft.ico"
/* main toolbar icons */
@@ -77,6 +71,6 @@ IDB_COLORSLESS BITMAP DISCARDABLE "res/icons/color/ColorLess.bmp"
IDC_PAINTBRUSHCURSOR CURSOR DISCARDABLE "res/cursors/PaintBrushToolCursor.cur"
IDC_PAINTBRUSHCURSORMOUSEDOWN CURSOR DISCARDABLE "res/cursors/PaintBrushToolCursorMouseDown.cur"
-#include "En.rc"
-/* please do not add any other languages whilst this is being developed */
+#include "rsrc.rc"
+
diff --git a/reactos/base/applications/imagesoft/En.rc b/reactos/base/applications/imagesoft/lang/En.rc
similarity index 93%
rename from reactos/base/applications/imagesoft/En.rc
rename to reactos/base/applications/imagesoft/lang/En.rc
index 04bcd4e78c7..a11b8e27b06 100644
--- a/reactos/base/applications/imagesoft/En.rc
+++ b/reactos/base/applications/imagesoft/lang/En.rc
@@ -1,3 +1,11 @@
+LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ IDS_APPNAME "ImageSoft"
+ IDS_VERSION "v0.1"
+END
+
IDR_MAINMENU MENU
BEGIN
POPUP "&File"
@@ -32,10 +40,10 @@ BEGIN
END
POPUP "&View"
BEGIN
- MENUITEM "&Tools", ID_TOOLS, CHECKED
- MENUITEM "&Colors", ID_COLOR, CHECKED
- MENUITEM "&History", ID_HISTORY, CHECKED
- MENUITEM "&Status Bar", ID_STATUSBAR, CHECKED
+ MENUITEM "&Tools", ID_TOOLS
+ MENUITEM "&Colors", ID_COLOR
+ MENUITEM "&History", ID_HISTORY
+ MENUITEM "&Status Bar", ID_STATUSBAR
END
POPUP "&Image"
BEGIN
diff --git a/reactos/base/applications/imagesoft/lang/No.rc b/reactos/base/applications/imagesoft/lang/No.rc
new file mode 100644
index 00000000000..ad738a5d7f0
--- /dev/null
+++ b/reactos/base/applications/imagesoft/lang/No.rc
@@ -0,0 +1,206 @@
+LANGUAGE LANG_NORWEGIAN, SUBLANG_NEUTRAL
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ IDS_APPNAME "ImageSoft"
+ IDS_VERSION "v0.1"
+END
+
+IDR_MAINMENU MENU
+BEGIN
+ POPUP "&Fil"
+ BEGIN
+ MENUITEM "&Ny...", ID_NEW
+ MENUITEM "&Åpne...", ID_OPEN
+ MENUITEM SEPARATOR
+ MENUITEM "&Lukk\tCtrl+F4", ID_CLOSE, GRAYED
+ MENUITEM "L&ukk alt", ID_CLOSEALL, GRAYED
+ MENUITEM SEPARATOR
+ MENUITEM "&Lagre", ID_SAVE, GRAYED
+ MENUITEM "Lagre &som...", ID_SAVEAS, GRAYED
+ MENUITEM SEPARATOR
+ MENUITEM "Utskrift &Forhåndsvisning", ID_PRINTPRE, GRAYED
+ MENUITEM "&Utskrift...", ID_PRINT, GRAYED
+ MENUITEM SEPARATOR
+ MENUITEM "E&genskaper...", ID_PROP, GRAYED
+ MENUITEM SEPARATOR
+ MENUITEM "A&vslutt\tAlt+F4", ID_EXIT
+ END
+ POPUP "&Rediger"
+ BEGIN
+ MENUITEM "&Angre", ID_UNDO, GRAYED
+ MENUITEM "&Gjenta", ID_REDO, GRAYED
+ MENUITEM SEPARATOR
+ MENUITEM "Klipp &ut", ID_CUT, GRAYED
+ MENUITEM "&Kopier", ID_COPY, GRAYED
+ MENUITEM "&Lim inn", ID_PASTE, GRAYED
+ MENUITEM "lim inn som ny &bilde", ID_PASTENEWIMAGE, GRAYED
+ MENUITEM SEPARATOR
+ MENUITEM "&Velg Alt", ID_SELALL, GRAYED
+ END
+ POPUP "&Vis"
+ BEGIN
+ MENUITEM "&Vertøy", ID_TOOLS, CHECKED
+ MENUITEM "&Farger", ID_COLOR, CHECKED
+ MENUITEM "&Historie", ID_HISTORY, CHECKED
+ MENUITEM "&Statuslinje", ID_STATUSBAR, CHECKED
+ END
+ POPUP "&Bilde"
+ BEGIN
+ MENUITEM "&Crop...", -1, GRAYED
+ MENUITEM "&Endre størrelse ...", -1, GRAYED
+ MENUITEM "R&oter ...", -1, GRAYED
+ MENUITEM "&Flip...", -1, GRAYED
+ MENUITEM "&Strekk...", -1, GRAYED
+ MENUITEM "S&kew...", -1, GRAYED
+ MENUITEM "&Inverter Farger", -1, GRAYED
+ MENUITEM SEPARATOR
+ MENUITEM "&Attributter...", -1, GRAYED
+ END
+ POPUP "&Farger"
+ BEGIN
+ MENUITEM "&Rediger farger...", ID_EDITCOLOURS
+ END
+ POPUP "&vindu"
+ BEGIN
+ MENUITEM "&Cascade", ID_WINDOW_CASCADE
+ MENUITEM "Sorter &horisontalt", ID_WINDOW_TILE_HORZ
+ MENUITEM "Sorter &vertikalt", ID_WINDOW_TILE_VERT
+ MENUITEM "&Ordne Ikoner", ID_WINDOW_ARRANGE
+ MENUITEM SEPARATOR
+ MENUITEM "Nes&te\tCtrl+F6", ID_WINDOW_NEXT
+ END
+ POPUP "&Hjelp"
+ BEGIN
+ MENUITEM "&Om...", ID_ABOUT
+ END
+END
+
+IDR_POPUP MENU
+BEGIN
+ POPUP "popup"
+ BEGIN
+
+ MENUITEM SEPARATOR
+
+ END
+END
+
+
+IDD_ABOUTBOX DIALOGEX 22,16,210,182
+CAPTION "Om ImageSoft"
+FONT 8,"Tahoma",0,0
+STYLE WS_BORDER | WS_DLGFRAME | WS_SYSMENU | DS_MODALFRAME
+//EXSTYLE WS_EX_LAYERED
+BEGIN
+ LTEXT "ImageSoft v0.1\nCopyright (C) 2006\nThomas Weidenmueller (w3seek@reactos.org)\nGed Murphy (gedmurphy@gmail.com)", IDC_STATIC, 48, 7, 150, 36
+ PUSHBUTTON "Lukk", IDOK, 75, 162, 44, 15
+ ICON IDI_IMAGESOFTICON, IDC_STATIC, 10, 10, 7, 30
+ EDITTEXT IDC_LICENSE_EDIT, 8, 44, 194, 107, WS_VISIBLE | WS_VSCROLL | WS_TABSTOP | ES_READONLY | ES_MULTILINE
+END
+
+
+IDD_IMAGE_PROP DIALOGEX 6, 5, 156, 163
+CAPTION "Bilde egenskaper"
+FONT 8,"MS Sans Serif",0,0
+STYLE WS_BORDER | WS_DLGFRAME | WS_SYSMENU | DS_MODALFRAME
+BEGIN
+ LTEXT "Navn:", IDC_STATIC, 12, 5, 38, 9
+ EDITTEXT IDC_IMAGE_NAME_EDIT, 58, 3, 94, 13, WS_CHILD | WS_VISIBLE | WS_TABSTOP
+ GROUPBOX "maleri egenskaper", IDC_STATIC, 4, 22, 148, 98
+ LTEXT "bilde type:", IDC_STATIC, 12, 36, 42, 9
+ CONTROL "", IDC_IMAGETYPE, "ComboBox", WS_CHILD | WS_VISIBLE | WS_TABSTOP | CBS_DROPDOWNLIST, 58, 35, 88, 54
+ LTEXT "Lengde:", IDC_STATIC, 12, 51, 42, 9
+ EDITTEXT IDC_WIDTH_EDIT, 58, 49, 32, 13, WS_CHILD | WS_VISIBLE | WS_TABSTOP | ES_NUMBER
+ LTEXT "", IDC_WIDTH_STAT, 94, 51, 40, 9
+ LTEXT "Høyde:", IDC_STATIC, 12, 68, 42, 9
+ EDITTEXT IDC_HEIGHT_EDIT, 58, 66, 32, 13, WS_CHILD | WS_VISIBLE | WS_TABSTOP | ES_NUMBER
+ LTEXT "", IDC_HEIGHT_STAT, 94, 68, 40, 9
+ LTEXT "Oppløsning:", IDC_STATIC, 12, 84, 42, 9
+ EDITTEXT IDC_RES_EDIT, 58, 83, 32, 13, WS_CHILD | WS_VISIBLE | WS_TABSTOP | ES_NUMBER
+ LTEXT "", IDC_RES_STAT, 94, 84, 40, 9
+ LTEXT "Enhet:", IDC_STATIC, 12, 99, 42, 9
+ CONTROL "", IDC_UNIT, "ComboBox", WS_CHILD | WS_VISIBLE | WS_TABSTOP | CBS_DROPDOWNLIST, 58, 99, 54, 50
+ LTEXT "bilde størrelse:", IDC_STATIC, 12, 125, 42, 9
+ LTEXT "", IDC_IMAGE_SIZE, 58, 125, 54, 9
+ PUSHBUTTON "OK", IDOK, 50, 144, 48, 13
+ PUSHBUTTON "Avbryt", IDCANCEL, 102, 144, 48, 13
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ IDS_LICENSE "This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.\r\n\r\nThis program 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 General Public License for more details.\r\n\r\nYou should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA."
+ IDS_READY " Klart."
+ IDS_TOOLBAR_STANDARD "Standard"
+ IDS_TOOLBAR_TEST "Test"
+ IDS_IMAGE_NAME "Bilde %1!u!"
+ IDS_FLT_TOOLS "Verktøy"
+ IDS_FLT_COLORS "Farger"
+ IDS_FLT_HISTORY "Historie"
+END
+
+/* imageprop.c */
+STRINGTABLE DISCARDABLE
+BEGIN
+ IDS_IMAGE_MONOCHROME "Monokromt (1 bit)"
+ IDS_IMAGE_GREYSCALE "Gråverdiskala (8 bit)"
+ IDS_IMAGE_PALETTE "Palett eller 256 farger (8 bit)"
+ IDS_IMAGE_TRUECOLOR "Nøyaktig farger (24 bit)"
+
+ IDS_UNIT_PIXELS "pikseler"
+ IDS_UNIT_CM "Cm"
+ IDS_UNIT_INCHES "tommer"
+ IDS_UNIT_DOTSCM "Tommer / Cm"
+ IDS_UNIT_DPI "DPI"
+ IDS_UNIT_KB "%d KB"
+ IDS_UNIT_MB "%d MB"
+END
+
+/* Tooltips */
+STRINGTABLE DISCARDABLE
+BEGIN
+ IDS_TOOLTIP_NEW "Ny"
+ IDS_TOOLTIP_OPEN "Åpne"
+ IDS_TOOLTIP_SAVE "Lagre"
+ IDS_TOOLTIP_PRINTPRE "Utskrift &Forhåndsvisning"
+ IDS_TOOLTIP_PRINT "Utskrift"
+ IDS_TOOLTIP_CUT "Klipp ut"
+ IDS_TOOLTIP_COPY "Kopier"
+ IDS_TOOLTIP_PASTE "Lim inn"
+ IDS_TOOLTIP_UNDO "Angre"
+ IDS_TOOLTIP_REDO "Gjenta"
+END
+
+
+/* Hints */
+STRINGTABLE DISCARDABLE
+BEGIN
+ IDS_HINT_BLANK " "
+ IDS_HINT_NEW " Åpne et nytt dokument."
+ IDS_HINT_OPEN " Åpene en eksisterende dokument."
+ IDS_HINT_CLOSE " Lukk dette vinduet."
+ IDS_HINT_CLOSEALL " Lukk alle vinduer."
+ IDS_HINT_SAVE " Lagre aktive dokument."
+ IDS_HINT_SAVEAS " Lagre aktive dokument med nytt navn."
+ IDS_HINT_PRINTPRE " Forhåndsvis utskrift."
+ IDS_HINT_PRINT " Skriv ut aktive dokument."
+ IDS_HINT_PROP " Vis egenskaper for aktive bilde."
+ IDS_HINT_EXIT " Avslutt denne applikasjonen."
+
+ IDS_HINT_TOOLS " Vis eller skjul verktøy floating vindu."
+ IDS_HINT_COLORS " Vis eller skjul fargene floating vindu."
+ IDS_HINT_HISTORY " Vis eller skjul historie floating vindu."
+ IDS_HINT_STATUS " Vis eller skjul statuslinje."
+
+ IDS_HINT_CASCADE " Ordne vinduer så de overlapper."
+ IDS_HINT_TILE_HORZ " Ordne vinduer så ingen-overlapper tittelen."
+ IDS_HINT_TILE_VERT " Ordne vinduer så ingen-overlapper tittelen."
+ IDS_HINT_ARRANGE " Ordne ikoner ved knappen av vinduet."
+ IDS_HINT_NEXT " Aktivere neste vinduet."
+
+ IDS_HINT_SYS_RESTORE " Endre vinduet til normal størrelse."
+ IDS_HINT_SYS_MOVE " Flytt vinduet."
+ IDS_HINT_SYS_SIZE " Endre størrelse på dette vinduet."
+ IDS_HINT_SYS_MINIMIZE " Minimer vinduet til en ikon."
+ IDS_HINT_SYS_MAXIMIZE " Expands dette vindu for å fylle skjermen."
+END
diff --git a/reactos/base/applications/imagesoft/mainwnd.c b/reactos/base/applications/imagesoft/mainwnd.c
index 7a650acdf5c..7f72ecc10b4 100644
--- a/reactos/base/applications/imagesoft/mainwnd.c
+++ b/reactos/base/applications/imagesoft/mainwnd.c
@@ -528,6 +528,7 @@ static VOID
MainWndCreateFloatWindows(PMAIN_WND_INFO Info)
{
RECT rect;
+ HMENU hMenu;
UINT Res;
PFLT_WND WndArr[NUM_FLT_WND]; /* temp array for looping */
INT i;
@@ -595,19 +596,45 @@ MainWndCreateFloatWindows(PMAIN_WND_INFO Info)
}
+ hMenu = GetMenu(Info->hSelf);
+
if (Info->fltTools->hSelf != NULL)
{
- FloatToolbarCreateToolsGui(Info);
+ if (FloatToolbarCreateToolsGui(Info))
+ {
+ //CheckMenuItem(hMenu,
+ // ID_TOOLS,
+ // MF_CHECKED);
+
+ /* temp disable windows until they are useful */
+ ShowHideWindow(Info->fltTools);
+ }
}
if (Info->fltColors->hSelf != NULL)
{
- FloatToolbarCreateColorsGui(Info);
+ if (FloatToolbarCreateColorsGui(Info))
+ {
+ //CheckMenuItem(hMenu,
+ // ID_COLOR,
+ // MF_CHECKED);
+
+ /* temp disable windows until they are useful */
+ ShowHideWindow(Info->fltColors);
+ }
}
if (Info->fltHistory->hSelf != NULL)
{
- FloatToolbarCreateHistoryGui(Info);
+ if (FloatToolbarCreateHistoryGui(Info))
+ {
+ //CheckMenuItem(hMenu,
+ // ID_HISTORY,
+ // MF_CHECKED);
+
+ /* temp disable windows until they are useful */
+ ShowHideWindow(Info->fltHistory);
+ }
}
}
diff --git a/reactos/base/applications/imagesoft/precomp.h b/reactos/base/applications/imagesoft/precomp.h
index ef4e9e10724..21c1cb78238 100644
--- a/reactos/base/applications/imagesoft/precomp.h
+++ b/reactos/base/applications/imagesoft/precomp.h
@@ -384,9 +384,9 @@ typedef struct _FLT_WND
BOOL bOpaque;
} FLT_WND, *PFLT_WND;
-VOID FloatToolbarCreateToolsGui(PMAIN_WND_INFO Info);
-VOID FloatToolbarCreateColorsGui(PMAIN_WND_INFO Info);
-VOID FloatToolbarCreateHistoryGui(PMAIN_WND_INFO Info);
+BOOL FloatToolbarCreateToolsGui(PMAIN_WND_INFO Info);
+BOOL FloatToolbarCreateColorsGui(PMAIN_WND_INFO Info);
+BOOL FloatToolbarCreateHistoryGui(PMAIN_WND_INFO Info);
BOOL InitFloatWndClass(VOID);
VOID UninitFloatWndImpl(VOID);
BOOL ShowHideWindow(PFLT_WND FltInfo);
diff --git a/reactos/base/applications/imagesoft/rsrc.rc b/reactos/base/applications/imagesoft/rsrc.rc
new file mode 100644
index 00000000000..55c9c574544
--- /dev/null
+++ b/reactos/base/applications/imagesoft/rsrc.rc
@@ -0,0 +1,13 @@
+
+
+#include
+#include "resource.h"
+
+/* define language neutral resources */
+
+LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
+
+/* include localised resources */
+#include "lang/En.rc"
+#include "lang/No.rc"
+
diff --git a/reactos/base/applications/msconfig/freeldrpage.c b/reactos/base/applications/msconfig/freeldrpage.c
index 094d5eb85e9..3646cd87d3d 100644
--- a/reactos/base/applications/msconfig/freeldrpage.c
+++ b/reactos/base/applications/msconfig/freeldrpage.c
@@ -15,15 +15,14 @@ HWND hFreeLdrDialog;
INT_PTR CALLBACK
FreeLdrPageWndProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
- UNREFERENCED_PARAMETER(lParam)
- UNREFERENCED_PARAMETER(wParam)
+ UNREFERENCED_PARAMETER(lParam);
+ UNREFERENCED_PARAMETER(wParam);
switch (message) {
case WM_INITDIALOG:
hFreeLdrDialog = hDlg;
- SetWindowPos(hDlg, NULL, 10, 32, 0, 0, SWP_NOACTIVATE | SWP_NOOWNERZORDER | SWP_NOSIZE | SWP_NOZORDER);
- return TRUE;
- }
-
- return 0;
+ SetWindowPos(hDlg, NULL, 10, 32, 0, 0, SWP_NOACTIVATE | SWP_NOOWNERZORDER | SWP_NOSIZE | SWP_NOZORDER);
+ return TRUE;
+ }
+ return 0;
}
diff --git a/reactos/base/applications/msconfig/generalpage.c b/reactos/base/applications/msconfig/generalpage.c
index 9aee271efde..8554be3ba26 100644
--- a/reactos/base/applications/msconfig/generalpage.c
+++ b/reactos/base/applications/msconfig/generalpage.c
@@ -15,15 +15,14 @@ HWND hGeneralDialog;
INT_PTR CALLBACK
GeneralPageWndProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
- UNREFERENCED_PARAMETER(lParam)
- UNREFERENCED_PARAMETER(wParam)
+ UNREFERENCED_PARAMETER(lParam);
+ UNREFERENCED_PARAMETER(wParam);
switch (message) {
case WM_INITDIALOG:
hGeneralDialog = hDlg;
- SetWindowPos(hDlg, NULL, 10, 32, 0, 0, SWP_NOACTIVATE | SWP_NOOWNERZORDER | SWP_NOSIZE | SWP_NOZORDER);
- return TRUE;
- }
-
- return 0;
+ SetWindowPos(hDlg, NULL, 10, 32, 0, 0, SWP_NOACTIVATE | SWP_NOOWNERZORDER | SWP_NOSIZE | SWP_NOZORDER);
+ return TRUE;
+ }
+ return 0;
}
diff --git a/reactos/base/applications/msconfig/De.rc b/reactos/base/applications/msconfig/lang/De.rc
similarity index 100%
rename from reactos/base/applications/msconfig/De.rc
rename to reactos/base/applications/msconfig/lang/De.rc
diff --git a/reactos/base/applications/msconfig/En.rc b/reactos/base/applications/msconfig/lang/En.rc
similarity index 100%
rename from reactos/base/applications/msconfig/En.rc
rename to reactos/base/applications/msconfig/lang/En.rc
diff --git a/reactos/base/applications/msconfig/Fr.rc b/reactos/base/applications/msconfig/lang/Fr.rc
similarity index 100%
rename from reactos/base/applications/msconfig/Fr.rc
rename to reactos/base/applications/msconfig/lang/Fr.rc
diff --git a/reactos/base/applications/msconfig/Hu.rc b/reactos/base/applications/msconfig/lang/Hu.rc
similarity index 96%
rename from reactos/base/applications/msconfig/Hu.rc
rename to reactos/base/applications/msconfig/lang/Hu.rc
index fc8ed8aceb3..a234d29ce6f 100644
--- a/reactos/base/applications/msconfig/Hu.rc
+++ b/reactos/base/applications/msconfig/lang/Hu.rc
@@ -1,6 +1,6 @@
// Hungarian resources, by Robert Horvath (Talley at cubeclub.hu)
-LANGUAGE LANG_HUNGARIAN, SUBLANG_NEUTRAL
+LANGUAGE LANG_HUNGARIAN, SUBLANG_DEFAULT
IDD_MSCONFIG_DIALOG DIALOG DISCARDABLE 0, 0, 378, 220
STYLE DS_CENTER | WS_MINIMIZEBOX | WS_POPUP |
diff --git a/reactos/base/applications/msconfig/Nl.rc b/reactos/base/applications/msconfig/lang/Nl.rc
similarity index 100%
rename from reactos/base/applications/msconfig/Nl.rc
rename to reactos/base/applications/msconfig/lang/Nl.rc
diff --git a/reactos/base/applications/msconfig/No.rc b/reactos/base/applications/msconfig/lang/No.rc
similarity index 100%
rename from reactos/base/applications/msconfig/No.rc
rename to reactos/base/applications/msconfig/lang/No.rc
diff --git a/reactos/base/applications/msconfig/msconfig.c b/reactos/base/applications/msconfig/msconfig.c
index d1ee95f85af..1ffcc865d2c 100644
--- a/reactos/base/applications/msconfig/msconfig.c
+++ b/reactos/base/applications/msconfig/msconfig.c
@@ -17,10 +17,10 @@ void MsConfig_OnTabWndSelChange(void);
BOOL OnCreate(HWND hWnd)
{
- TCHAR szTemp[256];
- TCITEM item;
+ TCHAR szTemp[256];
+ TCITEM item;
- hTabWnd = GetDlgItem(hWnd, IDC_TAB);
+ hTabWnd = GetDlgItem(hWnd, IDC_TAB);
hGeneralPage = CreateDialog(hInst, MAKEINTRESOURCE(IDD_GENERAL_PAGE), hWnd, (DLGPROC) GeneralPageWndProc);
hSystemPage = CreateDialog(hInst, MAKEINTRESOURCE(IDD_SYSTEM_PAGE), hWnd, (DLGPROC) SystemPageWndProc);
hFreeLdrPage = CreateDialog(hInst, MAKEINTRESOURCE(IDD_FREELDR_PAGE), hWnd, (DLGPROC) FreeLdrPageWndProc);
@@ -31,38 +31,38 @@ BOOL OnCreate(HWND hWnd)
LoadString(hInst, IDS_MSCONFIG, szTemp, 256);
SetWindowText(hWnd, szTemp);
- // Insert Tab Pages
- LoadString(hInst, IDS_TAB_GENERAL, szTemp, 256);
+ // Insert Tab Pages
+ LoadString(hInst, IDS_TAB_GENERAL, szTemp, 256);
memset(&item, 0, sizeof(TCITEM));
item.mask = TCIF_TEXT;
item.pszText = szTemp;
(void)TabCtrl_InsertItem(hTabWnd, 0, &item);
- LoadString(hInst, IDS_TAB_SYSTEM, szTemp, 256);
+ LoadString(hInst, IDS_TAB_SYSTEM, szTemp, 256);
memset(&item, 0, sizeof(TCITEM));
item.mask = TCIF_TEXT;
item.pszText = szTemp;
(void)TabCtrl_InsertItem(hTabWnd, 1, &item);
- LoadString(hInst, IDS_TAB_FREELDR, szTemp, 256);
+ LoadString(hInst, IDS_TAB_FREELDR, szTemp, 256);
memset(&item, 0, sizeof(TCITEM));
item.mask = TCIF_TEXT;
item.pszText = szTemp;
(void)TabCtrl_InsertItem(hTabWnd, 2, &item);
- LoadString(hInst, IDS_TAB_SERVICES, szTemp, 256);
+ LoadString(hInst, IDS_TAB_SERVICES, szTemp, 256);
memset(&item, 0, sizeof(TCITEM));
item.mask = TCIF_TEXT;
item.pszText = szTemp;
(void)TabCtrl_InsertItem(hTabWnd, 3, &item);
- LoadString(hInst, IDS_TAB_STARTUP, szTemp, 256);
+ LoadString(hInst, IDS_TAB_STARTUP, szTemp, 256);
memset(&item, 0, sizeof(TCITEM));
item.mask = TCIF_TEXT;
item.pszText = szTemp;
(void)TabCtrl_InsertItem(hTabWnd, 4, &item);
- LoadString(hInst, IDS_TAB_TOOLS, szTemp, 256);
+ LoadString(hInst, IDS_TAB_TOOLS, szTemp, 256);
memset(&item, 0, sizeof(TCITEM));
item.mask = TCIF_TEXT;
item.pszText = szTemp;
@@ -70,7 +70,7 @@ BOOL OnCreate(HWND hWnd)
MsConfig_OnTabWndSelChange();
- return TRUE;
+ return TRUE;
}
@@ -80,58 +80,58 @@ void MsConfig_OnTabWndSelChange(void)
case 0: //General
ShowWindow(hGeneralPage, SW_SHOW);
ShowWindow(hSystemPage, SW_HIDE);
- ShowWindow(hFreeLdrPage, SW_HIDE);
- ShowWindow(hServicesPage, SW_HIDE);
- ShowWindow(hStartupPage, SW_HIDE);
+ ShowWindow(hFreeLdrPage, SW_HIDE);
+ ShowWindow(hServicesPage, SW_HIDE);
+ ShowWindow(hStartupPage, SW_HIDE);
ShowWindow(hToolsPage, SW_HIDE);
BringWindowToTop(hGeneralPage);
- break;
+ break;
case 1: //SYSTEM.INI
ShowWindow(hGeneralPage, SW_HIDE);
ShowWindow(hSystemPage, SW_SHOW);
ShowWindow(hToolsPage, SW_HIDE);
- ShowWindow(hStartupPage, SW_HIDE);
- ShowWindow(hFreeLdrPage, SW_HIDE);
- ShowWindow(hServicesPage, SW_HIDE);
+ ShowWindow(hStartupPage, SW_HIDE);
+ ShowWindow(hFreeLdrPage, SW_HIDE);
+ ShowWindow(hServicesPage, SW_HIDE);
BringWindowToTop(hSystemPage);
break;
case 2: //Freeldr
ShowWindow(hGeneralPage, SW_HIDE);
ShowWindow(hSystemPage, SW_HIDE);
- ShowWindow(hFreeLdrPage, SW_SHOW);
- ShowWindow(hServicesPage, SW_HIDE);
- ShowWindow(hStartupPage, SW_HIDE);
+ ShowWindow(hFreeLdrPage, SW_SHOW);
+ ShowWindow(hServicesPage, SW_HIDE);
+ ShowWindow(hStartupPage, SW_HIDE);
ShowWindow(hToolsPage, SW_HIDE);
BringWindowToTop(hFreeLdrPage);
- break;
+ break;
case 3: //Services
ShowWindow(hGeneralPage, SW_HIDE);
ShowWindow(hSystemPage, SW_HIDE);
- ShowWindow(hFreeLdrPage, SW_HIDE);
- ShowWindow(hServicesPage, SW_SHOW);
- ShowWindow(hStartupPage, SW_HIDE);
+ ShowWindow(hFreeLdrPage, SW_HIDE);
+ ShowWindow(hServicesPage, SW_SHOW);
+ ShowWindow(hStartupPage, SW_HIDE);
ShowWindow(hToolsPage, SW_HIDE);
BringWindowToTop(hServicesPage);
- break;
+ break;
case 4: //startup
ShowWindow(hGeneralPage, SW_HIDE);
ShowWindow(hSystemPage, SW_HIDE);
- ShowWindow(hFreeLdrPage, SW_HIDE);
- ShowWindow(hServicesPage, SW_HIDE);
- ShowWindow(hStartupPage, SW_SHOW);
+ ShowWindow(hFreeLdrPage, SW_HIDE);
+ ShowWindow(hServicesPage, SW_HIDE);
+ ShowWindow(hStartupPage, SW_SHOW);
ShowWindow(hToolsPage, SW_HIDE);
BringWindowToTop(hStartupPage);
- break;
- case 5: //Tools
+ break;
+ case 5: //Tools
ShowWindow(hGeneralPage, SW_HIDE);
ShowWindow(hSystemPage, SW_HIDE);
- ShowWindow(hFreeLdrPage, SW_HIDE);
- ShowWindow(hServicesPage, SW_HIDE);
- ShowWindow(hStartupPage, SW_HIDE);
+ ShowWindow(hFreeLdrPage, SW_HIDE);
+ ShowWindow(hServicesPage, SW_HIDE);
+ ShowWindow(hStartupPage, SW_HIDE);
ShowWindow(hToolsPage, SW_SHOW);
BringWindowToTop(hToolsPage);
- break;
- }
+ break;
+ }
}
@@ -142,43 +142,44 @@ MsConfigWndProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
int idctrl;
LPNMHDR pnmh;
- switch (message) {
- case WM_INITDIALOG:
- hMainWnd = hDlg;
- return OnCreate(hDlg);
+ switch (message)
+ {
+ case WM_INITDIALOG:
+ hMainWnd = hDlg;
+ return OnCreate(hDlg);
- case WM_COMMAND:
+ case WM_COMMAND:
- if (LOWORD(wParam) == IDOK) {
- //MsConfig_OnSaveChanges();
- }
+ if (LOWORD(wParam) == IDOK)
+ {
+ //MsConfig_OnSaveChanges();
+ }
- if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL) {
- EndDialog(hDlg, LOWORD(wParam));
- return TRUE;
- }
- break;
+ if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL) {
+ EndDialog(hDlg, LOWORD(wParam));
+ return TRUE;
+ }
+ break;
- case WM_NOTIFY:
- idctrl = (int)wParam;
- pnmh = (LPNMHDR)lParam;
- if ((pnmh->hwndFrom == hTabWnd) &&
- (pnmh->idFrom == IDC_TAB) &&
- (pnmh->code == TCN_SELCHANGE))
- {
- MsConfig_OnTabWndSelChange();
- }
- break;
-
- case WM_DESTROY:
- DestroyWindow(hToolsPage);
- DestroyWindow(hGeneralPage);
- DestroyWindow(hServicesPage);
- DestroyWindow(hStartupPage);
- DestroyWindow(hFreeLdrPage);
- DestroyWindow(hSystemPage);
- return DefWindowProc(hDlg, message, wParam, lParam);
+ case WM_NOTIFY:
+ idctrl = (int)wParam;
+ pnmh = (LPNMHDR)lParam;
+ if ((pnmh->hwndFrom == hTabWnd) &&
+ (pnmh->idFrom == IDC_TAB) &&
+ (pnmh->code == TCN_SELCHANGE))
+ {
+ MsConfig_OnTabWndSelChange();
+ }
+ break;
+ case WM_DESTROY:
+ DestroyWindow(hToolsPage);
+ DestroyWindow(hGeneralPage);
+ DestroyWindow(hServicesPage);
+ DestroyWindow(hStartupPage);
+ DestroyWindow(hFreeLdrPage);
+ DestroyWindow(hSystemPage);
+ return DefWindowProc(hDlg, message, wParam, lParam);
}
return 0;
@@ -192,9 +193,9 @@ int APIENTRY WinMain(HINSTANCE hInstance,
INITCOMMONCONTROLSEX InitControls;
- UNREFERENCED_PARAMETER(hPrevInstance)
- UNREFERENCED_PARAMETER(lpCmdLine)
- UNREFERENCED_PARAMETER(nCmdShow)
+ UNREFERENCED_PARAMETER(hPrevInstance);
+ UNREFERENCED_PARAMETER(lpCmdLine);
+ UNREFERENCED_PARAMETER(nCmdShow);
InitControls.dwSize = sizeof(INITCOMMONCONTROLSEX);
InitControls.dwICC = ICC_TAB_CLASSES | ICC_LISTVIEW_CLASSES;
diff --git a/reactos/base/applications/msconfig/msconfig.rc b/reactos/base/applications/msconfig/msconfig.rc
index ebecf854b9e..741414254f8 100644
--- a/reactos/base/applications/msconfig/msconfig.rc
+++ b/reactos/base/applications/msconfig/msconfig.rc
@@ -13,10 +13,5 @@ LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
#include
-#include "De.rc"
-#include "En.rc"
-#include "Fr.rc"
-#include "Hu.rc"
-#include "Nl.rc"
-#include "No.rc"
+#include "rsrc.rc"
diff --git a/reactos/base/applications/msconfig/precomp.h b/reactos/base/applications/msconfig/precomp.h
index 056a48ededd..d7e9be8abb2 100644
--- a/reactos/base/applications/msconfig/precomp.h
+++ b/reactos/base/applications/msconfig/precomp.h
@@ -3,6 +3,7 @@
#include
#include
#include
+#include
#include "resource.h"
#include "msconfig.h"
diff --git a/reactos/base/applications/msconfig/rsrc.rc b/reactos/base/applications/msconfig/rsrc.rc
new file mode 100644
index 00000000000..d94e6ae9ac4
--- /dev/null
+++ b/reactos/base/applications/msconfig/rsrc.rc
@@ -0,0 +1,17 @@
+
+
+#include
+#include "resource.h"
+
+/* define language neutral resources */
+
+LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
+
+/* include localised resources */
+
+#include "lang/De.rc"
+#include "lang/En.rc"
+#include "lang/Fr.rc"
+#include "lang/Hu.rc"
+#include "lang/Nl.rc"
+#include "lang/No.rc"
diff --git a/reactos/base/applications/msconfig/srvpage.c b/reactos/base/applications/msconfig/srvpage.c
index ef343ee1e0f..44b34884651 100644
--- a/reactos/base/applications/msconfig/srvpage.c
+++ b/reactos/base/applications/msconfig/srvpage.c
@@ -18,12 +18,12 @@ void GetServices ( void );
INT_PTR CALLBACK
ServicesPageWndProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
- LV_COLUMN column;
- TCHAR szTemp[256];
- DWORD dwStyle;
+ LV_COLUMN column;
+ TCHAR szTemp[256];
+ DWORD dwStyle;
- UNREFERENCED_PARAMETER(lParam)
- UNREFERENCED_PARAMETER(wParam)
+ UNREFERENCED_PARAMETER(lParam);
+ UNREFERENCED_PARAMETER(wParam);
switch (message) {
case WM_INITDIALOG:
@@ -35,7 +35,7 @@ ServicesPageWndProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
dwStyle = dwStyle | LVS_EX_FULLROWSELECT | LVS_EX_CHECKBOXES;
SendMessage(hServicesListCtrl, LVM_SETEXTENDEDLISTVIEWSTYLE, 0, dwStyle);
- SetWindowPos(hDlg, NULL, 10, 32, 0, 0, SWP_NOACTIVATE | SWP_NOOWNERZORDER | SWP_NOSIZE | SWP_NOZORDER);
+ SetWindowPos(hDlg, NULL, 10, 32, 0, 0, SWP_NOACTIVATE | SWP_NOOWNERZORDER | SWP_NOSIZE | SWP_NOZORDER);
// Initialize the application page's controls
column.mask = LVCF_TEXT | LVCF_WIDTH;
@@ -64,10 +64,10 @@ ServicesPageWndProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
(void)ListView_InsertColumn(hServicesListCtrl, 3, &column);
GetServices();
- return TRUE;
- }
+ return TRUE;
+ }
- return 0;
+ return 0;
}
void
@@ -106,7 +106,7 @@ GetServices ( void )
/* reserve memory for service info array */
pServiceStatus = (ENUM_SERVICE_STATUS_PROCESS *) HeapAlloc(GetProcessHeap(), 0, BytesNeeded);
if (!pServiceStatus)
- return;
+ return;
/* fill array with service info */
if (EnumServicesStatusEx(ScHandle, SC_ENUM_PROCESS_INFO, SERVICE_WIN32, SERVICE_STATE_ALL, (LPBYTE)pServiceStatus, BytesNeeded, &BytesNeeded, &NumServices, &ResumeHandle, 0) == 0)
@@ -146,7 +146,7 @@ GetServices ( void )
{
pServiceFailureActions = (LPSERVICE_FAILURE_ACTIONS) HeapAlloc(GetProcessHeap(), 0, BytesNeeded);
if (pServiceFailureActions == NULL)
- return;
+ return;
if (!QueryServiceConfig2(hService, SERVICE_CONFIG_FAILURE_ACTIONS, (LPBYTE)pServiceFailureActions, BytesNeeded, &BytesNeeded))
{
@@ -170,11 +170,11 @@ GetServices ( void )
}
}
- if (pServiceFailureActions != NULL)
- {
- HeapFree(GetProcessHeap(), 0, pServiceFailureActions);
- pServiceFailureActions = NULL;
- }
+ if (pServiceFailureActions != NULL)
+ {
+ HeapFree(GetProcessHeap(), 0, pServiceFailureActions);
+ pServiceFailureActions = NULL;
+ }
/* get vendor of service binary */
BytesNeeded = 0;
@@ -184,7 +184,7 @@ GetServices ( void )
{
pServiceConfig = (LPQUERY_SERVICE_CONFIG) HeapAlloc(GetProcessHeap(), 0, BytesNeeded);
if (pServiceConfig == NULL)
- return;
+ return;
if (!QueryServiceConfig(hService, pServiceConfig, BytesNeeded, &BytesNeeded))
{
@@ -208,20 +208,21 @@ GetServices ( void )
_tcscpy(FileName, pServiceConfig->lpBinaryPathName);
}
- HeapFree(GetProcessHeap(), 0, pServiceConfig);
- pServiceConfig = NULL;
+ HeapFree(GetProcessHeap(), 0, pServiceConfig);
+ pServiceConfig = NULL;
- dwLen = GetFileVersionInfoSize(FileName, &dwHandle);
+ dwLen = GetFileVersionInfoSize(FileName, &dwHandle);
if (dwLen)
{
lpData = (TCHAR*) HeapAlloc(GetProcessHeap(), 0, dwLen);
if (lpData == NULL)
- return;
+ return;
- if (!GetFileVersionInfo (FileName, dwHandle, dwLen, lpData)) {
- HeapFree(GetProcessHeap(), 0, lpData);
- return;
- }
+ if (!GetFileVersionInfo (FileName, dwHandle, dwLen, lpData))
+ {
+ HeapFree(GetProcessHeap(), 0, lpData);
+ return;
+ }
if (VerQueryValue(lpData, _T("\\VarFileInfo\\Translation"), &pvData, (PUINT) &BufLen))
{
@@ -230,12 +231,13 @@ GetServices ( void )
wsprintf(szStrFileInfo, _T("StringFileInfo\\%04X%04X\\CompanyName"), wCodePage, wLangID);
}
- if (VerQueryValue (lpData, szStrFileInfo, (LPVOID) &lpBuffer, (PUINT) &BufLen)) {
+ if (VerQueryValue (lpData, szStrFileInfo, (LPVOID) &lpBuffer, (PUINT) &BufLen))
+ {
item.pszText = lpBuffer;
item.iSubItem = 2;
SendMessage(hServicesListCtrl, LVM_SETITEMTEXT, item.iItem, (LPARAM) &item);
}
- HeapFree(GetProcessHeap(), 0, lpData);
+ HeapFree(GetProcessHeap(), 0, lpData);
}
else
{
@@ -259,5 +261,4 @@ GetServices ( void )
CloseServiceHandle(ScHandle);
}
-
}
diff --git a/reactos/base/applications/msconfig/startuppage.c b/reactos/base/applications/msconfig/startuppage.c
index b440e777659..4382a31d927 100644
--- a/reactos/base/applications/msconfig/startuppage.c
+++ b/reactos/base/applications/msconfig/startuppage.c
@@ -14,6 +14,7 @@ HWND hStartupListCtrl;
HWND hStartupDialog;
void GetAutostartEntriesFromRegistry ( HKEY hRootKey, TCHAR* KeyName );
+void GetDisabledAutostartEntriesFromRegistry ();
INT_PTR CALLBACK
StartupPageWndProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
@@ -22,8 +23,8 @@ StartupPageWndProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
TCHAR szTemp[256];
DWORD dwStyle;
- UNREFERENCED_PARAMETER(lParam)
- UNREFERENCED_PARAMETER(wParam)
+ UNREFERENCED_PARAMETER(lParam);
+ UNREFERENCED_PARAMETER(wParam);
switch (message) {
case WM_INITDIALOG:
@@ -59,6 +60,9 @@ StartupPageWndProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
GetAutostartEntriesFromRegistry(HKEY_LOCAL_MACHINE, _T("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run"));
GetAutostartEntriesFromRegistry(HKEY_CURRENT_USER, _T("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run"));
+ GetDisabledAutostartEntriesFromRegistry (_T("SOFTWARE\\Microsoft\\Shared Tools\\MSConfig\\startupreg"));
+ GetDisabledAutostartEntriesFromRegistry (_T("SOFTWARE\\Microsoft\\Shared Tools\\MSConfig\\startupfolder"));
+
//FIXME: What about HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Userinit
//FIXME: Common Startup (startmenu)
@@ -68,6 +72,83 @@ StartupPageWndProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
return 0;
}
+
+ void
+GetDisabledAutostartEntriesFromRegistry (TCHAR * szBasePath)
+{
+ HKEY hKey, hSubKey;
+ DWORD Index, SubIndex, dwValues, dwSubValues, retVal;
+ DWORD dwValueLength, dwDataLength = MAX_VALUE_NAME;
+ LV_ITEM item;
+ TCHAR* Data;
+ TCHAR szValueName[MAX_KEY_LENGTH];
+ TCHAR szSubValueName[MAX_KEY_LENGTH];
+ TCHAR szSubPath[MAX_KEY_LENGTH];
+
+ if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, szBasePath, 0, KEY_READ | KEY_ENUMERATE_SUB_KEYS, &hKey) == ERROR_SUCCESS)
+ {
+ if (RegQueryInfoKey(hKey, NULL, NULL, NULL, &dwValues, NULL, NULL, NULL, NULL, NULL, NULL, NULL) == ERROR_SUCCESS)
+ {
+ for (Index = 0, retVal = ERROR_SUCCESS; Index < dwValues; Index++)
+ {
+ dwValueLength = MAX_KEY_LENGTH;
+ dwDataLength = MAX_VALUE_NAME;
+ Data = (TCHAR*) HeapAlloc(GetProcessHeap(), 0, MAX_VALUE_NAME * sizeof(TCHAR));
+ if (Data == NULL)
+ break;
+
+ retVal = RegEnumKeyEx(hKey, Index, szValueName, &dwValueLength, NULL, NULL, NULL, NULL);
+ _stprintf(szSubPath, _T("%s\\%s"), szBasePath, szValueName);
+ memset(&item, 0, sizeof(LV_ITEM));
+ item.mask = LVIF_TEXT;
+ item.iImage = 0;
+ item.pszText = szValueName;
+ item.iItem = ListView_GetItemCount(hStartupListCtrl);
+ item.lParam = 0;
+ (void)ListView_InsertItem(hStartupListCtrl, &item);
+ if(RegOpenKeyEx(HKEY_LOCAL_MACHINE, szSubPath, 0, KEY_READ | KEY_ENUMERATE_SUB_KEYS, &hSubKey) == ERROR_SUCCESS)
+ {
+ if (RegQueryInfoKey(hSubKey, NULL, NULL, NULL, NULL, NULL, NULL, &dwSubValues, NULL, NULL, NULL, NULL) == ERROR_SUCCESS)
+ {
+ for(SubIndex = 0; SubIndex < dwSubValues; SubIndex++)
+ {
+ dwValueLength = MAX_KEY_LENGTH;
+ dwDataLength = MAX_VALUE_NAME;
+ if(RegEnumValue(hSubKey, SubIndex, szSubValueName, &dwValueLength, NULL, NULL, (LPBYTE)Data, &dwDataLength) == ERROR_SUCCESS)
+ {
+ if (!_tcscmp(szSubValueName, _T("command")))
+ {
+ GetLongPathName(Data, Data, (DWORD) _tcsclen(Data));
+ item.pszText = Data;
+ item.iSubItem = 1;
+ SendMessage(hStartupListCtrl, LVM_SETITEMTEXT, item.iItem, (LPARAM) &item);
+ }
+ else if (!_tcscmp(szSubValueName, _T("key")) || !_tcscmp(szSubValueName, _T("location")))
+ {
+ GetLongPathName(Data, Data, (DWORD) _tcsclen(Data));
+ item.pszText = Data;
+ item.iSubItem = 2;
+ SendMessage(hStartupListCtrl, LVM_SETITEMTEXT, item.iItem, (LPARAM) &item);
+ }
+ else if (!_tcscmp(szSubValueName, _T("item")))
+ {
+ GetLongPathName(Data, Data, (DWORD) _tcsclen(Data));
+ item.pszText = Data;
+ item.iSubItem = 0;
+ SendMessage(hStartupListCtrl, LVM_SETITEMTEXT, item.iItem, (LPARAM) &item);
+ }
+ }
+ }
+ }
+ }
+ RegCloseKey(hSubKey);
+ HeapFree(GetProcessHeap(), 0, Data);
+ }
+ }
+ RegCloseKey(hKey);
+ }
+}
+
void
GetAutostartEntriesFromRegistry ( HKEY hRootKey, TCHAR* KeyName )
{
@@ -100,6 +181,7 @@ GetAutostartEntriesFromRegistry ( HKEY hRootKey, TCHAR* KeyName )
item.iItem = ListView_GetItemCount(hStartupListCtrl);
item.lParam = 0;
(void)ListView_InsertItem(hStartupListCtrl, &item);
+ ListView_SetCheckState(hStartupListCtrl, item.iItem, TRUE);
if (dwType == REG_SZ)
{
diff --git a/reactos/base/applications/msconfig/systempage.c b/reactos/base/applications/msconfig/systempage.c
index c972a54620d..e899c454bbe 100644
--- a/reactos/base/applications/msconfig/systempage.c
+++ b/reactos/base/applications/msconfig/systempage.c
@@ -14,14 +14,16 @@ HWND hSystemDialog;
INT_PTR CALLBACK
SystemPageWndProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
- UNREFERENCED_PARAMETER(lParam)
- UNREFERENCED_PARAMETER(wParam)
+ UNREFERENCED_PARAMETER(lParam);
+ UNREFERENCED_PARAMETER(wParam);
switch (message) {
- case WM_INITDIALOG:
- hSystemDialog = hDlg;
- SetWindowPos(hDlg, NULL, 10, 32, 0, 0, SWP_NOACTIVATE | SWP_NOOWNERZORDER | SWP_NOSIZE | SWP_NOZORDER);
- return TRUE;
- }
+ case WM_INITDIALOG:
+ {
+ hSystemDialog = hDlg;
+ SetWindowPos(hDlg, NULL, 10, 32, 0, 0, SWP_NOACTIVATE | SWP_NOOWNERZORDER | SWP_NOSIZE | SWP_NOZORDER);
+ return TRUE;
+ }
+ }
- return 0;
+ return 0;
}
diff --git a/reactos/base/applications/msconfig/toolspage.c b/reactos/base/applications/msconfig/toolspage.c
index 1f5e9f8b8e5..81d6bdd9a2c 100644
--- a/reactos/base/applications/msconfig/toolspage.c
+++ b/reactos/base/applications/msconfig/toolspage.c
@@ -20,11 +20,11 @@ DWORD ListItems_Cmds[20];
DWORD ListItems_Params[20];
void AddItem ( DWORD name_id, DWORD descr_id, DWORD cmd_id , DWORD param_id ) {
- TCHAR szTemp[256];
+ TCHAR szTemp[256];
LV_ITEM item;
- LoadString(hInst, name_id, szTemp, 256);
- memset(&item, 0, sizeof(LV_ITEM));
+ LoadString(hInst, name_id, szTemp, 256);
+ memset(&item, 0, sizeof(LV_ITEM));
item.mask = LVIF_TEXT;
item.iImage = 0;
item.pszText = szTemp;
@@ -32,102 +32,114 @@ void AddItem ( DWORD name_id, DWORD descr_id, DWORD cmd_id , DWORD param_id ) {
item.lParam = 0;
(void)ListView_InsertItem(hToolsListCtrl, &item);
- ListItems_Cmds[item.iItem] = cmd_id;
- ListItems_Params[item.iItem] = param_id;
+ ListItems_Cmds[item.iItem] = cmd_id;
+ ListItems_Params[item.iItem] = param_id;
- LoadString(hInst, descr_id, szTemp, 256);
- item.pszText = szTemp;
- item.iSubItem = 1;
- SendMessage(hToolsListCtrl, LVM_SETITEMTEXT, item.iItem, (LPARAM) &item);
+ LoadString(hInst, descr_id, szTemp, 256);
+ item.pszText = szTemp;
+ item.iSubItem = 1;
+ SendMessage(hToolsListCtrl, LVM_SETITEMTEXT, item.iItem, (LPARAM) &item);
}
void FillListView ( void ) {
- AddItem(IDS_TOOLS_CMD_NAME, IDS_TOOLS_CMD_DESCR, IDS_TOOLS_CMD_CMD, IDS_TOOLS_CMD_PARAM);
- AddItem(IDS_TOOLS_REGEDIT_NAME, IDS_TOOLS_REGEDIT_DESCR, IDS_TOOLS_REGEDIT_CMD,IDS_TOOLS_REGEDIT_PARAM);
- AddItem(IDS_TOOLS_SYSDM_NAME, IDS_TOOLS_SYSDM_DESCR, IDS_TOOLS_SYSDM_CMD, IDS_TOOLS_SYSDM_PARAM);
- AddItem(IDS_TOOLS_INFO_NAME, IDS_TOOLS_INFO_DESCR, IDS_TOOLS_INFO_CMD, IDS_TOOLS_INFO_PARAM);
+ AddItem(IDS_TOOLS_CMD_NAME, IDS_TOOLS_CMD_DESCR, IDS_TOOLS_CMD_CMD, IDS_TOOLS_CMD_PARAM);
+ AddItem(IDS_TOOLS_REGEDIT_NAME, IDS_TOOLS_REGEDIT_DESCR, IDS_TOOLS_REGEDIT_CMD,IDS_TOOLS_REGEDIT_PARAM);
+ AddItem(IDS_TOOLS_SYSDM_NAME, IDS_TOOLS_SYSDM_DESCR, IDS_TOOLS_SYSDM_CMD, IDS_TOOLS_SYSDM_PARAM);
+ AddItem(IDS_TOOLS_INFO_NAME, IDS_TOOLS_INFO_DESCR, IDS_TOOLS_INFO_CMD, IDS_TOOLS_INFO_PARAM);
}
INT_PTR CALLBACK
ToolsPageWndProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
- LV_COLUMN column;
- TCHAR szTemp[256];
- TCHAR szTemp2[256];
- LPNMITEMACTIVATE lpnmitem;
- LPNMHDR nmh;
- DWORD dwStyle;
+ LV_COLUMN column;
+ TCHAR szTemp[256];
+ TCHAR szTemp2[256];
+ LPNMITEMACTIVATE lpnmitem;
+ LPNMHDR nmh;
+ DWORD dwStyle;
- switch (message) {
- case WM_INITDIALOG:
-
- hToolsListCtrl = GetDlgItem(hDlg, IDC_TOOLS_LIST);
- hToolsDialog = hDlg;
-
- dwStyle = (DWORD) SendMessage(hToolsListCtrl, LVM_GETEXTENDEDLISTVIEWSTYLE, 0, 0);
- dwStyle = dwStyle | LVS_EX_FULLROWSELECT;
- SendMessage(hToolsListCtrl, LVM_SETEXTENDEDLISTVIEWSTYLE, 0, dwStyle);
-
- SetWindowPos(hDlg, NULL, 10, 32, 0, 0, SWP_NOACTIVATE | SWP_NOOWNERZORDER | SWP_NOSIZE | SWP_NOZORDER);
-
- // Initialize the application page's controls
- column.mask = LVCF_TEXT | LVCF_WIDTH;
-
- LoadString(hInst, IDS_TOOLS_COLUMN_NAME, szTemp, 256);
- column.pszText = szTemp;
- column.cx = 150;
- (void)ListView_InsertColumn(hToolsListCtrl, 0, &column);
-
- column.mask = LVCF_TEXT | LVCF_WIDTH;
- LoadString(hInst, IDS_TOOLS_COLUMN_DESCR, szTemp, 256);
- column.pszText = szTemp;
- column.cx = 500;
- (void)ListView_InsertColumn(hToolsListCtrl, 1, &column);
-
- FillListView();
- return TRUE;
-
- case WM_COMMAND:
- switch (LOWORD(wParam))
+ switch (message)
+ {
+ case WM_INITDIALOG:
{
- case IDC_BTN_RUN:
- if (ListView_GetSelectionMark(hToolsListCtrl) != -1) {
- LoadString(hInst, ListItems_Cmds[ListView_GetSelectionMark(hToolsListCtrl)], szTemp, 256);
- LoadString(hInst, ListItems_Params[ListView_GetSelectionMark(hToolsListCtrl)], szTemp2, 256);
- ShellExecute(0, _T("open"), szTemp, szTemp2, _T(""), SW_NORMAL);
- }
- }
- break;
+ hToolsListCtrl = GetDlgItem(hDlg, IDC_TOOLS_LIST);
+ hToolsDialog = hDlg;
- case WM_NOTIFY:
- nmh = (LPNMHDR) lParam;
- if (nmh->hwndFrom == hToolsListCtrl)
- {
- switch (nmh->code)
- {
- case NM_CLICK:
- lpnmitem = (LPNMITEMACTIVATE) lParam;
- if (lpnmitem->iItem > -1) {
- LoadString(hInst, ListItems_Cmds[lpnmitem->iItem], szTemp, 256);
- LoadString(hInst, ListItems_Params[lpnmitem->iItem], szTemp2, 256);
- _tcscat(szTemp, _T(" "));
- _tcscat(szTemp, szTemp2);
- SendDlgItemMessage(hToolsDialog, IDC_TOOLS_CMDLINE, WM_SETTEXT, 0, (LPARAM) szTemp);
- }
- break;
- case NM_DBLCLK:
- lpnmitem = (LPNMITEMACTIVATE) lParam;
- if (lpnmitem->iItem > -1) {
- LoadString(hInst, ListItems_Cmds[lpnmitem->iItem], szTemp, 256);
- LoadString(hInst, ListItems_Params[lpnmitem->iItem], szTemp2, 256);
- ShellExecute(0, _T("open"), szTemp, szTemp2, _T(""), SW_NORMAL);
- }
- break;
- }
- }
- break;
- }
+ dwStyle = (DWORD) SendMessage(hToolsListCtrl, LVM_GETEXTENDEDLISTVIEWSTYLE, 0, 0);
+ dwStyle = dwStyle | LVS_EX_FULLROWSELECT;
+ SendMessage(hToolsListCtrl, LVM_SETEXTENDEDLISTVIEWSTYLE, 0, dwStyle);
- return 0;
+ SetWindowPos(hDlg, NULL, 10, 32, 0, 0, SWP_NOACTIVATE | SWP_NOOWNERZORDER | SWP_NOSIZE | SWP_NOZORDER);
+
+ // Initialize the application page's controls
+ column.mask = LVCF_TEXT | LVCF_WIDTH;
+
+ LoadString(hInst, IDS_TOOLS_COLUMN_NAME, szTemp, 256);
+ column.pszText = szTemp;
+ column.cx = 150;
+ (void)ListView_InsertColumn(hToolsListCtrl, 0, &column);
+
+ column.mask = LVCF_TEXT | LVCF_WIDTH;
+ LoadString(hInst, IDS_TOOLS_COLUMN_DESCR, szTemp, 256);
+ column.pszText = szTemp;
+ column.cx = 500;
+ (void)ListView_InsertColumn(hToolsListCtrl, 1, &column);
+
+ FillListView();
+ return TRUE;
+ }
+ case WM_COMMAND:
+ {
+ switch (LOWORD(wParam))
+ {
+ case IDC_BTN_RUN:
+ {
+ if (ListView_GetSelectionMark(hToolsListCtrl) != -1)
+ {
+ LoadString(hInst, ListItems_Cmds[ListView_GetSelectionMark(hToolsListCtrl)], szTemp, 256);
+ LoadString(hInst, ListItems_Params[ListView_GetSelectionMark(hToolsListCtrl)], szTemp2, 256);
+ ShellExecute(0, _T("open"), szTemp, szTemp2, _T(""), SW_NORMAL);
+ }
+ }
+ }
+ break;
+ }
+ case WM_NOTIFY:
+ {
+ nmh = (LPNMHDR) lParam;
+ if (nmh->hwndFrom == hToolsListCtrl)
+ {
+ switch (nmh->code)
+ {
+ case NM_CLICK:
+ {
+ lpnmitem = (LPNMITEMACTIVATE) lParam;
+ if (lpnmitem->iItem > -1)
+ {
+ LoadString(hInst, ListItems_Cmds[lpnmitem->iItem], szTemp, 256);
+ LoadString(hInst, ListItems_Params[lpnmitem->iItem], szTemp2, 256);
+ _tcscat(szTemp, _T(" "));
+ _tcscat(szTemp, szTemp2);
+ SendDlgItemMessage(hToolsDialog, IDC_TOOLS_CMDLINE, WM_SETTEXT, 0, (LPARAM) szTemp);
+ }
+ break;
+ }
+ case NM_DBLCLK:
+ {
+ lpnmitem = (LPNMITEMACTIVATE) lParam;
+ if (lpnmitem->iItem > -1)
+ {
+ LoadString(hInst, ListItems_Cmds[lpnmitem->iItem], szTemp, 256);
+ LoadString(hInst, ListItems_Params[lpnmitem->iItem], szTemp2, 256);
+ ShellExecute(0, _T("open"), szTemp, szTemp2, _T(""), SW_NORMAL);
+ }
+ break;
+ }
+ }
+ }
+ }
+ break;
+ }
+ return 0;
}
diff --git a/reactos/base/applications/network/finger/net.c b/reactos/base/applications/network/finger/net.c
index 3362fb2d5df..7f932ef2b5d 100644
--- a/reactos/base/applications/network/finger/net.c
+++ b/reactos/base/applications/network/finger/net.c
@@ -33,17 +33,14 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
-#include
-#include
+#include
#include
#include
#include
#include "various.h"
-int close(int);
-
void
netfinger(char *name)
{
@@ -90,7 +87,7 @@ netfinger(char *name)
(void)printf("[%s]\n", hp->h_name);
if (connect(s, (struct sockaddr *)&sin, sizeof(sin)) < 0) {
fprintf(stderr, "finger: connect rc = %d", WSAGetLastError());
- (void)close(s);
+ (void)closesocket(s);
return;
}
diff --git a/reactos/base/applications/network/ftp/ftp.rbuild b/reactos/base/applications/network/ftp/ftp.rbuild
index 09e94576e93..7117e598aeb 100644
--- a/reactos/base/applications/network/ftp/ftp.rbuild
+++ b/reactos/base/applications/network/ftp/ftp.rbuild
@@ -1,11 +1,12 @@
-
+
.
kernel32
ws2_32
+ crtdll
iphlpapi
cmds.c
cmdtab.c
diff --git a/reactos/base/applications/network/ipconfig/En.rc b/reactos/base/applications/network/ipconfig/En.rc
new file mode 100644
index 00000000000..17eb42e9d5a
--- /dev/null
+++ b/reactos/base/applications/network/ipconfig/En.rc
@@ -0,0 +1,65 @@
+LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ IDS_BCAST "Broadcast"
+ IDS_P2P "Peer To Peer"
+ IDS_MIXED "Mixed"
+ IDS_HYBRID "Hybrid"
+ IDS_UNKNOWN "unknown"
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ IDS_OTHER "Other Type Of Adapter"
+ IDS_ETH "Ethernet Adapter"
+ IDS_TOKEN "Token Ring Adapter"
+ IDS_FDDI "FDDI Adapter"
+ IDS_PPP "PPP Adapter"
+ IDS_LOOP "Loopback Adapter"
+ IDS_SLIP "SLIP Adapter"
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+/* Please keep the spacing/formatting as per En.rc when translating */
+ IDS_USAGE
+ "\nUSAGE:\n \
+ ipconfig [/? | /all | /renew [adapter] | /release [adapter] |\n \
+ /flushdns | /displaydns | /registerdns |\n \
+ /showclassid adapter |\n \
+ /setclassid adapter [classid] ]\n \
+ \n \
+ where\n \
+ adapter Connection name\n \
+ (wildcard characters * and ? allowed, see examples)\n \
+ \n \
+ Options:\n \
+ /? Display this help message\n \
+ /all Display full configuration information.\n \
+ /release Release the IP address for the specified adapter.\n \
+ /renew Renew the IP address for the specified adapter.\n \
+ /flushdns Purges the DNS Resolver cache.\n \
+ /registerdns Refreshes all DHCP leases and re-registers DNS names.\n \
+ /displaydns Display the contents of the DNS Resolver Cache.\n \
+ /showclassid Displays all the dhcp class IDs allowed for adapter.\n \
+ /setclassid Modifies the dhcp class id.\n \
+ \n \
+ The default is to display only the IP address, subnet mask and\n \
+ default gateway for each adapter bound to TCP/IP.\n \
+ \n \
+ For Release and Renew, if no adapter name is specified, then the IP address\n \
+ leases for all adapters bound to TCP/IP will be released or renewed.\n \
+ \n \
+ For Setclassid, if no ClassId is specified, then the ClassId is removed.\n \
+ \n \
+ Examples:\n \
+ > ipconfig ... Show information.\n \
+ > ipconfig /all ... Show detailed information\n \
+ > ipconfig /renew ... renew all adapters\n \
+ > ipconfig /renew EL* ... renew any connection that has its\n \
+ name starting with EL\n \
+ > ipconfig /release *Con* ... release all matching connections,\n \
+ eg. ""Local Area Connection 1"" or\n \
+ ""Local Area Connection 2""\n"
+END
diff --git a/reactos/base/applications/network/ipconfig/ipconfig.c b/reactos/base/applications/network/ipconfig/ipconfig.c
index 8c0c4125964..4d496d53d49 100644
--- a/reactos/base/applications/network/ipconfig/ipconfig.c
+++ b/reactos/base/applications/network/ipconfig/ipconfig.c
@@ -1,15 +1,9 @@
/*
- * ReactOS Win32 Applications
- * Copyright (C) 2005 ReactOS Team
- *
- * COPYRIGHT: See COPYING in the top level directory
- * PROJECT: ReactOS arp utility
+ * PROJECT: ReactOS ipconfig utility
+ * LICENSE: GPL - See COPYING in the top level directory
* FILE: apps/utils/net/ipconfig/ipconfig.c
- * PURPOSE:
- * PROGRAMMERS: Ged Murphy (gedmurphy@gmail.com)
- * REVISIONS:
- * GM 14/09/05 Created
- *
+ * PURPOSE: Display IP info for net adapters
+ * PROGRAMMERS: Copyright 2005 - 2006 Ged Murphy (gedmurphy@gmail.com)
*/
/*
* TODO:
@@ -17,47 +11,108 @@
* implement flushdns, registerdns, displaydns, showclassid, setclassid
* allow globbing on adapter names
*/
+
#define WIN32_LEAN_AND_MEAN
#include
#include
-#include
-#include
#include
-#include
-#include
-#include
+#include
#include
+#include "resource.h"
-#define UNICODE
-#define _UNICODE
+#define GUID_LEN 40
+
+HINSTANCE hInstance;
+HANDLE ProcessHeap;
-
-LPCTSTR GetNodeTypeName(UINT NodeType)
+LPTSTR GetNodeTypeName(UINT NodeType)
{
- switch (NodeType) {
- case 1: return _T("Broadcast");
- case 2: return _T("Peer To Peer");
- case 4: return _T("Mixed");
- case 8: return _T("Hybrid");
- default : return _T("unknown");
+ static TCHAR szNode[14];
+
+ switch (NodeType)
+ {
+ case 1:
+ if (!LoadString(hInstance, IDS_BCAST, szNode, sizeof(szNode)))
+ return NULL;
+ break;
+
+ case 2:
+ if (!LoadString(hInstance, IDS_P2P, szNode, sizeof(szNode)))
+ return NULL;
+ break;
+
+ case 4:
+ if (!LoadString(hInstance, IDS_MIXED, szNode, sizeof(szNode)))
+ return NULL;
+ break;
+
+ case 8:
+ if (!LoadString(hInstance, IDS_HYBRID, szNode, sizeof(szNode)))
+ return NULL;
+ break;
+
+ default :
+ if (!LoadString(hInstance, IDS_UNKNOWN, szNode, sizeof(szNode)))
+ return NULL;
+ break;
}
+
+ return szNode;
}
-LPCTSTR GetInterfaceTypeName(UINT InterfaceType)
+
+LPTSTR GetInterfaceTypeName(UINT InterfaceType)
{
- switch (InterfaceType) {
- case MIB_IF_TYPE_OTHER: return _T("Other Type Of Adapter");
- case MIB_IF_TYPE_ETHERNET: return _T("Ethernet Adapter");
- case MIB_IF_TYPE_TOKENRING: return _T("Token Ring Adapter");
- case MIB_IF_TYPE_FDDI: return _T("FDDI Adapter");
- case MIB_IF_TYPE_PPP: return _T("PPP Adapter");
- case MIB_IF_TYPE_LOOPBACK: return _T("Loopback Adapter");
- case MIB_IF_TYPE_SLIP: return _T("SLIP Adapter");
- default: return _T("unknown");
+ static TCHAR szIntType[25];
+
+ switch (InterfaceType)
+ {
+ case MIB_IF_TYPE_OTHER:
+ if (!LoadString(hInstance, IDS_OTHER, szIntType, sizeof(szIntType)))
+ return NULL;
+ break;
+
+ case MIB_IF_TYPE_ETHERNET:
+ if (!LoadString(hInstance, IDS_ETH, szIntType, sizeof(szIntType)))
+ return NULL;
+ break;
+
+ case MIB_IF_TYPE_TOKENRING:
+ if (!LoadString(hInstance, IDS_TOKEN, szIntType, sizeof(szIntType)))
+ return NULL;
+ break;
+
+ case MIB_IF_TYPE_FDDI:
+ if (!LoadString(hInstance, IDS_FDDI, szIntType, sizeof(szIntType)))
+ return NULL;
+ break;
+
+ case MIB_IF_TYPE_PPP:
+ if (!LoadString(hInstance, IDS_PPP, szIntType, sizeof(szIntType)))
+ return NULL;
+ break;
+
+ case MIB_IF_TYPE_LOOPBACK:
+ if (!LoadString(hInstance, IDS_LOOP, szIntType, sizeof(szIntType)))
+ return NULL;
+ break;
+
+ case MIB_IF_TYPE_SLIP:
+ if (!LoadString(hInstance, IDS_SLIP, szIntType, sizeof(szIntType)))
+ return NULL;
+ break;
+
+ default:
+ if (!LoadString(hInstance, IDS_UNKNOWN, szIntType, sizeof(szIntType)))
+ return NULL;
+ break;
}
+
+ return szIntType;
}
+
/* print MAC address */
PTCHAR PrintMacAddr(PBYTE Mac)
{
@@ -69,84 +124,286 @@ PTCHAR PrintMacAddr(PBYTE Mac)
return MacAddr;
}
-DWORD DoFormatMessage(DWORD ErrorCode)
+
+VOID DoFormatMessage(LONG ErrorCode)
{
LPVOID lpMsgBuf;
- DWORD RetVal;
+ //DWORD ErrorCode;
- if ((RetVal = FormatMessage(
- FORMAT_MESSAGE_ALLOCATE_BUFFER |
- FORMAT_MESSAGE_FROM_SYSTEM |
- FORMAT_MESSAGE_IGNORE_INSERTS,
- NULL,
- ErrorCode,
- MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), /* Default language */
- (LPTSTR) &lpMsgBuf,
- 0,
- NULL ))) {
+ if (ErrorCode == 0)
+ ErrorCode = GetLastError();
+
+ if (FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER |
+ FORMAT_MESSAGE_FROM_SYSTEM |
+ FORMAT_MESSAGE_IGNORE_INSERTS,
+ NULL,
+ ErrorCode,
+ MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), /* Default language */
+ (LPTSTR) &lpMsgBuf,
+ 0,
+ NULL))
+ {
_tprintf(_T("%s"), (LPTSTR)lpMsgBuf);
-
LocalFree(lpMsgBuf);
- /* return number of TCHAR's stored in output buffer
- * excluding '\0' - as FormatMessage does*/
- return RetVal;
}
- else
- return 0;
}
-INT ShowInfo(BOOL bAll)
+
+LPTSTR GetConnectionType(LPTSTR lpClass)
+{
+ HKEY hKey = NULL;
+ LPTSTR ConType = NULL;
+ TCHAR Path[256];
+ LPTSTR PrePath = _T("SYSTEM\\CurrentControlSet\\Control\\Network\\{4D36E972-E325-11CE-BFC1-08002BE10318}\\");
+ LPTSTR PostPath = _T("\\Connection");
+ DWORD PathSize;
+ DWORD dwType;
+ DWORD dwDataSize;
+
+ /* don't overflow the buffer */
+ PathSize = lstrlen(PrePath) + lstrlen(lpClass) + lstrlen(PostPath) + 1;
+ if (PathSize >= 255)
+ return NULL;
+
+ wsprintf(Path, _T("%s%s%s"), PrePath, lpClass, PostPath);
+
+ if (RegOpenKeyEx(HKEY_LOCAL_MACHINE,
+ Path,
+ 0,
+ KEY_READ,
+ &hKey) == ERROR_SUCCESS)
+ {
+ if(RegQueryValueEx(hKey,
+ _T("Name"),
+ NULL,
+ &dwType,
+ NULL,
+ &dwDataSize) == ERROR_SUCCESS)
+ {
+ ConType = (LPTSTR)HeapAlloc(ProcessHeap,
+ 0,
+ dwDataSize);
+ if (ConType == NULL)
+ return NULL;
+
+ if(RegQueryValueEx(hKey,
+ _T("Name"),
+ NULL,
+ &dwType,
+ (PBYTE)ConType,
+ &dwDataSize) != ERROR_SUCCESS)
+ {
+ ConType = NULL;
+ }
+ }
+ }
+
+ if (hKey != NULL)
+ RegCloseKey(hKey);
+
+ return ConType;
+}
+
+
+LPTSTR GetConnectionDescription(LPTSTR lpClass)
+{
+ HKEY hBaseKey = NULL;
+ HKEY hClassKey = NULL;
+ LPTSTR lpKeyClass = NULL;
+ LPTSTR lpConDesc = NULL;
+ LPTSTR lpPath = NULL;
+ TCHAR szPrePath[] = _T("SYSTEM\\CurrentControlSet\\Control\\Class\\{4D36E972-E325-11CE-BFC1-08002bE10318}\\");
+ DWORD dwType;
+ DWORD dwDataSize;
+ INT i;
+
+ if (RegOpenKeyEx(HKEY_LOCAL_MACHINE,
+ szPrePath,
+ 0,
+ KEY_READ,
+ &hBaseKey) != ERROR_SUCCESS)
+ {
+ return NULL;
+ }
+
+ for (i=0; ; i++)
+ {
+ DWORD PathSize;
+ LONG Status;
+ TCHAR szName[10];
+ DWORD NameLen = 9;
+
+ if ((Status = RegEnumKeyEx(hBaseKey,
+ i,
+ szName,
+ &NameLen,
+ NULL,
+ NULL,
+ NULL,
+ NULL)) != ERROR_SUCCESS)
+ {
+ if (Status == ERROR_NO_MORE_ITEMS)
+ {
+ DoFormatMessage(Status);
+ lpConDesc = NULL;
+ goto CLEANUP;
+ }
+ else
+ continue;
+ }
+
+ PathSize = lstrlen(szPrePath) + lstrlen(szName) + 1;
+ lpPath = (LPTSTR)HeapAlloc(ProcessHeap,
+ 0,
+ PathSize * sizeof(TCHAR));
+ if (lpPath == NULL)
+ goto CLEANUP;
+
+ wsprintf(lpPath, _T("%s%s"), szPrePath, szName);
+
+ //MessageBox(NULL, lpPath, NULL, 0);
+
+ if (RegOpenKeyEx(HKEY_LOCAL_MACHINE,
+ lpPath,
+ 0,
+ KEY_READ,
+ &hClassKey) != ERROR_SUCCESS)
+ {
+ goto CLEANUP;
+ }
+
+ HeapFree(ProcessHeap, 0, lpPath);
+ lpPath = NULL;
+
+ if(RegQueryValueEx(hClassKey,
+ _T("NetCfgInstanceId"),
+ NULL,
+ &dwType,
+ NULL,
+ &dwDataSize) == ERROR_SUCCESS)
+ {
+ lpKeyClass = (LPTSTR)HeapAlloc(ProcessHeap,
+ 0,
+ dwDataSize);
+ if (lpKeyClass == NULL)
+ goto CLEANUP;
+
+ if(RegQueryValueEx(hClassKey,
+ _T("NetCfgInstanceId"),
+ NULL,
+ &dwType,
+ (PBYTE)lpKeyClass,
+ &dwDataSize) != ERROR_SUCCESS)
+ {
+ lpKeyClass = NULL;
+ HeapFree(ProcessHeap, 0, lpKeyClass);
+ continue;
+ }
+ }
+ else
+ continue;
+
+ if (!lstrcmp(lpClass, lpKeyClass))
+ {
+ HeapFree(ProcessHeap, 0, lpKeyClass);
+ lpKeyClass = NULL;
+
+ if(RegQueryValueEx(hClassKey,
+ _T("DriverDesc"),
+ NULL,
+ &dwType,
+ NULL,
+ &dwDataSize) == ERROR_SUCCESS)
+ {
+ lpConDesc = (LPTSTR)HeapAlloc(ProcessHeap,
+ 0,
+ dwDataSize);
+ if (lpConDesc == NULL)
+ goto CLEANUP;
+
+ if(RegQueryValueEx(hClassKey,
+ _T("DriverDesc"),
+ NULL,
+ &dwType,
+ (PBYTE)lpConDesc,
+ &dwDataSize) != ERROR_SUCCESS)
+ {
+ lpConDesc = NULL;
+ goto CLEANUP;
+ }
+ }
+ else
+ lpConDesc = NULL;
+
+ break;
+ }
+ }
+
+CLEANUP:
+ if (hBaseKey != NULL)
+ RegCloseKey(hBaseKey);
+ if (hClassKey != NULL)
+ RegCloseKey(hClassKey);
+ if (lpConDesc != NULL)
+ HeapFree(ProcessHeap, 0, lpPath);
+ if (lpConDesc != NULL)
+ HeapFree(ProcessHeap, 0, lpKeyClass);
+
+ return lpConDesc;
+}
+
+
+VOID ShowInfo(BOOL bAll)
{
PIP_ADAPTER_INFO pAdapterInfo = NULL;
PIP_ADAPTER_INFO pAdapter = NULL;
- ULONG adaptOutBufLen;
+ ULONG adaptOutBufLen = 0;
+ PFIXED_INFO pFixedInfo = NULL;
+ ULONG netOutBufLen = 0;
- PFIXED_INFO pFixedInfo;
- ULONG netOutBufLen;
- PIP_ADDR_STRING pIPAddr = NULL;
+ /* call GetAdaptersInfo to obtain the adapter info */
+ if (GetAdaptersInfo(pAdapterInfo, &adaptOutBufLen) == ERROR_BUFFER_OVERFLOW)
+ {
+ pAdapterInfo = (IP_ADAPTER_INFO *)HeapAlloc(ProcessHeap, 0, adaptOutBufLen);
+ if (pAdapterInfo == NULL)
+ return;
- DWORD ErrRet = 0;
-
- /* assign memory for call to GetNetworkParams */
- pFixedInfo = (FIXED_INFO *) GlobalAlloc( GPTR, sizeof( FIXED_INFO ) );
- netOutBufLen = sizeof(FIXED_INFO);
-
- /* assign memory for call to GetAdapterInfo */
- pAdapterInfo = (IP_ADAPTER_INFO *) malloc( sizeof(IP_ADAPTER_INFO) );
- adaptOutBufLen = sizeof(IP_ADAPTER_INFO);
-
- /* set required buffer size */
- if(GetNetworkParams(pFixedInfo, &netOutBufLen) == ERROR_BUFFER_OVERFLOW)
- {
- GlobalFree(pFixedInfo);
- pFixedInfo = (FIXED_INFO *) GlobalAlloc(GPTR, netOutBufLen);
+ if (GetAdaptersInfo(pAdapterInfo, &adaptOutBufLen) != NO_ERROR)
+ {
+ DoFormatMessage(0);
+ HeapFree(ProcessHeap, 0, pAdapterInfo);
+ return;
+ }
+ }
+ else
+ {
+ DoFormatMessage(0);
+ return;
}
- /* set required buffer size */
- if (GetAdaptersInfo( pAdapterInfo, &adaptOutBufLen) == ERROR_BUFFER_OVERFLOW)
- {
- free(pAdapterInfo);
- pAdapterInfo = (IP_ADAPTER_INFO *) malloc (adaptOutBufLen);
+ /* call GetNetworkParams to obtain the network info */
+ if(GetNetworkParams(pFixedInfo, &netOutBufLen) == ERROR_BUFFER_OVERFLOW)
+ {
+ pFixedInfo = (FIXED_INFO *)HeapAlloc(ProcessHeap, 0, netOutBufLen);
+ if (pFixedInfo == NULL)
+ return;
+
+ if (GetNetworkParams(pFixedInfo, &netOutBufLen) != NO_ERROR)
+ {
+ DoFormatMessage(0);
+ HeapFree(ProcessHeap, 0, pFixedInfo);
+ return;
+ }
+ }
+ else
+ {
+ DoFormatMessage(0);
+ return;
}
- if ((ErrRet = GetAdaptersInfo(pAdapterInfo, &adaptOutBufLen)) != NO_ERROR)
- {
- _tprintf(_T("GetAdaptersInfo failed : "));
- DoFormatMessage(ErrRet);
- return EXIT_FAILURE;
- }
-
- if ((ErrRet = GetNetworkParams(pFixedInfo, &netOutBufLen)) != NO_ERROR)
- {
- _tprintf(_T("GetNetworkParams failed : "));
- DoFormatMessage(ErrRet);
- return EXIT_FAILURE;
- }
-
pAdapter = pAdapterInfo;
_tprintf(_T("\nReactOS IP Configuration\n\n"));
-
if (bAll)
{
_tprintf(_T("\tHost Name . . . . . . . . . . . . : %s\n"), pFixedInfo->HostName);
@@ -163,11 +420,17 @@ INT ShowInfo(BOOL bAll)
_tprintf(_T("\tDNS Suffix Search List. . . . . . : %s\n"), pFixedInfo->DomainName);
}
- while (pAdapter)
- {
+ while (pAdapter)
+ {
+ LPTSTR IntType, myConType;
+
+ IntType = GetInterfaceTypeName(pAdapter->Type);
+ myConType = GetConnectionType(pAdapter->AdapterName);
+
+ _tprintf(_T("\n%s %s: \n\n"), IntType , myConType);
+
+ if (myConType != NULL) HeapFree(ProcessHeap, 0, myConType);
- _tprintf(_T("\n%s ...... : \n\n"), GetInterfaceTypeName(pAdapter->Type));
-
/* check if the adapter is connected to the media */
if (_tcscmp(pAdapter->IpAddressList.IpAddress.String, "0.0.0.0") == 0)
{
@@ -175,12 +438,12 @@ INT ShowInfo(BOOL bAll)
pAdapter = pAdapter->Next;
continue;
}
-
+
_tprintf(_T("\tConnection-specific DNS Suffix. . : %s\n"), pFixedInfo->DomainName);
if (bAll)
{
- _tprintf(_T("\tDescription . . . . . . . . . . . : %s\n"), pAdapter->Description);
+ _tprintf(_T("\tDescription . . . . . . . . . . . : %s\n"), GetConnectionDescription(pAdapter->AdapterName));
_tprintf(_T("\tPhysical Address. . . . . . . . . : %s\n"), PrintMacAddr(pAdapter->Address));
if (pAdapter->DhcpEnabled)
_tprintf(_T("\tDHCP Enabled. . . . . . . . . . . : Yes\n"));
@@ -195,22 +458,26 @@ INT ShowInfo(BOOL bAll)
if (bAll)
{
+ PIP_ADDR_STRING pIPAddr;
+
if (pAdapter->DhcpEnabled)
_tprintf(_T("\tDHCP Server . . . . . . . . . . . : %s\n"), pAdapter->DhcpServer.IpAddress.String);
_tprintf(_T("\tDNS Servers . . . . . . . . . . . : "));
_tprintf(_T("%s\n"), pFixedInfo->DnsServerList.IpAddress.String);
- pIPAddr = pFixedInfo -> DnsServerList.Next;
+ pIPAddr = pFixedInfo->DnsServerList.Next;
while (pIPAddr)
{
_tprintf(_T("\t\t\t\t\t %s\n"), pIPAddr ->IpAddress.String );
- pIPAddr = pIPAddr ->Next;
+ pIPAddr = pIPAddr->Next;
}
+
if (pAdapter->HaveWins)
{
_tprintf(_T("\tPrimary WINS Server . . . . . . . : %s\n"), pAdapter->PrimaryWinsServer.IpAddress.String);
_tprintf(_T("\tSecondard WINS Server . . . . . . : %s\n"), pAdapter->SecondaryWinsServer.IpAddress.String);
}
+
if (pAdapter->DhcpEnabled)
{
_tprintf(_T("\tLease Obtained. . . . . . . . . . : %s"), _tasctime(localtime(&pAdapter->LeaseObtained)));
@@ -218,51 +485,56 @@ INT ShowInfo(BOOL bAll)
}
}
_tprintf(_T("\n"));
-
- pAdapter = pAdapter->Next;
+
+ pAdapter = pAdapter->Next;
}
-
- return 0;
+
+ HeapFree(ProcessHeap, 0, pFixedInfo);
+ HeapFree(ProcessHeap, 0, pAdapterInfo);
}
-INT Release(TCHAR Index)
+VOID Release(LPTSTR Index)
{
IP_ADAPTER_INDEX_MAP AdapterInfo;
- DWORD dwRetVal = 0;
+ DWORD ret;
/* if interface is not given, query GetInterfaceInfo */
- if (Index == (TCHAR)NULL)
+ if (Index == NULL)
{
- PIP_INTERFACE_INFO pInfo;
- ULONG ulOutBufLen;
- pInfo = (IP_INTERFACE_INFO *) malloc(sizeof(IP_INTERFACE_INFO));
- ulOutBufLen = 0;
+ PIP_INTERFACE_INFO pInfo = NULL;
+ ULONG ulOutBufLen = 0;
- /* Make an initial call to GetInterfaceInfo to get
- * the necessary size into the ulOutBufLen variable */
- if ( GetInterfaceInfo(pInfo, &ulOutBufLen) == ERROR_INSUFFICIENT_BUFFER)
+ if (GetInterfaceInfo(pInfo, &ulOutBufLen) == ERROR_INSUFFICIENT_BUFFER)
{
- GlobalFree(pInfo);
- pInfo = (IP_INTERFACE_INFO *) malloc (ulOutBufLen);
- }
+ pInfo = (IP_INTERFACE_INFO *)HeapAlloc(ProcessHeap, 0, ulOutBufLen);
+ if (pInfo == NULL)
+ return;
- /* Make a second call to GetInterfaceInfo to get the actual data we want */
- if ((dwRetVal = GetInterfaceInfo(pInfo, &ulOutBufLen)) == NO_ERROR )
- {
- AdapterInfo = pInfo->Adapter[0];
- _tprintf(_T("name - %S\n"), pInfo->Adapter[0].Name);
+ if (GetInterfaceInfo(pInfo, &ulOutBufLen) == NO_ERROR )
+ {
+ CopyMemory(&AdapterInfo, &pInfo->Adapter[0], sizeof(IP_ADAPTER_INDEX_MAP));
+ _tprintf(_T("name - %S\n"), pInfo->Adapter[0].Name);
+ HeapFree(ProcessHeap, 0, pInfo);
+ }
+ else
+ {
+ DoFormatMessage(0);
+ HeapFree(ProcessHeap, 0, pInfo);
+ return;
+ }
}
else
{
- _tprintf(_T("\nGetInterfaceInfo failed : "));
- DoFormatMessage(dwRetVal);
+ DoFormatMessage(0);
+ return;
}
}
else
{
;
- /* we need to be able to release connections by name with support for globbing
+ /* FIXME:
+ * we need to be able to release connections by name with support for globbing
* i.e. ipconfig /release Eth* will release all cards starting with Eth...
* ipconfig /release *con* will release all cards with 'con' in their name
*/
@@ -270,52 +542,66 @@ INT Release(TCHAR Index)
/* Call IpReleaseAddress to release the IP address on the specified adapter. */
- if ((dwRetVal = IpReleaseAddress(&AdapterInfo)) != NO_ERROR)
+ if ((ret = IpReleaseAddress(&AdapterInfo)) != NO_ERROR)
{
- _tprintf(_T("\nAn error occured while releasing interface %s : "), _T("*name*"));
- DoFormatMessage(dwRetVal);
+ _tprintf(_T("\nAn error occured while releasing interface %S : \n"), AdapterInfo.Name);
+ DoFormatMessage(ret);
}
- return 0;
+
}
-INT Renew(TCHAR Index)
+VOID Renew(LPTSTR Index)
{
IP_ADAPTER_INDEX_MAP AdapterInfo;
- DWORD dwRetVal = 0;
/* if interface is not given, query GetInterfaceInfo */
- if (Index == (TCHAR)NULL)
+ if (Index == NULL)
{
PIP_INTERFACE_INFO pInfo;
- ULONG ulOutBufLen;
- pInfo = (IP_INTERFACE_INFO *) malloc(sizeof(IP_INTERFACE_INFO));
- ulOutBufLen = 0;
+ ULONG ulOutBufLen = 0;
+
+ pInfo = (IP_INTERFACE_INFO *)HeapAlloc(ProcessHeap, 0, sizeof(IP_INTERFACE_INFO));
+ if (pInfo == NULL)
+ {
+ _tprintf(_T("memory allocation error"));
+ return;
+ }
/* Make an initial call to GetInterfaceInfo to get
* the necessary size into the ulOutBufLen variable */
if ( GetInterfaceInfo(pInfo, &ulOutBufLen) == ERROR_INSUFFICIENT_BUFFER)
{
- GlobalFree(pInfo);
- pInfo = (IP_INTERFACE_INFO *) malloc (ulOutBufLen);
+ HeapFree(ProcessHeap, 0, pInfo);
+ pInfo = (IP_INTERFACE_INFO *)HeapAlloc(ProcessHeap, 0, ulOutBufLen);
+ if (pInfo == NULL)
+ {
+ _tprintf(_T("memory allocation error"));
+ return;
+ }
}
/* Make a second call to GetInterfaceInfo to get the actual data we want */
- if ((dwRetVal = GetInterfaceInfo(pInfo, &ulOutBufLen)) == NO_ERROR )
+ if (GetInterfaceInfo(pInfo, &ulOutBufLen) == NO_ERROR )
{
- AdapterInfo = pInfo->Adapter[0];
+ CopyMemory(&AdapterInfo, &pInfo->Adapter[0], sizeof(IP_ADAPTER_INDEX_MAP));
_tprintf(_T("name - %S\n"), pInfo->Adapter[0].Name);
- } else {
- _tprintf(_T("\nGetInterfaceInfo failed : "));
- DoFormatMessage(dwRetVal);
}
+ else
+ {
+ _tprintf(_T("\nGetInterfaceInfo failed : "));
+ DoFormatMessage(0);
+ }
+
+ HeapFree(ProcessHeap, 0, pInfo);
}
else
{
;
- /* we need to be able to renew connections by name with support for globbing
+ /* FIXME:
+ * we need to be able to renew connections by name with support for globbing
* i.e. ipconfig /renew Eth* will renew all cards starting with Eth...
* ipconfig /renew *con* will renew all cards with 'con' in their name
*/
@@ -323,95 +609,48 @@ INT Renew(TCHAR Index)
/* Call IpRenewAddress to renew the IP address on the specified adapter. */
- if ((dwRetVal = IpRenewAddress(&AdapterInfo)) != NO_ERROR)
+ if (IpRenewAddress(&AdapterInfo) != NO_ERROR)
{
_tprintf(_T("\nAn error occured while renew interface %s : "), _T("*name*"));
- DoFormatMessage(dwRetVal);
- }
- return 0;
-}
-
-/* temp func for testing purposes */
-VOID Info()
-{
- // Declare and initialize variables
- PIP_INTERFACE_INFO pInfo;
- ULONG ulOutBufLen;
- DWORD dwRetVal;
-
- pInfo = (IP_INTERFACE_INFO *) malloc( sizeof(IP_INTERFACE_INFO) );
- ulOutBufLen = sizeof(IP_INTERFACE_INFO);
- dwRetVal = 0;
-
-
- // Make an initial call to GetInterfaceInfo to get
- // the necessary size in the ulOutBufLen variable
- if ( GetInterfaceInfo(pInfo, &ulOutBufLen) == ERROR_INSUFFICIENT_BUFFER)
- {
- free(pInfo);
- pInfo = (IP_INTERFACE_INFO *) malloc (ulOutBufLen);
- }
-
- // Make a second call to GetInterfaceInfo to get
- // the actual data we need
- if ((dwRetVal = GetInterfaceInfo(pInfo, &ulOutBufLen)) == NO_ERROR )
- {
- int i;
- for (i=0; iNumAdapters; i++)
- {
- printf("\tAdapter Name: %S\n", pInfo->Adapter[i].Name);
- printf("\tAdapter Index: %ld\n", pInfo->Adapter[i].Index);
- printf("\tNum Adapters: %ld\n", pInfo->NumAdapters);
- }
- }
- else
- {
- printf("GetInterfaceInfo failed.\n");
- DoFormatMessage(dwRetVal);
+ DoFormatMessage(0);
}
}
+
VOID Usage(VOID)
{
- _tprintf(_T("\nUSAGE:\n"
- " ipconfig [/? | /all | /renew [adapter] | /release [adapter] |\n"
- " /flushdns | /displaydns | /registerdns |\n"
- " /showclassid adapter |\n"
- " /setclassid adapter [classid] ]\n"
- "\n"
- "where\n"
- " adapter Connection name\n"
- " (wildcard characters * and ? allowed, see examples)\n"
- "\n"
- " Options:\n"
- " /? Display this help message\n"
- " /all Display full configuration information.\n"
- " /release Release the IP address for the specified adapter.\n"
- " /renew Renew the IP address for the specified adapter.\n"
- " /flushdns Purges the DNS Resolver cache.\n"
- " /registerdns Refreshes all DHCP leases and re-registers DNS names.\n"
- " /displaydns Display the contents of the DNS Resolver Cache.\n"
- " /showclassid Displays all the dhcp class IDs allowed for adapter.\n"
- " /setclassid Modifies the dhcp class id.\n"
- "\n"
- "The default is to display only the IP address, subnet mask and\n"
- "default gateway for each adapter bound to TCP/IP.\n"
- "\n"
- "For Release and Renew, if no adapter name is specified, then the IP address\n"
- "leases for all adapters bound to TCP/IP will be released or renewed.\n"
- "\n"
- "For Setclassid, if no ClassId is specified, then the ClassId is removed.\n"
- "\n"
- "Examples:\n"
- " > ipconfig ... Show information.\n"
- " > ipconfig /all ... Show detailed information\n"
- " > ipconfig /renew ... renew all adapters\n"
- " > ipconfig /renew EL* ... renew any connection that has its\n"
- " name starting with EL\n"
- " > ipconfig /release *Con* ... release all matching connections,\n"
- " eg. \"Local Area Connection 1\" or\n"
- " \"Local Area Connection 2\"\n"));
+ HRSRC hRes;
+ LPTSTR lpUsage;
+ DWORD Size;
+
+ LPTSTR lpName = (LPTSTR)MAKEINTRESOURCE((IDS_USAGE >> 4) + 1);
+
+ hRes = FindResource(hInstance,
+ lpName,
+ RT_STRING);
+ if (hRes != NULL)
+ {
+ if ((Size = SizeofResource(hInstance,
+ hRes)))
+ {
+ lpUsage = (LPTSTR)HeapAlloc(ProcessHeap,
+ 0,
+ Size);
+ if (lpUsage == NULL)
+ return;
+
+ if (LoadString(hInstance,
+ IDS_USAGE,
+ lpUsage,
+ Size))
+ {
+ _tprintf(_T("%s"), lpUsage);
+ }
+ }
+ }
+
+
}
int main(int argc, char *argv[])
@@ -426,6 +665,9 @@ int main(int argc, char *argv[])
BOOL DoShowclassid=FALSE;
BOOL DoSetclassid=FALSE;
+ hInstance = GetModuleHandle(NULL);
+ ProcessHeap = GetProcessHeap();
+
/* Parse command line for options we have been given. */
if ( (argc > 1)&&(argv[1][0]=='/') )
{
@@ -472,15 +714,15 @@ int main(int argc, char *argv[])
case 1: /* Default behaviour if no options are given*/
ShowInfo(FALSE);
break;
- case 2: /* Process all the options that take no paramiters */
+ case 2: /* Process all the options that take no parameters */
if (DoUsage)
Usage();
else if (DoAll)
ShowInfo(TRUE);
else if (DoRelease)
- Release((TCHAR)NULL);
+ Release(NULL);
else if (DoRenew)
- Renew((TCHAR)NULL);
+ Renew(NULL);
else if (DoFlushdns)
_tprintf(_T("\nSorry /flushdns is not implemented yet\n"));
else if (DoRegisterdns)
@@ -490,7 +732,7 @@ int main(int argc, char *argv[])
else
Usage();
break;
- case 3: /* Process all the options that can have 1 paramiters */
+ case 3: /* Process all the options that can have 1 parameter */
if (DoRelease)
_tprintf(_T("\nSorry /release [adapter] is not implemented yet\n"));
//Release(argv[2]);
@@ -503,7 +745,7 @@ int main(int argc, char *argv[])
else
Usage();
break;
- case 4: /* Process all the options that can have 2 paramiters */
+ case 4: /* Process all the options that can have 2 parameters */
if (DoSetclassid)
_tprintf(_T("\nSorry /setclassid adapter [classid]is not implemented yet\n"));
else
@@ -515,3 +757,4 @@ int main(int argc, char *argv[])
return 0;
}
+
diff --git a/reactos/base/applications/network/ipconfig/ipconfig.rbuild b/reactos/base/applications/network/ipconfig/ipconfig.rbuild
index 425dc56db42..7cf80bb6976 100644
--- a/reactos/base/applications/network/ipconfig/ipconfig.rbuild
+++ b/reactos/base/applications/network/ipconfig/ipconfig.rbuild
@@ -1,11 +1,12 @@
- .
-
- kernel32
- user32
- iphlpapi
- ipconfig.c
- ipconfig.rc
+ .
+
+ kernel32
+ user32
+ iphlpapi
+ advapi32
+ ipconfig.c
+ ipconfig.rc
diff --git a/reactos/base/applications/network/ipconfig/ipconfig.rc b/reactos/base/applications/network/ipconfig/ipconfig.rc
index 15ce16298eb..5aa31a43b6c 100644
--- a/reactos/base/applications/network/ipconfig/ipconfig.rc
+++ b/reactos/base/applications/network/ipconfig/ipconfig.rc
@@ -1,5 +1,11 @@
-#define REACTOS_STR_FILE_DESCRIPTION "ReactOS TCP/IPv4 Win32 ipconfig\0"
-#define REACTOS_STR_INTERNAL_NAME "ipconfig\0"
-#define REACTOS_STR_ORIGINAL_FILENAME "ipconfig.exe\0"
-#define REACTOS_STR_ORIGINAL_COPYRIGHT "Ged Murphy (gedmurphy@gmail.com)\0"
+#include
+#include
+#include "resource.h"
+
+#define REACTOS_STR_FILE_DESCRIPTION "IP Configuration utility\0"
+#define REACTOS_STR_INTERNAL_NAME "ipconfig\0"
+#define REACTOS_STR_ORIGINAL_FILENAME "ipconfig.exe\0"
+#define REACTOS_STR_ORIGINAL_COPYRIGHT "Ged Murphy \0"
#include
+
+#include "En.rc"
diff --git a/reactos/base/applications/network/ipconfig/resource.h b/reactos/base/applications/network/ipconfig/resource.h
new file mode 100644
index 00000000000..fe99c936db7
--- /dev/null
+++ b/reactos/base/applications/network/ipconfig/resource.h
@@ -0,0 +1,18 @@
+
+#define IDS_USAGE 100
+
+#define IDS_UNKNOWN 101
+
+#define IDS_BCAST 102
+#define IDS_P2P 103
+#define IDS_MIXED 104
+#define IDS_HYBRID 105
+
+/* adapter types */
+#define IDS_OTHER 106
+#define IDS_ETH 107
+#define IDS_TOKEN 108
+#define IDS_FDDI 109
+#define IDS_PPP 110
+#define IDS_LOOP 111
+#define IDS_SLIP 112
diff --git a/reactos/base/applications/network/net/cmdStop.c b/reactos/base/applications/network/net/cmdStop.c
new file mode 100644
index 00000000000..16f36690403
--- /dev/null
+++ b/reactos/base/applications/network/net/cmdStop.c
@@ -0,0 +1,107 @@
+
+/*
+ * COPYRIGHT: See COPYING in the top level directory
+ * PROJECT: ReactOS net command
+ * FILE:
+ * PURPOSE:
+ *
+ * PROGRAMMERS: Magnus Olsen (greatlord@reactos.org)
+ */
+
+#include "net.h"
+
+INT cmdStop(INT argc, CHAR **argv )
+{
+ char *string;
+ long size = 100*sizeof(char);
+
+ if (argc>4)
+ {
+ help();
+ return 0;
+ }
+
+ if (argc==2)
+ {
+ string = (char *) malloc(size);
+ if (string != NULL)
+ {
+ sprintf(string,"rpcclient -c \"service enum\"");
+ system(string);
+ free(string);
+ }
+ return 0;
+ }
+
+ if (argc==3)
+ {
+ stop_service(argv[1]);
+ return 0;
+ }
+
+ return 0;
+}
+
+
+INT stop_service(CHAR *service)
+{
+
+ CHAR *srvlst;
+ LONG pos=0;
+ LONG old_pos=0;
+ LONG row_size=0;
+ LONG size=0;
+
+ CHAR *row; /* we assume display name can max be 20 row and each row is 80 char */
+
+
+ /* Get the size for srvlst */
+ myCreateProcessStartGetSzie("rpcclient -c \"service enum\"", &size);
+ if (size==0)
+ {
+ return 0;
+ }
+
+ srvlst = (CHAR *) malloc(size);
+ if (srvlst == NULL)
+ {
+ return 0;
+ }
+ /* Get the server list */
+ myCreateProcessStart("rpcclient -c \"service enum\"", srvlst, size);
+
+
+ /* scan after display name */
+ while (pos4)
+ {
+ help();
+ return 0;
+ }
+
+ if (argc==2)
+ {
+ string = (char *) malloc(size);
+ if (string != NULL)
+ {
+ sprintf(string,"rpcclient -c \"service enum\"");
+ system(string);
+ free(string);
+ }
+ return 0;
+ }
+
+ if (argc==3)
+ {
+ start_service(argv[1]);
+ return 0;
+ }
+
+ return 0;
+}
+
+
+INT start_service(CHAR *service)
+{
+
+ CHAR *srvlst;
+ LONG pos=0;
+ LONG old_pos=0;
+ LONG row_size=0;
+ LONG size=0;
+
+ CHAR *row; /* we assume display name can max be 20 row and each row is 80 char */
+
+
+ /* Get the size for srvlst */
+ myCreateProcessStartGetSzie("rpcclient -c \"service enum\"", &size);
+ if (size==0)
+ {
+ return 0;
+ }
+
+ srvlst = (CHAR *) malloc(size);
+ if (srvlst == NULL)
+ {
+ return 0;
+ }
+ /* Get the server list */
+ myCreateProcessStart("rpcclient -c \"service enum\"", srvlst, size);
+
+
+ /* scan after display name */
+ while (pos3)
+ {
+ return 0;
+ }
+
+ if (strcmp(argv[0],"ACCOUNTS")==0)
+ {
+ printf("ACCOUNTS\n");
+ printf("help text\n");
+ return 0;
+ }
+
+ if (strcmp(argv[0],"COMPUTER")==0)
+ {
+ printf("COMPUTER\n");
+ printf("help text\n");
+ return 0;
+ }
+
+ if (strcmp(argv[0],"CONFIG")==0)
+ {
+ printf("CONFIG\n");
+ printf("help text\n");
+ return 0;
+ }
+
+ if (strcmp(argv[0],"CONTINUE")==0)
+ {
+ printf("CONTINUE\n");
+ printf("help text\n");
+ return 0;
+ }
+
+ if (strcmp(argv[0],"FILE")==0)
+ {
+ printf("FILE\n");
+ printf("help text\n");
+ return 0;
+ }
+
+ if (strcmp(argv[0],"GROUP")==0)
+ {
+ printf("GROUP\n");
+ printf("help text\n");
+ return 0;
+ }
+
+ if (strcmp(argv[0],"HELP")==0)
+ {
+ printf("HELP\n");
+ printf("help text\n");
+ return 0;
+ }
+
+ if (strcmp(argv[0],"HELPMSG")==0)
+ {
+ printf("HELPMSG\n");
+ printf("help text\n");
+ return 0;
+ }
+
+ if (strcmp(argv[0],"LOCALGROUP")==0)
+ {
+ printf("LOCALGROUP\n");
+ printf("help text\n");
+ return 0;
+ }
+
+ if (strcmp(argv[0],"NAME")==0)
+ {
+ printf("NAME\n");
+ printf("help text\n");
+ return 0;
+ }
+
+ if (strcmp(argv[0],"PRINT")==0)
+ {
+ printf("PRINT\n");
+ printf("help text\n");
+ return 0;
+ }
+
+ if (strcmp(argv[0],"SEND")==0)
+ {
+ printf("SEND\n");
+ printf("help text\n");
+ return 0;
+ }
+
+ if (strcmp(argv[0],"SESSION")==0)
+ {
+ printf("SESSION\n");
+ printf("help text\n");
+ return 0;
+ }
+
+ if (strcmp(argv[0],"SHARE")==0)
+ {
+ printf("SHARE\n");
+ printf("help text\n");
+ return 0;
+ }
+
+ if (strcmp(argv[0],"START")==0)
+ {
+ printf("START\n");
+ printf("help text\n");
+ return 0;
+ }
+
+ if (strcmp(argv[0],"STATISTICS")==0)
+ {
+ printf("STATISTICS\n");
+ printf("help text\n");
+ return 0;
+ }
+
+ if (strcmp(argv[0],"STOP")==0)
+ {
+ printf("STOP\n");
+ printf("help text\n");
+ return 0;
+ }
+
+ if (strcmp(argv[0],"TIME")==0)
+ {
+ printf("TIME\n");
+ printf("help text\n");
+ return 0;
+ }
+
+ if (strcmp(argv[0],"USE")==0)
+ {
+ printf("USE\n");
+ printf("help text\n");
+ return 0;
+ }
+
+ if (strcmp(argv[0],"USER")==0)
+ {
+ printf("USER\n");
+ printf("help text\n");
+ return 0;
+ }
+
+ if (strcmp(argv[0],"VIEW")==0)
+ {
+ printf("VIEW\n");
+ printf("help text\n");
+ return 0;
+ }
+
+ help();
+ return 0;
+}
+
+void help()
+{
+ printf("NET ACCOUNTS\n");
+ printf("NET COMPUTER\n");
+ printf("NET CONFIG\n");
+ printf("NET CONFIG SERVER\n");
+ printf("NET CONFIG WORKSTATION\n");
+ printf("NET CONTINUE\n");
+ printf("NET FILE\n");
+ printf("NET GROUP\n");
+
+ printf("NET HELP\n");
+ printf("NET HELPMSG\n");
+ printf("NET LOCALGROUP\n");
+ printf("NET NAME\n");
+ printf("NET PAUSE\n");
+ printf("NET PRINT\n");
+ printf("NET SEND\n");
+ printf("NET SESSION\n");
+
+ printf("NET SHARE\n");
+ printf("NET START\n");
+ printf("NET STATISTICS\n");
+ printf("NET STOP\n");
+ printf("NET TIME\n");
+ printf("NET USE\n");
+ printf("NET USER\n");
+ printf("NET VIEW\n");
+}
diff --git a/reactos/base/applications/network/net/main.c b/reactos/base/applications/network/net/main.c
new file mode 100644
index 00000000000..1bdd53b80de
--- /dev/null
+++ b/reactos/base/applications/network/net/main.c
@@ -0,0 +1,138 @@
+
+/*
+ * COPYRIGHT: See COPYING in the top level directory
+ * PROJECT: ReactOS net command
+ * FILE:
+ * PURPOSE:
+ *
+ * PROGRAMMERS: Magnus Olsen (greatlord@reactos.org)
+ */
+
+#include "net.h"
+
+
+
+int main(int argc, char **argv)
+{
+ if (argc<2)
+ {
+ help();
+ return 1;
+ }
+
+ if (stricmp(argv[1],"ACCOUNTS")==0)
+ {
+ return unimplement();
+ }
+ if (stricmp(argv[1],"COMPUTER")==0)
+ {
+ return unimplement();
+ }
+ if (stricmp(argv[1],"CONFIG")==0)
+ {
+ return unimplement();
+ }
+ if (stricmp(argv[1],"CONTINUE")==0)
+ {
+ return unimplement();
+ }
+
+ if (stricmp(argv[1],"FILE")==0)
+ {
+ return unimplement();
+ }
+ if (stricmp(argv[1],"GROUP")==0)
+ {
+ return unimplement();
+ }
+ if (stricmp(argv[1],"HELP")==0)
+ {
+ return cmdHelp(argc,&argv[1]);
+ }
+ if (stricmp(argv[1],"HELPMSG")==0)
+ {
+ return unimplement();
+ }
+ if (stricmp(argv[1],"LOCALGROUP")==0)
+ {
+ return unimplement();
+ }
+ if (stricmp(argv[1],"NAME")==0)
+ {
+ return unimplement();
+ }
+ if (stricmp(argv[1],"PRINT")==0)
+ {
+ return unimplement();
+ }
+ if (stricmp(argv[1],"SEND")==0)
+ {
+ return unimplement();
+ }
+ if (stricmp(argv[1],"SESSION")==0)
+ {
+ return unimplement();
+ }
+ if (stricmp(argv[1],"SHARE")==0)
+ {
+ return unimplement();
+ }
+
+ if (stricmp(argv[1],"START")==0)
+ {
+ return cmdStart(argc, &argv[1]);
+ }
+ if (stricmp(argv[1],"STATISTICS")==0)
+ {
+ return unimplement();
+ }
+ if (stricmp(argv[1],"STOP")==0)
+ {
+ return cmdStop(argc, &argv[1]);
+ }
+ if (stricmp(argv[1],"TIME")==0)
+ {
+ return unimplement();
+ }
+ if (stricmp(argv[1],"USE")==0)
+ {
+ return unimplement();
+ }
+ if (stricmp(argv[1],"USER")==0)
+ {
+ return unimplement();
+ }
+ if (stricmp(argv[1],"VIEW")==0)
+ {
+ return unimplement();
+ }
+
+ help();
+ return 1;
+}
+
+
+int unimplement()
+{
+ printf("This command is not implement yet\n");
+ return 1;
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reactos/base/applications/network/net/net.h b/reactos/base/applications/network/net/net.h
new file mode 100644
index 00000000000..e450dff1c51
--- /dev/null
+++ b/reactos/base/applications/network/net/net.h
@@ -0,0 +1,35 @@
+
+/*
+ * COPYRIGHT: See COPYING in the top level directory
+ * PROJECT: ReactOS net command
+ * FILE:
+ * PURPOSE:
+ *
+ * PROGRAMMERS: Magnus Olsen (greatlord@reactos.org)
+ */
+
+#include
+#include
+#include
+#include
+
+void help();
+int unimplement();
+
+
+INT cmdHelp(INT argc, CHAR **argv);
+
+INT cmdStart(INT argc, CHAR **argv );
+INT start_service(CHAR *service);
+
+INT cmdStop(INT argc, CHAR **argv );
+INT stop_service(CHAR *service);
+
+/* Control and start rpcclient */
+BOOL myCreateProcessStartGetSzie(CHAR *cmdline, LONG *size);
+BOOL myCreateProcessStart(CHAR *cmdline, CHAR *srvlst, LONG size);
+BOOL myCreateProcess(HANDLE hChildStdoutWr, HANDLE hChildStdinRd, CHAR *cmdline);
+LONG ReadPipe(HANDLE hStdoutWr, HANDLE hStdoutRd, CHAR *srvlst, LONG size);
+LONG ReadPipeSize(HANDLE hStdoutWr, HANDLE hStdoutRd);
+INT row_scanner_service(CHAR *buffer, LONG* pos, LONG size, CHAR *name,CHAR *save);
+
diff --git a/reactos/base/applications/network/net/net.rbuild b/reactos/base/applications/network/net/net.rbuild
new file mode 100644
index 00000000000..17fd50f8b7c
--- /dev/null
+++ b/reactos/base/applications/network/net/net.rbuild
@@ -0,0 +1,16 @@
+
+
+ .
+
+
+ 0x600
+ 0x501
+ kernel32
+ ws2_32
+ main.c
+ cmdstart.c
+ cmdStop.c
+ help.c
+ process.c
+
+
diff --git a/reactos/base/applications/network/net/process.c b/reactos/base/applications/network/net/process.c
new file mode 100644
index 00000000000..9c21626ed3f
--- /dev/null
+++ b/reactos/base/applications/network/net/process.c
@@ -0,0 +1,229 @@
+
+/*
+ * COPYRIGHT: See COPYING in the top level directory
+ * PROJECT: ReactOS net command
+ * FILE:
+ * PURPOSE:
+ *
+ * PROGRAMMERS: Magnus Olsen (greatlord@reactos.org)
+ */
+
+#include "net.h"
+
+BOOL myCreateProcessStartGetSzie(CHAR *cmdline, LONG *size)
+{
+ HANDLE hChildStdinRd;
+ HANDLE hChildStdinWr;
+ HANDLE hChildStdoutRd;
+ HANDLE hChildStdoutWr;
+ SECURITY_ATTRIBUTES saAttr;
+
+ saAttr.nLength = sizeof(SECURITY_ATTRIBUTES);
+ saAttr.bInheritHandle = TRUE;
+ saAttr.lpSecurityDescriptor = NULL;
+
+ if (! CreatePipe(&hChildStdoutRd, &hChildStdoutWr, &saAttr, 0))
+ {
+ return FALSE;
+ }
+
+ if (! CreatePipe(&hChildStdinRd, &hChildStdinWr, &saAttr, 0))
+ {
+ return FALSE;
+ }
+
+ myCreateProcess(hChildStdoutWr, hChildStdinRd,"rpcclient -c \"service enum\"");
+ *size = ReadPipeSize(hChildStdoutWr, hChildStdoutRd);
+ return TRUE;
+}
+
+BOOL myCreateProcessStart(CHAR *cmdline, CHAR *srvlst, LONG size)
+{
+ HANDLE hChildStdinRd;
+ HANDLE hChildStdinWr;
+ HANDLE hChildStdoutRd;
+ HANDLE hChildStdoutWr;
+ SECURITY_ATTRIBUTES saAttr;
+
+ saAttr.nLength = sizeof(SECURITY_ATTRIBUTES);
+ saAttr.bInheritHandle = TRUE;
+ saAttr.lpSecurityDescriptor = NULL;
+
+ if (! CreatePipe(&hChildStdoutRd, &hChildStdoutWr, &saAttr, 0))
+ {
+ return FALSE;
+ }
+
+ if (! CreatePipe(&hChildStdinRd, &hChildStdinWr, &saAttr, 0))
+ {
+ return FALSE;
+ }
+
+ myCreateProcess(hChildStdoutWr, hChildStdinRd,"rpcclient -c \"service enum\"");
+
+ return ReadPipe(hChildStdoutWr, hChildStdoutRd, srvlst, size);
+}
+
+BOOL myCreateProcess(HANDLE hStdoutWr, HANDLE hStdinRd, CHAR *cmdline)
+{
+ PROCESS_INFORMATION piProcInfo;
+ STARTUPINFO siStartInfo;
+ BOOL status = FALSE;
+
+ ZeroMemory( &piProcInfo, sizeof(PROCESS_INFORMATION) );
+ ZeroMemory( &siStartInfo, sizeof(STARTUPINFO) );
+ siStartInfo.cb = sizeof(STARTUPINFO);
+ siStartInfo.hStdError = hStdoutWr;
+ siStartInfo.hStdOutput = hStdoutWr;
+ siStartInfo.hStdInput = hStdinRd;
+ siStartInfo.dwFlags |= STARTF_USESTDHANDLES;
+ status = CreateProcess(NULL, cmdline, NULL, NULL,
+ TRUE, 0, NULL, NULL, &siStartInfo, &piProcInfo);
+
+ if (status != 0)
+ {
+ CloseHandle(piProcInfo.hProcess);
+ CloseHandle(piProcInfo.hThread);
+ return status;
+ }
+ return status;
+}
+
+LONG ReadPipeSize(HANDLE hStdoutWr, HANDLE hStdoutRd)
+{
+ CHAR chBuf[2];
+ LONG pos=0;
+
+ if (!CloseHandle(hStdoutWr))
+ {
+ return 0; /* fail */
+ }
+
+ for (;;)
+ {
+ long dwRead;
+ if( !ReadFile( hStdoutRd, chBuf, 1, (LPDWORD)&dwRead, NULL) || dwRead == 0)
+ {
+ break;
+ }
+ else
+ {
+ pos+=dwRead;
+ }
+ }
+ return pos;
+}
+
+LONG ReadPipe(HANDLE hStdoutWr, HANDLE hStdoutRd, CHAR *srvlst, LONG size)
+{
+ CHAR chBuf[2];
+ LONG pos;
+
+ pos=0;
+
+ if (!CloseHandle(hStdoutWr))
+ {
+ return 0; /* fail */
+ }
+
+ for (;;)
+ {
+ LONG dwRead;
+ if( !ReadFile( hStdoutRd, chBuf, 1, (LPDWORD)&dwRead, NULL) || dwRead == 0)
+ {
+ break;
+ }
+ else
+ {
+ srvlst[pos++] = chBuf[0] ;
+ }
+ }
+ return 0;
+}
+
+INT row_scanner_service(CHAR *buffer, LONG* pos, LONG size,
+ CHAR *name,CHAR *save)
+{
+ LONG get_semi;
+ LONG t;
+ LONG row_size=0;
+ LONG start_pos;
+
+ start_pos = *pos;
+
+ if (*pos>=size)
+ {
+ return 0;
+ }
+
+
+ /* get row start */
+ for (t=start_pos;t
+
+
+
diff --git a/reactos/base/applications/network/ping/ping.c b/reactos/base/applications/network/ping/ping.c
index 6a9b679760c..758112493a7 100644
--- a/reactos/base/applications/network/ping/ping.c
+++ b/reactos/base/applications/network/ping/ping.c
@@ -489,7 +489,7 @@ static BOOL Ping(VOID)
Packet->Icmp.Type = ICMPMSG_ECHOREQUEST;
Packet->Icmp.Code = 0;
Packet->Icmp.Id = (USHORT)GetCurrentProcessId();
- Packet->Icmp.SeqNum = (USHORT)CurrentSeqNum;
+ Packet->Icmp.SeqNum = htons((USHORT)CurrentSeqNum);
Packet->Icmp.Checksum = 0;
/* Timestamp is part of data area */
diff --git a/reactos/base/applications/network/telnet/telnet.rbuild b/reactos/base/applications/network/telnet/telnet.rbuild
index 653c39a765a..bde5b87b925 100644
--- a/reactos/base/applications/network/telnet/telnet.rbuild
+++ b/reactos/base/applications/network/telnet/telnet.rbuild
@@ -1,6 +1,6 @@
-
+
.
diff --git a/reactos/base/applications/network/tracert/tracert.c b/reactos/base/applications/network/tracert/tracert.c
index e41269eebbd..13aeb8d971d 100644
--- a/reactos/base/applications/network/tracert/tracert.c
+++ b/reactos/base/applications/network/tracert/tracert.c
@@ -208,7 +208,7 @@ static INT Driver(VOID)
/* if RecievePacket timed out we don't bother decoding */
if (iRecieveReturn != 1)
{
- iDecRes = DecodeResponse(iPacketSize, iSeqNum);
+ iDecRes = DecodeResponse(iPacketSize);
switch (iDecRes)
{
@@ -570,7 +570,7 @@ static INT ReceivePacket(INT datasize)
* It all is well, print the time taken for the round trip.
*
*/
-static INT DecodeResponse(INT iPacketSize, USHORT iSeqNum)
+static INT DecodeResponse(INT iPacketSize)
{
unsigned short header_len = recvpacket.h_len * 4;
/* cast the recieved packet into an ECHO reply and a TTL Exceed so we can check the ID*/
diff --git a/reactos/base/applications/network/tracert/tracert.h b/reactos/base/applications/network/tracert/tracert.h
index 67801f0f9b5..a1b2ae57ec9 100644
--- a/reactos/base/applications/network/tracert/tracert.h
+++ b/reactos/base/applications/network/tracert/tracert.h
@@ -77,7 +77,7 @@ static VOID ResolveHostname(void);
static VOID PreparePacket(INT packetSize, USHORT seqNum);
static INT SendPacket(INT datasize);
static INT ReceivePacket(INT datasize);
-static INT DecodeResponse(INT packetSize, USHORT seqNum);
+static INT DecodeResponse(INT packetSize);
static LONGLONG GetTime(void);
static WORD CheckSum(PUSHORT data, UINT size);
static VOID Usage(void);
diff --git a/reactos/base/applications/notepad/dialog.c b/reactos/base/applications/notepad/dialog.c
index eb5b80258cc..fa1c8aca6e2 100644
--- a/reactos/base/applications/notepad/dialog.c
+++ b/reactos/base/applications/notepad/dialog.c
@@ -322,6 +322,8 @@ static UINT_PTR CALLBACK DIALOG_FileSaveAs_Hook(HWND hDlg, UINT msg, WPARAM wPar
HWND hCombo;
OFNOTIFY *pNotify;
+ UNREFERENCED_PARAMETER(wParam);
+
switch(msg)
{
case WM_INITDIALOG:
@@ -362,11 +364,11 @@ static UINT_PTR CALLBACK DIALOG_FileSaveAs_Hook(HWND hDlg, UINT msg, WPARAM wPar
hCombo = GetDlgItem(hDlg, ID_ENCODING);
if (hCombo)
- Globals.iEncoding = SendMessage(hCombo, CB_GETCURSEL, 0, 0);
+ Globals.iEncoding = (int) SendMessage(hCombo, CB_GETCURSEL, 0, 0);
hCombo = GetDlgItem(hDlg, ID_EOLN);
if (hCombo)
- Globals.iEoln = SendMessage(hCombo, CB_GETCURSEL, 0, 0);
+ Globals.iEoln = (int) SendMessage(hCombo, CB_GETCURSEL, 0, 0);
}
break;
}
@@ -453,7 +455,7 @@ VOID DIALOG_FilePrint(VOID)
printer.nMinPage = 1;
/* we really need to calculate number of pages to set nMaxPage and nToPage */
printer.nToPage = 0;
- printer.nMaxPage = -1;
+ printer.nMaxPage = (WORD) -1;
/* Let commdlg manage copy settings */
printer.nCopies = (WORD)PD_USEDEVMODECOPIES;
@@ -772,7 +774,7 @@ VOID DIALOG_GoTo(VOID)
SendMessage(Globals.hEdit, EM_GETSEL, (WPARAM) &dwStart, (LPARAM) &dwEnd);
nLine = 1;
- for (i = 0; pszText[i] && (i < dwStart); i++)
+ for (i = 0; pszText[i] && (i < (int) dwStart); i++)
{
if (pszText[i] == '\n')
nLine++;
@@ -803,10 +805,10 @@ VOID DIALOG_StatusBarUpdateCaretPos(VOID)
TCHAR buff[MAX_PATH];
GetCaretPos(&point);
- line = SendMessage(Globals.hEdit, EM_LINEFROMCHAR, (WPARAM)-1, (LPARAM)0);
- ccol = SendMessage(Globals.hEdit, EM_CHARFROMPOS, (WPARAM)0, (LPARAM)MAKELPARAM(point.x, point.y));
+ line = (int) SendMessage(Globals.hEdit, EM_LINEFROMCHAR, (WPARAM)-1, (LPARAM)0);
+ ccol = (int) SendMessage(Globals.hEdit, EM_CHARFROMPOS, (WPARAM)0, (LPARAM)MAKELPARAM(point.x, point.y));
ccol = LOWORD(ccol);
- col = ccol - SendMessage(Globals.hEdit, EM_LINEINDEX, (WPARAM)line, (LPARAM)0);
+ col = ccol - (int) SendMessage(Globals.hEdit, EM_LINEINDEX, (WPARAM)line, (LPARAM)0);
_stprintf(buff, TEXT("%S %d, %S %d"), Globals.szStatusBarLine, line+1, Globals.szStatusBarCol, col+1);
SendMessage(Globals.hStatusBar, SB_SETTEXT, (WPARAM) SB_SIMPLEID, (LPARAM)buff);
diff --git a/reactos/base/applications/notepad/res/Cs.rc b/reactos/base/applications/notepad/lang/Cs.rc
similarity index 95%
rename from reactos/base/applications/notepad/res/Cs.rc
rename to reactos/base/applications/notepad/lang/Cs.rc
index 6b0130c788a..6bf0fff227c 100644
--- a/reactos/base/applications/notepad/res/Cs.rc
+++ b/reactos/base/applications/notepad/lang/Cs.rc
@@ -1,149 +1,165 @@
-/*
- * Notepad (Czech resources)
- *
- * Copyright 1997,98 Marcel Baur
- * Proofread 1998 by David Lee Lambert
- * Copyright 2002 Sylvain Petreolle
- * Copyright 2004 David Kredba
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * 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
- */
-
-LANGUAGE LANG_CZECH, SUBLANG_NEUTRAL
-
-MAIN_MENU MENU
-BEGIN
- POPUP "&Soubor"
- BEGIN
- MENUITEM "&Nový...", CMD_NEW
- MENUITEM "&Otevøít\tCtrl+O", CMD_OPEN
- MENUITEM "&Ulo¾it\tCtrl+S", CMD_SAVE
- MENUITEM "Ulo¾it j&ako...", CMD_SAVE_AS
- MENUITEM SEPARATOR
- MENUITEM "&Tisk", CMD_PRINT
- MENUITEM "Nas&tavení stránky...", CMD_PAGE_SETUP
- MENUITEM "Nastavení tiská&rny...", CMD_PRINTER_SETUP
- MENUITEM SEPARATOR
- MENUITEM "&Konec", CMD_EXIT
- END
- POPUP "U&pravit"
- BEGIN
- MENUITEM "&Zpìt\tCtrl+Z", CMD_UNDO
- MENUITEM SEPARATOR
- MENUITEM "Vyjmou&t\tCtrl+X", CMD_CUT
- MENUITEM "&Kopírovat\tCtrl+C", CMD_COPY
- MENUITEM "&Vlo¾it\tCtrl+V", CMD_PASTE
- MENUITEM "&Smazat\tDel", CMD_DELETE
- MENUITEM SEPARATOR
- MENUITEM "&Hledej\tCtrl+F", CMD_SEARCH
- MENUITEM "&Najdi dal¹í\tF3", CMD_SEARCH_NEXT
- MENUITEM SEPARATOR
- MENUITEM "Vybrat v¹&e\tCtrl+A", CMD_SELECT_ALL
- MENUITEM "È&as/Datum\tF5", CMD_TIME_DATE
- MENUITEM SEPARATOR
- MENUITEM "Zalo&mit dlouhé øádky", CMD_WRAP
- MENUITEM "&Písmo...", CMD_FONT
- END
- POPUP "&Nápovìda"
- BEGIN
- MENUITEM "&Obsah", CMD_HELP_CONTENTS
- MENUITEM "&Najít...", CMD_HELP_SEARCH
- MENUITEM "&Pomoc k nápovìdì", CMD_HELP_ON_HELP
- MENUITEM SEPARATOR
- MENUITEM "&About" CMD_ABOUT
- MENUITEM "Inf&o...", CMD_ABOUT_WINE
- END
-END
-
-/* Dialog `Page setup' */
-
-DIALOG_PAGESETUP DIALOG 0, 0, 225, 95
-STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
-FONT 8, "MS Shell Dlg"
-CAPTION "Nastavení stránky"
-{
-LTEXT "Zá&hlaví:", 0x140, 10, 07, 40, 15
-EDITTEXT 0x141, 60, 05,110, 12, WS_BORDER | WS_TABSTOP
-LTEXT "&Zápatí:", 0x142, 10, 24, 40, 15
-EDITTEXT 0x143, 60, 22,110, 12, WS_BORDER | WS_TABSTOP
-
-GROUPBOX "&Okraje:", 0x144, 10, 43,160, 45
-LTEXT "&Levý:", 0x145, 20, 55, 30, 10, WS_CHILD
-EDITTEXT /*STRING_PAGESETUP_LEFTVALUE,*/ 0x147, 50, 55, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP
-LTEXT "&Horní:", 0x148, 20, 73, 30, 10, WS_CHILD
-EDITTEXT /*STRING_PAGESETUP_TOPVALUE,*/ 0x14A, 50, 73, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP
-LTEXT "P&ravý:", 0x14B, 100, 55, 30, 10, WS_CHILD
-EDITTEXT /*STRING_PAGESETUP_RIGHTVALUE,*/ 0x14D, 130, 55, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP
-LTEXT "&Dolní:", 0x14E,100, 73, 30, 10, WS_CHILD
-EDITTEXT /*STRING_PAGESETUP_BOTTOMVALUE,*/ 0x150, 130, 73, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP
-
-DEFPUSHBUTTON "OK", 0x151, 180, 3, 40, 15, WS_TABSTOP
-PUSHBUTTON "Storno", 0x152, 180, 21, 40, 15, WS_TABSTOP
-PUSHBUTTON "&Nápovìda", 0x153, 180, 39, 40, 15, WS_TABSTOP
-}
-
-IDD_ABOUTBOX DIALOG DISCARDABLE 22,16,284,170
-STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
-CAPTION "About ReactOS Notepad"
-FONT 8, "MS Shell Dlg"
-BEGIN
- CONTROL "ReactOS Notepad v1.0\r\nCopyright 1997,98 Marcel Baur \r\nCopyright 2000 Mike McCormack \r\nCopyright 2002 Sylvain Petreolle \r\nCopyright 2002 Andriy Palamarchuk\r\n",
- -1,"Static",SS_LEFTNOWORDWRAP | WS_GROUP,46,7,232,39
- CONTROL " ",
- -1,"Static",0x50000000,8,48,272,11
- DEFPUSHBUTTON "Close",IDOK,114,149,44,15,WS_GROUP
- ICON IDI_NPICON,-1,12,9,20,30
- EDITTEXT IDC_LICENSE,8,64,272,81,ES_MULTILINE |
- ES_READONLY | WS_VSCROLL
-END
-
-STRINGTABLE DISCARDABLE
-BEGIN
- STRING_LICENSE, "This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.\r\n\r\nThis program 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 General Public License for more details.\r\n\r\nYou should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA."
-END
-
-STRINGTABLE DISCARDABLE
-{
-STRING_PAGESETUP_HEADERVALUE, "&n" /* FIXME */
-STRING_PAGESETUP_FOOTERVALUE, "Strana &s" /* FIXME */
-STRING_PAGESETUP_LEFTVALUE, "20 mm" /* FIXME */
-STRING_PAGESETUP_RIGHTVALUE, "20 mm" /* FIXME */
-STRING_PAGESETUP_TOPVALUE, "25 mm" /* FIXME */
-STRING_PAGESETUP_BOTTOMVALUE, "25 mm" /* FIXME */
-
-STRING_NOTEPAD, "Notepad"
-STRING_ERROR, "CHYBA"
-STRING_WARNING, "VAROVÁNÍ"
-STRING_INFO, "Informace"
-
-STRING_UNTITLED, "(bez názvu)"
-
-STRING_ALL_FILES, "V¹echny soubory (*.*)"
-STRING_TEXT_FILES_TXT, "Textové soubory (*.txt)"
-
-STRING_TOOLARGE, "Soubor '%s' je pro notepad pøíli¹ velký.\n \
-Pou¾ijte jiný editor, prosím."
-STRING_NOTEXT, "Nebyl zadán ¾ádný text. \
-\nPlease type something and try again"
-STRING_DOESNOTEXIST, "Soubor '%s'\nneexistuje.\n\n \
-Chcete ho vytvoøit ?"
-STRING_NOTSAVED, "Soubor '%s'\nbyl zmìnìn.\n\n \
-Chcete ulo¾it zmìny ?"
-STRING_NOTFOUND, "'%s' nebyl nalezen."
-STRING_OUT_OF_MEMORY, "Není dost pamìti na dokonèení této úlohy. \
-\nUzavøete jednu èi více aplikací abyste získali více \nvolné \
-pamìti."
-
-}
+/*
+ * Notepad (Czech resources)
+ *
+ * Copyright 1997,98 Marcel Baur
+ * Proofread 1998 by David Lee Lambert
+ * Copyright 2002 Sylvain Petreolle
+ * Copyright 2004 David Kredba
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * 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
+ */
+
+LANGUAGE LANG_CZECH, SUBLANG_DEFAULT
+
+ID_ACCEL ACCELERATORS
+{
+ "^A", CMD_SELECT_ALL
+ "^C", CMD_COPY
+ "^F", CMD_SEARCH
+ "^G", CMD_GOTO
+ "H", CMD_REPLACE, VIRTKEY, CONTROL
+ "^O", CMD_OPEN
+ "^S", CMD_SAVE
+ "^V", CMD_PASTE
+ "^X", CMD_CUT
+ "^Z", CMD_UNDO
+ VK_F3, CMD_SEARCH_NEXT, VIRTKEY
+ VK_F5, CMD_TIME_DATE, VIRTKEY
+}
+
+MAIN_MENU MENU
+BEGIN
+ POPUP "&Soubor"
+ BEGIN
+ MENUITEM "&Nový...", CMD_NEW
+ MENUITEM "&Otevøít\tCtrl+O", CMD_OPEN
+ MENUITEM "&Ulo¾it\tCtrl+S", CMD_SAVE
+ MENUITEM "Ulo¾it j&ako...", CMD_SAVE_AS
+ MENUITEM SEPARATOR
+ MENUITEM "&Tisk", CMD_PRINT
+ MENUITEM "Nas&tavení stránky...", CMD_PAGE_SETUP
+ MENUITEM "Nastavení tiská&rny...", CMD_PRINTER_SETUP
+ MENUITEM SEPARATOR
+ MENUITEM "&Konec", CMD_EXIT
+ END
+ POPUP "U&pravit"
+ BEGIN
+ MENUITEM "&Zpìt\tCtrl+Z", CMD_UNDO
+ MENUITEM SEPARATOR
+ MENUITEM "Vyjmou&t\tCtrl+X", CMD_CUT
+ MENUITEM "&Kopírovat\tCtrl+C", CMD_COPY
+ MENUITEM "&Vlo¾it\tCtrl+V", CMD_PASTE
+ MENUITEM "&Smazat\tDel", CMD_DELETE
+ MENUITEM SEPARATOR
+ MENUITEM "&Hledej\tCtrl+F", CMD_SEARCH
+ MENUITEM "&Najdi dal¹í\tF3", CMD_SEARCH_NEXT
+ MENUITEM SEPARATOR
+ MENUITEM "Vybrat v¹&e\tCtrl+A", CMD_SELECT_ALL
+ MENUITEM "È&as/Datum\tF5", CMD_TIME_DATE
+ MENUITEM SEPARATOR
+ MENUITEM "Zalo&mit dlouhé øádky", CMD_WRAP
+ MENUITEM "&Písmo...", CMD_FONT
+ END
+ POPUP "&Nápovìda"
+ BEGIN
+ MENUITEM "&Obsah", CMD_HELP_CONTENTS
+ MENUITEM "&Najít...", CMD_HELP_SEARCH
+ MENUITEM "&Pomoc k nápovìdì", CMD_HELP_ON_HELP
+ MENUITEM SEPARATOR
+ MENUITEM "&About" CMD_ABOUT
+ MENUITEM "Inf&o...", CMD_ABOUT_WINE
+ END
+END
+
+/* Dialog `Page setup' */
+
+DIALOG_PAGESETUP DIALOG 0, 0, 225, 95
+STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
+FONT 8, "MS Shell Dlg"
+CAPTION "Nastavení stránky"
+{
+LTEXT "Zá&hlaví:", 0x140, 10, 07, 40, 15
+EDITTEXT 0x141, 60, 05,110, 12, WS_BORDER | WS_TABSTOP
+LTEXT "&Zápatí:", 0x142, 10, 24, 40, 15
+EDITTEXT 0x143, 60, 22,110, 12, WS_BORDER | WS_TABSTOP
+
+GROUPBOX "&Okraje:", 0x144, 10, 43,160, 45
+LTEXT "&Levý:", 0x145, 20, 55, 30, 10, WS_CHILD
+EDITTEXT /*STRING_PAGESETUP_LEFTVALUE,*/ 0x147, 50, 55, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP
+LTEXT "&Horní:", 0x148, 20, 73, 30, 10, WS_CHILD
+EDITTEXT /*STRING_PAGESETUP_TOPVALUE,*/ 0x14A, 50, 73, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP
+LTEXT "P&ravý:", 0x14B, 100, 55, 30, 10, WS_CHILD
+EDITTEXT /*STRING_PAGESETUP_RIGHTVALUE,*/ 0x14D, 130, 55, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP
+LTEXT "&Dolní:", 0x14E,100, 73, 30, 10, WS_CHILD
+EDITTEXT /*STRING_PAGESETUP_BOTTOMVALUE,*/ 0x150, 130, 73, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP
+
+DEFPUSHBUTTON "OK", 0x151, 180, 3, 40, 15, WS_TABSTOP
+PUSHBUTTON "Storno", 0x152, 180, 21, 40, 15, WS_TABSTOP
+PUSHBUTTON "&Nápovìda", 0x153, 180, 39, 40, 15, WS_TABSTOP
+}
+
+IDD_ABOUTBOX DIALOG DISCARDABLE 22,16,284,170
+STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
+CAPTION "About ReactOS Notepad"
+FONT 8, "MS Shell Dlg"
+BEGIN
+ CONTROL "ReactOS Notepad v1.0\r\nCopyright 1997,98 Marcel Baur \r\nCopyright 2000 Mike McCormack \r\nCopyright 2002 Sylvain Petreolle \r\nCopyright 2002 Andriy Palamarchuk\r\n",
+ -1,"Static",SS_LEFTNOWORDWRAP | WS_GROUP,46,7,232,39
+ CONTROL " ",
+ -1,"Static",0x50000000,8,48,272,11
+ DEFPUSHBUTTON "Close",IDOK,114,149,44,15,WS_GROUP
+ ICON IDI_NPICON,-1,12,9,20,30
+ EDITTEXT IDC_LICENSE,8,64,272,81,ES_MULTILINE |
+ ES_READONLY | WS_VSCROLL
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ STRING_LICENSE, "This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.\r\n\r\nThis program 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 General Public License for more details.\r\n\r\nYou should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA."
+END
+
+STRINGTABLE DISCARDABLE
+{
+STRING_PAGESETUP_HEADERVALUE, "&n" /* FIXME */
+STRING_PAGESETUP_FOOTERVALUE, "Strana &s" /* FIXME */
+STRING_PAGESETUP_LEFTVALUE, "20 mm" /* FIXME */
+STRING_PAGESETUP_RIGHTVALUE, "20 mm" /* FIXME */
+STRING_PAGESETUP_TOPVALUE, "25 mm" /* FIXME */
+STRING_PAGESETUP_BOTTOMVALUE, "25 mm" /* FIXME */
+
+STRING_NOTEPAD, "Notepad"
+STRING_ERROR, "CHYBA"
+STRING_WARNING, "VAROVÁNÍ"
+STRING_INFO, "Informace"
+
+STRING_UNTITLED, "(bez názvu)"
+
+STRING_ALL_FILES, "V¹echny soubory (*.*)"
+STRING_TEXT_FILES_TXT, "Textové soubory (*.txt)"
+
+STRING_TOOLARGE, "Soubor '%s' je pro notepad pøíli¹ velký.\n \
+Pou¾ijte jiný editor, prosím."
+STRING_NOTEXT, "Nebyl zadán ¾ádný text. \
+\nPlease type something and try again"
+STRING_DOESNOTEXIST, "Soubor '%s'\nneexistuje.\n\n \
+Chcete ho vytvoøit ?"
+STRING_NOTSAVED, "Soubor '%s'\nbyl zmìnìn.\n\n \
+Chcete ulo¾it zmìny ?"
+STRING_NOTFOUND, "'%s' nebyl nalezen."
+STRING_OUT_OF_MEMORY, "Není dost pamìti na dokonèení této úlohy. \
+\nUzavøete jednu èi více aplikací abyste získali více \nvolné \
+pamìti."
+
+}
diff --git a/reactos/base/applications/notepad/res/Da.rc b/reactos/base/applications/notepad/lang/Da.rc
similarity index 94%
rename from reactos/base/applications/notepad/res/Da.rc
rename to reactos/base/applications/notepad/lang/Da.rc
index 32699cfa369..3f94cce81ad 100644
--- a/reactos/base/applications/notepad/res/Da.rc
+++ b/reactos/base/applications/notepad/lang/Da.rc
@@ -1,147 +1,163 @@
-/*
- * Notepad (Danish resources)
- *
- * Copyright 1998 Henrik Olsen
- * Copyright 2002 Sylvain Petreolle
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * 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
- */
-
-LANGUAGE LANG_DANISH, SUBLANG_NEUTRAL
-
-MAIN_MENU MENU
-BEGIN
- POPUP "&Fil"
- BEGIN
- MENUITEM "&Ny...", CMD_NEW
- MENUITEM "Å&bn\tEnter", CMD_OPEN
- MENUITEM "&Gem", CMD_SAVE
- MENUITEM "Gem so&m...", CMD_SAVE_AS
- MENUITEM "Side&opsætning...", CMD_PAGE_SETUP
- MENUITEM "&Udskriv", CMD_PRINT
- MENUITEM "&Indstil printer...", CMD_PRINTER_SETUP
- MENUITEM SEPARATOR
- MENUITEM "&Afslut", CMD_EXIT
- END
- POPUP "&Rediger"
- BEGIN
- MENUITEM "&Fortryd\tCtrl+Z", CMD_UNDO
- MENUITEM SEPARATOR
- MENUITEM "&Klip\tCtrl+X", CMD_CUT
- MENUITEM "K&opier\tCtrl+C", CMD_COPY
- MENUITEM "Sæt &ind\tCtrl+V", CMD_PASTE
- MENUITEM "&Slet\tDel", CMD_DELETE
- MENUITEM SEPARATOR
- MENUITEM "Marker &alt", CMD_SELECT_ALL
- MENUITEM "&Dato/tid\tF5", CMD_TIME_DATE
- MENUITEM SEPARATOR
- MENUITEM "Automatisk &linjeskift", CMD_WRAP
- END
- POPUP "&Søg"
- BEGIN
- MENUITEM "&Søg...", CMD_SEARCH
- MENUITEM "&Find næste\tF3", CMD_SEARCH_NEXT
- END
- POPUP "&Hjælp"
- BEGIN
- MENUITEM "&Indhold", CMD_HELP_CONTENTS
- MENUITEM "&Søg efter hjælp om...", CMD_HELP_SEARCH
- MENUITEM "&Brug af Hjælp", CMD_HELP_ON_HELP
- MENUITEM SEPARATOR
- MENUITEM "&About" CMD_ABOUT
- MENUITEM "&Om Notesblok", CMD_ABOUT_WINE
- END
-END
-
-/* Dialog `Page setup' */
-
-DIALOG_PAGESETUP DIALOG 0, 0, 225, 95
-STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
-FONT 8, "MS Shell Dlg"
-CAPTION "Sideopsætning"
-{
-LTEXT "&Sidehoved:", 0x140, 10, 07, 40, 15
-EDITTEXT 0x141, 60, 05,110, 12, WS_BORDER | WS_TABSTOP
-LTEXT "Side&fod:", 0x142, 10, 24, 40, 15
-EDITTEXT 0x143, 60, 22,110, 12, WS_BORDER | WS_TABSTOP
-
-GROUPBOX "Margener:", 0x144, 10, 43,160, 45
-LTEXT "&Venstre:", 0x145, 20, 55, 30, 10, WS_CHILD
-EDITTEXT /*STRING_PAGESETUP_LEFTVALUE,*/ 0x147, 50, 55, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP
-LTEXT "&Top:", 0x148, 20, 73, 30, 10, WS_CHILD
-EDITTEXT /*STRING_PAGESETUP_TOPVALUE,*/ 0x14A, 50, 73, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP
-LTEXT "&Højre:", 0x14B, 100, 55, 30, 10, WS_CHILD
-EDITTEXT /*STRING_PAGESETUP_RIGHTVALUE,*/ 0x14D, 130, 55, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP
-LTEXT "&Bund:", 0x14E,100, 73, 30, 10, WS_CHILD
-EDITTEXT /*STRING_PAGESETUP_BOTTOMVALUE,*/ 0x150, 130, 73, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP
-
-DEFPUSHBUTTON "OK", 0x151, 180, 3, 40, 15, WS_TABSTOP
-PUSHBUTTON "Annuller", 0x152, 180, 21, 40, 15, WS_TABSTOP
-PUSHBUTTON "&Hjælp", 0x153, 180, 39, 40, 15, WS_TABSTOP
-}
-
-IDD_ABOUTBOX DIALOG DISCARDABLE 22,16,284,170
-STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
-CAPTION "About ReactOS Notepad"
-FONT 8, "MS Shell Dlg"
-BEGIN
- CONTROL "ReactOS Notepad v1.0\r\nCopyright 1997,98 Marcel Baur \r\nCopyright 2000 Mike McCormack \r\nCopyright 2002 Sylvain Petreolle \r\nCopyright 2002 Andriy Palamarchuk\r\n",
- -1,"Static",SS_LEFTNOWORDWRAP | WS_GROUP,46,7,232,39
- CONTROL " ",
- -1,"Static",0x50000000,8,48,272,11
- DEFPUSHBUTTON "Close",IDOK,114,149,44,15,WS_GROUP
- ICON IDI_NPICON,-1,12,9,20,30
- EDITTEXT IDC_LICENSE,8,64,272,81,ES_MULTILINE |
- ES_READONLY | WS_VSCROLL
-END
-
-STRINGTABLE DISCARDABLE
-BEGIN
- STRING_LICENSE, "This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.\r\n\r\nThis program 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 General Public License for more details.\r\n\r\nYou should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA."
-END
-
-STRINGTABLE DISCARDABLE
-{
-STRING_PAGESETUP_HEADERVALUE, "&n" /* FIXME */
-STRING_PAGESETUP_FOOTERVALUE, "Side &s"
-STRING_PAGESETUP_LEFTVALUE, "20 mm" /* FIXME */
-STRING_PAGESETUP_RIGHTVALUE, "20 mm" /* FIXME */
-STRING_PAGESETUP_TOPVALUE, "25 mm" /* FIXME */
-STRING_PAGESETUP_BOTTOMVALUE, "25 mm" /* FIXME */
-
-STRING_NOTEPAD, "Notesblok"
-STRING_ERROR, "Fejl"
-STRING_WARNING, "Advarsel"
-STRING_INFO, "Information"
-
-STRING_UNTITLED, "(ikke-navngivet)"
-
-STRING_ALL_FILES, "Alle filer (*.*)"
-STRING_TEXT_FILES_TXT, "Tekst filer (*.txt)"
-
-STRING_TOOLARGE, "Filen '%s' er for stor til Notesblok. \
-\nBrug en anden editor til at redigere filen."
-STRING_NOTEXT, "Du har ikke skrevet noget tekst. \
-\nSkriv noget tekst, og prøv så igen"
-STRING_DOESNOTEXIST, "Filen '%s'\neksistere ikke\n\n \
-Ønkser du at oprette en ny fil?"
-STRING_NOTSAVED, "Filen '%s'\ner blevet ændret\n\n \
-Ønsker du at gemme ændringerne?"
-STRING_NOTFOUND, "Kan ikke finde '%s'."
-STRING_OUT_OF_MEMORY, "Der er ikke nok hukommelse til at udføre \
-denne operation. \nAfslut et eller flere aktive programmer for at frigøre \
-hukommelse, og prøv så igen."
-
-}
+/*
+ * Notepad (Danish resources)
+ *
+ * Copyright 1998 Henrik Olsen
+ * Copyright 2002 Sylvain Petreolle
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * 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
+ */
+
+LANGUAGE LANG_DANISH, SUBLANG_DEFAULT
+
+ID_ACCEL ACCELERATORS
+{
+ "^A", CMD_SELECT_ALL
+ "^C", CMD_COPY
+ "^F", CMD_SEARCH
+ "^G", CMD_GOTO
+ "H", CMD_REPLACE, VIRTKEY, CONTROL
+ "^O", CMD_OPEN
+ "^S", CMD_SAVE
+ "^V", CMD_PASTE
+ "^X", CMD_CUT
+ "^Z", CMD_UNDO
+ VK_F3, CMD_SEARCH_NEXT, VIRTKEY
+ VK_F5, CMD_TIME_DATE, VIRTKEY
+}
+
+MAIN_MENU MENU
+BEGIN
+ POPUP "&Fil"
+ BEGIN
+ MENUITEM "&Ny...", CMD_NEW
+ MENUITEM "Å&bn\tEnter", CMD_OPEN
+ MENUITEM "&Gem", CMD_SAVE
+ MENUITEM "Gem so&m...", CMD_SAVE_AS
+ MENUITEM "Side&opsætning...", CMD_PAGE_SETUP
+ MENUITEM "&Udskriv", CMD_PRINT
+ MENUITEM "&Indstil printer...", CMD_PRINTER_SETUP
+ MENUITEM SEPARATOR
+ MENUITEM "&Afslut", CMD_EXIT
+ END
+ POPUP "&Rediger"
+ BEGIN
+ MENUITEM "&Fortryd\tCtrl+Z", CMD_UNDO
+ MENUITEM SEPARATOR
+ MENUITEM "&Klip\tCtrl+X", CMD_CUT
+ MENUITEM "K&opier\tCtrl+C", CMD_COPY
+ MENUITEM "Sæt &ind\tCtrl+V", CMD_PASTE
+ MENUITEM "&Slet\tDel", CMD_DELETE
+ MENUITEM SEPARATOR
+ MENUITEM "Marker &alt", CMD_SELECT_ALL
+ MENUITEM "&Dato/tid\tF5", CMD_TIME_DATE
+ MENUITEM SEPARATOR
+ MENUITEM "Automatisk &linjeskift", CMD_WRAP
+ END
+ POPUP "&Søg"
+ BEGIN
+ MENUITEM "&Søg...", CMD_SEARCH
+ MENUITEM "&Find næste\tF3", CMD_SEARCH_NEXT
+ END
+ POPUP "&Hjælp"
+ BEGIN
+ MENUITEM "&Indhold", CMD_HELP_CONTENTS
+ MENUITEM "&Søg efter hjælp om...", CMD_HELP_SEARCH
+ MENUITEM "&Brug af Hjælp", CMD_HELP_ON_HELP
+ MENUITEM SEPARATOR
+ MENUITEM "&About" CMD_ABOUT
+ MENUITEM "&Om Notesblok", CMD_ABOUT_WINE
+ END
+END
+
+/* Dialog `Page setup' */
+
+DIALOG_PAGESETUP DIALOG 0, 0, 225, 95
+STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
+FONT 8, "MS Shell Dlg"
+CAPTION "Sideopsætning"
+{
+LTEXT "&Sidehoved:", 0x140, 10, 07, 40, 15
+EDITTEXT 0x141, 60, 05,110, 12, WS_BORDER | WS_TABSTOP
+LTEXT "Side&fod:", 0x142, 10, 24, 40, 15
+EDITTEXT 0x143, 60, 22,110, 12, WS_BORDER | WS_TABSTOP
+
+GROUPBOX "Margener:", 0x144, 10, 43,160, 45
+LTEXT "&Venstre:", 0x145, 20, 55, 30, 10, WS_CHILD
+EDITTEXT /*STRING_PAGESETUP_LEFTVALUE,*/ 0x147, 50, 55, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP
+LTEXT "&Top:", 0x148, 20, 73, 30, 10, WS_CHILD
+EDITTEXT /*STRING_PAGESETUP_TOPVALUE,*/ 0x14A, 50, 73, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP
+LTEXT "&Højre:", 0x14B, 100, 55, 30, 10, WS_CHILD
+EDITTEXT /*STRING_PAGESETUP_RIGHTVALUE,*/ 0x14D, 130, 55, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP
+LTEXT "&Bund:", 0x14E,100, 73, 30, 10, WS_CHILD
+EDITTEXT /*STRING_PAGESETUP_BOTTOMVALUE,*/ 0x150, 130, 73, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP
+
+DEFPUSHBUTTON "OK", 0x151, 180, 3, 40, 15, WS_TABSTOP
+PUSHBUTTON "Annuller", 0x152, 180, 21, 40, 15, WS_TABSTOP
+PUSHBUTTON "&Hjælp", 0x153, 180, 39, 40, 15, WS_TABSTOP
+}
+
+IDD_ABOUTBOX DIALOG DISCARDABLE 22,16,284,170
+STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
+CAPTION "About ReactOS Notepad"
+FONT 8, "MS Shell Dlg"
+BEGIN
+ CONTROL "ReactOS Notepad v1.0\r\nCopyright 1997,98 Marcel Baur \r\nCopyright 2000 Mike McCormack \r\nCopyright 2002 Sylvain Petreolle \r\nCopyright 2002 Andriy Palamarchuk\r\n",
+ -1,"Static",SS_LEFTNOWORDWRAP | WS_GROUP,46,7,232,39
+ CONTROL " ",
+ -1,"Static",0x50000000,8,48,272,11
+ DEFPUSHBUTTON "Close",IDOK,114,149,44,15,WS_GROUP
+ ICON IDI_NPICON,-1,12,9,20,30
+ EDITTEXT IDC_LICENSE,8,64,272,81,ES_MULTILINE |
+ ES_READONLY | WS_VSCROLL
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ STRING_LICENSE, "This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.\r\n\r\nThis program 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 General Public License for more details.\r\n\r\nYou should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA."
+END
+
+STRINGTABLE DISCARDABLE
+{
+STRING_PAGESETUP_HEADERVALUE, "&n" /* FIXME */
+STRING_PAGESETUP_FOOTERVALUE, "Side &s"
+STRING_PAGESETUP_LEFTVALUE, "20 mm" /* FIXME */
+STRING_PAGESETUP_RIGHTVALUE, "20 mm" /* FIXME */
+STRING_PAGESETUP_TOPVALUE, "25 mm" /* FIXME */
+STRING_PAGESETUP_BOTTOMVALUE, "25 mm" /* FIXME */
+
+STRING_NOTEPAD, "Notesblok"
+STRING_ERROR, "Fejl"
+STRING_WARNING, "Advarsel"
+STRING_INFO, "Information"
+
+STRING_UNTITLED, "(ikke-navngivet)"
+
+STRING_ALL_FILES, "Alle filer (*.*)"
+STRING_TEXT_FILES_TXT, "Tekst filer (*.txt)"
+
+STRING_TOOLARGE, "Filen '%s' er for stor til Notesblok. \
+\nBrug en anden editor til at redigere filen."
+STRING_NOTEXT, "Du har ikke skrevet noget tekst. \
+\nSkriv noget tekst, og prøv så igen"
+STRING_DOESNOTEXIST, "Filen '%s'\neksistere ikke\n\n \
+Ønkser du at oprette en ny fil?"
+STRING_NOTSAVED, "Filen '%s'\ner blevet ændret\n\n \
+Ønsker du at gemme ændringerne?"
+STRING_NOTFOUND, "Kan ikke finde '%s'."
+STRING_OUT_OF_MEMORY, "Der er ikke nok hukommelse til at udføre \
+denne operation. \nAfslut et eller flere aktive programmer for at frigøre \
+hukommelse, og prøv så igen."
+
+}
diff --git a/reactos/base/applications/notepad/res/De.rc b/reactos/base/applications/notepad/lang/De.rc
similarity index 96%
rename from reactos/base/applications/notepad/res/De.rc
rename to reactos/base/applications/notepad/lang/De.rc
index 4e1a841dae2..130ecadc0d3 100644
--- a/reactos/base/applications/notepad/res/De.rc
+++ b/reactos/base/applications/notepad/lang/De.rc
@@ -1,176 +1,192 @@
-/*
- * Notepad (German resources)
- *
- * Copyright 1997,98 Marcel Baur
- * Copyright 2002 Sylvain Petreolle
- *
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * 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
- */
-
-LANGUAGE LANG_GERMAN, SUBLANG_GERMAN
-
-MAIN_MENU MENU
-BEGIN
- POPUP "&Datei"
- BEGIN
- MENUITEM "&Neu...", CMD_NEW
- MENUITEM "Ö&ffnen...", CMD_OPEN
- MENUITEM "&Speichern", CMD_SAVE
- MENUITEM "Speichern &unter...", CMD_SAVE_AS
- MENUITEM SEPARATOR
- MENUITEM "Seite ein&richten...", CMD_PAGE_SETUP
- MENUITEM "&Drucken", CMD_PRINT
- MENUITEM "Drucker&einrichtung...", CMD_PRINTER_SETUP
- MENUITEM SEPARATOR
- MENUITEM "&Beenden", CMD_EXIT
- END
- POPUP "&Bearbeiten"
- BEGIN
- MENUITEM "&Rückgängig\tStrg+Z", CMD_UNDO
- MENUITEM SEPARATOR
- MENUITEM "&Ausschneiden\tStrg+X", CMD_CUT
- MENUITEM "&Kopieren\tStrg+C", CMD_COPY
- MENUITEM "&Einfügen\tStrg+V", CMD_PASTE
- MENUITEM "&Löschen\tEntf", CMD_DELETE
- MENUITEM SEPARATOR
- MENUITEM "Suchen...", CMD_SEARCH
- MENUITEM "&Weitersuchen\tF3", CMD_SEARCH_NEXT
- MENUITEM "&Ersetzen\tCtrl+H", CMD_REPLACE
- MENUITEM "Gehe zu...\tCtrl+G", CMD_GOTO
- MENUITEM SEPARATOR
- MENUITEM "Alles &markieren", CMD_SELECT_ALL
- MENUITEM "&Uhrzeit/Datum\tF5", CMD_TIME_DATE
- END
- POPUP "F&ormat"
- BEGIN
- MENUITEM "&Zeilenumbruch", CMD_WRAP
- MENUITEM "&Schriftart...", CMD_FONT
- END
- POPUP "&Anicht"
- BEGIN
- MENUITEM "Status&leiste", CMD_STATUSBAR
- END
- POPUP "&Hilfe"
- BEGIN
- MENUITEM "&Inhalt", CMD_HELP_CONTENTS
- MENUITEM "&Suchen...", CMD_HELP_SEARCH
- MENUITEM "&Hilfe benutzen", CMD_HELP_ON_HELP
- MENUITEM SEPARATOR
- MENUITEM "&Über" CMD_ABOUT
- MENUITEM "Inf&o", CMD_ABOUT_WINE
- END
-END
-
-/* Dialog `Page setup' */
-
-DIALOG_PAGESETUP DIALOG 0, 0, 225, 95
-STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
-FONT 8, "MS Shell Dlg"
-CAPTION "Seite einrichten"
-{
-LTEXT "&Kopfzeile:", 0x140, 10, 07, 40, 15
-EDITTEXT 0x141, 60, 05,110, 12, WS_BORDER | WS_TABSTOP
-LTEXT "&Fußzeile:", 0x142, 10, 24, 40, 15
-EDITTEXT 0x143, 60, 22,110, 12, WS_BORDER | WS_TABSTOP
-
-GROUPBOX "Ränder", 0x144, 10, 43,160, 45
-LTEXT "&Links:", 0x145, 20, 55, 30, 10, WS_CHILD
-EDITTEXT /*STRING_PAGESETUP_LEFTVALUE,*/ 0x147, 50, 55, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP
-LTEXT "&Oben:", 0x148, 20, 73, 30, 10, WS_CHILD
-EDITTEXT /*STRING_PAGESETUP_TOPVALUE,*/ 0x14A, 50, 73, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP
-LTEXT "&Rechts:", 0x14B, 100, 55, 30, 10, WS_CHILD
-EDITTEXT /*STRING_PAGESETUP_RIGHTVALUE,*/ 0x14D, 130, 55, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP
-LTEXT "&Unten:", 0x14E,100, 73, 30, 10, WS_CHILD
-EDITTEXT /*STRING_PAGESETUP_BOTTOMVALUE,*/ 0x150, 130, 73, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP
-
-DEFPUSHBUTTON "OK", IDOK, 180, 3, 40, 15, WS_TABSTOP
-PUSHBUTTON "Abbrechen", IDCANCEL, 180, 21, 40, 15, WS_TABSTOP
-PUSHBUTTON "&Hilfe", 0x153, 180, 39, 40, 15, WS_TABSTOP
-}
-
-/* Dialog 'Gehe zu...' */
-DIALOG_GOTO DIALOG 0,0,165,50
-STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
-FONT 8, "MS Shell Dlg"
-CAPTION "Gehe zu Zeile"
-{
-EDITTEXT ID_LINENUMBER,54,10,106,12,WS_CHILD | WS_BORDER | WS_TABSTOP
-LTEXT "Zeile Nummer:",0x155,5,12,45,12,WS_CHILD | WS_TABSTOP | ES_NUMBER
-DEFPUSHBUTTON "OK", IDOK, 75, 30, 40, 15, WS_CHILD | WS_TABSTOP
-PUSHBUTTON "Abbrechen", IDCANCEL, 120, 30, 40, 15, WS_CHILD | WS_TABSTOP
-}
-
-IDD_ABOUTBOX DIALOG DISCARDABLE 22,16,284,170
-STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
-CAPTION "Über ReactOS Notepad"
-FONT 8, "MS Shell Dlg"
-BEGIN
- CONTROL "ReactOS Notepad v1.0\r\nCopyright 1997,98 Marcel Baur \r\nCopyright 2000 Mike McCormack \r\nCopyright 2002 Sylvain Petreolle \r\nCopyright 2002 Andriy Palamarchuk\r\n",
- -1,"Static",SS_LEFTNOWORDWRAP | WS_GROUP,46,7,232,39
- CONTROL "",
- -1,"Static",0x50000000,8,48,272,11
- DEFPUSHBUTTON "Schließen",IDOK,114,149,44,15,WS_GROUP
- ICON IDI_NPICON,-1,12,9,20,30
- EDITTEXT IDC_LICENSE,8,64,272,81,ES_MULTILINE |
- ES_READONLY | WS_VSCROLL
-END
-
-STRINGTABLE DISCARDABLE
-BEGIN
- STRING_LICENSE, "Dieses Programm ist kostenlos; Sie können es frei verteilen mit od. ohne Änderungen unter der GNU Lesser General Public License wie es von der Free Software Foundation veröffentlicht wurde; entweder Version 2.1 der Lizenz, oder eine spätere Version (ihrer Wahl).\r\n\r\nThis program 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 General Public License for more details.\r\n\r\nYou should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA."
-END
-
-STRINGTABLE DISCARDABLE
-{
-STRING_PAGESETUP_HEADERVALUE, "&n" /* FIXME */
-STRING_PAGESETUP_FOOTERVALUE, "Seite &s" /* FIXME */
-STRING_PAGESETUP_LEFTVALUE, "20 mm" /* FIXME */
-STRING_PAGESETUP_RIGHTVALUE, "20 mm" /* FIXME */
-STRING_PAGESETUP_TOPVALUE, "25 mm" /* FIXME */
-STRING_PAGESETUP_BOTTOMVALUE, "25 mm" /* FIXME */
-
-STRING_NOTEPAD, "Editor"
-STRING_ERROR, "Fehler"
-STRING_WARNING, "Achtung"
-STRING_INFO, "Information"
-
-STRING_UNTITLED, "(unbenannt)"
-
-STRING_ALL_FILES, "Alle Dateien (*.*)"
-STRING_TEXT_FILES_TXT, "Textdateien (*.txt)"
-
-STRING_TOOLARGE, "Die Datei '%s' ist zu groß für den Editor\n \
-Benutzen Sie bitte einen anderen Editor, um diese Datei zu bearbeiten."
-STRING_NOTEXT, "Sie haben keinen Text eingegeben, der \
-gespeichert\n werden könnte. Geben Sie Text ein, und versuchen Sie es \
-\nerneut."
-STRING_DOESNOTEXIST, "Die Datei '%s'\nexistiert nicht.\n\n \
-Möchten Sie eine neue Datei erstellen ?"
-STRING_NOTSAVED, "Datei %s\n wurde geändert.\n\n \
-Möchten Sie die Änderungen speichern ?"
-STRING_NOTFOUND, "'%s' kann nicht gefunden werden."
-STRING_OUT_OF_MEMORY, "Nicht genügend Arbeitsspeicher, \
-um diese Funktion \nabzuschließen. Beenden Sie eine oder mehrere \
-\nAnwendungen, um den verfügbaren Arbeitsspeicher zu \nerhöhen."
-STRING_CANNOTFIND "'%s' wurde nicht gefunden."
-STRING_ANSI, "ANSI"
-STRING_UNICODE, "Unicode"
-STRING_UNICODE_BE, "Unicode (big endian)"
-STRING_UTF8, "UTF-8"
-STRING_CRLF, "Windows"
-STRING_LF, "Unix"
-STRING_CR, "Mac"
-}
+/*
+ * Notepad (German resources)
+ *
+ * Copyright 1997,98 Marcel Baur
+ * Copyright 2002 Sylvain Petreolle
+ *
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * 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
+ */
+
+LANGUAGE LANG_GERMAN, SUBLANG_GERMAN
+
+ID_ACCEL ACCELERATORS
+{
+ "^A", CMD_SELECT_ALL
+ "^C", CMD_COPY
+ "^F", CMD_SEARCH
+ "^G", CMD_GOTO
+ "H", CMD_REPLACE, VIRTKEY, CONTROL
+ "^O", CMD_OPEN
+ "^S", CMD_SAVE
+ "^V", CMD_PASTE
+ "^X", CMD_CUT
+ "^Z", CMD_UNDO
+ VK_F3, CMD_SEARCH_NEXT, VIRTKEY
+ VK_F5, CMD_TIME_DATE, VIRTKEY
+}
+
+MAIN_MENU MENU
+BEGIN
+ POPUP "&Datei"
+ BEGIN
+ MENUITEM "&Neu...", CMD_NEW
+ MENUITEM "Ö&ffnen...", CMD_OPEN
+ MENUITEM "&Speichern", CMD_SAVE
+ MENUITEM "Speichern &unter...", CMD_SAVE_AS
+ MENUITEM SEPARATOR
+ MENUITEM "Seite ein&richten...", CMD_PAGE_SETUP
+ MENUITEM "&Drucken", CMD_PRINT
+ MENUITEM "Drucker&einrichtung...", CMD_PRINTER_SETUP
+ MENUITEM SEPARATOR
+ MENUITEM "&Beenden", CMD_EXIT
+ END
+ POPUP "&Bearbeiten"
+ BEGIN
+ MENUITEM "&Rückgängig\tStrg+Z", CMD_UNDO
+ MENUITEM SEPARATOR
+ MENUITEM "&Ausschneiden\tStrg+X", CMD_CUT
+ MENUITEM "&Kopieren\tStrg+C", CMD_COPY
+ MENUITEM "&Einfügen\tStrg+V", CMD_PASTE
+ MENUITEM "&Löschen\tEntf", CMD_DELETE
+ MENUITEM SEPARATOR
+ MENUITEM "Suchen...", CMD_SEARCH
+ MENUITEM "&Weitersuchen\tF3", CMD_SEARCH_NEXT
+ MENUITEM "&Ersetzen\tCtrl+H", CMD_REPLACE
+ MENUITEM "Gehe zu...\tCtrl+G", CMD_GOTO
+ MENUITEM SEPARATOR
+ MENUITEM "Alles &markieren", CMD_SELECT_ALL
+ MENUITEM "&Uhrzeit/Datum\tF5", CMD_TIME_DATE
+ END
+ POPUP "F&ormat"
+ BEGIN
+ MENUITEM "&Zeilenumbruch", CMD_WRAP
+ MENUITEM "&Schriftart...", CMD_FONT
+ END
+ POPUP "&Ansicht"
+ BEGIN
+ MENUITEM "Status&leiste", CMD_STATUSBAR
+ END
+ POPUP "&Hilfe"
+ BEGIN
+ MENUITEM "&Inhalt", CMD_HELP_CONTENTS
+ MENUITEM "&Suchen...", CMD_HELP_SEARCH
+ MENUITEM "&Hilfe benutzen", CMD_HELP_ON_HELP
+ MENUITEM SEPARATOR
+ MENUITEM "&Über" CMD_ABOUT
+ MENUITEM "Inf&o", CMD_ABOUT_WINE
+ END
+END
+
+/* Dialog `Page setup' */
+
+DIALOG_PAGESETUP DIALOG 0, 0, 225, 95
+STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
+FONT 8, "MS Shell Dlg"
+CAPTION "Seite einrichten"
+{
+LTEXT "&Kopfzeile:", 0x140, 10, 07, 40, 15
+EDITTEXT 0x141, 60, 05,110, 12, WS_BORDER | WS_TABSTOP
+LTEXT "&Fußzeile:", 0x142, 10, 24, 40, 15
+EDITTEXT 0x143, 60, 22,110, 12, WS_BORDER | WS_TABSTOP
+
+GROUPBOX "Ränder", 0x144, 10, 43,160, 45
+LTEXT "&Links:", 0x145, 20, 55, 30, 10, WS_CHILD
+EDITTEXT /*STRING_PAGESETUP_LEFTVALUE,*/ 0x147, 50, 55, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP
+LTEXT "&Oben:", 0x148, 20, 73, 30, 10, WS_CHILD
+EDITTEXT /*STRING_PAGESETUP_TOPVALUE,*/ 0x14A, 50, 73, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP
+LTEXT "&Rechts:", 0x14B, 100, 55, 30, 10, WS_CHILD
+EDITTEXT /*STRING_PAGESETUP_RIGHTVALUE,*/ 0x14D, 130, 55, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP
+LTEXT "&Unten:", 0x14E,100, 73, 30, 10, WS_CHILD
+EDITTEXT /*STRING_PAGESETUP_BOTTOMVALUE,*/ 0x150, 130, 73, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP
+
+DEFPUSHBUTTON "OK", IDOK, 180, 3, 40, 15, WS_TABSTOP
+PUSHBUTTON "Abbrechen", IDCANCEL, 180, 21, 40, 15, WS_TABSTOP
+PUSHBUTTON "&Hilfe", 0x153, 180, 39, 40, 15, WS_TABSTOP
+}
+
+/* Dialog 'Gehe zu...' */
+DIALOG_GOTO DIALOG 0,0,165,50
+STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
+FONT 8, "MS Shell Dlg"
+CAPTION "Gehe zu Zeile"
+{
+EDITTEXT ID_LINENUMBER,54,10,106,12,WS_CHILD | WS_BORDER | WS_TABSTOP
+LTEXT "Zeile Nummer:",0x155,5,12,45,12,WS_CHILD | WS_TABSTOP | ES_NUMBER
+DEFPUSHBUTTON "OK", IDOK, 75, 30, 40, 15, WS_CHILD | WS_TABSTOP
+PUSHBUTTON "Abbrechen", IDCANCEL, 120, 30, 40, 15, WS_CHILD | WS_TABSTOP
+}
+
+IDD_ABOUTBOX DIALOG DISCARDABLE 22,16,284,170
+STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
+CAPTION "Über ReactOS Notepad"
+FONT 8, "MS Shell Dlg"
+BEGIN
+ CONTROL "ReactOS Notepad v1.0\r\nCopyright 1997,98 Marcel Baur \r\nCopyright 2000 Mike McCormack \r\nCopyright 2002 Sylvain Petreolle \r\nCopyright 2002 Andriy Palamarchuk\r\n",
+ -1,"Static",SS_LEFTNOWORDWRAP | WS_GROUP,46,7,232,39
+ CONTROL "",
+ -1,"Static",0x50000000,8,48,272,11
+ DEFPUSHBUTTON "Schließen",IDOK,114,149,44,15,WS_GROUP
+ ICON IDI_NPICON,-1,12,9,20,30
+ EDITTEXT IDC_LICENSE,8,64,272,81,ES_MULTILINE |
+ ES_READONLY | WS_VSCROLL
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ STRING_LICENSE, "Dieses Programm ist kostenlos; Sie können es frei verteilen mit od. ohne Änderungen unter der GNU Lesser General Public License wie es von der Free Software Foundation veröffentlicht wurde; entweder Version 2.1 der Lizenz, oder eine spätere Version (ihrer Wahl).\r\n\r\nThis program 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 General Public License for more details.\r\n\r\nYou should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA."
+END
+
+STRINGTABLE DISCARDABLE
+{
+STRING_PAGESETUP_HEADERVALUE, "&n" /* FIXME */
+STRING_PAGESETUP_FOOTERVALUE, "Seite &s" /* FIXME */
+STRING_PAGESETUP_LEFTVALUE, "20 mm" /* FIXME */
+STRING_PAGESETUP_RIGHTVALUE, "20 mm" /* FIXME */
+STRING_PAGESETUP_TOPVALUE, "25 mm" /* FIXME */
+STRING_PAGESETUP_BOTTOMVALUE, "25 mm" /* FIXME */
+
+STRING_NOTEPAD, "Editor"
+STRING_ERROR, "Fehler"
+STRING_WARNING, "Achtung"
+STRING_INFO, "Information"
+
+STRING_UNTITLED, "(unbenannt)"
+
+STRING_ALL_FILES, "Alle Dateien (*.*)"
+STRING_TEXT_FILES_TXT, "Textdateien (*.txt)"
+
+STRING_TOOLARGE, "Die Datei '%s' ist zu groß für den Editor\n \
+Benutzen Sie bitte einen anderen Editor, um diese Datei zu bearbeiten."
+STRING_NOTEXT, "Sie haben keinen Text eingegeben, der \
+gespeichert\n werden könnte. Geben Sie Text ein, und versuchen Sie es \
+\nerneut."
+STRING_DOESNOTEXIST, "Die Datei '%s'\nexistiert nicht.\n\n \
+Möchten Sie eine neue Datei erstellen ?"
+STRING_NOTSAVED, "Datei %s\n wurde geändert.\n\n \
+Möchten Sie die Änderungen speichern ?"
+STRING_NOTFOUND, "'%s' kann nicht gefunden werden."
+STRING_OUT_OF_MEMORY, "Nicht genügend Arbeitsspeicher, \
+um diese Funktion \nabzuschließen. Beenden Sie eine oder mehrere \
+\nAnwendungen, um den verfügbaren Arbeitsspeicher zu \nerhöhen."
+STRING_CANNOTFIND "'%s' wurde nicht gefunden."
+STRING_ANSI, "ANSI"
+STRING_UNICODE, "Unicode"
+STRING_UNICODE_BE, "Unicode (big endian)"
+STRING_UTF8, "UTF-8"
+STRING_CRLF, "Windows"
+STRING_LF, "Unix"
+STRING_CR, "Mac"
+}
diff --git a/reactos/base/applications/notepad/res/En.rc b/reactos/base/applications/notepad/lang/En.rc
similarity index 96%
rename from reactos/base/applications/notepad/res/En.rc
rename to reactos/base/applications/notepad/lang/En.rc
index 628a0fdbd74..ab0145b767f 100644
--- a/reactos/base/applications/notepad/res/En.rc
+++ b/reactos/base/applications/notepad/lang/En.rc
@@ -1,188 +1,204 @@
-/*
- * Notepad (English resources)
- *
- * Copyright 1997,98 Marcel Baur
- * Proofread 1998 by David Lee Lambert
- * Copyright 2002 Sylvain Petreolle
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * 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
- */
-
-LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
-
-MAIN_MENU MENU
-BEGIN
- POPUP "&File"
- BEGIN
- MENUITEM "&New...", CMD_NEW
- MENUITEM "&Open\tCtrl+O", CMD_OPEN
- MENUITEM "&Save\tCtrl+S", CMD_SAVE
- MENUITEM "Save &as...", CMD_SAVE_AS
- MENUITEM SEPARATOR
- MENUITEM "Page Se&tup...", CMD_PAGE_SETUP
- MENUITEM "&Print", CMD_PRINT
- MENUITEM "P&rinter Setup...", CMD_PRINTER_SETUP
- MENUITEM SEPARATOR
- MENUITEM "E&xit", CMD_EXIT
- END
- POPUP "&Edit"
- BEGIN
- MENUITEM "&Undo\tCtrl+Z", CMD_UNDO
- MENUITEM SEPARATOR
- MENUITEM "Cu&t\tCtrl+X", CMD_CUT
- MENUITEM "&Copy\tCtrl+C", CMD_COPY
- MENUITEM "&Paste\tCtrl+V", CMD_PASTE
- MENUITEM "&Delete\tDel", CMD_DELETE
- MENUITEM SEPARATOR
- MENUITEM "&Find...\tCtrl+F", CMD_SEARCH
- MENUITEM "Find &next\tF3", CMD_SEARCH_NEXT
- MENUITEM "Replace\tCtrl+H", CMD_REPLACE
- MENUITEM "Go To...\tCtrl+G", CMD_GOTO
- MENUITEM SEPARATOR
- MENUITEM "Select &all\tCtrl+A", CMD_SELECT_ALL
- MENUITEM "&Time/Date\tF5", CMD_TIME_DATE
- END
- POPUP "F&ormat"
- BEGIN
- MENUITEM "&Wrap long lines", CMD_WRAP
- MENUITEM "&Font...", CMD_FONT
- END
- POPUP "&View"
- BEGIN
- MENUITEM "Status&bar", CMD_STATUSBAR
- END
- POPUP "&Help"
- BEGIN
- MENUITEM "&Contents", CMD_HELP_CONTENTS
- MENUITEM "&Search...", CMD_HELP_SEARCH
- MENUITEM "&Help on help", CMD_HELP_ON_HELP
- MENUITEM SEPARATOR
- MENUITEM "&About" CMD_ABOUT
- MENUITEM "Inf&o", CMD_ABOUT_WINE
- END
-END
-
-/* Dialog `Page setup' */
-
-DIALOG_PAGESETUP DIALOG 0, 0, 225, 95
-STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
-FONT 8, "MS Shell Dlg"
-CAPTION "Page Setup"
-{
-LTEXT "&Header:", 0x140, 10, 07, 40, 15
-EDITTEXT 0x141, 60, 05,110, 12, WS_BORDER | WS_TABSTOP
-LTEXT "&Footer:", 0x142, 10, 24, 40, 15
-EDITTEXT 0x143, 60, 22,110, 12, WS_BORDER | WS_TABSTOP
-
-GROUPBOX "&Margins:", 0x144, 10, 43,160, 45
-LTEXT "&Left:", 0x145, 20, 55, 30, 10, WS_CHILD
-EDITTEXT /*STRING_PAGESETUP_LEFTVALUE,*/ 0x147, 50, 55, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP
-LTEXT "&Top:", 0x148, 20, 73, 30, 10, WS_CHILD
-EDITTEXT /*STRING_PAGESETUP_TOPVALUE,*/ 0x14A, 50, 73, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP
-LTEXT "&Right:", 0x14B, 100, 55, 30, 10, WS_CHILD
-EDITTEXT /*STRING_PAGESETUP_RIGHTVALUE,*/ 0x14D, 130, 55, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP
-LTEXT "&Bottom:", 0x14E,100, 73, 30, 10, WS_CHILD
-EDITTEXT /*STRING_PAGESETUP_BOTTOMVALUE,*/ 0x150, 130, 73, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP
-
-DEFPUSHBUTTON "OK", IDOK, 180, 3, 40, 15, WS_TABSTOP
-PUSHBUTTON "Cancel", IDCANCEL, 180, 21, 40, 15, WS_TABSTOP
-PUSHBUTTON "&Help", 0x153, 180, 39, 40, 15, WS_TABSTOP
-}
-
-/* Dialog `Encoding' */
-DIALOG_ENCODING DIALOG 0, 0, 256, 44
-STYLE DS_SETFONT | DS_FIXEDSYS | DS_CONTROL | WS_CHILD | WS_CLIPSIBLINGS |
- WS_CAPTION | WS_SYSMENU
-FONT 8, "MS Shell Dlg"
-CAPTION "Encoding"
-{
-COMBOBOX ID_ENCODING,54,0,156,80,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP
-LTEXT "Encoding:",0x155,5,2,41,12
-COMBOBOX ID_EOLN,54,18,156,80,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
-LTEXT "Endlines:",0x156,5,20,41,12
-}
-
-/* Dialog 'Go To' */
-DIALOG_GOTO DIALOG 0,0,165,50
-STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
-FONT 8, "MS Shell Dlg"
-CAPTION "Goto line"
-{
-EDITTEXT ID_LINENUMBER,54,10,106,12,WS_CHILD | WS_BORDER | WS_TABSTOP
-LTEXT "Line number:",0x155,5,12,41,12,WS_CHILD | WS_TABSTOP | ES_NUMBER
-DEFPUSHBUTTON "OK", IDOK, 75, 30, 40, 15, WS_CHILD | WS_TABSTOP
-PUSHBUTTON "Cancel", IDCANCEL, 120, 30, 40, 15, WS_CHILD | WS_TABSTOP
-}
-
-IDD_ABOUTBOX DIALOG DISCARDABLE 22,16,284,170
-STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
-CAPTION "About ReactOS Notepad"
-FONT 8, "MS Shell Dlg"
-BEGIN
- CONTROL "ReactOS Notepad v1.0\r\nCopyright 1997,98 Marcel Baur \r\nCopyright 2000 Mike McCormack \r\nCopyright 2002 Sylvain Petreolle \r\nCopyright 2002 Andriy Palamarchuk\r\n",
- -1,"Static",SS_LEFTNOWORDWRAP | WS_GROUP,46,7,232,39
- CONTROL " ",
- -1,"Static",0x50000000,8,48,272,11
- DEFPUSHBUTTON "Close",IDOK,114,149,44,15,WS_GROUP
- ICON IDI_NPICON,-1,12,9,20,30
- EDITTEXT IDC_LICENSE,8,64,272,81,ES_MULTILINE |
- ES_READONLY | WS_VSCROLL
-END
-
-STRINGTABLE DISCARDABLE
-BEGIN
- STRING_LICENSE, "This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.\r\n\r\nThis program 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 General Public License for more details.\r\n\r\nYou should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA."
-END
-
-STRINGTABLE DISCARDABLE
-{
-STRING_PAGESETUP_HEADERVALUE, "&n" /* FIXME */
-STRING_PAGESETUP_FOOTERVALUE, "Page &s" /* FIXME */
-STRING_PAGESETUP_LEFTVALUE, "20 mm" /* FIXME */
-STRING_PAGESETUP_RIGHTVALUE, "20 mm" /* FIXME */
-STRING_PAGESETUP_TOPVALUE, "25 mm" /* FIXME */
-STRING_PAGESETUP_BOTTOMVALUE, "25 mm" /* FIXME */
-
-STRING_NOTEPAD, "Notepad"
-STRING_ERROR, "ERROR"
-STRING_WARNING, "WARNING"
-STRING_INFO, "Information"
-
-STRING_UNTITLED, "(untitled)"
-
-STRING_ALL_FILES, "All files (*.*)"
-STRING_TEXT_FILES_TXT, "Text files (*.txt)"
-
-STRING_TOOLARGE, "File '%s' is too large for notepad.\n \
-Please use a different editor."
-STRING_NOTEXT, "You didn't enter any text. \
-\nPlease type something and try again"
-STRING_DOESNOTEXIST, "File '%s'\ndoes not exist\n\n \
-Do you want to create a new file ?"
-STRING_NOTSAVED, "File '%s'\nhas been modified\n\n \
-Would you like to save the changes ?"
-STRING_NOTFOUND, "'%s' can not be found."
-STRING_OUT_OF_MEMORY, "Not enough memory to complete this \
-task. \nClose one or more applications to increase the amount of \nfree \
-memory."
-STRING_CANNOTFIND "Cannot find '%s'"
-STRING_ANSI, "ANSI"
-STRING_UNICODE, "Unicode"
-STRING_UNICODE_BE, "Unicode (big endian)"
-STRING_UTF8, "UTF-8"
-STRING_CRLF, "Windows"
-STRING_LF, "Unix"
-STRING_CR, "Mac"
-}
+/*
+ * Notepad (English resources)
+ *
+ * Copyright 1997,98 Marcel Baur
+ * Proofread 1998 by David Lee Lambert
+ * Copyright 2002 Sylvain Petreolle
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * 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
+ */
+
+LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
+
+ID_ACCEL ACCELERATORS
+{
+ "^A", CMD_SELECT_ALL
+ "^C", CMD_COPY
+ "^F", CMD_SEARCH
+ "^G", CMD_GOTO
+ "H", CMD_REPLACE, VIRTKEY, CONTROL
+ "^O", CMD_OPEN
+ "^S", CMD_SAVE
+ "^V", CMD_PASTE
+ "^X", CMD_CUT
+ "^Z", CMD_UNDO
+ VK_F3, CMD_SEARCH_NEXT, VIRTKEY
+ VK_F5, CMD_TIME_DATE, VIRTKEY
+}
+
+MAIN_MENU MENU
+BEGIN
+ POPUP "&File"
+ BEGIN
+ MENUITEM "&New...", CMD_NEW
+ MENUITEM "&Open\tCtrl+O", CMD_OPEN
+ MENUITEM "&Save\tCtrl+S", CMD_SAVE
+ MENUITEM "Save &as...", CMD_SAVE_AS
+ MENUITEM SEPARATOR
+ MENUITEM "Page Se&tup...", CMD_PAGE_SETUP
+ MENUITEM "&Print", CMD_PRINT
+ MENUITEM "P&rinter Setup...", CMD_PRINTER_SETUP
+ MENUITEM SEPARATOR
+ MENUITEM "E&xit", CMD_EXIT
+ END
+ POPUP "&Edit"
+ BEGIN
+ MENUITEM "&Undo\tCtrl+Z", CMD_UNDO
+ MENUITEM SEPARATOR
+ MENUITEM "Cu&t\tCtrl+X", CMD_CUT
+ MENUITEM "&Copy\tCtrl+C", CMD_COPY
+ MENUITEM "&Paste\tCtrl+V", CMD_PASTE
+ MENUITEM "&Delete\tDel", CMD_DELETE
+ MENUITEM SEPARATOR
+ MENUITEM "&Find...\tCtrl+F", CMD_SEARCH
+ MENUITEM "Find &next\tF3", CMD_SEARCH_NEXT
+ MENUITEM "Replace\tCtrl+H", CMD_REPLACE
+ MENUITEM "Go To...\tCtrl+G", CMD_GOTO
+ MENUITEM SEPARATOR
+ MENUITEM "Select &all\tCtrl+A", CMD_SELECT_ALL
+ MENUITEM "&Time/Date\tF5", CMD_TIME_DATE
+ END
+ POPUP "F&ormat"
+ BEGIN
+ MENUITEM "&Wrap long lines", CMD_WRAP
+ MENUITEM "&Font...", CMD_FONT
+ END
+ POPUP "&View"
+ BEGIN
+ MENUITEM "Status&bar", CMD_STATUSBAR
+ END
+ POPUP "&Help"
+ BEGIN
+ MENUITEM "&Contents", CMD_HELP_CONTENTS
+ MENUITEM "&Search...", CMD_HELP_SEARCH
+ MENUITEM "&Help on help", CMD_HELP_ON_HELP
+ MENUITEM SEPARATOR
+ MENUITEM "&About" CMD_ABOUT
+ MENUITEM "Inf&o", CMD_ABOUT_WINE
+ END
+END
+
+/* Dialog `Page setup' */
+
+DIALOG_PAGESETUP DIALOG 0, 0, 225, 95
+STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
+FONT 8, "MS Shell Dlg"
+CAPTION "Page Setup"
+{
+LTEXT "&Header:", 0x140, 10, 07, 40, 15
+EDITTEXT 0x141, 60, 05,110, 12, WS_BORDER | WS_TABSTOP
+LTEXT "&Footer:", 0x142, 10, 24, 40, 15
+EDITTEXT 0x143, 60, 22,110, 12, WS_BORDER | WS_TABSTOP
+
+GROUPBOX "&Margins:", 0x144, 10, 43,160, 45
+LTEXT "&Left:", 0x145, 20, 55, 30, 10, WS_CHILD
+EDITTEXT /*STRING_PAGESETUP_LEFTVALUE,*/ 0x147, 50, 55, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP
+LTEXT "&Top:", 0x148, 20, 73, 30, 10, WS_CHILD
+EDITTEXT /*STRING_PAGESETUP_TOPVALUE,*/ 0x14A, 50, 73, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP
+LTEXT "&Right:", 0x14B, 100, 55, 30, 10, WS_CHILD
+EDITTEXT /*STRING_PAGESETUP_RIGHTVALUE,*/ 0x14D, 130, 55, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP
+LTEXT "&Bottom:", 0x14E,100, 73, 30, 10, WS_CHILD
+EDITTEXT /*STRING_PAGESETUP_BOTTOMVALUE,*/ 0x150, 130, 73, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP
+
+DEFPUSHBUTTON "OK", IDOK, 180, 3, 40, 15, WS_TABSTOP
+PUSHBUTTON "Cancel", IDCANCEL, 180, 21, 40, 15, WS_TABSTOP
+PUSHBUTTON "&Help", 0x153, 180, 39, 40, 15, WS_TABSTOP
+}
+
+/* Dialog `Encoding' */
+DIALOG_ENCODING DIALOG 0, 0, 256, 44
+STYLE DS_SETFONT | DS_FIXEDSYS | DS_CONTROL | WS_CHILD | WS_CLIPSIBLINGS |
+ WS_CAPTION | WS_SYSMENU
+FONT 8, "MS Shell Dlg"
+CAPTION "Encoding"
+{
+COMBOBOX ID_ENCODING,54,0,156,80,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP
+LTEXT "Encoding:",0x155,5,2,41,12
+COMBOBOX ID_EOLN,54,18,156,80,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
+LTEXT "Endlines:",0x156,5,20,41,12
+}
+
+/* Dialog 'Go To' */
+DIALOG_GOTO DIALOG 0,0,165,50
+STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
+FONT 8, "MS Shell Dlg"
+CAPTION "Goto line"
+{
+EDITTEXT ID_LINENUMBER,54,10,106,12,WS_CHILD | WS_BORDER | WS_TABSTOP
+LTEXT "Line number:",0x155,5,12,41,12,WS_CHILD | WS_TABSTOP | ES_NUMBER
+DEFPUSHBUTTON "OK", IDOK, 75, 30, 40, 15, WS_CHILD | WS_TABSTOP
+PUSHBUTTON "Cancel", IDCANCEL, 120, 30, 40, 15, WS_CHILD | WS_TABSTOP
+}
+
+IDD_ABOUTBOX DIALOG DISCARDABLE 22,16,284,170
+STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
+CAPTION "About ReactOS Notepad"
+FONT 8, "MS Shell Dlg"
+BEGIN
+ CONTROL "ReactOS Notepad v1.0\r\nCopyright 1997,98 Marcel Baur \r\nCopyright 2000 Mike McCormack \r\nCopyright 2002 Sylvain Petreolle \r\nCopyright 2002 Andriy Palamarchuk\r\n",
+ -1,"Static",SS_LEFTNOWORDWRAP | WS_GROUP,46,7,232,39
+ CONTROL " ",
+ -1,"Static",0x50000000,8,48,272,11
+ DEFPUSHBUTTON "Close",IDOK,114,149,44,15,WS_GROUP
+ ICON IDI_NPICON,-1,12,9,20,30
+ EDITTEXT IDC_LICENSE,8,64,272,81,ES_MULTILINE |
+ ES_READONLY | WS_VSCROLL
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ STRING_LICENSE, "This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.\r\n\r\nThis program 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 General Public License for more details.\r\n\r\nYou should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA."
+END
+
+STRINGTABLE DISCARDABLE
+{
+STRING_PAGESETUP_HEADERVALUE, "&n" /* FIXME */
+STRING_PAGESETUP_FOOTERVALUE, "Page &s" /* FIXME */
+STRING_PAGESETUP_LEFTVALUE, "20 mm" /* FIXME */
+STRING_PAGESETUP_RIGHTVALUE, "20 mm" /* FIXME */
+STRING_PAGESETUP_TOPVALUE, "25 mm" /* FIXME */
+STRING_PAGESETUP_BOTTOMVALUE, "25 mm" /* FIXME */
+
+STRING_NOTEPAD, "Notepad"
+STRING_ERROR, "ERROR"
+STRING_WARNING, "WARNING"
+STRING_INFO, "Information"
+
+STRING_UNTITLED, "(untitled)"
+
+STRING_ALL_FILES, "All files (*.*)"
+STRING_TEXT_FILES_TXT, "Text files (*.txt)"
+
+STRING_TOOLARGE, "File '%s' is too large for notepad.\n \
+Please use a different editor."
+STRING_NOTEXT, "You didn't enter any text. \
+\nPlease type something and try again"
+STRING_DOESNOTEXIST, "File '%s'\ndoes not exist\n\n \
+Do you want to create a new file ?"
+STRING_NOTSAVED, "File '%s'\nhas been modified\n\n \
+Would you like to save the changes ?"
+STRING_NOTFOUND, "'%s' can not be found."
+STRING_OUT_OF_MEMORY, "Not enough memory to complete this \
+task. \nClose one or more applications to increase the amount of \nfree \
+memory."
+STRING_CANNOTFIND "Cannot find '%s'"
+STRING_ANSI, "ANSI"
+STRING_UNICODE, "Unicode"
+STRING_UNICODE_BE, "Unicode (big endian)"
+STRING_UTF8, "UTF-8"
+STRING_CRLF, "Windows"
+STRING_LF, "Unix"
+STRING_CR, "Mac"
+}
diff --git a/reactos/base/applications/notepad/res/Es.rc b/reactos/base/applications/notepad/lang/Es.rc
similarity index 95%
rename from reactos/base/applications/notepad/res/Es.rc
rename to reactos/base/applications/notepad/lang/Es.rc
index e7532b6d6d9..f9cba0ed267 100644
--- a/reactos/base/applications/notepad/res/Es.rc
+++ b/reactos/base/applications/notepad/lang/Es.rc
@@ -1,158 +1,174 @@
-/*
- * Notepad (Spanish resources)
- *
- * Copyright 1997,98 Marcel Baur
- * Proofread 1998 by David Lee Lambert
- * Proofread 1999 by Jose Marcos Lopez
- * Copyright 2002 Sylvain Petreolle
- * Copyright 2003,2004 José Manuel Ferrer Ortiz
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * 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
- */
-
-LANGUAGE LANG_SPANISH, SUBLANG_NEUTRAL
-
-MAIN_MENU MENU
-BEGIN
- POPUP "&Archivo"
- BEGIN
- MENUITEM "&Nuevo...", CMD_NEW
- MENUITEM "&Abrir\tCtrl+O", CMD_OPEN
- MENUITEM "&Guardar\tCtrl+S", CMD_SAVE
- MENUITEM "Guardar &como...", CMD_SAVE_AS
- MENUITEM SEPARATOR
- MENUITEM "&Imprimir", CMD_PRINT
- MENUITEM "Configurar &página...", CMD_PAGE_SETUP
- MENUITEM "Configuración &impresora...", CMD_PRINTER_SETUP
- MENUITEM SEPARATOR
- MENUITEM "&Salir", CMD_EXIT
- END
- POPUP "&Editar"
- BEGIN
- MENUITEM "&Deshacer\tCtrl+Z", CMD_UNDO
- MENUITEM SEPARATOR
- MENUITEM "Cor&tar\tCtrl+X", CMD_CUT
- MENUITEM "&Copiar\tCtrl+C", CMD_COPY
- MENUITEM "&Pegar\tCtrl+V", CMD_PASTE
- MENUITEM "&Borrar\tDel", CMD_DELETE
- MENUITEM SEPARATOR
- MENUITEM "&Buscar\tCtrl+F", CMD_SEARCH
- MENUITEM "Buscar &siguiente\tF3", CMD_SEARCH_NEXT
- MENUITEM SEPARATOR
- MENUITEM "Seleccionar t&odo\tCtrl+A", CMD_SELECT_ALL
- MENUITEM "&Hora y fecha\tF5", CMD_TIME_DATE
- MENUITEM SEPARATOR
- MENUITEM "&Ajuste de línea", CMD_WRAP
- MENUITEM "Tipo de &letra...", CMD_FONT
- END
- POPUP "A&yuda"
- BEGIN
- MENUITEM "Í&ndice", CMD_HELP_CONTENTS
- MENUITEM "&Buscar...", CMD_HELP_SEARCH
- MENUITEM "A&yuda sobre la ayuda", CMD_HELP_ON_HELP
- MENUITEM SEPARATOR
- MENUITEM "&About" CMD_ABOUT
- MENUITEM "&Información...", CMD_ABOUT_WINE
- END
-END
-
-/* Dialog `Page setup' */
-
-DIALOG_PAGESETUP DIALOG 0, 0, 225, 95
-STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
-FONT 8, "MS Shell Dlg"
-CAPTION "Ajuste de página"
-{
-LTEXT "&Cabecera:", 0x140, 10, 07, 40, 15
-EDITTEXT 0x141, 60, 05,110, 12, WS_BORDER | WS_TABSTOP
-LTEXT "&Pie:", 0x142, 10, 24, 40, 15
-EDITTEXT 0x143, 60, 22,110, 12, WS_BORDER | WS_TABSTOP
-
-GROUPBOX "&Márgenes:", 0x144, 10, 43,160, 45
-LTEXT "&Izquierda:", 0x145, 20, 55, 30, 10, WS_CHILD
-EDITTEXT /*STRING_PAGESETUP_LEFTVALUE,*/ 0x147, 50, 55, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP
-LTEXT "A&rriba:", 0x148, 20, 73, 30, 10, WS_CHILD
-EDITTEXT /*STRING_PAGESETUP_TOPVALUE,*/ 0x14A, 50, 73, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP
-LTEXT "&Derecha:", 0x14B, 100, 55, 30, 10, WS_CHILD
-EDITTEXT /*STRING_PAGESETUP_RIGHTVALUE,*/ 0x14D, 130, 55, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP
-LTEXT "Aba&jo:", 0x14E,100, 73, 30, 10, WS_CHILD
-EDITTEXT /*STRING_PAGESETUP_BOTTOMVALUE,*/ 0x150, 130, 73, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP
-
-DEFPUSHBUTTON "Aceptar", 0x151, 180, 3, 40, 15, WS_TABSTOP
-PUSHBUTTON "Cancelar", 0x152, 180, 21, 40, 15, WS_TABSTOP
-PUSHBUTTON "&Ayuda", 0x153, 180, 39, 40, 15, WS_TABSTOP
-}
-
-IDD_ABOUTBOX DIALOG DISCARDABLE 22,16,284,170
-STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
-CAPTION "About ReactOS Notepad"
-FONT 8, "MS Shell Dlg"
-BEGIN
- CONTROL "ReactOS Notepad v1.0\r\nCopyright 1997,98 Marcel Baur \r\nCopyright 2000 Mike McCormack \r\nCopyright 2002 Sylvain Petreolle \r\nCopyright 2002 Andriy Palamarchuk\r\n",
- -1,"Static",SS_LEFTNOWORDWRAP | WS_GROUP,46,7,232,39
- CONTROL " ",
- -1,"Static",0x50000000,8,48,272,11
- DEFPUSHBUTTON "Close",IDOK,114,149,44,15,WS_GROUP
- ICON IDI_NPICON,-1,12,9,20,30
- EDITTEXT IDC_LICENSE,8,64,272,81,ES_MULTILINE |
- ES_READONLY | WS_VSCROLL
-END
-
-STRINGTABLE DISCARDABLE
-BEGIN
- STRING_LICENSE, "This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.\r\n\r\nThis program 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 General Public License for more details.\r\n\r\nYou should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA."
-END
-
-STRINGTABLE DISCARDABLE
-{
-STRING_PAGESETUP_HEADERVALUE, "&n" /* FIXME */
-STRING_PAGESETUP_FOOTERVALUE, "Página &s" /* FIXME */
-STRING_PAGESETUP_LEFTVALUE, "20 mm" /* FIXME */
-STRING_PAGESETUP_RIGHTVALUE, "20 mm" /* FIXME */
-STRING_PAGESETUP_TOPVALUE, "25 mm" /* FIXME */
-STRING_PAGESETUP_BOTTOMVALUE, "25 mm" /* FIXME */
-
-STRING_NOTEPAD, "Bloc de notas"
-STRING_ERROR, "ERROR"
-STRING_WARNING, "ADVERTENCIA"
-STRING_INFO, "Información"
-
-STRING_UNTITLED, "(sin título)"
-
-STRING_ALL_FILES, "Todos los archivos (*.*)"
-STRING_TEXT_FILES_TXT, "Documentos de texto (*.txt)"
-
-STRING_TOOLARGE, "El archivo '%s' es demasiado grande para el \
- bloc de notas.\n Use otro editor."
-STRING_NOTEXT, "No escribió nada. \nPor favor escriba algo e \
- inténtelo de nuevo"
-STRING_DOESNOTEXIST, "El archivo '%s'\nno existe\n\n ¿Desea crear \
- un nuevo archivo?"
-STRING_NOTSAVED, "El texto en el archivo '%s' ha cambiado\n\n \
- ¿Desea guardar los cambios?"
-STRING_NOTFOUND, "No se encontró '%s'."
-STRING_OUT_OF_MEMORY, "No hay suficiente memoria para terminar esta \
- tarea. \nCierre una o más aplicaciones para \
- aumentar la cantidad \nde memoria libre."
-STRING_CANNOTFIND "No pudo encontrar '%s'"
-STRING_ANSI, "ANSI"
-STRING_UNICODE, "Unicode"
-STRING_UNICODE_BE, "Unicode (big endian)"
-STRING_UTF8, "UTF-8"
-STRING_CRLF, "Windows"
-STRING_LF, "Unix"
-STRING_CR, "Mac"
-
-}
+/*
+ * Notepad (Spanish resources)
+ *
+ * Copyright 1997,98 Marcel Baur
+ * Proofread 1998 by David Lee Lambert
+ * Proofread 1999 by Jose Marcos Lopez
+ * Copyright 2002 Sylvain Petreolle
+ * Copyright 2003,2004 José Manuel Ferrer Ortiz
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * 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
+ */
+
+LANGUAGE LANG_SPANISH, SUBLANG_NEUTRAL
+
+ID_ACCEL ACCELERATORS
+{
+ "^A", CMD_SELECT_ALL
+ "^C", CMD_COPY
+ "^F", CMD_SEARCH
+ "^G", CMD_GOTO
+ "H", CMD_REPLACE, VIRTKEY, CONTROL
+ "^O", CMD_OPEN
+ "^S", CMD_SAVE
+ "^V", CMD_PASTE
+ "^X", CMD_CUT
+ "^Z", CMD_UNDO
+ VK_F3, CMD_SEARCH_NEXT, VIRTKEY
+ VK_F5, CMD_TIME_DATE, VIRTKEY
+}
+
+MAIN_MENU MENU
+BEGIN
+ POPUP "&Archivo"
+ BEGIN
+ MENUITEM "&Nuevo...", CMD_NEW
+ MENUITEM "&Abrir\tCtrl+O", CMD_OPEN
+ MENUITEM "&Guardar\tCtrl+S", CMD_SAVE
+ MENUITEM "Guardar &como...", CMD_SAVE_AS
+ MENUITEM SEPARATOR
+ MENUITEM "&Imprimir", CMD_PRINT
+ MENUITEM "Configurar &página...", CMD_PAGE_SETUP
+ MENUITEM "Configuración &impresora...", CMD_PRINTER_SETUP
+ MENUITEM SEPARATOR
+ MENUITEM "&Salir", CMD_EXIT
+ END
+ POPUP "&Editar"
+ BEGIN
+ MENUITEM "&Deshacer\tCtrl+Z", CMD_UNDO
+ MENUITEM SEPARATOR
+ MENUITEM "Cor&tar\tCtrl+X", CMD_CUT
+ MENUITEM "&Copiar\tCtrl+C", CMD_COPY
+ MENUITEM "&Pegar\tCtrl+V", CMD_PASTE
+ MENUITEM "&Borrar\tDel", CMD_DELETE
+ MENUITEM SEPARATOR
+ MENUITEM "&Buscar\tCtrl+F", CMD_SEARCH
+ MENUITEM "Buscar &siguiente\tF3", CMD_SEARCH_NEXT
+ MENUITEM SEPARATOR
+ MENUITEM "Seleccionar t&odo\tCtrl+A", CMD_SELECT_ALL
+ MENUITEM "&Hora y fecha\tF5", CMD_TIME_DATE
+ MENUITEM SEPARATOR
+ MENUITEM "&Ajuste de línea", CMD_WRAP
+ MENUITEM "Tipo de &letra...", CMD_FONT
+ END
+ POPUP "A&yuda"
+ BEGIN
+ MENUITEM "Í&ndice", CMD_HELP_CONTENTS
+ MENUITEM "&Buscar...", CMD_HELP_SEARCH
+ MENUITEM "A&yuda sobre la ayuda", CMD_HELP_ON_HELP
+ MENUITEM SEPARATOR
+ MENUITEM "&About" CMD_ABOUT
+ MENUITEM "&Información...", CMD_ABOUT_WINE
+ END
+END
+
+/* Dialog `Page setup' */
+
+DIALOG_PAGESETUP DIALOG 0, 0, 225, 95
+STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
+FONT 8, "MS Shell Dlg"
+CAPTION "Ajuste de página"
+{
+LTEXT "&Cabecera:", 0x140, 10, 07, 40, 15
+EDITTEXT 0x141, 60, 05,110, 12, WS_BORDER | WS_TABSTOP
+LTEXT "&Pie:", 0x142, 10, 24, 40, 15
+EDITTEXT 0x143, 60, 22,110, 12, WS_BORDER | WS_TABSTOP
+
+GROUPBOX "&Márgenes:", 0x144, 10, 43,160, 45
+LTEXT "&Izquierda:", 0x145, 20, 55, 30, 10, WS_CHILD
+EDITTEXT /*STRING_PAGESETUP_LEFTVALUE,*/ 0x147, 50, 55, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP
+LTEXT "A&rriba:", 0x148, 20, 73, 30, 10, WS_CHILD
+EDITTEXT /*STRING_PAGESETUP_TOPVALUE,*/ 0x14A, 50, 73, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP
+LTEXT "&Derecha:", 0x14B, 100, 55, 30, 10, WS_CHILD
+EDITTEXT /*STRING_PAGESETUP_RIGHTVALUE,*/ 0x14D, 130, 55, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP
+LTEXT "Aba&jo:", 0x14E,100, 73, 30, 10, WS_CHILD
+EDITTEXT /*STRING_PAGESETUP_BOTTOMVALUE,*/ 0x150, 130, 73, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP
+
+DEFPUSHBUTTON "Aceptar", 0x151, 180, 3, 40, 15, WS_TABSTOP
+PUSHBUTTON "Cancelar", 0x152, 180, 21, 40, 15, WS_TABSTOP
+PUSHBUTTON "&Ayuda", 0x153, 180, 39, 40, 15, WS_TABSTOP
+}
+
+IDD_ABOUTBOX DIALOG DISCARDABLE 22,16,284,170
+STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
+CAPTION "About ReactOS Notepad"
+FONT 8, "MS Shell Dlg"
+BEGIN
+ CONTROL "ReactOS Notepad v1.0\r\nCopyright 1997,98 Marcel Baur \r\nCopyright 2000 Mike McCormack \r\nCopyright 2002 Sylvain Petreolle \r\nCopyright 2002 Andriy Palamarchuk\r\n",
+ -1,"Static",SS_LEFTNOWORDWRAP | WS_GROUP,46,7,232,39
+ CONTROL " ",
+ -1,"Static",0x50000000,8,48,272,11
+ DEFPUSHBUTTON "Close",IDOK,114,149,44,15,WS_GROUP
+ ICON IDI_NPICON,-1,12,9,20,30
+ EDITTEXT IDC_LICENSE,8,64,272,81,ES_MULTILINE |
+ ES_READONLY | WS_VSCROLL
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ STRING_LICENSE, "This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.\r\n\r\nThis program 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 General Public License for more details.\r\n\r\nYou should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA."
+END
+
+STRINGTABLE DISCARDABLE
+{
+STRING_PAGESETUP_HEADERVALUE, "&n" /* FIXME */
+STRING_PAGESETUP_FOOTERVALUE, "Página &s" /* FIXME */
+STRING_PAGESETUP_LEFTVALUE, "20 mm" /* FIXME */
+STRING_PAGESETUP_RIGHTVALUE, "20 mm" /* FIXME */
+STRING_PAGESETUP_TOPVALUE, "25 mm" /* FIXME */
+STRING_PAGESETUP_BOTTOMVALUE, "25 mm" /* FIXME */
+
+STRING_NOTEPAD, "Bloc de notas"
+STRING_ERROR, "ERROR"
+STRING_WARNING, "ADVERTENCIA"
+STRING_INFO, "Información"
+
+STRING_UNTITLED, "(sin título)"
+
+STRING_ALL_FILES, "Todos los archivos (*.*)"
+STRING_TEXT_FILES_TXT, "Documentos de texto (*.txt)"
+
+STRING_TOOLARGE, "El archivo '%s' es demasiado grande para el \
+ bloc de notas.\n Use otro editor."
+STRING_NOTEXT, "No escribió nada. \nPor favor escriba algo e \
+ inténtelo de nuevo"
+STRING_DOESNOTEXIST, "El archivo '%s'\nno existe\n\n ¿Desea crear \
+ un nuevo archivo?"
+STRING_NOTSAVED, "El texto en el archivo '%s' ha cambiado\n\n \
+ ¿Desea guardar los cambios?"
+STRING_NOTFOUND, "No se encontró '%s'."
+STRING_OUT_OF_MEMORY, "No hay suficiente memoria para terminar esta \
+ tarea. \nCierre una o más aplicaciones para \
+ aumentar la cantidad \nde memoria libre."
+STRING_CANNOTFIND "No pudo encontrar '%s'"
+STRING_ANSI, "ANSI"
+STRING_UNICODE, "Unicode"
+STRING_UNICODE_BE, "Unicode (big endian)"
+STRING_UTF8, "UTF-8"
+STRING_CRLF, "Windows"
+STRING_LF, "Unix"
+STRING_CR, "Mac"
+
+}
diff --git a/reactos/base/applications/notepad/res/Fi.rc b/reactos/base/applications/notepad/lang/Fi.rc
similarity index 94%
rename from reactos/base/applications/notepad/res/Fi.rc
rename to reactos/base/applications/notepad/lang/Fi.rc
index b7157589c3d..6cea70b875a 100644
--- a/reactos/base/applications/notepad/res/Fi.rc
+++ b/reactos/base/applications/notepad/lang/Fi.rc
@@ -1,145 +1,161 @@
-/*
- * Notepad (Finnish resources)
- *
- * Copyright 1999 by Jukka Iivonen
- * Copyright 2002 Sylvain Petreolle
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * 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
- */
-
-LANGUAGE LANG_FINNISH, SUBLANG_NEUTRAL
-
-MAIN_MENU MENU
-BEGIN
- POPUP "&Tiedosto"
- BEGIN
- MENUITEM "&Uusi...", CMD_NEW
- MENUITEM "&Avaa", CMD_OPEN
- MENUITEM "Ta&lleta", CMD_SAVE
- MENUITEM "Talleta &nimellä...", CMD_SAVE_AS
- MENUITEM "T&ulosta", CMD_PRINT
- MENUITEM "&Sivun asetukset...", CMD_PAGE_SETUP
- MENUITEM "&Kirjoittimen asetukset...", CMD_PRINTER_SETUP
- MENUITEM SEPARATOR
- MENUITEM "&Poistu", CMD_EXIT
- END
- POPUP "&Muokkaa"
- BEGIN
- MENUITEM "&Palauta\tCtrl+Z", CMD_UNDO
- MENUITEM SEPARATOR
- MENUITEM "&Leikkaa\tCtrl+X", CMD_CUT
- MENUITEM "&Kopioi\tCtrl+C", CMD_COPY
- MENUITEM "L&iitä\tCtrl+V", CMD_PASTE
- MENUITEM "P&oista\tDel", CMD_DELETE
- MENUITEM SEPARATOR
- MENUITEM "Etsi...", CMD_SEARCH
- MENUITEM "Etsi &seuraava\tF3", CMD_SEARCH_NEXT
- MENUITEM SEPARATOR
- MENUITEM "&Valitse kaikki", CMD_SELECT_ALL
- MENUITEM "&Aika/Päivämäärä\tF5", CMD_TIME_DATE
- MENUITEM SEPARATOR
- MENUITEM "Ka&tkaise pitkä rivi", CMD_WRAP
- END
- POPUP "&Apua"
- BEGIN
- MENUITEM "&Sisältö", CMD_HELP_CONTENTS
- MENUITEM "&Etsi...", CMD_HELP_SEARCH
- MENUITEM "Apua &Opastuksesta", CMD_HELP_ON_HELP
- MENUITEM SEPARATOR
- MENUITEM "&About" CMD_ABOUT
- MENUITEM "Inf&o...", CMD_ABOUT_WINE
- END
-END
-
-/* Dialog `Page setup' */
-
-DIALOG_PAGESETUP DIALOG 0, 0, 225, 95
-STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
-FONT 8, "MS Shell Dlg"
-CAPTION "Sivun asetukset"
-{
-LTEXT "&Yläotsikko:", 0x140, 10, 07, 40, 15
-EDITTEXT 0x141, 60, 05,110, 12, WS_BORDER | WS_TABSTOP
-LTEXT "Alao&tsikko:", 0x142, 10, 24, 40, 15
-EDITTEXT 0x143, 60, 22,110, 12, WS_BORDER | WS_TABSTOP
-
-GROUPBOX "&Marginaali:", 0x144, 10, 43,160, 45
-LTEXT "&Vasen:", 0x145, 20, 55, 30, 10, WS_CHILD
-EDITTEXT /*STRING_PAGESETUP_LEFTVALUE,*/ 0x147, 50, 55, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP
-LTEXT "Y&lä:", 0x148, 20, 73, 30, 10, WS_CHILD
-EDITTEXT /*STRING_PAGESETUP_TOPVALUE,*/ 0x14A, 50, 73, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP
-LTEXT "&Oikea:", 0x14B, 100, 55, 30, 10, WS_CHILD
-EDITTEXT /*STRING_PAGESETUP_RIGHTVALUE,*/ 0x14D, 130, 55, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP
-LTEXT "&Ala:", 0x14E,100, 73, 30, 10, WS_CHILD
-EDITTEXT /*STRING_PAGESETUP_BOTTOMVALUE,*/ 0x150, 130, 73, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP
-
-DEFPUSHBUTTON "OK", 0x151, 180, 3, 40, 15, WS_TABSTOP
-PUSHBUTTON "Peruuta", 0x152, 180, 21, 40, 15, WS_TABSTOP
-PUSHBUTTON "&Apua", 0x153, 180, 39, 40, 15, WS_TABSTOP
-}
-
-IDD_ABOUTBOX DIALOG DISCARDABLE 22,16,284,170
-STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
-CAPTION "About ReactOS Notepad"
-FONT 8, "MS Shell Dlg"
-BEGIN
- CONTROL "ReactOS Notepad v1.0\r\nCopyright 1997,98 Marcel Baur \r\nCopyright 2000 Mike McCormack \r\nCopyright 2002 Sylvain Petreolle \r\nCopyright 2002 Andriy Palamarchuk\r\n ",
- -1,"Static",SS_LEFTNOWORDWRAP | WS_GROUP,46,7,232,39
- CONTROL " ",
- -1,"Static",0x50000000,8,48,272,11
- DEFPUSHBUTTON "Close",IDOK,114,149,44,15,WS_GROUP
- ICON IDI_NPICON,-1,12,9,20,30
- EDITTEXT IDC_LICENSE,8,64,272,81,ES_MULTILINE |
- ES_READONLY | WS_VSCROLL
-END
-
-STRINGTABLE DISCARDABLE
-BEGIN
- STRING_LICENSE, "This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.\r\n\r\nThis program 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 General Public License for more details.\r\n\r\nYou should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA."
-END
-
-STRINGTABLE DISCARDABLE
-{
-STRING_PAGESETUP_HEADERVALUE, "&n" /* FIXME */
-STRING_PAGESETUP_FOOTERVALUE, "Sivu &s" /* FIXME */
-STRING_PAGESETUP_LEFTVALUE, "20 mm" /* FIXME */
-STRING_PAGESETUP_RIGHTVALUE, "20 mm" /* FIXME */
-STRING_PAGESETUP_TOPVALUE, "25 mm" /* FIXME */
-STRING_PAGESETUP_BOTTOMVALUE, "25 mm" /* FIXME */
-
-STRING_NOTEPAD, "Notepad"
-STRING_ERROR, "VIRHE"
-STRING_WARNING, "VAROITUS"
-STRING_INFO, "Tiedoitus"
-
-STRING_UNTITLED, "(otsikoimaton)"
-
-STRING_ALL_FILES, "Kaikki tiedostot (*.*)"
-STRING_TEXT_FILES_TXT, "Teksti tiedostot (*.txt)"
-
-STRING_TOOLARGE, "Tiedosto '%s' on liian suuri.\n \
-Please use a different editor."
-STRING_NOTEXT, "Et syöttänyt lainkaan tekstiä. \
-\nKirjoita jotain ja yritä uudelleen"
-STRING_DOESNOTEXIST, "File '%s'\ndoes not exist\n\n \
-Do you want to create a new file ?"
-STRING_NOTSAVED, "File '%s'\nhas been modified\n\n \
-Would you like to save the changes ?"
-STRING_NOTFOUND, "'%s' ei löydy."
-STRING_OUT_OF_MEMORY, "Muistia ei ole riittävästi tämän \
-\ntehtävän tekemiseksi. Sulje jokin sovellus vapauttaaksesi\n \
-muistia."
-
-}
+/*
+ * Notepad (Finnish resources)
+ *
+ * Copyright 1999 by Jukka Iivonen
+ * Copyright 2002 Sylvain Petreolle
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * 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
+ */
+
+LANGUAGE LANG_FINNISH, SUBLANG_DEFAULT
+
+ID_ACCEL ACCELERATORS
+{
+ "^A", CMD_SELECT_ALL
+ "^C", CMD_COPY
+ "^F", CMD_SEARCH
+ "^G", CMD_GOTO
+ "H", CMD_REPLACE, VIRTKEY, CONTROL
+ "^O", CMD_OPEN
+ "^S", CMD_SAVE
+ "^V", CMD_PASTE
+ "^X", CMD_CUT
+ "^Z", CMD_UNDO
+ VK_F3, CMD_SEARCH_NEXT, VIRTKEY
+ VK_F5, CMD_TIME_DATE, VIRTKEY
+}
+
+MAIN_MENU MENU
+BEGIN
+ POPUP "&Tiedosto"
+ BEGIN
+ MENUITEM "&Uusi...", CMD_NEW
+ MENUITEM "&Avaa", CMD_OPEN
+ MENUITEM "Ta&lleta", CMD_SAVE
+ MENUITEM "Talleta &nimellä...", CMD_SAVE_AS
+ MENUITEM "T&ulosta", CMD_PRINT
+ MENUITEM "&Sivun asetukset...", CMD_PAGE_SETUP
+ MENUITEM "&Kirjoittimen asetukset...", CMD_PRINTER_SETUP
+ MENUITEM SEPARATOR
+ MENUITEM "&Poistu", CMD_EXIT
+ END
+ POPUP "&Muokkaa"
+ BEGIN
+ MENUITEM "&Palauta\tCtrl+Z", CMD_UNDO
+ MENUITEM SEPARATOR
+ MENUITEM "&Leikkaa\tCtrl+X", CMD_CUT
+ MENUITEM "&Kopioi\tCtrl+C", CMD_COPY
+ MENUITEM "L&iitä\tCtrl+V", CMD_PASTE
+ MENUITEM "P&oista\tDel", CMD_DELETE
+ MENUITEM SEPARATOR
+ MENUITEM "Etsi...", CMD_SEARCH
+ MENUITEM "Etsi &seuraava\tF3", CMD_SEARCH_NEXT
+ MENUITEM SEPARATOR
+ MENUITEM "&Valitse kaikki", CMD_SELECT_ALL
+ MENUITEM "&Aika/Päivämäärä\tF5", CMD_TIME_DATE
+ MENUITEM SEPARATOR
+ MENUITEM "Ka&tkaise pitkä rivi", CMD_WRAP
+ END
+ POPUP "&Apua"
+ BEGIN
+ MENUITEM "&Sisältö", CMD_HELP_CONTENTS
+ MENUITEM "&Etsi...", CMD_HELP_SEARCH
+ MENUITEM "Apua &Opastuksesta", CMD_HELP_ON_HELP
+ MENUITEM SEPARATOR
+ MENUITEM "&About" CMD_ABOUT
+ MENUITEM "Inf&o...", CMD_ABOUT_WINE
+ END
+END
+
+/* Dialog `Page setup' */
+
+DIALOG_PAGESETUP DIALOG 0, 0, 225, 95
+STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
+FONT 8, "MS Shell Dlg"
+CAPTION "Sivun asetukset"
+{
+LTEXT "&Yläotsikko:", 0x140, 10, 07, 40, 15
+EDITTEXT 0x141, 60, 05,110, 12, WS_BORDER | WS_TABSTOP
+LTEXT "Alao&tsikko:", 0x142, 10, 24, 40, 15
+EDITTEXT 0x143, 60, 22,110, 12, WS_BORDER | WS_TABSTOP
+
+GROUPBOX "&Marginaali:", 0x144, 10, 43,160, 45
+LTEXT "&Vasen:", 0x145, 20, 55, 30, 10, WS_CHILD
+EDITTEXT /*STRING_PAGESETUP_LEFTVALUE,*/ 0x147, 50, 55, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP
+LTEXT "Y&lä:", 0x148, 20, 73, 30, 10, WS_CHILD
+EDITTEXT /*STRING_PAGESETUP_TOPVALUE,*/ 0x14A, 50, 73, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP
+LTEXT "&Oikea:", 0x14B, 100, 55, 30, 10, WS_CHILD
+EDITTEXT /*STRING_PAGESETUP_RIGHTVALUE,*/ 0x14D, 130, 55, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP
+LTEXT "&Ala:", 0x14E,100, 73, 30, 10, WS_CHILD
+EDITTEXT /*STRING_PAGESETUP_BOTTOMVALUE,*/ 0x150, 130, 73, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP
+
+DEFPUSHBUTTON "OK", 0x151, 180, 3, 40, 15, WS_TABSTOP
+PUSHBUTTON "Peruuta", 0x152, 180, 21, 40, 15, WS_TABSTOP
+PUSHBUTTON "&Apua", 0x153, 180, 39, 40, 15, WS_TABSTOP
+}
+
+IDD_ABOUTBOX DIALOG DISCARDABLE 22,16,284,170
+STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
+CAPTION "About ReactOS Notepad"
+FONT 8, "MS Shell Dlg"
+BEGIN
+ CONTROL "ReactOS Notepad v1.0\r\nCopyright 1997,98 Marcel Baur \r\nCopyright 2000 Mike McCormack \r\nCopyright 2002 Sylvain Petreolle \r\nCopyright 2002 Andriy Palamarchuk\r\n ",
+ -1,"Static",SS_LEFTNOWORDWRAP | WS_GROUP,46,7,232,39
+ CONTROL " ",
+ -1,"Static",0x50000000,8,48,272,11
+ DEFPUSHBUTTON "Close",IDOK,114,149,44,15,WS_GROUP
+ ICON IDI_NPICON,-1,12,9,20,30
+ EDITTEXT IDC_LICENSE,8,64,272,81,ES_MULTILINE |
+ ES_READONLY | WS_VSCROLL
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ STRING_LICENSE, "This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.\r\n\r\nThis program 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 General Public License for more details.\r\n\r\nYou should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA."
+END
+
+STRINGTABLE DISCARDABLE
+{
+STRING_PAGESETUP_HEADERVALUE, "&n" /* FIXME */
+STRING_PAGESETUP_FOOTERVALUE, "Sivu &s" /* FIXME */
+STRING_PAGESETUP_LEFTVALUE, "20 mm" /* FIXME */
+STRING_PAGESETUP_RIGHTVALUE, "20 mm" /* FIXME */
+STRING_PAGESETUP_TOPVALUE, "25 mm" /* FIXME */
+STRING_PAGESETUP_BOTTOMVALUE, "25 mm" /* FIXME */
+
+STRING_NOTEPAD, "Notepad"
+STRING_ERROR, "VIRHE"
+STRING_WARNING, "VAROITUS"
+STRING_INFO, "Tiedoitus"
+
+STRING_UNTITLED, "(otsikoimaton)"
+
+STRING_ALL_FILES, "Kaikki tiedostot (*.*)"
+STRING_TEXT_FILES_TXT, "Teksti tiedostot (*.txt)"
+
+STRING_TOOLARGE, "Tiedosto '%s' on liian suuri.\n \
+Please use a different editor."
+STRING_NOTEXT, "Et syöttänyt lainkaan tekstiä. \
+\nKirjoita jotain ja yritä uudelleen"
+STRING_DOESNOTEXIST, "File '%s'\ndoes not exist\n\n \
+Do you want to create a new file ?"
+STRING_NOTSAVED, "File '%s'\nhas been modified\n\n \
+Would you like to save the changes ?"
+STRING_NOTFOUND, "'%s' ei löydy."
+STRING_OUT_OF_MEMORY, "Muistia ei ole riittävästi tämän \
+\ntehtävän tekemiseksi. Sulje jokin sovellus vapauttaaksesi\n \
+muistia."
+
+}
diff --git a/reactos/base/applications/notepad/res/Fr.rc b/reactos/base/applications/notepad/lang/Fr.rc
similarity index 95%
rename from reactos/base/applications/notepad/res/Fr.rc
rename to reactos/base/applications/notepad/lang/Fr.rc
index 53e9d27908d..3f4584e1136 100644
--- a/reactos/base/applications/notepad/res/Fr.rc
+++ b/reactos/base/applications/notepad/lang/Fr.rc
@@ -1,148 +1,164 @@
-/*
- * Notepad (French resources)
- *
- * Copyright 1997,98 Marcel Baur
- * Translation by Laurent Buffler
- * Copyright 2002 Sylvain Petreolle
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * 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
- */
-
-LANGUAGE LANG_FRENCH, SUBLANG_NEUTRAL
-
-MAIN_MENU MENU
-BEGIN
- POPUP "&Fichier"
- BEGIN
- MENUITEM "&Nouveau...", CMD_NEW
- MENUITEM "&Ouvrir\tCtrl+O", CMD_OPEN
- MENUITEM "&Enregistrer\tCtrl+S", CMD_SAVE
- MENUITEM "Enregistrer &sous...", CMD_SAVE_AS
- MENUITEM SEPARATOR
- MENUITEM "Im&primer", CMD_PRINT
- MENUITEM "&Mise en page...", CMD_PAGE_SETUP
- MENUITEM "&Configuration de l'imprimante...", CMD_PRINTER_SETUP
- MENUITEM SEPARATOR
- MENUITEM "&Quitter", CMD_EXIT
- END
- POPUP "&Edition"
- BEGIN
- MENUITEM "&Annuler\tCtrl+Z", CMD_UNDO
- MENUITEM SEPARATOR
- MENUITEM "Co&uper\tCtrl+X", CMD_CUT
- MENUITEM "&Copier\tCtrl+C", CMD_COPY
- MENUITEM "C&oller\tCtrl+V", CMD_PASTE
- MENUITEM "&Effacer\tDel", CMD_DELETE
- MENUITEM SEPARATOR
- MENUITEM "&Rechercher\tCtrl+F", CMD_SEARCH
- MENUITEM "&Suivant\tF3", CMD_SEARCH_NEXT
- MENUITEM SEPARATOR
- MENUITEM "Tout &sélectionner\tCtrl+A", CMD_SELECT_ALL
- MENUITEM "&Heure/Date\tF5", CMD_TIME_DATE
- MENUITEM SEPARATOR
- MENUITEM "&Retour à la ligne", CMD_WRAP
- MENUITEM "&Police...", CMD_FONT
- END
- POPUP "&Aide"
- BEGIN
- MENUITEM "&Sommaire", CMD_HELP_CONTENTS
- MENUITEM "&Rechercher...", CMD_HELP_SEARCH
- MENUITEM "&Utiliser l'aide", CMD_HELP_ON_HELP
- MENUITEM SEPARATOR
- MENUITEM "&About" CMD_ABOUT
- MENUITEM "Inf&o...", CMD_ABOUT_WINE
- END
-END
-
-/* Dialog `Page setup' */
-
-DIALOG_PAGESETUP DIALOG 0, 0, 225, 95
-STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
-FONT 8, "MS Shell Dlg"
-CAPTION "Mise en page"
-{
-LTEXT "&En-tête :", 0x140, 10, 07, 40, 15
-EDITTEXT 0x141, 60, 05,110, 12, WS_BORDER | WS_TABSTOP
-LTEXT "&Pied de page :", 0x142, 10, 24, 40, 15
-EDITTEXT 0x143, 60, 22,110, 12, WS_BORDER | WS_TABSTOP
-
-GROUPBOX "&Marges :", 0x144, 10, 43,160, 45
-LTEXT "&Gauche :", 0x145, 20, 55, 30, 10, WS_CHILD
-EDITTEXT /*STRING_PAGESETUP_LEFTVALUE,*/ 0x147, 50, 55, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP
-LTEXT "&Haut :", 0x148, 20, 73, 30, 10, WS_CHILD
-EDITTEXT /*STRING_PAGESETUP_TOPVALUE,*/ 0x14A, 50, 73, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP
-LTEXT "&Droite :", 0x14B, 100, 55, 30, 10, WS_CHILD
-EDITTEXT /*STRING_PAGESETUP_RIGHTVALUE,*/ 0x14D, 130, 55, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP
-LTEXT "&Bas :", 0x14E,100, 73, 30, 10, WS_CHILD
-EDITTEXT /*STRING_PAGESETUP_BOTTOMVALUE,*/ 0x150, 130, 73, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP
-
-DEFPUSHBUTTON "OK", 0x151, 180, 3, 40, 15, WS_TABSTOP
-PUSHBUTTON "Annuler", 0x152, 180, 21, 40, 15, WS_TABSTOP
-PUSHBUTTON "&Aide", 0x153, 180, 39, 40, 15, WS_TABSTOP
-}
-
-IDD_ABOUTBOX DIALOG DISCARDABLE 22,16,284,170
-STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
-CAPTION "About ReactOS Notepad"
-FONT 8, "MS Shell Dlg"
-BEGIN
- CONTROL "ReactOS Notepad v1.0\r\nCopyright 1997,98 Marcel Baur \r\nCopyright 2000 Mike McCormack \r\nCopyright 2002 Sylvain Petreolle \r\nCopyright 2002 Andriy Palamarchuk\r\n ",
- -1,"Static",SS_LEFTNOWORDWRAP | WS_GROUP,46,7,232,39
- CONTROL " ",
- -1,"Static",0x50000000,8,48,272,11
- DEFPUSHBUTTON "Close",IDOK,114,149,44,15,WS_GROUP
- ICON IDI_NPICON,-1,12,9,20,30
- EDITTEXT IDC_LICENSE,8,64,272,81,ES_MULTILINE |
- ES_READONLY | WS_VSCROLL
-END
-
-STRINGTABLE DISCARDABLE
-BEGIN
- STRING_LICENSE, "This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.\r\n\r\nThis program 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 General Public License for more details.\r\n\r\nYou should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA."
-END
-
-STRINGTABLE DISCARDABLE
-{
-STRING_PAGESETUP_HEADERVALUE, "&n" /* FIXME */
-STRING_PAGESETUP_FOOTERVALUE, "Page &s" /* FIXME */
-STRING_PAGESETUP_LEFTVALUE, "20 mm" /* FIXME */
-STRING_PAGESETUP_RIGHTVALUE, "20 mm" /* FIXME */
-STRING_PAGESETUP_TOPVALUE, "25 mm" /* FIXME */
-STRING_PAGESETUP_BOTTOMVALUE, "25 mm" /* FIXME */
-
-STRING_NOTEPAD, "Bloc-notes"
-STRING_ERROR, "ERREUR"
-STRING_WARNING, "ATTENTION"
-STRING_INFO, "Information"
-
-STRING_UNTITLED, "(sans-titre)"
-
-STRING_ALL_FILES, "Tous fichiers (*.*)"
-STRING_TEXT_FILES_TXT, "Fichiers texte (*.txt)"
-
-STRING_TOOLARGE, "Le fichier '%s' est trop grand pour le bloc-notes.\n \
-Veuillez utiliser un autre éditeur."
-STRING_NOTEXT, "Vous n'avez pas entré de texte. \
-Veuillez taper quelque chose et recommencer"
-STRING_DOESNOTEXIST, "Le fichier '%s'\nn'existe pas.\n\n \
-Voulez-vous créer un nouveau fichier ?"
-STRING_NOTSAVED, "Le fichier '%s'\na été modifié\n\n \
-Voulez-vous enregistrer vos modifications ?"
-STRING_NOTFOUND, "'%s' non trouvé."
-STRING_OUT_OF_MEMORY, "Pas assez de mémoire pour compléter cette \
-tâche. \nFermez une ou plusieurs applications pour libérer\n\
-de la mémoire."
-
-}
+/*
+ * Notepad (French resources)
+ *
+ * Copyright 1997,98 Marcel Baur
+ * Translation by Laurent Buffler
+ * Copyright 2002 Sylvain Petreolle
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * 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
+ */
+
+LANGUAGE LANG_FRENCH, SUBLANG_NEUTRAL
+
+ID_ACCEL ACCELERATORS
+{
+ "^A", CMD_SELECT_ALL
+ "^C", CMD_COPY
+ "^F", CMD_SEARCH
+ "^G", CMD_GOTO
+ "H", CMD_REPLACE, VIRTKEY, CONTROL
+ "^O", CMD_OPEN
+ "^S", CMD_SAVE
+ "^V", CMD_PASTE
+ "^X", CMD_CUT
+ "^Z", CMD_UNDO
+ VK_F3, CMD_SEARCH_NEXT, VIRTKEY
+ VK_F5, CMD_TIME_DATE, VIRTKEY
+}
+
+MAIN_MENU MENU
+BEGIN
+ POPUP "&Fichier"
+ BEGIN
+ MENUITEM "&Nouveau...", CMD_NEW
+ MENUITEM "&Ouvrir\tCtrl+O", CMD_OPEN
+ MENUITEM "&Enregistrer\tCtrl+S", CMD_SAVE
+ MENUITEM "Enregistrer &sous...", CMD_SAVE_AS
+ MENUITEM SEPARATOR
+ MENUITEM "Im&primer", CMD_PRINT
+ MENUITEM "&Mise en page...", CMD_PAGE_SETUP
+ MENUITEM "&Configuration de l'imprimante...", CMD_PRINTER_SETUP
+ MENUITEM SEPARATOR
+ MENUITEM "&Quitter", CMD_EXIT
+ END
+ POPUP "&Edition"
+ BEGIN
+ MENUITEM "&Annuler\tCtrl+Z", CMD_UNDO
+ MENUITEM SEPARATOR
+ MENUITEM "Co&uper\tCtrl+X", CMD_CUT
+ MENUITEM "&Copier\tCtrl+C", CMD_COPY
+ MENUITEM "C&oller\tCtrl+V", CMD_PASTE
+ MENUITEM "&Effacer\tDel", CMD_DELETE
+ MENUITEM SEPARATOR
+ MENUITEM "&Rechercher\tCtrl+F", CMD_SEARCH
+ MENUITEM "&Suivant\tF3", CMD_SEARCH_NEXT
+ MENUITEM SEPARATOR
+ MENUITEM "Tout &sélectionner\tCtrl+A", CMD_SELECT_ALL
+ MENUITEM "&Heure/Date\tF5", CMD_TIME_DATE
+ MENUITEM SEPARATOR
+ MENUITEM "&Retour à la ligne", CMD_WRAP
+ MENUITEM "&Police...", CMD_FONT
+ END
+ POPUP "&Aide"
+ BEGIN
+ MENUITEM "&Sommaire", CMD_HELP_CONTENTS
+ MENUITEM "&Rechercher...", CMD_HELP_SEARCH
+ MENUITEM "&Utiliser l'aide", CMD_HELP_ON_HELP
+ MENUITEM SEPARATOR
+ MENUITEM "&About" CMD_ABOUT
+ MENUITEM "Inf&o...", CMD_ABOUT_WINE
+ END
+END
+
+/* Dialog `Page setup' */
+
+DIALOG_PAGESETUP DIALOG 0, 0, 225, 95
+STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
+FONT 8, "MS Shell Dlg"
+CAPTION "Mise en page"
+{
+LTEXT "&En-tête :", 0x140, 10, 07, 40, 15
+EDITTEXT 0x141, 60, 05,110, 12, WS_BORDER | WS_TABSTOP
+LTEXT "&Pied de page :", 0x142, 10, 24, 40, 15
+EDITTEXT 0x143, 60, 22,110, 12, WS_BORDER | WS_TABSTOP
+
+GROUPBOX "&Marges :", 0x144, 10, 43,160, 45
+LTEXT "&Gauche :", 0x145, 20, 55, 30, 10, WS_CHILD
+EDITTEXT /*STRING_PAGESETUP_LEFTVALUE,*/ 0x147, 50, 55, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP
+LTEXT "&Haut :", 0x148, 20, 73, 30, 10, WS_CHILD
+EDITTEXT /*STRING_PAGESETUP_TOPVALUE,*/ 0x14A, 50, 73, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP
+LTEXT "&Droite :", 0x14B, 100, 55, 30, 10, WS_CHILD
+EDITTEXT /*STRING_PAGESETUP_RIGHTVALUE,*/ 0x14D, 130, 55, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP
+LTEXT "&Bas :", 0x14E,100, 73, 30, 10, WS_CHILD
+EDITTEXT /*STRING_PAGESETUP_BOTTOMVALUE,*/ 0x150, 130, 73, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP
+
+DEFPUSHBUTTON "OK", 0x151, 180, 3, 40, 15, WS_TABSTOP
+PUSHBUTTON "Annuler", 0x152, 180, 21, 40, 15, WS_TABSTOP
+PUSHBUTTON "&Aide", 0x153, 180, 39, 40, 15, WS_TABSTOP
+}
+
+IDD_ABOUTBOX DIALOG DISCARDABLE 22,16,284,170
+STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
+CAPTION "About ReactOS Notepad"
+FONT 8, "MS Shell Dlg"
+BEGIN
+ CONTROL "ReactOS Notepad v1.0\r\nCopyright 1997,98 Marcel Baur \r\nCopyright 2000 Mike McCormack \r\nCopyright 2002 Sylvain Petreolle \r\nCopyright 2002 Andriy Palamarchuk\r\n ",
+ -1,"Static",SS_LEFTNOWORDWRAP | WS_GROUP,46,7,232,39
+ CONTROL " ",
+ -1,"Static",0x50000000,8,48,272,11
+ DEFPUSHBUTTON "Close",IDOK,114,149,44,15,WS_GROUP
+ ICON IDI_NPICON,-1,12,9,20,30
+ EDITTEXT IDC_LICENSE,8,64,272,81,ES_MULTILINE |
+ ES_READONLY | WS_VSCROLL
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ STRING_LICENSE, "This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.\r\n\r\nThis program 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 General Public License for more details.\r\n\r\nYou should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA."
+END
+
+STRINGTABLE DISCARDABLE
+{
+STRING_PAGESETUP_HEADERVALUE, "&n" /* FIXME */
+STRING_PAGESETUP_FOOTERVALUE, "Page &s" /* FIXME */
+STRING_PAGESETUP_LEFTVALUE, "20 mm" /* FIXME */
+STRING_PAGESETUP_RIGHTVALUE, "20 mm" /* FIXME */
+STRING_PAGESETUP_TOPVALUE, "25 mm" /* FIXME */
+STRING_PAGESETUP_BOTTOMVALUE, "25 mm" /* FIXME */
+
+STRING_NOTEPAD, "Bloc-notes"
+STRING_ERROR, "ERREUR"
+STRING_WARNING, "ATTENTION"
+STRING_INFO, "Information"
+
+STRING_UNTITLED, "(sans-titre)"
+
+STRING_ALL_FILES, "Tous fichiers (*.*)"
+STRING_TEXT_FILES_TXT, "Fichiers texte (*.txt)"
+
+STRING_TOOLARGE, "Le fichier '%s' est trop grand pour le bloc-notes.\n \
+Veuillez utiliser un autre éditeur."
+STRING_NOTEXT, "Vous n'avez pas entré de texte. \
+Veuillez taper quelque chose et recommencer"
+STRING_DOESNOTEXIST, "Le fichier '%s'\nn'existe pas.\n\n \
+Voulez-vous créer un nouveau fichier ?"
+STRING_NOTSAVED, "Le fichier '%s'\na été modifié\n\n \
+Voulez-vous enregistrer vos modifications ?"
+STRING_NOTFOUND, "'%s' non trouvé."
+STRING_OUT_OF_MEMORY, "Pas assez de mémoire pour compléter cette \
+tâche. \nFermez une ou plusieurs applications pour libérer\n\
+de la mémoire."
+
+}
diff --git a/reactos/base/applications/notepad/res/Gr.rc b/reactos/base/applications/notepad/lang/Gr.rc
similarity index 95%
rename from reactos/base/applications/notepad/res/Gr.rc
rename to reactos/base/applications/notepad/lang/Gr.rc
index 657949b62a6..71f9a5ca266 100644
--- a/reactos/base/applications/notepad/res/Gr.rc
+++ b/reactos/base/applications/notepad/lang/Gr.rc
@@ -1,187 +1,203 @@
-/*
- * Notepad (Greek resources)
- *
- * Copyright 2005 Apostolos Alexiadis (djapal@gmail.com)
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * 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
- */
-
-LANGUAGE LANG_GREEK, SUBLANG_NEUTRAL
-
-MAIN_MENU MENU
-BEGIN
- POPUP "&Áñ÷åßï"
- BEGIN
- MENUITEM "&ÍÝï...", CMD_NEW
- MENUITEM "&¢íïéãìá\tCtrl+O", CMD_OPEN
- MENUITEM "ÁðïèÞêåõ&óç\tCtrl+S", CMD_SAVE
- MENUITEM "ÁðïèÞêåõóç &ùò...", CMD_SAVE_AS
- MENUITEM SEPARATOR
- MENUITEM "Å&ðéëïãÝò óåëßäáò...", CMD_PAGE_SETUP
- MENUITEM "&Åêôýðùóç", CMD_PRINT
- MENUITEM "ÅðéëïãÝò åê&ôõðùôÞ ...", CMD_PRINTER_SETUP
- MENUITEM SEPARATOR
- MENUITEM "¸&îïäïò", CMD_EXIT
- END
- POPUP "&Edit"
- BEGIN
- MENUITEM "Á&íáßñåóç\tCtrl+Z", CMD_UNDO
- MENUITEM SEPARATOR
- MENUITEM "Áðïêï&ðÞ\tCtrl+X", CMD_CUT
- MENUITEM "&ÁíôéãñáöÞ\tCtrl+C", CMD_COPY
- MENUITEM "&Åðéêüëëçóç\tCtrl+V", CMD_PASTE
- MENUITEM "&ÄéáãñáöÞ\tDel", CMD_DELETE
- MENUITEM SEPARATOR
- MENUITEM "&Åýñåóç...\tCtrl+F", CMD_SEARCH
- MENUITEM "Åýñåóç å&ðüìåíïõ\tF3", CMD_SEARCH_NEXT
- MENUITEM "ÁíôéêáôÜóôáóç\tCtrl+H", CMD_REPLACE
- MENUITEM "&ÌåôÜâáóç óôï...\tCtrl+G", CMD_GOTO
- MENUITEM SEPARATOR
- MENUITEM "ÅðéëïãÞ &¼ëùí\tCtrl+A", CMD_SELECT_ALL
- MENUITEM "&¿ñá/Çìåñïìçíßá\tF5", CMD_TIME_DATE
- END
- POPUP "Ö&ïñìÜ"
- BEGIN
- MENUITEM "&ÅìöÜíéóç ìåãÜëùí ãñáììþí", CMD_WRAP
- MENUITEM "&ÃñáììáôïóåéñÜ...", CMD_FONT
- END
- POPUP "&ÅìöÜíéóç"
- BEGIN
- MENUITEM "ÃñáììÞ &êáôÜóôáóçò", CMD_STATUSBAR
- END
- POPUP "&ÂïÞèåéá"
- BEGIN
- MENUITEM "&Ðåñéå÷üìåíá", CMD_HELP_CONTENTS
- MENUITEM "&ÁíáæÞôçóç...", CMD_HELP_SEARCH
- MENUITEM "&ÂïÞèåéá óôç âïÞèåéá", CMD_HELP_ON_HELP
- MENUITEM SEPARATOR
- MENUITEM "&About" CMD_ABOUT
- MENUITEM "Ðëçñï&öïñßåò", CMD_ABOUT_WINE
- END
-END
-
-/* Dialog `Page setup' */
-
-DIALOG_PAGESETUP DIALOG 0, 0, 225, 95
-STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
-FONT 8, "MS Shell Dlg"
-CAPTION "ÅðéëïãÝò Óåëßäáò"
-{
-LTEXT "&ÊåöáëÞ:", 0x140, 10, 07, 40, 15
-EDITTEXT 0x141, 60, 05,110, 12, WS_BORDER | WS_TABSTOP
-LTEXT "&ÕðïóÝëéäï:", 0x142, 10, 24, 40, 15
-EDITTEXT 0x143, 60, 22,110, 12, WS_BORDER | WS_TABSTOP
-
-GROUPBOX "&¼ñéá:", 0x144, 10, 43,160, 45
-LTEXT "&ÁñéóôåñÜ:", 0x145, 20, 55, 30, 10, WS_CHILD
-EDITTEXT /*STRING_PAGESETUP_LEFTVALUE,*/ 0x147, 50, 55, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP
-LTEXT "&ÐÜíù:", 0x148, 20, 73, 30, 10, WS_CHILD
-EDITTEXT /*STRING_PAGESETUP_TOPVALUE,*/ 0x14A, 50, 73, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP
-LTEXT "&ÄåîéÜ:", 0x14B, 100, 55, 30, 10, WS_CHILD
-EDITTEXT /*STRING_PAGESETUP_RIGHTVALUE,*/ 0x14D, 130, 55, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP
-LTEXT "&ÊÜôù:", 0x14E,100, 73, 30, 10, WS_CHILD
-EDITTEXT /*STRING_PAGESETUP_BOTTOMVALUE,*/ 0x150, 130, 73, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP
-
-DEFPUSHBUTTON "OK", 0x151, 180, 3, 40, 15, WS_TABSTOP
-PUSHBUTTON "Áêýñùóç", 0x152, 180, 21, 40, 15, WS_TABSTOP
-PUSHBUTTON "&ÂïÞèåéá", 0x153, 180, 39, 40, 15, WS_TABSTOP
-}
-
-/* Dialog `Encoding' */
-DIALOG_ENCODING DIALOG 0, 0, 256, 44
-STYLE DS_SETFONT | DS_FIXEDSYS | DS_CONTROL | WS_CHILD | WS_CLIPSIBLINGS |
- WS_CAPTION | WS_SYSMENU
-FONT 8, "MS Shell Dlg"
-CAPTION "Êùäéêïðïßçóç"
-{
-COMBOBOX ID_ENCODING,54,0,156,80,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP
-LTEXT "Êùäéêïðïßçóç:",0x155,5,2,41,12
-COMBOBOX ID_EOLN,54,18,156,80,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
-LTEXT "Endlines:",0x156,5,20,41,12
-}
-
-/* Dialog 'Go To' */
-DIALOG_GOTO DIALOG 0,0,165,50
-STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
-FONT 8, "MS Shell Dlg"
-CAPTION "ÌåôÜâáóç óôç ãñáììÞ"
-{
-EDITTEXT ID_LINENUMBER,54,10,106,12,WS_CHILD | WS_BORDER | WS_TABSTOP
-LTEXT "Áñéèìüò ãñáììÞò:",0x155,5,12,41,12,WS_CHILD | WS_TABSTOP | ES_NUMBER
-DEFPUSHBUTTON "OK", IDOK, 75, 30, 40, 15, WS_CHILD | WS_TABSTOP
-PUSHBUTTON "Áêýñùóç", IDCANCEL, 120, 30, 40, 15, WS_CHILD | WS_TABSTOP
-}
-
-
-IDD_ABOUTBOX DIALOG DISCARDABLE 22,16,284,170
-STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
-CAPTION "About ReactOS Notepad"
-FONT 8, "MS Shell Dlg"
-BEGIN
- CONTROL "ReactOS Notepad v1.0\r\nCopyright 1997,98 Marcel Baur \r\nCopyright 2000 Mike McCormack \r\nCopyright 2002 Sylvain Petreolle \r\nCopyright 2002 Andriy Palamarchuk\r\n ",
- -1,"Static",SS_LEFTNOWORDWRAP | WS_GROUP,46,7,232,39
- CONTROL " ",
- -1,"Static",0x50000000,8,48,272,11
- DEFPUSHBUTTON "Close",IDOK,114,149,44,15,WS_GROUP
- ICON IDI_NPICON,-1,12,9,20,30
- EDITTEXT IDC_LICENSE,8,64,272,81,ES_MULTILINE |
- ES_READONLY | WS_VSCROLL
-END
-
-STRINGTABLE DISCARDABLE
-BEGIN
- STRING_LICENSE, "This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.\r\n\r\nThis program 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 General Public License for more details.\r\n\r\nYou should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA."
-END
-
-STRINGTABLE DISCARDABLE
-{
-STRING_PAGESETUP_HEADERVALUE, "&n" /* FIXME */
-STRING_PAGESETUP_FOOTERVALUE, "Óåëßäá &s" /* FIXME */
-STRING_PAGESETUP_LEFTVALUE, "20 mm" /* FIXME */
-STRING_PAGESETUP_RIGHTVALUE, "20 mm" /* FIXME */
-STRING_PAGESETUP_TOPVALUE, "25 mm" /* FIXME */
-STRING_PAGESETUP_BOTTOMVALUE, "25 mm" /* FIXME */
-
-STRING_NOTEPAD, "Notepad"
-STRING_ERROR, "ERROR"
-STRING_WARNING, "WARNING"
-STRING_INFO, "Ðëçñïöïñßåò"
-
-STRING_UNTITLED, "(×ùñßò ôßôëï)"
-
-STRING_ALL_FILES, "¼ëá ôá áñ÷åßá (*.*)"
-STRING_TEXT_FILES_TXT, "Áñ÷åßá êåéìÝíïõ (*.txt)"
-
-STRING_TOOLARGE, "Ôï áñ÷åßï '%s' åßíáé ðïëý ìåãÜëï ãéá ôï notepad.\n \
-Ðáñáêáëþ ÷ñçóéìïðïéåßóôå Üëëï ðñüãñáììá åðåîåñãáóßáò êåéìÝíïõ."
-STRING_NOTEXT, "Äåí ðëçêôñïëïãÞóáôå êÜôé. \
-\nÐáñáêáëþ ðëçêôñïëïãåßóôå êÜôé êáé ðñïóðáèåßóôå îáíÜ"
-STRING_DOESNOTEXIST, "Ôï áñ÷åßï '%s'\näåí õðÜñ÷åé\n\n \
-ÈÝëåôå íá äçìéïõñãÞóåôå Ýíá íÝï áñ÷åßï;"
-STRING_NOTSAVED, "Ôï áñ÷åßï '%s'\nÝ÷åé ôñïðïðïéçèåß\n\n \
-ÈÝëåôå íá áðïèçêåýóåôå ôéò áëëáãÝò;"
-STRING_NOTFOUND, "Ôï áñ÷åßï '%s' äå ìðïñåß íá âñåèåß."
-STRING_OUT_OF_MEMORY, "Äåí õðÜñ÷åé áñêåôÞ ìíÞìç ãéá íá ïëïêëçñùèåß áõôÞ ç \
-äéåñãáóßá. \nÊëåßóôå ìßá Þ ðåññéóüôåñåò åöáñìïãÝò ãéá íá áõîçèåß ç \nåëåýèåñç \
-ìíÞìç."
-STRING_CANNOTFIND "Äå ìðïñåß íá âñåèåß ôï '%s'"
-STRING_ANSI, "ANSI"
-STRING_UNICODE, "Unicode"
-STRING_UNICODE_BE, "Unicode (big endian)"
-STRING_UTF8, "UTF-8"
-STRING_CRLF, "Windows"
-STRING_LF, "Unix"
-STRING_CR, "Mac"
-}
+/*
+ * Notepad (Greek resources)
+ *
+ * Copyright 2005 Apostolos Alexiadis (djapal@gmail.com)
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * 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
+ */
+
+LANGUAGE LANG_GREEK, SUBLANG_DEFAULT
+
+ID_ACCEL ACCELERATORS
+{
+ "^A", CMD_SELECT_ALL
+ "^C", CMD_COPY
+ "^F", CMD_SEARCH
+ "^G", CMD_GOTO
+ "H", CMD_REPLACE, VIRTKEY, CONTROL
+ "^O", CMD_OPEN
+ "^S", CMD_SAVE
+ "^V", CMD_PASTE
+ "^X", CMD_CUT
+ "^Z", CMD_UNDO
+ VK_F3, CMD_SEARCH_NEXT, VIRTKEY
+ VK_F5, CMD_TIME_DATE, VIRTKEY
+}
+
+MAIN_MENU MENU
+BEGIN
+ POPUP "&Áñ÷åßï"
+ BEGIN
+ MENUITEM "&ÍÝï...", CMD_NEW
+ MENUITEM "&¢íïéãìá\tCtrl+O", CMD_OPEN
+ MENUITEM "ÁðïèÞêåõ&óç\tCtrl+S", CMD_SAVE
+ MENUITEM "ÁðïèÞêåõóç &ùò...", CMD_SAVE_AS
+ MENUITEM SEPARATOR
+ MENUITEM "Å&ðéëïãÝò óåëßäáò...", CMD_PAGE_SETUP
+ MENUITEM "&Åêôýðùóç", CMD_PRINT
+ MENUITEM "ÅðéëïãÝò åê&ôõðùôÞ ...", CMD_PRINTER_SETUP
+ MENUITEM SEPARATOR
+ MENUITEM "¸&îïäïò", CMD_EXIT
+ END
+ POPUP "&Edit"
+ BEGIN
+ MENUITEM "Á&íáßñåóç\tCtrl+Z", CMD_UNDO
+ MENUITEM SEPARATOR
+ MENUITEM "Áðïêï&ðÞ\tCtrl+X", CMD_CUT
+ MENUITEM "&ÁíôéãñáöÞ\tCtrl+C", CMD_COPY
+ MENUITEM "&Åðéêüëëçóç\tCtrl+V", CMD_PASTE
+ MENUITEM "&ÄéáãñáöÞ\tDel", CMD_DELETE
+ MENUITEM SEPARATOR
+ MENUITEM "&Åýñåóç...\tCtrl+F", CMD_SEARCH
+ MENUITEM "Åýñåóç å&ðüìåíïõ\tF3", CMD_SEARCH_NEXT
+ MENUITEM "ÁíôéêáôÜóôáóç\tCtrl+H", CMD_REPLACE
+ MENUITEM "&ÌåôÜâáóç óôï...\tCtrl+G", CMD_GOTO
+ MENUITEM SEPARATOR
+ MENUITEM "ÅðéëïãÞ &¼ëùí\tCtrl+A", CMD_SELECT_ALL
+ MENUITEM "&¿ñá/Çìåñïìçíßá\tF5", CMD_TIME_DATE
+ END
+ POPUP "Ö&ïñìÜ"
+ BEGIN
+ MENUITEM "&ÅìöÜíéóç ìåãÜëùí ãñáììþí", CMD_WRAP
+ MENUITEM "&ÃñáììáôïóåéñÜ...", CMD_FONT
+ END
+ POPUP "&ÅìöÜíéóç"
+ BEGIN
+ MENUITEM "ÃñáììÞ &êáôÜóôáóçò", CMD_STATUSBAR
+ END
+ POPUP "&ÂïÞèåéá"
+ BEGIN
+ MENUITEM "&Ðåñéå÷üìåíá", CMD_HELP_CONTENTS
+ MENUITEM "&ÁíáæÞôçóç...", CMD_HELP_SEARCH
+ MENUITEM "&ÂïÞèåéá óôç âïÞèåéá", CMD_HELP_ON_HELP
+ MENUITEM SEPARATOR
+ MENUITEM "&About" CMD_ABOUT
+ MENUITEM "Ðëçñï&öïñßåò", CMD_ABOUT_WINE
+ END
+END
+
+/* Dialog `Page setup' */
+
+DIALOG_PAGESETUP DIALOG 0, 0, 225, 95
+STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
+FONT 8, "MS Shell Dlg"
+CAPTION "ÅðéëïãÝò Óåëßäáò"
+{
+LTEXT "&ÊåöáëÞ:", 0x140, 10, 07, 40, 15
+EDITTEXT 0x141, 60, 05,110, 12, WS_BORDER | WS_TABSTOP
+LTEXT "&ÕðïóÝëéäï:", 0x142, 10, 24, 40, 15
+EDITTEXT 0x143, 60, 22,110, 12, WS_BORDER | WS_TABSTOP
+
+GROUPBOX "&¼ñéá:", 0x144, 10, 43,160, 45
+LTEXT "&ÁñéóôåñÜ:", 0x145, 20, 55, 30, 10, WS_CHILD
+EDITTEXT /*STRING_PAGESETUP_LEFTVALUE,*/ 0x147, 50, 55, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP
+LTEXT "&ÐÜíù:", 0x148, 20, 73, 30, 10, WS_CHILD
+EDITTEXT /*STRING_PAGESETUP_TOPVALUE,*/ 0x14A, 50, 73, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP
+LTEXT "&ÄåîéÜ:", 0x14B, 100, 55, 30, 10, WS_CHILD
+EDITTEXT /*STRING_PAGESETUP_RIGHTVALUE,*/ 0x14D, 130, 55, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP
+LTEXT "&ÊÜôù:", 0x14E,100, 73, 30, 10, WS_CHILD
+EDITTEXT /*STRING_PAGESETUP_BOTTOMVALUE,*/ 0x150, 130, 73, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP
+
+DEFPUSHBUTTON "OK", 0x151, 180, 3, 40, 15, WS_TABSTOP
+PUSHBUTTON "Áêýñùóç", 0x152, 180, 21, 40, 15, WS_TABSTOP
+PUSHBUTTON "&ÂïÞèåéá", 0x153, 180, 39, 40, 15, WS_TABSTOP
+}
+
+/* Dialog `Encoding' */
+DIALOG_ENCODING DIALOG 0, 0, 256, 44
+STYLE DS_SETFONT | DS_FIXEDSYS | DS_CONTROL | WS_CHILD | WS_CLIPSIBLINGS |
+ WS_CAPTION | WS_SYSMENU
+FONT 8, "MS Shell Dlg"
+CAPTION "Êùäéêïðïßçóç"
+{
+COMBOBOX ID_ENCODING,54,0,156,80,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP
+LTEXT "Êùäéêïðïßçóç:",0x155,5,2,41,12
+COMBOBOX ID_EOLN,54,18,156,80,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
+LTEXT "Endlines:",0x156,5,20,41,12
+}
+
+/* Dialog 'Go To' */
+DIALOG_GOTO DIALOG 0,0,165,50
+STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
+FONT 8, "MS Shell Dlg"
+CAPTION "ÌåôÜâáóç óôç ãñáììÞ"
+{
+EDITTEXT ID_LINENUMBER,54,10,106,12,WS_CHILD | WS_BORDER | WS_TABSTOP
+LTEXT "Áñéèìüò ãñáììÞò:",0x155,5,12,41,12,WS_CHILD | WS_TABSTOP | ES_NUMBER
+DEFPUSHBUTTON "OK", IDOK, 75, 30, 40, 15, WS_CHILD | WS_TABSTOP
+PUSHBUTTON "Áêýñùóç", IDCANCEL, 120, 30, 40, 15, WS_CHILD | WS_TABSTOP
+}
+
+
+IDD_ABOUTBOX DIALOG DISCARDABLE 22,16,284,170
+STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
+CAPTION "About ReactOS Notepad"
+FONT 8, "MS Shell Dlg"
+BEGIN
+ CONTROL "ReactOS Notepad v1.0\r\nCopyright 1997,98 Marcel Baur \r\nCopyright 2000 Mike McCormack \r\nCopyright 2002 Sylvain Petreolle \r\nCopyright 2002 Andriy Palamarchuk\r\n ",
+ -1,"Static",SS_LEFTNOWORDWRAP | WS_GROUP,46,7,232,39
+ CONTROL " ",
+ -1,"Static",0x50000000,8,48,272,11
+ DEFPUSHBUTTON "Close",IDOK,114,149,44,15,WS_GROUP
+ ICON IDI_NPICON,-1,12,9,20,30
+ EDITTEXT IDC_LICENSE,8,64,272,81,ES_MULTILINE |
+ ES_READONLY | WS_VSCROLL
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ STRING_LICENSE, "This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.\r\n\r\nThis program 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 General Public License for more details.\r\n\r\nYou should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA."
+END
+
+STRINGTABLE DISCARDABLE
+{
+STRING_PAGESETUP_HEADERVALUE, "&n" /* FIXME */
+STRING_PAGESETUP_FOOTERVALUE, "Óåëßäá &s" /* FIXME */
+STRING_PAGESETUP_LEFTVALUE, "20 mm" /* FIXME */
+STRING_PAGESETUP_RIGHTVALUE, "20 mm" /* FIXME */
+STRING_PAGESETUP_TOPVALUE, "25 mm" /* FIXME */
+STRING_PAGESETUP_BOTTOMVALUE, "25 mm" /* FIXME */
+
+STRING_NOTEPAD, "Notepad"
+STRING_ERROR, "ERROR"
+STRING_WARNING, "WARNING"
+STRING_INFO, "Ðëçñïöïñßåò"
+
+STRING_UNTITLED, "(×ùñßò ôßôëï)"
+
+STRING_ALL_FILES, "¼ëá ôá áñ÷åßá (*.*)"
+STRING_TEXT_FILES_TXT, "Áñ÷åßá êåéìÝíïõ (*.txt)"
+
+STRING_TOOLARGE, "Ôï áñ÷åßï '%s' åßíáé ðïëý ìåãÜëï ãéá ôï notepad.\n \
+Ðáñáêáëþ ÷ñçóéìïðïéåßóôå Üëëï ðñüãñáììá åðåîåñãáóßáò êåéìÝíïõ."
+STRING_NOTEXT, "Äåí ðëçêôñïëïãÞóáôå êÜôé. \
+\nÐáñáêáëþ ðëçêôñïëïãåßóôå êÜôé êáé ðñïóðáèåßóôå îáíÜ"
+STRING_DOESNOTEXIST, "Ôï áñ÷åßï '%s'\näåí õðÜñ÷åé\n\n \
+ÈÝëåôå íá äçìéïõñãÞóåôå Ýíá íÝï áñ÷åßï;"
+STRING_NOTSAVED, "Ôï áñ÷åßï '%s'\nÝ÷åé ôñïðïðïéçèåß\n\n \
+ÈÝëåôå íá áðïèçêåýóåôå ôéò áëëáãÝò;"
+STRING_NOTFOUND, "Ôï áñ÷åßï '%s' äå ìðïñåß íá âñåèåß."
+STRING_OUT_OF_MEMORY, "Äåí õðÜñ÷åé áñêåôÞ ìíÞìç ãéá íá ïëïêëçñùèåß áõôÞ ç \
+äéåñãáóßá. \nÊëåßóôå ìßá Þ ðåññéóüôåñåò åöáñìïãÝò ãéá íá áõîçèåß ç \nåëåýèåñç \
+ìíÞìç."
+STRING_CANNOTFIND "Äå ìðïñåß íá âñåèåß ôï '%s'"
+STRING_ANSI, "ANSI"
+STRING_UNICODE, "Unicode"
+STRING_UNICODE_BE, "Unicode (big endian)"
+STRING_UTF8, "UTF-8"
+STRING_CRLF, "Windows"
+STRING_LF, "Unix"
+STRING_CR, "Mac"
+}
diff --git a/reactos/base/applications/notepad/res/Hu.rc b/reactos/base/applications/notepad/lang/Hu.rc
similarity index 94%
rename from reactos/base/applications/notepad/res/Hu.rc
rename to reactos/base/applications/notepad/lang/Hu.rc
index 4c439d67668..3ec88ba3b44 100644
--- a/reactos/base/applications/notepad/res/Hu.rc
+++ b/reactos/base/applications/notepad/lang/Hu.rc
@@ -1,147 +1,164 @@
-/*
- * Notepad (Hungarian resources)
- *
- * Copyright 1997,98 Marcel Baur
- * Proofread 1998 by David Lee Lambert
- * Copyright 2002 Sylvain Petreolle
- * Copyright 2002 Zoly Nagy
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * 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
- */
-
-MAIN_MENU MENU LANGUAGE LANG_HUNGARIAN, SUBLANG_NEUTRAL
-BEGIN
- POPUP "&Fájl"
- BEGIN
- MENUITEM "Ú&j", CMD_NEW
- MENUITEM "Meg&nyitás...", CMD_OPEN
- MENUITEM "&Mentés", CMD_SAVE
- MENUITEM "Mentés má&sként...", CMD_SAVE_AS
- MENUITEM SEPARATOR
- MENUITEM "&Oldalbeállítás...", CMD_PAGE_SETUP
- MENUITEM "Nyom&tatás...", CMD_PRINT
- MENUITEM "Nyomtató &beállítás...", CMD_PRINTER_SETUP
- MENUITEM SEPARATOR
- MENUITEM "&Kilépés", CMD_EXIT
- END
- POPUP "S&zerkesztés"
- BEGIN
- MENUITEM "&Visszavonás\tCtrl+Z", CMD_UNDO
- MENUITEM SEPARATOR
- MENUITEM "Kivá&gás\tCtrl+X", CMD_CUT
- MENUITEM "&Másolás\tCtrl+C", CMD_COPY
- MENUITEM "&Beillesztés\tCtrl+V", CMD_PASTE
- MENUITEM "Tör&lés\tDel", CMD_DELETE
- MENUITEM SEPARATOR
- MENUITEM "&Keresés...", CMD_SEARCH
- MENUITEM "Köve&tkezõ keresése\tF3", CMD_SEARCH_NEXT
- MENUITEM SEPARATOR
- MENUITEM "&Az összes kijelölése", CMD_SELECT_ALL
- MENUITEM "&Idõ/dátum\tF5", CMD_TIME_DATE
- MENUITEM SEPARATOR
- MENUITEM "&Hosszú sorok tördelése", CMD_WRAP
- END
- POPUP "&Súgó"
- BEGIN
- MENUITEM "&Témakörök", CMD_HELP_CONTENTS
- MENUITEM "&Keresés...", CMD_HELP_SEARCH
- MENUITEM "&Használat", CMD_HELP_ON_HELP
- MENUITEM SEPARATOR
- MENUITEM "&About" CMD_ABOUT
- MENUITEM "Inf&ormáció...", CMD_ABOUT_WINE
- END
-END
-
-/* Dialog `Page setup' */
-
-DIALOG_PAGESETUP DIALOG 0, 0, 225, 95
-LANGUAGE LANG_HUNGARIAN, SUBLANG_NEUTRAL
-STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
-FONT 8, "MS Shell Dlg"
-CAPTION "Oldalbeállítás"
-{
-LTEXT "&Fejléc:", 0x140, 10, 07, 40, 15
-EDITTEXT 0x141, 60, 05,110, 12, WS_BORDER | WS_TABSTOP
-LTEXT "&Lábléc:", 0x142, 10, 24, 40, 15
-EDITTEXT 0x143, 60, 22,110, 12, WS_BORDER | WS_TABSTOP
-
-GROUPBOX "&Margók:", 0x144, 10, 43,160, 45
-LTEXT "&Bal:", 0x145, 20, 55, 30, 10, WS_CHILD
-EDITTEXT /*STRING_PAGESETUP_LEFTVALUE,*/ 0x147, 50, 55, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP
-LTEXT "&Felsõ:", 0x148, 20, 73, 30, 10, WS_CHILD
-EDITTEXT /*STRING_PAGESETUP_TOPVALUE,*/ 0x14A, 50, 73, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP
-LTEXT "&Jobb:", 0x14B, 100, 55, 30, 10, WS_CHILD
-EDITTEXT /*STRING_PAGESETUP_RIGHTVALUE,*/ 0x14D, 130, 55, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP
-LTEXT "&Alsó:", 0x14E,100, 73, 30, 10, WS_CHILD
-EDITTEXT /*STRING_PAGESETUP_BOTTOMVALUE,*/ 0x150, 130, 73, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP
-
-DEFPUSHBUTTON "OK", 0x151, 180, 3, 40, 15, WS_TABSTOP
-PUSHBUTTON "Mégse", 0x152, 180, 21, 40, 15, WS_TABSTOP
-PUSHBUTTON "&Súgó", 0x153, 180, 39, 40, 15, WS_TABSTOP
-}
-
-IDD_ABOUTBOX DIALOG DISCARDABLE 22,16,284,170
-STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
-CAPTION "About ReactOS Notepad"
-FONT 8, "MS Shell Dlg"
-BEGIN
- CONTROL "ReactOS Notepad v1.0\r\nCopyright 1997,98 Marcel Baur \r\nCopyright 2000 Mike McCormack \r\nCopyright 2002 Sylvain Petreolle \r\nCopyright 2002 Andriy Palamarchuk\r\n ",
- -1,"Static",SS_LEFTNOWORDWRAP | WS_GROUP,46,7,232,39
- CONTROL " ",
- -1,"Static",0x50000000,8,48,272,11
- DEFPUSHBUTTON "Close",IDOK,114,149,44,15,WS_GROUP
- ICON IDI_NPICON,-1,12,9,20,30
- EDITTEXT IDC_LICENSE,8,64,272,81,ES_MULTILINE |
- ES_READONLY | WS_VSCROLL
-END
-
-STRINGTABLE DISCARDABLE
-BEGIN
- STRING_LICENSE, "This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.\r\n\r\nThis program 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 General Public License for more details.\r\n\r\nYou should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA."
-END
-
-STRINGTABLE DISCARDABLE LANGUAGE LANG_HUNGARIAN, SUBLANG_NEUTRAL
-{
-STRING_PAGESETUP_HEADERVALUE, "&n" /* FIXME */
-STRING_PAGESETUP_FOOTERVALUE, "Oldalszám: &s." /* FIXME */
-STRING_PAGESETUP_LEFTVALUE, "20 mm" /* FIXME */
-STRING_PAGESETUP_RIGHTVALUE, "20 mm" /* FIXME */
-STRING_PAGESETUP_TOPVALUE, "25 mm" /* FIXME */
-STRING_PAGESETUP_BOTTOMVALUE, "25 mm" /* FIXME */
-
-STRING_NOTEPAD, "Jegyzettömb"
-STRING_ERROR, "HIBA"
-STRING_WARNING, "FIGYELMEZTETÉS"
-STRING_INFO, "Információ"
-
-STRING_UNTITLED, "(névtelen)"
-
-STRING_ALL_FILES, "Minden fájl (*.*)"
-STRING_TEXT_FILES_TXT, "Szövegfájlok (*.txt)"
-
-STRING_TOOLARGE, "'%s' fájl túl nagy méretû.\n \
-Kérem használjon másik szövegszerkesztõ programot."
-STRING_NOTEXT, "A szöveg nem tartalmaz karaktert! \
-\nKérem gépeljen be néhány karaktert és próbálja újra!"
-STRING_DOESNOTEXIST, "A megadott '%s'\nfájl nem létezik!\n\n \
-Kíván létrehozni új fájlt?"
-STRING_NOTSAVED, "'%s' fájl\nmódosult\n\n \
-Szeretné menteni a változásokat?"
-STRING_NOTFOUND, "'%s' nem található!"
-STRING_OUT_OF_MEMORY, "Nincs elegendõ szabad memória!\
-\nZárjon be néhány alkalmazást, ezzel növelve a szabad memória méretét\
-!"
-
-}
+/*
+ * Notepad (Hungarian resources)
+ *
+ * Copyright 1997,98 Marcel Baur
+ * Proofread 1998 by David Lee Lambert
+ * Copyright 2002 Sylvain Petreolle
+ * Copyright 2002 Zoly Nagy
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * 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
+ */
+
+LANGUAGE LANG_HUNGARIAN, SUBLANG_DEFAULT
+
+ID_ACCEL ACCELERATORS
+{
+ "^A", CMD_SELECT_ALL
+ "^C", CMD_COPY
+ "^F", CMD_SEARCH
+ "^G", CMD_GOTO
+ "H", CMD_REPLACE, VIRTKEY, CONTROL
+ "^O", CMD_OPEN
+ "^S", CMD_SAVE
+ "^V", CMD_PASTE
+ "^X", CMD_CUT
+ "^Z", CMD_UNDO
+ VK_F3, CMD_SEARCH_NEXT, VIRTKEY
+ VK_F5, CMD_TIME_DATE, VIRTKEY
+}
+
+MAIN_MENU MENU
+BEGIN
+ POPUP "&Fájl"
+ BEGIN
+ MENUITEM "Ú&j", CMD_NEW
+ MENUITEM "Meg&nyitás...", CMD_OPEN
+ MENUITEM "&Mentés", CMD_SAVE
+ MENUITEM "Mentés má&sként...", CMD_SAVE_AS
+ MENUITEM SEPARATOR
+ MENUITEM "&Oldalbeállítás...", CMD_PAGE_SETUP
+ MENUITEM "Nyom&tatás...", CMD_PRINT
+ MENUITEM "Nyomtató &beállítás...", CMD_PRINTER_SETUP
+ MENUITEM SEPARATOR
+ MENUITEM "&Kilépés", CMD_EXIT
+ END
+ POPUP "S&zerkesztés"
+ BEGIN
+ MENUITEM "&Visszavonás\tCtrl+Z", CMD_UNDO
+ MENUITEM SEPARATOR
+ MENUITEM "Kivá&gás\tCtrl+X", CMD_CUT
+ MENUITEM "&Másolás\tCtrl+C", CMD_COPY
+ MENUITEM "&Beillesztés\tCtrl+V", CMD_PASTE
+ MENUITEM "Tör&lés\tDel", CMD_DELETE
+ MENUITEM SEPARATOR
+ MENUITEM "&Keresés...", CMD_SEARCH
+ MENUITEM "Köve&tkezõ keresése\tF3", CMD_SEARCH_NEXT
+ MENUITEM SEPARATOR
+ MENUITEM "&Az összes kijelölése", CMD_SELECT_ALL
+ MENUITEM "&Idõ/dátum\tF5", CMD_TIME_DATE
+ MENUITEM SEPARATOR
+ MENUITEM "&Hosszú sorok tördelése", CMD_WRAP
+ END
+ POPUP "&Súgó"
+ BEGIN
+ MENUITEM "&Témakörök", CMD_HELP_CONTENTS
+ MENUITEM "&Keresés...", CMD_HELP_SEARCH
+ MENUITEM "&Használat", CMD_HELP_ON_HELP
+ MENUITEM SEPARATOR
+ MENUITEM "&About" CMD_ABOUT
+ MENUITEM "Inf&ormáció...", CMD_ABOUT_WINE
+ END
+END
+
+/* Dialog `Page setup' */
+
+DIALOG_PAGESETUP DIALOG 0, 0, 225, 95
+STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
+FONT 8, "MS Shell Dlg"
+CAPTION "Oldalbeállítás"
+{
+LTEXT "&Fejléc:", 0x140, 10, 07, 40, 15
+EDITTEXT 0x141, 60, 05,110, 12, WS_BORDER | WS_TABSTOP
+LTEXT "&Lábléc:", 0x142, 10, 24, 40, 15
+EDITTEXT 0x143, 60, 22,110, 12, WS_BORDER | WS_TABSTOP
+
+GROUPBOX "&Margók:", 0x144, 10, 43,160, 45
+LTEXT "&Bal:", 0x145, 20, 55, 30, 10, WS_CHILD
+EDITTEXT /*STRING_PAGESETUP_LEFTVALUE,*/ 0x147, 50, 55, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP
+LTEXT "&Felsõ:", 0x148, 20, 73, 30, 10, WS_CHILD
+EDITTEXT /*STRING_PAGESETUP_TOPVALUE,*/ 0x14A, 50, 73, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP
+LTEXT "&Jobb:", 0x14B, 100, 55, 30, 10, WS_CHILD
+EDITTEXT /*STRING_PAGESETUP_RIGHTVALUE,*/ 0x14D, 130, 55, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP
+LTEXT "&Alsó:", 0x14E,100, 73, 30, 10, WS_CHILD
+EDITTEXT /*STRING_PAGESETUP_BOTTOMVALUE,*/ 0x150, 130, 73, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP
+
+DEFPUSHBUTTON "OK", 0x151, 180, 3, 40, 15, WS_TABSTOP
+PUSHBUTTON "Mégse", 0x152, 180, 21, 40, 15, WS_TABSTOP
+PUSHBUTTON "&Súgó", 0x153, 180, 39, 40, 15, WS_TABSTOP
+}
+
+IDD_ABOUTBOX DIALOG DISCARDABLE 22,16,284,170
+STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
+CAPTION "About ReactOS Notepad"
+FONT 8, "MS Shell Dlg"
+BEGIN
+ CONTROL "ReactOS Notepad v1.0\r\nCopyright 1997,98 Marcel Baur \r\nCopyright 2000 Mike McCormack \r\nCopyright 2002 Sylvain Petreolle \r\nCopyright 2002 Andriy Palamarchuk\r\n ",
+ -1,"Static",SS_LEFTNOWORDWRAP | WS_GROUP,46,7,232,39
+ CONTROL " ",
+ -1,"Static",0x50000000,8,48,272,11
+ DEFPUSHBUTTON "Close",IDOK,114,149,44,15,WS_GROUP
+ ICON IDI_NPICON,-1,12,9,20,30
+ EDITTEXT IDC_LICENSE,8,64,272,81,ES_MULTILINE |
+ ES_READONLY | WS_VSCROLL
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ STRING_LICENSE, "This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.\r\n\r\nThis program 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 General Public License for more details.\r\n\r\nYou should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA."
+END
+
+STRINGTABLE DISCARDABLE
+{
+STRING_PAGESETUP_HEADERVALUE, "&n" /* FIXME */
+STRING_PAGESETUP_FOOTERVALUE, "Oldalszám: &s." /* FIXME */
+STRING_PAGESETUP_LEFTVALUE, "20 mm" /* FIXME */
+STRING_PAGESETUP_RIGHTVALUE, "20 mm" /* FIXME */
+STRING_PAGESETUP_TOPVALUE, "25 mm" /* FIXME */
+STRING_PAGESETUP_BOTTOMVALUE, "25 mm" /* FIXME */
+
+STRING_NOTEPAD, "Jegyzettömb"
+STRING_ERROR, "HIBA"
+STRING_WARNING, "FIGYELMEZTETÉS"
+STRING_INFO, "Információ"
+
+STRING_UNTITLED, "(névtelen)"
+
+STRING_ALL_FILES, "Minden fájl (*.*)"
+STRING_TEXT_FILES_TXT, "Szövegfájlok (*.txt)"
+
+STRING_TOOLARGE, "'%s' fájl túl nagy méretû.\n \
+Kérem használjon másik szövegszerkesztõ programot."
+STRING_NOTEXT, "A szöveg nem tartalmaz karaktert! \
+\nKérem gépeljen be néhány karaktert és próbálja újra!"
+STRING_DOESNOTEXIST, "A megadott '%s'\nfájl nem létezik!\n\n \
+Kíván létrehozni új fájlt?"
+STRING_NOTSAVED, "'%s' fájl\nmódosult\n\n \
+Szeretné menteni a változásokat?"
+STRING_NOTFOUND, "'%s' nem található!"
+STRING_OUT_OF_MEMORY, "Nincs elegendõ szabad memória!\
+\nZárjon be néhány alkalmazást, ezzel növelve a szabad memória méretét\
+!"
+
+}
diff --git a/reactos/base/applications/notepad/res/It.rc b/reactos/base/applications/notepad/lang/It.rc
similarity index 95%
rename from reactos/base/applications/notepad/res/It.rc
rename to reactos/base/applications/notepad/lang/It.rc
index 899f25eb506..292b4fa1bb0 100644
--- a/reactos/base/applications/notepad/res/It.rc
+++ b/reactos/base/applications/notepad/lang/It.rc
@@ -1,149 +1,165 @@
-/*
- * Notepad (Italian resources)
- *
- * Copyright 1997,98 Marcel Baur
- * Proofread 1998 by David Lee Lambert
- * Copyright 2002 Sylvain Petreolle
- * Copyright 2003 Marcelo Duarte
- * Copyright 2003-2004 Ivan Leo Puoti
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * 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
- */
-
-LANGUAGE LANG_ITALIAN, SUBLANG_NEUTRAL
-
-MAIN_MENU MENU
-BEGIN
- POPUP "&File"
- BEGIN
- MENUITEM "&Nuovo", CMD_NEW
- MENUITEM "&Apri...\tCtrl+O", CMD_OPEN
- MENUITEM "&Salva\tCtrl+S", CMD_SAVE
- MENUITEM "Salva &con nome...", CMD_SAVE_AS
- MENUITEM SEPARATOR
- MENUITEM "&Stampa", CMD_PRINT
- MENUITEM "&Imposta pagina...", CMD_PAGE_SETUP
- MENUITEM "&Configurazione stampante...", CMD_PRINTER_SETUP
- MENUITEM SEPARATOR
- MENUITEM "E&sci", CMD_EXIT
- END
- POPUP "&Modifica"
- BEGIN
- MENUITEM "&Anulla\tCtrl+Z", CMD_UNDO
- MENUITEM SEPARATOR
- MENUITEM "&Taglia\tCtrl+X", CMD_CUT
- MENUITEM "&Copia\tCtrl+C", CMD_COPY
- MENUITEM "&Incolla\tCtrl+V", CMD_PASTE
- MENUITEM "&Elimina\tDel", CMD_DELETE
- MENUITEM SEPARATOR
- MENUITEM "&Trova\tCtrl+F", CMD_SEARCH
- MENUITEM "&Trova successivo\tF3", CMD_SEARCH_NEXT
- MENUITEM SEPARATOR
- MENUITEM "Seleziona &tutto\tCtrl+A", CMD_SELECT_ALL
- MENUITEM "&Ora/Data\tF5", CMD_TIME_DATE
- MENUITEM SEPARATOR
- MENUITEM "&A campo automatico", CMD_WRAP
- MENUITEM "&Imposta carattere...", CMD_FONT
- END
- POPUP "&Aiuto"
- BEGIN
- MENUITEM "&Contenuti", CMD_HELP_CONTENTS
- MENUITEM "&Trova...", CMD_HELP_SEARCH
- MENUITEM "&Aiuto sulla Guida", CMD_HELP_ON_HELP
- MENUITEM SEPARATOR
- MENUITEM "&About" CMD_ABOUT
- MENUITEM "Inf&o...", CMD_ABOUT_WINE
- END
-END
-
-/* Dialog `Page setup' */
-
-DIALOG_PAGESETUP DIALOG 0, 0, 225, 95
-STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
-FONT 8, "MS Shell Dlg"
-CAPTION "Setup di pagina"
-{
-LTEXT "&Note a inizio pagina:", 0x140, 10, 07, 40, 15
-EDITTEXT 0x141, 60, 05,110, 12, WS_BORDER | WS_TABSTOP
-LTEXT "&Note a piè di pagina:", 0x142, 10, 24, 40, 15
-EDITTEXT 0x143, 60, 22,110, 12, WS_BORDER | WS_TABSTOP
-
-GROUPBOX "&Margini:", 0x144, 10, 43,160, 45
-LTEXT "&Sinistro:", 0x145, 20, 55, 30, 10, WS_CHILD
-EDITTEXT /*STRING_PAGESETUP_LEFTVALUE,*/ 0x147, 50, 55, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP
-LTEXT "&Superiore:", 0x148, 20, 73, 30, 10, WS_CHILD
-EDITTEXT /*STRING_PAGESETUP_TOPVALUE,*/ 0x14A, 50, 73, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP
-LTEXT "&Destro:", 0x14B, 100, 55, 30, 10, WS_CHILD
-EDITTEXT /*STRING_PAGESETUP_RIGHTVALUE,*/ 0x14D, 130, 55, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP
-LTEXT "&Inferiore:", 0x14E,100, 73, 30, 10, WS_CHILD
-EDITTEXT /*STRING_PAGESETUP_BOTTOMVALUE,*/ 0x150, 130, 73, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP
-
-DEFPUSHBUTTON "OK", 0x151, 180, 3, 40, 15, WS_TABSTOP
-PUSHBUTTON "Cancella", 0x152, 180, 21, 40, 15, WS_TABSTOP
-PUSHBUTTON "&Aiuto", 0x153, 180, 39, 40, 15, WS_TABSTOP
-}
-
-IDD_ABOUTBOX DIALOG DISCARDABLE 22,16,284,170
-STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
-CAPTION "About ReactOS Notepad"
-FONT 8, "MS Shell Dlg"
-BEGIN
- CONTROL "ReactOS Notepad v1.0\r\nCopyright 1997,98 Marcel Baur \r\nCopyright 2000 Mike McCormack \r\nCopyright 2002 Sylvain Petreolle \r\nCopyright 2002 Andriy Palamarchuk\r\n ",
- -1,"Static",SS_LEFTNOWORDWRAP | WS_GROUP,46,7,232,39
- CONTROL " ",
- -1,"Static",0x50000000,8,48,272,11
- DEFPUSHBUTTON "Close",IDOK,114,149,44,15,WS_GROUP
- ICON IDI_NPICON,-1,12,9,20,30
- EDITTEXT IDC_LICENSE,8,64,272,81,ES_MULTILINE |
- ES_READONLY | WS_VSCROLL
-END
-
-STRINGTABLE DISCARDABLE
-BEGIN
- STRING_LICENSE, "This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.\r\n\r\nThis program 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 General Public License for more details.\r\n\r\nYou should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA."
-END
-
-STRINGTABLE DISCARDABLE
-{
-STRING_PAGESETUP_HEADERVALUE, "&n" /* FIXME */
-STRING_PAGESETUP_FOOTERVALUE, "Page &s" /* FIXME */
-STRING_PAGESETUP_LEFTVALUE, "20 mm" /* FIXME */
-STRING_PAGESETUP_RIGHTVALUE, "20 mm" /* FIXME */
-STRING_PAGESETUP_TOPVALUE, "25 mm" /* FIXME */
-STRING_PAGESETUP_BOTTOMVALUE, "25 mm" /* FIXME */
-
-STRING_NOTEPAD, "Blocco note"
-STRING_ERROR, "ERRORE"
-STRING_WARNING, "ATTENZIONE"
-STRING_INFO, "Info"
-
-STRING_UNTITLED, "(senza nome)"
-
-STRING_ALL_FILES, "Tutti i file (*.*)"
-STRING_TEXT_FILES_TXT, "File di testo (*.txt)"
-
-STRING_TOOLARGE, "Il file '%s' è troppo grande per il blocco note.\n \
-Per favore usare un altro editor."
-STRING_NOTEXT, "Non è stato inserito alcun testo. \
-\nPer favore digitare qualcosa e riprovare"
-STRING_DOESNOTEXIST, "Il file '%s'\nnon esiste\n\n \
-Creare un nuovo file ?"
-STRING_NOTSAVED, "Il file '%s'\ne' stato modificato\n\n \
-Salvare le modifiche ?"
-STRING_NOTFOUND, "'%s' non è stato trovato."
-STRING_OUT_OF_MEMORY, "Memoria insufficente per completare questa operazione \
-task. \nChiudere una o più applicazioni per aumentare la quantita'\n di memoria libera."
-
-}
+/*
+ * Notepad (Italian resources)
+ *
+ * Copyright 1997,98 Marcel Baur
+ * Proofread 1998 by David Lee Lambert
+ * Copyright 2002 Sylvain Petreolle
+ * Copyright 2003 Marcelo Duarte
+ * Copyright 2003-2004 Ivan Leo Puoti
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * 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
+ */
+
+LANGUAGE LANG_ITALIAN, SUBLANG_NEUTRAL
+
+ID_ACCEL ACCELERATORS
+{
+ "^A", CMD_SELECT_ALL
+ "^C", CMD_COPY
+ "^F", CMD_SEARCH
+ "^G", CMD_GOTO
+ "H", CMD_REPLACE, VIRTKEY, CONTROL
+ "^O", CMD_OPEN
+ "^S", CMD_SAVE
+ "^V", CMD_PASTE
+ "^X", CMD_CUT
+ "^Z", CMD_UNDO
+ VK_F3, CMD_SEARCH_NEXT, VIRTKEY
+ VK_F5, CMD_TIME_DATE, VIRTKEY
+}
+
+MAIN_MENU MENU
+BEGIN
+ POPUP "&File"
+ BEGIN
+ MENUITEM "&Nuovo", CMD_NEW
+ MENUITEM "&Apri...\tCtrl+O", CMD_OPEN
+ MENUITEM "&Salva\tCtrl+S", CMD_SAVE
+ MENUITEM "Salva &con nome...", CMD_SAVE_AS
+ MENUITEM SEPARATOR
+ MENUITEM "&Stampa", CMD_PRINT
+ MENUITEM "&Imposta pagina...", CMD_PAGE_SETUP
+ MENUITEM "&Configurazione stampante...", CMD_PRINTER_SETUP
+ MENUITEM SEPARATOR
+ MENUITEM "E&sci", CMD_EXIT
+ END
+ POPUP "&Modifica"
+ BEGIN
+ MENUITEM "&Anulla\tCtrl+Z", CMD_UNDO
+ MENUITEM SEPARATOR
+ MENUITEM "&Taglia\tCtrl+X", CMD_CUT
+ MENUITEM "&Copia\tCtrl+C", CMD_COPY
+ MENUITEM "&Incolla\tCtrl+V", CMD_PASTE
+ MENUITEM "&Elimina\tDel", CMD_DELETE
+ MENUITEM SEPARATOR
+ MENUITEM "&Trova\tCtrl+F", CMD_SEARCH
+ MENUITEM "&Trova successivo\tF3", CMD_SEARCH_NEXT
+ MENUITEM SEPARATOR
+ MENUITEM "Seleziona &tutto\tCtrl+A", CMD_SELECT_ALL
+ MENUITEM "&Ora/Data\tF5", CMD_TIME_DATE
+ MENUITEM SEPARATOR
+ MENUITEM "&A campo automatico", CMD_WRAP
+ MENUITEM "&Imposta carattere...", CMD_FONT
+ END
+ POPUP "&Aiuto"
+ BEGIN
+ MENUITEM "&Contenuti", CMD_HELP_CONTENTS
+ MENUITEM "&Trova...", CMD_HELP_SEARCH
+ MENUITEM "&Aiuto sulla Guida", CMD_HELP_ON_HELP
+ MENUITEM SEPARATOR
+ MENUITEM "&About" CMD_ABOUT
+ MENUITEM "Inf&o...", CMD_ABOUT_WINE
+ END
+END
+
+/* Dialog `Page setup' */
+
+DIALOG_PAGESETUP DIALOG 0, 0, 225, 95
+STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
+FONT 8, "MS Shell Dlg"
+CAPTION "Setup di pagina"
+{
+LTEXT "&Note a inizio pagina:", 0x140, 10, 07, 40, 15
+EDITTEXT 0x141, 60, 05,110, 12, WS_BORDER | WS_TABSTOP
+LTEXT "&Note a piè di pagina:", 0x142, 10, 24, 40, 15
+EDITTEXT 0x143, 60, 22,110, 12, WS_BORDER | WS_TABSTOP
+
+GROUPBOX "&Margini:", 0x144, 10, 43,160, 45
+LTEXT "&Sinistro:", 0x145, 20, 55, 30, 10, WS_CHILD
+EDITTEXT /*STRING_PAGESETUP_LEFTVALUE,*/ 0x147, 50, 55, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP
+LTEXT "&Superiore:", 0x148, 20, 73, 30, 10, WS_CHILD
+EDITTEXT /*STRING_PAGESETUP_TOPVALUE,*/ 0x14A, 50, 73, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP
+LTEXT "&Destro:", 0x14B, 100, 55, 30, 10, WS_CHILD
+EDITTEXT /*STRING_PAGESETUP_RIGHTVALUE,*/ 0x14D, 130, 55, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP
+LTEXT "&Inferiore:", 0x14E,100, 73, 30, 10, WS_CHILD
+EDITTEXT /*STRING_PAGESETUP_BOTTOMVALUE,*/ 0x150, 130, 73, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP
+
+DEFPUSHBUTTON "OK", 0x151, 180, 3, 40, 15, WS_TABSTOP
+PUSHBUTTON "Cancella", 0x152, 180, 21, 40, 15, WS_TABSTOP
+PUSHBUTTON "&Aiuto", 0x153, 180, 39, 40, 15, WS_TABSTOP
+}
+
+IDD_ABOUTBOX DIALOG DISCARDABLE 22,16,284,170
+STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
+CAPTION "About ReactOS Notepad"
+FONT 8, "MS Shell Dlg"
+BEGIN
+ CONTROL "ReactOS Notepad v1.0\r\nCopyright 1997,98 Marcel Baur \r\nCopyright 2000 Mike McCormack \r\nCopyright 2002 Sylvain Petreolle \r\nCopyright 2002 Andriy Palamarchuk\r\n ",
+ -1,"Static",SS_LEFTNOWORDWRAP | WS_GROUP,46,7,232,39
+ CONTROL " ",
+ -1,"Static",0x50000000,8,48,272,11
+ DEFPUSHBUTTON "Close",IDOK,114,149,44,15,WS_GROUP
+ ICON IDI_NPICON,-1,12,9,20,30
+ EDITTEXT IDC_LICENSE,8,64,272,81,ES_MULTILINE |
+ ES_READONLY | WS_VSCROLL
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ STRING_LICENSE, "This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.\r\n\r\nThis program 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 General Public License for more details.\r\n\r\nYou should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA."
+END
+
+STRINGTABLE DISCARDABLE
+{
+STRING_PAGESETUP_HEADERVALUE, "&n" /* FIXME */
+STRING_PAGESETUP_FOOTERVALUE, "Page &s" /* FIXME */
+STRING_PAGESETUP_LEFTVALUE, "20 mm" /* FIXME */
+STRING_PAGESETUP_RIGHTVALUE, "20 mm" /* FIXME */
+STRING_PAGESETUP_TOPVALUE, "25 mm" /* FIXME */
+STRING_PAGESETUP_BOTTOMVALUE, "25 mm" /* FIXME */
+
+STRING_NOTEPAD, "Blocco note"
+STRING_ERROR, "ERRORE"
+STRING_WARNING, "ATTENZIONE"
+STRING_INFO, "Info"
+
+STRING_UNTITLED, "(senza nome)"
+
+STRING_ALL_FILES, "Tutti i file (*.*)"
+STRING_TEXT_FILES_TXT, "File di testo (*.txt)"
+
+STRING_TOOLARGE, "Il file '%s' è troppo grande per il blocco note.\n \
+Per favore usare un altro editor."
+STRING_NOTEXT, "Non è stato inserito alcun testo. \
+\nPer favore digitare qualcosa e riprovare"
+STRING_DOESNOTEXIST, "Il file '%s'\nnon esiste\n\n \
+Creare un nuovo file ?"
+STRING_NOTSAVED, "Il file '%s'\ne' stato modificato\n\n \
+Salvare le modifiche ?"
+STRING_NOTFOUND, "'%s' non è stato trovato."
+STRING_OUT_OF_MEMORY, "Memoria insufficente per completare questa operazione \
+task. \nChiudere una o più applicazioni per aumentare la quantita'\n di memoria libera."
+
+}
diff --git a/reactos/base/applications/notepad/res/Ja.rc b/reactos/base/applications/notepad/lang/Ja.rc
similarity index 96%
rename from reactos/base/applications/notepad/res/Ja.rc
rename to reactos/base/applications/notepad/lang/Ja.rc
index 4378b3a883f..853568c12d2 100644
--- a/reactos/base/applications/notepad/res/Ja.rc
+++ b/reactos/base/applications/notepad/lang/Ja.rc
@@ -1,189 +1,204 @@
-/*
- * Notepad (Japanese resources)
- *
- * Copyright 1997,98 Marcel Baur
- * Proofread 1998 by David Lee Lambert
- * Copyright 2002 Sylvain Petreolle
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * 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
- */
-
-LANGUAGE LANG_JAPANESE, SUBLANG_DEFAULT
-
-
-MAIN_MENU MENU
-BEGIN
- POPUP "ƒtƒ@ƒCƒ‹(&F)"
- BEGIN
- MENUITEM "V‹Kì¬(&N)...", CMD_NEW
- MENUITEM "ŠJ‚(&O)\tCtrl+O", CMD_OPEN
- MENUITEM "•Û‘¶(&S)\tCtrl+S", CMD_SAVE
- MENUITEM "–¼‘O‚ð•t‚¯‚ĕۑ¶(&A)...", CMD_SAVE_AS
- MENUITEM SEPARATOR
- MENUITEM "ƒy[ƒWÝ’è(&T)...", CMD_PAGE_SETUP
- MENUITEM "ˆóü(&P)", CMD_PRINT
- MENUITEM "ƒvƒŠƒ“ƒ^‚ÌÝ’è(&R)...", CMD_PRINTER_SETUP
- MENUITEM SEPARATOR
- MENUITEM "I—¹(&X)", CMD_EXIT
- END
- POPUP "•ÒW(&E)"
- BEGIN
- MENUITEM "Œ³‚É–ß‚·(&U)\tCtrl+Z", CMD_UNDO
- MENUITEM SEPARATOR
- MENUITEM "Ø‚èŽæ‚è(&T)\tCtrl+X", CMD_CUT
- MENUITEM "ƒRƒs[(&C)\tCtrl+C", CMD_COPY
- MENUITEM "ƒy[ƒXƒg(&P)\tCtrl+V", CMD_PASTE
- MENUITEM "íœ(&D)\tDel", CMD_DELETE
- MENUITEM SEPARATOR
- MENUITEM "ŒŸõ(&S)\tCtrl+F", CMD_SEARCH
- MENUITEM "ŽŸ‚ÌŒó•â‚ðŒŸõ(&S)\tF3", CMD_SEARCH_NEXT
- MENUITEM "’uŠ·\tCtrl+H", CMD_REPLACE
- MENUITEM "s‚ÖˆÚ“®...\tCtrl+G", CMD_GOTO
- MENUITEM SEPARATOR
- MENUITEM "‘S‚Ä‘I‘ð(&A)\tCtrl+A", CMD_SELECT_ALL
- MENUITEM "“ú•t‚ÆŽž‚Ì‘}“ü(&T)\tF5", CMD_TIME_DATE
- END
- POPUP "‘Ž®(&O)"
- BEGIN
- MENUITEM "’·‚¢s‚ðÜ‚è•Ô‚·(&W)", CMD_WRAP
- MENUITEM "ƒtƒHƒ“ƒg(&F)...", CMD_FONT
- END
- POPUP "•\\ަ(&V)"
- BEGIN
- MENUITEM "ƒXƒe[ƒ^ƒX ƒo[(&B)", CMD_STATUSBAR
- END
- POPUP "ƒwƒ‹ƒv(&H)"
- BEGIN
- MENUITEM "–ÚŽŸ(&C)", CMD_HELP_CONTENTS
- MENUITEM "ŒŸõ(&S)...", CMD_HELP_SEARCH
- MENUITEM "ƒwƒ‹ƒv‚ÌŽg‚¢•û(&H)", CMD_HELP_ON_HELP
- MENUITEM SEPARATOR
- MENUITEM "&About" CMD_ABOUT
- MENUITEM "î•ñ(&O)" CMD_ABOUT_WINE
- END
-END
-
-/* Dialog `Page setup' */
-
-DIALOG_PAGESETUP DIALOG 0, 0, 225, 95
-STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
-FONT 9, "MS UI Gothic"
-CAPTION "ƒy[ƒWÝ’è"
-{
-LTEXT "ƒwƒbƒ_(&H):", 0x140, 10, 07, 40, 15
-EDITTEXT 0x141, 60, 05,110, 12, WS_BORDER | WS_TABSTOP
-LTEXT "ƒtƒbƒ^(&F):", 0x142, 10, 24, 40, 15
-EDITTEXT 0x143, 60, 22,110, 12, WS_BORDER | WS_TABSTOP
-
-GROUPBOX "ƒ}[ƒWƒ“(&M):", 0x144, 10, 43,160, 45
-LTEXT "¶(&L):", 0x145, 20, 55, 30, 10, WS_CHILD
-EDITTEXT /*STRING_PAGESETUP_LEFTVALUE,*/ 0x147, 50, 55, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP
-LTEXT "ã(&T):", 0x148, 20, 73, 30, 10, WS_CHILD
-EDITTEXT /*STRING_PAGESETUP_TOPVALUE,*/ 0x14A, 50, 73, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP
-LTEXT "‰E(&R):", 0x14B, 100, 55, 30, 10, WS_CHILD
-EDITTEXT /*STRING_PAGESETUP_RIGHTVALUE,*/ 0x14D, 130, 55, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP
-LTEXT "‰º(&B):", 0x14E,100, 73, 30, 10, WS_CHILD
-EDITTEXT /*STRING_PAGESETUP_BOTTOMVALUE,*/ 0x150, 130, 73, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP
-
-DEFPUSHBUTTON "OK", 0x151, 180, 3, 40, 15, WS_TABSTOP
-PUSHBUTTON "ƒLƒƒƒ“ƒZƒ‹", 0x152, 180, 21, 40, 15, WS_TABSTOP
-PUSHBUTTON "ƒwƒ‹ƒv(&H)", 0x153, 180, 39, 40, 15, WS_TABSTOP
-}
-
-/* Dialog `Encoding' */
-DIALOG_ENCODING DIALOG 0, 0, 256, 44
-STYLE DS_SETFONT | DS_FIXEDSYS | DS_CONTROL | WS_CHILD | WS_CLIPSIBLINGS |
- WS_CAPTION | WS_SYSMENU
-FONT 9, "MS UI Gothic"
-CAPTION "ƒGƒ“ƒR[ƒfƒBƒ“ƒO"
-{
-COMBOBOX ID_ENCODING,54,0,156,80,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP
-LTEXT "•¶ŽšƒR[ƒh:",0x155,5,2,41,12
-COMBOBOX ID_EOLN,54,18,156,80,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
-LTEXT "‰üsƒR[ƒh:",0x156,5,20,41,12
-}
-
-/* Dialog 'Go To' */
-DIALOG_GOTO DIALOG 0,0,165,50
-STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
-FONT 9, "MS UI Gothic"
-CAPTION "s‚ÖˆÚ“®"
-{
-EDITTEXT ID_LINENUMBER,54,10,106,12,WS_CHILD | WS_BORDER | WS_TABSTOP
-LTEXT "s”Ô†:",0x155,5,12,41,12,WS_CHILD | WS_TABSTOP | ES_NUMBER
-DEFPUSHBUTTON "OK", IDOK, 75, 30, 40, 15, WS_CHILD | WS_TABSTOP
-PUSHBUTTON "ƒLƒƒƒ“ƒZƒ‹", IDCANCEL, 120, 30, 40, 15, WS_CHILD | WS_TABSTOP
-}
-
-IDD_ABOUTBOX DIALOG DISCARDABLE 22,16,284,170
-STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
-CAPTION "About ReactOS Notepad"
-FONT 8, "MS Shell Dlg"
-BEGIN
- CONTROL "ReactOS Notepad v1.0\r\nCopyright 1997,98 Marcel Baur \r\nCopyright 2000 Mike McCormack \r\nCopyright 2002 Sylvain Petreolle \r\nCopyright 2002 Andriy Palamarchuk\r\n",
- -1,"Static",SS_LEFTNOWORDWRAP | WS_GROUP,46,7,232,39
- CONTROL " ",
- -1,"Static",0x50000000,8,48,272,11
- DEFPUSHBUTTON "Close",IDOK,114,149,44,15,WS_GROUP
- ICON IDI_NPICON,-1,12,9,20,30
- EDITTEXT IDC_LICENSE,8,64,272,81,ES_MULTILINE |
- ES_READONLY | WS_VSCROLL
-END
-
-STRINGTABLE DISCARDABLE
-BEGIN
- STRING_LICENSE, "This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.\r\n\r\nThis program 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 General Public License for more details.\r\n\r\nYou should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA."
-END
-
-STRINGTABLE DISCARDABLE
-{
-STRING_PAGESETUP_HEADERVALUE, "&n" /* FIXME */
-STRING_PAGESETUP_FOOTERVALUE, "&s ƒy[ƒW" /* FIXME */
-STRING_PAGESETUP_LEFTVALUE, "20 mm" /* FIXME */
-STRING_PAGESETUP_RIGHTVALUE, "20 mm" /* FIXME */
-STRING_PAGESETUP_TOPVALUE, "25 mm" /* FIXME */
-STRING_PAGESETUP_BOTTOMVALUE, "25 mm" /* FIXME */
-
-STRING_NOTEPAD, "ƒƒ‚’ "
-STRING_ERROR, "ƒGƒ‰["
-STRING_WARNING, "Œx"
-STRING_INFO, "î•ñ"
-
-STRING_UNTITLED, "(–³‘è)"
-
-STRING_ALL_FILES, "‘S‚Ẵtƒ@ƒCƒ‹ (*.*)"
-STRING_TEXT_FILES_TXT, "ƒeƒLƒXƒgƒtƒ@ƒCƒ‹ (*.txt)"
-
-STRING_TOOLARGE, "ƒtƒ@ƒCƒ‹ '%s' ‚̃TƒCƒY‚͑傫‚·‚¬‚邽‚ßAƒƒ‚’ ‚ł͕ÒW‚Å‚«‚Ü‚¹‚ñB\n \
-•ʂ̃GƒfƒBƒ^‚ðŽg—p‚µ‚ĉº‚³‚¢B"
-STRING_NOTEXT, "‰½‚à“ü—Í‚³‚ê‚Ä‚¢‚Ü‚¹‚ñB\
-\n‰½‚©“ü—Í‚µ‚Ä‚©‚çŽÀs‚µ‚ĉº‚³‚¢B"
-STRING_DOESNOTEXIST, "ƒtƒ@ƒCƒ‹ '%s'\n‚Í‘¶Ý‚µ‚Ü‚¹‚ñ\n\n \
-V‚µ‚¢ƒtƒ@ƒCƒ‹‚ð쬂µ‚Ü‚·‚© ?"
-STRING_NOTSAVED, "ƒtƒ@ƒCƒ‹ '%s'\n‚Í•ÏX‚³‚ê‚Ä‚¢‚Ü‚·\n\n \
-•ÏX‚ð•Û‘¶‚µ‚Ü‚·‚© ?"
-STRING_NOTFOUND, "'%s' ‚ÍŒ©‚‚©‚è‚Ü‚¹‚ñ‚Å‚µ‚½"
-STRING_OUT_OF_MEMORY, "‚±‚Ì‘€ì‚ðŽÀs‚·‚邽‚߂̃ƒ‚ƒŠ‚ª\
-‘«‚è‚Ü‚¹‚ñB \nƒƒ‚ƒŠ‚̋󂫂ð‘‚â‚·‚½‚߂ɂ¢‚‚‚©‚̃AƒvƒŠƒP[ƒVƒ‡ƒ“‚ð\nI—¹‚µ‚Ä\
-‰º‚³‚¢B"
-STRING_CANNOTFIND "'%s' ‚ªŒ©‚‚©‚è‚Ü‚¹‚ñ‚Å‚µ‚½B"
-STRING_ANSI, "ANSI"
-STRING_UNICODE, "Unicode"
-STRING_UNICODE_BE, "Unicode (big endian)"
-STRING_UTF8, "UTF-8"
-STRING_CRLF, "Windows (CR+LF)"
-STRING_LF, "Unix (LF)"
-STRING_CR, "Mac (CR)"
-}
+/*
+ * Notepad (Japanese resources)
+ *
+ * Copyright 1997,98 Marcel Baur
+ * Proofread 1998 by David Lee Lambert
+ * Copyright 2002 Sylvain Petreolle
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * 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
+ */
+
+LANGUAGE LANG_JAPANESE, SUBLANG_DEFAULT
+
+ID_ACCEL ACCELERATORS
+{
+ "^A", CMD_SELECT_ALL
+ "^C", CMD_COPY
+ "^F", CMD_SEARCH
+ "^G", CMD_GOTO
+ "H", CMD_REPLACE, VIRTKEY, CONTROL
+ "^O", CMD_OPEN
+ "^S", CMD_SAVE
+ "^V", CMD_PASTE
+ "^X", CMD_CUT
+ "^Z", CMD_UNDO
+ VK_F3, CMD_SEARCH_NEXT, VIRTKEY
+ VK_F5, CMD_TIME_DATE, VIRTKEY
+}
+
+MAIN_MENU MENU
+BEGIN
+ POPUP "ƒtƒ@ƒCƒ‹(&F)"
+ BEGIN
+ MENUITEM "V‹Kì¬(&N)...", CMD_NEW
+ MENUITEM "ŠJ‚(&O)\tCtrl+O", CMD_OPEN
+ MENUITEM "•Û‘¶(&S)\tCtrl+S", CMD_SAVE
+ MENUITEM "–¼‘O‚ð•t‚¯‚ĕۑ¶(&A)...", CMD_SAVE_AS
+ MENUITEM SEPARATOR
+ MENUITEM "ƒy[ƒWÝ’è(&T)...", CMD_PAGE_SETUP
+ MENUITEM "ˆóü(&P)", CMD_PRINT
+ MENUITEM "ƒvƒŠƒ“ƒ^‚ÌÝ’è(&R)...", CMD_PRINTER_SETUP
+ MENUITEM SEPARATOR
+ MENUITEM "I—¹(&X)", CMD_EXIT
+ END
+ POPUP "•ÒW(&E)"
+ BEGIN
+ MENUITEM "Œ³‚É–ß‚·(&U)\tCtrl+Z", CMD_UNDO
+ MENUITEM SEPARATOR
+ MENUITEM "Ø‚èŽæ‚è(&T)\tCtrl+X", CMD_CUT
+ MENUITEM "ƒRƒs[(&C)\tCtrl+C", CMD_COPY
+ MENUITEM "ƒy[ƒXƒg(&P)\tCtrl+V", CMD_PASTE
+ MENUITEM "íœ(&D)\tDel", CMD_DELETE
+ MENUITEM SEPARATOR
+ MENUITEM "ŒŸõ(&S)\tCtrl+F", CMD_SEARCH
+ MENUITEM "ŽŸ‚ÌŒó•â‚ðŒŸõ(&S)\tF3", CMD_SEARCH_NEXT
+ MENUITEM "’uŠ·\tCtrl+H", CMD_REPLACE
+ MENUITEM "s‚ÖˆÚ“®...\tCtrl+G", CMD_GOTO
+ MENUITEM SEPARATOR
+ MENUITEM "‘S‚Ä‘I‘ð(&A)\tCtrl+A", CMD_SELECT_ALL
+ MENUITEM "“ú•t‚ÆŽž‚Ì‘}“ü(&T)\tF5", CMD_TIME_DATE
+ END
+ POPUP "‘Ž®(&O)"
+ BEGIN
+ MENUITEM "’·‚¢s‚ðÜ‚è•Ô‚·(&W)", CMD_WRAP
+ MENUITEM "ƒtƒHƒ“ƒg(&F)...", CMD_FONT
+ END
+ POPUP "•\\ަ(&V)"
+ BEGIN
+ MENUITEM "ƒXƒe[ƒ^ƒX ƒo[(&B)", CMD_STATUSBAR
+ END
+ POPUP "ƒwƒ‹ƒv(&H)"
+ BEGIN
+ MENUITEM "–ÚŽŸ(&C)", CMD_HELP_CONTENTS
+ MENUITEM "ŒŸõ(&S)...", CMD_HELP_SEARCH
+ MENUITEM "ƒwƒ‹ƒv‚ÌŽg‚¢•û(&H)", CMD_HELP_ON_HELP
+ MENUITEM SEPARATOR
+ MENUITEM "&About" CMD_ABOUT
+ MENUITEM "î•ñ(&O)" CMD_ABOUT_WINE
+ END
+END
+
+/* Dialog `Page setup' */
+
+DIALOG_PAGESETUP DIALOG 0, 0, 225, 95
+STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
+FONT 9, "MS UI Gothic"
+CAPTION "ƒy[ƒWÝ’è"
+{
+LTEXT "ƒwƒbƒ_(&H):", 0x140, 10, 07, 40, 15
+EDITTEXT 0x141, 60, 05,110, 12, WS_BORDER | WS_TABSTOP
+LTEXT "ƒtƒbƒ^(&F):", 0x142, 10, 24, 40, 15
+EDITTEXT 0x143, 60, 22,110, 12, WS_BORDER | WS_TABSTOP
+
+GROUPBOX "ƒ}[ƒWƒ“(&M):", 0x144, 10, 43,160, 45
+LTEXT "¶(&L):", 0x145, 20, 55, 30, 10, WS_CHILD
+EDITTEXT /*STRING_PAGESETUP_LEFTVALUE,*/ 0x147, 50, 55, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP
+LTEXT "ã(&T):", 0x148, 20, 73, 30, 10, WS_CHILD
+EDITTEXT /*STRING_PAGESETUP_TOPVALUE,*/ 0x14A, 50, 73, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP
+LTEXT "‰E(&R):", 0x14B, 100, 55, 30, 10, WS_CHILD
+EDITTEXT /*STRING_PAGESETUP_RIGHTVALUE,*/ 0x14D, 130, 55, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP
+LTEXT "‰º(&B):", 0x14E,100, 73, 30, 10, WS_CHILD
+EDITTEXT /*STRING_PAGESETUP_BOTTOMVALUE,*/ 0x150, 130, 73, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP
+
+DEFPUSHBUTTON "OK", 0x151, 180, 3, 40, 15, WS_TABSTOP
+PUSHBUTTON "ƒLƒƒƒ“ƒZƒ‹", 0x152, 180, 21, 40, 15, WS_TABSTOP
+PUSHBUTTON "ƒwƒ‹ƒv(&H)", 0x153, 180, 39, 40, 15, WS_TABSTOP
+}
+
+/* Dialog `Encoding' */
+DIALOG_ENCODING DIALOG 0, 0, 256, 44
+STYLE DS_SETFONT | DS_FIXEDSYS | DS_CONTROL | WS_CHILD | WS_CLIPSIBLINGS |
+ WS_CAPTION | WS_SYSMENU
+FONT 9, "MS UI Gothic"
+CAPTION "ƒGƒ“ƒR[ƒfƒBƒ“ƒO"
+{
+COMBOBOX ID_ENCODING,54,0,156,80,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP
+LTEXT "•¶ŽšƒR[ƒh:",0x155,5,2,41,12
+COMBOBOX ID_EOLN,54,18,156,80,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
+LTEXT "‰üsƒR[ƒh:",0x156,5,20,41,12
+}
+
+/* Dialog 'Go To' */
+DIALOG_GOTO DIALOG 0,0,165,50
+STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
+FONT 9, "MS UI Gothic"
+CAPTION "s‚ÖˆÚ“®"
+{
+EDITTEXT ID_LINENUMBER,54,10,106,12,WS_CHILD | WS_BORDER | WS_TABSTOP
+LTEXT "s”Ô†:",0x155,5,12,41,12,WS_CHILD | WS_TABSTOP | ES_NUMBER
+DEFPUSHBUTTON "OK", IDOK, 75, 30, 40, 15, WS_CHILD | WS_TABSTOP
+PUSHBUTTON "ƒLƒƒƒ“ƒZƒ‹", IDCANCEL, 120, 30, 40, 15, WS_CHILD | WS_TABSTOP
+}
+
+IDD_ABOUTBOX DIALOG DISCARDABLE 22,16,284,170
+STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
+CAPTION "About ReactOS Notepad"
+FONT 8, "MS Shell Dlg"
+BEGIN
+ CONTROL "ReactOS Notepad v1.0\r\nCopyright 1997,98 Marcel Baur \r\nCopyright 2000 Mike McCormack \r\nCopyright 2002 Sylvain Petreolle \r\nCopyright 2002 Andriy Palamarchuk\r\n",
+ -1,"Static",SS_LEFTNOWORDWRAP | WS_GROUP,46,7,232,39
+ CONTROL " ",
+ -1,"Static",0x50000000,8,48,272,11
+ DEFPUSHBUTTON "Close",IDOK,114,149,44,15,WS_GROUP
+ ICON IDI_NPICON,-1,12,9,20,30
+ EDITTEXT IDC_LICENSE,8,64,272,81,ES_MULTILINE |
+ ES_READONLY | WS_VSCROLL
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ STRING_LICENSE, "This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.\r\n\r\nThis program 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 General Public License for more details.\r\n\r\nYou should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA."
+END
+
+STRINGTABLE DISCARDABLE
+{
+STRING_PAGESETUP_HEADERVALUE, "&n" /* FIXME */
+STRING_PAGESETUP_FOOTERVALUE, "&s ƒy[ƒW" /* FIXME */
+STRING_PAGESETUP_LEFTVALUE, "20 mm" /* FIXME */
+STRING_PAGESETUP_RIGHTVALUE, "20 mm" /* FIXME */
+STRING_PAGESETUP_TOPVALUE, "25 mm" /* FIXME */
+STRING_PAGESETUP_BOTTOMVALUE, "25 mm" /* FIXME */
+
+STRING_NOTEPAD, "ƒƒ‚’ "
+STRING_ERROR, "ƒGƒ‰["
+STRING_WARNING, "Œx"
+STRING_INFO, "î•ñ"
+
+STRING_UNTITLED, "(–³‘è)"
+
+STRING_ALL_FILES, "‘S‚Ẵtƒ@ƒCƒ‹ (*.*)"
+STRING_TEXT_FILES_TXT, "ƒeƒLƒXƒgƒtƒ@ƒCƒ‹ (*.txt)"
+
+STRING_TOOLARGE, "ƒtƒ@ƒCƒ‹ '%s' ‚̃TƒCƒY‚͑傫‚·‚¬‚邽‚ßAƒƒ‚’ ‚ł͕ÒW‚Å‚«‚Ü‚¹‚ñB\n \
+•ʂ̃GƒfƒBƒ^‚ðŽg—p‚µ‚ĉº‚³‚¢B"
+STRING_NOTEXT, "‰½‚à“ü—Í‚³‚ê‚Ä‚¢‚Ü‚¹‚ñB\
+\n‰½‚©“ü—Í‚µ‚Ä‚©‚çŽÀs‚µ‚ĉº‚³‚¢B"
+STRING_DOESNOTEXIST, "ƒtƒ@ƒCƒ‹ '%s'\n‚Í‘¶Ý‚µ‚Ü‚¹‚ñ\n\n \
+V‚µ‚¢ƒtƒ@ƒCƒ‹‚ð쬂µ‚Ü‚·‚© ?"
+STRING_NOTSAVED, "ƒtƒ@ƒCƒ‹ '%s'\n‚Í•ÏX‚³‚ê‚Ä‚¢‚Ü‚·\n\n \
+•ÏX‚ð•Û‘¶‚µ‚Ü‚·‚© ?"
+STRING_NOTFOUND, "'%s' ‚ÍŒ©‚‚©‚è‚Ü‚¹‚ñ‚Å‚µ‚½"
+STRING_OUT_OF_MEMORY, "‚±‚Ì‘€ì‚ðŽÀs‚·‚邽‚߂̃ƒ‚ƒŠ‚ª\
+‘«‚è‚Ü‚¹‚ñB \nƒƒ‚ƒŠ‚̋󂫂ð‘‚â‚·‚½‚߂ɂ¢‚‚‚©‚̃AƒvƒŠƒP[ƒVƒ‡ƒ“‚ð\nI—¹‚µ‚Ä\
+‰º‚³‚¢B"
+STRING_CANNOTFIND "'%s' ‚ªŒ©‚‚©‚è‚Ü‚¹‚ñ‚Å‚µ‚½B"
+STRING_ANSI, "ANSI"
+STRING_UNICODE, "Unicode"
+STRING_UNICODE_BE, "Unicode (big endian)"
+STRING_UTF8, "UTF-8"
+STRING_CRLF, "Windows (CR+LF)"
+STRING_LF, "Unix (LF)"
+STRING_CR, "Mac (CR)"
+}
diff --git a/reactos/base/applications/notepad/res/Nl.rc b/reactos/base/applications/notepad/lang/Nl.rc
similarity index 95%
rename from reactos/base/applications/notepad/res/Nl.rc
rename to reactos/base/applications/notepad/lang/Nl.rc
index 079f579294d..026d436b68c 100644
--- a/reactos/base/applications/notepad/res/Nl.rc
+++ b/reactos/base/applications/notepad/lang/Nl.rc
@@ -1,145 +1,161 @@
-/*
- * Notepad (Dutch resources)
- *
- * Copyright 2003 Hans Leidekker
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * 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
- */
-
-LANGUAGE LANG_DUTCH, SUBLANG_NEUTRAL
-
-MAIN_MENU MENU
-BEGIN
- POPUP "&Bestand"
- BEGIN
- MENUITEM "&Nieuw...", CMD_NEW
- MENUITEM "&Openen\tCtrl+O", CMD_OPEN
- MENUITEM "O&pslaan\tCtrl+p", CMD_SAVE
- MENUITEM "Ops&laan als...", CMD_SAVE_AS
- MENUITEM SEPARATOR
- MENUITEM "&Afdrukken", CMD_PRINT
- MENUITEM "Pagina-in&stelling...", CMD_PAGE_SETUP
- MENUITEM "Printerinstellingen...", CMD_PRINTER_SETUP
- MENUITEM SEPARATOR
- MENUITEM "&Afsluiten", CMD_EXIT
- END
- POPUP "Be&werken"
- BEGIN
- MENUITEM "&Ongedaan maken\tCtrl+Z", CMD_UNDO
- MENUITEM SEPARATOR
- MENUITEM "K&nippen\tCtrl+X", CMD_CUT
- MENUITEM "&Kopiëren\tCtrl+C", CMD_COPY
- MENUITEM "&Plakken\tCtrl+V", CMD_PASTE
- MENUITEM "&Verwijderen\tDel", CMD_DELETE
- MENUITEM SEPARATOR
- MENUITEM "&Zoeken\tCtrl+Z", CMD_SEARCH
- MENUITEM "&Volgende zoeken\tF3", CMD_SEARCH_NEXT
- MENUITEM SEPARATOR
- MENUITEM "&Alles selecteren\tCtrl+A", CMD_SELECT_ALL
- MENUITEM "Tijd/&datum\tF5", CMD_TIME_DATE
- MENUITEM SEPARATOR
- MENUITEM "A&utomatische terugloop", CMD_WRAP
- MENUITEM "&Lettertype instellen...", CMD_FONT
- END
- POPUP "&Help"
- BEGIN
- MENUITEM "&Help-onderwerpen", CMD_HELP_CONTENTS
- MENUITEM "&Zoeken...", CMD_HELP_SEARCH
- MENUITEM "&Hulp bij Help", CMD_HELP_ON_HELP
- MENUITEM SEPARATOR
- MENUITEM "&About" CMD_ABOUT
- MENUITEM "Inf&o...", CMD_ABOUT_WINE
- END
-END
-
-/* Dialog `Page setup' */
-
-DIALOG_PAGESETUP DIALOG 0, 0, 225, 95
-STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
-FONT 8, "MS Shell Dlg"
-CAPTION "Pagina-instelling"
-{
-LTEXT "&Koptekst:", 0x140, 10, 07, 40, 15
-EDITTEXT 0x141, 60, 05,110, 12, WS_BORDER | WS_TABSTOP
-LTEXT "&Voettekst:", 0x142, 10, 24, 40, 15
-EDITTEXT 0x143, 60, 22,110, 12, WS_BORDER | WS_TABSTOP
-
-GROUPBOX "&Marges:", 0x144, 10, 43,160, 45
-LTEXT "Li&nks:", 0x145, 20, 55, 30, 10, WS_CHILD
-EDITTEXT /*STRING_PAGESETUP_LEFTVALUE,*/ 0x147, 50, 55, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP
-LTEXT "&Boven:", 0x148, 20, 73, 30, 10, WS_CHILD
-EDITTEXT /*STRING_PAGESETUP_TOPVALUE,*/ 0x14A, 50, 73, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP
-LTEXT "&Rechts:", 0x14B, 100, 55, 30, 10, WS_CHILD
-EDITTEXT /*STRING_PAGESETUP_RIGHTVALUE,*/ 0x14D, 130, 55, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP
-LTEXT "&Onder:", 0x14E,100, 73, 30, 10, WS_CHILD
-EDITTEXT /*STRING_PAGESETUP_BOTTOMVALUE,*/ 0x150, 130, 73, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP
-
-DEFPUSHBUTTON "OK", 0x151, 180, 3, 40, 15, WS_TABSTOP
-PUSHBUTTON "Annuleren", 0x152, 180, 21, 40, 15, WS_TABSTOP
-PUSHBUTTON "&Help", 0x153, 180, 39, 40, 15, WS_TABSTOP
-}
-
-IDD_ABOUTBOX DIALOG DISCARDABLE 22,16,284,170
-STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
-CAPTION "About ReactOS Notepad"
-FONT 8, "MS Shell Dlg"
-BEGIN
- CONTROL "ReactOS Notepad v1.0\r\nCopyright 1997,98 Marcel Baur \r\nCopyright 2000 Mike McCormack \r\nCopyright 2002 Sylvain Petreolle \r\nCopyright 2002 Andriy Palamarchuk\r\n ",
- -1,"Static",SS_LEFTNOWORDWRAP | WS_GROUP,46,7,232,39
- CONTROL " ",
- -1,"Static",0x50000000,8,48,272,11
- DEFPUSHBUTTON "Close",IDOK,114,149,44,15,WS_GROUP
- ICON IDI_NPICON,-1,12,9,20,30
- EDITTEXT IDC_LICENSE,8,64,272,81,ES_MULTILINE |
- ES_READONLY | WS_VSCROLL
-END
-
-STRINGTABLE DISCARDABLE
-BEGIN
- STRING_LICENSE, "This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.\r\n\r\nThis program 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 General Public License for more details.\r\n\r\nYou should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA."
-END
-
-STRINGTABLE DISCARDABLE
-{
-STRING_PAGESETUP_HEADERVALUE, "&n" /* FIXME */
-STRING_PAGESETUP_FOOTERVALUE, "Pagina &s" /* FIXME */
-STRING_PAGESETUP_LEFTVALUE, "20 mm" /* FIXME */
-STRING_PAGESETUP_RIGHTVALUE, "20 mm" /* FIXME */
-STRING_PAGESETUP_TOPVALUE, "25 mm" /* FIXME */
-STRING_PAGESETUP_BOTTOMVALUE, "25 mm" /* FIXME */
-
-STRING_NOTEPAD, "Kladblok"
-STRING_ERROR, "FOUT"
-STRING_WARNING, "WAARSCHUWING"
-STRING_INFO, "Informatie"
-
-STRING_UNTITLED, "(naamloos)"
-
-STRING_ALL_FILES, "Alle bestanden (*.*)"
-STRING_TEXT_FILES_TXT, "Tekstbestanden (*.txt)"
-
-STRING_TOOLARGE, "Het bestand '%s' is te groot voor Kladblok.\n \
-Gebruik een andere editor."
-STRING_NOTEXT, "U heeft geen tekst ingevoerd. \
-\nType uw tekst en probeer het nogmaals"
-STRING_DOESNOTEXIST, "Het bestand '%s'\nbestaat niet\n\n \
-Wilt u een nieuw bestand maken?"
-STRING_NOTSAVED, "Het bestand '%s'\nis gewijzigd\n\n \
-Wilt u de wijzigingen opslaan?"
-STRING_NOTFOUND, "'%s' kan niet worden gevonden."
-STRING_OUT_OF_MEMORY, "Onvoldoende geheugen. \
-\nSluit een of meer applicaties om de hoeveelheid \nbeschikbaar geheugen te vergroten."
-
-}
+/*
+ * Notepad (Dutch resources)
+ *
+ * Copyright 2003 Hans Leidekker
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * 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
+ */
+
+LANGUAGE LANG_DUTCH, SUBLANG_NEUTRAL
+
+ID_ACCEL ACCELERATORS
+{
+ "^A", CMD_SELECT_ALL
+ "^C", CMD_COPY
+ "^F", CMD_SEARCH
+ "^G", CMD_GOTO
+ "H", CMD_REPLACE, VIRTKEY, CONTROL
+ "^O", CMD_OPEN
+ "^S", CMD_SAVE
+ "^V", CMD_PASTE
+ "^X", CMD_CUT
+ "^Z", CMD_UNDO
+ VK_F3, CMD_SEARCH_NEXT, VIRTKEY
+ VK_F5, CMD_TIME_DATE, VIRTKEY
+}
+
+MAIN_MENU MENU
+BEGIN
+ POPUP "&Bestand"
+ BEGIN
+ MENUITEM "&Nieuw...", CMD_NEW
+ MENUITEM "&Openen\tCtrl+O", CMD_OPEN
+ MENUITEM "O&pslaan\tCtrl+p", CMD_SAVE
+ MENUITEM "Ops&laan als...", CMD_SAVE_AS
+ MENUITEM SEPARATOR
+ MENUITEM "&Afdrukken", CMD_PRINT
+ MENUITEM "Pagina-in&stelling...", CMD_PAGE_SETUP
+ MENUITEM "Printerinstellingen...", CMD_PRINTER_SETUP
+ MENUITEM SEPARATOR
+ MENUITEM "&Afsluiten", CMD_EXIT
+ END
+ POPUP "Be&werken"
+ BEGIN
+ MENUITEM "&Ongedaan maken\tCtrl+Z", CMD_UNDO
+ MENUITEM SEPARATOR
+ MENUITEM "K&nippen\tCtrl+X", CMD_CUT
+ MENUITEM "&Kopiëren\tCtrl+C", CMD_COPY
+ MENUITEM "&Plakken\tCtrl+V", CMD_PASTE
+ MENUITEM "&Verwijderen\tDel", CMD_DELETE
+ MENUITEM SEPARATOR
+ MENUITEM "&Zoeken\tCtrl+Z", CMD_SEARCH
+ MENUITEM "&Volgende zoeken\tF3", CMD_SEARCH_NEXT
+ MENUITEM SEPARATOR
+ MENUITEM "&Alles selecteren\tCtrl+A", CMD_SELECT_ALL
+ MENUITEM "Tijd/&datum\tF5", CMD_TIME_DATE
+ MENUITEM SEPARATOR
+ MENUITEM "A&utomatische terugloop", CMD_WRAP
+ MENUITEM "&Lettertype instellen...", CMD_FONT
+ END
+ POPUP "&Help"
+ BEGIN
+ MENUITEM "&Help-onderwerpen", CMD_HELP_CONTENTS
+ MENUITEM "&Zoeken...", CMD_HELP_SEARCH
+ MENUITEM "&Hulp bij Help", CMD_HELP_ON_HELP
+ MENUITEM SEPARATOR
+ MENUITEM "&About" CMD_ABOUT
+ MENUITEM "Inf&o...", CMD_ABOUT_WINE
+ END
+END
+
+/* Dialog `Page setup' */
+
+DIALOG_PAGESETUP DIALOG 0, 0, 225, 95
+STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
+FONT 8, "MS Shell Dlg"
+CAPTION "Pagina-instelling"
+{
+LTEXT "&Koptekst:", 0x140, 10, 07, 40, 15
+EDITTEXT 0x141, 60, 05,110, 12, WS_BORDER | WS_TABSTOP
+LTEXT "&Voettekst:", 0x142, 10, 24, 40, 15
+EDITTEXT 0x143, 60, 22,110, 12, WS_BORDER | WS_TABSTOP
+
+GROUPBOX "&Marges:", 0x144, 10, 43,160, 45
+LTEXT "Li&nks:", 0x145, 20, 55, 30, 10, WS_CHILD
+EDITTEXT /*STRING_PAGESETUP_LEFTVALUE,*/ 0x147, 50, 55, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP
+LTEXT "&Boven:", 0x148, 20, 73, 30, 10, WS_CHILD
+EDITTEXT /*STRING_PAGESETUP_TOPVALUE,*/ 0x14A, 50, 73, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP
+LTEXT "&Rechts:", 0x14B, 100, 55, 30, 10, WS_CHILD
+EDITTEXT /*STRING_PAGESETUP_RIGHTVALUE,*/ 0x14D, 130, 55, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP
+LTEXT "&Onder:", 0x14E,100, 73, 30, 10, WS_CHILD
+EDITTEXT /*STRING_PAGESETUP_BOTTOMVALUE,*/ 0x150, 130, 73, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP
+
+DEFPUSHBUTTON "OK", 0x151, 180, 3, 40, 15, WS_TABSTOP
+PUSHBUTTON "Annuleren", 0x152, 180, 21, 40, 15, WS_TABSTOP
+PUSHBUTTON "&Help", 0x153, 180, 39, 40, 15, WS_TABSTOP
+}
+
+IDD_ABOUTBOX DIALOG DISCARDABLE 22,16,284,170
+STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
+CAPTION "About ReactOS Notepad"
+FONT 8, "MS Shell Dlg"
+BEGIN
+ CONTROL "ReactOS Notepad v1.0\r\nCopyright 1997,98 Marcel Baur \r\nCopyright 2000 Mike McCormack \r\nCopyright 2002 Sylvain Petreolle \r\nCopyright 2002 Andriy Palamarchuk\r\n ",
+ -1,"Static",SS_LEFTNOWORDWRAP | WS_GROUP,46,7,232,39
+ CONTROL " ",
+ -1,"Static",0x50000000,8,48,272,11
+ DEFPUSHBUTTON "Close",IDOK,114,149,44,15,WS_GROUP
+ ICON IDI_NPICON,-1,12,9,20,30
+ EDITTEXT IDC_LICENSE,8,64,272,81,ES_MULTILINE |
+ ES_READONLY | WS_VSCROLL
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ STRING_LICENSE, "This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.\r\n\r\nThis program 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 General Public License for more details.\r\n\r\nYou should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA."
+END
+
+STRINGTABLE DISCARDABLE
+{
+STRING_PAGESETUP_HEADERVALUE, "&n" /* FIXME */
+STRING_PAGESETUP_FOOTERVALUE, "Pagina &s" /* FIXME */
+STRING_PAGESETUP_LEFTVALUE, "20 mm" /* FIXME */
+STRING_PAGESETUP_RIGHTVALUE, "20 mm" /* FIXME */
+STRING_PAGESETUP_TOPVALUE, "25 mm" /* FIXME */
+STRING_PAGESETUP_BOTTOMVALUE, "25 mm" /* FIXME */
+
+STRING_NOTEPAD, "Kladblok"
+STRING_ERROR, "FOUT"
+STRING_WARNING, "WAARSCHUWING"
+STRING_INFO, "Informatie"
+
+STRING_UNTITLED, "(naamloos)"
+
+STRING_ALL_FILES, "Alle bestanden (*.*)"
+STRING_TEXT_FILES_TXT, "Tekstbestanden (*.txt)"
+
+STRING_TOOLARGE, "Het bestand '%s' is te groot voor Kladblok.\n \
+Gebruik een andere editor."
+STRING_NOTEXT, "U heeft geen tekst ingevoerd. \
+\nType uw tekst en probeer het nogmaals"
+STRING_DOESNOTEXIST, "Het bestand '%s'\nbestaat niet\n\n \
+Wilt u een nieuw bestand maken?"
+STRING_NOTSAVED, "Het bestand '%s'\nis gewijzigd\n\n \
+Wilt u de wijzigingen opslaan?"
+STRING_NOTFOUND, "'%s' kan niet worden gevonden."
+STRING_OUT_OF_MEMORY, "Onvoldoende geheugen. \
+\nSluit een of meer applicaties om de hoeveelheid \nbeschikbaar geheugen te vergroten."
+
+}
diff --git a/reactos/base/applications/notepad/lang/No.rc b/reactos/base/applications/notepad/lang/No.rc
new file mode 100644
index 00000000000..06b814a062a
--- /dev/null
+++ b/reactos/base/applications/notepad/lang/No.rc
@@ -0,0 +1,204 @@
+/*
+ * Notepad (English resources)
+ *
+ * Copyright 1997,98 Marcel Baur
+ * Proofread 1998 by David Lee Lambert
+ * Copyright 2002 Sylvain Petreolle
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * 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
+ */
+
+LANGUAGE LANG_NORWEGIAN, SUBLANG_NEUTRAL
+
+ID_ACCEL ACCELERATORS
+{
+ "^A", CMD_SELECT_ALL
+ "^C", CMD_COPY
+ "^F", CMD_SEARCH
+ "^G", CMD_GOTO
+ "H", CMD_REPLACE, VIRTKEY, CONTROL
+ "^O", CMD_OPEN
+ "^S", CMD_SAVE
+ "^V", CMD_PASTE
+ "^X", CMD_CUT
+ "^Z", CMD_UNDO
+ VK_F3, CMD_SEARCH_NEXT, VIRTKEY
+ VK_F5, CMD_TIME_DATE, VIRTKEY
+}
+
+MAIN_MENU MENU
+BEGIN
+ POPUP "&Fil"
+ BEGIN
+ MENUITEM "&Ny...", CMD_NEW
+ MENUITEM "&?ne\tCtrl+O", CMD_OPEN
+ MENUITEM "&Lagre\tCtrl+S", CMD_SAVE
+ MENUITEM "Lagre &som...", CMD_SAVE_AS
+ MENUITEM SEPARATOR
+ MENUITEM "Side &Innstillinger...", CMD_PAGE_SETUP
+ MENUITEM "&Utskrift", CMD_PRINT
+ MENUITEM "U&tskrift innstillinger...", CMD_PRINTER_SETUP
+ MENUITEM SEPARATOR
+ MENUITEM "A&vslutt", CMD_EXIT
+ END
+ POPUP "&Rediger"
+ BEGIN
+ MENUITEM "&Angre\tCtrl+Z", CMD_UNDO
+ MENUITEM SEPARATOR
+ MENUITEM "Klipp &ut\tCtrl+X", CMD_CUT
+ MENUITEM "&Kopier\tCtrl+C", CMD_COPY
+ MENUITEM "&Lim inn\tCtrl+V", CMD_PASTE
+ MENUITEM "&Slett\tDel", CMD_DELETE
+ MENUITEM SEPARATOR
+ MENUITEM "&Finn...\tCtrl+F", CMD_SEARCH
+ MENUITEM "Finn &neste\tF3", CMD_SEARCH_NEXT
+ MENUITEM "Erstatt\tCtrl+H", CMD_REPLACE
+ MENUITEM "G?il...\tCtrl+G", CMD_GOTO
+ MENUITEM SEPARATOR
+ MENUITEM "Merk &alt\tCtrl+A", CMD_SELECT_ALL
+ MENUITEM "&Klokkeslett/dato\tF5", CMD_TIME_DATE
+ END
+ POPUP "F&ormat"
+ BEGIN
+ MENUITEM "&Tekstbryting", CMD_WRAP
+ MENUITEM "&Skrift...", CMD_FONT
+ END
+ POPUP "&Vis"
+ BEGIN
+ MENUITEM "Status&linje", CMD_STATUSBAR
+ END
+ POPUP "&Hjelp"
+ BEGIN
+ MENUITEM "&Emner i hjelp", CMD_HELP_CONTENTS
+ MENUITEM "&S?", CMD_HELP_SEARCH
+ MENUITEM "&Hjelp om hjelp", CMD_HELP_ON_HELP
+ MENUITEM SEPARATOR
+ MENUITEM "&Om" CMD_ABOUT
+ MENUITEM "&Infomasjon", CMD_ABOUT_WINE
+ END
+END
+
+/* Dialog `Page setup' */
+
+DIALOG_PAGESETUP DIALOG 0, 0, 225, 95
+STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
+FONT 8, "MS Shell Dlg"
+CAPTION "Side innstillinger"
+{
+LTEXT "&Header:", 0x140, 10, 07, 40, 15
+EDITTEXT 0x141, 60, 05,110, 12, WS_BORDER | WS_TABSTOP
+LTEXT "&Bunntekst:", 0x142, 10, 24, 40, 15
+EDITTEXT 0x143, 60, 22,110, 12, WS_BORDER | WS_TABSTOP
+
+GROUPBOX "&Marger:", 0x144, 10, 43,160, 45
+LTEXT "&Venstre:", 0x145, 20, 55, 30, 10, WS_CHILD
+EDITTEXT /*STRING_PAGESETUP_LEFTVALUE,*/ 0x147, 50, 55, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP
+LTEXT "&Topp:", 0x148, 20, 73, 30, 10, WS_CHILD
+EDITTEXT /*STRING_PAGESETUP_TOPVALUE,*/ 0x14A, 50, 73, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP
+LTEXT "&H?", 0x14B, 100, 55, 30, 10, WS_CHILD
+EDITTEXT /*STRING_PAGESETUP_RIGHTVALUE,*/ 0x14D, 130, 55, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP
+LTEXT "&Bunn:", 0x14E,100, 73, 30, 10, WS_CHILD
+EDITTEXT /*STRING_PAGESETUP_BOTTOMVALUE,*/ 0x150, 130, 73, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP
+
+DEFPUSHBUTTON "OK", IDOK, 180, 3, 40, 15, WS_TABSTOP
+PUSHBUTTON "Avbryt", IDCANCEL, 180, 21, 40, 15, WS_TABSTOP
+PUSHBUTTON "&Hjelp", 0x153, 180, 39, 40, 15, WS_TABSTOP
+}
+
+/* Dialog `Encoding' */
+DIALOG_ENCODING DIALOG 0, 0, 256, 44
+STYLE DS_SETFONT | DS_FIXEDSYS | DS_CONTROL | WS_CHILD | WS_CLIPSIBLINGS |
+ WS_CAPTION | WS_SYSMENU
+FONT 8, "MS Shell Dlg"
+CAPTION "Koding"
+{
+COMBOBOX ID_ENCODING,54,0,156,80,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP
+LTEXT "Koding:",0x155,5,2,41,12
+COMBOBOX ID_EOLN,54,18,156,80,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
+LTEXT "Sluttlinje:",0x156,5,20,41,12
+}
+
+/* Dialog 'Go To' */
+DIALOG_GOTO DIALOG 0,0,165,50
+STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
+FONT 8, "MS Shell Dlg"
+CAPTION "G?l linje"
+{
+EDITTEXT ID_LINENUMBER,54,10,106,12,WS_CHILD | WS_BORDER | WS_TABSTOP
+LTEXT "Line nummer:",0x155,5,12,41,12,WS_CHILD | WS_TABSTOP | ES_NUMBER
+DEFPUSHBUTTON "OK", IDOK, 75, 30, 40, 15, WS_CHILD | WS_TABSTOP
+PUSHBUTTON "Avbryt", IDCANCEL, 120, 30, 40, 15, WS_CHILD | WS_TABSTOP
+}
+
+IDD_ABOUTBOX DIALOG DISCARDABLE 22,16,284,170
+STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
+CAPTION "Om ReactOS Notisblokk"
+FONT 8, "MS Shell Dlg"
+BEGIN
+ CONTROL "ReactOS Notisblokk v1.0\r\nCopyright 1997,98 Marcel Baur \r\nCopyright 2000 Mike McCormack \r\nCopyright 2002 Sylvain Petreolle \r\nCopyright 2002 Andriy Palamarchuk\r\n",
+ -1,"Static",SS_LEFTNOWORDWRAP | WS_GROUP,46,7,232,39
+ CONTROL " ",
+ -1,"Static",0x50000000,8,48,272,11
+ DEFPUSHBUTTON "Avslutt",IDOK,114,149,44,15,WS_GROUP
+ ICON IDI_NPICON,-1,12,9,20,30
+ EDITTEXT IDC_LICENSE,8,64,272,81,ES_MULTILINE |
+ ES_READONLY | WS_VSCROLL
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ STRING_LICENSE, "This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.\r\n\r\nThis program 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 General Public License for more details.\r\n\r\nYou should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA."
+END
+
+STRINGTABLE DISCARDABLE
+{
+STRING_PAGESETUP_HEADERVALUE, "&n" /* FIXME */
+STRING_PAGESETUP_FOOTERVALUE, "Side &r" /* FIXME */
+STRING_PAGESETUP_LEFTVALUE, "20 mm" /* FIXME */
+STRING_PAGESETUP_RIGHTVALUE, "20 mm" /* FIXME */
+STRING_PAGESETUP_TOPVALUE, "25 mm" /* FIXME */
+STRING_PAGESETUP_BOTTOMVALUE, "25 mm" /* FIXME */
+
+STRING_NOTEPAD, "Notisblokk"
+STRING_ERROR, "FEIL"
+STRING_WARNING, "ADVARSEL"
+STRING_INFO, "Informasjon"
+
+STRING_UNTITLED, "(uten navn)"
+
+STRING_ALL_FILES, "Alle filer (*.*)"
+STRING_TEXT_FILES_TXT, "Tekst filer (*.txt)"
+
+STRING_TOOLARGE, "Filen '%s' er for stor for notisblokk.\n \
+Vennligst bruk en annen editor."
+STRING_NOTEXT, "Du utf?ikke innskrivet tekst. \
+\nVennligst skriv noe og pr?jen"
+STRING_DOESNOTEXIST, "Filen '%s'\n eksistere ikke\n\n \
+Vil du opprette en ny fil?"
+STRING_NOTSAVED, "Filen '%s'\nhar ikke blitt lagret\n\n \
+Vil du lagre endringen?"
+STRING_NOTFOUND, "'%s' ble ikke funnet."
+STRING_OUT_OF_MEMORY, "Ikke nok minne for ?ullf?enne \
+oppgaven. \nAvslutt en eller mere applikasjoner for ?ke mengden av \nledig \
+minne."
+STRING_CANNOTFIND "Kan ikke finne '%s'"
+STRING_ANSI, "ANSI"
+STRING_UNICODE, "Unicode"
+STRING_UNICODE_BE, "Unicode (big endian)"
+STRING_UTF8, "UTF-8"
+STRING_CRLF, "Windows"
+STRING_LF, "Unix"
+STRING_CR, "Mac"
+}
diff --git a/reactos/base/applications/notepad/res/Pl.rc b/reactos/base/applications/notepad/lang/Pl.rc
similarity index 95%
rename from reactos/base/applications/notepad/res/Pl.rc
rename to reactos/base/applications/notepad/lang/Pl.rc
index 7e7a92427c7..d17c181e580 100644
--- a/reactos/base/applications/notepad/res/Pl.rc
+++ b/reactos/base/applications/notepad/lang/Pl.rc
@@ -1,148 +1,164 @@
-/*
- * Notepad (Polish resources)
- *
- * Copyright 1997,98 Marcel Baur
- * Proofread 1998 by David Lee Lambert
- * Copyright 2002 Sylvain Petreolle
- * Copyright 2004 Jacek Caban
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * 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
- */
-
-LANGUAGE LANG_POLISH, SUBLANG_NEUTRAL
-
-MAIN_MENU MENU
-BEGIN
- POPUP "&Plik"
- BEGIN
- MENUITEM "&Nowy...", CMD_NEW
- MENUITEM "&Otwórz\tCtrl+O", CMD_OPEN
- MENUITEM "&Zapisz\tCtrl+S", CMD_SAVE
- MENUITEM "Z&apisz jako...", CMD_SAVE_AS
- MENUITEM SEPARATOR
- MENUITEM "&Drukuj", CMD_PRINT
- MENUITEM "&Ustawienia strony...", CMD_PAGE_SETUP
- MENUITEM "Ustawienia &drukarki...", CMD_PRINTER_SETUP
- MENUITEM SEPARATOR
- MENUITEM "Zakoñ&cz", CMD_EXIT
- END
- POPUP "&Edycja"
- BEGIN
- MENUITEM "&Cofnij\tCtrl+Z", CMD_UNDO
- MENUITEM SEPARATOR
- MENUITEM "&Wytnij\tCtrl+X", CMD_CUT
- MENUITEM "&Kopiuj\tCtrl+C", CMD_COPY
- MENUITEM "Wkl&ej\tCtrl+V", CMD_PASTE
- MENUITEM "&Usuñ\tDel", CMD_DELETE
- MENUITEM SEPARATOR
- MENUITEM "&ZnajdŸ\tCtrl+F", CMD_SEARCH
- MENUITEM "Z&najdŸ nastêpny\tF3", CMD_SEARCH_NEXT
- MENUITEM SEPARATOR
- MENUITEM "Zaznacz w&szystko\tCtrl+A", CMD_SELECT_ALL
- MENUITEM "Godzina/&Data\tF5", CMD_TIME_DATE
- MENUITEM SEPARATOR
- MENUITEM "&Zawijanie wierszy", CMD_WRAP
- MENUITEM "Czci&onka...", CMD_FONT
- END
- POPUP "Pomo&c"
- BEGIN
- MENUITEM "&Tematy pomocy", CMD_HELP_CONTENTS
- MENUITEM "&Szukaj...", CMD_HELP_SEARCH
- MENUITEM "&Pomoc", CMD_HELP_ON_HELP
- MENUITEM SEPARATOR
- MENUITEM "&About" CMD_ABOUT
- MENUITEM "In&fo...", CMD_ABOUT_WINE
- END
-END
-
-/* Dialog `Page setup' */
-
-DIALOG_PAGESETUP DIALOG 0, 0, 225, 95
-STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
-FONT 8, "MS Shell Dlg"
-CAPTION "Ustawienia strony"
-{
-LTEXT "&Nag³ówek:", 0x140, 10, 07, 40, 15
-EDITTEXT 0x141, 60, 05,110, 12, WS_BORDER | WS_TABSTOP
-LTEXT "&Stopka:", 0x142, 10, 24, 40, 15
-EDITTEXT 0x143, 60, 22,110, 12, WS_BORDER | WS_TABSTOP
-
-GROUPBOX "&Marginesy:", 0x144, 10, 43,160, 45
-LTEXT "&Lewy:", 0x145, 20, 55, 30, 10, WS_CHILD
-EDITTEXT /*STRING_PAGESETUP_LEFTVALUE,*/ 0x147, 50, 55, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP
-LTEXT "&Górny:", 0x148, 20, 73, 30, 10, WS_CHILD
-EDITTEXT /*STRING_PAGESETUP_TOPVALUE,*/ 0x14A, 50, 73, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP
-LTEXT "P&rawy:", 0x14B, 100, 55, 30, 10, WS_CHILD
-EDITTEXT /*STRING_PAGESETUP_RIGHTVALUE,*/ 0x14D, 130, 55, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP
-LTEXT "&Dolny:", 0x14E,100, 73, 30, 10, WS_CHILD
-EDITTEXT /*STRING_PAGESETUP_BOTTOMVALUE,*/ 0x150, 130, 73, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP
-
-DEFPUSHBUTTON "OK", 0x151, 180, 3, 40, 15, WS_TABSTOP
-PUSHBUTTON "Anuluj", 0x152, 180, 21, 40, 15, WS_TABSTOP
-PUSHBUTTON "&Pomoc", 0x153, 180, 39, 40, 15, WS_TABSTOP
-}
-
-IDD_ABOUTBOX DIALOG DISCARDABLE 22,16,284,170
-STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
-CAPTION "About ReactOS Notepad"
-FONT 8, "MS Shell Dlg"
-BEGIN
- CONTROL "ReactOS Notepad v1.0\r\nCopyright 1997,98 Marcel Baur \r\nCopyright 2000 Mike McCormack \r\nCopyright 2002 Sylvain Petreolle \r\nCopyright 2002 Andriy Palamarchuk\r\n ",
- -1,"Static",SS_LEFTNOWORDWRAP | WS_GROUP,46,7,232,39
- CONTROL " ",
- -1,"Static",0x50000000,8,48,272,11
- DEFPUSHBUTTON "Close",IDOK,114,149,44,15,WS_GROUP
- ICON IDI_NPICON,-1,12,9,20,30
- EDITTEXT IDC_LICENSE,8,64,272,81,ES_MULTILINE |
- ES_READONLY | WS_VSCROLL
-END
-
-STRINGTABLE DISCARDABLE
-BEGIN
- STRING_LICENSE, "This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.\r\n\r\nThis program 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 General Public License for more details.\r\n\r\nYou should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA."
-END
-
-STRINGTABLE DISCARDABLE
-{
-STRING_PAGESETUP_HEADERVALUE, "&n" /* FIXME */
-STRING_PAGESETUP_FOOTERVALUE, "Strona &s" /* FIXME */
-STRING_PAGESETUP_LEFTVALUE, "20 mm" /* FIXME */
-STRING_PAGESETUP_RIGHTVALUE, "20 mm" /* FIXME */
-STRING_PAGESETUP_TOPVALUE, "25 mm" /* FIXME */
-STRING_PAGESETUP_BOTTOMVALUE, "25 mm" /* FIXME */
-
-STRING_NOTEPAD, "Notatnik"
-STRING_ERROR, "B£¥D"
-STRING_WARNING, "OSTRZE¯ENIE"
-STRING_INFO, "Informacja"
-
-STRING_UNTITLED, "(bez tytu³u)"
-
-STRING_ALL_FILES, "Wszystkie piki (*.*)"
-STRING_TEXT_FILES_TXT, "Pliki tekstowe (*.txt)"
-
-STRING_TOOLARGE, "Plik '%s' jest za du¿y dla notatnika.\n \
-Proszê u¿yæ innego edytora."
-STRING_NOTEXT, "Nie wprowadzi³eœ ¿adnego tekstu. \
-\nProszê coœ wpisaæ i spróbowaæ ponownie."
-STRING_DOESNOTEXIST, "Plik '%s' nie istnieje\n\n \
-Czy chcesz utworzyæ nowy plik ?"
-STRING_NOTSAVED, "Plik '%s'\nzosta³ zmodyfikowany\n\n \
-Czy chcesz zachowaæ zmiany ?"
-STRING_NOTFOUND, "Nie mo¿na odnaleŸæ '%s'."
-STRING_OUT_OF_MEMORY, "Za ma³o pamiêci do wykonania tego zadania.\n \
-Zamknij jedn¹ lub wiêcej aplikacji aby zwiêkszyæ iloœæ wolnej pamiêci."
-
-}
+/*
+ * Notepad (Polish resources)
+ *
+ * Copyright 1997,98 Marcel Baur
+ * Proofread 1998 by David Lee Lambert
+ * Copyright 2002 Sylvain Petreolle
+ * Copyright 2004 Jacek Caban
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * 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
+ */
+
+LANGUAGE LANG_POLISH, SUBLANG_DEFAULT
+
+ID_ACCEL ACCELERATORS
+{
+ "^A", CMD_SELECT_ALL
+ "^C", CMD_COPY
+ "^F", CMD_SEARCH
+ "^G", CMD_GOTO
+ "H", CMD_REPLACE, VIRTKEY, CONTROL
+ "^O", CMD_OPEN
+ "^S", CMD_SAVE
+ "^V", CMD_PASTE
+ "^X", CMD_CUT
+ "^Z", CMD_UNDO
+ VK_F3, CMD_SEARCH_NEXT, VIRTKEY
+ VK_F5, CMD_TIME_DATE, VIRTKEY
+}
+
+MAIN_MENU MENU
+BEGIN
+ POPUP "&Plik"
+ BEGIN
+ MENUITEM "&Nowy...", CMD_NEW
+ MENUITEM "&Otwórz\tCtrl+O", CMD_OPEN
+ MENUITEM "&Zapisz\tCtrl+S", CMD_SAVE
+ MENUITEM "Z&apisz jako...", CMD_SAVE_AS
+ MENUITEM SEPARATOR
+ MENUITEM "&Drukuj", CMD_PRINT
+ MENUITEM "&Ustawienia strony...", CMD_PAGE_SETUP
+ MENUITEM "Ustawienia &drukarki...", CMD_PRINTER_SETUP
+ MENUITEM SEPARATOR
+ MENUITEM "Zakoñ&cz", CMD_EXIT
+ END
+ POPUP "&Edycja"
+ BEGIN
+ MENUITEM "&Cofnij\tCtrl+Z", CMD_UNDO
+ MENUITEM SEPARATOR
+ MENUITEM "&Wytnij\tCtrl+X", CMD_CUT
+ MENUITEM "&Kopiuj\tCtrl+C", CMD_COPY
+ MENUITEM "Wkl&ej\tCtrl+V", CMD_PASTE
+ MENUITEM "&Usuñ\tDel", CMD_DELETE
+ MENUITEM SEPARATOR
+ MENUITEM "&ZnajdŸ\tCtrl+F", CMD_SEARCH
+ MENUITEM "Z&najdŸ nastêpny\tF3", CMD_SEARCH_NEXT
+ MENUITEM SEPARATOR
+ MENUITEM "Zaznacz w&szystko\tCtrl+A", CMD_SELECT_ALL
+ MENUITEM "Godzina/&Data\tF5", CMD_TIME_DATE
+ MENUITEM SEPARATOR
+ MENUITEM "&Zawijanie wierszy", CMD_WRAP
+ MENUITEM "Czci&onka...", CMD_FONT
+ END
+ POPUP "Pomo&c"
+ BEGIN
+ MENUITEM "&Tematy pomocy", CMD_HELP_CONTENTS
+ MENUITEM "&Szukaj...", CMD_HELP_SEARCH
+ MENUITEM "&Pomoc", CMD_HELP_ON_HELP
+ MENUITEM SEPARATOR
+ MENUITEM "&About" CMD_ABOUT
+ MENUITEM "In&fo...", CMD_ABOUT_WINE
+ END
+END
+
+/* Dialog `Page setup' */
+
+DIALOG_PAGESETUP DIALOG 0, 0, 225, 95
+STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
+FONT 8, "MS Shell Dlg"
+CAPTION "Ustawienia strony"
+{
+LTEXT "&Nag³ówek:", 0x140, 10, 07, 40, 15
+EDITTEXT 0x141, 60, 05,110, 12, WS_BORDER | WS_TABSTOP
+LTEXT "&Stopka:", 0x142, 10, 24, 40, 15
+EDITTEXT 0x143, 60, 22,110, 12, WS_BORDER | WS_TABSTOP
+
+GROUPBOX "&Marginesy:", 0x144, 10, 43,160, 45
+LTEXT "&Lewy:", 0x145, 20, 55, 30, 10, WS_CHILD
+EDITTEXT /*STRING_PAGESETUP_LEFTVALUE,*/ 0x147, 50, 55, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP
+LTEXT "&Górny:", 0x148, 20, 73, 30, 10, WS_CHILD
+EDITTEXT /*STRING_PAGESETUP_TOPVALUE,*/ 0x14A, 50, 73, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP
+LTEXT "P&rawy:", 0x14B, 100, 55, 30, 10, WS_CHILD
+EDITTEXT /*STRING_PAGESETUP_RIGHTVALUE,*/ 0x14D, 130, 55, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP
+LTEXT "&Dolny:", 0x14E,100, 73, 30, 10, WS_CHILD
+EDITTEXT /*STRING_PAGESETUP_BOTTOMVALUE,*/ 0x150, 130, 73, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP
+
+DEFPUSHBUTTON "OK", 0x151, 180, 3, 40, 15, WS_TABSTOP
+PUSHBUTTON "Anuluj", 0x152, 180, 21, 40, 15, WS_TABSTOP
+PUSHBUTTON "&Pomoc", 0x153, 180, 39, 40, 15, WS_TABSTOP
+}
+
+IDD_ABOUTBOX DIALOG DISCARDABLE 22,16,284,170
+STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
+CAPTION "About ReactOS Notepad"
+FONT 8, "MS Shell Dlg"
+BEGIN
+ CONTROL "ReactOS Notepad v1.0\r\nCopyright 1997,98 Marcel Baur \r\nCopyright 2000 Mike McCormack \r\nCopyright 2002 Sylvain Petreolle \r\nCopyright 2002 Andriy Palamarchuk\r\n ",
+ -1,"Static",SS_LEFTNOWORDWRAP | WS_GROUP,46,7,232,39
+ CONTROL " ",
+ -1,"Static",0x50000000,8,48,272,11
+ DEFPUSHBUTTON "Close",IDOK,114,149,44,15,WS_GROUP
+ ICON IDI_NPICON,-1,12,9,20,30
+ EDITTEXT IDC_LICENSE,8,64,272,81,ES_MULTILINE |
+ ES_READONLY | WS_VSCROLL
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ STRING_LICENSE, "This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.\r\n\r\nThis program 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 General Public License for more details.\r\n\r\nYou should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA."
+END
+
+STRINGTABLE DISCARDABLE
+{
+STRING_PAGESETUP_HEADERVALUE, "&n" /* FIXME */
+STRING_PAGESETUP_FOOTERVALUE, "Strona &s" /* FIXME */
+STRING_PAGESETUP_LEFTVALUE, "20 mm" /* FIXME */
+STRING_PAGESETUP_RIGHTVALUE, "20 mm" /* FIXME */
+STRING_PAGESETUP_TOPVALUE, "25 mm" /* FIXME */
+STRING_PAGESETUP_BOTTOMVALUE, "25 mm" /* FIXME */
+
+STRING_NOTEPAD, "Notatnik"
+STRING_ERROR, "B£¥D"
+STRING_WARNING, "OSTRZE¯ENIE"
+STRING_INFO, "Informacja"
+
+STRING_UNTITLED, "(bez tytu³u)"
+
+STRING_ALL_FILES, "Wszystkie piki (*.*)"
+STRING_TEXT_FILES_TXT, "Pliki tekstowe (*.txt)"
+
+STRING_TOOLARGE, "Plik '%s' jest za du¿y dla notatnika.\n \
+Proszê u¿yæ innego edytora."
+STRING_NOTEXT, "Nie wprowadzi³eœ ¿adnego tekstu. \
+\nProszê coœ wpisaæ i spróbowaæ ponownie."
+STRING_DOESNOTEXIST, "Plik '%s' nie istnieje\n\n \
+Czy chcesz utworzyæ nowy plik ?"
+STRING_NOTSAVED, "Plik '%s'\nzosta³ zmodyfikowany\n\n \
+Czy chcesz zachowaæ zmiany ?"
+STRING_NOTFOUND, "Nie mo¿na odnaleŸæ '%s'."
+STRING_OUT_OF_MEMORY, "Za ma³o pamiêci do wykonania tego zadania.\n \
+Zamknij jedn¹ lub wiêcej aplikacji aby zwiêkszyæ iloœæ wolnej pamiêci."
+
+}
diff --git a/reactos/base/applications/notepad/res/Pt.rc b/reactos/base/applications/notepad/lang/Pt.rc
similarity index 95%
rename from reactos/base/applications/notepad/res/Pt.rc
rename to reactos/base/applications/notepad/lang/Pt.rc
index 412195ef28f..2f3a008fdfe 100644
--- a/reactos/base/applications/notepad/res/Pt.rc
+++ b/reactos/base/applications/notepad/lang/Pt.rc
@@ -1,148 +1,164 @@
-/*
- * Notepad
- * Portuguese Language Support
- *
- * Copyright 1999 Marcel Baur
- * Copyright 2002 Sylvain Petreolle
- * Copyright 2003 Marcelo Duarte
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * 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
- */
-
-LANGUAGE LANG_PORTUGUESE, SUBLANG_NEUTRAL
-
-MAIN_MENU MENU
-BEGIN
- POPUP "&Arquivo"
- BEGIN
- MENUITEM "&Novo...", CMD_NEW
- MENUITEM "A&brir", CMD_OPEN
- MENUITEM "&Salvar", CMD_SAVE
- MENUITEM "Salvar &como...", CMD_SAVE_AS
- MENUITEM SEPARATOR
- MENUITEM "&Imprimir", CMD_PRINT
- MENUITEM "C&onfigurar página...", CMD_PAGE_SETUP
- MENUITEM "Configurar i&mpressora...", CMD_PRINTER_SETUP
- MENUITEM SEPARATOR
- MENUITEM "Sai&r", CMD_EXIT
- END
- POPUP "&Editar"
- BEGIN
- MENUITEM "&Desfazer\tCtrl+Z", CMD_UNDO
- MENUITEM SEPARATOR
- MENUITEM "&Recortar\tCtrl+X", CMD_CUT
- MENUITEM "&Copiar\tCtrl+C", CMD_COPY
- MENUITEM "C&olar\tCtrl+V", CMD_PASTE
- MENUITEM "E&xcluir\tDel", CMD_DELETE
- MENUITEM SEPARATOR
- MENUITEM "&Localizar...", CMD_SEARCH
- MENUITEM "Localizar &próxima\tF3", CMD_SEARCH_NEXT
- MENUITEM SEPARATOR
- MENUITEM "Selecionar &tudo", CMD_SELECT_ALL
- MENUITEM "&Data/Hora\tF5", CMD_TIME_DATE
- MENUITEM SEPARATOR
- MENUITEM "&Quebrar automática de linha", CMD_WRAP
- MENUITEM "&Fonte...", CMD_FONT
- END
- POPUP "&Ajuda"
- BEGIN
- MENUITEM "&Conteúdo", CMD_HELP_CONTENTS
- MENUITEM "&Procurar...", CMD_HELP_SEARCH
- MENUITEM "&Ajuda na ajuda", CMD_HELP_ON_HELP
- MENUITEM SEPARATOR
- MENUITEM "&About" CMD_ABOUT
- MENUITEM "&Informações...", CMD_ABOUT_WINE
- END
-END
-
-/* Dialog `Page setup' */
-
-DIALOG_PAGESETUP DIALOG 0, 0, 225, 95
-STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
-FONT 8, "MS Shell Dlg"
-CAPTION "Configurar página"
-{
-LTEXT "&Cabeçalho:", 0x140, 10, 07, 40, 15
-EDITTEXT 0x141, 60, 05,110, 12, WS_BORDER | WS_TABSTOP
-LTEXT "&Rodapé:", 0x142, 10, 24, 40, 15
-EDITTEXT 0x143, 60, 22,110, 12, WS_BORDER | WS_TABSTOP
-
-GROUPBOX "&Margens:", 0x144, 10, 43,160, 45
-LTEXT "&Esquerda:", 0x145, 20, 55, 30, 10, WS_CHILD
-EDITTEXT /*STRING_PAGESETUP_LEFTVALUE,*/ 0x147, 50, 55, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP
-LTEXT "&Superior:", 0x148, 20, 73, 30, 10, WS_CHILD
-EDITTEXT /*STRING_PAGESETUP_TOPVALUE,*/ 0x14A, 50, 73, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP
-LTEXT "&Direita:", 0x14B, 100, 55, 30, 10, WS_CHILD
-EDITTEXT /*STRING_PAGESETUP_RIGHTVALUE,*/ 0x14D, 130, 55, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP
-LTEXT "&Inferior:", 0x14E,100, 73, 30, 10, WS_CHILD
-EDITTEXT /*STRING_PAGESETUP_BOTTOMVALUE,*/ 0x150, 130, 73, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP
-
-DEFPUSHBUTTON "OK", 0x151, 180, 3, 40, 15, WS_TABSTOP
-PUSHBUTTON "Cancelar", 0x152, 180, 21, 40, 15, WS_TABSTOP
-PUSHBUTTON "&Ajuda", 0x153, 180, 39, 40, 15, WS_TABSTOP
-}
-
-
-IDD_ABOUTBOX DIALOG DISCARDABLE 22,16,284,170
-STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
-CAPTION "About ReactOS Notepad"
-FONT 8, "MS Shell Dlg"
-BEGIN
- CONTROL "ReactOS Notepad v1.0\r\nCopyright 1997,98 Marcel Baur \r\nCopyright 2000 Mike McCormack \r\nCopyright 2002 Sylvain Petreolle \r\nCopyright 2002 Andriy Palamarchuk\r\n ",
- -1,"Static",SS_LEFTNOWORDWRAP | WS_GROUP,46,7,232,39
- CONTROL " ",
- -1,"Static",0x50000000,8,48,272,11
- DEFPUSHBUTTON "Close",IDOK,114,149,44,15,WS_GROUP
- ICON IDI_NPICON,-1,12,9,20,30
- EDITTEXT IDC_LICENSE,8,64,272,81,ES_MULTILINE |
- ES_READONLY | WS_VSCROLL
-END
-
-STRINGTABLE DISCARDABLE
-BEGIN
- STRING_LICENSE, "This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.\r\n\r\nThis program 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 General Public License for more details.\r\n\r\nYou should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA."
-END
-STRINGTABLE DISCARDABLE
-{
-STRING_PAGESETUP_HEADERVALUE, "&n" /* FIXME */
-STRING_PAGESETUP_FOOTERVALUE, "Página &s" /* FIXME */
-STRING_PAGESETUP_LEFTVALUE, "20 mm" /* FIXME */
-STRING_PAGESETUP_RIGHTVALUE, "20 mm" /* FIXME */
-STRING_PAGESETUP_TOPVALUE, "25 mm" /* FIXME */
-STRING_PAGESETUP_BOTTOMVALUE, "25 mm" /* FIXME */
-
-STRING_NOTEPAD, "Notepad"
-STRING_ERROR, "ERRO"
-STRING_WARNING, "AVISO"
-STRING_INFO, "Informação"
-
-STRING_UNTITLED, "(sem nome)"
-
-STRING_ALL_FILES, "Todos os arquivos (*.*)"
-STRING_TEXT_FILES_TXT, "Arquivos texto (*.txt)"
-
-STRING_TOOLARGE, "Arquivo '%s' é muito longo para o notepad.\n \
-Por favor use um editor diferente."
-STRING_NOTEXT, "Você não digitou nenhum texto. \
-\nPor favor digite alguma coisa e tente novamente"
-STRING_DOESNOTEXIST, "Arquivo '%s'\nnão existe\n\n \
-Você deseja criar um novo arquivo?"
-STRING_NOTSAVED, "Arquivo '%s'\nfoi modificado\n\n \
-Gostaria de salvar as alteraçÕes?"
-STRING_NOTFOUND, "'%s' não pode ser encontrado."
-STRING_OUT_OF_MEMORY, "Não há memória suficiente para completar essa \
-tarefa. \nFeche uma ou mais aplicações para aumentar a quantidade de memória livre."
-
-}
+/*
+ * Notepad
+ * Portuguese Language Support
+ *
+ * Copyright 1999 Marcel Baur
+ * Copyright 2002 Sylvain Petreolle
+ * Copyright 2003 Marcelo Duarte
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * 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
+ */
+
+LANGUAGE LANG_PORTUGUESE, SUBLANG_NEUTRAL
+
+ID_ACCEL ACCELERATORS
+{
+ "^A", CMD_SELECT_ALL
+ "^C", CMD_COPY
+ "^F", CMD_SEARCH
+ "^G", CMD_GOTO
+ "H", CMD_REPLACE, VIRTKEY, CONTROL
+ "^O", CMD_OPEN
+ "^S", CMD_SAVE
+ "^V", CMD_PASTE
+ "^X", CMD_CUT
+ "^Z", CMD_UNDO
+ VK_F3, CMD_SEARCH_NEXT, VIRTKEY
+ VK_F5, CMD_TIME_DATE, VIRTKEY
+}
+
+MAIN_MENU MENU
+BEGIN
+ POPUP "&Arquivo"
+ BEGIN
+ MENUITEM "&Novo...", CMD_NEW
+ MENUITEM "A&brir", CMD_OPEN
+ MENUITEM "&Salvar", CMD_SAVE
+ MENUITEM "Salvar &como...", CMD_SAVE_AS
+ MENUITEM SEPARATOR
+ MENUITEM "&Imprimir", CMD_PRINT
+ MENUITEM "C&onfigurar página...", CMD_PAGE_SETUP
+ MENUITEM "Configurar i&mpressora...", CMD_PRINTER_SETUP
+ MENUITEM SEPARATOR
+ MENUITEM "Sai&r", CMD_EXIT
+ END
+ POPUP "&Editar"
+ BEGIN
+ MENUITEM "&Desfazer\tCtrl+Z", CMD_UNDO
+ MENUITEM SEPARATOR
+ MENUITEM "&Recortar\tCtrl+X", CMD_CUT
+ MENUITEM "&Copiar\tCtrl+C", CMD_COPY
+ MENUITEM "C&olar\tCtrl+V", CMD_PASTE
+ MENUITEM "E&xcluir\tDel", CMD_DELETE
+ MENUITEM SEPARATOR
+ MENUITEM "&Localizar...", CMD_SEARCH
+ MENUITEM "Localizar &próxima\tF3", CMD_SEARCH_NEXT
+ MENUITEM SEPARATOR
+ MENUITEM "Selecionar &tudo", CMD_SELECT_ALL
+ MENUITEM "&Data/Hora\tF5", CMD_TIME_DATE
+ MENUITEM SEPARATOR
+ MENUITEM "&Quebrar automática de linha", CMD_WRAP
+ MENUITEM "&Fonte...", CMD_FONT
+ END
+ POPUP "&Ajuda"
+ BEGIN
+ MENUITEM "&Conteúdo", CMD_HELP_CONTENTS
+ MENUITEM "&Procurar...", CMD_HELP_SEARCH
+ MENUITEM "&Ajuda na ajuda", CMD_HELP_ON_HELP
+ MENUITEM SEPARATOR
+ MENUITEM "&About" CMD_ABOUT
+ MENUITEM "&Informações...", CMD_ABOUT_WINE
+ END
+END
+
+/* Dialog `Page setup' */
+
+DIALOG_PAGESETUP DIALOG 0, 0, 225, 95
+STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
+FONT 8, "MS Shell Dlg"
+CAPTION "Configurar página"
+{
+LTEXT "&Cabeçalho:", 0x140, 10, 07, 40, 15
+EDITTEXT 0x141, 60, 05,110, 12, WS_BORDER | WS_TABSTOP
+LTEXT "&Rodapé:", 0x142, 10, 24, 40, 15
+EDITTEXT 0x143, 60, 22,110, 12, WS_BORDER | WS_TABSTOP
+
+GROUPBOX "&Margens:", 0x144, 10, 43,160, 45
+LTEXT "&Esquerda:", 0x145, 20, 55, 30, 10, WS_CHILD
+EDITTEXT /*STRING_PAGESETUP_LEFTVALUE,*/ 0x147, 50, 55, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP
+LTEXT "&Superior:", 0x148, 20, 73, 30, 10, WS_CHILD
+EDITTEXT /*STRING_PAGESETUP_TOPVALUE,*/ 0x14A, 50, 73, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP
+LTEXT "&Direita:", 0x14B, 100, 55, 30, 10, WS_CHILD
+EDITTEXT /*STRING_PAGESETUP_RIGHTVALUE,*/ 0x14D, 130, 55, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP
+LTEXT "&Inferior:", 0x14E,100, 73, 30, 10, WS_CHILD
+EDITTEXT /*STRING_PAGESETUP_BOTTOMVALUE,*/ 0x150, 130, 73, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP
+
+DEFPUSHBUTTON "OK", 0x151, 180, 3, 40, 15, WS_TABSTOP
+PUSHBUTTON "Cancelar", 0x152, 180, 21, 40, 15, WS_TABSTOP
+PUSHBUTTON "&Ajuda", 0x153, 180, 39, 40, 15, WS_TABSTOP
+}
+
+
+IDD_ABOUTBOX DIALOG DISCARDABLE 22,16,284,170
+STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
+CAPTION "About ReactOS Notepad"
+FONT 8, "MS Shell Dlg"
+BEGIN
+ CONTROL "ReactOS Notepad v1.0\r\nCopyright 1997,98 Marcel Baur \r\nCopyright 2000 Mike McCormack \r\nCopyright 2002 Sylvain Petreolle \r\nCopyright 2002 Andriy Palamarchuk\r\n ",
+ -1,"Static",SS_LEFTNOWORDWRAP | WS_GROUP,46,7,232,39
+ CONTROL " ",
+ -1,"Static",0x50000000,8,48,272,11
+ DEFPUSHBUTTON "Close",IDOK,114,149,44,15,WS_GROUP
+ ICON IDI_NPICON,-1,12,9,20,30
+ EDITTEXT IDC_LICENSE,8,64,272,81,ES_MULTILINE |
+ ES_READONLY | WS_VSCROLL
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ STRING_LICENSE, "This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.\r\n\r\nThis program 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 General Public License for more details.\r\n\r\nYou should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA."
+END
+STRINGTABLE DISCARDABLE
+{
+STRING_PAGESETUP_HEADERVALUE, "&n" /* FIXME */
+STRING_PAGESETUP_FOOTERVALUE, "Página &s" /* FIXME */
+STRING_PAGESETUP_LEFTVALUE, "20 mm" /* FIXME */
+STRING_PAGESETUP_RIGHTVALUE, "20 mm" /* FIXME */
+STRING_PAGESETUP_TOPVALUE, "25 mm" /* FIXME */
+STRING_PAGESETUP_BOTTOMVALUE, "25 mm" /* FIXME */
+
+STRING_NOTEPAD, "Notepad"
+STRING_ERROR, "ERRO"
+STRING_WARNING, "AVISO"
+STRING_INFO, "Informação"
+
+STRING_UNTITLED, "(sem nome)"
+
+STRING_ALL_FILES, "Todos os arquivos (*.*)"
+STRING_TEXT_FILES_TXT, "Arquivos texto (*.txt)"
+
+STRING_TOOLARGE, "Arquivo '%s' é muito longo para o notepad.\n \
+Por favor use um editor diferente."
+STRING_NOTEXT, "Você não digitou nenhum texto. \
+\nPor favor digite alguma coisa e tente novamente"
+STRING_DOESNOTEXIST, "Arquivo '%s'\nnão existe\n\n \
+Você deseja criar um novo arquivo?"
+STRING_NOTSAVED, "Arquivo '%s'\nfoi modificado\n\n \
+Gostaria de salvar as alteraçÕes?"
+STRING_NOTFOUND, "'%s' não pode ser encontrado."
+STRING_OUT_OF_MEMORY, "Não há memória suficiente para completar essa \
+tarefa. \nFeche uma ou mais aplicações para aumentar a quantidade de memória livre."
+
+}
diff --git a/reactos/base/applications/notepad/res/Ru.rc b/reactos/base/applications/notepad/lang/Ru.rc
similarity index 94%
rename from reactos/base/applications/notepad/res/Ru.rc
rename to reactos/base/applications/notepad/lang/Ru.rc
index 91027bc1e3b..9c2fcfbc9cc 100644
--- a/reactos/base/applications/notepad/res/Ru.rc
+++ b/reactos/base/applications/notepad/lang/Ru.rc
@@ -1,144 +1,159 @@
-/*
- * Notepad (Russian resources)
- *
- * Copyright 2003 Igor Stepin
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * 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
- */
-LANGUAGE LANG_RUSSIAN, SUBLANG_NEUTRAL
-
-MAIN_MENU MENU
-BEGIN
- POPUP "&Ôàéë"
- BEGIN
- MENUITEM "Ñîçä&àòü", CMD_NEW
- MENUITEM "&Îòêðûòü...", CMD_OPEN
- MENUITEM "&Ñîõðàíèòü", CMD_SAVE
- MENUITEM "Ñîõðàíèòü &êàê...", CMD_SAVE_AS
- MENUITEM SEPARATOR
- MENUITEM "Ïàðà&ìåòðû ñòðàíèöû...", CMD_PAGE_SETUP
- MENUITEM "&Íàñòðîéêà ïðèíòåðà...", CMD_PRINTER_SETUP
- MENUITEM "&Ïå÷àòàòü", CMD_PRINT
- MENUITEM SEPARATOR
- MENUITEM "Â&ûõîä", CMD_EXIT
- END
- POPUP "&Ïðàâêà"
- BEGIN
- MENUITEM "&Îòìåíèòü\tCtrl+Z", CMD_UNDO
- MENUITEM SEPARATOR
- MENUITEM "&Âûðåçàòü\tCtrl+X", CMD_CUT
- MENUITEM "&Êîïèðîâàòü\tCtrl+C", CMD_COPY
- MENUITEM "Âñò&àâèòü\tCtrl+V", CMD_PASTE
- MENUITEM "&Óäàëèòü\tDel", CMD_DELETE
- MENUITEM SEPARATOR
- MENUITEM "&Íàéòè", CMD_SEARCH
- MENUITEM "Íàéòè &äàëåå\tF3", CMD_SEARCH_NEXT
- MENUITEM SEPARATOR
- MENUITEM "Âûäåëèòü â&ñå", CMD_SELECT_ALL
- MENUITEM "Âðåì&ÿ è äàòà\tF5", CMD_TIME_DATE
- MENUITEM SEPARATOR
- MENUITEM "&Ïåðåíîñ ïî ñëîâàì", CMD_WRAP
- END
- POPUP "&Ñïðàâêà"
- BEGIN
- MENUITEM "&Ñîäåðæàíèå", CMD_HELP_CONTENTS
- MENUITEM "&Ïîèñê...", CMD_HELP_SEARCH
- MENUITEM "&Èñïîëüçîâàíèå ñïðàâêè", CMD_HELP_ON_HELP
- MENUITEM SEPARATOR
- MENUITEM "&About" CMD_ABOUT
- MENUITEM "&Ñâåäåíèÿ...", CMD_ABOUT_WINE
- END
-END
-
-/* Dialog `Page setup' */
-
-DIALOG_PAGESETUP DIALOG 0, 0, 225, 95
-LANGUAGE LANG_RUSSIAN, SUBLANG_NEUTRAL
-STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
-FONT 8, "MS Shell Dlg"
-CAPTION "Ïàðàìåòðû ñòðàíèöû"
-{
-LTEXT "Â&åðõíèé êîëîíòèòóë:", 0x140, 10, 07, 40, 15
-EDITTEXT 0x141, 60, 05,110, 12, WS_BORDER | WS_TABSTOP
-LTEXT "Í&èæíèé êîëîíòèòóë:", 0x142, 10, 24, 40, 15
-EDITTEXT 0x143, 60, 22,110, 12, WS_BORDER | WS_TABSTOP
-
-GROUPBOX "Ïîëÿ (ìì):", 0x144, 10, 43,160, 45
-LTEXT "&Ëåâîå:", 0x145, 20, 55, 30, 10, WS_CHILD
-EDITTEXT /*STRING_PAGESETUP_LEFTVALUE,*/ 0x147, 50, 55, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP
-LTEXT "&Âåðõíåå:", 0x148, 20, 73, 30, 10, WS_CHILD
-EDITTEXT /*STRING_PAGESETUP_TOPVALUE,*/ 0x14A, 50, 73, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP
-LTEXT "&Ïðàâîå:", 0x14B, 100, 55, 30, 10, WS_CHILD
-EDITTEXT /*STRING_PAGESETUP_RIGHTVALUE,*/ 0x14D, 130, 55, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP
-LTEXT "&Íèæíåå:", 0x14E,100, 73, 30, 10, WS_CHILD
-EDITTEXT /*STRING_PAGESETUP_BOTTOMVALUE,*/ 0x150, 130, 73, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP
-
-DEFPUSHBUTTON "OK", 0x151, 180, 3, 40, 15, WS_TABSTOP
-PUSHBUTTON "Îòìåíà", 0x152, 180, 21, 40, 15, WS_TABSTOP
-PUSHBUTTON "&Ñïðàâêà", 0x153, 180, 39, 40, 15, WS_TABSTOP
-}
-
-IDD_ABOUTBOX DIALOG DISCARDABLE 22,16,284,170
-STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
-CAPTION "About ReactOS Notepad"
-FONT 8, "MS Shell Dlg"
-BEGIN
- CONTROL "ReactOS Notepad v1.0\r\nCopyright 1997,98 Marcel Baur \r\nCopyright 2000 Mike McCormack \r\nCopyright 2002 Sylvain Petreolle \r\nCopyright 2002 Andriy Palamarchuk\r\n ",
- -1,"Static",SS_LEFTNOWORDWRAP | WS_GROUP,46,7,232,39
- CONTROL " ",
- -1,"Static",0x50000000,8,48,272,11
- DEFPUSHBUTTON "Close",IDOK,114,149,44,15,WS_GROUP
- ICON IDI_NPICON,-1,12,9,20,30
- EDITTEXT IDC_LICENSE,8,64,272,81,ES_MULTILINE |
- ES_READONLY | WS_VSCROLL
-END
-
-STRINGTABLE DISCARDABLE
-BEGIN
- STRING_LICENSE, "This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.\r\n\r\nThis program 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 General Public License for more details.\r\n\r\nYou should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA."
-END
-
-STRINGTABLE DISCARDABLE
-{
-STRING_PAGESETUP_HEADERVALUE, "&n" /* FIXME */
-STRING_PAGESETUP_FOOTERVALUE, "Ñòðàíèöà &s" /* FIXME */
-STRING_PAGESETUP_LEFTVALUE, "20 ìì" /* FIXME */
-STRING_PAGESETUP_RIGHTVALUE, "20 ìì" /* FIXME */
-STRING_PAGESETUP_TOPVALUE, "25 ìì" /* FIXME */
-STRING_PAGESETUP_BOTTOMVALUE, "25 ìì" /* FIXME */
-
-STRING_NOTEPAD, "Áëîêíîò"
-STRING_ERROR, "ÎØÈÁÊÀ"
-STRING_WARNING, "ÂÍÈÌÀÍÈÅ"
-STRING_INFO, "Èíôîðìàöèÿ"
-
-STRING_UNTITLED, "(áåç çàãîëîâêà)"
-
-STRING_ALL_FILES, "Âñå ôàéëû (*.*)"
-STRING_TEXT_FILES_TXT, "Òåêñòîâûå ôàéëû (*.txt)"
-
-STRING_TOOLARGE, "Ôàéë '%s' ñëèøêîì áîëüøîé äëÿ áëîêíîòà.\n \
-Èñïîëüçóéòå äðóãîé ðåäàêòîð."
-STRING_NOTEXT, "Âû íå ââåëè íèêàêîãî òåêñòà. \
-\nÂâåäèòå ÷òî-íèáóäü è ïîïðîáóéòå åùå."
-STRING_DOESNOTEXIST, "Ôàéë '%s'\níå ñóùåñòâóåò\n\n \
-Õîòèòå ñîçäàòü íîâûé ôàéë?"
-STRING_NOTSAVED, "Ôàéë '%s'\náûë èçìåíåí\n\n \
-Õîòèòå ñîõðàíèòü èçìåíåíèÿ?"
-STRING_NOTFOUND, "'%s' íå íàéäåí."
-STRING_OUT_OF_MEMORY, "Íåäîñòàòî÷íî ïàìÿòè äëÿ çàâåðøåíèÿ ýòîé îïåðàöèè \
-\nÇàêðîéòå îäíî èëè íåñêîëüêî ïðèëîæåíèé è ïîâòîðèòå ïîïûòêó."
-
-}
+/*
+ * Notepad (Russian resources)
+ *
+ * Copyright 2003 Igor Stepin
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * 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
+ */
+LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT
+
+ID_ACCEL ACCELERATORS
+{
+ "^A", CMD_SELECT_ALL
+ "^C", CMD_COPY
+ "^F", CMD_SEARCH
+ "^G", CMD_GOTO
+ "H", CMD_REPLACE, VIRTKEY, CONTROL
+ "^O", CMD_OPEN
+ "^S", CMD_SAVE
+ "^V", CMD_PASTE
+ "^X", CMD_CUT
+ "^Z", CMD_UNDO
+ VK_F3, CMD_SEARCH_NEXT, VIRTKEY
+ VK_F5, CMD_TIME_DATE, VIRTKEY
+}
+
+MAIN_MENU MENU
+BEGIN
+ POPUP "&Ôàéë"
+ BEGIN
+ MENUITEM "Ñîçä&àòü", CMD_NEW
+ MENUITEM "&Îòêðûòü...", CMD_OPEN
+ MENUITEM "&Ñîõðàíèòü", CMD_SAVE
+ MENUITEM "Ñîõðàíèòü &êàê...", CMD_SAVE_AS
+ MENUITEM SEPARATOR
+ MENUITEM "Ïàðà&ìåòðû ñòðàíèöû...", CMD_PAGE_SETUP
+ MENUITEM "&Íàñòðîéêà ïðèíòåðà...", CMD_PRINTER_SETUP
+ MENUITEM "&Ïå÷àòàòü", CMD_PRINT
+ MENUITEM SEPARATOR
+ MENUITEM "Â&ûõîä", CMD_EXIT
+ END
+ POPUP "&Ïðàâêà"
+ BEGIN
+ MENUITEM "&Îòìåíèòü\tCtrl+Z", CMD_UNDO
+ MENUITEM SEPARATOR
+ MENUITEM "&Âûðåçàòü\tCtrl+X", CMD_CUT
+ MENUITEM "&Êîïèðîâàòü\tCtrl+C", CMD_COPY
+ MENUITEM "Âñò&àâèòü\tCtrl+V", CMD_PASTE
+ MENUITEM "&Óäàëèòü\tDel", CMD_DELETE
+ MENUITEM SEPARATOR
+ MENUITEM "&Íàéòè", CMD_SEARCH
+ MENUITEM "Íàéòè &äàëåå\tF3", CMD_SEARCH_NEXT
+ MENUITEM SEPARATOR
+ MENUITEM "Âûäåëèòü â&ñå", CMD_SELECT_ALL
+ MENUITEM "Âðåì&ÿ è äàòà\tF5", CMD_TIME_DATE
+ MENUITEM SEPARATOR
+ MENUITEM "&Ïåðåíîñ ïî ñëîâàì", CMD_WRAP
+ END
+ POPUP "&Ñïðàâêà"
+ BEGIN
+ MENUITEM "&Ñîäåðæàíèå", CMD_HELP_CONTENTS
+ MENUITEM "&Ïîèñê...", CMD_HELP_SEARCH
+ MENUITEM "&Èñïîëüçîâàíèå ñïðàâêè", CMD_HELP_ON_HELP
+ MENUITEM SEPARATOR
+ MENUITEM "&About" CMD_ABOUT
+ MENUITEM "&Ñâåäåíèÿ...", CMD_ABOUT_WINE
+ END
+END
+
+/* Dialog `Page setup' */
+
+DIALOG_PAGESETUP DIALOG 0, 0, 225, 95
+STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
+FONT 8, "MS Shell Dlg"
+CAPTION "Ïàðàìåòðû ñòðàíèöû"
+{
+LTEXT "Â&åðõíèé êîëîíòèòóë:", 0x140, 10, 07, 40, 15
+EDITTEXT 0x141, 60, 05,110, 12, WS_BORDER | WS_TABSTOP
+LTEXT "Í&èæíèé êîëîíòèòóë:", 0x142, 10, 24, 40, 15
+EDITTEXT 0x143, 60, 22,110, 12, WS_BORDER | WS_TABSTOP
+
+GROUPBOX "Ïîëÿ (ìì):", 0x144, 10, 43,160, 45
+LTEXT "&Ëåâîå:", 0x145, 20, 55, 30, 10, WS_CHILD
+EDITTEXT /*STRING_PAGESETUP_LEFTVALUE,*/ 0x147, 50, 55, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP
+LTEXT "&Âåðõíåå:", 0x148, 20, 73, 30, 10, WS_CHILD
+EDITTEXT /*STRING_PAGESETUP_TOPVALUE,*/ 0x14A, 50, 73, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP
+LTEXT "&Ïðàâîå:", 0x14B, 100, 55, 30, 10, WS_CHILD
+EDITTEXT /*STRING_PAGESETUP_RIGHTVALUE,*/ 0x14D, 130, 55, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP
+LTEXT "&Íèæíåå:", 0x14E,100, 73, 30, 10, WS_CHILD
+EDITTEXT /*STRING_PAGESETUP_BOTTOMVALUE,*/ 0x150, 130, 73, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP
+
+DEFPUSHBUTTON "OK", 0x151, 180, 3, 40, 15, WS_TABSTOP
+PUSHBUTTON "Îòìåíà", 0x152, 180, 21, 40, 15, WS_TABSTOP
+PUSHBUTTON "&Ñïðàâêà", 0x153, 180, 39, 40, 15, WS_TABSTOP
+}
+
+IDD_ABOUTBOX DIALOG DISCARDABLE 22,16,284,170
+STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
+CAPTION "About ReactOS Notepad"
+FONT 8, "MS Shell Dlg"
+BEGIN
+ CONTROL "ReactOS Notepad v1.0\r\nCopyright 1997,98 Marcel Baur \r\nCopyright 2000 Mike McCormack \r\nCopyright 2002 Sylvain Petreolle \r\nCopyright 2002 Andriy Palamarchuk\r\n ",
+ -1,"Static",SS_LEFTNOWORDWRAP | WS_GROUP,46,7,232,39
+ CONTROL " ",
+ -1,"Static",0x50000000,8,48,272,11
+ DEFPUSHBUTTON "Close",IDOK,114,149,44,15,WS_GROUP
+ ICON IDI_NPICON,-1,12,9,20,30
+ EDITTEXT IDC_LICENSE,8,64,272,81,ES_MULTILINE |
+ ES_READONLY | WS_VSCROLL
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ STRING_LICENSE, "This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.\r\n\r\nThis program 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 General Public License for more details.\r\n\r\nYou should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA."
+END
+
+STRINGTABLE DISCARDABLE
+{
+STRING_PAGESETUP_HEADERVALUE, "&n" /* FIXME */
+STRING_PAGESETUP_FOOTERVALUE, "Ñòðàíèöà &s" /* FIXME */
+STRING_PAGESETUP_LEFTVALUE, "20 ìì" /* FIXME */
+STRING_PAGESETUP_RIGHTVALUE, "20 ìì" /* FIXME */
+STRING_PAGESETUP_TOPVALUE, "25 ìì" /* FIXME */
+STRING_PAGESETUP_BOTTOMVALUE, "25 ìì" /* FIXME */
+
+STRING_NOTEPAD, "Áëîêíîò"
+STRING_ERROR, "ÎØÈÁÊÀ"
+STRING_WARNING, "ÂÍÈÌÀÍÈÅ"
+STRING_INFO, "Èíôîðìàöèÿ"
+
+STRING_UNTITLED, "(áåç çàãîëîâêà)"
+
+STRING_ALL_FILES, "Âñå ôàéëû (*.*)"
+STRING_TEXT_FILES_TXT, "Òåêñòîâûå ôàéëû (*.txt)"
+
+STRING_TOOLARGE, "Ôàéë '%s' ñëèøêîì áîëüøîé äëÿ áëîêíîòà.\n \
+Èñïîëüçóéòå äðóãîé ðåäàêòîð."
+STRING_NOTEXT, "Âû íå ââåëè íèêàêîãî òåêñòà. \
+\nÂâåäèòå ÷òî-íèáóäü è ïîïðîáóéòå åùå."
+STRING_DOESNOTEXIST, "Ôàéë '%s'\níå ñóùåñòâóåò\n\n \
+Õîòèòå ñîçäàòü íîâûé ôàéë?"
+STRING_NOTSAVED, "Ôàéë '%s'\náûë èçìåíåí\n\n \
+Õîòèòå ñîõðàíèòü èçìåíåíèÿ?"
+STRING_NOTFOUND, "'%s' íå íàéäåí."
+STRING_OUT_OF_MEMORY, "Íåäîñòàòî÷íî ïàìÿòè äëÿ çàâåðøåíèÿ ýòîé îïåðàöèè \
+\nÇàêðîéòå îäíî èëè íåñêîëüêî ïðèëîæåíèé è ïîâòîðèòå ïîïûòêó."
+
+}
diff --git a/reactos/base/applications/notepad/res/Si.rc b/reactos/base/applications/notepad/lang/Si.rc
similarity index 94%
rename from reactos/base/applications/notepad/res/Si.rc
rename to reactos/base/applications/notepad/lang/Si.rc
index 5afa1df00a2..8abf6aa93fe 100644
--- a/reactos/base/applications/notepad/res/Si.rc
+++ b/reactos/base/applications/notepad/lang/Si.rc
@@ -1,144 +1,160 @@
-/*
- * Notepad (Slovenian resources)
- *
- * Copyright 2002-2003 Rok Mandeljc
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * 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
- */
-
-LANGUAGE LANG_SLOVENIAN, SUBLANG_NEUTRAL
-
-MAIN_MENU MENU
-BEGIN
- POPUP "&Datoteka"
- BEGIN
- MENUITEM "&Nova", CMD_NEW
- MENUITEM "&Odpri ...", CMD_OPEN
- MENUITEM "&Shrani", CMD_SAVE
- MENUITEM "Shrani &kot ...", CMD_SAVE_AS
- MENUITEM SEPARATOR
- MENUITEM "Na&tisni", CMD_PRINT
- MENUITEM "P&riprava strani ...", CMD_PAGE_SETUP
- MENUITEM "&Tiskalnik ...", CMD_PRINTER_SETUP
- MENUITEM SEPARATOR
- MENUITEM "Iz&hod", CMD_EXIT
- END
- POPUP "&Urejanje"
- BEGIN
- MENUITEM "&Razveljavi\tCtrl+Z", CMD_UNDO
- MENUITEM SEPARATOR
- MENUITEM "&Izreži\tCtrl+X", CMD_CUT
- MENUITEM "&Kopiraj\tCtrl+C", CMD_COPY
- MENUITEM "&Prilepi\tCtrl+V", CMD_PASTE
- MENUITEM "Izbri&ši\tDel", CMD_DELETE
- MENUITEM SEPARATOR
- MENUITEM "&Najdi ...", CMD_SEARCH
- MENUITEM "Na&daljuj iskanje\tF3", CMD_SEARCH_NEXT
- MENUITEM SEPARATOR
- MENUITEM "Izberi &vse", CMD_SELECT_ALL
- MENUITEM "Èas/&Datum\tF5", CMD_TIME_DATE
- MENUITEM SEPARATOR
- MENUITEM "Pr&elom vrstice", CMD_WRAP
- END
- POPUP "&Pomoè"
- BEGIN
- MENUITEM "&Teme pomoèi", CMD_HELP_CONTENTS
- MENUITEM "&Najdi ...", CMD_HELP_SEARCH
- MENUITEM "&O pomoèi", CMD_HELP_ON_HELP
- MENUITEM SEPARATOR
- MENUITEM "&About" CMD_ABOUT
- MENUITEM "Inf&ormacije ...", CMD_ABOUT_WINE
- END
-END
-
-/* Dialog `Page setup' */
-
-DIALOG_PAGESETUP DIALOG 0, 0, 225, 95
-STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
-FONT 8, "MS Shell Dlg"
-CAPTION "Page Setup"
-{
-LTEXT "&Glava:", 0x140, 10, 07, 40, 15
-EDITTEXT 0x141, 60, 05,110, 12, WS_BORDER | WS_TABSTOP
-LTEXT "&Noga:", 0x142, 10, 24, 40, 15
-EDITTEXT 0x143, 60, 22,110, 12, WS_BORDER | WS_TABSTOP
-
-GROUPBOX "Robovi", 0x144, 10, 43,160, 45
-LTEXT "&Levo:", 0x145, 20, 55, 30, 10, WS_CHILD
-EDITTEXT /*STRING_PAGESETUP_LEFTVALUE,*/ 0x147, 50, 55, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP
-LTEXT "&Desno:", 0x148, 20, 73, 30, 10, WS_CHILD
-EDITTEXT /*STRING_PAGESETUP_TOPVALUE,*/ 0x14A, 50, 73, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP
-LTEXT "&Zgoraj:", 0x14B, 100, 55, 30, 10, WS_CHILD
-EDITTEXT /*STRING_PAGESETUP_RIGHTVALUE,*/ 0x14D, 130, 55, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP
-LTEXT "&Spodaj:", 0x14E,100, 73, 30, 10, WS_CHILD
-EDITTEXT /*STRING_PAGESETUP_BOTTOMVALUE,*/ 0x150, 130, 73, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP
-
-DEFPUSHBUTTON "V redu", 0x151, 180, 3, 40, 15, WS_TABSTOP
-PUSHBUTTON "Preklièi", 0x152, 180, 21, 40, 15, WS_TABSTOP
-PUSHBUTTON "&Pomoè", 0x153, 180, 39, 40, 15, WS_TABSTOP
-}
-
-IDD_ABOUTBOX DIALOG DISCARDABLE 22,16,284,170
-STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
-CAPTION "About ReactOS Notepad"
-FONT 8, "MS Shell Dlg"
-BEGIN
- CONTROL "ReactOS Notepad v1.0\r\nCopyright 1997,98 Marcel Baur \r\nCopyright 2000 Mike McCormack \r\nCopyright 2002 Sylvain Petreolle \r\nCopyright 2002 Andriy Palamarchuk\r\n ",
- -1,"Static",SS_LEFTNOWORDWRAP | WS_GROUP,46,7,232,39
- CONTROL " ",
- -1,"Static",0x50000000,8,48,272,11
- DEFPUSHBUTTON "Close",IDOK,114,149,44,15,WS_GROUP
- ICON IDI_NPICON,-1,12,9,20,30
- EDITTEXT IDC_LICENSE,8,64,272,81,ES_MULTILINE |
- ES_READONLY | WS_VSCROLL
-END
-
-STRINGTABLE DISCARDABLE
-BEGIN
- STRING_LICENSE, "This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.\r\n\r\nThis program 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 General Public License for more details.\r\n\r\nYou should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA."
-END
-
-STRINGTABLE DISCARDABLE
-{
-STRING_PAGESETUP_HEADERVALUE, "&n" /* FIXME */
-STRING_PAGESETUP_FOOTERVALUE, "Stran &s" /* FIXME */
-STRING_PAGESETUP_LEFTVALUE, "20 mm" /* FIXME */
-STRING_PAGESETUP_RIGHTVALUE, "20 mm" /* FIXME */
-STRING_PAGESETUP_TOPVALUE, "25 mm" /* FIXME */
-STRING_PAGESETUP_BOTTOMVALUE, "25 mm" /* FIXME */
-
-STRING_NOTEPAD, "Beležnica"
-STRING_ERROR, "NAPAKA"
-STRING_WARNING, "OPOZORILO"
-STRING_INFO, "Informacija"
-
-STRING_UNTITLED, "Neimenovana"
-
-STRING_ALL_FILES, "Vse datoteke (*.*)"
-STRING_TEXT_FILES_TXT, "Datoteke z besedilom (*.txt)"
-
-STRING_TOOLARGE, "Datoteka '%s' je prevelika za Beležnico.\n \
-Uporabite drug urejevalnik."
-STRING_NOTEXT, "Niste vnesli besedila. \
-\nVnesite besedilo in poskusite znova."
-STRING_DOESNOTEXIST, "Datoteka '%s' ne obstaja.\n\n \
-Ali želite ustvariti novo datoteko?"
-STRING_NOTSAVED, "Vsebina datoteke '%s'je bila spremenjena.\n\n \
-Ali želite shraniti spremembe?"
-STRING_NOTFOUND, "Ni mogoèe najti '%s'."
-STRING_OUT_OF_MEMORY, "Na voljo ni dovolj pomnilnika, da bi bilo mogoèe dokonèati to \
-operacijo. \nÈe ga želite sprostiti, konèajte enega ali veè programov in poskusite znova. "
-
-}
+/*
+ * Notepad (Slovenian resources)
+ *
+ * Copyright 2002-2003 Rok Mandeljc
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * 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
+ */
+
+LANGUAGE LANG_SLOVENIAN, SUBLANG_DEFAULT
+
+ID_ACCEL ACCELERATORS
+{
+ "^A", CMD_SELECT_ALL
+ "^C", CMD_COPY
+ "^F", CMD_SEARCH
+ "^G", CMD_GOTO
+ "H", CMD_REPLACE, VIRTKEY, CONTROL
+ "^O", CMD_OPEN
+ "^S", CMD_SAVE
+ "^V", CMD_PASTE
+ "^X", CMD_CUT
+ "^Z", CMD_UNDO
+ VK_F3, CMD_SEARCH_NEXT, VIRTKEY
+ VK_F5, CMD_TIME_DATE, VIRTKEY
+}
+
+MAIN_MENU MENU
+BEGIN
+ POPUP "&Datoteka"
+ BEGIN
+ MENUITEM "&Nova", CMD_NEW
+ MENUITEM "&Odpri ...", CMD_OPEN
+ MENUITEM "&Shrani", CMD_SAVE
+ MENUITEM "Shrani &kot ...", CMD_SAVE_AS
+ MENUITEM SEPARATOR
+ MENUITEM "Na&tisni", CMD_PRINT
+ MENUITEM "P&riprava strani ...", CMD_PAGE_SETUP
+ MENUITEM "&Tiskalnik ...", CMD_PRINTER_SETUP
+ MENUITEM SEPARATOR
+ MENUITEM "Iz&hod", CMD_EXIT
+ END
+ POPUP "&Urejanje"
+ BEGIN
+ MENUITEM "&Razveljavi\tCtrl+Z", CMD_UNDO
+ MENUITEM SEPARATOR
+ MENUITEM "&Izreži\tCtrl+X", CMD_CUT
+ MENUITEM "&Kopiraj\tCtrl+C", CMD_COPY
+ MENUITEM "&Prilepi\tCtrl+V", CMD_PASTE
+ MENUITEM "Izbri&ši\tDel", CMD_DELETE
+ MENUITEM SEPARATOR
+ MENUITEM "&Najdi ...", CMD_SEARCH
+ MENUITEM "Na&daljuj iskanje\tF3", CMD_SEARCH_NEXT
+ MENUITEM SEPARATOR
+ MENUITEM "Izberi &vse", CMD_SELECT_ALL
+ MENUITEM "Èas/&Datum\tF5", CMD_TIME_DATE
+ MENUITEM SEPARATOR
+ MENUITEM "Pr&elom vrstice", CMD_WRAP
+ END
+ POPUP "&Pomoè"
+ BEGIN
+ MENUITEM "&Teme pomoèi", CMD_HELP_CONTENTS
+ MENUITEM "&Najdi ...", CMD_HELP_SEARCH
+ MENUITEM "&O pomoèi", CMD_HELP_ON_HELP
+ MENUITEM SEPARATOR
+ MENUITEM "&About" CMD_ABOUT
+ MENUITEM "Inf&ormacije ...", CMD_ABOUT_WINE
+ END
+END
+
+/* Dialog `Page setup' */
+
+DIALOG_PAGESETUP DIALOG 0, 0, 225, 95
+STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
+FONT 8, "MS Shell Dlg"
+CAPTION "Page Setup"
+{
+LTEXT "&Glava:", 0x140, 10, 07, 40, 15
+EDITTEXT 0x141, 60, 05,110, 12, WS_BORDER | WS_TABSTOP
+LTEXT "&Noga:", 0x142, 10, 24, 40, 15
+EDITTEXT 0x143, 60, 22,110, 12, WS_BORDER | WS_TABSTOP
+
+GROUPBOX "Robovi", 0x144, 10, 43,160, 45
+LTEXT "&Levo:", 0x145, 20, 55, 30, 10, WS_CHILD
+EDITTEXT /*STRING_PAGESETUP_LEFTVALUE,*/ 0x147, 50, 55, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP
+LTEXT "&Desno:", 0x148, 20, 73, 30, 10, WS_CHILD
+EDITTEXT /*STRING_PAGESETUP_TOPVALUE,*/ 0x14A, 50, 73, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP
+LTEXT "&Zgoraj:", 0x14B, 100, 55, 30, 10, WS_CHILD
+EDITTEXT /*STRING_PAGESETUP_RIGHTVALUE,*/ 0x14D, 130, 55, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP
+LTEXT "&Spodaj:", 0x14E,100, 73, 30, 10, WS_CHILD
+EDITTEXT /*STRING_PAGESETUP_BOTTOMVALUE,*/ 0x150, 130, 73, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP
+
+DEFPUSHBUTTON "V redu", 0x151, 180, 3, 40, 15, WS_TABSTOP
+PUSHBUTTON "Preklièi", 0x152, 180, 21, 40, 15, WS_TABSTOP
+PUSHBUTTON "&Pomoè", 0x153, 180, 39, 40, 15, WS_TABSTOP
+}
+
+IDD_ABOUTBOX DIALOG DISCARDABLE 22,16,284,170
+STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
+CAPTION "About ReactOS Notepad"
+FONT 8, "MS Shell Dlg"
+BEGIN
+ CONTROL "ReactOS Notepad v1.0\r\nCopyright 1997,98 Marcel Baur \r\nCopyright 2000 Mike McCormack \r\nCopyright 2002 Sylvain Petreolle \r\nCopyright 2002 Andriy Palamarchuk\r\n ",
+ -1,"Static",SS_LEFTNOWORDWRAP | WS_GROUP,46,7,232,39
+ CONTROL " ",
+ -1,"Static",0x50000000,8,48,272,11
+ DEFPUSHBUTTON "Close",IDOK,114,149,44,15,WS_GROUP
+ ICON IDI_NPICON,-1,12,9,20,30
+ EDITTEXT IDC_LICENSE,8,64,272,81,ES_MULTILINE |
+ ES_READONLY | WS_VSCROLL
+END
+
+STRINGTABLE DISCARDABLE
+BEGIN
+ STRING_LICENSE, "This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.\r\n\r\nThis program 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 General Public License for more details.\r\n\r\nYou should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA."
+END
+
+STRINGTABLE DISCARDABLE
+{
+STRING_PAGESETUP_HEADERVALUE, "&n" /* FIXME */
+STRING_PAGESETUP_FOOTERVALUE, "Stran &s" /* FIXME */
+STRING_PAGESETUP_LEFTVALUE, "20 mm" /* FIXME */
+STRING_PAGESETUP_RIGHTVALUE, "20 mm" /* FIXME */
+STRING_PAGESETUP_TOPVALUE, "25 mm" /* FIXME */
+STRING_PAGESETUP_BOTTOMVALUE, "25 mm" /* FIXME */
+
+STRING_NOTEPAD, "Beležnica"
+STRING_ERROR, "NAPAKA"
+STRING_WARNING, "OPOZORILO"
+STRING_INFO, "Informacija"
+
+STRING_UNTITLED, "Neimenovana"
+
+STRING_ALL_FILES, "Vse datoteke (*.*)"
+STRING_TEXT_FILES_TXT, "Datoteke z besedilom (*.txt)"
+
+STRING_TOOLARGE, "Datoteka '%s' je prevelika za Beležnico.\n \
+Uporabite drug urejevalnik."
+STRING_NOTEXT, "Niste vnesli besedila. \
+\nVnesite besedilo in poskusite znova."
+STRING_DOESNOTEXIST, "Datoteka '%s' ne obstaja.\n\n \
+Ali želite ustvariti novo datoteko?"
+STRING_NOTSAVED, "Vsebina datoteke '%s'je bila spremenjena.\n\n \
+Ali želite shraniti spremembe?"
+STRING_NOTFOUND, "Ni mogoèe najti '%s'."
+STRING_OUT_OF_MEMORY, "Na voljo ni dovolj pomnilnika, da bi bilo mogoèe dokonèati to \
+operacijo. \nÈe ga želite sprostiti, konèajte enega ali veè programov in poskusite znova. "
+
+}
diff --git a/reactos/base/applications/notepad/res/Sk.rc b/reactos/base/applications/notepad/lang/Sk.rc
similarity index 94%
rename from reactos/base/applications/notepad/res/Sk.rc
rename to reactos/base/applications/notepad/lang/Sk.rc
index cf865c72622..ebd5f2d48d7 100644
--- a/reactos/base/applications/notepad/res/Sk.rc
+++ b/reactos/base/applications/notepad/lang/Sk.rc
@@ -1,151 +1,167 @@
-/*
- * Notepad (Slovak resources)
- *
- * Copyright 1997,98 Marcel Baur
- * Proofread 1998 by David Lee Lambert
- * Copyright 2002 Sylvain Petreolle
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * 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
- */
-
-LANGUAGE LANG_SLOVAK, SUBLANG_NEUTRAL
-
-MAIN_MENU MENU
-{
- POPUP "&File"
- BEGIN
- MENUITEM "&New...", CMD_NEW
- MENUITEM "&Open", CMD_OPEN
- MENUITEM "&Save", CMD_SAVE
- MENUITEM "Save &as...", CMD_SAVE_AS
- MENUITEM "&Print", CMD_PRINT
- MENUITEM "Page Se&tup...", CMD_PAGE_SETUP
- MENUITEM "P&rinter Setup...", CMD_PRINTER_SETUP
- MENUITEM SEPARATOR
- MENUITEM "&Exit", CMD_EXIT
- }
- POPUP "&Edit"
- BEGIN
- MENUITEM "&Undo\tCtrl+Z", CMD_UNDO
- MENUITEM SEPARATOR
- MENUITEM "Cu&t\tCtrl+X", CMD_CUT
- MENUITEM "&Copy\tCtrl+C", CMD_COPY
- MENUITEM "&Paste\tCtrl+V", CMD_PASTE
- MENUITEM "&Delete\tDel", CMD_DELETE
- MENUITEM SEPARATOR
- MENUITEM "Select &all", CMD_SELECT_ALL
- MENUITEM "&Time/Date\tF5", CMD_TIME_DATE
- MENUITEM SEPARATOR
- MENUITEM "&Wrap long lines", CMD_WRAP
- }
- POPUP "&Search"
- BEGIN
- MENUITEM "&Search", CMD_SEARCH
- MENUITEM "&Search next\tF3", CMD_SEARCH_NEXT
- }
- POPUP "&Help"
- BEGIN
- MENUITEM "&Contents", CMD_HELP_CONTENTS
- MENUITEM "&Search...", CMD_HELP_SEARCH
- MENUITEM "&Help on help", CMD_HELP_ON_HELP
- MENUITEM SEPARATOR
- POPUP "Inf&o..."
- BEGIN
- MENUITEM "&About" CMD_ABOUT
- MENUITEM "&About Wine", CMD_ABOUT_WINE
- }
- }
-}
-
-/* Dialog `Page setup' */
-
-DIALOG_PAGESETUP DIALOG 0, 0, 225, 95
-STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
-FONT 8, "MS Shell Dlg"
-CAPTION "Page Setup"
-{
-LTEXT "&Header:", 0x140, 10, 07, 40, 15
-EDITTEXT 0x141, 60, 05,110, 12, WS_BORDER | WS_TABSTOP
-LTEXT "&Footer:", 0x142, 10, 24, 40, 15
-EDITTEXT 0x143, 60, 22,110, 12, WS_BORDER | WS_TABSTOP
-
-GROUPBOX "&Margins:", 0x144, 10, 43,160, 45
-LTEXT "&Left:", 0x145, 20, 55, 30, 10, WS_CHILD
-EDITTEXT /*STRING_PAGESETUP_LEFTVALUE,*/ 0x147, 50, 55, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP
-LTEXT "&Top:", 0x148, 20, 73, 30, 10, WS_CHILD
-EDITTEXT /*STRING_PAGESETUP_TOPVALUE,*/ 0x14A, 50, 73, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP
-LTEXT "&Right:", 0x14B, 100, 55, 30, 10, WS_CHILD
-EDITTEXT /*STRING_PAGESETUP_RIGHTVALUE,*/ 0x14D, 130, 55, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP
-LTEXT "&Bottom:", 0x14E,100, 73, 30, 10, WS_CHILD
-EDITTEXT /*STRING_PAGESETUP_BOTTOMVALUE,*/ 0x150, 130, 73, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP
-
-DEFPUSHBUTTON "OK", 0x151, 180, 3, 40, 15, WS_TABSTOP
-PUSHBUTTON "Cancel", 0x152, 180, 21, 40, 15, WS_TABSTOP
-PUSHBUTTON "&Help", 0x153, 180, 39, 40, 15, WS_TABSTOP
-}
-
-IDD_ABOUTBOX DIALOG DISCARDABLE 22,16,284,170
-STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
-CAPTION "About ReactOS Notepad"
-FONT 8, "MS Shell Dlg"
-BEGIN
- CONTROL "ReactOS Notepad v1.0\r\nCopyright 1997,98 Marcel Baur \r\nCopyright 2000 Mike McCormack