https://git.reactos.org/?p=reactos.git;a=commitdiff;h=0d4e921c934f7b17535f3…
commit 0d4e921c934f7b17535f35059316ee051979bf86
Author: Carlo Bramini <30959007+carlo-bramini(a)users.noreply.github.com>
AuthorDate: Sat Feb 13 15:22:21 2021 +0100
Commit: GitHub <noreply(a)github.com>
CommitDate: Sat Feb 13 23:22:21 2021 +0900
[SHIMGVW] Add new features (CORE-11044) (#3113)
Add these new features:
- Use accelerator table for keyboard hotkeys.
- Updated italian translation.
- Simplified creation of toolbar and tooltips.
- Added missing toolbar buttons.
- Initialize common controls for theming.
French translation by Kyle Katarn.
Polish translation by Adam Stachowicz.
---
dll/win32/shimgvw/comsup.c | 2 +-
dll/win32/shimgvw/lang/bg-BG.rc | 6 +
dll/win32/shimgvw/lang/cs-CZ.rc | 6 +
dll/win32/shimgvw/lang/de-DE.rc | 6 +
dll/win32/shimgvw/lang/en-US.rc | 6 +
dll/win32/shimgvw/lang/es-ES.rc | 6 +
dll/win32/shimgvw/lang/fr-FR.rc | 6 +
dll/win32/shimgvw/lang/he-IL.rc | 6 +
dll/win32/shimgvw/lang/it-IT.rc | 38 +++--
dll/win32/shimgvw/lang/ja-JP.rc | 6 +
dll/win32/shimgvw/lang/lt-LT.rc | 6 +
dll/win32/shimgvw/lang/no-NO.rc | 6 +
dll/win32/shimgvw/lang/pl-PL.rc | 6 +
dll/win32/shimgvw/lang/pt-PT.rc | 6 +
dll/win32/shimgvw/lang/ro-RO.rc | 6 +
dll/win32/shimgvw/lang/ru-RU.rc | 6 +
dll/win32/shimgvw/lang/sk-SK.rc | 6 +
dll/win32/shimgvw/lang/sq-AL.rc | 6 +
dll/win32/shimgvw/lang/tr-TR.rc | 6 +
dll/win32/shimgvw/lang/uk-UA.rc | 6 +
dll/win32/shimgvw/lang/zh-CN.rc | 6 +
dll/win32/shimgvw/lang/zh-TW.rc | 6 +
dll/win32/shimgvw/res/best_fit.bmp | Bin 0 -> 822 bytes
dll/win32/shimgvw/res/delete.bmp | Bin 0 -> 822 bytes
dll/win32/shimgvw/res/help_toc.bmp | Bin 0 -> 822 bytes
dll/win32/shimgvw/res/modify.bmp | Bin 0 -> 822 bytes
dll/win32/shimgvw/res/real_size.bmp | Bin 0 -> 822 bytes
dll/win32/shimgvw/res/slide_show.bmp | Bin 0 -> 822 bytes
dll/win32/shimgvw/resource.h | 98 +++++++-----
dll/win32/shimgvw/shimgvw.c | 281 ++++++++++++++++++-----------------
dll/win32/shimgvw/shimgvw.rc | 42 ++++--
31 files changed, 383 insertions(+), 198 deletions(-)
diff --git a/dll/win32/shimgvw/comsup.c b/dll/win32/shimgvw/comsup.c
index 74fdeae1cd1..e390629dfc6 100644
--- a/dll/win32/shimgvw/comsup.c
+++ b/dll/win32/shimgvw/comsup.c
@@ -1,7 +1,7 @@
#define INITGUID
#include <windef.h>
-#include <comsup.h>
+#include "comsup.h"
LONG LockCount;
LONG ObjectCount;
diff --git a/dll/win32/shimgvw/lang/bg-BG.rc b/dll/win32/shimgvw/lang/bg-BG.rc
index 91e1f3c8c84..279db8f0148 100644
--- a/dll/win32/shimgvw/lang/bg-BG.rc
+++ b/dll/win32/shimgvw/lang/bg-BG.rc
@@ -9,12 +9,18 @@ BEGIN
/* Tooltips */
IDS_TOOLTIP_NEXT_PIC "Следващо изображение"
IDS_TOOLTIP_PREV_PIC "Предходно изображение"
+ IDS_TOOLTIP_BEST_FIT "Best fit to window (Ctrl+B)"
+ IDS_TOOLTIP_REAL_SIZE "Actual size (Ctrl+A)"
+ IDS_TOOLTIP_SLIDE_SHOW "Start slideshow (F11)"
IDS_TOOLTIP_ZOOM_IN "Увеличаване (+)"
IDS_TOOLTIP_ZOOM_OUT "Намаляване (-)"
IDS_TOOLTIP_ROT_CLOCKW "Завъртане по часовника (Ctrl+K)"
IDS_TOOLTIP_ROT_COUNCW "Завъртане срещу часовника (Ctrl+L)"
+ IDS_TOOLTIP_DELETE "Delete (DEL)"
IDS_TOOLTIP_PRINT "Разпечатване (Ctrl+P)"
IDS_TOOLTIP_SAVEAS "Записване като... (Ctrl+S)"
+ IDS_TOOLTIP_MODIFY "Modify (Ctrl+E)"
+ IDS_TOOLTIP_HELP_TOC "Help topics (F1)"
END
STRINGTABLE
diff --git a/dll/win32/shimgvw/lang/cs-CZ.rc b/dll/win32/shimgvw/lang/cs-CZ.rc
index b9f5fd5169b..21c61dd7690 100644
--- a/dll/win32/shimgvw/lang/cs-CZ.rc
+++ b/dll/win32/shimgvw/lang/cs-CZ.rc
@@ -14,12 +14,18 @@ BEGIN
/* Tooltips */
IDS_TOOLTIP_NEXT_PIC "Další obrázek"
IDS_TOOLTIP_PREV_PIC "Předchozí obrázek"
+ IDS_TOOLTIP_BEST_FIT "Best fit to window (Ctrl+B)"
+ IDS_TOOLTIP_REAL_SIZE "Actual size (Ctrl+A)"
+ IDS_TOOLTIP_SLIDE_SHOW "Start slideshow (F11)"
IDS_TOOLTIP_ZOOM_IN "Přiblížit (+)"
IDS_TOOLTIP_ZOOM_OUT "Oddálit (-)"
IDS_TOOLTIP_ROT_CLOCKW "Otočit po směru hodinových ručiček (Ctrl+K)"
IDS_TOOLTIP_ROT_COUNCW "Otočit proti směru hodinových ručiček (Ctrl+L)"
+ IDS_TOOLTIP_DELETE "Delete (DEL)"
IDS_TOOLTIP_PRINT "Tisk (Ctrl+P)"
IDS_TOOLTIP_SAVEAS "Uložit jako... (Ctrl+S)"
+ IDS_TOOLTIP_MODIFY "Modify (Ctrl+E)"
+ IDS_TOOLTIP_HELP_TOC "Help topics (F1)"
END
STRINGTABLE
diff --git a/dll/win32/shimgvw/lang/de-DE.rc b/dll/win32/shimgvw/lang/de-DE.rc
index ed9b19c6701..fb02ee6920c 100644
--- a/dll/win32/shimgvw/lang/de-DE.rc
+++ b/dll/win32/shimgvw/lang/de-DE.rc
@@ -9,12 +9,18 @@ BEGIN
/* Tooltips */
IDS_TOOLTIP_NEXT_PIC "Nächstes Bild"
IDS_TOOLTIP_PREV_PIC "Vorheriges Bild"
+ IDS_TOOLTIP_BEST_FIT "Best fit to window (Ctrl+B)"
+ IDS_TOOLTIP_REAL_SIZE "Actual size (Ctrl+A)"
+ IDS_TOOLTIP_SLIDE_SHOW "Start slideshow (F11)"
IDS_TOOLTIP_ZOOM_IN "Vergrößern (+)"
IDS_TOOLTIP_ZOOM_OUT "Verkleinern (-)"
IDS_TOOLTIP_ROT_CLOCKW "Drehen im Uhrzeigersinn (Strg+K)"
IDS_TOOLTIP_ROT_COUNCW "Drehen gegen den Uhrzeigersinn (Strg+L)"
+ IDS_TOOLTIP_DELETE "Delete (DEL)"
IDS_TOOLTIP_PRINT "Drucken (Strg+P)"
IDS_TOOLTIP_SAVEAS "Speichern unter... (Strg+S)"
+ IDS_TOOLTIP_MODIFY "Modify (Ctrl+E)"
+ IDS_TOOLTIP_HELP_TOC "Help topics (F1)"
END
STRINGTABLE
diff --git a/dll/win32/shimgvw/lang/en-US.rc b/dll/win32/shimgvw/lang/en-US.rc
index c212b2e7d00..d2712a552da 100644
--- a/dll/win32/shimgvw/lang/en-US.rc
+++ b/dll/win32/shimgvw/lang/en-US.rc
@@ -9,12 +9,18 @@ BEGIN
/* Tooltips */
IDS_TOOLTIP_NEXT_PIC "Next Picture"
IDS_TOOLTIP_PREV_PIC "Previous Picture"
+ IDS_TOOLTIP_BEST_FIT "Best fit to window (Ctrl+B)"
+ IDS_TOOLTIP_REAL_SIZE "Actual size (Ctrl+A)"
+ IDS_TOOLTIP_SLIDE_SHOW "Start slideshow (F11)"
IDS_TOOLTIP_ZOOM_IN "Zoom In (+)"
IDS_TOOLTIP_ZOOM_OUT "Zoom Out (-)"
IDS_TOOLTIP_ROT_CLOCKW "Rotate Clockwise (Ctrl+K)"
IDS_TOOLTIP_ROT_COUNCW "Rotate Counterclockwise (Ctrl+L)"
+ IDS_TOOLTIP_DELETE "Delete (DEL)"
IDS_TOOLTIP_PRINT "Print (Ctrl+P)"
IDS_TOOLTIP_SAVEAS "Save As... (Ctrl+S)"
+ IDS_TOOLTIP_MODIFY "Modify (Ctrl+E)"
+ IDS_TOOLTIP_HELP_TOC "Help topics (F1)"
END
STRINGTABLE
diff --git a/dll/win32/shimgvw/lang/es-ES.rc b/dll/win32/shimgvw/lang/es-ES.rc
index 26733fd9af4..08bc0059e85 100644
--- a/dll/win32/shimgvw/lang/es-ES.rc
+++ b/dll/win32/shimgvw/lang/es-ES.rc
@@ -11,12 +11,18 @@ BEGIN
/* Tooltips */
IDS_TOOLTIP_NEXT_PIC "Siguiente imagen"
IDS_TOOLTIP_PREV_PIC "Imagen anterior"
+ IDS_TOOLTIP_BEST_FIT "Best fit to window (Ctrl+B)"
+ IDS_TOOLTIP_REAL_SIZE "Actual size (Ctrl+A)"
+ IDS_TOOLTIP_SLIDE_SHOW "Start slideshow (F11)"
IDS_TOOLTIP_ZOOM_IN "Acercar (+)"
IDS_TOOLTIP_ZOOM_OUT "Alejar (-)"
IDS_TOOLTIP_ROT_CLOCKW "Rotar en el sentido de las agujas del reloj
(Ctrl+K)"
IDS_TOOLTIP_ROT_COUNCW "Rotar en el sentido opuesto a las agujas del reloj
(Ctrl+L)"
+ IDS_TOOLTIP_DELETE "Delete (DEL)"
IDS_TOOLTIP_PRINT "Imprimir (Ctrl+P)"
IDS_TOOLTIP_SAVEAS "Guardar como... (Ctrl+S)"
+ IDS_TOOLTIP_MODIFY "Modify (Ctrl+E)"
+ IDS_TOOLTIP_HELP_TOC "Help topics (F1)"
END
STRINGTABLE
diff --git a/dll/win32/shimgvw/lang/fr-FR.rc b/dll/win32/shimgvw/lang/fr-FR.rc
index 89a6f99c415..d6fcf5fb11e 100644
--- a/dll/win32/shimgvw/lang/fr-FR.rc
+++ b/dll/win32/shimgvw/lang/fr-FR.rc
@@ -9,12 +9,18 @@ BEGIN
/* Tooltips */
IDS_TOOLTIP_NEXT_PIC "Image Suivante"
IDS_TOOLTIP_PREV_PIC "Image Précédente"
+ IDS_TOOLTIP_BEST_FIT "Ajuster à la fenêtre (Ctrl+B)"
+ IDS_TOOLTIP_REAL_SIZE "Taille réelle (Ctrl+A)"
+ IDS_TOOLTIP_SLIDE_SHOW "Démarrer le diaporama (F11)"
IDS_TOOLTIP_ZOOM_IN "Augmenter (+)"
IDS_TOOLTIP_ZOOM_OUT "Diminuer (-)"
IDS_TOOLTIP_ROT_CLOCKW "Tourner dans le sens des aiguilles d'une montre
(Ctrl+K)"
IDS_TOOLTIP_ROT_COUNCW "Tourner dans le sens opposé des aiguilles d'une
montre (Ctrl+L)"
+ IDS_TOOLTIP_DELETE "Supprimer (Suppr)"
IDS_TOOLTIP_PRINT "Imprimer (Ctrl+P)"
IDS_TOOLTIP_SAVEAS "Enregistrer sous... (Ctrl+S)"
+ IDS_TOOLTIP_MODIFY "Modifier (Ctrl+E)"
+ IDS_TOOLTIP_HELP_TOC "Aide (F1)"
END
STRINGTABLE
diff --git a/dll/win32/shimgvw/lang/he-IL.rc b/dll/win32/shimgvw/lang/he-IL.rc
index c90d0e79dd1..6d000b52fb0 100644
--- a/dll/win32/shimgvw/lang/he-IL.rc
+++ b/dll/win32/shimgvw/lang/he-IL.rc
@@ -9,12 +9,18 @@ BEGIN
/* Tooltips */
IDS_TOOLTIP_NEXT_PIC "התמונה הבאה"
IDS_TOOLTIP_PREV_PIC "התמונה הקודמת"
+ IDS_TOOLTIP_BEST_FIT "Best fit to window (Ctrl+B)"
+ IDS_TOOLTIP_REAL_SIZE "Actual size (Ctrl+A)"
+ IDS_TOOLTIP_SLIDE_SHOW "Start slideshow (F11)"
IDS_TOOLTIP_ZOOM_IN "הגדלה (+)"
IDS_TOOLTIP_ZOOM_OUT "הרחקה (-)"
IDS_TOOLTIP_ROT_CLOCKW "סובב עם כיוון השעון (Ctrl+K)"
IDS_TOOLTIP_ROT_COUNCW "סובב כנגד כיוון השעון (Ctrl+L)"
+ IDS_TOOLTIP_DELETE "Delete (DEL)"
IDS_TOOLTIP_PRINT "הדפס (Ctrl+P)"
IDS_TOOLTIP_SAVEAS "שמירה בשם... (Ctrl+S)"
+ IDS_TOOLTIP_MODIFY "Modify (Ctrl+E)"
+ IDS_TOOLTIP_HELP_TOC "Help topics (F1)"
END
STRINGTABLE
diff --git a/dll/win32/shimgvw/lang/it-IT.rc b/dll/win32/shimgvw/lang/it-IT.rc
index f629ad69acc..6b7f5af5289 100644
--- a/dll/win32/shimgvw/lang/it-IT.rc
+++ b/dll/win32/shimgvw/lang/it-IT.rc
@@ -4,26 +4,32 @@ STRINGTABLE
BEGIN
IDS_APPTITLE "Visualizzatore immagini e fax di ReactOS"
IDS_SETASDESKBG "Imposta come sfondo del desktop"
- IDS_NOPREVIEW "No preview available."
+ IDS_NOPREVIEW "Anteprima non disponibile."
IDS_PREVIEW "Anteprima"
/* Tooltips */
- IDS_TOOLTIP_NEXT_PIC "Immagine successiva"
- IDS_TOOLTIP_PREV_PIC "Immagine precedente"
- IDS_TOOLTIP_ZOOM_IN "Zoom avanti (+)"
- IDS_TOOLTIP_ZOOM_OUT "Zoom indietro (-)"
- IDS_TOOLTIP_ROT_CLOCKW "Ruotare in senso orario (Ctrl+K)"
- IDS_TOOLTIP_ROT_COUNCW "Ruotare in senso antiorario (Ctrl+L)"
- IDS_TOOLTIP_PRINT "Stampare (Ctrl+P)"
- IDS_TOOLTIP_SAVEAS "Salva in... (Ctrl+S)"
+ IDS_TOOLTIP_NEXT_PIC "Immagine successiva (Freccia destra)"
+ IDS_TOOLTIP_PREV_PIC "Immagine precedente (Freccia sinistra)"
+ IDS_TOOLTIP_BEST_FIT "Adatta alla finestra (Ctrl+B)"
+ IDS_TOOLTIP_REAL_SIZE "Dimensione effettiva (Ctrl+A)"
+ IDS_TOOLTIP_SLIDE_SHOW "Avvia presentazione (F11)"
+ IDS_TOOLTIP_ZOOM_IN "Ingrandisci (+)"
+ IDS_TOOLTIP_ZOOM_OUT "Riduci (-)"
+ IDS_TOOLTIP_ROT_CLOCKW "Ruota in senso orario (Ctrl+K)"
+ IDS_TOOLTIP_ROT_COUNCW "Ruota in senso antiorario (Ctrl+L)"
+ IDS_TOOLTIP_DELETE "Elimina (CANC)"
+ IDS_TOOLTIP_PRINT "Stampa (Ctrl+P)"
+ IDS_TOOLTIP_SAVEAS "Salva come... (Ctrl+S)"
+ IDS_TOOLTIP_MODIFY "Modifica (Ctrl+E)"
+ IDS_TOOLTIP_HELP_TOC "Guida in linea (F1)"
END
STRINGTABLE
BEGIN
- IDS_EMF_FILE "EMF Image"
- IDS_GIF_FILE "GIF Image"
- IDS_JPG_FILE "JPEG Image"
- IDS_BMP_FILE "Bitmap Image"
- IDS_PNG_FILE "PNG Image"
- IDS_TIF_FILE "TIF Image"
- IDS_WMF_FILE "WMF Image"
+ IDS_EMF_FILE "Immagine EMF"
+ IDS_GIF_FILE "Immagine GIF"
+ IDS_JPG_FILE "Immagine JPEG"
+ IDS_BMP_FILE "Immagine Bitmap"
+ IDS_PNG_FILE "Immagine PNG"
+ IDS_TIF_FILE "Immagine TIF"
+ IDS_WMF_FILE "Immagine WMF"
END
diff --git a/dll/win32/shimgvw/lang/ja-JP.rc b/dll/win32/shimgvw/lang/ja-JP.rc
index 6c4395cfe00..46c024fb7d2 100644
--- a/dll/win32/shimgvw/lang/ja-JP.rc
+++ b/dll/win32/shimgvw/lang/ja-JP.rc
@@ -9,12 +9,18 @@ BEGIN
/* Tooltips */
IDS_TOOLTIP_NEXT_PIC "次の画像"
IDS_TOOLTIP_PREV_PIC "前の画像"
+ IDS_TOOLTIP_BEST_FIT "Best fit to window (Ctrl+B)"
+ IDS_TOOLTIP_REAL_SIZE "Actual size (Ctrl+A)"
+ IDS_TOOLTIP_SLIDE_SHOW "Start slideshow (F11)"
IDS_TOOLTIP_ZOOM_IN "ズームイン (+)"
IDS_TOOLTIP_ZOOM_OUT "ズームアウト (-)"
IDS_TOOLTIP_ROT_CLOCKW "時計回りに回転 (Ctrl+K)"
IDS_TOOLTIP_ROT_COUNCW "反時計回りに回転 (Ctrl+L)"
+ IDS_TOOLTIP_DELETE "Delete (DEL)"
IDS_TOOLTIP_PRINT "印刷 (Ctrl+P)"
IDS_TOOLTIP_SAVEAS "名前を付けて保存... (Ctrl+S)"
+ IDS_TOOLTIP_MODIFY "Modify (Ctrl+E)"
+ IDS_TOOLTIP_HELP_TOC "Help topics (F1)"
END
STRINGTABLE
diff --git a/dll/win32/shimgvw/lang/lt-LT.rc b/dll/win32/shimgvw/lang/lt-LT.rc
index 631f493ae39..b4ab0c2729d 100644
--- a/dll/win32/shimgvw/lang/lt-LT.rc
+++ b/dll/win32/shimgvw/lang/lt-LT.rc
@@ -11,12 +11,18 @@ BEGIN
/* Tooltips */
IDS_TOOLTIP_NEXT_PIC "Tolesnis paveikslėlis"
IDS_TOOLTIP_PREV_PIC "Ankstesnis paveikslėlis"
+ IDS_TOOLTIP_BEST_FIT "Best fit to window (Ctrl+B)"
+ IDS_TOOLTIP_REAL_SIZE "Actual size (Ctrl+A)"
+ IDS_TOOLTIP_SLIDE_SHOW "Start slideshow (F11)"
IDS_TOOLTIP_ZOOM_IN "Didinti (+)"
IDS_TOOLTIP_ZOOM_OUT "Mažinti (-)"
IDS_TOOLTIP_ROT_CLOCKW "Pasukti pagal laikrodžio rodyklę (Ctrl+K)"
IDS_TOOLTIP_ROT_COUNCW "Pasukti prieš laikrodžio rodyklę (Ctrl+L)"
+ IDS_TOOLTIP_DELETE "Delete (DEL)"
IDS_TOOLTIP_PRINT "Spausdinti (Ctrl+P)"
IDS_TOOLTIP_SAVEAS "Įrašyti kaip... (Ctrl+S)"
+ IDS_TOOLTIP_MODIFY "Modify (Ctrl+E)"
+ IDS_TOOLTIP_HELP_TOC "Help topics (F1)"
END
STRINGTABLE
diff --git a/dll/win32/shimgvw/lang/no-NO.rc b/dll/win32/shimgvw/lang/no-NO.rc
index f25300df06a..233b27bffb3 100644
--- a/dll/win32/shimgvw/lang/no-NO.rc
+++ b/dll/win32/shimgvw/lang/no-NO.rc
@@ -9,12 +9,18 @@ BEGIN
/* Tooltips */
IDS_TOOLTIP_NEXT_PIC "Neste bilde"
IDS_TOOLTIP_PREV_PIC "Forrige bilde"
+ IDS_TOOLTIP_BEST_FIT "Best fit to window (Ctrl+B)"
+ IDS_TOOLTIP_REAL_SIZE "Actual size (Ctrl+A)"
+ IDS_TOOLTIP_SLIDE_SHOW "Start slideshow (F11)"
IDS_TOOLTIP_ZOOM_IN "Forstørre (+)"
IDS_TOOLTIP_ZOOM_OUT "Forminske (-)"
IDS_TOOLTIP_ROT_CLOCKW "Med urviseren (Ctrl+K)"
IDS_TOOLTIP_ROT_COUNCW "Dreie mot urviseren (Ctrl+L)"
+ IDS_TOOLTIP_DELETE "Delete (DEL)"
IDS_TOOLTIP_PRINT "Skriv ut (Ctrl+P)"
IDS_TOOLTIP_SAVEAS "Lagre som... (Ctrl+S)"
+ IDS_TOOLTIP_MODIFY "Modify (Ctrl+E)"
+ IDS_TOOLTIP_HELP_TOC "Help topics (F1)"
END
STRINGTABLE
diff --git a/dll/win32/shimgvw/lang/pl-PL.rc b/dll/win32/shimgvw/lang/pl-PL.rc
index 01c03a2b6fc..d5868906fdc 100644
--- a/dll/win32/shimgvw/lang/pl-PL.rc
+++ b/dll/win32/shimgvw/lang/pl-PL.rc
@@ -14,12 +14,18 @@ BEGIN
/* Tooltips */
IDS_TOOLTIP_NEXT_PIC "Następny obraz"
IDS_TOOLTIP_PREV_PIC "Poprzedni obraz"
+ IDS_TOOLTIP_BEST_FIT "Rozmiar dopasowany optymalnie (Ctrl+B)"
+ IDS_TOOLTIP_REAL_SIZE "Rozmiar rzeczywisty (Ctrl+A)"
+ IDS_TOOLTIP_SLIDE_SHOW "Rozpocznij pokaz slajdów (F11)"
IDS_TOOLTIP_ZOOM_IN "Powiększ (+)"
IDS_TOOLTIP_ZOOM_OUT "Pomniejsz (-)"
IDS_TOOLTIP_ROT_CLOCKW "Obróć zgodnie z ruchem wskazówek zegara (Ctrl+K)"
IDS_TOOLTIP_ROT_COUNCW "Obróć przeciwnie do ruchu wskazówek zegara
(Ctrl+L)"
+ IDS_TOOLTIP_DELETE "Usuń (Delete)"
IDS_TOOLTIP_PRINT "Drukuj (Ctrl+P)"
IDS_TOOLTIP_SAVEAS "Zapisz jako... (Ctrl+S)"
+ IDS_TOOLTIP_MODIFY "Zamyka ten program i otwiera obraz w celu edycji
(Ctrl+E)"
+ IDS_TOOLTIP_HELP_TOC "Pomoc (F1)"
END
STRINGTABLE
diff --git a/dll/win32/shimgvw/lang/pt-PT.rc b/dll/win32/shimgvw/lang/pt-PT.rc
index ba02254631f..0d4b4b9fa4a 100644
--- a/dll/win32/shimgvw/lang/pt-PT.rc
+++ b/dll/win32/shimgvw/lang/pt-PT.rc
@@ -14,12 +14,18 @@ BEGIN
/* Tooltips */
IDS_TOOLTIP_NEXT_PIC "Próxima imagem"
IDS_TOOLTIP_PREV_PIC "Imagem anterior"
+ IDS_TOOLTIP_BEST_FIT "Best fit to window (Ctrl+B)"
+ IDS_TOOLTIP_REAL_SIZE "Actual size (Ctrl+A)"
+ IDS_TOOLTIP_SLIDE_SHOW "Start slideshow (F11)"
IDS_TOOLTIP_ZOOM_IN "Zoom (+)"
IDS_TOOLTIP_ZOOM_OUT "Zoom (-)"
IDS_TOOLTIP_ROT_CLOCKW "Girar no sentido dos ponteiros do relógio(Ctrl+K)"
IDS_TOOLTIP_ROT_COUNCW "Girar no sentido anti-horário (Ctrl+L)"
+ IDS_TOOLTIP_DELETE "Delete (DEL)"
IDS_TOOLTIP_PRINT "Imprimir (Ctrl+P)"
IDS_TOOLTIP_SAVEAS "Guardar como... (Ctrl+S)"
+ IDS_TOOLTIP_MODIFY "Modify (Ctrl+E)"
+ IDS_TOOLTIP_HELP_TOC "Help topics (F1)"
END
STRINGTABLE
diff --git a/dll/win32/shimgvw/lang/ro-RO.rc b/dll/win32/shimgvw/lang/ro-RO.rc
index 1dee13cca8c..b8a0de3c3e0 100644
--- a/dll/win32/shimgvw/lang/ro-RO.rc
+++ b/dll/win32/shimgvw/lang/ro-RO.rc
@@ -16,12 +16,18 @@ BEGIN
/* Tooltips */
IDS_TOOLTIP_NEXT_PIC "Imaginea următare"
IDS_TOOLTIP_PREV_PIC "Imaginea precedentă"
+ IDS_TOOLTIP_BEST_FIT "Best fit to window (Ctrl+B)"
+ IDS_TOOLTIP_REAL_SIZE "Actual size (Ctrl+A)"
+ IDS_TOOLTIP_SLIDE_SHOW "Start slideshow (F11)"
IDS_TOOLTIP_ZOOM_IN "Mărire (+)"
IDS_TOOLTIP_ZOOM_OUT "Micșorare (-)"
IDS_TOOLTIP_ROT_CLOCKW "Rotire în sens orar (Ctrl+K)"
IDS_TOOLTIP_ROT_COUNCW "Rotire în sens antiorar (Ctrl+L)"
+ IDS_TOOLTIP_DELETE "Delete (DEL)"
IDS_TOOLTIP_PRINT "Imprimă (Ctrl+P)"
IDS_TOOLTIP_SAVEAS "Păstrare în… (Ctrl+S)"
+ IDS_TOOLTIP_MODIFY "Modify (Ctrl+E)"
+ IDS_TOOLTIP_HELP_TOC "Help topics (F1)"
END
STRINGTABLE
diff --git a/dll/win32/shimgvw/lang/ru-RU.rc b/dll/win32/shimgvw/lang/ru-RU.rc
index da5bba3f3f4..05fe4508973 100644
--- a/dll/win32/shimgvw/lang/ru-RU.rc
+++ b/dll/win32/shimgvw/lang/ru-RU.rc
@@ -9,12 +9,18 @@ BEGIN
/* Tooltips */
IDS_TOOLTIP_NEXT_PIC "Следующее изображение"
IDS_TOOLTIP_PREV_PIC "Предыдущее изображение"
+ IDS_TOOLTIP_BEST_FIT "Best fit to window (Ctrl+B)"
+ IDS_TOOLTIP_REAL_SIZE "Actual size (Ctrl+A)"
+ IDS_TOOLTIP_SLIDE_SHOW "Start slideshow (F11)"
IDS_TOOLTIP_ZOOM_IN "Увеличить (+)"
IDS_TOOLTIP_ZOOM_OUT "Уменьшить (-)"
IDS_TOOLTIP_ROT_CLOCKW "Повернуть по часовой стрелке (Ctrl+K)"
IDS_TOOLTIP_ROT_COUNCW "Повернуть против часовой стрелки (Ctrl+L)"
+ IDS_TOOLTIP_DELETE "Delete (DEL)"
IDS_TOOLTIP_PRINT "Печать (Ctrl+P)"
IDS_TOOLTIP_SAVEAS "Сохранить как... (Ctrl+S)"
+ IDS_TOOLTIP_MODIFY "Modify (Ctrl+E)"
+ IDS_TOOLTIP_HELP_TOC "Help topics (F1)"
END
STRINGTABLE
diff --git a/dll/win32/shimgvw/lang/sk-SK.rc b/dll/win32/shimgvw/lang/sk-SK.rc
index 3216f9142ca..8c802a0da57 100644
--- a/dll/win32/shimgvw/lang/sk-SK.rc
+++ b/dll/win32/shimgvw/lang/sk-SK.rc
@@ -13,12 +13,18 @@ BEGIN
/* Tooltips */
IDS_TOOLTIP_NEXT_PIC "Nasledujúci obrázok"
IDS_TOOLTIP_PREV_PIC "Predchádzajúci obrázok"
+ IDS_TOOLTIP_BEST_FIT "Best fit to window (Ctrl+B)"
+ IDS_TOOLTIP_REAL_SIZE "Actual size (Ctrl+A)"
+ IDS_TOOLTIP_SLIDE_SHOW "Start slideshow (F11)"
IDS_TOOLTIP_ZOOM_IN "Priblížiť (+)"
IDS_TOOLTIP_ZOOM_OUT "Vzdialiť (-)"
IDS_TOOLTIP_ROT_CLOCKW "Otočiť v smere hodinových ručičiek (Ctrl+K)" //
Otočiť vpravo
IDS_TOOLTIP_ROT_COUNCW "Otočiť proti smeru hodinových ručičiek (Ctrl+L)" //
Otočiť vľavo
+ IDS_TOOLTIP_DELETE "Delete (DEL)"
IDS_TOOLTIP_PRINT "Vytlačiť (Ctrl+P)"
IDS_TOOLTIP_SAVEAS "Uložiť ako... (Ctrl+S)"
+ IDS_TOOLTIP_MODIFY "Modify (Ctrl+E)"
+ IDS_TOOLTIP_HELP_TOC "Help topics (F1)"
END
STRINGTABLE
diff --git a/dll/win32/shimgvw/lang/sq-AL.rc b/dll/win32/shimgvw/lang/sq-AL.rc
index 79854867665..4bb22218a2b 100644
--- a/dll/win32/shimgvw/lang/sq-AL.rc
+++ b/dll/win32/shimgvw/lang/sq-AL.rc
@@ -13,12 +13,18 @@ BEGIN
/* Tooltips */
IDS_TOOLTIP_NEXT_PIC "Fotoja Tjetër"
IDS_TOOLTIP_PREV_PIC "Fotoja Mëparshme"
+ IDS_TOOLTIP_BEST_FIT "Best fit to window (Ctrl+B)"
+ IDS_TOOLTIP_REAL_SIZE "Actual size (Ctrl+A)"
+ IDS_TOOLTIP_SLIDE_SHOW "Start slideshow (F11)"
IDS_TOOLTIP_ZOOM_IN "Zoom Brënda (+)"
IDS_TOOLTIP_ZOOM_OUT "Zoom Jashtë (-)"
IDS_TOOLTIP_ROT_CLOCKW "Rrotullo KrahAkrepave (Ctrl+K)"
IDS_TOOLTIP_ROT_COUNCW "Rrotullo kundërKrahAkrepave (Ctrl+L)"
+ IDS_TOOLTIP_DELETE "Delete (DEL)"
IDS_TOOLTIP_PRINT "Printo (Ctrl+P)"
IDS_TOOLTIP_SAVEAS "Ruaj Si... (Ctrl+S)"
+ IDS_TOOLTIP_MODIFY "Modify (Ctrl+E)"
+ IDS_TOOLTIP_HELP_TOC "Help topics (F1)"
END
STRINGTABLE
diff --git a/dll/win32/shimgvw/lang/tr-TR.rc b/dll/win32/shimgvw/lang/tr-TR.rc
index 13f5db98659..5c36fba7fd8 100644
--- a/dll/win32/shimgvw/lang/tr-TR.rc
+++ b/dll/win32/shimgvw/lang/tr-TR.rc
@@ -11,12 +11,18 @@ BEGIN
/* Tooltips */
IDS_TOOLTIP_NEXT_PIC "Sonraki Resim"
IDS_TOOLTIP_PREV_PIC "Önceki Resim"
+ IDS_TOOLTIP_BEST_FIT "Best fit to window (Ctrl+B)"
+ IDS_TOOLTIP_REAL_SIZE "Actual size (Ctrl+A)"
+ IDS_TOOLTIP_SLIDE_SHOW "Start slideshow (F11)"
IDS_TOOLTIP_ZOOM_IN "Yakınlaştır (+)"
IDS_TOOLTIP_ZOOM_OUT "Uzaklaştır (-)"
IDS_TOOLTIP_ROT_CLOCKW "Saat Yönünde Döndür (Denetim+K)"
IDS_TOOLTIP_ROT_COUNCW "Saat Yönünün Tersi Yönünde Döndür (Denetim+L)"
+ IDS_TOOLTIP_DELETE "Delete (DEL)"
IDS_TOOLTIP_PRINT "Yazdır (Denetim+P)"
IDS_TOOLTIP_SAVEAS "Ayrı Sakla... (Denetim+S)"
+ IDS_TOOLTIP_MODIFY "Modify (Ctrl+E)"
+ IDS_TOOLTIP_HELP_TOC "Help topics (F1)"
END
STRINGTABLE
diff --git a/dll/win32/shimgvw/lang/uk-UA.rc b/dll/win32/shimgvw/lang/uk-UA.rc
index 9202a26843f..cfce26019ab 100644
--- a/dll/win32/shimgvw/lang/uk-UA.rc
+++ b/dll/win32/shimgvw/lang/uk-UA.rc
@@ -17,12 +17,18 @@ BEGIN
/* Tooltips */
IDS_TOOLTIP_NEXT_PIC "Наступне зображення"
IDS_TOOLTIP_PREV_PIC "Попереднє зображення"
+ IDS_TOOLTIP_BEST_FIT "Best fit to window (Ctrl+B)"
+ IDS_TOOLTIP_REAL_SIZE "Actual size (Ctrl+A)"
+ IDS_TOOLTIP_SLIDE_SHOW "Start slideshow (F11)"
IDS_TOOLTIP_ZOOM_IN "Збільшити (+)"
IDS_TOOLTIP_ZOOM_OUT "Зменшити (-)"
IDS_TOOLTIP_ROT_CLOCKW "Повернути за годинниковою стрілкою (Ctrl+K)"
IDS_TOOLTIP_ROT_COUNCW "Повернути проти годинникової стрілки (Ctrl+L)"
+ IDS_TOOLTIP_DELETE "Delete (DEL)"
IDS_TOOLTIP_PRINT "Друк (Ctrl+P)"
IDS_TOOLTIP_SAVEAS "Зберегти як... (Ctrl+S)"
+ IDS_TOOLTIP_MODIFY "Modify (Ctrl+E)"
+ IDS_TOOLTIP_HELP_TOC "Help topics (F1)"
END
STRINGTABLE
diff --git a/dll/win32/shimgvw/lang/zh-CN.rc b/dll/win32/shimgvw/lang/zh-CN.rc
index 40cc06efc68..a5657c34982 100644
--- a/dll/win32/shimgvw/lang/zh-CN.rc
+++ b/dll/win32/shimgvw/lang/zh-CN.rc
@@ -12,12 +12,18 @@ BEGIN
/* Tooltips */
IDS_TOOLTIP_NEXT_PIC "下一张图片"
IDS_TOOLTIP_PREV_PIC "上一张图片"
+ IDS_TOOLTIP_BEST_FIT "Best fit to window (Ctrl+B)"
+ IDS_TOOLTIP_REAL_SIZE "Actual size (Ctrl+A)"
+ IDS_TOOLTIP_SLIDE_SHOW "Start slideshow (F11)"
IDS_TOOLTIP_ZOOM_IN "放大 (+)"
IDS_TOOLTIP_ZOOM_OUT "缩小 (-)"
IDS_TOOLTIP_ROT_CLOCKW "顺时针旋转 (Ctrl+K)"
IDS_TOOLTIP_ROT_COUNCW "逆时针旋转 (Ctrl+L)"
+ IDS_TOOLTIP_DELETE "Delete (DEL)"
IDS_TOOLTIP_PRINT "打印 (Ctrl+P)"
IDS_TOOLTIP_SAVEAS "另存为...(Ctrl+S)"
+ IDS_TOOLTIP_MODIFY "Modify (Ctrl+E)"
+ IDS_TOOLTIP_HELP_TOC "Help topics (F1)"
END
STRINGTABLE
diff --git a/dll/win32/shimgvw/lang/zh-TW.rc b/dll/win32/shimgvw/lang/zh-TW.rc
index ec582d15a71..f03f47fa166 100644
--- a/dll/win32/shimgvw/lang/zh-TW.rc
+++ b/dll/win32/shimgvw/lang/zh-TW.rc
@@ -11,12 +11,18 @@ BEGIN
/* Tooltips */
IDS_TOOLTIP_NEXT_PIC "下一張圖片"
IDS_TOOLTIP_PREV_PIC "上一張圖片"
+ IDS_TOOLTIP_BEST_FIT "Best fit to window (Ctrl+B)"
+ IDS_TOOLTIP_REAL_SIZE "Actual size (Ctrl+A)"
+ IDS_TOOLTIP_SLIDE_SHOW "Start slideshow (F11)"
IDS_TOOLTIP_ZOOM_IN "放大 (+)"
IDS_TOOLTIP_ZOOM_OUT "縮小 (-)"
IDS_TOOLTIP_ROT_CLOCKW "順時針旋轉 (Ctrl+K)"
IDS_TOOLTIP_ROT_COUNCW "逆時針旋轉 (Ctrl+L)"
+ IDS_TOOLTIP_DELETE "Delete (DEL)"
IDS_TOOLTIP_PRINT "列印 (Ctrl+P)"
IDS_TOOLTIP_SAVEAS "另存新檔...(Ctrl+S)"
+ IDS_TOOLTIP_MODIFY "Modify (Ctrl+E)"
+ IDS_TOOLTIP_HELP_TOC "Help topics (F1)"
END
STRINGTABLE
diff --git a/dll/win32/shimgvw/res/best_fit.bmp b/dll/win32/shimgvw/res/best_fit.bmp
new file mode 100644
index 00000000000..232747daa6e
Binary files /dev/null and b/dll/win32/shimgvw/res/best_fit.bmp differ
diff --git a/dll/win32/shimgvw/res/delete.bmp b/dll/win32/shimgvw/res/delete.bmp
new file mode 100644
index 00000000000..d84cb7087ad
Binary files /dev/null and b/dll/win32/shimgvw/res/delete.bmp differ
diff --git a/dll/win32/shimgvw/res/help_toc.bmp b/dll/win32/shimgvw/res/help_toc.bmp
new file mode 100644
index 00000000000..57a44407c74
Binary files /dev/null and b/dll/win32/shimgvw/res/help_toc.bmp differ
diff --git a/dll/win32/shimgvw/res/modify.bmp b/dll/win32/shimgvw/res/modify.bmp
new file mode 100644
index 00000000000..6956cdb9aff
Binary files /dev/null and b/dll/win32/shimgvw/res/modify.bmp differ
diff --git a/dll/win32/shimgvw/res/real_size.bmp b/dll/win32/shimgvw/res/real_size.bmp
new file mode 100644
index 00000000000..7834e010486
Binary files /dev/null and b/dll/win32/shimgvw/res/real_size.bmp differ
diff --git a/dll/win32/shimgvw/res/slide_show.bmp b/dll/win32/shimgvw/res/slide_show.bmp
new file mode 100644
index 00000000000..50a95d8e0af
Binary files /dev/null and b/dll/win32/shimgvw/res/slide_show.bmp differ
diff --git a/dll/win32/shimgvw/resource.h b/dll/win32/shimgvw/resource.h
index b54f96e98f8..7c005cc6760 100644
--- a/dll/win32/shimgvw/resource.h
+++ b/dll/win32/shimgvw/resource.h
@@ -1,39 +1,60 @@
#pragma once
/* Icons */
-#define IDI_APPICON 1
+#define IDI_APP_ICON 1
#define IDI_BMP_ICON 2
#define IDI_GIF_ICON 3
#define IDI_JPG_ICON 4
#define IDI_PNG_ICON 5
-#define IDB_PREVICON 50
-#define IDB_NEXTICON 51
-#define IDB_ZOOMPICON 52
-#define IDB_ZOOMMICON 53
-#define IDB_SAVEICON 54
-#define IDB_PRINTICON 55
-#define IDB_ROT1ICON 56
-#define IDB_ROT2ICON 57
+/* Toolbar images */
+#define IDB_PREV_PIC 50
+#define IDB_NEXT_PIC 51
+#define IDB_BEST_FIT 52
+#define IDB_REAL_SIZE 53
+#define IDB_SLIDE_SHOW 54
+#define IDB_ZOOM_IN 55
+#define IDB_ZOOM_OUT 56
+#define IDB_ROT_CLOCKW 57
+#define IDB_ROT_COUNCW 58
+#define IDB_DELETE 59
+#define IDB_PRINT 60
+#define IDB_SAVEAS 61
+#define IDB_MODIFY 62
+#define IDB_HELP_TOC 63
/* ToolBar buttons */
-#define IDC_PREV 500
-#define IDC_NEXT 501
-#define IDC_ZOOMP 502
-#define IDC_ZOOMM 503
-#define IDC_SAVE 504
-#define IDC_PRINT 505
-#define IDC_ROT1 506
-#define IDC_ROT2 507
-
-#define TBICON_PREV 0
-#define TBICON_NEXT 1
-#define TBICON_ZOOMP 2
-#define TBICON_ZOOMM 3
-#define TBICON_SAVE 4
-#define TBICON_PRINT 5
-#define TBICON_ROT1 6
-#define TBICON_ROT2 7
+#define IDC_TOOL_BASE 500
+
+#define IDC_PREV_PIC (IDC_TOOL_BASE + 0)
+#define IDC_NEXT_PIC (IDC_TOOL_BASE + 1)
+#define IDC_BEST_FIT (IDC_TOOL_BASE + 2)
+#define IDC_REAL_SIZE (IDC_TOOL_BASE + 3)
+#define IDC_SLIDE_SHOW (IDC_TOOL_BASE + 4)
+#define IDC_ZOOM_IN (IDC_TOOL_BASE + 5)
+#define IDC_ZOOM_OUT (IDC_TOOL_BASE + 6)
+#define IDC_ROT_CLOCKW (IDC_TOOL_BASE + 7)
+#define IDC_ROT_COUNCW (IDC_TOOL_BASE + 8)
+#define IDC_DELETE (IDC_TOOL_BASE + 9)
+#define IDC_PRINT (IDC_TOOL_BASE + 10)
+#define IDC_SAVEAS (IDC_TOOL_BASE + 11)
+#define IDC_MODIFY (IDC_TOOL_BASE + 12)
+#define IDC_HELP_TOC (IDC_TOOL_BASE + 13)
+
+#define TBICON_PREV_PIC 0
+#define TBICON_NEXT_PIC 1
+#define TBICON_BEST_FIT 2
+#define TBICON_REAL_SIZE 3
+#define TBICON_SLIDE_SHOW 4
+#define TBICON_ZOOM_IN 5
+#define TBICON_ZOOM_OUT 6
+#define TBICON_ROT_CLOCKW 7
+#define TBICON_ROT_COUNCW 8
+#define TBICON_DELETE 9
+#define TBICON_PRINT 10
+#define TBICON_SAVEAS 11
+#define TBICON_MODIFY 12
+#define TBICON_HELP_TOC 13
/* Strings */
#define IDS_APPTITLE 100
@@ -51,11 +72,20 @@
#define IDS_WMF_FILE 307
/* Tooltips strings */
-#define IDS_TOOLTIP_NEXT_PIC 400
-#define IDS_TOOLTIP_PREV_PIC 401
-#define IDS_TOOLTIP_ZOOM_IN 402
-#define IDS_TOOLTIP_ZOOM_OUT 404
-#define IDS_TOOLTIP_ROT_CLOCKW 405
-#define IDS_TOOLTIP_ROT_COUNCW 406
-#define IDS_TOOLTIP_PRINT 407
-#define IDS_TOOLTIP_SAVEAS 408
+#define IDS_TOOLTIP_PREV_PIC 400
+#define IDS_TOOLTIP_NEXT_PIC 401
+#define IDS_TOOLTIP_BEST_FIT 402
+#define IDS_TOOLTIP_REAL_SIZE 403
+#define IDS_TOOLTIP_SLIDE_SHOW 404
+#define IDS_TOOLTIP_ZOOM_IN 405
+#define IDS_TOOLTIP_ZOOM_OUT 406
+#define IDS_TOOLTIP_ROT_CLOCKW 407
+#define IDS_TOOLTIP_ROT_COUNCW 408
+#define IDS_TOOLTIP_DELETE 409
+#define IDS_TOOLTIP_PRINT 410
+#define IDS_TOOLTIP_SAVEAS 411
+#define IDS_TOOLTIP_MODIFY 412
+#define IDS_TOOLTIP_HELP_TOC 413
+
+/* Keyboard accelerators */
+#define IDR_ACCELERATOR 600
diff --git a/dll/win32/shimgvw/shimgvw.c b/dll/win32/shimgvw/shimgvw.c
index e06af9159d5..40723c2883f 100644
--- a/dll/win32/shimgvw/shimgvw.c
+++ b/dll/win32/shimgvw/shimgvw.c
@@ -43,14 +43,73 @@ WNDPROC PrevProc = NULL;
HWND hDispWnd, hToolBar;
/* zooming */
-#define MIN_ZOOM 10
-#define MAX_ZOOM 1600
UINT ZoomPercents = 100;
+
static const UINT ZoomSteps[] =
{
10, 25, 50, 100, 200, 400, 800, 1600
};
+#define MIN_ZOOM ZoomSteps[0]
+#define MAX_ZOOM ZoomSteps[_countof(ZoomSteps)-1]
+
+/* ToolBar Buttons */
+typedef struct {
+ DWORD idb; /* Index to bitmap */
+ DWORD ids; /* Index to tooltip */
+} TB_BUTTON_CONFIG;
+
+ /* iBitmap, idCommand, fsState, fsStyle, bReserved[2], dwData,
iString */
+#define DEFINE_BTN_INFO(_name) \
+ { TBICON_##_name, IDC_##_name, TBSTATE_ENABLED, BTNS_BUTTON, {0}, 0, 0 }
+
+#define DEFINE_BTN_SEPARATOR \
+ { 15, 0, TBSTATE_ENABLED, BTNS_SEP, {0}, 0, 0 }
+
+/* ToolBar Buttons */
+static const TBBUTTON Buttons[] =
+{
+ DEFINE_BTN_INFO(PREV_PIC),
+ DEFINE_BTN_INFO(NEXT_PIC),
+ DEFINE_BTN_SEPARATOR,
+ DEFINE_BTN_INFO(BEST_FIT),
+ DEFINE_BTN_INFO(REAL_SIZE),
+ DEFINE_BTN_INFO(SLIDE_SHOW),
+ DEFINE_BTN_SEPARATOR,
+ DEFINE_BTN_INFO(ZOOM_IN),
+ DEFINE_BTN_INFO(ZOOM_OUT),
+ DEFINE_BTN_SEPARATOR,
+ DEFINE_BTN_INFO(ROT_CLOCKW),
+ DEFINE_BTN_INFO(ROT_COUNCW),
+ DEFINE_BTN_SEPARATOR,
+ DEFINE_BTN_INFO(DELETE),
+ DEFINE_BTN_INFO(PRINT),
+ DEFINE_BTN_INFO(SAVEAS),
+ DEFINE_BTN_INFO(MODIFY),
+ DEFINE_BTN_SEPARATOR,
+ DEFINE_BTN_INFO(HELP_TOC)
+};
+
+#define DEFINE_BTN_CONFIG(_name) { IDB_##_name, IDS_TOOLTIP_##_name }
+
+static const TB_BUTTON_CONFIG BtnConfig[] =
+{
+ DEFINE_BTN_CONFIG(PREV_PIC),
+ DEFINE_BTN_CONFIG(NEXT_PIC),
+ DEFINE_BTN_CONFIG(BEST_FIT),
+ DEFINE_BTN_CONFIG(REAL_SIZE),
+ DEFINE_BTN_CONFIG(SLIDE_SHOW),
+ DEFINE_BTN_CONFIG(ZOOM_IN),
+ DEFINE_BTN_CONFIG(ZOOM_OUT),
+ DEFINE_BTN_CONFIG(ROT_CLOCKW),
+ DEFINE_BTN_CONFIG(ROT_COUNCW),
+ DEFINE_BTN_CONFIG(DELETE),
+ DEFINE_BTN_CONFIG(PRINT),
+ DEFINE_BTN_CONFIG(SAVEAS),
+ DEFINE_BTN_CONFIG(MODIFY),
+ DEFINE_BTN_CONFIG(HELP_TOC)
+};
+
/* animation */
UINT m_nFrameIndex = 0;
UINT m_nFrameCount = 0;
@@ -203,11 +262,11 @@ static void ZoomInOrOut(BOOL bZoomIn)
ZoomPercents = ZoomSteps[i];
/* update tool bar buttons */
- SendMessage(hToolBar, TB_ENABLEBUTTON, IDC_ZOOMM, TRUE);
+ SendMessageW(hToolBar, TB_ENABLEBUTTON, IDC_ZOOM_OUT, TRUE);
if (ZoomPercents >= MAX_ZOOM)
- SendMessage(hToolBar, TB_ENABLEBUTTON, IDC_ZOOMP, FALSE);
+ SendMessageW(hToolBar, TB_ENABLEBUTTON, IDC_ZOOM_IN, FALSE);
else
- SendMessage(hToolBar, TB_ENABLEBUTTON, IDC_ZOOMP, TRUE);
+ SendMessageW(hToolBar, TB_ENABLEBUTTON, IDC_ZOOM_IN, TRUE);
}
else /* zoom out */
{
@@ -224,11 +283,11 @@ static void ZoomInOrOut(BOOL bZoomIn)
ZoomPercents = ZoomSteps[i];
/* update tool bar buttons */
- SendMessage(hToolBar, TB_ENABLEBUTTON, IDC_ZOOMP, TRUE);
+ SendMessageW(hToolBar, TB_ENABLEBUTTON, IDC_ZOOM_IN, TRUE);
if (ZoomPercents <= MIN_ZOOM)
- SendMessage(hToolBar, TB_ENABLEBUTTON, IDC_ZOOMM, FALSE);
+ SendMessageW(hToolBar, TB_ENABLEBUTTON, IDC_ZOOM_OUT, FALSE);
else
- SendMessage(hToolBar, TB_ENABLEBUTTON, IDC_ZOOMM, TRUE);
+ SendMessageW(hToolBar, TB_ENABLEBUTTON, IDC_ZOOM_OUT, TRUE);
}
/* redraw */
@@ -278,22 +337,6 @@ static void ResetZoom(void)
}
}
-/* ToolBar Buttons */
-static const TBBUTTON Buttons [] =
-{ /* iBitmap, idCommand, fsState, fsStyle, bReserved[2], dwData,
iString */
- {TBICON_PREV, IDC_PREV, TBSTATE_ENABLED, BTNS_BUTTON, {0}, 0, 0},
- {TBICON_NEXT, IDC_NEXT, TBSTATE_ENABLED, BTNS_BUTTON, {0}, 0, 0},
- {15, 0, TBSTATE_ENABLED, BTNS_SEP, {0}, 0, 0},
- {TBICON_ZOOMP, IDC_ZOOMP, TBSTATE_ENABLED, BTNS_BUTTON, {0}, 0, 0},
- {TBICON_ZOOMM, IDC_ZOOMM, TBSTATE_ENABLED, BTNS_BUTTON, {0}, 0, 0},
- {15, 0, TBSTATE_ENABLED, BTNS_SEP, {0}, 0, 0},
- {TBICON_ROT1, IDC_ROT1, TBSTATE_ENABLED, BTNS_BUTTON, {0}, 0, 0},
- {TBICON_ROT2, IDC_ROT2, TBSTATE_ENABLED, BTNS_BUTTON, {0}, 0, 0},
- {15, 0, TBSTATE_ENABLED, BTNS_SEP, {0}, 0, 0},
- {TBICON_SAVE, IDC_SAVE, TBSTATE_ENABLED, BTNS_BUTTON, {0}, 0, 0},
- {TBICON_PRINT, IDC_PRINT, TBSTATE_ENABLED, BTNS_BUTTON, {0}, 0, 0},
-};
-
static void pLoadImage(LPWSTR szOpenFileName)
{
/* check file presence */
@@ -439,8 +482,8 @@ pPrintImage(HWND hwnd)
static VOID
EnableToolBarButtons(BOOL bEnable)
{
- SendMessage(hToolBar, TB_ENABLEBUTTON, IDC_SAVE, bEnable);
- SendMessage(hToolBar, TB_ENABLEBUTTON, IDC_PRINT, bEnable);
+ SendMessageW(hToolBar, TB_ENABLEBUTTON, IDC_SAVEAS, bEnable);
+ SendMessageW(hToolBar, TB_ENABLEBUTTON, IDC_PRINT, bEnable);
}
static VOID
@@ -598,6 +641,9 @@ pFreeFileList(SHIMGVW_FILENODE *root)
{
SHIMGVW_FILENODE *conductor;
+ if (!root)
+ return;
+
root->Prev->Next = NULL;
root->Prev = NULL;
@@ -799,7 +845,7 @@ ImageView_SaveSettings(HWND hwnd)
static BOOL
ImageView_CreateToolBar(HWND hwnd)
{
- INT numButtons = sizeof(Buttons) / sizeof(Buttons[0]);
+ int n;
hToolBar = CreateWindowEx(0, TOOLBARCLASSNAME, NULL,
WS_CHILD | WS_VISIBLE | TBSTYLE_FLAT | CCS_BOTTOM |
TBSTYLE_TOOLTIPS,
@@ -809,45 +855,25 @@ ImageView_CreateToolBar(HWND hwnd)
{
HIMAGELIST hImageList;
- SendMessage(hToolBar, TB_SETEXTENDEDSTYLE,
- 0, TBSTYLE_EX_HIDECLIPPEDBUTTONS);
+ SendMessageW(hToolBar, TB_SETEXTENDEDSTYLE,
+ 0, TBSTYLE_EX_HIDECLIPPEDBUTTONS);
- SendMessage(hToolBar, TB_BUTTONSTRUCTSIZE,
- sizeof(Buttons[0]), 0);
+ SendMessageW(hToolBar, TB_BUTTONSTRUCTSIZE,
+ sizeof(Buttons[0]), 0);
hImageList = ImageList_Create(TB_IMAGE_WIDTH, TB_IMAGE_HEIGHT, ILC_MASK |
ILC_COLOR24, 1, 1);
-
- ImageList_AddMasked(hImageList, LoadImage(hInstance,
MAKEINTRESOURCE(IDB_PREVICON), IMAGE_BITMAP,
- TB_IMAGE_WIDTH, TB_IMAGE_HEIGHT, LR_DEFAULTCOLOR), RGB(255, 255,
255));
-
- ImageList_AddMasked(hImageList, LoadImage(hInstance,
MAKEINTRESOURCE(IDB_NEXTICON), IMAGE_BITMAP,
- TB_IMAGE_WIDTH, TB_IMAGE_HEIGHT, LR_DEFAULTCOLOR), RGB(255, 255,
255));
-
- ImageList_AddMasked(hImageList, LoadImage(hInstance,
MAKEINTRESOURCE(IDB_ZOOMPICON), IMAGE_BITMAP,
- TB_IMAGE_WIDTH, TB_IMAGE_HEIGHT, LR_DEFAULTCOLOR), RGB(255, 255,
255));
-
- ImageList_AddMasked(hImageList, LoadImage(hInstance,
MAKEINTRESOURCE(IDB_ZOOMMICON), IMAGE_BITMAP,
- TB_IMAGE_WIDTH, TB_IMAGE_HEIGHT, LR_DEFAULTCOLOR), RGB(255, 255,
255));
-
- ImageList_AddMasked(hImageList, LoadImage(hInstance,
MAKEINTRESOURCE(IDB_SAVEICON), IMAGE_BITMAP,
- TB_IMAGE_WIDTH, TB_IMAGE_HEIGHT, LR_DEFAULTCOLOR), RGB(255, 255,
255));
-
- ImageList_AddMasked(hImageList, LoadImage(hInstance,
MAKEINTRESOURCE(IDB_PRINTICON), IMAGE_BITMAP,
- TB_IMAGE_WIDTH, TB_IMAGE_HEIGHT, LR_DEFAULTCOLOR), RGB(255, 255,
255));
-
- ImageList_AddMasked(hImageList, LoadImage(hInstance,
MAKEINTRESOURCE(IDB_ROT1ICON), IMAGE_BITMAP,
- TB_IMAGE_WIDTH, TB_IMAGE_HEIGHT, LR_DEFAULTCOLOR), RGB(255, 255,
255));
-
- ImageList_AddMasked(hImageList, LoadImage(hInstance,
MAKEINTRESOURCE(IDB_ROT2ICON), IMAGE_BITMAP,
- TB_IMAGE_WIDTH, TB_IMAGE_HEIGHT, LR_DEFAULTCOLOR), RGB(255, 255,
255));
-
if (hImageList == NULL) return FALSE;
- ImageList_Destroy((HIMAGELIST)SendMessage(hToolBar, TB_SETIMAGELIST,
- 0, (LPARAM)hImageList));
+ for (n = 0; n < _countof(BtnConfig); n++)
+ {
+ ImageList_AddMasked(hImageList, LoadImageW(hInstance,
MAKEINTRESOURCEW(BtnConfig[n].idb), IMAGE_BITMAP,
+ TB_IMAGE_WIDTH, TB_IMAGE_HEIGHT, LR_DEFAULTCOLOR),
RGB(255, 255, 255));
+ }
+
+ ImageList_Destroy((HIMAGELIST)SendMessageW(hToolBar, TB_SETIMAGELIST,
+ 0, (LPARAM)hImageList));
- SendMessage(hToolBar, TB_ADDBUTTONS,
- numButtons, (LPARAM)Buttons);
+ SendMessageW(hToolBar, TB_ADDBUTTONS, _countof(Buttons), (LPARAM)Buttons);
return TRUE;
}
@@ -924,7 +950,7 @@ ImageView_OnSize(HWND hwnd, UINT state, INT cx, INT cy)
{
RECT rc;
- SendMessage(hToolBar, TB_AUTOSIZE, 0, 0);
+ SendMessageW(hToolBar, TB_AUTOSIZE, 0, 0);
GetWindowRect(hToolBar, &rc);
@@ -949,46 +975,41 @@ ImageView_WndProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM
lParam)
return 0L;
}
- case WM_KEYDOWN:
- switch (LOWORD(wParam))
- {
- case VK_LEFT:
- PostMessage(hwnd, WM_COMMAND, MAKEWPARAM(IDC_PREV, BN_CLICKED),
(LPARAM)NULL);
- break;
-
- case VK_RIGHT:
- PostMessage(hwnd, WM_COMMAND, MAKEWPARAM(IDC_NEXT, BN_CLICKED),
(LPARAM)NULL);
- break;
- }
- break;
-
case WM_COMMAND:
{
- switch (wParam)
+ switch (LOWORD(wParam))
{
- case IDC_PREV:
- {
+ case IDC_PREV_PIC:
currentFile = currentFile->Prev;
pLoadImageFromNode(currentFile, hwnd);
- }
- break;
+ break;
- case IDC_NEXT:
- {
+ case IDC_NEXT_PIC:
currentFile = currentFile->Next;
pLoadImageFromNode(currentFile, hwnd);
- }
- break;
+ break;
+
+ case IDC_BEST_FIT:
+ DPRINT1("IDC_BEST_FIT unimplemented\n");
+ break;
+
+ case IDC_REAL_SIZE:
+ DPRINT1("IDC_REAL_SIZE unimplemented\n");
+ break;
+
+ case IDC_SLIDE_SHOW:
+ DPRINT1("IDC_SLIDE_SHOW unimplemented\n");
+ break;
- case IDC_ZOOMP:
+ case IDC_ZOOM_IN:
ZoomInOrOut(TRUE);
break;
- case IDC_ZOOMM:
+ case IDC_ZOOM_OUT:
ZoomInOrOut(FALSE);
break;
- case IDC_SAVE:
+ case IDC_SAVEAS:
pSaveImageAs(hwnd);
break;
@@ -996,25 +1017,21 @@ ImageView_WndProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM
lParam)
pPrintImage(hwnd);
break;
- case IDC_ROT1:
- {
+ case IDC_ROT_CLOCKW:
if (image)
{
GdipImageRotateFlip(image, Rotate270FlipNone);
ImageView_UpdateWindow(hwnd);
}
break;
- }
-
- case IDC_ROT2:
- {
+
+ case IDC_ROT_COUNCW:
if (image)
{
GdipImageRotateFlip(image, Rotate90FlipNone);
ImageView_UpdateWindow(hwnd);
}
break;
- }
}
}
break;
@@ -1033,40 +1050,12 @@ ImageView_WndProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM
lParam)
{
case TTN_GETDISPINFO:
{
- LPTOOLTIPTEXT lpttt;
- UINT idButton;
+ LPTOOLTIPTEXTW lpttt;
- lpttt = (LPTOOLTIPTEXT)lParam;
- idButton = (UINT)lpttt->hdr.idFrom;
+ lpttt = (LPTOOLTIPTEXTW)lParam;
lpttt->hinst = hInstance;
- switch (idButton)
- {
- case IDC_PREV:
- lpttt->lpszText = MAKEINTRESOURCE(IDS_TOOLTIP_PREV_PIC);
- break;
- case IDC_NEXT:
- lpttt->lpszText = MAKEINTRESOURCE(IDS_TOOLTIP_NEXT_PIC);
- break;
- case IDC_ZOOMP:
- lpttt->lpszText = MAKEINTRESOURCE(IDS_TOOLTIP_ZOOM_IN);
- break;
- case IDC_ZOOMM:
- lpttt->lpszText = MAKEINTRESOURCE(IDS_TOOLTIP_ZOOM_OUT);
- break;
- case IDC_SAVE:
- lpttt->lpszText = MAKEINTRESOURCE(IDS_TOOLTIP_SAVEAS);
- break;
- case IDC_PRINT:
- lpttt->lpszText = MAKEINTRESOURCE(IDS_TOOLTIP_PRINT);
- break;
- case IDC_ROT1:
- lpttt->lpszText =
MAKEINTRESOURCE(IDS_TOOLTIP_ROT_COUNCW);
- break;
- case IDC_ROT2:
- lpttt->lpszText =
MAKEINTRESOURCE(IDS_TOOLTIP_ROT_CLOCKW);
- break;
- }
+ lpttt->lpszText = MAKEINTRESOURCEW(BtnConfig[lpttt->hdr.idFrom
- IDC_TOOL_BASE].ids);
return TRUE;
}
}
@@ -1104,11 +1093,15 @@ ImageView_CreateWindow(HWND hwnd, LPWSTR szFileName)
{
struct GdiplusStartupInput gdiplusStartupInput;
ULONG_PTR gdiplusToken;
- WNDCLASS WndClass = {0};
- TCHAR szBuf[512];
+ WNDCLASSW WndClass = {0};
+ WCHAR szBuf[512];
WCHAR szInitialFile[MAX_PATH];
HWND hMainWnd;
MSG msg;
+ HACCEL hKbdAccel;
+ INITCOMMONCONTROLSEX Icc = { .dwSize = sizeof(Icc), .dwICC = ICC_WIN95_CLASSES };
+
+ InitCommonControlsEx(&Icc);
if (!ImageView_LoadSettings())
{
@@ -1129,24 +1122,24 @@ ImageView_CreateWindow(HWND hwnd, LPWSTR szFileName)
pLoadImage(szFileName);
// Create the window
- WndClass.lpszClassName = _T("shimgvw_window");
+ WndClass.lpszClassName = L"shimgvw_window";
WndClass.lpfnWndProc = ImageView_WndProc;
WndClass.hInstance = hInstance;
WndClass.style = CS_HREDRAW | CS_VREDRAW;
- WndClass.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_APPICON));
+ WndClass.hIcon = LoadIconW(hInstance, MAKEINTRESOURCEW(IDI_APP_ICON));
WndClass.hCursor = LoadCursor(NULL, IDC_ARROW);
WndClass.hbrBackground = NULL; /* less flicker */
- if (!RegisterClass(&WndClass)) return -1;
+ if (!RegisterClassW(&WndClass)) return -1;
- LoadString(hInstance, IDS_APPTITLE, szBuf, sizeof(szBuf) / sizeof(TCHAR));
- hMainWnd = CreateWindow(_T("shimgvw_window"), szBuf,
- WS_OVERLAPPEDWINDOW | WS_VISIBLE | WS_CAPTION,
- CW_USEDEFAULT, CW_USEDEFAULT,
- 0, 0, NULL, NULL, hInstance, NULL);
+ LoadStringW(hInstance, IDS_APPTITLE, szBuf, sizeof(szBuf) / sizeof(TCHAR));
+ hMainWnd = CreateWindowExW(0, L"shimgvw_window", szBuf,
+ WS_OVERLAPPEDWINDOW | WS_VISIBLE | WS_CAPTION,
+ CW_USEDEFAULT, CW_USEDEFAULT,
+ 0, 0, NULL, NULL, hInstance, NULL);
// make sure the path has no quotes on it
- wcscpy(szInitialFile, szFileName);
+ StringCbCopyW(szInitialFile, sizeof(szInitialFile), szFileName);
PathUnquoteSpacesW(szInitialFile);
currentFile = pBuildFileList(szInitialFile);
@@ -1155,17 +1148,29 @@ ImageView_CreateWindow(HWND hwnd, LPWSTR szFileName)
pLoadImageFromNode(currentFile, hMainWnd);
}
+ /* Create accelerator table for keystrokes */
+ hKbdAccel = LoadAcceleratorsW(hInstance, MAKEINTRESOURCEW(IDR_ACCELERATOR));
+
// Show it
ShowWindow(hMainWnd, SW_SHOW);
UpdateWindow(hMainWnd);
// Message Loop
- while(GetMessage(&msg,NULL,0,0))
+ for (;;)
{
- TranslateMessage(&msg);
- DispatchMessageW(&msg);
+ if (GetMessageW(&msg, NULL, 0, 0) <= 0)
+ break;
+
+ if (!TranslateAcceleratorW(hMainWnd, hKbdAccel, &msg))
+ {
+ TranslateMessage(&msg);
+ DispatchMessageW(&msg);
+ }
}
+ /* Destroy accelerator table */
+ DestroyAcceleratorTable(hKbdAccel);
+
pFreeFileList(currentFile);
if (image)
diff --git a/dll/win32/shimgvw/shimgvw.rc b/dll/win32/shimgvw/shimgvw.rc
index 0ea24383d57..a4ce2015bc8 100644
--- a/dll/win32/shimgvw/shimgvw.rc
+++ b/dll/win32/shimgvw/shimgvw.rc
@@ -13,18 +13,42 @@ LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
#include <reactos/manifest_hosted.rc>
-IDI_APPICON ICON "res/main.ico"
+IDI_APP_ICON ICON "res/main.ico"
IDI_BMP_ICON ICON "res/bmp.ico"
IDI_PNG_ICON ICON "res/png.ico"
-IDB_PREVICON BITMAP "res/prev.bmp"
-IDB_NEXTICON BITMAP "res/next.bmp"
-IDB_ZOOMPICON BITMAP "res/zoomp.bmp"
-IDB_ZOOMMICON BITMAP "res/zoomm.bmp"
-IDB_SAVEICON BITMAP "res/save.bmp"
-IDB_PRINTICON BITMAP "res/print.bmp"
-IDB_ROT1ICON BITMAP "res/rot1.bmp"
-IDB_ROT2ICON BITMAP "res/rot2.bmp"
+IDB_PREV_PIC BITMAP "res/prev.bmp"
+IDB_NEXT_PIC BITMAP "res/next.bmp"
+IDB_BEST_FIT BITMAP "res/best_fit.bmp"
+IDB_REAL_SIZE BITMAP "res/real_size.bmp"
+IDB_SLIDE_SHOW BITMAP "res/slide_show.bmp"
+IDB_ZOOM_IN BITMAP "res/zoomp.bmp"
+IDB_ZOOM_OUT BITMAP "res/zoomm.bmp"
+IDB_ROT_CLOCKW BITMAP "res/rot1.bmp"
+IDB_ROT_COUNCW BITMAP "res/rot2.bmp"
+IDB_DELETE BITMAP "res/delete.bmp"
+IDB_PRINT BITMAP "res/print.bmp"
+IDB_SAVEAS BITMAP "res/save.bmp"
+IDB_MODIFY BITMAP "res/modify.bmp"
+IDB_HELP_TOC BITMAP "res/help_toc.bmp"
+
+IDR_ACCELERATOR ACCELERATORS
+BEGIN
+ VK_LEFT, IDC_PREV_PIC, VIRTKEY
+ VK_RIGHT, IDC_NEXT_PIC, VIRTKEY
+ "B", IDC_BEST_FIT, VIRTKEY, CONTROL
+ "A", IDC_REAL_SIZE, VIRTKEY, CONTROL
+ VK_F11, IDC_SLIDE_SHOW, VIRTKEY
+ VK_ADD, IDC_ZOOM_IN, VIRTKEY
+ VK_SUBTRACT, IDC_ZOOM_OUT, VIRTKEY
+ "K", IDC_ROT_COUNCW, VIRTKEY, CONTROL
+ "L", IDC_ROT_COUNCW, VIRTKEY, CONTROL
+ VK_DELETE, IDC_DELETE, VIRTKEY
+ "P", IDC_PRINT, VIRTKEY, CONTROL
+ "S", IDC_SAVEAS, VIRTKEY, CONTROL
+ "E", IDC_MODIFY, VIRTKEY, CONTROL
+ VK_F1, IDC_HELP_TOC, VIRTKEY
+END
/* UTF-8 */
#pragma code_page(65001)