From 9ac05365f7e85c290699bf1abb069c5d1bf28def Mon Sep 17 00:00:00 2001 From: Kimmo Varis Date: Tue, 12 Aug 2003 11:55:05 +0000 Subject: [PATCH] PATCH: [ 785288 ] Overwrite Read-Only file --- .../ChineseSimplified/MergeChineseSimplified.rc | 50 +-- .../ChineseTraditional/MergeChineseTraditional.rc | 52 +-- Src/Languages/Czech/MergeCzech.rc | 4 +- Src/Languages/Danish/MergeDanish.rc | 4 +- Src/Languages/Dutch/MergeDutch.rc | 4 +- Src/Languages/French/MergeFrench.rc | 4 +- Src/Languages/German/MergeGerman.rc | 4 +- Src/Languages/Italian/MergeItalian.rc | 4 +- Src/Languages/Korean/MergeKorean.rc | 4 +- Src/Languages/Slovak/MergeSlovak.rc | 4 +- Src/Languages/Spanish/MergeSpanish.rc | 4 +- Src/MainFrm.cpp | 416 ++++++++++++--------- Src/MainFrm.h | 3 + Src/Merge.rc | 4 +- Src/MergeDoc.cpp | 25 +- Src/readme.txt | 5 + 16 files changed, 340 insertions(+), 251 deletions(-) diff --git a/Src/Languages/ChineseSimplified/MergeChineseSimplified.rc b/Src/Languages/ChineseSimplified/MergeChineseSimplified.rc index 473be9301..969355607 100644 --- a/Src/Languages/ChineseSimplified/MergeChineseSimplified.rc +++ b/Src/Languages/ChineseSimplified/MergeChineseSimplified.rc @@ -194,34 +194,34 @@ END IDR_MAINFRAME ACCELERATORS FIXED IMPURE BEGIN "A", ID_EDIT_SELECT_ALL, VIRTKEY, CONTROL, NOINVERT - "C", ID_EDIT_COPY, VIRTKEY, CONTROL, NOINVERT - "F", ID_EDIT_FIND, VIRTKEY, CONTROL, NOINVERT - "H", ID_EDIT_REPLACE, VIRTKEY, CONTROL, NOINVERT - "N", ID_FILE_NEW, VIRTKEY, CONTROL, NOINVERT - "O", ID_FILE_OPEN, VIRTKEY, CONTROL, NOINVERT - "P", ID_FILE_PRINT, VIRTKEY, CONTROL, NOINVERT - "S", ID_FILE_SAVE, VIRTKEY, CONTROL, NOINVERT - "V", ID_EDIT_PASTE, VIRTKEY, CONTROL, NOINVERT + "C", ID_EDIT_COPY, VIRTKEY, CONTROL, NOINVERT + "F", ID_EDIT_FIND, VIRTKEY, CONTROL, NOINVERT + "H", ID_EDIT_REPLACE, VIRTKEY, CONTROL, NOINVERT + "N", ID_FILE_NEW, VIRTKEY, CONTROL, NOINVERT + "O", ID_FILE_OPEN, VIRTKEY, CONTROL, NOINVERT + "P", ID_FILE_PRINT, VIRTKEY, CONTROL, NOINVERT + "S", ID_FILE_SAVE, VIRTKEY, CONTROL, NOINVERT + "V", ID_EDIT_PASTE, VIRTKEY, CONTROL, NOINVERT "X", ID_EDIT_CUT, VIRTKEY, CONTROL, NOINVERT "Y", ID_EDIT_REDO, VIRTKEY, CONTROL, NOINVERT "Z", ID_EDIT_UNDO, VIRTKEY, CONTROL, NOINVERT - VK_BACK, ID_EDIT_UNDO, VIRTKEY, ALT, NOINVERT - VK_DELETE, ID_EDIT_CUT, VIRTKEY, SHIFT, NOINVERT - VK_DOWN, ID_NEXTDIFF, VIRTKEY, ALT, NOINVERT - VK_END, ID_LASTDIFF, VIRTKEY, ALT, NOINVERT - VK_F3, ID_EDIT_REPEAT, VIRTKEY, NOINVERT - VK_F3, ID_EDIT_FIND_PREVIOUS, VIRTKEY, SHIFT, NOINVERT + VK_BACK, ID_EDIT_UNDO, VIRTKEY, ALT, NOINVERT + VK_DELETE, ID_EDIT_CUT, VIRTKEY, SHIFT, NOINVERT + VK_DOWN, ID_NEXTDIFF, VIRTKEY, ALT, NOINVERT + VK_END, ID_LASTDIFF, VIRTKEY, ALT, NOINVERT + VK_F3, ID_EDIT_REPEAT, VIRTKEY, NOINVERT + VK_F3, ID_EDIT_FIND_PREVIOUS, VIRTKEY, SHIFT, NOINVERT VK_F4, ID_SHOWLINEDIFF, VIRTKEY, NOINVERT - VK_F5, ID_REFRESH, VIRTKEY, NOINVERT - VK_F6, ID_NEXT_PANE, VIRTKEY, NOINVERT - VK_F6, ID_PREV_PANE, VIRTKEY, SHIFT, NOINVERT - VK_HOME, ID_FIRSTDIFF, VIRTKEY, ALT, NOINVERT - VK_INSERT, ID_EDIT_COPY, VIRTKEY, CONTROL, NOINVERT - VK_INSERT, ID_EDIT_PASTE, VIRTKEY, SHIFT, NOINVERT - VK_LEFT, ID_R2L, VIRTKEY, ALT, NOINVERT - VK_RETURN, ID_CURDIFF, VIRTKEY, ALT, NOINVERT - VK_RIGHT, ID_L2R, VIRTKEY, ALT, NOINVERT - VK_UP, ID_PREVDIFF, VIRTKEY, ALT, NOINVERT + VK_F5, ID_REFRESH, VIRTKEY, NOINVERT + VK_F6, ID_NEXT_PANE, VIRTKEY, NOINVERT + VK_F6, ID_PREV_PANE, VIRTKEY, SHIFT, NOINVERT + VK_HOME, ID_FIRSTDIFF, VIRTKEY, ALT, NOINVERT + VK_INSERT, ID_EDIT_COPY, VIRTKEY, CONTROL, NOINVERT + VK_INSERT, ID_EDIT_PASTE, VIRTKEY, SHIFT, NOINVERT + VK_LEFT, ID_R2L, VIRTKEY, ALT, NOINVERT + VK_RETURN, ID_CURDIFF, VIRTKEY, ALT, NOINVERT + VK_RIGHT, ID_L2R, VIRTKEY, ALT, NOINVERT + VK_UP, ID_PREVDIFF, VIRTKEY, ALT, NOINVERT END @@ -634,7 +634,7 @@ BEGIN IDS_FILESSAME "Ñ¡ÔñµÄÎļþÍêÈ«Ïàͬ¡£" IDS_FILEUNIQUE "Ñ¡ÔñµÄÎļþ²»´æÔÚÓÚÁ½±ßµÄÎļþ¼Ð£¬Òò´ËÎÞ·¨±È¶Ô¡£" IDS_FILEERROR "Ò»¸ö´íÎó·¢ÉúÓڱȶÔÎļþʱ¡£" - IDS_SAVEREADONLY_FMT "%1 ±ê¼ÇΪֻ¶Á¡£ ÄúÒªÒÔÒ»¸ö²»Í¬µÄúû³Æ±£´æÎļþÂð£¿" + IDS_SAVEREADONLY_FMT "%1 is marked read-only. Would you like to override the read-only file ? (No to save as new filename.)" IDS_SAVE_FMT "±£´æ¸ü¸Äµ½ %1£¿" IDS_FILEBINARY "¶þ½øÖÆÎļþÎÞ·¨×÷ÊÓ¾õµÄ±È¶Ô¡£" IDS_SAVEVSS_FMT "%1 ±ê¼ÇΪֻ¶Á¡£ ÄúÒª´Ó°æ±¾ÏµÍ³¼ì²éËü£¬»¹ÊÇÒÔÒ»¸ö²»Í¬µÄÃû³Æ±£´æËü£¿" diff --git a/Src/Languages/ChineseTraditional/MergeChineseTraditional.rc b/Src/Languages/ChineseTraditional/MergeChineseTraditional.rc index 75497f157..ed2ddc8bf 100644 --- a/Src/Languages/ChineseTraditional/MergeChineseTraditional.rc +++ b/Src/Languages/ChineseTraditional/MergeChineseTraditional.rc @@ -1,5 +1,7 @@ //Microsoft Developer Studio generated resource script. // +// $Id$ + #include "resource.h" #define APSTUDIO_READONLY_SYMBOLS @@ -193,34 +195,34 @@ END IDR_MAINFRAME ACCELERATORS FIXED IMPURE BEGIN "A", ID_EDIT_SELECT_ALL, VIRTKEY, CONTROL, NOINVERT - "C", ID_EDIT_COPY, VIRTKEY, CONTROL, NOINVERT - "F", ID_EDIT_FIND, VIRTKEY, CONTROL, NOINVERT - "H", ID_EDIT_REPLACE, VIRTKEY, CONTROL, NOINVERT - "N", ID_FILE_NEW, VIRTKEY, CONTROL, NOINVERT - "O", ID_FILE_OPEN, VIRTKEY, CONTROL, NOINVERT - "P", ID_FILE_PRINT, VIRTKEY, CONTROL, NOINVERT - "S", ID_FILE_SAVE, VIRTKEY, CONTROL, NOINVERT - "V", ID_EDIT_PASTE, VIRTKEY, CONTROL, NOINVERT + "C", ID_EDIT_COPY, VIRTKEY, CONTROL, NOINVERT + "F", ID_EDIT_FIND, VIRTKEY, CONTROL, NOINVERT + "H", ID_EDIT_REPLACE, VIRTKEY, CONTROL, NOINVERT + "N", ID_FILE_NEW, VIRTKEY, CONTROL, NOINVERT + "O", ID_FILE_OPEN, VIRTKEY, CONTROL, NOINVERT + "P", ID_FILE_PRINT, VIRTKEY, CONTROL, NOINVERT + "S", ID_FILE_SAVE, VIRTKEY, CONTROL, NOINVERT + "V", ID_EDIT_PASTE, VIRTKEY, CONTROL, NOINVERT "X", ID_EDIT_CUT, VIRTKEY, CONTROL, NOINVERT "Y", ID_EDIT_REDO, VIRTKEY, CONTROL, NOINVERT "Z", ID_EDIT_UNDO, VIRTKEY, CONTROL, NOINVERT - VK_BACK, ID_EDIT_UNDO, VIRTKEY, ALT, NOINVERT - VK_DELETE, ID_EDIT_CUT, VIRTKEY, SHIFT, NOINVERT - VK_DOWN, ID_NEXTDIFF, VIRTKEY, ALT, NOINVERT - VK_END, ID_LASTDIFF, VIRTKEY, ALT, NOINVERT - VK_F3, ID_EDIT_REPEAT, VIRTKEY, NOINVERT - VK_F3, ID_EDIT_FIND_PREVIOUS, VIRTKEY, SHIFT, NOINVERT + VK_BACK, ID_EDIT_UNDO, VIRTKEY, ALT, NOINVERT + VK_DELETE, ID_EDIT_CUT, VIRTKEY, SHIFT, NOINVERT + VK_DOWN, ID_NEXTDIFF, VIRTKEY, ALT, NOINVERT + VK_END, ID_LASTDIFF, VIRTKEY, ALT, NOINVERT + VK_F3, ID_EDIT_REPEAT, VIRTKEY, NOINVERT + VK_F3, ID_EDIT_FIND_PREVIOUS, VIRTKEY, SHIFT, NOINVERT VK_F4, ID_SHOWLINEDIFF, VIRTKEY, NOINVERT - VK_F5, ID_REFRESH, VIRTKEY, NOINVERT - VK_F6, ID_NEXT_PANE, VIRTKEY, NOINVERT - VK_F6, ID_PREV_PANE, VIRTKEY, SHIFT, NOINVERT - VK_HOME, ID_FIRSTDIFF, VIRTKEY, ALT, NOINVERT - VK_INSERT, ID_EDIT_COPY, VIRTKEY, CONTROL, NOINVERT - VK_INSERT, ID_EDIT_PASTE, VIRTKEY, SHIFT, NOINVERT - VK_LEFT, ID_R2L, VIRTKEY, ALT, NOINVERT - VK_RETURN, ID_CURDIFF, VIRTKEY, ALT, NOINVERT - VK_RIGHT, ID_L2R, VIRTKEY, ALT, NOINVERT - VK_UP, ID_PREVDIFF, VIRTKEY, ALT, NOINVERT + VK_F5, ID_REFRESH, VIRTKEY, NOINVERT + VK_F6, ID_NEXT_PANE, VIRTKEY, NOINVERT + VK_F6, ID_PREV_PANE, VIRTKEY, SHIFT, NOINVERT + VK_HOME, ID_FIRSTDIFF, VIRTKEY, ALT, NOINVERT + VK_INSERT, ID_EDIT_COPY, VIRTKEY, CONTROL, NOINVERT + VK_INSERT, ID_EDIT_PASTE, VIRTKEY, SHIFT, NOINVERT + VK_LEFT, ID_R2L, VIRTKEY, ALT, NOINVERT + VK_RETURN, ID_CURDIFF, VIRTKEY, ALT, NOINVERT + VK_RIGHT, ID_L2R, VIRTKEY, ALT, NOINVERT + VK_UP, ID_PREVDIFF, VIRTKEY, ALT, NOINVERT END @@ -633,7 +635,7 @@ BEGIN IDS_FILESSAME "¿ï¨úªºÀɮק¹¥þ¬Û¦P¡C" IDS_FILEUNIQUE "¿ï¨úªºÀɮפ£¦s¦b©ó¨âÃ䪺¸ê®Æ§¨¡A¦]¦¹µLªk¤ñ¹ï¡C" IDS_FILEERROR "¤@­Ó¿ù»~µo¥Í©ó¤ñ¹ïÀɮ׮ɡC" - IDS_SAVEREADONLY_FMT "%1 ¼Ð°O¬°°ßŪ¡C §A­n¥H¤@­Ó¤£¦Pªº¦WºÙÀx¦sÀɮ׶ܡH" + IDS_SAVEREADONLY_FMT "%1 is marked read-only. Would you like to override the read-only file ? (No to save as new filename.)" IDS_SAVE_FMT "Àx¦s§ó§ï¨ì %1¡H" IDS_FILEBINARY "¤G¶i¨îÀÉ®×µLªk§@µøıªº¤ñ¹ï¡C" IDS_SAVEVSS_FMT "%1 ¼Ð°O¬°°ßŪ¡C §A­n±qª©¥»¨t²ÎÀˬd¥¦¡AÁÙ¬O¥H¤@­Ó¤£¦Pªº¦WºÙÀx¦s¥¦¡H" diff --git a/Src/Languages/Czech/MergeCzech.rc b/Src/Languages/Czech/MergeCzech.rc index b2aff74ad..f728d6dcb 100644 --- a/Src/Languages/Czech/MergeCzech.rc +++ b/Src/Languages/Czech/MergeCzech.rc @@ -1,5 +1,7 @@ //Microsoft Developer Studio generated resource script. // +// $Id$ + #include "resource.h" #define APSTUDIO_READONLY_SYMBOLS @@ -924,7 +926,7 @@ BEGIN IDS_FILESSAME "Vybrané soubory jsou shodné." IDS_FILEUNIQUE "Vybraný soubor neexistuje v obou adresáøích a nelze provést porovnání." IDS_FILEERROR "Bìhem porovnávání se vyskytla chyba." - IDS_SAVEREADONLY_FMT "%1 je oznaèen pouze ke ètení. Chcete jej uložit pod jiným jménem?" + IDS_SAVEREADONLY_FMT "%1 is marked read-only. Would you like to override the read-only file ? (No to save as new filename.)" IDS_SAVE_FMT "Uložit zmìny do %1?" IDS_FILEBINARY "Binární soubory nelze porovnat." IDS_SAVEVSS_FMT "%1 je oznaèen pouze ke ètení. Chcete jej zkontrolovat pomocí SourceSafe nebo uložit pod jiným jménem?" diff --git a/Src/Languages/Danish/MergeDanish.rc b/Src/Languages/Danish/MergeDanish.rc index 727c62991..ac4500eed 100644 --- a/Src/Languages/Danish/MergeDanish.rc +++ b/Src/Languages/Danish/MergeDanish.rc @@ -1,5 +1,7 @@ //Microsoft Developer Studio generated resource script. // +// $Id$ + #include "resource.h" #define APSTUDIO_READONLY_SYMBOLS @@ -923,7 +925,7 @@ BEGIN IDS_FILESSAME "De valgte filer er identiske." IDS_FILEUNIQUE "Den valgte fil eksistere ikke i begge mapper og kan derfor ikke sammenlignes" IDS_FILEERROR "Der skete en fejl under sammenligning af filerne." - IDS_SAVEREADONLY_FMT "%1 er markeret som skrivebeskyttet. Vil du gemme filen under et andet navn?" + IDS_SAVEREADONLY_FMT "%1 is marked read-only. Would you like to override the read-only file ? (No to save as new filename.)" IDS_SAVE_FMT "Gem ændringer til %1?" IDS_FILEBINARY "Binære filer kan ikke sammenlignes visuelt." IDS_SAVEVSS_FMT "%1 er markeret som skrivebeskyttet. Vil du checke filen ud fra et versionsstyringssystem, eller gemme den under et andet navn?" diff --git a/Src/Languages/Dutch/MergeDutch.rc b/Src/Languages/Dutch/MergeDutch.rc index 73e4cc447..e7baed28b 100644 --- a/Src/Languages/Dutch/MergeDutch.rc +++ b/Src/Languages/Dutch/MergeDutch.rc @@ -1,5 +1,7 @@ //Microsoft Developer Studio generated resource script. // +// $Id$ + #include "resource.h" #define APSTUDIO_READONLY_SYMBOLS @@ -930,7 +932,7 @@ BEGIN IDS_FILESSAME "De geselecteerde bestanden zijn identiek" IDS_FILEUNIQUE "Het geselecteerde bestand bestaat slechts in een map en kon daarom niet vergeleken woren" IDS_FILEERROR "Fout opgetreden tijdens het vergelijken van de bestanden" - IDS_SAVEREADONLY_FMT "%1 mag alleen gelezen worden. Opslaan onder een andere naam?" + IDS_SAVEREADONLY_FMT "%1 is marked read-only. Would you like to override the read-only file ? (No to save as new filename.)" IDS_SAVE_FMT "Wijzigingen opslaan in %1?" IDS_FILEBINARY "Binaire bestanden kunnen niet zichtbaar vergeleken worden." IDS_SAVEVSS_FMT "%1 mag alleen gelezen worden. Wil u een check out vanuit SourceSafe doen, of opslaan met een andere naam?" diff --git a/Src/Languages/French/MergeFrench.rc b/Src/Languages/French/MergeFrench.rc index 3faa6a858..2dfbd2a76 100644 --- a/Src/Languages/French/MergeFrench.rc +++ b/Src/Languages/French/MergeFrench.rc @@ -1,5 +1,7 @@ //Microsoft Developer Studio generated resource script. // +// $Id$ + #include "resource.h" #define APSTUDIO_READONLY_SYMBOLS @@ -928,7 +930,7 @@ BEGIN IDS_FILESSAME "Les fichiers sélectionnés sont identiques." IDS_FILEUNIQUE "Le fichier sélectionné n'existe pas dans les deux répertoires et ne peut donc pas être comparé." IDS_FILEERROR "Erreur lors de la comparaison des fichiers." - IDS_SAVEREADONLY_FMT "%1 est en lecture seule. Enregistrer le fichier sous un nouveau nom ?" + IDS_SAVEREADONLY_FMT "%1 is marked read-only. Would you like to override the read-only file ? (No to save as new filename.)" IDS_SAVE_FMT "Enregistrer les changements de %1 ?" IDS_FILEBINARY "Les fichiers binaires ne peuvent pas être comparés de manière visuelle." IDS_SAVEVSS_FMT "%1 est en lecture seule. Voulez-vous l'extraire de SourceSafe ou l'enregistrer sous un nouveau nom ?" diff --git a/Src/Languages/German/MergeGerman.rc b/Src/Languages/German/MergeGerman.rc index 6a3f642e8..3c2cba64d 100644 --- a/Src/Languages/German/MergeGerman.rc +++ b/Src/Languages/German/MergeGerman.rc @@ -1,5 +1,7 @@ //Microsoft Developer Studio generated resource script. // +// $Id$ + #include "resource.h" #define APSTUDIO_READONLY_SYMBOLS @@ -941,7 +943,7 @@ BEGIN IDS_FILESSAME "Die ausgewählten Dateien sind identisch." IDS_FILEUNIQUE "\nDie ausgewählte Datei ist nicht in beiden Verzeichnissen vorhanden und konnte deshalb nicht verglichen werden." IDS_FILEERROR "Beim Vergleichen der Dateien ist ein Fehler aufgetreten." - IDS_SAVEREADONLY_FMT "%1 ist schreibgeschützt. Wollen Sie die Datei unter einem anderen Namen abspeichern?" + IDS_SAVEREADONLY_FMT "%1 is marked read-only. Would you like to override the read-only file ? (No to save as new filename.)" IDS_SAVE_FMT "Änderungen in %1 speichern?" IDS_FILEBINARY "Binärdateien können nicht visuell verglichen werden." IDS_SAVEVSS_FMT "%1 ist schreibgeschützt. Wollen Sie die Datei aus SourceSafe auschecken oder unter einem anderen Namen abspeichern?" diff --git a/Src/Languages/Italian/MergeItalian.rc b/Src/Languages/Italian/MergeItalian.rc index 72725db4f..259c08e7e 100644 --- a/Src/Languages/Italian/MergeItalian.rc +++ b/Src/Languages/Italian/MergeItalian.rc @@ -1,5 +1,7 @@ //Microsoft Developer Studio generated resource script. // +// $Id$ + #include "resource.h" #define APSTUDIO_READONLY_SYMBOLS @@ -924,7 +926,7 @@ BEGIN IDS_FILESSAME "I file selezionati sono identici." IDS_FILEUNIQUE "Il file selezionato è presente unicamente in una due cartelle e pertanto non può essere confrontato." IDS_FILEERROR "Si è verificato un errore durante il confronto dei file." - IDS_SAVEREADONLY_FMT "%1 è un file di sola lettura. Vuoi salvarlo con un nome differente?" + IDS_SAVEREADONLY_FMT "%1 is marked read-only. Would you like to override the read-only file ? (No to save as new filename.)" IDS_SAVE_FMT "Vuoi salvare le modifiche in %1?" IDS_FILEBINARY "I file di tipo binario non possono essere confrontati visualmente." IDS_SAVEVSS_FMT "%1 è un file di sola lettura. Vuoi estrarlo da SourceSafe, o salvarlo con un nome differente?" diff --git a/Src/Languages/Korean/MergeKorean.rc b/Src/Languages/Korean/MergeKorean.rc index 9f2a7cac1..54e658718 100644 --- a/Src/Languages/Korean/MergeKorean.rc +++ b/Src/Languages/Korean/MergeKorean.rc @@ -1,5 +1,7 @@ // Microsoft Visual C++ generated resource script. // +// $Id$ + #include "resource.h" #define APSTUDIO_READONLY_SYMBOLS @@ -881,7 +883,7 @@ BEGIN IDS_FILESSAME "¼±ÅÃÇϽŠÆÄÀϵéÀº µ¿ÀÏÇÑ ³»¿ëÀÇ ÆÄÀϵéÀÔ´Ï´Ù.." IDS_FILEUNIQUE "¼±ÅÃÇϽŠÆÄÀÏÀº ¾çÂÊ µð·ºÅ丮¿¡ ¸ðµÎ Á¸ÀçÇÏ´Â ÆÄÀÏÀÌ ¾Æ´Õ´Ï´Ù." IDS_FILEERROR "ÆÄÀÏ ºñ±³ µµÁß ¿¡·¯°¡ ¹ß»ýÇß½À´Ï´Ù." - IDS_SAVEREADONLY_FMT "%1 Àº Àбâ Àü¿ë ÆÄÀÏÀÔ´Ï´Ù. ´Ù¸¥ À̸§À¸·Î ÀúÀåÇϽðڽÀ´Ï±î?" + IDS_SAVEREADONLY_FMT "%1 is marked read-only. Would you like to override the read-only file ? (No to save as new filename.)" IDS_SAVE_FMT "%1 ÀÇ º¯°æµÈ ºÎºÐÀ» ÀúÀåÇϽðڽÀ´Ï±î?" IDS_FILEBINARY "¹ÙÀ̳ʸ® ÆÄÀÏÀº ºñ±³ÇÏ½Ç ¼ö ¾ø½À´Ï´Ù." IDS_SAVEVSS_FMT "%1 Àº Àбâ Àü¿ë ÆÄÀÏÀÔ´Ï´Ù. ¹öÀü°ü¸®½Ã½ºÅÛ¿¡¼­ üũ¾Æ¿ôÇϰųª ´Ù¸¥ À̸§À¸·Î ÀúÀåÇϽðڽÀ´Ï±î?" diff --git a/Src/Languages/Slovak/MergeSlovak.rc b/Src/Languages/Slovak/MergeSlovak.rc index 2f2f4bcdd..62ec9e014 100644 --- a/Src/Languages/Slovak/MergeSlovak.rc +++ b/Src/Languages/Slovak/MergeSlovak.rc @@ -1,5 +1,7 @@ //Microsoft Developer Studio generated resource script. // +// $Id$ + #include "resource.h" #define APSTUDIO_READONLY_SYMBOLS @@ -926,7 +928,7 @@ BEGIN IDS_FILESSAME "Vybrané súbory sú rovnaké." IDS_FILEUNIQUE "Vybraný súbor neexistuje v oboch adresároch, nedá sa porovna." IDS_FILEERROR "Poèas porovnávania sa vyskytla chyba." - IDS_SAVEREADONLY_FMT "%1 je oznaèený len na èítanieí. Chcete ho uloži pod iným menom?" + IDS_SAVEREADONLY_FMT "%1 is marked read-only. Would you like to override the read-only file ? (No to save as new filename.)" IDS_SAVE_FMT "Uloži zmeny do %1?" IDS_FILEBINARY "Binárne súbory nemožno porovna." IDS_SAVEVSS_FMT "%1 je oznaèený len na èítanie. Chcete ho skontrolova pomocou SourceSafe alebo uloži pod iným menom?" diff --git a/Src/Languages/Spanish/MergeSpanish.rc b/Src/Languages/Spanish/MergeSpanish.rc index 25f05a6b2..1b4a42c73 100644 --- a/Src/Languages/Spanish/MergeSpanish.rc +++ b/Src/Languages/Spanish/MergeSpanish.rc @@ -1,5 +1,7 @@ //Microsoft Developer Studio generated resource script. // +// $Id$ + #include "resource.h" #define APSTUDIO_READONLY_SYMBOLS @@ -926,7 +928,7 @@ BEGIN IDS_FILESSAME "Los archivos indicados son iguales" IDS_FILEUNIQUE "El archivo indicado no se existe en los dos directorios y por eso, no se puede comparar." IDS_FILEERROR "Se ocurrió un error cuando estaba comparando los archivos" - IDS_SAVEREADONLY_FMT "%1 is marked read-only. Would you like to save the file under a different name?" + IDS_SAVEREADONLY_FMT "%1 is marked read-only. Would you like to override the read-only file ? (No to save as new filename.)" IDS_SAVE_FMT "Guardar los cambios a %1?" IDS_FILEBINARY "Archivos binarios no se puede comparar visualmente." IDS_SAVEVSS_FMT "%1 is marked read-only. Would you like to check it out from SourceSafe, or save it under a different name?" diff --git a/Src/MainFrm.cpp b/Src/MainFrm.cpp index 4a99dfb3c..5356b7cc6 100644 --- a/Src/MainFrm.cpp +++ b/Src/MainFrm.cpp @@ -20,6 +20,7 @@ ///////////////////////////////////////////////////////////////////////////// // MainFrm.cpp : implementation of the CMainFrame class // +// $Id$ #include "stdafx.h" #include "Merge.h" @@ -535,208 +536,249 @@ void CMainFrame::OnHelpGnulicense() ShellExecute(NULL, _T("open"), url, NULL, NULL, SW_SHOWNORMAL); } +/** +* @brief Check if file is read-only and save to version control if one is used. +* +* +* @param strSavePath Path where to save including filename +* +* @return Tells if caller can continue (no errors happened) +* +* @note If user selects "Cancel" FALSE is returned and caller must assume file +* is not saved. +* +* @sa SaveToVersionControl() +* +*/ BOOL CMainFrame::CheckSavePath(CString& strSavePath) { - BOOL needCheck; CFileStatus status; + UINT userChoice = 0; + BOOL bRetVal = TRUE; CString s; - // check if file is writeable - do + if (CFile::GetStatus(strSavePath, status)) { - needCheck = FALSE; - if (CFile::GetStatus(strSavePath, status)) + // If file is read-only + if (status.m_attribute & CFile::Attribute::readOnly) { - if (status.m_attribute & CFile::Attribute::readOnly) + // Version control system used? + if (m_nVerSys > 0) + bRetVal = SaveToVersionControl(strSavePath); + else { - int userChoice = IDCANCEL; - - switch(m_nVerSys) + CString title; + VERIFY(title.LoadString(IDS_SAVE_AS_TITLE)); + + // Prompt for user choice + AfxFormatString1(s, IDS_SAVEREADONLY_FMT, strSavePath); + userChoice = AfxMessageBox(s, MB_YESNOCANCEL | + MB_ICONQUESTION | MB_DEFBUTTON2); + switch (userChoice) { - case 0: //no versioning system - // prompt for user choice - AfxFormatString1(s, IDS_SAVEREADONLY_FMT, strSavePath); - if (AfxMessageBox(s, MB_YESNO|MB_ICONQUESTION) == IDYES) - { - userChoice = IDSAVEAS; - } + // Overwrite read-only file + case IDYES: + status.m_mtime = 0; // Avoid unwanted changes + status.m_attribute &= ~CFile::Attribute::readOnly; + CFile::SetStatus(strSavePath, status); break; - case 1: // Visual Source Safe - { - // prompt for user choice - CVssPrompt dlg; - dlg.m_strMessage.FormatMessage(IDS_SAVE_FMT, strSavePath); - dlg.m_strProject = m_strVssProject; - dlg.m_strUser = m_strVssUser; // BSP - Add VSS user name to dialog box - dlg.m_strPassword = m_strVssPassword; - userChoice = dlg.DoModal(); - // process versioning system specific action - if(userChoice==IDOK) - { - CWaitCursor wait; - m_strVssProject = dlg.m_strProject; - theApp.WriteProfileString(_T("Settings"), _T("VssProject"), mf->m_strVssProject); - CString spath, sname; - SplitFilename(strSavePath, &spath, &sname, 0); - if (!spath.IsEmpty()) - { - _chdrive(toupper(spath[0])-'A'+1); - _chdir(spath); - } - CString args; - args.Format(_T("checkout %s/%s"), m_strVssProject, sname); - HANDLE hVss = RunIt(m_strVssPath, args, TRUE, FALSE); - if (hVss!=INVALID_HANDLE_VALUE) - { - WaitForSingleObject(hVss, INFINITE); - DWORD code; - GetExitCodeProcess(hVss, &code); - CloseHandle(hVss); - if (code != 0) - { - AfxMessageBox(IDS_VSSERROR, MB_ICONSTOP); - return FALSE; - } - needCheck=FALSE; - } - else - { - AfxMessageBox(IDS_VSS_RUN_ERROR, MB_ICONSTOP); - return FALSE; - } - } - } + + // Save to new filename + case IDNO: + if (SelectFile(s, strSavePath, title, NULL, FALSE)) + strSavePath = s; + else + bRetVal = FALSE; + break; + + // Cancel saving + case IDCANCEL: + bRetVal = FALSE; break; - case 2: // CVisual SourceSafe 5.0+ (COM) - { - // prompt for user choice - CVssPrompt dlg; - dlg.m_strMessage.FormatMessage(IDS_SAVE_FMT, strSavePath); - dlg.m_strProject = m_strVssProject; - dlg.m_strUser = m_strVssUser; // BSP - Add VSS user name to dialog box - dlg.m_strPassword = m_strVssPassword; - userChoice = dlg.DoModal(); - // process versioning system specific action - if(userChoice==IDOK) - { - CWaitCursor wait; - m_strVssProject = dlg.m_strProject; - m_strVssUser = dlg.m_strUser; - m_strVssPassword = dlg.m_strPassword; - - theApp.WriteProfileString(_T("Settings"), _T("VssProject"), m_strVssProject); - theApp.WriteProfileString(_T("Settings"), _T("VssUser"), m_strVssUser); - theApp.WriteProfileString(_T("Settings"), _T("VssPassword"), m_strVssPassword); - - IVSSDatabase vssdb; - IVSSItems m_vssis; - IVSSItem m_vssi; - - COleException *eOleException = new COleException; - - // BSP - Create the COM interface pointer to VSS - if (FAILED(vssdb.CreateDispatch("SourceSafe", eOleException))) - { - throw eOleException; // catch block deletes. - } - else - { - eOleException->Delete(); - } - - // BSP - Open the specific VSS data file using info from VSS dialog box - vssdb.Open(m_strVssPath, m_strVssUser, m_strVssPassword); - - CString spath, sname; - SplitFilename(strSavePath, &spath, &sname, 0); - - // BSP - Combine the project entered on the dialog box with the file name... - CString strItem = m_strVssProject + '/' + sname; - - // BSP - ...to get the specific source safe item to be checked out - m_vssi = vssdb.GetVSSItem( strItem, 0 ); - - // BSP - Get the working directory where VSS will put the file... - CString strLocalSpec = m_vssi.GetLocalSpec(); - - // BSP - ...and compare it to the directory WinMerge is using. - if (strLocalSpec.CompareNoCase(strSavePath)) - { - // BSP - if the directories are different, let the user confirm the CheckOut - int iRes = AfxMessageBox("The VSS Working Folder and the location of the current file do not match. Continue?", MB_YESNO); - - if (iRes != IDYES) - return FALSE; // BSP - if not Yes, bail. - } - - // BSP - Finally! Check out the file! - m_vssi.Checkout("", strSavePath, 0); - } } - break; - case 3: // ClearCase - { - // prompt for user choice - CCCPrompt dlg; - userChoice = dlg.DoModal(); - // process versioning system specific action - if(userChoice == IDOK) - { - CWaitCursor wait; - CString spath, sname; - SplitFilename(strSavePath, &spath, &sname, 0); - if (!spath.IsEmpty()) - { - _chdrive(toupper(spath[0])-'A'+1); - _chdir(spath); - } - DWORD code; - CString args; - args.Format(_T("checkout -c \"%s\" %s"), dlg.m_comments, sname); - HANDLE hVss = RunIt(m_strVssPath, args, TRUE, FALSE); - if (hVss!=INVALID_HANDLE_VALUE) - { - WaitForSingleObject(hVss, INFINITE); - GetExitCodeProcess(hVss, &code); - CloseHandle(hVss); - - if (code != 0) - { - AfxMessageBox(IDS_VSSERROR, MB_ICONSTOP); - return FALSE; - } - needCheck=FALSE; - } - else - { - AfxMessageBox(IDS_VSS_RUN_ERROR, MB_ICONSTOP); - return FALSE; - } - } - } - break; - } //switch(m_nVerSys) - - // common processing for all version systems - switch(userChoice) + } + } + } + return bRetVal; +} + +/** +* @brief Saves file to selected version control system +* +* @param strSavePath Path where to save including filename +* +* @return Tells if caller can continue (no errors happened) +* +* @note +* +* @sa CheckSavePath() +* +*/ +BOOL CMainFrame::SaveToVersionControl(CString& strSavePath) +{ + CFileStatus status; + CString s; + UINT userChoice = 0; + + switch(m_nVerSys) + { + case 0: //no versioning system + // Already handled in CheckSavePath() + break; + case 1: // Visual Source Safe + { + // prompt for user choice + CVssPrompt dlg; + dlg.m_strMessage.FormatMessage(IDS_SAVE_FMT, strSavePath); + dlg.m_strProject = m_strVssProject; + dlg.m_strUser = m_strVssUser; // BSP - Add VSS user name to dialog box + dlg.m_strPassword = m_strVssPassword; + userChoice = dlg.DoModal(); + // process versioning system specific action + if(userChoice==IDOK) + { + CWaitCursor wait; + m_strVssProject = dlg.m_strProject; + theApp.WriteProfileString(_T("Settings"), _T("VssProject"), mf->m_strVssProject); + CString spath, sname; + SplitFilename(strSavePath, &spath, &sname, 0); + if (!spath.IsEmpty()) + { + _chdrive(toupper(spath[0])-'A'+1); + _chdir(spath); + } + CString args; + args.Format(_T("checkout %s/%s"), m_strVssProject, sname); + HANDLE hVss = RunIt(m_strVssPath, args, TRUE, FALSE); + if (hVss!=INVALID_HANDLE_VALUE) + { + WaitForSingleObject(hVss, INFINITE); + DWORD code; + GetExitCodeProcess(hVss, &code); + CloseHandle(hVss); + if (code != 0) { - case IDCANCEL: - return FALSE; - case IDSAVEAS: - CString title; - VERIFY(title.LoadString(IDS_SAVE_AS_TITLE)); - if (SelectFile(s, strSavePath, title, NULL, FALSE)) - { - strSavePath = s; - needCheck=TRUE; - } - else - return FALSE; - break; - } + AfxMessageBox(IDS_VSSERROR, MB_ICONSTOP); + return FALSE; } } - } while (needCheck); + else + { + AfxMessageBox(IDS_VSS_RUN_ERROR, MB_ICONSTOP); + return FALSE; + } + } + } + break; + case 2: // CVisual SourceSafe 5.0+ (COM) + { + // prompt for user choice + CVssPrompt dlg; + dlg.m_strMessage.FormatMessage(IDS_SAVE_FMT, strSavePath); + dlg.m_strProject = m_strVssProject; + dlg.m_strUser = m_strVssUser; // BSP - Add VSS user name to dialog box + dlg.m_strPassword = m_strVssPassword; + userChoice = dlg.DoModal(); + // process versioning system specific action + if(userChoice==IDOK) + { + CWaitCursor wait; + m_strVssProject = dlg.m_strProject; + m_strVssUser = dlg.m_strUser; + m_strVssPassword = dlg.m_strPassword; + + theApp.WriteProfileString(_T("Settings"), _T("VssProject"), m_strVssProject); + theApp.WriteProfileString(_T("Settings"), _T("VssUser"), m_strVssUser); + theApp.WriteProfileString(_T("Settings"), _T("VssPassword"), m_strVssPassword); + + IVSSDatabase vssdb; + IVSSItems m_vssis; + IVSSItem m_vssi; + + COleException *eOleException = new COleException; + + // BSP - Create the COM interface pointer to VSS + if (FAILED(vssdb.CreateDispatch("SourceSafe", eOleException))) + { + throw eOleException; // catch block deletes. + } + else + { + eOleException->Delete(); + } + + // BSP - Open the specific VSS data file using info from VSS dialog box + vssdb.Open(m_strVssPath, m_strVssUser, m_strVssPassword); + + CString spath, sname; + SplitFilename(strSavePath, &spath, &sname, 0); + + // BSP - Combine the project entered on the dialog box with the file name... + CString strItem = m_strVssProject + '/' + sname; + + // BSP - ...to get the specific source safe item to be checked out + m_vssi = vssdb.GetVSSItem( strItem, 0 ); + + // BSP - Get the working directory where VSS will put the file... + CString strLocalSpec = m_vssi.GetLocalSpec(); + + // BSP - ...and compare it to the directory WinMerge is using. + if (strLocalSpec.CompareNoCase(strSavePath)) + { + // BSP - if the directories are different, let the user confirm the CheckOut + int iRes = AfxMessageBox("The VSS Working Folder and the location of the current file do not match. Continue?", MB_YESNO); + + if (iRes != IDYES) + return FALSE; // BSP - if not Yes, bail. + } + + // BSP - Finally! Check out the file! + m_vssi.Checkout("", strSavePath, 0); + } + } + break; + case 3: // ClearCase + { + // prompt for user choice + CCCPrompt dlg; + userChoice = dlg.DoModal(); + // process versioning system specific action + if(userChoice == IDOK) + { + CWaitCursor wait; + CString spath, sname; + SplitFilename(strSavePath, &spath, &sname, 0); + if (!spath.IsEmpty()) + { + _chdrive(toupper(spath[0])-'A'+1); + _chdir(spath); + } + DWORD code; + CString args; + args.Format(_T("checkout -c \"%s\" %s"), dlg.m_comments, sname); + HANDLE hVss = RunIt(m_strVssPath, args, TRUE, FALSE); + if (hVss!=INVALID_HANDLE_VALUE) + { + WaitForSingleObject(hVss, INFINITE); + GetExitCodeProcess(hVss, &code); + CloseHandle(hVss); + + if (code != 0) + { + AfxMessageBox(IDS_VSSERROR, MB_ICONSTOP); + return FALSE; + } + } + else + { + AfxMessageBox(IDS_VSS_RUN_ERROR, MB_ICONSTOP); + return FALSE; + } + } + } + break; + } //switch(m_nVerSys) + return TRUE; } diff --git a/Src/MainFrm.h b/Src/MainFrm.h index 2c0062a2c..09b706fbe 100644 --- a/Src/MainFrm.h +++ b/Src/MainFrm.h @@ -20,6 +20,8 @@ // MainFrm.h : interface of the CMainFrame class // ///////////////////////////////////////////////////////////////////////////// +// +// $Id$ #if !defined(AFX_MAINFRM_H__BBCD4F8C_34E4_11D1_BAA6_00A024706EDC__INCLUDED_) #define AFX_MAINFRM_H__BBCD4F8C_34E4_11D1_BAA6_00A024706EDC__INCLUDED_ @@ -84,6 +86,7 @@ public: HMENU NewDefaultMenu(); BOOL CreateBackup(LPCTSTR pszPath); BOOL CheckSavePath(CString& strSavePath); + BOOL SaveToVersionControl(CString& strSavePath); CString SetStatus(LPCTSTR status); // Overrides diff --git a/Src/Merge.rc b/Src/Merge.rc index 898a1cb6b..2daa922d5 100644 --- a/Src/Merge.rc +++ b/Src/Merge.rc @@ -1,5 +1,7 @@ //Microsoft Developer Studio generated resource script. // +// $Id$ + #include "resource.h" #define APSTUDIO_READONLY_SYMBOLS @@ -953,7 +955,7 @@ BEGIN IDS_FILESSAME "The selected files are identical." IDS_FILEUNIQUE "The selected file didn't exist in both directories and therefore couldn't be compared." IDS_FILEERROR "An error occurred while comparing the files." - IDS_SAVEREADONLY_FMT "%1 is marked read-only. Would you like to save the file under a different name?" + IDS_SAVEREADONLY_FMT "%1 is marked read-only. Would you like to override the read-only file ? (No to save as new filename.)" IDS_SAVE_FMT "Save changes to %1?" IDS_FILEBINARY "Binary files cannot be visually compared." IDS_SAVEVSS_FMT "%1 is marked read-only. Would you like to check it out from Versioning System, or save it under a different name?" diff --git a/Src/MergeDoc.cpp b/Src/MergeDoc.cpp index b66b4da42..bdf4a1e88 100644 --- a/Src/MergeDoc.cpp +++ b/Src/MergeDoc.cpp @@ -20,6 +20,7 @@ ///////////////////////////////////////////////////////////////////////////// // MergeDoc.cpp : implementation of the CMergeDoc class // +// $Id$ #include "stdafx.h" #include "Merge.h" @@ -822,8 +823,24 @@ BOOL CMergeDoc::TrySaveAs(CString strPath, BOOL &bSaveSuccess, BOOL bLeft) return result; } -// Return value tells if caller can continue (no errors) -// bSaveSuccess is TRUE if file saving succeeded +/** +* @brief Save file creating backups etc +* Safe top-level file saving function. Checks validity of given path. +* Creates backup file if wanted to. And if saving to given path fails, +* allows user to select new location/name for file. +* +* @param szPath Path where to save including filename +* @param bSaveSuccess Will contain information about save success +* @param bLeft If TRUE we are saving left(side) file, else right file +* +* @return Tells if caller can continue (no errors happened) +* +* @note Return value does not tell if SAVING succeeded. Caller must +* Check value of bSaveSuccess parameter after calling this function! +* +* @sa +* +*/ BOOL CMergeDoc::DoSave(LPCTSTR szPath, BOOL &bSaveSuccess, BOOL bLeft) { CString strSavePath(szPath); @@ -963,10 +980,10 @@ BOOL CMergeDoc::LineInDiff(UINT nLine, UINT nDiff) int CMergeDoc::LineToDiff(UINT nLine) { for (UINT i = 0; i < m_nDiffs; i++) - { + { if (LineInDiff(nLine, i)) return i; - } + } return -1; } diff --git a/Src/readme.txt b/Src/readme.txt index 1b10dae1c..7eed6a52c 100644 --- a/Src/readme.txt +++ b/Src/readme.txt @@ -1,3 +1,8 @@ +2003-08-12 Kimmo + PATCH: [ 785288 ] Overwrite Read-Only file + WinMerge: MainFrm.h MainFrm.cpp Merge.rc MergeDoc.cpp + Languages: *.rc + 2003-08-07 Kimmo PATCH: [ 781013 ] 256 Color icon editlib/res: Merge.ico -- 2.11.0