diff --git a/reactos/apps/utils/notepad/Da.rc b/reactos/apps/utils/notepad/Da.rc new file mode 100644 index 00000000000..2cc3a3dd3a5 --- /dev/null +++ b/reactos/apps/utils/notepad/Da.rc @@ -0,0 +1,103 @@ +/* + * Notepad (Danish resources) + * + * Copyright 1998 Henrik Olsen + */ + +#define LANGUAGE_ID Da +#define LANGUAGE_NUMBER 6 +#define LANGUAGE_MENU_ITEM "&Dansk" + +/* Menu */ + +#define MENU_FILE "&Filef" +#define MENU_FILE_NEW "&Ny..." +#define MENU_FILE_OPEN "Å&bn\tEnter" +#define MENU_FILE_SAVE "&Gem" +#define MENU_FILE_SAVEAS "Gem so&m..." +#define MENU_FILE_PRINT "&Udskriv" +#define MENU_FILE_PAGESETUP "Side&opsætning..." +#define MENU_FILE_PRINTSETUP "&Indstil printer..." +#define MENU_FILE_EXIT "&Afslut" + +#define MENU_EDIT "&Rediger" +#define MENU_EDIT_UNDO "&Fortryd\tCtrl+Z" +#define MENU_EDIT_CUT "&Klip\tCtrl+X" +#define MENU_EDIT_COPY "K&opier\tCtrl+C" +#define MENU_EDIT_PASTE "Sæt &ind\tCtrl+V" +#define MENU_EDIT_DELETE "&Slet\tDel" +#define MENU_EDIT_SELECTALL "Marker &alt" +#define MENU_EDIT_TIMEDATE "&Dato/tid\tF5" +#define MENU_EDIT_WRAP "Automatisk &linjeskift" + +#define MENU_SEARCH "&Søg" +#define MENU_SEARCH_SEARCH "&Søg..." +#define MENU_SEARCH_NEXT "&Find næste\tF3" + +#define MENU_LANGUAGE "S&prog" + +#define MENU_HELP "&Hjælp" +#define MENU_HELP_CONTENTS "&Indhold" +#define MENU_HELP_SEARCH "&Søg efter hjælp om..." +#define MENU_HELP_HELP_ON_HELP "&Brug af Hjælp" + +#define MENU_INFO "&Om Notesblok..." +#define MENU_INFO_LICENSE "&Licens" +#define MENU_INFO_NO_WARRANTY "&NO WARRANTY" +#define MENU_INFO_ABOUT_WINE "&Om WINE" + + +/* Dialogs */ + +#define DIALOG_OK "OK" +#define DIALOG_CANCEL "Annuller" +#define DIALOG_BROWSE "&Gennemse..." +#define DIALOG_HELP "&Hjælp" + +#define DIALOG_PAGESETUP_CAPTION "Sideopsætning" +#define DIALOG_PAGESETUP_HEAD "&Sidehoved:" +#define DIALOG_PAGESETUP_TAIL "Side&fod:" +#define DIALOG_PAGESETUP_MARGIN "Margener:" +#define DIALOG_PAGESETUP_LEFT "&Venstre:" +#define DIALOG_PAGESETUP_RIGHT "&Højre:" +#define DIALOG_PAGESETUP_TOP "&Top:" +#define DIALOG_PAGESETUP_BOTTOM "&Bund:" + + +/* Strings */ + +#define STRING_PAGESETUP_HEADERVALUE "&n" /* FIXME */ +#define STRING_PAGESETUP_FOOTERVALUE "Page &s" /* FIXME */ +#define STRING_PAGESETUP_LEFTVALUE "20 mm" /* FIXME */ +#define STRING_PAGESETUP_RIGHTVALUE "20 mm" /* FIXME */ +#define STRING_PAGESETUP_TOPVALUE "25 mm" /* FIXME */ +#define STRING_PAGESETUP_BOTTOMVALUE "25 mm" /* FIXME */ + +#define STRING_NOTEPAD "Notesblok" +#define STRING_ERROR "FEJL" +#define STRING_WARNING "ADVARSEL" +#define STRING_INFO "Information" + +#define STRING_UNTITLED "(ikke-navngivet)" + +#define STRING_ALL_FILES "Alle filer (*.*)" +#define STRING_TEXT_FILES_TXT "Tekst filer (*.txt)" + +#define STRING_TOOLARGE "Filen '%s' er for stor til Notesblok. \ +\nBrug en anden editor til at redigere filen." + +#define STRING_NOTEXT "Du har ikke skrevet noget tekst. \ +\nSkriv noget tekst, og prøv så igen" + +/* FIXME: */ + +#define STRING_NOTSAVED "Filen '%s'\n has been modified.\n\n \ +Would you like to save the changes ?" + +#define STRING_NOTFOUND "Kan ikke finde '%s'." + +#define 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." + +#include "notepad.rc" diff --git a/reactos/apps/utils/notepad/De.rc b/reactos/apps/utils/notepad/De.rc new file mode 100644 index 00000000000..c8af06dbcd3 --- /dev/null +++ b/reactos/apps/utils/notepad/De.rc @@ -0,0 +1,104 @@ +/* + * Notepad (German resources) + * + * Copyright 1997,98 Marcel Baur + * To be distributed under the Wine License + */ + +#define LANGUAGE_ID De +#define LANGUAGE_NUMBER 2 +#define LANGUAGE_MENU_ITEM "&Deutsch" + + +/* Menu */ + +#define MENU_FILE "&Datei" +#define MENU_FILE_NEW "&Neu..." +#define MENU_FILE_OPEN "Ö&ffnen..." +#define MENU_FILE_SAVE "&Speichern" +#define MENU_FILE_SAVEAS "Speichern &unter..." +#define MENU_FILE_PRINT "&Drucken" +#define MENU_FILE_PAGESETUP "Seite ein&richten..." +#define MENU_FILE_PRINTSETUP "Drucker&einrichtung..." +#define MENU_FILE_EXIT "&Beenden" + +#define MENU_EDIT "&Bearbeiten" +#define MENU_EDIT_UNDO "&Rückgängig\tStrg+Z" +#define MENU_EDIT_CUT "&Ausschneiden\tStrg+X" +#define MENU_EDIT_COPY "&Kopieren\tStrg+C" +#define MENU_EDIT_PASTE "&Einfügen\tStrg+V" +#define MENU_EDIT_DELETE "&Löschen\tEntf" +#define MENU_EDIT_SELECTALL "Alles &markieren" +#define MENU_EDIT_TIMEDATE "&Uhrzeit/Datum\tF5" +#define MENU_EDIT_WRAP "&Zeilenumbruch" + +#define MENU_SEARCH "&Suchen" +#define MENU_SEARCH_SEARCH "Suchen..." +#define MENU_SEARCH_NEXT "&Weitersuchen\tF3" + +#define MENU_LANGUAGE "&Sprache" + +#define MENU_HELP "&Hilfe" +#define MENU_HELP_CONTENTS "&Inhalt" +#define MENU_HELP_SEARCH "&Suchen..." +#define MENU_HELP_HELP_ON_HELP "&Hilfe benutzen" + +#define MENU_INFO "Inf&o..." +#define MENU_INFO_LICENSE "&Lizenz" +#define MENU_INFO_NO_WARRANTY "&KEINE GARANTIE" +#define MENU_INFO_ABOUT_WINE "&Über WINE" + + +/* Dialogs */ + +#define DIALOG_OK "OK" +#define DIALOG_CANCEL "Abbrechen" +#define DIALOG_BROWSE "&Durchsuchen..." +#define DIALOG_HELP "&Hilfe" + +#define DIALOG_PAGESETUP_CAPTION "Seite einrichten" +#define DIALOG_PAGESETUP_HEAD "&Kopfzeile:" +#define DIALOG_PAGESETUP_TAIL "&Fußzeile:" +#define DIALOG_PAGESETUP_MARGIN "Ränder" +#define DIALOG_PAGESETUP_LEFT "&Links:" +#define DIALOG_PAGESETUP_RIGHT "&Rechts:" +#define DIALOG_PAGESETUP_TOP "&Oben:" +#define DIALOG_PAGESETUP_BOTTOM "&Unten:" + + +/* Strings */ + +#define STRING_PAGESETUP_HEADERVALUE "&n" +#define STRING_PAGESETUP_FOOTERVALUE "Page &s" +#define STRING_PAGESETUP_LEFTVALUE "20 mm" +#define STRING_PAGESETUP_RIGHTVALUE "20 mm" +#define STRING_PAGESETUP_TOPVALUE "25 mm" +#define STRING_PAGESETUP_BOTTOMVALUE "25 mm" + +#define STRING_NOTEPAD "Editor" +#define STRING_ERROR "FEHLER" +#define STRING_WARNING "ACHTUNG" +#define STRING_INFO "Information" + +#define STRING_UNTITLED "(unbenannt)" + +#define STRING_ALL_FILES "Alle Dateien (*.*)" +#define STRING_TEXT_FILES_TXT "Textdateien (*.txt)" + +#define STRING_TOOLARGE "'%s' ist zu gross für den Editor\n \ +Benutzen Sie bitte einen anderen Editor, um diese Datei zu bearbeiten." + +#define STRING_NOTEXT "Sie haben keinen Text eingegeben, der \ +gespeichert\n werden könnte. Geben Sie Text ein, und versuchen Sie es \ +\nerneut." + +#define STRING_NOTSAVED "Datei %s\n wurde geaendert.\n\n \ +Moechten Sie die Aenderungen speichern ?" + +#define STRING_NOTFOUND "'%s' kann nicht gefunden werden." + +#define 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." + +#include "notepad.rc" diff --git a/reactos/apps/utils/notepad/En.rc b/reactos/apps/utils/notepad/En.rc new file mode 100644 index 00000000000..1be4cb57fa9 --- /dev/null +++ b/reactos/apps/utils/notepad/En.rc @@ -0,0 +1,103 @@ +/* + * Notepad (English resources) + * + * Copyright 1997,98 Marcel Baur + * Proofread 1998 by David Lee Lambert + */ + +#define LANGUAGE_ID En +#define LANGUAGE_NUMBER 0 +#define LANGUAGE_MENU_ITEM "&English" + + +/* Menu */ + +#define MENU_FILE "&File" +#define MENU_FILE_NEW "&New..." +#define MENU_FILE_OPEN "&Open" +#define MENU_FILE_SAVE "&Save" +#define MENU_FILE_SAVEAS "Save &as..." +#define MENU_FILE_PRINT "&Print" +#define MENU_FILE_PAGESETUP "Page Se&tup..." +#define MENU_FILE_PRINTSETUP "P&rinter Setup..." +#define MENU_FILE_EXIT "&Exit" + +#define MENU_EDIT "&Edit" +#define MENU_EDIT_UNDO "&Undo\tCtrl+Z" +#define MENU_EDIT_CUT "Cu&t\tCtrl+X" +#define MENU_EDIT_COPY "&Copy\tCtrl+C" +#define MENU_EDIT_PASTE "&Paste\tCtrl+V" +#define MENU_EDIT_DELETE "&Delete\tDel" +#define MENU_EDIT_SELECTALL "Select &all" +#define MENU_EDIT_TIMEDATE "&Time/Date\tF5" +#define MENU_EDIT_WRAP "&Wrap long lines" + +#define MENU_SEARCH "&Search" +#define MENU_SEARCH_SEARCH "Search..." +#define MENU_SEARCH_NEXT "&Search next\tF3" + +#define MENU_LANGUAGE "&Language" + +#define MENU_HELP "&Help" +#define MENU_HELP_CONTENTS "&Contents" +#define MENU_HELP_SEARCH "&Search..." +#define MENU_HELP_HELP_ON_HELP "&Help on help" + +#define MENU_INFO "Inf&o..." +#define MENU_INFO_LICENSE "&License" +#define MENU_INFO_NO_WARRANTY "&NO WARRANTY" +#define MENU_INFO_ABOUT_WINE "&About Wine" + + +/* Dialogs */ + +#define DIALOG_OK "OK" +#define DIALOG_CANCEL "Cancel" +#define DIALOG_BROWSE "&Browse..." +#define DIALOG_HELP "&Help" + +#define DIALOG_PAGESETUP_CAPTION "Page Setup" +#define DIALOG_PAGESETUP_HEAD "&Header:" +#define DIALOG_PAGESETUP_TAIL "&Footer:" +#define DIALOG_PAGESETUP_MARGIN "&Margins:" +#define DIALOG_PAGESETUP_LEFT "&Left:" +#define DIALOG_PAGESETUP_RIGHT "&Right:" +#define DIALOG_PAGESETUP_TOP "&Top:" +#define DIALOG_PAGESETUP_BOTTOM "&Bottom:" + + +/* Strings */ + +#define STRING_PAGESETUP_HEADERVALUE "&n" /* FIXME */ +#define STRING_PAGESETUP_FOOTERVALUE "Page &s" /* FIXME */ +#define STRING_PAGESETUP_LEFTVALUE "20 mm" /* FIXME */ +#define STRING_PAGESETUP_RIGHTVALUE "20 mm" /* FIXME */ +#define STRING_PAGESETUP_TOPVALUE "25 mm" /* FIXME */ +#define STRING_PAGESETUP_BOTTOMVALUE "25 mm" /* FIXME */ + +#define STRING_NOTEPAD "Notepad" +#define STRING_ERROR "ERROR" +#define STRING_WARNING "WARNING" +#define STRING_INFO "Information" + +#define STRING_UNTITLED "(untitled)" + +#define STRING_ALL_FILES "All files (*.*)" +#define STRING_TEXT_FILES_TXT "Text files (*.txt)" + +#define STRING_TOOLARGE "File '%s' is too large for notepad.\n \ +Please use a different editor." + +#define STRING_NOTEXT "You didn't enter any text. \ +\nPlease type something and try again" + +#define STRING_NOTSAVED "File '%s'\nhas been modified\n\n \ +Would you like to save the changes ?" + +#define STRING_NOTFOUND "'%s' can not be found." + +#define STRING_OUT_OF_MEMORY "Not enough memory to complete this \ +task. \nClose one or more applications to increase the amount of \nfree \ +memory." + +#include "notepad.rc" diff --git a/reactos/apps/utils/notepad/Es.rc b/reactos/apps/utils/notepad/Es.rc new file mode 100644 index 00000000000..c908ad2e98b --- /dev/null +++ b/reactos/apps/utils/notepad/Es.rc @@ -0,0 +1,106 @@ +/* + * Notepad (English resources) + * + * Copyright 1997,98 Marcel Baur + * Proofread 1998 by David Lee Lambert + * Proofread 1999 by Jose Marcos Lopez + */ + +#define LANGUAGE_ID Es +#define LANGUAGE_NUMBER d +#define LANGUAGE_MENU_ITEM "Castellano" + + +/* Menu */ + +#define MENU_FILE "&Archivo" +#define MENU_FILE_NEW "&Nuevo" +#define MENU_FILE_OPEN "&Abrir" +#define MENU_FILE_SAVE "&Guardar" +#define MENU_FILE_SAVEAS "Guardar co&mo..." +#define MENU_FILE_PAGESETUP "&Configurar página..." +#define MENU_FILE_PRINT "&Imprimir" +#define MENU_FILE_PRINTSETUP "&Configuración impresora..." +#define MENU_FILE_EXIT "&Salir" + +#define MENU_EDIT "&Editar" +#define MENU_EDIT_UNDO "&Deshacer\tCtrl+Z" +#define MENU_EDIT_CUT "Cor&tar\tCtrl+X" +#define MENU_EDIT_COPY "&Copiar\tCtrl+C" +#define MENU_EDIT_PASTE "&Pegar\tCtrl+V" +#define MENU_EDIT_DELETE "&Borrar\tDel" +#define MENU_EDIT_SELECTALL "Seleccionar t&odo" +#define MENU_EDIT_TIMEDATE "&Hora y Fecha\tF5" +#define MENU_EDIT_WRAP "&Ajuste de línea automático" + +#define MENU_SEARCH "&Buscar" +#define MENU_SEARCH_SEARCH "&Buscar..." +#define MENU_SEARCH_NEXT "Buscar &siguiente\tF3" + +#define MENU_LANGUAGE "&Idioma" + +#define MENU_HELP "&Ayuda" +#define MENU_HELP_CONTENTS "&Indice" +#define MENU_HELP_SEARCH "&Buscar..." +#define MENU_HELP_HELP_ON_HELP "&Ayuda sobre la ayuda" + +#define MENU_INFO "Inf&ormación..." +#define MENU_INFO_LICENSE "&Licencia" +#define MENU_INFO_NO_WARRANTY "SIN &GARANTÍA" +#define MENU_INFO_ABOUT_WINE "&Acerca de Wine" + + +/* Dialogs */ + +#define DIALOG_OK "OK" +#define DIALOG_CANCEL "Cancelar" +#define DIALOG_BROWSE "&Buscar..." +#define DIALOG_HELP "&Ayuda" + +#define DIALOG_PAGESETUP_CAPTION "&Ajuste de página" +#define DIALOG_PAGESETUP_HEAD "&Cabecera:" +#define DIALOG_PAGESETUP_TAIL "&Pié:" +#define DIALOG_PAGESETUP_MARGIN "&Margenes:" +#define DIALOG_PAGESETUP_LEFT "&Izquierda:" +#define DIALOG_PAGESETUP_RIGHT "&Derecha:" +#define DIALOG_PAGESETUP_TOP "A&rriba:" +#define DIALOG_PAGESETUP_BOTTOM "Aba&jo:" + + +/* Strings */ + +#define STRING_PAGESETUP_HEADERVALUE "&n" /* FIXME */ +#define STRING_PAGESETUP_FOOTERVALUE "Página &s" /* FIXME */ +#define STRING_PAGESETUP_LEFTVALUE "20 mm" /* FIXME */ +#define STRING_PAGESETUP_RIGHTVALUE "20 mm" /* FIXME */ +#define STRING_PAGESETUP_TOPVALUE "25 mm" /* FIXME */ +#define STRING_PAGESETUP_BOTTOMVALUE "25 mm" /* FIXME */ + +#define STRING_NOTEPAD "Bloc de Notas" +#define STRING_ERROR "ERROR" +#define STRING_WARNING "CUIDADO" +#define STRING_INFO "Información" + +#define STRING_UNTITLED "(sin título)" + +#define STRING_ALL_FILES "Todos los archivos (*.*)" +#define STRING_TEXT_FILES_TXT "Documentos de texto (*.txt)" + +#define STRING_TOOLARGE "El archivo '%s' es demasiado grande para el bloc de notas.\n \ +Use otro editor." + +#define STRING_NOTEXT "Ud. no escribió nada. \ +\nPor favor escriba algo y pruebe de nuevo" + +/* FIXME */ + +#define STRING_NOTSAVED "El texto en el archivo '%s' ha cambiado\n\n \ +¿Desea guardar los cambios?" + +#define STRING_NOTFOUND "no se encontró '%s'." + +#define 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." + +#include "notepad.rc" diff --git a/reactos/apps/utils/notepad/Fi.rc b/reactos/apps/utils/notepad/Fi.rc new file mode 100644 index 00000000000..877d16078b6 --- /dev/null +++ b/reactos/apps/utils/notepad/Fi.rc @@ -0,0 +1,104 @@ +/* + * Notepad (Finnish resources) + * + * Copyright 1999 by Jukka Iivonen + */ + +#define LANGUAGE_ID Fi +#define LANGUAGE_NUMBER b +#define LANGUAGE_MENU_ITEM "&Finnish" + + +/* Menu */ + +#define MENU_FILE "&Tiedosto" +#define MENU_FILE_NEW "&Uusi..." +#define MENU_FILE_OPEN "&Avaa" +#define MENU_FILE_SAVE "Ta&lleta" +#define MENU_FILE_SAVEAS "Talleta &nimellä..." +#define MENU_FILE_PRINT "T&ulosta" +#define MENU_FILE_PAGESETUP "&Sivun asetukset..." +#define MENU_FILE_PRINTSETUP "&Kirjoittimen asetukset..." +#define MENU_FILE_EXIT "&Poistu" + +#define MENU_EDIT "&Muokkaa" +#define MENU_EDIT_UNDO "&Palauta\tCtrl+Z" +#define MENU_EDIT_CUT "&Leikkaa\tCtrl+X" +#define MENU_EDIT_COPY "&Kopioi\tCtrl+C" +#define MENU_EDIT_PASTE "L&iitä\tCtrl+V" +#define MENU_EDIT_DELETE "P&oista\tDel" +#define MENU_EDIT_SELECTALL "&Valitse kaikki" +#define MENU_EDIT_TIMEDATE "&Aika/Päivämäärä\tF5" +#define MENU_EDIT_WRAP "Ka&tkaise pitkä rivi" + +#define MENU_SEARCH "&Etsi" +#define MENU_SEARCH_SEARCH "Etsi..." +#define MENU_SEARCH_NEXT "Etsi &seuraava\tF3" + +#define MENU_LANGUAGE "&Kieli" + +#define MENU_HELP "&Apua" +#define MENU_HELP_CONTENTS "&Sisältö" +#define MENU_HELP_SEARCH "&Etsi..." +#define MENU_HELP_HELP_ON_HELP "Apua &Opastuksesta" + +#define MENU_INFO "Inf&o..." +#define MENU_INFO_LICENSE "&Lisenssi" +#define MENU_INFO_NO_WARRANTY "&EI TAKUUTA" +#define MENU_INFO_ABOUT_WINE "&Tietoja Wine:ista" + + +/* Dialogs */ + +#define DIALOG_OK "OK" +#define DIALOG_CANCEL "Peruuta" +#define DIALOG_BROWSE "&Selaa..." +#define DIALOG_HELP "&Apua" + +#define DIALOG_PAGESETUP_CAPTION "Sivun asetukset" +#define DIALOG_PAGESETUP_HEAD "&Yläotsikko:" +#define DIALOG_PAGESETUP_TAIL "Alao&tsikko:" +#define DIALOG_PAGESETUP_MARGIN "&Marginaali:" +#define DIALOG_PAGESETUP_LEFT "&Vasen:" +#define DIALOG_PAGESETUP_RIGHT "&Oikea:" +#define DIALOG_PAGESETUP_TOP "Y&lä:" +#define DIALOG_PAGESETUP_BOTTOM "&Ala:" + + +/* Strings */ + +#define STRING_PAGESETUP_HEADERVALUE "&n" /* FIXME */ +#define STRING_PAGESETUP_FOOTERVALUE "Sivu &s" /* FIXME */ +#define STRING_PAGESETUP_LEFTVALUE "20 mm" /* FIXME */ +#define STRING_PAGESETUP_RIGHTVALUE "20 mm" /* FIXME */ +#define STRING_PAGESETUP_TOPVALUE "25 mm" /* FIXME */ +#define STRING_PAGESETUP_BOTTOMVALUE "25 mm" /* FIXME */ + +#define STRING_NOTEPAD "Notepad" +#define STRING_ERROR "VIRHE" +#define STRING_WARNING "VAROITUS" +#define STRING_INFO "Tiedoitus" + +#define STRING_UNTITLED "(otsikoimaton)" + +#define STRING_ALL_FILES "Kaikki tiedostot (*.*)" +#define STRING_TEXT_FILES_TXT "Teksti tiedostot (*.txt)" + +#define STRING_TOOLARGE "Tiedosto '%s' on liian suuri.\n \ +Please use a different editor." + +#define STRING_NOTEXT "Et syöttänyt lainkaan tekstiä. \ +\nKirjoita jotain ja yritä uudelleen" + +/* FIXME */ + +#define STRING_NOTSAVED "File '%s'\nhas been modified\n\n \ +Would you like to save your changes ?" + +#define STRING_NOTFOUND "'%s' ei löydy." + +#define STRING_OUT_OF_MEMORY "Muistia ei ole riittävästi tämän \ +\ntehtävän tekemiseksi. Sulje jokin sovellus vapauttaaksesi\n \ +muistia." + +#include "notepad.rc" diff --git a/reactos/apps/utils/notepad/Fr.rc b/reactos/apps/utils/notepad/Fr.rc new file mode 100644 index 00000000000..2778e6ba7a5 --- /dev/null +++ b/reactos/apps/utils/notepad/Fr.rc @@ -0,0 +1,108 @@ +/* + * Notepad (French resources) + * + * Copyright 1997,98 Marcel Baur + * Translation by Laurent Buffler + */ + +#define LANGUAGE_ID Fr +#define LANGUAGE_NUMBER 3 +#define LANGUAGE_MENU_ITEM "&Français" + + +/* Menu */ + +#define MENU_FILE "&Fichier" +#define MENU_FILE_NEW "&Nouveau..." +#define MENU_FILE_OPEN "&Ouvrir" +#define MENU_FILE_SAVE "&Sauver" +#define MENU_FILE_SAVEAS "S&auver sous..." +#define MENU_FILE_PRINT "Im&primer" +#define MENU_FILE_PAGESETUP "&Mise en page..." +#define MENU_FILE_PRINTSETUP "Imp&rimante..." +#define MENU_FILE_EXIT "&Quitter" + +#define MENU_EDIT "&Edition" +#define MENU_EDIT_UNDO "&Annuler\tCtrl+Z" +#define MENU_EDIT_CUT "Coupe&r\tCtrl+X" +#define MENU_EDIT_COPY "&Copier\tCtrl+C" +#define MENU_EDIT_PASTE "C&oller\tCtrl+V" +#define MENU_EDIT_DELETE "E&ffacer\tDel" +#define MENU_EDIT_SELECTALL "Tout &selectionner" +#define MENU_EDIT_TIMEDATE "&Heure/Date\tF5" +#define MENU_EDIT_WRAP "&Retour à la ligne" + +#define MENU_SEARCH "&Recherche" +#define MENU_SEARCH_SEARCH "&Chercher..." +#define MENU_SEARCH_NEXT "&Suivant\tF3" + +#define MENU_LANGUAGE "&Langue" + +#define MENU_HELP "&Aide" +#define MENU_HELP_CONTENTS "&Sommaire" +#define MENU_HELP_SEARCH "&Chercher..." +#define MENU_HELP_HELP_ON_HELP "&Aide sur l'aide" + +#define MENU_INFO "Inf&o..." +#define MENU_INFO_LICENSE "&License" +#define MENU_INFO_NO_WARRANTY "&SANS GARANTIE" +#define MENU_INFO_ABOUT_WINE "&A propos de Wine" + + +/* Dialogs */ + +#define DIALOG_OK "OK" +#define DIALOG_CANCEL "Annuler" +#define DIALOG_BROWSE "&Parcourir..." +#define DIALOG_HELP "&Aide" + +#define DIALOG_PAGESETUP_CAPTION "Mise en page" +#define DIALOG_PAGESETUP_HEAD "&En-tête:" +#define DIALOG_PAGESETUP_TAIL "&Pied de page:" +#define DIALOG_PAGESETUP_MARGIN "&Marges:" +#define DIALOG_PAGESETUP_LEFT "&Gauche:" +#define DIALOG_PAGESETUP_RIGHT "&Droite:" +#define DIALOG_PAGESETUP_TOP "&Haut:" +#define DIALOG_PAGESETUP_BOTTOM "&Bas:" + + +/* Strings */ + +#define STRING_PAGESETUP_HEADERVALUE "&n" /* FIXME */ +#define STRING_PAGESETUP_FOOTERVALUE "Page &s" /* FIXME */ +#define STRING_PAGESETUP_LEFTVALUE "20 mm" /* FIXME */ +#define STRING_PAGESETUP_RIGHTVALUE "20 mm" /* FIXME */ +#define STRING_PAGESETUP_TOPVALUE "25 mm" /* FIXME */ +#define STRING_PAGESETUP_BOTTOMVALUE "25 mm" /* FIXME */ + +#define STRING_NOTEPAD "Notepad" +#define STRING_ERROR "ERREUR" +#define STRING_WARNING "AVERTISSEMENT" +#define STRING_INFO "Information" + +#define STRING_UNTITLED "(sans titre)" + +#define STRING_ALL_FILES "Tous (*.*)" +#define STRING_TEXT_FILES_TXT "Fichiers texte (*.txt)" + +#define STRING_TOOLARGE "Le fichier '%s' est trop grand pour le bloc note.\n \ +Veuillez utiliser un autre éditeur." + +#define STRING_NOTEXT "Vous n'avez pas entré de texte. \ +\nVeuillez taper quelque chose et recommencer" + +/* FIXME */ + +#define STRING_NOTSAVED "Le fichier '%s'\n\n a change\n \ +Would you like to save your changes ?" + +#define STRING_NOTFOUND "'%s' introuvable." + +#define STRING_OUT_OF_MEMORY "Pas assez de mémoire pour finir cette tâche. \ +\nFermez une ou plusier applications pour libérer \n \ +de la mémoire." + +#include "notepad.rc" + +/* Strings */ + diff --git a/reactos/apps/utils/notepad/License_En.c b/reactos/apps/utils/notepad/License_En.c new file mode 100644 index 00000000000..511bce40a7a --- /dev/null +++ b/reactos/apps/utils/notepad/License_En.c @@ -0,0 +1,48 @@ +#include "windows.h" +#include "license.h" + +static CHAR LicenseCaption_En[] = "LICENSE"; +static CHAR License_En[] = "\ +You may without charge, royalty or other payment, copy and\ + distribute copies of this work and derivative works of this work\ + in source or binary form provided that: (1)\ + you appropriately publish on each copy an appropriate copyright\ + notice; (2) faithfully reproduce all prior copyright notices\ + included in the original work (you may also add your own\ + copyright notice); and (3) agree to indemnify and hold all prior\ + authors, copyright holders and licensors of the work harmless\ + from and against all damages arising from use of the work.\ +\n\ +You may distribute sources of derivative works of the work\ + provided that (1) (a) all source files of the original work that\ + have been modified, (b) all source files of the derivative work\ + that contain any party of the original work, and (c) all source\ + files of the derivative work that are necessary to compile, link\ + and run the derivative work without unresolved external calls and\ + with the same functionality of the original work (\"Necessary\ + Sources\") carry a prominent notice explaining the nature and date\ + of the modification and/or creation. You are encouraged to make\ + the Necessary Sources available under this license in order to\ + further the development and acceptance of the work.\ +\n\ +EXCEPT AS OTHERWISE RESTRICTED BY LAW, THIS WORK IS PROVIDED\ + WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES OF ANY KIND, INCLUDING\ + BUT NOT LIMITED TO, ANY IMPLIED WARRANTIES OF FITNESS FOR A\ + PARTICULAR PURPOSE, MERCHANTABILITY OR TITLE. EXCEPT AS\ + OTHERWISE PROVIDED BY LAW, NO AUTHOR, COPYRIGHT HOLDER OR\ + LICENSOR SHALL BE LIABLE TO YOU FOR DAMAGES OF ANY KIND, EVEN IF\ + ADVISED OF THE POSSIBILITY OF SUCH DAMAGES."; + +static CHAR NoWarrantyCaption_En[] = "NO WARRANTY"; +static CHAR NoWarranty_En[] = "\ +EXCEPT AS OTHERWISE RESTRICTED BY LAW, THIS WORK IS PROVIDED\ + WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES OF ANY KIND, INCLUDING\ + BUT NOT LIMITED TO, ANY IMPLIED WARRANTIES OF FITNESS FOR A\ + PARTICULAR PURPOSE, MERCHANTABILITY OR TITLE. EXCEPT AS\ + OTHERWISE PROVIDED BY LAW, NO AUTHOR, COPYRIGHT HOLDER OR\ + LICENSOR SHALL BE LIABLE TO YOU FOR DAMAGES OF ANY KIND, EVEN IF\ + ADVISED OF THE POSSIBILITY OF SUCH DAMAGES."; + +LICENSE WineLicense_En = {License_En, LicenseCaption_En, + NoWarranty_En, NoWarrantyCaption_En}; + diff --git a/reactos/apps/utils/notepad/Makefile b/reactos/apps/utils/notepad/Makefile new file mode 100644 index 00000000000..bbed508f129 --- /dev/null +++ b/reactos/apps/utils/notepad/Makefile @@ -0,0 +1,41 @@ +# +# +# +PATH_TO_TOP = ../.. + +PROGS = notepad + +OBJECTS = dialog.o language.o license.o License_En.o main.o search.o rsrc.coff + +LIBS = ../../dk/w32/lib/kernel32.a ../../dk/w32/lib/gdi32.a \ +../../dk/w32/lib/libcomdlg32.a + +CFLAGS = + +all: $(PROGS:%=%.exe) + +.phony: all + +clean: + - $(RM) *.o *.coff *.exe *.sym + +.phony: clean + +install: $(PROGS:%=$(FLOPPY_DIR)/apps/%.exe) + +$(PROGS:%=$(FLOPPY_DIR)/apps/%.exe): $(FLOPPY_DIR)/apps/%.exe: %.exe + $(CP) $*.exe $(FLOPPY_DIR)/apps/$*.exe + +dist: $(PROGS:%=../../$(DIST_DIR)/apps/%.exe) + +$(PROGS:%=../../$(DIST_DIR)/apps/%.exe): ../../$(DIST_DIR)/apps/%.exe: %.exe + $(CP) $*.exe ../../$(DIST_DIR)/apps/$*.exe + +notepad.exe: $(OBJECTS) + $(CC) $(CFLAGS) -Wl,--subsystem,windows $(OBJECTS) $(LIBS) -o notepad.exe + $(NM) --numeric-sort notepad.exe > notepad.sym + +%.coff: %.rc + $(RC) $(RCINC) $< -o $@ + +include ../../rules.mak diff --git a/reactos/apps/utils/notepad/Pt.rc b/reactos/apps/utils/notepad/Pt.rc new file mode 100644 index 00000000000..3f41d59fdeb --- /dev/null +++ b/reactos/apps/utils/notepad/Pt.rc @@ -0,0 +1,102 @@ +/* + * Notepad (English resources) + * + * Copyright 1999 Marcel Baur + */ + +#define LANGUAGE_ID Pt +#define LANGUAGE_NUMBER 16 +#define LANGUAGE_MENU_ITEM "&Português" + + +/* Menu */ + +#define MENU_FILE "&Arquivo" +#define MENU_FILE_NEW "&Novo..." +#define MENU_FILE_OPEN "A&brir" +#define MENU_FILE_SAVE "&Salvar" +#define MENU_FILE_SAVEAS "Salvar &como..." +#define MENU_FILE_PRINT "&Imprimir" +#define MENU_FILE_PAGESETUP "C&onfigurar Página..." +#define MENU_FILE_PRINTSETUP "Configurar I&mpressora..." +#define MENU_FILE_EXIT "&Sair" + +#define MENU_EDIT "&Editar" +#define MENU_EDIT_UNDO "&Desfazer\tCtrl+Z" +#define MENU_EDIT_CUT "C&ortar\tCtrl+X" +#define MENU_EDIT_COPY "&Copiar\tCtrl+C" +#define MENU_EDIT_PASTE "Co&lar\tCtrl+V" +#define MENU_EDIT_DELETE "&Delete\tDel" +#define MENU_EDIT_SELECTALL "Selecionar &Tudo" +#define MENU_EDIT_TIMEDATE "&Data/Hora\tF5" +#define MENU_EDIT_WRAP "&Quebrar linhas longas" + +#define MENU_SEARCH "&Pesquisa" +#define MENU_SEARCH_SEARCH "Pesquisar..." +#define MENU_SEARCH_NEXT "&Procurar Próxima\tF3" + +#define MENU_LANGUAGE "&Linguagem" + +#define MENU_HELP "&Ajuda" +#define MENU_HELP_CONTENTS "&Conteúdo" +#define MENU_HELP_SEARCH "&Procurar..." +#define MENU_HELP_HELP_ON_HELP "&Ajuda na ajuda" + +#define MENU_INFO "Inf&ormações..." +#define MENU_INFO_LICENSE "&Licença" +#define MENU_INFO_NO_WARRANTY "&SEM GARANTIA" +#define MENU_INFO_ABOUT_WINE "&Sobre Wine" + + +/* Dialogs */ + +#define DIALOG_OK "OK" +#define DIALOG_CANCEL "Cancelar" +#define DIALOG_BROWSE "&Procurar..." +#define DIALOG_HELP "&Ajuda" + +#define DIALOG_PAGESETUP_CAPTION "Configurar Página" +#define DIALOG_PAGESETUP_HEAD "&Cabeçalho:" +#define DIALOG_PAGESETUP_TAIL "&Rodapé:" +#define DIALOG_PAGESETUP_MARGIN "&Margens:" +#define DIALOG_PAGESETUP_LEFT "&Esquerda:" +#define DIALOG_PAGESETUP_RIGHT "&Direita:" +#define DIALOG_PAGESETUP_TOP "&Superior:" +#define DIALOG_PAGESETUP_BOTTOM "&Inferior:" + + +/* Strings */ + +#define STRING_PAGESETUP_HEADERVALUE "&n" /* FIXME */ +#define STRING_PAGESETUP_FOOTERVALUE "Página &s" /* FIXME */ +#define STRING_PAGESETUP_LEFTVALUE "20 mm" /* FIXME */ +#define STRING_PAGESETUP_RIGHTVALUE "20 mm" /* FIXME */ +#define STRING_PAGESETUP_TOPVALUE "25 mm" /* FIXME */ +#define STRING_PAGESETUP_BOTTOMVALUE "25 mm" /* FIXME */ + +#define STRING_NOTEPAD "Notepad" +#define STRING_ERROR "ERRO" +#define STRING_WARNING "AVISO" +#define STRING_INFO "Informação" + +#define STRING_UNTITLED "(sem nome)" + +#define STRING_ALL_FILES "Todos os arquivos (*.*)" +#define STRING_TEXT_FILES_TXT "Arquivos texto (*.txt)" + +#define STRING_TOOLARGE "Arquivo '%s' é muito longo para o notepad.\n \ +Por favor use um editor diferente." + +#define STRING_NOTEXT "Você não digitou nenhum texto. \ +\nPor favor digite alguma coisa e tente novamente" + +#define STRING_NOTSAVED "Arquivo '%s'\nfoi modificado\n\n \ +Gostaria de salvar as alteraçÕes ?" + +#define STRING_NOTFOUND "'%s' não pode ser encontrado." + +#define 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." + +#include "notepad.rc" diff --git a/reactos/apps/utils/notepad/Sk.rc b/reactos/apps/utils/notepad/Sk.rc new file mode 100644 index 00000000000..3d58a8619cd --- /dev/null +++ b/reactos/apps/utils/notepad/Sk.rc @@ -0,0 +1,103 @@ +/* + * Notepad (English resources) + * + * Copyright 1997,98 Marcel Baur + * Proofread 1998 by David Lee Lambert + */ + +#define LANGUAGE_ID Sk +#define LANGUAGE_NUMBER 10 +#define LANGUAGE_MENU_ITEM "&Slovensky" + + +/* Menu */ + +#define MENU_FILE "&Súbor" +#define MENU_FILE_NEW "&Nový..." +#define MENU_FILE_OPEN "&Otvori" +#define MENU_FILE_SAVE "U&loži" +#define MENU_FILE_SAVEAS "Ulož&i ako..." +#define MENU_FILE_PRINT "&Tlaèi" +#define MENU_FILE_PAGESETUP "&Nastavenie tlaèe..." +#define MENU_FILE_PRINTSETUP "Nastavenie tlaèiar&ne..." +#define MENU_FILE_EXIT "U&konèi" + +#define MENU_EDIT "&Upravi" +#define MENU_EDIT_UNDO "&Krok spä\tCtrl+Z" +#define MENU_EDIT_CUT "V&ystrihnú\tCtrl+X" +#define MENU_EDIT_COPY "&Kopírova\tCtrl+C" +#define MENU_EDIT_PASTE "V&lepi\tCtrl+V" +#define MENU_EDIT_DELETE "&Zmaza\tDel" +#define MENU_EDIT_SELECTALL "Vybr&a všetko" +#define MENU_EDIT_TIMEDATE "Èas&/Dátum\tF5" +#define MENU_EDIT_WRAP "&Zalomi dlhé riadky" + +#define MENU_SEARCH "&H¾ada" +#define MENU_SEARCH_SEARCH "H¾ada..." +#define MENU_SEARCH_NEXT "&H¾ada ïa¾ší\tF3" + +#define MENU_LANGUAGE "&Jazyk" + +#define MENU_HELP "&Pomoc" +#define MENU_HELP_CONTENTS "&Obsah" +#define MENU_HELP_SEARCH "&H¾ada..." +#define MENU_HELP_HELP_ON_HELP "&Pomoc na pomoci" + +#define MENU_INFO "Inf&o..." +#define MENU_INFO_LICENSE "&Licencia" +#define MENU_INFO_NO_WARRANTY "&BEZ ZÁRUKY" +#define MENU_INFO_ABOUT_WINE "O &Wine" + + +/* Dialogs */ + +#define DIALOG_OK "OK" +#define DIALOG_CANCEL "Zruši" +#define DIALOG_BROWSE "&Listova..." +#define DIALOG_HELP "&Pomoc" + +#define DIALOG_PAGESETUP_CAPTION "Nastavenie stránky" +#define DIALOG_PAGESETUP_HEAD "&Hlavièka:" +#define DIALOG_PAGESETUP_TAIL "&Päta:" +#define DIALOG_PAGESETUP_MARGIN "&Okraje:" +#define DIALOG_PAGESETUP_LEFT "¼a&vý:" +#define DIALOG_PAGESETUP_RIGHT "P&ravý:" +#define DIALOG_PAGESETUP_TOP "H&ore:" +#define DIALOG_PAGESETUP_BOTTOM "Do&lu:" + + +/* Strings */ + +#define STRING_PAGESETUP_HEADERVALUE "&n" /* FIXME */ +#define STRING_PAGESETUP_FOOTERVALUE "Strana &s" /* FIXME */ +#define STRING_PAGESETUP_LEFTVALUE "20 mm" /* FIXME */ +#define STRING_PAGESETUP_RIGHTVALUE "20 mm" /* FIXME */ +#define STRING_PAGESETUP_TOPVALUE "25 mm" /* FIXME */ +#define STRING_PAGESETUP_BOTTOMVALUE "25 mm" /* FIXME */ + +#define STRING_NOTEPAD "Notepad" +#define STRING_ERROR "CHYBA" +#define STRING_WARNING "VAROVANIE" +#define STRING_INFO "Informácie" + +#define STRING_UNTITLED "(nepomenovaný)" + +#define STRING_ALL_FILES "Všetky súbory (*.*)" +#define STRING_TEXT_FILES_TXT "Textové súbory (*.txt)" + +#define STRING_TOOLARGE "File '%s' is too large for notepad.\n \ +Please use a different editor." + +#define STRING_NOTEXT "Niè ste nenapísali. \ +\nProsím, napíšte nejaký text a pokúste sa znovu." + +#define STRING_NOTSAVED "Súbor '%s'\nbol zmenenýn\n \ +Prajete si uloži zmeny ?" + +#define STRING_NOTFOUND "'%s' nemôže by nájdený." + +#define STRING_OUT_OF_MEMORY "Not enough memory to complete this \ +task. \nClose one or more applications to increase the amount of \nfree \ +memory." + +#include "notepad.rc" diff --git a/reactos/apps/utils/notepad/Sw.rc b/reactos/apps/utils/notepad/Sw.rc new file mode 100644 index 00000000000..38c6c8d01f2 --- /dev/null +++ b/reactos/apps/utils/notepad/Sw.rc @@ -0,0 +1,105 @@ +/* + * Notepad (Swedish resources) + * + * Copyright 1997,98 Marcel Baur + * Swedish language by Karl Backström + */ + +#define LANGUAGE_ID Sw +#define LANGUAGE_NUMBER 1d +#define LANGUAGE_MENU_ITEM "&Svenska" + + +/* Menu */ + +#define MENU_FILE "&Arkiv" +#define MENU_FILE_NEW "&Ny..." +#define MENU_FILE_OPEN "Ö&ppna" +#define MENU_FILE_SAVE "&Spara" +#define MENU_FILE_SAVEAS "Spara &som..." +#define MENU_FILE_PRINT "&Skriv ut" +#define MENU_FILE_PAGESETUP "Sid La&yout..." +#define MENU_FILE_PRINTSETUP "Skrivar &inställningar..." +#define MENU_FILE_EXIT "&Avsluta" + +#define MENU_EDIT "&Redigera" +#define MENU_EDIT_UNDO "&Undo\tCtrl+Z" +#define MENU_EDIT_CUT "Klippa\tCtrl+X" +#define MENU_EDIT_COPY "&Kopiera\tCtrl+C" +#define MENU_EDIT_PASTE "&Klistra in\tCtrl+V" +#define MENU_EDIT_DELETE "&Ta bort\tDel" +#define MENU_EDIT_SELECTALL "Markera &allt" +#define MENU_EDIT_TIMEDATE "&Tid/Datum\tF5" +#define MENU_EDIT_WRAP "&Dela långa meningar" + +#define MENU_SEARCH "&Sök" +#define MENU_SEARCH_SEARCH "Sök..." +#define MENU_SEARCH_NEXT "&Sök nästa\tF3" + +#define MENU_LANGUAGE "&Språk" + +#define MENU_HELP "&Hjälp" +#define MENU_HELP_CONTENTS "&Innehåll" +#define MENU_HELP_SEARCH "&Sök..." +#define MENU_HELP_HELP_ON_HELP "Användningen &av hjälp" + +#define MENU_INFO "Inf&ormation..." +#define MENU_INFO_LICENSE "&Licens" +#define MENU_INFO_NO_WARRANTY "&INGEN GARANTI" +#define MENU_INFO_ABOUT_WINE "&Om Wine" + + +/* Dialogs */ + +#define DIALOG_OK "OK" +#define DIALOG_CANCEL "Avbryt" +#define DIALOG_BROWSE "&Bläddra..." +#define DIALOG_HELP "&Hjälp" + +#define DIALOG_PAGESETUP_CAPTION "Sid Layout" +#define DIALOG_PAGESETUP_HEAD "&Huvudnot:" +#define DIALOG_PAGESETUP_TAIL "&Fotnot:" +#define DIALOG_PAGESETUP_MARGIN "Kanter:" +#define DIALOG_PAGESETUP_LEFT "&Vänster:" +#define DIALOG_PAGESETUP_RIGHT "&Höger:" +#define DIALOG_PAGESETUP_TOP "&Över:" +#define DIALOG_PAGESETUP_BOTTOM "&Under:" + + +/* Strings */ + +#define STRING_PAGESETUP_HEADERVALUE "&n" /* FIXME */ +#define STRING_PAGESETUP_FOOTERVALUE "Page &s" /* FIXME */ +#define STRING_PAGESETUP_LEFTVALUE "20 mm" /* FIXME */ +#define STRING_PAGESETUP_RIGHTVALUE "20 mm" /* FIXME */ +#define STRING_PAGESETUP_TOPVALUE "25 mm" /* FIXME */ +#define STRING_PAGESETUP_BOTTOMVALUE "25 mm" /* FIXME */ + +#define STRING_NOTEPAD "Anteckningar" +#define STRING_ERROR "FEL" +#define STRING_WARNING "VARNING" +#define STRING_INFO "Information" + +#define STRING_UNTITLED "(untitled)" + +#define STRING_ALL_FILES "Alla filer (*.*)" +#define STRING_TEXT_FILES_TXT "Text filer (*.txt)" + +#define STRING_TOOLARGE "Filen '%s' är för stor för notepad.\n \ +Använd en annan editor." + +#define STRING_NOTEXT "Du skrev inte in någon text. \ +\nSkriv något och försök sedan igen" + +/* FIXME */ + +#define STRING_NOTSAVED "Filen '%s'\nhas been modified\n\n \ +Would you like to save your changes ?" + +#define STRING_NOTFOUND "'%s' hittades inte." + +#define STRING_OUT_OF_MEMORY "Inte tillräkligt med minne för att slutföra \ +den här uppgiften. \nAvsluta ett eller flera program för att öka mängden \nfritt \ +minne." + +#include "notepad.rc" diff --git a/reactos/apps/utils/notepad/Wa.rc b/reactos/apps/utils/notepad/Wa.rc new file mode 100644 index 00000000000..4c2f558d2bc --- /dev/null +++ b/reactos/apps/utils/notepad/Wa.rc @@ -0,0 +1,104 @@ +/* + * Notepad (Walloon resources) + * + * Si vos voloz aider avou li ratoûrnaedje des libes programes è walon, + * vos poloz scrîre a l' adresse emile + */ + +#define LANGUAGE_ID Wa +#define LANGUAGE_NUMBER 90 +#define LANGUAGE_MENU_ITEM "&Walon" + + +/* Menu */ + +#define MENU_FILE "&Fitchî" +#define MENU_FILE_NEW "&Novea..." +#define MENU_FILE_OPEN "&Drovî" +#define MENU_FILE_SAVE "&Schaper" +#define MENU_FILE_SAVEAS "Schaper èt r&lomer..." +#define MENU_FILE_PRINT "&Rexhe" +#define MENU_FILE_PAGESETUP "Arrandjmint del &Pådje..." +#define MENU_FILE_PRINTSETUP "&Apontiaedje del scrirece..." +#define MENU_FILE_EXIT "Moussî &Foû" + +#define MENU_EDIT "&Candjî" +#define MENU_EDIT_UNDO "&Disfé\tCtrl+Z" +#define MENU_EDIT_CUT "Cô&per\tCtrl+X" +#define MENU_EDIT_COPY "&Copyî\tCtrl+C" +#define MENU_EDIT_PASTE "C&laper\tCtrl+V" +#define MENU_EDIT_DELETE "&Rafacer\tDel" +#define MENU_EDIT_SELECTALL "&Tchwezi totafwait" +#define MENU_EDIT_TIMEDATE "&Eure/Date\tF5" +#define MENU_EDIT_WRAP "Côper les ro&yes" + +#define MENU_SEARCH "C&werî" +#define MENU_SEARCH_SEARCH "Cwerî..." +#define MENU_SEARCH_NEXT "&Shûvant\tF3" + +#define MENU_LANGUAGE "&Lingaedje" + +#define MENU_HELP "&Aide" +#define MENU_HELP_CONTENTS "Å&dvins" +#define MENU_HELP_SEARCH "C&werî..." +#define MENU_HELP_HELP_ON_HELP "&Aide so l' Aide" + +#define MENU_INFO "&Informåcion..." +#define MENU_INFO_LICENSE "&Licinse" +#define MENU_INFO_NO_WARRANTY "&NOLE WARANTEYE" +#define MENU_INFO_ABOUT_WINE "Å &dfait di Wine" + + +/* Dialogs */ + +#define DIALOG_OK "I Va" +#define DIALOG_CANCEL "Rinoncî" +#define DIALOG_BROWSE "&Foyer..." +#define DIALOG_HELP "&Aide" + +#define DIALOG_PAGESETUP_CAPTION "Arindjmint del Pådje" +/* "Tite" ni va nén vraiymint, i fåt ene sacwe d' meyeu [header] */ +#define DIALOG_PAGESETUP_HEAD "&Tite:" +#define DIALOG_PAGESETUP_TAIL "&Pînote:" +/* "mardjes" ? [marges] */ +#define DIALOG_PAGESETUP_MARGIN "&Mardjes:" +#define DIALOG_PAGESETUP_LEFT "&Hintche:" +#define DIALOG_PAGESETUP_RIGHT "&Droete:" +#define DIALOG_PAGESETUP_TOP "&Copete:" +#define DIALOG_PAGESETUP_BOTTOM "&Bas:" + + +/* Strings */ + +#define STRING_PAGESETUP_HEADERVALUE "&n" /* FIXME */ +#define STRING_PAGESETUP_FOOTERVALUE "Pådje &s" /* FIXME */ +#define STRING_PAGESETUP_LEFTVALUE "20 mm" /* FIXME */ +#define STRING_PAGESETUP_RIGHTVALUE "20 mm" /* FIXME */ +#define STRING_PAGESETUP_TOPVALUE "25 mm" /* FIXME */ +#define STRING_PAGESETUP_BOTTOMVALUE "25 mm" /* FIXME */ + +#define STRING_NOTEPAD "Notepad" +#define STRING_ERROR "AROKE" +#define STRING_WARNING "ADVERTIXHMINT" +#define STRING_INFO "Informåcion" + +#define STRING_UNTITLED "(sin tite)" + +#define STRING_ALL_FILES "Tos les fitchîs (*.*)" +#define STRING_TEXT_FILES_TXT "Fitchîs tekse (*.txt)" + +#define STRING_TOOLARGE "Li fitchî '%s' est trop gros pol notepad.\n \ +Eployoz on ôte aspougneu di tekse." + +#define STRING_NOTEXT "Vos n' avoz rén sicrît. \ +\nTapez ene sacwe èt rasayez" + +#define STRING_NOTSAVED "Li fitchî '%s'\na candjî\n\n \ +El voloz schaper ?" + +#define STRING_NOTFOUND "'%s' pout nén esse trové." + +#define STRING_OUT_OF_MEMORY "Li memwere est plinne. \n\ +Cloyoz on programe ou pus po monter li memwere libe." + +#include "notepad.rc" diff --git a/reactos/apps/utils/notepad/dialog.c b/reactos/apps/utils/notepad/dialog.c new file mode 100644 index 00000000000..c7b08abbf3c --- /dev/null +++ b/reactos/apps/utils/notepad/dialog.c @@ -0,0 +1,667 @@ +/* + * Notepad (dialog.c) + * + * Copyright 1998,99 Marcel Baur + * To be distributed under the Wine License + */ + +#include +#include +#include + +/* temp for ROS */ +#include "ros.h" + +#include "main.h" +#include "license.h" +#include "language.h" +#include "dialog.h" + +#define LCC_HASASSERT +#include "lcc.h" + +static LRESULT WINAPI DIALOG_PAGESETUP_DlgProc(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam); + + + +int AlertIDS(UINT ids_message, UINT ids_caption, WORD type) { + /* + * Given some ids strings, this acts as a language-aware wrapper for + * "MessageBox" + */ + CHAR szMessage[MAX_STRING_LEN]; + CHAR szCaption[MAX_STRING_LEN]; + + LoadString(Globals.hInstance, ids_message, szMessage, sizeof(szMessage)); + LoadString(Globals.hInstance, ids_caption, szCaption, sizeof(szCaption)); + + return (MessageBox(Globals.hMainWnd, szMessage, szCaption, type)); +} + +void AlertFileNotFound(LPSTR szFileName) { + + int nResult; + CHAR szMessage[MAX_STRING_LEN]; + CHAR szRessource[MAX_STRING_LEN]; + + /* Load and format szMessage */ + LoadString(Globals.hInstance, IDS_NOTFOUND, szRessource, sizeof(szRessource)); + wsprintf(szMessage, szRessource, szFileName); + + /* Load szCaption */ + LoadString(Globals.hInstance, IDS_ERROR, szRessource, sizeof(szRessource)); + + /* Display Modal Dialog */ + nResult = MessageBox(Globals.hMainWnd, szMessage, szRessource, MB_ICONEXCLAMATION); + +} + +int AlertFileNotSaved(LPSTR szFileName) { + + int nResult; + CHAR szMessage[MAX_STRING_LEN]; + CHAR szRessource[MAX_STRING_LEN]; + + /* Load and format Message */ + + LoadString(Globals.hInstance, IDS_NOTSAVED, szRessource, sizeof(szRessource)); + wsprintf(szMessage, szRessource, szFileName); + + /* Load Caption */ + + LoadString(Globals.hInstance, IDS_ERROR, szRessource, sizeof(szRessource)); + + /* Display modal */ + nResult = MessageBox(Globals.hMainWnd, szMessage, szRessource, MB_ICONEXCLAMATION|MB_YESNOCANCEL); + return(nResult); +} + + +VOID AlertOutOfMemory(void) { + int nResult; + + nResult = AlertIDS(IDS_OUT_OF_MEMORY, IDS_ERROR, MB_ICONEXCLAMATION); + PostQuitMessage(1); +} + + +BOOL ExistFile(LPCSTR szFilename) { +/* + * Returns: TRUE - if "szFileName" exists + * FALSE - if it does not + */ + WIN32_FIND_DATA entry; + HANDLE hFile; + + hFile = FindFirstFile(szFilename, &entry); + + return (hFile!=INVALID_HANDLE_VALUE); +} + +VOID DoSaveFile(VOID) { + + /* FIXME: Really Save the file */ + /* ... (Globals.szFileName); */ +} + + +BOOL DoCloseFile(void) { +/* Return value: TRUE - User agreed to close (both save/don't save) */ +/* FALSE - User cancelled close by selecting "Cancel" */ + + int nResult; + + if (strlen(Globals.szFileName)>0) { + /* prompt user to save changes */ + nResult = AlertFileNotSaved(Globals.szFileName); + switch (nResult) { + case IDYES: DoSaveFile(); + break; + + case IDNO: break; + + case IDCANCEL: return(FALSE); + break; + + default: return(FALSE); + break; + } /* switch */ + } /* if */ + + /* Forget file name */ + lstrcpy(Globals.szFileName, ""); + LANGUAGE_UpdateWindowCaption(); + return(TRUE); +} + + +void DoOpenFile(LPCSTR szFileName) { + + /* Close any files and prompt to save changes */ + if (DoCloseFile()) { + GetFileTitle(szFileName, Globals.szFileName, sizeof(Globals.szFileName)); + LANGUAGE_UpdateWindowCaption(); + + LoadBufferFromFile(szFileName); + } +} + + +VOID DIALOG_FileNew(VOID) +{ + /* Close any files and promt to save changes */ + if (DoCloseFile()) { + TrashBuffer(); + } +} + +VOID DIALOG_FileOpen(VOID) +{ + OPENFILENAME openfilename; + CHAR szPath[MAX_PATHNAME_LEN]; + CHAR szDir[MAX_PATHNAME_LEN]; + CHAR szzFilter[2 * MAX_STRING_LEN + 100]; + CHAR szDefaultExt[4]; + LPSTR p = szzFilter; + + lstrcpy(szDefaultExt, "txt"); + + LoadString(Globals.hInstance, IDS_TEXT_FILES_TXT, p, MAX_STRING_LEN); + p += strlen(p) + 1; + lstrcpy(p, "*.txt"); + p += strlen(p) + 1; + LoadString(Globals.hInstance, IDS_ALL_FILES, p, MAX_STRING_LEN); + p += strlen(p) + 1; + lstrcpy(p, "*.*"); + p += strlen(p) + 1; + *p = '\0'; + + GetCurrentDirectory(sizeof(szDir), szDir); + lstrcpy(szPath,"*.txt"); + + openfilename.lStructSize = sizeof(OPENFILENAME); + openfilename.hwndOwner = Globals.hMainWnd; + openfilename.hInstance = Globals.hInstance; + openfilename.lpstrFilter = szzFilter; + openfilename.lpstrCustomFilter = 0; + openfilename.nMaxCustFilter = 0; + openfilename.nFilterIndex = 0; + openfilename.lpstrFile = szPath; + openfilename.nMaxFile = sizeof(szPath); + openfilename.lpstrFileTitle = 0; + openfilename.nMaxFileTitle = 0; + openfilename.lpstrInitialDir = szDir; + openfilename.lpstrTitle = 0; + openfilename.Flags = OFN_FILEMUSTEXIST + OFN_PATHMUSTEXIST; + openfilename.nFileOffset = 0; + openfilename.nFileExtension = 0; + openfilename.lpstrDefExt = szDefaultExt; + openfilename.lCustData = 0; + openfilename.lpfnHook = 0; + openfilename.lpTemplateName = 0; + + if (GetOpenFileName(&openfilename)) { + + if (ExistFile(openfilename.lpstrFile)) + DoOpenFile(openfilename.lpstrFile); + else + AlertFileNotFound(openfilename.lpstrFile); + + } +} + +VOID DIALOG_FileSave(VOID) +{ + /* FIXME: Save File */ + + DIALOG_FileSaveAs(); +} + +VOID DIALOG_FileSaveAs(VOID) +{ + OPENFILENAME saveas; + CHAR szPath[MAX_PATHNAME_LEN]; + CHAR szDir[MAX_PATHNAME_LEN]; + CHAR szDefaultExt[4]; + CHAR szzFilter[2 * MAX_STRING_LEN + 100]; + + LPSTR p = szzFilter; + + lstrcpy(szDefaultExt, "txt"); + + LoadString(Globals.hInstance, IDS_TEXT_FILES_TXT, p, MAX_STRING_LEN); + p += strlen(p) + 1; + lstrcpy(p, "*.txt"); + p += strlen(p) + 1; + LoadString(Globals.hInstance, IDS_ALL_FILES, p, MAX_STRING_LEN); + p += strlen(p) + 1; + lstrcpy(p, "*.*"); + p += strlen(p) + 1; + *p = '\0'; + + lstrcpy(szPath,"*.*"); + + GetCurrentDirectory(sizeof(szDir), szDir); + + saveas.lStructSize = sizeof(OPENFILENAME); + saveas.hwndOwner = Globals.hMainWnd; + saveas.hInstance = Globals.hInstance; + saveas.lpstrFilter = szzFilter; + saveas.lpstrCustomFilter = 0; + saveas.nMaxCustFilter = 0; + saveas.nFilterIndex = 0; + saveas.lpstrFile = szPath; + saveas.nMaxFile = sizeof(szPath); + saveas.lpstrFileTitle = 0; + saveas.nMaxFileTitle = 0; + saveas.lpstrInitialDir = szDir; + saveas.lpstrTitle = 0; + saveas.Flags = OFN_PATHMUSTEXIST + OFN_OVERWRITEPROMPT + OFN_HIDEREADONLY; + saveas.nFileOffset = 0; + saveas.nFileExtension = 0; + saveas.lpstrDefExt = szDefaultExt; + saveas.lCustData = 0; + saveas.lpfnHook = 0; + saveas.lpTemplateName = 0; + + if (GetSaveFileName(&saveas)) { + lstrcpy(Globals.szFileName, saveas.lpstrFile); + LANGUAGE_UpdateWindowCaption(); + DIALOG_FileSave(); + } +} + +VOID DIALOG_FilePrint(VOID) +{ + LONG bFlags, nBase; + WORD nOffset; + DOCINFO di; + int nResult; + HDC hContext; + PRINTDLG printer; + + CHAR szDocumentName[MAX_STRING_LEN]; /* Name of document */ + CHAR szPrinterName[MAX_STRING_LEN]; /* Name of the printer */ + CHAR szDeviceName[MAX_STRING_LEN]; /* Name of the printer device */ + CHAR szOutput[MAX_STRING_LEN]; /* in which file/device to print */ + +/* LPDEVMODE hDevMode; */ +/* LPDEVNAMES hDevNames; */ + +/* hDevMode = GlobalAlloc(GMEM_MOVEABLE + GMEM_ZEROINIT, sizeof(DEVMODE)); */ +/* hDevNames = GlobalAlloc(GMEM_MOVEABLE + GMEM_ZEROINIT, sizeof(DEVNAMES)); */ + + /* Get Current Settings */ + + printer.lStructSize = sizeof(PRINTDLG); + printer.hwndOwner = Globals.hMainWnd; + printer.hInstance = Globals.hInstance; + + /* Let PrintDlg create a DEVMODE structure */ + printer.hDevMode = 0; + printer.hDevNames = 0; + printer.hDC = 0; + printer.Flags = PD_RETURNDEFAULT; + printer.nFromPage = 0; + printer.nToPage = 0; + printer.nMinPage = 0; + printer.nMaxPage = 0; + printer.nCopies = 0; + printer.lCustData = 0; + printer.lpfnPrintHook = 0; + printer.lpfnSetupHook = 0; + printer.lpPrintTemplateName = 0; + printer.lpSetupTemplateName = 0; + printer.hPrintTemplate = 0; + printer.hSetupTemplate = 0; + + nResult = PrintDlg(&printer); + +/* hContext = CreateDC(, szDeviceName, "TEST.TXT", 0); */ + + /* Congratulations to those Microsoft Engineers responsable */ + /* for the following pointer acrobatics */ + + assert(printer.hDevNames!=0); + + nBase = (LONG)(printer.hDevNames); + + nOffset = (WORD)((LPDEVNAMES) printer.hDevNames)->wDriverOffset; + lstrcpy(szPrinterName, (LPCSTR) (nBase + nOffset)); + + nOffset = (WORD)((LPDEVNAMES) printer.hDevNames)->wDeviceOffset; + lstrcpy(szDeviceName, (LPCSTR) (nBase + nOffset)); + + nOffset = (WORD)((LPDEVNAMES) printer.hDevNames)->wOutputOffset; + lstrcpy(szOutput, (LPCSTR) (nBase + nOffset)); + + MessageBox(Globals.hMainWnd, szPrinterName, "Printer Name", MB_ICONEXCLAMATION); + MessageBox(Globals.hMainWnd, szDeviceName, "Device Name", MB_ICONEXCLAMATION); + MessageBox(Globals.hMainWnd, szOutput, "Output", MB_ICONEXCLAMATION); + + /* Set some default flags */ + + bFlags = PD_RETURNDC + PD_SHOWHELP; + + if (TRUE) { + /* Remove "Print Selection" if there is no selection */ + bFlags = bFlags + PD_NOSELECTION; + } + + printer.Flags = bFlags; +/* + printer.nFromPage = 0; + printer.nToPage = 0; + printer.nMinPage = 0; + printer.nMaxPage = 0; +*/ + + /* Let commdlg manage copy settings */ + printer.nCopies = (WORD)PD_USEDEVMODECOPIES; + + if (PrintDlg(&printer)) { + + /* initialize DOCINFO */ + di.cbSize = sizeof(DOCINFO); + lstrcpy((LPSTR)di.lpszDocName, szDocumentName); + lstrcpy((LPSTR)di.lpszOutput, szOutput); + + hContext = printer.hDC; + assert(hContext!=0); + assert( (int) hContext!=PD_RETURNDC); + + SetMapMode(hContext, MM_LOMETRIC); +/* SetViewPortExExt(hContext, 10, 10, 0); */ + SetBkMode(hContext, OPAQUE); + + nResult = TextOut(hContext, 0, 0, " ", 1); + assert(nResult != 0); + + nResult = StartDoc(hContext, &di); + assert(nResult != SP_ERROR); + + nResult = StartPage(hContext); + assert(nResult >0); + + /* FIXME: actually print */ + + nResult = EndPage(hContext); + + switch (nResult) { + case SP_ERROR: + MessageBox(Globals.hMainWnd, "Generic Error", "Print Engine Error", MB_ICONEXCLAMATION); + break; + case SP_APPABORT: + MessageBox(Globals.hMainWnd, "The print job was aborted.", "Print Engine Error", MB_ICONEXCLAMATION); + break; + case SP_USERABORT: + MessageBox(Globals.hMainWnd, "The print job was aborted using the Print Manager ", "Print Engine Error", MB_ICONEXCLAMATION); + break; + case SP_OUTOFDISK: + MessageBox(Globals.hMainWnd, "Out of disk space", "Print Engine Error", MB_ICONEXCLAMATION); + break; + case SP_OUTOFMEMORY: + AlertOutOfMemory(); + break; + default: + MessageBox(Globals.hMainWnd, "Default", "Print", MB_ICONEXCLAMATION); + } /* switch */ + nResult = EndDoc(hContext); + assert(nResult>=0); + nResult = DeleteDC(hContext); + assert(nResult!=0); + } /* if */ + +/* GlobalFree(hDevNames); */ +/* GlobalFree(hDevMode); */ +} + +VOID DIALOG_FilePageSetup(VOID) +{ + DIALOG_PageSetup(); +} + +VOID DIALOG_FilePrinterSetup(VOID) +{ + PRINTDLG printer; + + printer.lStructSize = sizeof(PRINTDLG); + printer.hwndOwner = Globals.hMainWnd; + printer.hInstance = Globals.hInstance; + printer.hDevMode = 0; + printer.hDevNames = 0; + printer.hDC = 0; + printer.Flags = PD_PRINTSETUP; + printer.nFromPage = 0; + printer.nToPage = 0; + printer.nMinPage = 0; + printer.nMaxPage = 0; + printer.nCopies = 1; + printer.lCustData = 0; + printer.lpfnPrintHook = 0; + printer.lpfnSetupHook = 0; + printer.lpPrintTemplateName = 0; + printer.lpSetupTemplateName = 0; + printer.hPrintTemplate = 0; + printer.hSetupTemplate = 0; + + if (PrintDlg(&printer)) { + /* do nothing */ + }; + +} + +VOID DIALOG_FileExit(VOID) +{ + if (DoCloseFile()) { + PostQuitMessage(0); + } +} + +VOID DIALOG_EditUndo(VOID) +{ + MessageBox(Globals.hMainWnd, "Undo", "Debug", MB_ICONEXCLAMATION); + /* undo */ +} + +VOID DIALOG_EditCut(VOID) +{ + HANDLE hMem; + + hMem = GlobalAlloc(GMEM_ZEROINIT, 99); + + OpenClipboard(Globals.hMainWnd); + EmptyClipboard(); + + /* FIXME: Get text */ + lstrcpy((CHAR *)hMem, "Hello World"); + + SetClipboardData(CF_TEXT, hMem); + CloseClipboard(); + + GlobalFree(hMem); +} + +VOID DIALOG_EditCopy(VOID) +{ + HANDLE hMem; + + hMem = GlobalAlloc(GMEM_ZEROINIT, 99); + + OpenClipboard(Globals.hMainWnd); + EmptyClipboard(); + + /* FIXME: Get text */ + lstrcpy((CHAR *)hMem, "Hello World"); + + SetClipboardData(CF_TEXT, hMem); + CloseClipboard(); + + GlobalFree(hMem); +} + +VOID DIALOG_EditPaste(VOID) +{ + HANDLE hClipText; + + if (IsClipboardFormatAvailable(CF_TEXT)) { + OpenClipboard(Globals.hMainWnd); + hClipText = GetClipboardData(CF_TEXT); + CloseClipboard(); + MessageBox(Globals.hMainWnd, (CHAR *)hClipText, "PASTE", MB_ICONEXCLAMATION); + } +} + +VOID DIALOG_EditDelete(VOID) +{ + /* Delete */ +} + +VOID DIALOG_EditSelectAll(VOID) +{ + /* Select all */ +} + +VOID DIALOG_EditTimeDate(VOID) +{ + SYSTEMTIME st; + LPSYSTEMTIME lpst = &st; + CHAR szDate[MAX_STRING_LEN]; + LPSTR date = szDate; + + GetLocalTime(&st); + GetDateFormat(LOCALE_USER_DEFAULT, LOCALE_SLONGDATE, lpst, NULL, date, MAX_STRING_LEN); + GetTimeFormat(LOCALE_USER_DEFAULT, LOCALE_STIMEFORMAT, lpst, NULL, date, MAX_STRING_LEN); + +} + +VOID DIALOG_EditWrap(VOID) +{ + Globals.bWrapLongLines = !Globals.bWrapLongLines; + CheckMenuItem(Globals.hEditMenu, NP_EDIT_WRAP, MF_BYCOMMAND | + (Globals.bWrapLongLines ? MF_CHECKED : MF_UNCHECKED)); +} + +VOID DIALOG_Search(VOID) +{ + Globals.find.lStructSize = sizeof(Globals.find); + Globals.find.hwndOwner = Globals.hMainWnd; + Globals.find.hInstance = Globals.hInstance; + Globals.find.lpstrFindWhat = (CHAR *) &Globals.szFindText; + Globals.find.wFindWhatLen = sizeof(Globals.szFindText); + Globals.find.lpstrReplaceWith = 0; + Globals.find.wReplaceWithLen = 0; + Globals.find.Flags = FR_DOWN; + Globals.find.lCustData = 0; + Globals.find.lpfnHook = 0; + Globals.find.lpTemplateName = 0; + + /* We only need to create the modal FindReplace dialog which will */ + /* notify us of incoming events using hMainWnd Window Messages */ + + Globals.hFindReplaceDlg = FindText(&Globals.find); + assert(Globals.hFindReplaceDlg !=0); +} + +VOID DIALOG_SearchNext(VOID) +{ + /* Search Next */ +} + +VOID DIALOG_HelpContents(VOID) +{ + WinHelp(Globals.hMainWnd, HELPFILE, HELP_INDEX, 0); +} + +VOID DIALOG_HelpSearch(VOID) +{ + /* Search Help */ +} + +VOID DIALOG_HelpHelp(VOID) +{ + WinHelp(Globals.hMainWnd, HELPFILE, HELP_HELPONHELP, 0); +} + +VOID DIALOG_HelpLicense(VOID) +{ + WineLicense(Globals.hMainWnd); +} + +VOID DIALOG_HelpNoWarranty(VOID) +{ + WineWarranty(Globals.hMainWnd); +} + +VOID DIALOG_HelpAboutWine(VOID) +{ + CHAR szNotepad[MAX_STRING_LEN]; + + LoadString(Globals.hInstance, IDS_NOTEPAD, szNotepad, sizeof(szNotepad)); + ShellAbout(Globals.hMainWnd, szNotepad, "Notepad\n" /* WINE_RELEASE_INFO */, 0); +} + +/*********************************************************************** + * + * DIALOG_PageSetup + */ + +VOID DIALOG_PageSetup(VOID) +{ + WNDPROC lpfnDlg; + + lpfnDlg = MakeProcInstance(DIALOG_PAGESETUP_DlgProc, Globals.hInstance); + DialogBox(Globals.hInstance, STRING_PAGESETUP_Xx, Globals.hMainWnd, (DLGPROC)lpfnDlg); + FreeProcInstance(lpfnDlg); +} + + +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * + * DIALOG_PAGESETUP_DlgProc + */ + +static LRESULT WINAPI DIALOG_PAGESETUP_DlgProc(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam) +{ + + switch (msg) + { + case WM_COMMAND: + switch (wParam) + { + case IDOK: + /* save user input and close dialog */ + GetDlgItemText(hDlg, NP_PAGESETUP_HEAD, Globals.szHeader, sizeof(Globals.szHeader)); + GetDlgItemText(hDlg, NP_PAGESETUP_TAIL, Globals.szFooter, sizeof(Globals.szFooter)); + GetDlgItemText(hDlg, NP_PAGESETUP_TOP, Globals.szMarginTop, sizeof(Globals.szMarginTop)); + GetDlgItemText(hDlg, NP_PAGESETUP_BOTTOM, Globals.szMarginBottom, sizeof(Globals.szMarginBottom)); + GetDlgItemText(hDlg, NP_PAGESETUP_LEFT, Globals.szMarginLeft, sizeof(Globals.szMarginLeft)); + GetDlgItemText(hDlg, NP_PAGESETUP_RIGHT, Globals.szMarginRight, sizeof(Globals.szMarginRight)); + EndDialog(hDlg, IDOK); + return TRUE; + + case IDCANCEL: + /* discard user input and close dialog */ + EndDialog(hDlg, IDCANCEL); + return TRUE; + + case IDHELP: + /* FIXME: Bring this to work */ + MessageBox(Globals.hMainWnd, "Sorry, no help available", "Help", MB_ICONEXCLAMATION); + return TRUE; + } + break; + + case WM_INITDIALOG: + /* fetch last user input prior to display dialog */ + SetDlgItemText(hDlg, NP_PAGESETUP_HEAD, Globals.szHeader); + SetDlgItemText(hDlg, NP_PAGESETUP_TAIL, Globals.szFooter); + SetDlgItemText(hDlg, NP_PAGESETUP_TOP, Globals.szMarginTop); + SetDlgItemText(hDlg, NP_PAGESETUP_BOTTOM, Globals.szMarginBottom); + SetDlgItemText(hDlg, NP_PAGESETUP_LEFT, Globals.szMarginLeft); + SetDlgItemText(hDlg, NP_PAGESETUP_RIGHT, Globals.szMarginRight); + break; + } + + return FALSE; +} diff --git a/reactos/apps/utils/notepad/dialog.h b/reactos/apps/utils/notepad/dialog.h new file mode 100644 index 00000000000..3c1cb6cf771 --- /dev/null +++ b/reactos/apps/utils/notepad/dialog.h @@ -0,0 +1,39 @@ +/* + * Notepad (dialog.h) + * + * Copyright 1998 Marcel Baur + */ + +#include "windows.h" + +VOID DIALOG_FileNew(VOID); +VOID DIALOG_FileOpen(VOID); +VOID DIALOG_FileSave(VOID); +VOID DIALOG_FileSaveAs(VOID); +VOID DIALOG_FilePrint(VOID); +VOID DIALOG_FilePageSetup(VOID); +VOID DIALOG_FilePrinterSetup(VOID); +VOID DIALOG_FileExit(VOID); + +VOID DIALOG_EditUndo(VOID); +VOID DIALOG_EditCut(VOID); +VOID DIALOG_EditCopy(VOID); +VOID DIALOG_EditPaste(VOID); +VOID DIALOG_EditDelete(VOID); +VOID DIALOG_EditSelectAll(VOID); +VOID DIALOG_EditTimeDate(VOID); +VOID DIALOG_EditWrap(VOID); + +VOID DIALOG_Search(VOID); +VOID DIALOG_SearchNext(VOID); + +VOID DIALOG_HelpContents(VOID); +VOID DIALOG_HelpSearch(VOID); +VOID DIALOG_HelpHelp(VOID); +VOID DIALOG_HelpLicense(VOID); +VOID DIALOG_HelpNoWarranty(VOID); +VOID DIALOG_HelpAboutWine(VOID); + +VOID DIALOG_PageSetup(VOID); +VOID DIALOG_TimeDate(VOID); + diff --git a/reactos/apps/utils/notepad/doc/ChangeLog.txt b/reactos/apps/utils/notepad/doc/ChangeLog.txt new file mode 100644 index 00000000000..c104434b68b --- /dev/null +++ b/reactos/apps/utils/notepad/doc/ChangeLog.txt @@ -0,0 +1,79 @@ +Tue Oct 12 20:31:00 1999 Gustavo Junior Alves + * [Pt.rc] [Makefile.in] + Added Portuguese language support. + +Fri Mar 5 22:14:13 1999 Marcel Baur + * NEW [search.c] - Added Boyer-Moore text search + +Sat Feb 6 20:25:25 1999 Marcel Baur + - Added new IDS_NOTSAVED ressource (needs translation in *.rc) + - Improved printing support (not yet complete) + - Improved file drag and drop (should now work) - General code cleanup + +Thu Jan 28 18:17:08 1999 Jukka Iivonen + * [Fi.rc] [main.c] [Makefile.in] + - Added Finnish language support. + +Sun Oct 18 14:11:42 1998 Marcel Baur + + * [??.rc], [TODO], [dialog.c], [dialog.h], [language.c], + [language.h], [license.c], [license.h], [main.c], [main.h], + [notepad.rc]: + + - Fixed GetOpenFileName and GetSaveFileName dialogs. + - Fixed Print dialog and introduced PrinterSetup dialog. + - Fixed PageSetup dialog: values are now correctly initialized + (had to change all *.rc files) + - Preliminary file drag and drop support. + +Fri Jun 12 23:29:44 1998 Marcel Baur + - Fixed GetDateFormat()->GetTimeFormat() for locale time. + +Mon May 25 14:30:00 1998 Henrik Olsen + * [Da.rc] + - Added Danish language support. + +Fri May 15 23:59:22 1998 Marcel Baur + - Date/Time now uses locale-specific formats + - Language-specific window caption, displays file being edited. + - Started with parsing of command line settings + - Started with DoOpenFile, DoCloseFile, DoSaveFile logics + - Prompt user to save settings when closing a file + -> Introduced a new message box (not yet finished) + - Fixed minor features (missing IDS in main.h, ...) + +Sun Mar 29 20:29:41 1998 Laurent Buffler + * [Fr.rc] + - Added French language support. + +Fri Feb 27 21:03:37 1998 Karl Backström + - Fixed some minor features. + +Sat Feb 14 17:42:29 1998 Karl Backström + * NEW [language.c] [language.h] + - Takes care of all language related stuff. + - A new [programs] in .winerc is in use. + +Tue Feb 10 23:34:08 1998 Marcel Baur + - Fixed broken language menus + +Fri Feb 06 23.54.35 1998 Karl Backström + * [main.c] [main.h] [notepad.rc] + - Fixed language support for menus. + * NEW [dialog.c] [dialog.h] + - Moved all menu and dialog related stuff here. + +Sun Jan 18 23:05:04 1998 Karl Backström + * [Sw.rc] + - Added/updated Swedish language support. + +Tue Dec 23 23:35:04 1997 Marcel Baur + - Fixed lots of bugs w/ resources in *.rc + - moved [notepad.c] into [main.c] + - moved [notepad.h] into [main.h] + +Fri Dec 05 20:51:55 1997 Marcel Baur + * [notepad.c] [notepad.h] [notepad.rc] [En.rc] [De.rc] + [license.c] [license.h] [License_En.c] + [README] [TODO] [ChangeLog] + - Originals by Marcel Baur \ No newline at end of file diff --git a/reactos/apps/utils/notepad/doc/Readme.txt b/reactos/apps/utils/notepad/doc/Readme.txt new file mode 100644 index 00000000000..0c3baffc99c --- /dev/null +++ b/reactos/apps/utils/notepad/doc/Readme.txt @@ -0,0 +1,10 @@ +NOTEPAD for WINE +================ +There is now a web page dedicated to Notepad for Wine I am maintaing. +Please see http://www.vis.inf.ethz.ch/students/mbaur/notepad +for latest info about Notepad. +This page also includes screenshots. +This is an early release of notepad and most of the code is still broken. +It will probably compile but the application will not make much sense yet. +Please see file TODO for things to do and keep the file ChangeLog +up to date.I also try to read wine-devel@winehq.com frequently. \ No newline at end of file diff --git a/reactos/apps/utils/notepad/doc/Todo.txt b/reactos/apps/utils/notepad/doc/Todo.txt new file mode 100644 index 00000000000..8342fc05227 --- /dev/null +++ b/reactos/apps/utils/notepad/doc/Todo.txt @@ -0,0 +1,21 @@ +FIXME - and list: + * - use scroll bars (vertical done) + * - cut 'n paste + * - save file (Not started) + * - print file (Crashes Win9x) + * - find dialog + * - encapsulate data structures (?) - half done + * - free unused memory + * - solve Open problems (This seems to work) + * - smoother scrolling + * - separate view code and document code + + +TODO - + +- Logfile feature +if Notepad opens a file with ".LOG" (really?) in the first line, the +current date/time should automatically be inserted into the last line +of the file at startup. + +- Upgrade Language Support \ No newline at end of file diff --git a/reactos/apps/utils/notepad/language.c b/reactos/apps/utils/notepad/language.c new file mode 100644 index 00000000000..7c1b0143980 --- /dev/null +++ b/reactos/apps/utils/notepad/language.c @@ -0,0 +1,132 @@ +/* + * Notepad + * + * Copyright 1997,98 Marcel Baur + * Copyright 1998 Karl Backstr”m + */ + +#include +#include "windows.h" +#include "main.h" +#include "language.h" + +CHAR STRING_MENU_Xx[] = "MENU_Xx"; +CHAR STRING_PAGESETUP_Xx[] = "DIALOG_PAGESETUP_Xx"; + +void LANGUAGE_UpdateWindowCaption(void) { + /* Sets the caption of the main window according to Globals.szFileName: + Notepad - (untitled) if no file is open + Notepad - [filename] if a file is given + */ + + CHAR szCaption[MAX_STRING_LEN]; + CHAR szUntitled[MAX_STRING_LEN]; + + LoadString(Globals.hInstance, IDS_NOTEPAD, szCaption, sizeof(szCaption)); + + if (strlen(Globals.szFileName)>0) { + lstrcat(szCaption, " - ["); + lstrcat(szCaption, Globals.szFileName); + lstrcat(szCaption, "]"); + } + else + { + LoadString(Globals.hInstance, IDS_UNTITLED, szUntitled, sizeof(szUntitled)); + lstrcat(szCaption, " - "); + lstrcat(szCaption, szUntitled); + } + + SetWindowText(Globals.hMainWnd, szCaption); + +} + + + +static BOOL LANGUAGE_LoadStringOther(UINT num, UINT ids, LPSTR str, UINT len) +{ + BOOL bOk; + + ids -= Globals.wStringTableOffset; + ids += num * 0x100; + + bOk = LoadString(Globals.hInstance, ids, str, len); + + return(bOk); +} + + + +VOID LANGUAGE_SelectByName(LPCSTR lang) +{ + INT i; + CHAR newlang[3]; + + for (i = 0; i <= MAX_LANGUAGE_NUMBER; i++) + if (LANGUAGE_LoadStringOther(i, IDS_LANGUAGE_ID, newlang, sizeof(newlang)) && + !lstrcmp(lang, newlang)) + { + LANGUAGE_SelectByNumber(i); + return; + } + + /* Fallback */ + for (i = 0; i <= MAX_LANGUAGE_NUMBER; i++) + if (LANGUAGE_LoadStringOther(i, IDS_LANGUAGE_ID, newlang, sizeof(newlang))) + { + LANGUAGE_SelectByNumber(i); + return; + } + + MessageBox(Globals.hMainWnd, "No language found", "FATAL ERROR", MB_OK); + PostQuitMessage(1); +} + +VOID LANGUAGE_SelectByNumber(UINT num) +{ + INT i; + CHAR lang[3]; + CHAR item[MAX_STRING_LEN]; + HMENU hMainMenu; + + /* Select string table */ + Globals.wStringTableOffset = num * 0x100; + + /* Get Language id */ + LoadString(Globals.hInstance, IDS_LANGUAGE_ID, lang, sizeof(lang)); + + /* Set frame caption */ + LANGUAGE_UpdateWindowCaption(); + + /* Change Resource names */ + lstrcpyn(STRING_MENU_Xx + sizeof(STRING_MENU_Xx) - 3, lang, 3); + lstrcpyn(STRING_PAGESETUP_Xx + sizeof(STRING_PAGESETUP_Xx) - 3, lang, 3); + + /* Create menu */ + hMainMenu = LoadMenu(Globals.hInstance, STRING_MENU_Xx); + Globals.hFileMenu = GetSubMenu(hMainMenu, 0); + Globals.hEditMenu = GetSubMenu(hMainMenu, 1); + Globals.hSearchMenu = GetSubMenu(hMainMenu, 2); + Globals.hLanguageMenu = GetSubMenu(hMainMenu, 3); + Globals.hHelpMenu = GetSubMenu(hMainMenu, 4); + + /* Remove dummy item */ + RemoveMenu(Globals.hLanguageMenu, 0, MF_BYPOSITION); + /* Add language items */ + for (i = 0; i <= MAX_LANGUAGE_NUMBER; i++) + if (LANGUAGE_LoadStringOther(i, IDS_LANGUAGE_MENU_ITEM, item, sizeof(item))) + AppendMenu(Globals.hLanguageMenu, MF_STRING | MF_BYCOMMAND, + NP_FIRST_LANGUAGE + i, item); + + SetMenu(Globals.hMainWnd, hMainMenu); + + /* Destroy old menu */ + if (Globals.hMainMenu) DestroyMenu(Globals.hMainMenu); + Globals.hMainMenu = hMainMenu; +} + +VOID LANGUAGE_DefaultHandle(WPARAM wParam) +{ + if ((wParam >=NP_FIRST_LANGUAGE) && (wParam<=NP_LAST_LANGUAGE)) + LANGUAGE_SelectByNumber(wParam - NP_FIRST_LANGUAGE); + else printf("Unimplemented menu command %i\n", wParam); +} diff --git a/reactos/apps/utils/notepad/language.h b/reactos/apps/utils/notepad/language.h new file mode 100644 index 00000000000..0ee51c3f9fc --- /dev/null +++ b/reactos/apps/utils/notepad/language.h @@ -0,0 +1,12 @@ +/* + * Notepad + * + * Copyright 1997,98 Marcel Baur + * Copyright 1998 Karl Backstr”m + */ + +VOID LANGUAGE_UpdateWindowCaption(VOID); +VOID LANGUAGE_SelectByNumber(UINT num); +VOID LANGUAGE_SelectByName(LPCSTR lang); +VOID LANGUAGE_DefaultHandle(WPARAM wParam); + diff --git a/reactos/apps/utils/notepad/lcc.h b/reactos/apps/utils/notepad/lcc.h new file mode 100644 index 00000000000..fd2c8ff138a --- /dev/null +++ b/reactos/apps/utils/notepad/lcc.h @@ -0,0 +1,39 @@ +/* + * lcc.h + * + * Copyright 1999 by Marcel Baur + * To be distributed under the Wine license + * + * This file is only required when compiling Notepad using LCC-WIN32 + */ + +#ifdef LCC + + #include + #include "shellapi.h" + + #define HANDLE HANDLE + #define INVALID_HANDLE_VALUE INVALID_HANDLE_VALUE + + #define WINE_RELEASE_INFO "Compiled using LCC" + #define OIC_WINLOGO 0 + + #ifndef LCC_HASASSERT + /* prevent multiple inclusion of assert methods */ + + int _assertfail(char *__msg, char *__cond, char *__file, int __line) { + + CHAR szMessage[255]; + + strcat(szMessage, "Assert failure "); + strcat(szMessage, __msg); + strcat(szMessage, "\n"); + strcat(szMessage, "in line "); + strcat(szMessage, "of file "); + strcat(szMessage, __line); + + MessageBox(0, szMessage, "ERROR: ASSERT FAILURE", MB_ICONEXCLAMATION); + } + #endif + +#endif diff --git a/reactos/apps/utils/notepad/lccmake b/reactos/apps/utils/notepad/lccmake new file mode 100644 index 00000000000..e3b684c2d36 --- /dev/null +++ b/reactos/apps/utils/notepad/lccmake @@ -0,0 +1,89 @@ +# +# Makefile for LCC-WIN32 +# +# Copyright 1999 Marcel Baur (mbaur@g26.ethz.ch) +# To be distributed under the Wine License +# +# Use lccmake -f lccmake to use this makefile +# +# See http://www.cs.virgina.edu/~lcc-win32 for +# information about LCC-WIN32 +# + +# +# LCC home directory +# +LCCHOME=C:\LCC + +# +# individual flags for LCC, LCCLNK, LRC +# +CFLAGS=-O -DLCC -g2 +LNKFLAGS=-O winepad.exe -subsystem windows +LRCFLAGS=/r /v /m + +# +# available languages +# +LANGUAGES=Da De En Es Fi Fr Sw + +# +# default language +# +LANGUAGE=En + +# +# required include libraries +# +LIBS=SHELL32.LIB + +# +# object files +# +OBJS=main.obj dialog.obj license.obj license_En.obj language.obj + +# +# ---[ it is save not to change anything behind this line ]--- # +# + +winepad.exe: $(OBJS) resources + $(LCCHOME)\bin\lcclnk $(LNKFLAGS) $(OBJS) notepad.res $(LIBS) + @echo *** "winepad.exe" successfully created + +resources: $(RESOURCES) + FOR %%i IN ($(LANGUAGES)) DO $(LCCHOME)\bin\lrc $(LRCFLAGS) %%i.rc + copy /b $(LANGUAGE).res notepad.res + +clean: + if exist winepad.exe erase winepad.exe + if exist main.obj erase main.obj + if exist dialog.obj erase dialog.obj + if exist license.obj erase license.obj + if exist license_En.obj erase license_En.obj + if exist language.obj erase language.obj + if exist notepad.res erase notepad.res + FOR %%i IN ($(LANGUAGES)) DO IF EXIST %%i.res erase %%i.res + FOR %%i IN ($(LANGUAGES)) DO IF EXIST %%i.map erase %%i.map + +help: + @echo lccmake help - display this help + @echo lccmake - to compile winepad.exe + @echo lccmake resources - to compile .res files + @echo lccmake clean - to clean up + + +# +# some more targets (for novice users and compatibility reasons only) +# + +distclean: clean + @echo *** next time please use "lccmake clean" + +all: winepad.exe + @echo *** next time please use "lccmake" (without parameters) + + +# +# please make sure that at least one empty line follows this statement +# + diff --git a/reactos/apps/utils/notepad/license.c b/reactos/apps/utils/notepad/license.c new file mode 100644 index 00000000000..fad6880e4cc --- /dev/null +++ b/reactos/apps/utils/notepad/license.c @@ -0,0 +1,27 @@ +/* + * Notepad (license.h) + * + * Copyright 1997,98 Marcel Baur + * To be distributed under the Wine License + */ + +#include "windows.h" +#include "license.h" + +VOID WineLicense(HWND Wnd) +{ + /* FIXME: should load strings from resources */ + LICENSE *License = &WineLicense_En; + MessageBox(Wnd, License->License, License->LicenseCaption, + MB_ICONINFORMATION | MB_OK); +} + + +VOID WineWarranty(HWND Wnd) +{ + /* FIXME: should load strings from resources */ + LICENSE *License = &WineLicense_En; + MessageBox(Wnd, License->Warranty, License->WarrantyCaption, + MB_ICONEXCLAMATION | MB_OK); +} + diff --git a/reactos/apps/utils/notepad/license.h b/reactos/apps/utils/notepad/license.h new file mode 100644 index 00000000000..4b9a203b6fd --- /dev/null +++ b/reactos/apps/utils/notepad/license.h @@ -0,0 +1,39 @@ +/* + * Notepad (license.h) + * + * Copyright 1997,98 Marcel Baur + * To be distributed under the Wine License + */ + +VOID WineLicense(HWND hWnd); +VOID WineWarranty(HWND hWnd); + +typedef struct +{ + LPCSTR License, LicenseCaption; + LPCSTR Warranty, WarrantyCaption; +} LICENSE; + +/* +extern LICENSE WineLicense_Ca; +extern LICENSE WineLicense_Cz; +extern LICENSE WineLicense_Da; +extern LICENSE WineLicense_De; +*/ + +extern LICENSE WineLicense_En; + +/* +extern LICENSE WineLicense_Eo; +extern LICENSE WineLicense_Es; +extern LICENSE WineLicense_Fi; +extern LICENSE WineLicense_Fr; +extern LICENSE WineLicense_Hu; +extern LICENSE WineLicense_It; +extern LICENSE WineLicense_Ko; +extern LICENSE WineLicense_No; +extern LICENSE WineLicense_Pl; +extern LICENSE WineLicense_Po; +extern LICENSE WineLicense_Sw; +extern LICENSE WineLicense_Va; +*/ diff --git a/reactos/apps/utils/notepad/main.c b/reactos/apps/utils/notepad/main.c new file mode 100644 index 00000000000..575a8cc0d8e --- /dev/null +++ b/reactos/apps/utils/notepad/main.c @@ -0,0 +1,982 @@ +/* + * Notepad + * + * Copyright 2000 Mike McCormack + * Copyright 1997,98 Marcel Baur + * To be distributed under the Wine License + * + * FIXME,TODO list: + * - Use wine Heap instead of malloc/free (done) + * - use scroll bars (vertical done) + * - cut 'n paste (clipboard) + * - save file + * - print file + * - find dialog + * - encapsulate data structures (?) - half done + * - free unused memory + * - solve Open problems + * - smoother scrolling + * - separate view code and document code + * + * This program is intended as a testbed for winelib as much as + * a useful application. + */ + +#include +#include "windows.h" + +#ifdef LCC +#include "lcc.h" +#endif + +#include "main.h" +#include "license.h" +#include "dialog.h" +#include "language.h" + +extern BOOL DoCloseFile(void); +extern void DoOpenFile(LPCSTR szFileName); + +NOTEPAD_GLOBALS Globals; + + +/* Using a pointer to pointer data structure to + achieve a little more efficiency. Hopefully + it will be worth it, because it complicates the + code - mjm 26 Jun 2000 */ + +#define BUFFERCHUNKSIZE 0xe0 +typedef struct TAGLine { + LPSTR lpLine; + DWORD dwWidth; + DWORD dwMaxWidth; +} LINE, *LPLINE; + +/* FIXME: make this info into a structure */ +/* typedef struct tagBUFFER { */ +DWORD dwVOffset=0; +DWORD dwLines=0; +DWORD dwMaxLines=0; +LPLINE lpBuffer=NULL; +DWORD dwXpos=0,dwYpos=0; /* position of caret in char coords */ +DWORD dwCaretXpos=0,dwCaretYpos=0; /* position of caret in pixel coords */ +TEXTMETRIC tm; /* textmetric for current font */ +RECT rectClient; /* client rectangle of the window we're drawing in */ +/* } BUFFER, *LPBUFFER */ + +VOID InitFontInfo(HWND hWnd) +{ + HDC hDC = GetDC(hWnd); + + if(hDC) + { + GetTextMetrics(hDC, &tm); + ReleaseDC(hWnd,hDC); + } +} + +void InitBuffer(void) +{ + lpBuffer = NULL; + dwLines = 0; + dwMaxLines = 0; + dwXpos=0; + dwYpos=0; +} + +/* convert x,y character co-ords into x pixel co-ord */ +DWORD CalcStringWidth(HDC hDC, DWORD x, DWORD y) +{ + DWORD len; + SIZE size; + + size.cx = 0; + size.cy = 0; + + if(y>dwLines) + return size.cx; + if(lpBuffer == NULL) + return size.cx; + if(lpBuffer[y].lpLine == NULL) + return size.cx; + len = (x(dwYpos+1); i--) + { + lpBuffer[i] = lpBuffer[i-1]; + RenderLine(hDC,i); + } + ZeroMemory(&lpBuffer[dwYpos+1],sizeof(LINE)); + + /* copy the characters after the carat (if any) to the next line */ + src = &lpBuffer[dwYpos].lpLine[dwXpos]; + cnt = lpBuffer[dwYpos].dwWidth-dwXpos; + if(!ValidateLine(dwYpos+1,cnt)) /* allocates the buffer */ + return FALSE; /* FIXME */ + dst = &lpBuffer[dwYpos+1].lpLine[0]; + memcpy(dst, src, cnt); + lpBuffer[dwYpos+1].dwWidth = cnt; + lpBuffer[dwYpos].dwWidth -= cnt; + + /* move the cursor */ + dwLines++; + dwXpos = 0; + dwYpos++; + + /* update the window */ + RenderLine(hDC, dwYpos-1); + RenderLine(hDC, dwYpos); + CalcCaretPos(hDC, dwXpos, dwYpos); + /* FIXME: don't use globals */ + SetScrollRange(Globals.hMainWnd, SB_VERT, 0, dwLines, TRUE); + + return TRUE; +} + +/* + * Attempt a basic edit buffer + */ +BOOL AddCharToBuffer(HDC hDC, char ch) +{ + /* we can use lpBuffer[dwYpos] */ + if(!ValidateLine(dwYpos,0)) + return FALSE; + + /* shuffle the rest of the line*/ + if(!ValidateLine(dwYpos, lpBuffer[dwYpos].dwWidth)) + return FALSE; + lpBuffer[dwYpos].dwWidth++; + memmove(&lpBuffer[dwYpos].lpLine[dwXpos+1], + &lpBuffer[dwYpos].lpLine[dwXpos], + lpBuffer[dwYpos].dwWidth-dwXpos); + + /* add the character */ + lpBuffer[dwYpos].lpLine[dwXpos] = ch; + if(dwLines == 0) + dwLines++; + dwXpos++; + + /* update the window and cursor position */ + RenderLine(hDC,dwYpos); + CalcCaretPos(hDC,dwXpos,dwYpos); + + return TRUE; +} + + +/* erase a character */ +BOOL DoBackSpace(HDC hDC) +{ + DWORD i; + + if(lpBuffer == NULL) + return FALSE; + if(lpBuffer[dwYpos].lpLine && (dwXpos>0)) + { + dwXpos --; + /* FIXME: use memmove */ + for(i=dwXpos; i<(lpBuffer[dwYpos].dwWidth-1); i++) + lpBuffer[dwYpos].lpLine[i]=lpBuffer[dwYpos].lpLine[i+1]; + + lpBuffer[dwYpos].dwWidth--; + RenderLine(hDC, dwYpos); + CalcCaretPos(hDC,dwXpos,dwYpos); + } + else + { + /* Erase a newline. To do this we join two lines */ + LPSTR src, dest; + DWORD len, oldlen; + + if(dwYpos==0) + return FALSE; + + oldlen = lpBuffer[dwYpos-1].dwWidth; + if(lpBuffer[dwYpos-1].lpLine&&lpBuffer[dwYpos].lpLine) + { + /* concatonate to the end of the line above line */ + src = &lpBuffer[dwYpos].lpLine[0]; + dest = &lpBuffer[dwYpos-1].lpLine[lpBuffer[dwYpos-1].dwWidth]; + len = lpBuffer[dwYpos].dwWidth; + + /* check the length of the new line */ + if(!ValidateLine(dwYpos-1,lpBuffer[dwYpos-1].dwWidth + len)) + return FALSE; + + memcpy(dest,src,len); + lpBuffer[dwYpos-1].dwWidth+=len; + GlobalFree( (HGLOBAL)lpBuffer[dwYpos].lpLine); + } + else if (!lpBuffer[dwYpos-1].lpLine) + { + lpBuffer[dwYpos-1]=lpBuffer[dwYpos]; + } /* else both are NULL */ + RenderLine(hDC,dwYpos-1); + + /* don't zero - it's going to get trashed anyhow */ + + /* shuffle up all the lines below this one */ + for(i=dwYpos; i<(dwLines-1); i++) + { + lpBuffer[i] = lpBuffer[i+1]; + RenderLine(hDC,i); + } + + /* clear the last line */ + ZeroMemory(&lpBuffer[dwLines-1],sizeof (LINE)); + RenderLine(hDC,dwLines-1); + dwLines--; + + /* adjust the cursor position to joining point */ + dwYpos--; + dwXpos = oldlen; + + CalcCaretPos(hDC,dwXpos,dwYpos); + SetScrollRange(Globals.hMainWnd, SB_VERT, 0, dwLines, TRUE); + } + return TRUE; +} + +/* as used by File->New */ +void TrashBuffer(void) +{ + DWORD i; + + /* variables belonging to the buffer */ + if(lpBuffer) + { + for(i=0; i= dwLines) + { + return FALSE; + } + dwYpos++; + if (dwXpos>lpBuffer[dwYpos].dwWidth) + GotoEndOfLine(hWnd); + return TRUE; +} + +BOOL GotoUp(HWND hWnd) +{ + if(dwYpos==0) + return FALSE; + dwYpos--; + if (dwXpos>lpBuffer[dwYpos].dwWidth) + GotoEndOfLine(hWnd); + return TRUE; +} + +BOOL GotoLeft(HWND hWnd) +{ + if(dwXpos > 0) + { + dwXpos--; + return TRUE; + } + if(GotoUp(hWnd)) + return GotoEndOfLine(hWnd); + return FALSE; +} + +BOOL GotoRight(HWND hWnd) +{ + if(dwXpos(dwVOffset+GetLinesPerPage(hWnd))) + { + dwVOffset = dwYpos - GetLinesPerPage(hWnd) + 1; + return TRUE; + } + return FALSE; +} + +/* FIXME: move the window around so we can still see the caret */ +VOID DoEdit(HWND hWnd, WPARAM wParam, LPARAM lParam) +{ + HDC hDC; + + if(lpBuffer==NULL) + return; + switch(wParam) + { + case VK_HOME: GotoHome(hWnd); + break; + + case VK_END: GotoEndOfLine(hWnd); + break; + + case VK_LEFT: GotoLeft(hWnd); + break; + + case VK_RIGHT: GotoRight(hWnd); + break; + + case VK_DOWN: GotoDown(hWnd); + break; + + case VK_UP: GotoUp(hWnd); + break; + + default: + return; + } + + hDC = GetDC(hWnd); + if(hDC) + { + CalcCaretPos(hDC, dwXpos, dwYpos); + ReleaseDC(hWnd,hDC); + } + if(ScrollABit(hWnd)) + InvalidateRect(hWnd, NULL, FALSE); +} + +void ButtonDownToCaretPos(HWND hWnd, WPARAM wParam, LPARAM lParam) +{ + DWORD x, y, caretx, carety; + BOOL refine_guess = TRUE; + HDC hDC; + + x = LOWORD(lParam); + y = HIWORD(lParam); + + caretx = x/tm.tmAveCharWidth; /* guess */ + carety = dwVOffset + y/tm.tmHeight; + + hDC = GetDC(hWnd); + + if(lpBuffer == NULL) + { + caretx = 0; + carety = 0; + refine_guess = FALSE; + } + + /* if the cursor is past the bottom, put it after the last char */ + if(refine_guess && (carety>=dwLines) ) + { + carety=dwLines-1; + caretx=lpBuffer[carety].dwWidth; + refine_guess = FALSE; + } + + /* cursor past end of line? */ + if(refine_guess && (x>CalcStringWidth(hDC,lpBuffer[carety].dwWidth,carety))) + { + caretx = lpBuffer[carety].dwWidth; + refine_guess = FALSE; + } + + /* FIXME: doesn't round properly */ + if(refine_guess) + { + if(CalcStringWidth(hDC,caretx,carety)0)&&(CalcStringWidth(hDC,caretx-1,carety)>x)) + caretx--; + } + } + + /* set the caret's position */ + dwXpos = caretx; + dwYpos = carety; + CalcCaretPos(hDC, caretx, carety); + ReleaseDC(hWnd,hDC); +} + +void DoScroll(HWND hWnd, WPARAM wParam, LPARAM lParam) +{ + DWORD dy = GetLinesPerPage(hWnd); + + switch(wParam) /* vscroll code */ + { + case SB_LINEUP: + if(dwVOffset) + dwVOffset--; + break; + case SB_LINEDOWN: + if(dwVOffset dwLines) + dwVOffset = dwLines - 1; + break; + case SB_PAGEDOWN: + if( dy > dwVOffset) + dwVOffset=0; + break; + } + /* position scroll */ + SetScrollPos(hWnd, SB_VERT, dwVOffset, TRUE); +} + +/*********************************************************************** + * + * NOTEPAD_MenuCommand + * + * All handling of main menu events + */ + +int NOTEPAD_MenuCommand (WPARAM wParam) +{ + switch (wParam) { + case NP_FILE_NEW: DIALOG_FileNew(); break; + case NP_FILE_OPEN: DIALOG_FileOpen(); break; + case NP_FILE_SAVE: DIALOG_FileSave(); break; + case NP_FILE_SAVEAS: DIALOG_FileSaveAs(); break; + case NP_FILE_PRINT: DIALOG_FilePrint(); break; + case NP_FILE_PAGESETUP: DIALOG_FilePageSetup(); break; + case NP_FILE_PRINTSETUP: DIALOG_FilePrinterSetup();break; + case NP_FILE_EXIT: DIALOG_FileExit(); break; + + case NP_EDIT_UNDO: DIALOG_EditUndo(); break; + case NP_EDIT_CUT: DIALOG_EditCut(); break; + case NP_EDIT_COPY: DIALOG_EditCopy(); break; + case NP_EDIT_PASTE: DIALOG_EditPaste(); break; + case NP_EDIT_DELETE: DIALOG_EditDelete(); break; + case NP_EDIT_SELECTALL: DIALOG_EditSelectAll(); break; + case NP_EDIT_TIMEDATE: DIALOG_EditTimeDate();break; + case NP_EDIT_WRAP: DIALOG_EditWrap(); break; + + case NP_SEARCH_SEARCH: DIALOG_Search(); break; + case NP_SEARCH_NEXT: DIALOG_SearchNext(); break; + + case NP_HELP_CONTENTS: DIALOG_HelpContents(); break; + case NP_HELP_SEARCH: DIALOG_HelpSearch(); break; + case NP_HELP_ON_HELP: DIALOG_HelpHelp(); break; + case NP_HELP_LICENSE: DIALOG_HelpLicense(); break; + case NP_HELP_NO_WARRANTY: DIALOG_HelpNoWarranty(); break; + case NP_HELP_ABOUT_WINE: DIALOG_HelpAboutWine(); break; + + /* Handle languages */ + default: + LANGUAGE_DefaultHandle(wParam); + } + return 0; +} + + + +/*********************************************************************** + * + * NOTEPAD_WndProc + */ + +LRESULT WINAPI NOTEPAD_WndProc (HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) +{ + PAINTSTRUCT ps; + HDC hContext; + HANDLE hDrop; /* drag & drop */ + CHAR szFileName[MAX_STRING_LEN]; + RECT Windowsize; + + lstrcpy(szFileName, ""); + + switch (msg) { + + case WM_CREATE: + GetClientRect(hWnd, &rectClient); + InitFontInfo(hWnd); + break; + + case WM_SETFOCUS: + CreateCaret(Globals.hMainWnd, 0, 1, tm.tmHeight); + SetCaretPos(dwCaretXpos, dwCaretYpos); + ShowCaret(Globals.hMainWnd); + break; + + case WM_KILLFOCUS: + DestroyCaret(); + break; + + case WM_PAINT: + GetClientRect(hWnd, &rectClient); + hContext = BeginPaint(hWnd, &ps); + RenderWindow(hContext); + EndPaint(hWnd, &ps); + break; + + case WM_KEYDOWN: + DoEdit(hWnd, wParam, lParam); + break; + + case WM_CHAR: + GetClientRect(hWnd, &rectClient); + HideCaret(hWnd); + hContext = GetDC(hWnd); + DoInput(hContext,wParam,lParam); + ReleaseDC(hWnd,hContext); + ShowCaret(hWnd); + break; + + case WM_LBUTTONDOWN: + /* figure out where the mouse was clicked */ + ButtonDownToCaretPos(hWnd, wParam, lParam); + break; + + case WM_VSCROLL: + DoScroll(hWnd, wParam, lParam); + InvalidateRect(hWnd, NULL, FALSE); /* force a redraw */ + break; + + case WM_COMMAND: + /* FIXME: this is a bit messy */ + NOTEPAD_MenuCommand(wParam); + InvalidateRect(hWnd, NULL, FALSE); /* force a redraw */ + hContext = GetDC(hWnd); + CalcCaretPos(hContext,dwXpos,dwYpos); + ReleaseDC(hWnd,hContext); + break; + + case WM_DESTROYCLIPBOARD: + MessageBox(Globals.hMainWnd, "Empty clipboard", "Debug", MB_ICONEXCLAMATION); + break; + + case WM_CLOSE: + if (DoCloseFile()) { + PostQuitMessage(0); + } + break; + + case WM_DESTROY: + PostQuitMessage (0); + break; + + case WM_SIZE: + GetClientRect(Globals.hMainWnd, &Windowsize); + break; + + case WM_DROPFILES: + /* User has dropped a file into main window */ + hDrop = (HANDLE) wParam; + DragQueryFile(hDrop, 0, (CHAR *) &szFileName, sizeof(szFileName)); + DragFinish(hDrop); + DoOpenFile(szFileName); + break; + + default: + return DefWindowProc (hWnd, msg, wParam, lParam); + } + return 0l; +} + + + +/*********************************************************************** + * + * WinMain + */ + +int PASCAL WinMain (HINSTANCE hInstance, HINSTANCE prev, LPSTR cmdline, int show) +{ + MSG msg; + WNDCLASS class; + char className[] = "NPClass"; /* To make sure className >= 0x10000 */ + char winName[] = "Notepad"; + + /* setup buffer */ + InitBuffer(); + + /* Setup Globals */ + + Globals.lpszIniFile = "notepad.ini"; + Globals.lpszIcoFile = "notepad.ico"; + + Globals.hInstance = hInstance; + +#ifndef LCC + Globals.hMainIcon = ExtractIcon(Globals.hInstance, + Globals.lpszIcoFile, 0); +#endif + /* icon breakage in ros + if (!Globals.hMainIcon) { + Globals.hMainIcon = LoadIcon(0, MAKEINTRESOURCE(DEFAULTICON)); + } + */ + + lstrcpy(Globals.szFindText, ""); + lstrcpy(Globals.szFileName, ""); + lstrcpy(Globals.szMarginTop, "25 mm"); + lstrcpy(Globals.szMarginBottom, "25 mm"); + lstrcpy(Globals.szMarginLeft, "20 mm"); + lstrcpy(Globals.szMarginRight, "20 mm"); + lstrcpy(Globals.szHeader, "&n"); + lstrcpy(Globals.szFooter, "Page &s"); + lstrcpy(Globals.Buffer, "Hello World"); + + if (!prev){ + class.style = CS_HREDRAW | CS_VREDRAW; + class.lpfnWndProc = NOTEPAD_WndProc; + class.cbClsExtra = 0; + class.cbWndExtra = 0; + class.hInstance = Globals.hInstance; + class.hIcon = LoadIcon (0, IDI_APPLICATION); + class.hCursor = LoadCursor (0, IDC_ARROW); + class.hbrBackground = GetStockObject (WHITE_BRUSH); + class.lpszMenuName = 0; + class.lpszClassName = className; + } + + if (!RegisterClass (&class)) return FALSE; + + /* Setup windows */ + + + Globals.hMainWnd = CreateWindow (className, winName, + WS_OVERLAPPEDWINDOW + WS_HSCROLL + WS_VSCROLL, + CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, 0, + LoadMenu(Globals.hInstance, STRING_MENU_Xx), + Globals.hInstance, 0); + + Globals.hFindReplaceDlg = 0; + + LANGUAGE_SelectByNumber(0); + + SetMenu(Globals.hMainWnd, Globals.hMainMenu); + + ShowWindow (Globals.hMainWnd, show); + UpdateWindow (Globals.hMainWnd); + + /* Set up dialogs */ + + /* Identify Messages originating from FindReplace */ + + Globals.nCommdlgFindReplaceMsg = RegisterWindowMessage("commdlg_FindReplace"); + if (Globals.nCommdlgFindReplaceMsg==0) { + MessageBox(Globals.hMainWnd, "Could not register commdlg_FindReplace window message", + "Error", MB_ICONEXCLAMATION); + } + + /* now handle command line */ + + while (*cmdline && (*cmdline == ' ' || *cmdline == '-')) + + { + CHAR option; +/* LPCSTR topic_id; */ + + if (*cmdline++ == ' ') continue; + + option = *cmdline; + if (option) cmdline++; + while (*cmdline && *cmdline == ' ') cmdline++; + + switch(option) + { + case 'p': + case 'P': printf("Print file: "); + /* Not yet able to print a file */ + break; + } + } + + /* Set up Drag&Drop */ + + DragAcceptFiles(Globals.hMainWnd, TRUE); + + /* now enter mesage loop */ + + while (GetMessage (&msg, 0, 0, 0)) { + + /* Message belongs to FindReplace dialog */ + /* We just let IsDialogMessage handle it */ + /* BTW - DnD is broken under ROS */ + + /* if (IsDialogMessage(Globals.hFindReplaceDlg, &msg)!=0) { + } + else */ + { + /* Message belongs to the Notepad Main Window */ + TranslateMessage (&msg); + DispatchMessage (&msg); + } + } + return 0; +} diff --git a/reactos/apps/utils/notepad/main.h b/reactos/apps/utils/notepad/main.h new file mode 100644 index 00000000000..7ca295a82c0 --- /dev/null +++ b/reactos/apps/utils/notepad/main.h @@ -0,0 +1,148 @@ +/* + * Notepad (notepad.h) + * + * Copyright 1997,98 Marcel Baur + * To be distributed under the Wine License + */ + +#define MAX_STRING_LEN 255 +#define MAX_PATHNAME_LEN 1024 +#define MAX_LANGUAGE_NUMBER (NP_LAST_LANGUAGE - NP_FIRST_LANGUAGE) + +#define HELPFILE "notepad.hlp" +#define LOGPREFIX ".LOG" +#define DEFAULTICON OIC_WINLOGO + +/* hide the following from winerc */ +#ifndef RC_INVOKED + +typedef struct +{ + HANDLE hInstance; + HWND hMainWnd; + HWND hFindReplaceDlg; + HICON hMainIcon; + HICON hDefaultIcon; + HMENU hMainMenu; + HMENU hFileMenu; + HMENU hEditMenu; + HMENU hSearchMenu; + HMENU hLanguageMenu; + HMENU hHelpMenu; + LPCSTR lpszIniFile; + LPCSTR lpszIcoFile; + UINT wStringTableOffset; + BOOL bWrapLongLines; + CHAR szFindText[MAX_PATHNAME_LEN]; + CHAR szReplaceText[MAX_PATHNAME_LEN]; + CHAR szFileName[MAX_PATHNAME_LEN]; + CHAR szMarginTop[MAX_PATHNAME_LEN]; + CHAR szMarginBottom[MAX_PATHNAME_LEN]; + CHAR szMarginLeft[MAX_PATHNAME_LEN]; + CHAR szMarginRight[MAX_PATHNAME_LEN]; + CHAR szHeader[MAX_PATHNAME_LEN]; + CHAR szFooter[MAX_PATHNAME_LEN]; + + FINDREPLACE find; + WORD nCommdlgFindReplaceMsg; + CHAR Buffer[12000]; +} NOTEPAD_GLOBALS; + +extern NOTEPAD_GLOBALS Globals; + +/* function prototypes */ + +void TrashBuffer(void); +void LoadBufferFromFile(LPCSTR lpFileName); + +/* class names */ + +/* Resource names */ +extern CHAR STRING_MENU_Xx[]; +extern CHAR STRING_PAGESETUP_Xx[]; + +#define STRINGID(id) (0x##id + Globals.wStringTableOffset) + +#else /* RC_INVOKED */ + +#define STRINGID(id) id + +#endif + +/* string table index */ +#define IDS_LANGUAGE_ID STRINGID(00) +#define IDS_LANGUAGE_MENU_ITEM STRINGID(01) +#define IDS_NOTEPAD STRINGID(02) +#define IDS_TEXT_FILES_TXT STRINGID(03) +#define IDS_ALL_FILES STRINGID(04) +#define IDS_ERROR STRINGID(05) +#define IDS_WARNING STRINGID(06) +#define IDS_INFO STRINGID(07) +#define IDS_TOOLARGE STRINGID(08) +#define IDS_NOTEXT STRINGID(09) +#define IDS_NOTSAVED STRINGID(0A) +#define IDS_NOTFOUND STRINGID(0B) +#define IDS_OUT_OF_MEMORY STRINGID(0C) +#define IDS_UNTITLED STRINGID(0D) + +#define IDS_PAGESETUP_HEADERVALUE STRINGID(0E) +#define IDS_PAGESETUP_FOOTERVALUE STRINGID(0F) +#define IDS_PAGESETUP_LEFTVALUE STRINGID(10) +#define IDS_PAGESETUP_RIGHTVALUE STRINGID(11) +#define IDS_PAGESETUP_TOPVALUE STRINGID(12) +#define IDS_PAGESETUP_BOTTOMVALUE STRINGID(13) + +/* main menu */ + +#define NP_FILE_NEW 100 +#define NP_FILE_OPEN 101 +#define NP_FILE_SAVE 102 +#define NP_FILE_SAVEAS 103 +#define NP_FILE_PRINT 104 +#define NP_FILE_PAGESETUP 105 +#define NP_FILE_PRINTSETUP 106 +#define NP_FILE_EXIT 107 + +#define NP_EDIT_UNDO 200 +#define NP_EDIT_CUT 201 +#define NP_EDIT_COPY 202 +#define NP_EDIT_PASTE 203 +#define NP_EDIT_DELETE 204 +#define NP_EDIT_SELECTALL 205 +#define NP_EDIT_TIMEDATE 206 +#define NP_EDIT_WRAP 207 + +#define NP_SEARCH_SEARCH 300 +#define NP_SEARCH_NEXT 301 + +#define NP_FIRST_LANGUAGE 400 +#define NP_LAST_LANGUAGE 499 + +#define NP_HELP_CONTENTS 500 +#define NP_HELP_SEARCH 501 +#define NP_HELP_ON_HELP 502 +#define NP_HELP_LICENSE 503 +#define NP_HELP_NO_WARRANTY 504 +#define NP_HELP_ABOUT_WINE 505 + + +/* Dialog `Page Setup' */ + +#define NP_PAGESETUP_HEAD 1000 +#define NP_PAGESETUP_HEAD_TXT 1001 +#define NP_PAGESETUP_TAIL 1002 +#define NP_PAGESETUP_TAIL_TXT 1003 +#define NP_PAGESETUP_LEFT 1004 +#define NP_PAGESETUP_LEFT_TXT 1005 +#define NP_PAGESETUP_RIGHT 1006 +#define NP_PAGESETUP_RIGHT_TXT 1007 +#define NP_PAGESETUP_TOP 1008 +#define NP_PAGESETUP_TOP_TXT 1009 +#define NP_PAGESETUP_BOTTOM 1010 +#define NP_PAGESETUP_BOTTOM_TXT 1011 +#define NP_HELP 1012 +#define NP_PAGESETUP_MARGIN 1013 + +/* Local Variables: */ +/* c-file-style: "GNU" */ +/* End: */ diff --git a/reactos/apps/utils/notepad/notepad.rc b/reactos/apps/utils/notepad/notepad.rc new file mode 100644 index 00000000000..fa14a82face --- /dev/null +++ b/reactos/apps/utils/notepad/notepad.rc @@ -0,0 +1,188 @@ +/* + * Notepad (notepad.rc) + * + * Copyright 1997,98 Marcel Baur + * To be distributed under the Wine License + */ + +/* Main Menu */ + +CONCAT(MENU_, LANGUAGE_ID) MENU +{ + POPUP MENU_FILE { + MENUITEM MENU_FILE_NEW, NP_FILE_NEW + MENUITEM MENU_FILE_OPEN, NP_FILE_OPEN + MENUITEM MENU_FILE_SAVE, NP_FILE_SAVE + MENUITEM MENU_FILE_SAVEAS, NP_FILE_SAVEAS + MENUITEM MENU_FILE_PRINT, NP_FILE_PRINT + MENUITEM MENU_FILE_PAGESETUP, NP_FILE_PAGESETUP + MENUITEM MENU_FILE_PRINTSETUP, NP_FILE_PRINTSETUP + MENUITEM SEPARATOR + MENUITEM MENU_FILE_EXIT, NP_FILE_EXIT + } + POPUP MENU_EDIT { + MENUITEM MENU_EDIT_UNDO, NP_EDIT_UNDO + MENUITEM SEPARATOR + MENUITEM MENU_EDIT_CUT, NP_EDIT_CUT + MENUITEM MENU_EDIT_COPY, NP_EDIT_COPY + MENUITEM MENU_EDIT_PASTE, NP_EDIT_PASTE + MENUITEM MENU_EDIT_DELETE, NP_EDIT_DELETE + MENUITEM SEPARATOR + MENUITEM MENU_EDIT_SELECTALL, NP_EDIT_SELECTALL + MENUITEM MENU_EDIT_TIMEDATE, NP_EDIT_TIMEDATE + MENUITEM SEPARATOR + MENUITEM MENU_EDIT_WRAP, NP_EDIT_WRAP + } + POPUP MENU_SEARCH { + MENUITEM MENU_SEARCH_SEARCH, NP_SEARCH_SEARCH + MENUITEM MENU_SEARCH_NEXT, NP_SEARCH_NEXT + } + POPUP MENU_LANGUAGE { + /* Dummy item, will be removed */ + MENUITEM SEPARATOR + } + POPUP MENU_HELP { + MENUITEM MENU_HELP_CONTENTS, NP_HELP_CONTENTS + MENUITEM MENU_HELP_SEARCH, NP_HELP_SEARCH + MENUITEM MENU_HELP_HELP_ON_HELP, NP_HELP_ON_HELP + MENUITEM SEPARATOR + + POPUP MENU_INFO { + MENUITEM MENU_INFO_LICENSE, NP_HELP_LICENSE + MENUITEM MENU_INFO_NO_WARRANTY, NP_HELP_NO_WARRANTY + MENUITEM MENU_INFO_ABOUT_WINE, NP_HELP_ABOUT_WINE + } + } + +} + +/* Dialog `Page setup' */ + +CONCAT(DIALOG_PAGESETUP_, LANGUAGE_ID) DIALOG 0, 0, 225, 95 +STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU +FONT 8, "Helv" +CAPTION DIALOG_PAGESETUP_CAPTION +{ +LTEXT DIALOG_PAGESETUP_HEAD, NP_PAGESETUP_HEAD_TXT, 10, 07, 40, 15 +EDITTEXT NP_PAGESETUP_HEAD, 60, 05,110, 12, WS_BORDER | WS_TABSTOP +LTEXT DIALOG_PAGESETUP_TAIL, NP_PAGESETUP_TAIL_TXT, 10, 24, 40, 15 +EDITTEXT NP_PAGESETUP_TAIL, 60, 22,110, 12, WS_BORDER | WS_TABSTOP + +GROUPBOX DIALOG_PAGESETUP_MARGIN, NP_PAGESETUP_MARGIN, 10, 43,160, 45 +LTEXT DIALOG_PAGESETUP_LEFT, NP_PAGESETUP_LEFT_TXT, 20, 55, 30, 10, WS_CHILD +EDITTEXT /*STRING_PAGESETUP_LEFTVALUE,*/ NP_PAGESETUP_LEFT, 50, 55, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP +LTEXT DIALOG_PAGESETUP_TOP, NP_PAGESETUP_TOP_TXT, 20, 73, 30, 10, WS_CHILD +EDITTEXT /*STRING_PAGESETUP_TOPVALUE,*/ NP_PAGESETUP_TOP, 50, 73, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP +LTEXT DIALOG_PAGESETUP_RIGHT, NP_PAGESETUP_RIGHT_TXT, 100, 55, 30, 10, WS_CHILD +EDITTEXT /*STRING_PAGESETUP_RIGHTVALUE,*/ NP_PAGESETUP_RIGHT, 130, 55, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP +LTEXT DIALOG_PAGESETUP_BOTTOM, NP_PAGESETUP_BOTTOM_TXT,100, 73, 30, 10, WS_CHILD +EDITTEXT /*STRING_PAGESETUP_BOTTOMVALUE,*/ NP_PAGESETUP_BOTTOM, 130, 73, 35, 11, WS_CHILD | WS_BORDER | WS_TABSTOP + + +DEFPUSHBUTTON DIALOG_OK, IDOK, 180, 3, 40, 15, WS_TABSTOP +PUSHBUTTON DIALOG_CANCEL, IDCANCEL, 180, 21, 40, 15, WS_TABSTOP +PUSHBUTTON DIALOG_HELP, NP_HELP, 180, 39, 40, 15, WS_TABSTOP +} + + +/* Strings */ + +#define STRING_LANGUAGE_ID STRINGIFY(LANGUAGE_ID) +#define STRING_LANGUAGE_MENU_ITEM LANGUAGE_MENU_ITEM + +STRINGTABLE +{ +ADDSTRING(LANGUAGE_ID) +ADDSTRING(LANGUAGE_MENU_ITEM) +ADDSTRING(NOTEPAD) +ADDSTRING(TEXT_FILES_TXT) +ADDSTRING(ALL_FILES) +ADDSTRING(ERROR) +ADDSTRING(WARNING) +ADDSTRING(INFO) +ADDSTRING(TOOLARGE) +ADDSTRING(NOTEXT) +ADDSTRING(NOTSAVED) +ADDSTRING(NOTFOUND) +ADDSTRING(OUT_OF_MEMORY) +ADDSTRING(UNTITLED) +ADDSTRING(PAGESETUP_HEADERVALUE) +ADDSTRING(PAGESETUP_FOOTERVALUE) +ADDSTRING(PAGESETUP_LEFTVALUE) +ADDSTRING(PAGESETUP_RIGHTVALUE) +ADDSTRING(PAGESETUP_TOPVALUE) +ADDSTRING(PAGESETUP_BOTTOMVALUE) +} + + +/* Undefine all language-specific strings */ + +#undef LANGUAGE_ID +#undef LANGUAGE_NUMBER +#undef LANGUAGE_MENU_ITEM + +#undef MENU_FILE +#undef MENU_FILE_NEW +#undef MENU_FILE_OPEN +#undef MENU_FILE_SAVE +#undef MENU_FILE_SAVEAS +#undef MENU_FILE_PRINT +#undef MENU_FILE_PAGESETUP +#undef MENU_FILE_PRINTSETUP +#undef MENU_FILE_EXIT +#undef MENU_EDIT +#undef MENU_EDIT_UNDO +#undef MENU_EDIT_CUT +#undef MENU_EDIT_COPY +#undef MENU_EDIT_PASTE +#undef MENU_EDIT_DELETE +#undef MENU_EDIT_SELECTALL +#undef MENU_EDIT_TIMEDATE +#undef MENU_EDIT_WRAP +#undef MENU_SEARCH +#undef MENU_SEARCH_SEARCH +#undef MENU_SEARCH_NEXT +#undef MENU_LANGUAGE +#undef MENU_HELP +#undef MENU_HELP_CONTENTS +#undef MENU_HELP_SEARCH +#undef MENU_HELP_HELP_ON_HELP +#undef MENU_INFO +#undef MENU_INFO_LICENSE +#undef MENU_INFO_NO_WARRANTY +#undef MENU_INFO_ABOUT_WINE + +#undef DIALOG_OK +#undef DIALOG_CANCEL +#undef DIALOG_BROWSE +#undef DIALOG_HELP +#undef DIALOG_PAGESETUP_CAPTION +#undef DIALOG_PAGESETUP_HEAD +#undef DIALOG_PAGESETUP_TAIL +#undef DIALOG_PAGESETUP_MARGIN +#undef DIALOG_PAGESETUP_LEFT +#undef DIALOG_PAGESETUP_RIGHT +#undef DIALOG_PAGESETUP_TOP +#undef DIALOG_PAGESETUP_BOTTOM + +#undef STRING_LANGUAGE_ID +#undef STRING_LANGUAGE_MENU_ITEM +#undef STRING_PAGESETUP_HEADERVALUE +#undef STRING_PAGESETUP_FOOTERVALUE +#undef STRING_PAGESETUP_LEFTVALUE +#undef STRING_PAGESETUP_RIGHTVALUE +#undef STRING_PAGESETUP_TOPVALUE +#undef STRING_PAGESETUP_BOTTOMVALUE +#undef STRING_NOTEPAD +#undef STRING_ERROR +#undef STRING_WARNING +#undef STRING_INFO +#undef STRING_UNTITLED +#undef STRING_ALL_FILES +#undef STRING_TEXT_FILES_TXT +#undef STRING_TOOLARGE +#undef STRING_NOTEXT +#undef STRING_NOTSAVED +#undef STRING_NOTFOUND +#undef STRING_OUT_OF_MEMORY + diff --git a/reactos/apps/utils/notepad/ros.h b/reactos/apps/utils/notepad/ros.h new file mode 100644 index 00000000000..7dc50ad46f0 --- /dev/null +++ b/reactos/apps/utils/notepad/ros.h @@ -0,0 +1,4 @@ + +/* Missing Functions in ros */ +#define HFILE_ERROR ((HFILE)-1) /* Should be in winbase.h */ +#define SP_APPABORT (-2) /* wingdi.h */ diff --git a/reactos/apps/utils/notepad/rsrc.rc b/reactos/apps/utils/notepad/rsrc.rc new file mode 100644 index 00000000000..3ee32786389 --- /dev/null +++ b/reactos/apps/utils/notepad/rsrc.rc @@ -0,0 +1,27 @@ +/* This works under windows but were not going to worry about icons under ros yet. */ +/* 500 ICON MOVEABLE PURE LOADONCALL DISCARDABLE "C:/BIN/COMPILER/Icon/Mainicon.ico" */ + +#include "windows.h" +#include "main.h" + +#define CONCAT(a, b) CONCAT1(a, b) +#define CONCAT1(a, b) a##b + +#define ADDSTRING(str) ADDSTRING1(LANGUAGE_NUMBER, IDS_ ## str) STRING_ ## str +#define ADDSTRING1(langnum, ids) ADDSTRING2(langnum, ids) +#define ADDSTRING2(langnum, ids) 0x ## langnum ## ids + +#define STRINGIFY(str) STRINGIFY1(str) +#define STRINGIFY1(str) #str + +#include "Da.rc" +#include "De.rc" +#include "En.rc" +#include "Es.rc" +#include "Fi.rc" +#include "Fr.rc" +#include "Pt.rc" +#include "Sk.rc" +#include "Sw.rc" +#include "Wa.rc" + diff --git a/reactos/apps/utils/notepad/search.c b/reactos/apps/utils/notepad/search.c new file mode 100644 index 00000000000..3be3fbfde84 --- /dev/null +++ b/reactos/apps/utils/notepad/search.c @@ -0,0 +1,56 @@ +/* + * Notepad (search.c) + * Copyright (C) 1999 by Marcel Baur + * To be distributed under the Wine license + * + * This file features Heuristic Boyer-Moore Text Search + * + * Always: - Buf is the Buffer containing the whole text + * ======= - SP is the Search Pattern, which has to be found in Buf. + * + */ + +#include + + #define CHARSETSIZE 255 + + int delta[CHARSETSIZE]; + + /* rightmostpos: return rightmost position of ch in szSP (or -1) */ + int rightmostpos(char ch, LPSTR szSP, int nSPLen) { + int i = nSPLen; + while ((i>0) & (szSP[i]!=ch)) i--; + return(i); + } + + /* setup_delta: setup delta1 cache */ + void setup_delta(LPSTR szSP, int nSPLen) { + int i; + + for (i=0; i delta[(int)szBuf[i]]) { + i+= (nSPLen-j+1); + } else { + i+= delta[(int)szBuf[i]]; + } + } + } while (j>0 && i<=nBufLen); + return(i+1); + } +