https://git.reactos.org/?p=reactos.git;a=commitdiff;h=0d4e921c934f7b17535f35...
commit 0d4e921c934f7b17535f35059316ee051979bf86 Author: Carlo Bramini 30959007+carlo-bramini@users.noreply.github.com AuthorDate: Sat Feb 13 15:22:21 2021 +0100 Commit: GitHub noreply@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)