Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
Y
yad
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Vladislav
yad
Commits
adb93d57
Commit
adb93d57
authored
Apr 25, 2022
by
Victor Ananjevsky
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
add ability to load several images in picture dialog
parent
cc415177
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
219 additions
and
133 deletions
+219
-133
yad.1
data/yad.1
+2
-2
uk.po
po/uk.po
+101
-93
picture.c
src/picture.c
+116
-38
No files found.
data/yad.1
View file @
adb93d57
...
...
@@ -866,9 +866,9 @@ Set initial size of picture. Available values are \fIfit\fP for fitting image in
Set increment value for scaling image.
.TP
.B \-\-filename=\fIFILENAME\fP
Set picture filename.
Set picture filename.
If no file name is specified extra data will be used. In this case several filenames can be specified.
.PP
Some actions on a picture like scaling or rotating available from popup menu. Those actions can be made only on static images.
Some actions on a picture like
navigation,
scaling or rotating available from popup menu. Those actions can be made only on static images.
.SS Print options
.TP
...
...
po/uk.po
View file @
adb93d57
...
...
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: YAD\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-04-
12 08:06
+0300\n"
"POT-Creation-Date: 2022-04-
25 17:59
+0300\n"
"PO-Revision-Date: 2021-11-28 19:00+0200\n"
"Last-Translator: Victor Ananjevsky <ananasik@gmail.com>\n"
"Language-Team: \n"
...
...
@@ -66,47 +66,47 @@ msgstr "Початкове значення - менше за мінімальн
msgid "Initial value greater than maximum.\n"
msgstr "Початкове значення - більше за максимальне.\n"
#: ../src/form.c:49
1
#: ../src/form.c:49
8
msgid "Select files"
msgstr "Вибрати файли"
#: ../src/form.c:
494 ../src/form.c:502 ../src/form.c:581 ../src/form.c:589
#: ../src/form.c:64
0
../src/html.c:220 ../src/html.c:253 ../src/text.c:121
#: ../src/form.c:
501 ../src/form.c:509 ../src/form.c:588 ../src/form.c:596
#: ../src/form.c:64
7
../src/html.c:220 ../src/html.c:253 ../src/text.c:121
#: ../src/text.c:192 ../src/util.c:40
msgid "Cancel"
msgstr "Скасувати"
#: ../src/form.c:
495 ../src/form.c:503 ../src/form.c:582 ../src/form.c:590
#: ../src/form.c:64
1
../src/html.c:221 ../src/text.c:122 ../src/text.c:193
#: ../src/form.c:
502 ../src/form.c:510 ../src/form.c:589 ../src/form.c:597
#: ../src/form.c:64
8
../src/html.c:221 ../src/text.c:122 ../src/text.c:193
#: ../src/util.c:46
msgid "OK"
msgstr "Гаразд"
#: ../src/form.c:
499
#: ../src/form.c:
506
msgid "Select folders"
msgstr "Вибрати теки"
#: ../src/form.c:5
78
#: ../src/form.c:5
85
msgid "Select or create file"
msgstr "Вибрати або створити файл"
#: ../src/form.c:5
86
#: ../src/form.c:5
93
msgid "Select or create folder"
msgstr "Вибрати або створити теку"
#: ../src/form.c:6
37
#: ../src/form.c:6
44
msgid "Select date"
msgstr "Вибрати дату"
#: ../src/form.c:
996
#: ../src/form.c:
1023
msgid "Select file"
msgstr "Вибрати файл"
#: ../src/form.c:10
26
#: ../src/form.c:10
53
msgid "Select folder"
msgstr "Вибрати теку"
#: ../src/form.c:1
194 ../src/form.c:1196
#: ../src/form.c:1
221 ../src/form.c:1223
msgid "Link"
msgstr "Посилання"
...
...
@@ -1522,328 +1522,328 @@ msgstr "ШЛЯХ"
msgid "Load extra arguments from file"
msgstr "Завантажити додаткові аргументи з файлу"
#: ../src/option.c:94
2
#: ../src/option.c:94
4
#, c-format
msgid "Mark %s doesn't have a value\n"
msgstr "Помітці %s не надано значення\n"
#: ../src/option.c:9
89
#: ../src/option.c:9
91
msgid "Images"
msgstr "Зображення"
#: ../src/option.c:105
4
#: ../src/option.c:105
6
#, c-format
msgid "Unknown color mode: %s\n"
msgstr "Невідомий режим кольору: '%s'\n"
#: ../src/option.c:107
3
#: ../src/option.c:107
5
#, c-format
msgid "Unknown buttons layout type: %s\n"
msgstr "Невідомий тип розміщення кнопок: %s\n"
#: ../src/option.c:10
88
#: ../src/option.c:10
90
#, c-format
msgid "Unknown align type: %s\n"
msgstr "Невідомий тип вирівнювання: %s\n"
#: ../src/option.c:111
2
#: ../src/option.c:111
4
#, c-format
msgid "Unknown justification type: %s\n"
msgstr "Невідомий тип вирівнювання: %s\n"
#: ../src/option.c:11
29
#: ../src/option.c:11
31
#, c-format
msgid "Unknown tab position type: %s\n"
msgstr "Невідомий тип позиції вкладки: %s\n"
#: ../src/option.c:116
6
#: ../src/option.c:116
8
#, c-format
msgid "Unknown ellipsize type: %s\n"
msgstr "Невідомий тип урізання: %s\n"
#: ../src/option.c:11
79
#: ../src/option.c:11
81
#, c-format
msgid "Unknown orientation: %s\n"
msgstr "Невідома орієнтація: %s\n"
#: ../src/option.c:119
4
#: ../src/option.c:119
6
#, c-format
msgid "Unknown source type: %s\n"
msgstr "Невідомий тип даних: %s\n"
#: ../src/option.c:120
5
#: ../src/option.c:120
7
msgid "Progress log"
msgstr "Вікно журналу"
#: ../src/option.c:12
18
#: ../src/option.c:12
20
#, c-format
msgid "Unknown size type: %s\n"
msgstr "Невідомий тип розміру: %s\n"
#: ../src/option.c:126
0
#: ../src/option.c:126
2
#, c-format
msgid "Unknown completion type: %s\n"
msgstr "Невідомий тип доповнення: %s\n"
#: ../src/option.c:129
2
#: ../src/option.c:129
4
#, c-format
msgid "Unknown boolean format type: %s\n"
msgstr "Невідомий тип булєвських значень: %s\n"
#: ../src/option.c:13
08
#: ../src/option.c:13
10
#, c-format
msgid "Unknown grid lines type: %s\n"
msgstr "Невідомий тип розподільних ліній: %s\n"
#: ../src/option.c:132
5
#: ../src/option.c:132
7
#, c-format
msgid "Unknown scrollbar policy type: %s\n"
msgstr "Невідомий тип прокрутки: %s\n"
#: ../src/option.c:13
78
#: ../src/option.c:13
80
#, c-format
msgid "Unknown smart Home/End mode: %s\n"
msgstr "Невідомий режим розумних Home/End: '%s'\n"
#: ../src/option.c:14
88
#: ../src/option.c:14
90
#, c-format
msgid "Unknown signal: %s\n"
msgstr "Невідомий сигнал: %s\n"
#: ../src/option.c:172
5
#: ../src/option.c:172
7
msgid "File exist. Overwrite?"
msgstr "Файл існує. Перезаписати?"
#: ../src/option.c:186
7
#: ../src/option.c:186
9
msgid "File was changed. Save it?"
msgstr "Файл був змінений. Зберегти його?"
#: ../src/option.c:192
0
#: ../src/option.c:192
2
msgid "- Yet another dialoging program"
msgstr "- Програма для відображення діалогів"
#. Adds general option entries
#: ../src/option.c:192
4
#: ../src/option.c:192
6
msgid "General options"
msgstr "Основні параметри"
#: ../src/option.c:192
4
#: ../src/option.c:192
6
msgid "Show general options"
msgstr "Показувати основні параметри"
#. Adds common option entries
#: ../src/option.c:193
0
#: ../src/option.c:193
2
msgid "Common options"
msgstr "Загальні параметри"
#: ../src/option.c:193
0
#: ../src/option.c:193
2
msgid "Show common options"
msgstr "Показувати загальні параметри діалогів"
#. Adds about option entries
#: ../src/option.c:193
6
#: ../src/option.c:193
8
msgid "About dialog options"
msgstr "Параметри діалогу о програмі"
#: ../src/option.c:193
6
#: ../src/option.c:193
8
msgid "Show custom about dialog options"
msgstr "Показувати параметри діалогу о програмі"
#. Adds app option entries
#: ../src/option.c:194
2
#: ../src/option.c:194
4
msgid "Application selection options"
msgstr "Параметри діалогу вибору додатка"
#: ../src/option.c:194
2
#: ../src/option.c:194
4
msgid "Show application selection options"
msgstr "Показувати параметри діалоги вибору додатка"
#. Adds calendar option entries
#: ../src/option.c:19
48
#: ../src/option.c:19
50
msgid "Calendar options"
msgstr "Параметри календаря"
#: ../src/option.c:19
48
#: ../src/option.c:19
50
msgid "Show calendar options"
msgstr "Показувати параметри календаря"
#. Adds color option entries
#: ../src/option.c:195
4
#: ../src/option.c:195
6
msgid "Color selection options"
msgstr "Параметри діалогу вибору кольору"
#: ../src/option.c:195
4
#: ../src/option.c:195
6
msgid "Show color selection options"
msgstr "Показувати параметри діалогу вибору кольору"
#. Adds dnd option entries
#: ../src/option.c:196
0
#: ../src/option.c:196
2
msgid "DND options"
msgstr "Параметри DND"
#: ../src/option.c:196
0
#: ../src/option.c:196
2
msgid "Show drag-n-drop options"
msgstr "Показувати параметри dnd"
#. Adds entry option entries
#: ../src/option.c:196
6
#: ../src/option.c:196
8
msgid "Text entry options"
msgstr "Параметри вводу тексту"
#: ../src/option.c:196
6
#: ../src/option.c:196
8
msgid "Show text entry options"
msgstr "Показувати параметри вводу тексту"
#. Adds file selection option entries
#: ../src/option.c:197
2
#: ../src/option.c:197
4
msgid "File selection options"
msgstr "Параметри діалогу вибору файлів"
#: ../src/option.c:197
2
#: ../src/option.c:197
4
msgid "Show file selection options"
msgstr "Показувати параметри діалогу вибору файлів"
#. Add font selection option entries
#: ../src/option.c:19
78
#: ../src/option.c:19
80
msgid "Font selection options"
msgstr "Параметри діалогу вибору шрифту"
#: ../src/option.c:19
78
#: ../src/option.c:19
80
msgid "Show font selection options"
msgstr "Показувати параметри діалоги вибору шрифту"
#. Add form option entries
#: ../src/option.c:198
4
#: ../src/option.c:198
6
msgid "Form options"
msgstr "Параметри діалогу форми"
#: ../src/option.c:198
4
#: ../src/option.c:198
6
msgid "Show form options"
msgstr "Показувати параметри діалогу форми"
#. Add html options entries
#: ../src/option.c:199
1
#: ../src/option.c:199
3
msgid "HTML options"
msgstr "Параметри HTML діалогу"
#: ../src/option.c:199
1
#: ../src/option.c:199
3
msgid "Show HTML options"
msgstr "Показувати параметри HTML діалогу"
#. Add icons option entries
#: ../src/option.c:
1998
#: ../src/option.c:
2000
msgid "Icons box options"
msgstr "Параметри діалогу піктограм"
#: ../src/option.c:
1998
#: ../src/option.c:
2000
msgid "Show icons box options"
msgstr "Показувати параметри діалогу піктограм швидкого доступу"
#. Adds list option entries
#: ../src/option.c:200
4
#: ../src/option.c:200
6
msgid "List options"
msgstr "Параметри списку"
#: ../src/option.c:200
4
#: ../src/option.c:200
6
msgid "Show list options"
msgstr "Показувати параметри списку"
#. Adds notebook option entries
#: ../src/option.c:201
0
#: ../src/option.c:201
2
msgid "Notebook options"
msgstr "Параметри діалогу з вкладками"
#: ../src/option.c:201
0
#: ../src/option.c:201
2
msgid "Show notebook dialog options"
msgstr "Показувати параметри діалогу з вкладками"
#. Adds notification option entries
#: ../src/option.c:201
7
#: ../src/option.c:201
9
msgid "Notification icon options"
msgstr "Параметри піктограми сповіщень"
#: ../src/option.c:20
18
#: ../src/option.c:20
20
msgid "Show notification icon options"
msgstr "Показувати параметри піктограми сповіщень"
#. Adds paned option entries
#: ../src/option.c:202
5
#: ../src/option.c:202
7
msgid "Paned dialog options"
msgstr "Параметри діалогу з панелями"
#: ../src/option.c:202
5
#: ../src/option.c:202
7
msgid "Show paned dialog options"
msgstr "Показувати параметри діалогу з панелями"
#. Adds picture option entries
#: ../src/option.c:203
1
#: ../src/option.c:203
3
msgid "Picture dialog options"
msgstr "Параметри діалогу з картинкою"
#: ../src/option.c:203
1
#: ../src/option.c:203
3
msgid "Show picture dialog options"
msgstr "Показувати параметри діалогу відображення картинки"
#. Adds print option entries
#: ../src/option.c:203
7
#: ../src/option.c:203
9
msgid "Print dialog options"
msgstr "Параметри діалогу друку"
#: ../src/option.c:203
7
#: ../src/option.c:203
9
msgid "Show print dialog options"
msgstr "Показувати параметри діалогу друку"
#. Adds progress option entries
#: ../src/option.c:204
3
#: ../src/option.c:204
5
msgid "Progress options"
msgstr "Параметри прогресу"
#: ../src/option.c:204
3
#: ../src/option.c:204
5
msgid "Show progress options"
msgstr "Показувати параметри прогресу"
#. Adds scale option entries
#: ../src/option.c:20
49
#: ../src/option.c:20
51
msgid "Scale options"
msgstr "Параметри масштабу"
#: ../src/option.c:20
49
#: ../src/option.c:20
51
msgid "Show scale options"
msgstr "Показувати параметри масштабу"
#. Adds text option entries
#: ../src/option.c:205
5
#: ../src/option.c:205
7
msgid "Text information options"
msgstr "Параметри текстової інформації"
#: ../src/option.c:205
5
#: ../src/option.c:205
7
msgid "Show text information options"
msgstr "Показувати параметри текстової інформації"
#. Adds sourceview option entries
#: ../src/option.c:206
2
#: ../src/option.c:206
4
msgid "SourceView options"
msgstr "Параметри SourceView"
#: ../src/option.c:206
2
#: ../src/option.c:206
4
msgid "Show SourceView options"
msgstr "Показувати параметри SourceView"
#. Adds file filters option entries
#: ../src/option.c:20
69
#: ../src/option.c:20
71
msgid "File filter options"
msgstr "Параметри фільтрів для діалогу вибору файлів"
#: ../src/option.c:20
69
#: ../src/option.c:20
71
msgid "Show file filter options"
msgstr "Показувати параметри фільтрів для діалогу вибору файлів"
#. Adds miscellaneous option entries
#: ../src/option.c:207
5
#: ../src/option.c:207
7
msgid "Miscellaneous options"
msgstr "Додаткові параметри"
#: ../src/option.c:207
5
#: ../src/option.c:207
7
msgid "Show miscellaneous options"
msgstr "Показувати додаткові параметри"
...
...
@@ -1852,35 +1852,43 @@ msgstr "Показувати додаткові параметри"
msgid "WARNING: wrong focused pane number %d. Must be 1 or 2\n"
msgstr "УВАГА: невірний номер панелі %d. Повинен бути 1 чи 2\n"
#: ../src/picture.c:185
#: ../src/picture.c:217
msgid "Next image"
msgstr "Наступне зображення"
#: ../src/picture.c:222
msgid "Previous image"
msgstr "Попереднє зображення"
#: ../src/picture.c:232
msgid "Fit to window"
msgstr "По розміру вікна"
#: ../src/picture.c:
190
#: ../src/picture.c:
237
msgid "Original size"
msgstr "Оригінальний розмір"
#: ../src/picture.c:
195
#: ../src/picture.c:
242
msgid "Increase size"
msgstr "Збільшити розмір"
#: ../src/picture.c:2
00
#: ../src/picture.c:2
47
msgid "Decrease size"
msgstr "Зменшити розмір"
#: ../src/picture.c:2
09
#: ../src/picture.c:2
56
msgid "Rotate left"
msgstr "Повернути ліворуч"
#: ../src/picture.c:2
14
#: ../src/picture.c:2
61
msgid "Rotate right"
msgstr "Повернути праворуч"
#: ../src/picture.c:2
19
#: ../src/picture.c:2
66
msgid "Flip vertical"
msgstr "Віддзеркалити вертикально"
#: ../src/picture.c:2
24
#: ../src/picture.c:2
71
msgid "Flip horizontal"
msgstr "Віддзеркалити горизонтально"
...
...
@@ -2032,7 +2040,7 @@ msgstr "Так"
msgid "WARNING: Run command failed: %s\n"
msgstr "УВАГА: Збій при запуску команди: %s\n"
#: ../src/util.c:8
91
#: ../src/util.c:8
88
msgid "Case _sensitive"
msgstr "Враховувати _регістр"
...
...
src/picture.c
View file @
adb93d57
...
...
@@ -19,16 +19,6 @@
#include "yad.h"
static
GtkWidget
*
picture
;
static
GtkWidget
*
viewport
;
static
GtkWidget
*
popup_menu
;
static
GdkPixbufAnimation
*
anim_pb
=
NULL
;
static
GdkPixbuf
*
orig_pb
=
NULL
;
static
gboolean
loaded
=
FALSE
;
static
gboolean
animated
=
FALSE
;
enum
{
SIZE_FIT
,
SIZE_ORIG
,
...
...
@@ -43,38 +33,87 @@ enum {
ROTATE_FLIP_HOR
};
typedef
struct
{
gchar
*
filename
;
GdkPixbufAnimation
*
anim_pb
;
GdkPixbuf
*
orig_pb
;
gboolean
loaded
;
gboolean
animated
;
}
ImageItem
;
static
GList
*
img_list
=
NULL
;
static
GList
*
lp
=
NULL
;
static
ImageItem
*
img
=
NULL
;
static
GtkWidget
*
picture
;
static
GtkWidget
*
viewport
;
static
GtkWidget
*
popup_menu
;
static
void
load_picture
(
gchar
*
filename
)
load_picture
()
{
anim_pb
=
gdk_pixbuf_animation_new_from_file
(
filename
,
NULL
);
orig_pb
=
gdk_pixbuf_animation_get_static_image
(
anim_pb
);
if
(
orig_pb
)
if
(
!
img
->
loaded
)
{
if
(
gdk_pixbuf_animation_is_static_image
(
anim_pb
))
gtk_image_set_from_pixbuf
(
GTK_IMAGE
(
picture
),
orig_pb
);
else
if
(
img
->
filename
&&
g_file_test
(
img
->
filename
,
G_FILE_TEST_EXISTS
))
{
gtk_image_set_from_animation
(
GTK_IMAGE
(
picture
),
anim_pb
);
animated
=
TRUE
;
img
->
anim_pb
=
gdk_pixbuf_animation_new_from_file
(
img
->
filename
,
NULL
);
img
->
orig_pb
=
gdk_pixbuf_animation_get_static_image
(
img
->
anim_pb
);
img
->
animated
=
!
gdk_pixbuf_animation_is_static_image
(
img
->
anim_pb
);
}
img
->
loaded
=
TRUE
;
}
loaded
=
TRUE
;
if
(
img
->
orig_pb
)
{
if
(
img
->
animated
)
gtk_image_set_from_animation
(
GTK_IMAGE
(
picture
),
g_object_ref
(
img
->
anim_pb
));
else
gtk_image_set_from_pixbuf
(
GTK_IMAGE
(
picture
),
g_object_ref
(
img
->
orig_pb
));
}
else
gtk_image_set_from_icon_name
(
GTK_IMAGE
(
picture
),
"image-missing"
,
GTK_ICON_SIZE_DIALOG
);
}
static
void
next_img_cb
(
GtkWidget
*
w
,
gpointer
d
)
{
lp
=
g_list_next
(
lp
);
if
(
!
lp
)
lp
=
g_list_first
(
img_list
);
if
(
lp
)
img
=
(
ImageItem
*
)
lp
->
data
;
load_picture
();
if
(
options
.
picture_data
.
size
==
YAD_PICTURE_FIT
)
picture_fit_to_window
();
}
static
void
prev_img_cb
(
GtkWidget
*
w
,
gpointer
d
)
{
lp
=
g_list_previous
(
lp
);
if
(
!
lp
)
lp
=
g_list_last
(
img_list
);
if
(
lp
)
img
=
(
ImageItem
*
)
lp
->
data
;
load_picture
();
if
(
options
.
picture_data
.
size
==
YAD_PICTURE_FIT
)
picture_fit_to_window
();
}
void
picture_fit_to_window
()
{
gdouble
width
,
height
,
ww
,
wh
;
gdouble
factor
;
if
(
animated
||
!
gtk_widget_get_realized
(
viewport
))
if
(
!
gtk_widget_get_realized
(
viewport
))
return
;
width
=
gdk_pixbuf_get_width
(
orig_pb
);
height
=
gdk_pixbuf_get_height
(
orig_pb
);
width
=
gdk_pixbuf_get_width
(
img
->
orig_pb
);
height
=
gdk_pixbuf_get_height
(
img
->
orig_pb
);
ww
=
gdk_window_get_width
(
gtk_viewport_get_view_window
(
GTK_VIEWPORT
(
viewport
)));
wh
=
gdk_window_get_height
(
gtk_viewport_get_view_window
(
GTK_VIEWPORT
(
viewport
)));
...
...
@@ -82,13 +121,9 @@ picture_fit_to_window ()
factor
=
MIN
(
ww
/
width
,
wh
/
height
);
if
(
factor
<
1
.
0
)
{
GdkPixbuf
*
pb
=
gdk_pixbuf_scale_simple
(
g_object_ref
(
orig_pb
)
,
width
*
factor
,
height
*
factor
,
GDK_INTERP_HYPER
);
GdkPixbuf
*
pb
=
gdk_pixbuf_scale_simple
(
img
->
orig_pb
,
width
*
factor
,
height
*
factor
,
GDK_INTERP_HYPER
);
if
(
pb
)
{
GdkPixbuf
*
old_pb
=
gtk_image_get_pixbuf
(
GTK_IMAGE
(
picture
));
gtk_image_set_from_pixbuf
(
GTK_IMAGE
(
picture
),
pb
);
g_object_unref
(
old_pb
);
}
}
}
...
...
@@ -114,8 +149,7 @@ change_size_cb (GtkWidget *w, gint type)
options
.
picture_data
.
size
=
YAD_PICTURE_FIT
;
break
;
case
SIZE_ORIG
:
gtk_image_set_from_pixbuf
(
GTK_IMAGE
(
picture
),
orig_pb
);
g_object_unref
(
pb
);
gtk_image_set_from_pixbuf
(
GTK_IMAGE
(
picture
),
g_object_ref
(
img
->
orig_pb
));
options
.
picture_data
.
size
=
YAD_PICTURE_ORIG
;
break
;
case
SIZE_INC
:
...
...
@@ -182,6 +216,23 @@ create_popup_menu ()
popup_menu
=
gtk_menu_new
();
gtk_menu_set_reserve_toggle_size
(
GTK_MENU
(
popup_menu
),
FALSE
);
if
(
img_list
)
{
mi
=
gtk_menu_item_new_with_label
(
_
(
"Next image"
));
gtk_widget_show
(
mi
);
gtk_menu_shell_append
(
GTK_MENU_SHELL
(
popup_menu
),
mi
);
g_signal_connect
(
G_OBJECT
(
mi
),
"activate"
,
G_CALLBACK
(
next_img_cb
),
NULL
);
mi
=
gtk_menu_item_new_with_label
(
_
(
"Previous image"
));
gtk_widget_show
(
mi
);
gtk_menu_shell_append
(
GTK_MENU_SHELL
(
popup_menu
),
mi
);
g_signal_connect
(
G_OBJECT
(
mi
),
"activate"
,
G_CALLBACK
(
prev_img_cb
),
NULL
);
mi
=
gtk_separator_menu_item_new
();
gtk_widget_show
(
mi
);
gtk_menu_shell_append
(
GTK_MENU_SHELL
(
popup_menu
),
mi
);
}
mi
=
gtk_menu_item_new_with_label
(
_
(
"Fit to window"
));
gtk_widget_show
(
mi
);
gtk_menu_shell_append
(
GTK_MENU_SHELL
(
popup_menu
),
mi
);
...
...
@@ -230,7 +281,7 @@ create_popup_menu ()
static
gboolean
button_handler
(
GtkWidget
*
w
,
GdkEventButton
*
ev
,
gpointer
data
)
{
if
(
ev
->
button
==
3
)
if
(
ev
->
button
==
3
&&
!
img
->
animated
)
{
gtk_menu_popup_at_pointer
(
GTK_MENU
(
popup_menu
),
NULL
);
return
TRUE
;
...
...
@@ -252,6 +303,33 @@ size_allocate_cb ()
picture_fit_to_window
();
}
static
void
init_img_data
()
{
if
(
options
.
common_data
.
uri
)
{
img
=
g_new0
(
ImageItem
,
1
);
img
->
filename
=
options
.
common_data
.
uri
;
}
else
if
(
options
.
extra_data
&&
*
options
.
extra_data
)
{
gchar
**
args
=
options
.
extra_data
;
gint
i
=
0
;
while
(
args
[
i
]
!=
NULL
)
{
ImageItem
*
ii
;
ii
=
g_new0
(
ImageItem
,
1
);
ii
->
filename
=
args
[
i
];
img_list
=
g_list_append
(
img_list
,
ii
);
i
++
;
}
lp
=
g_list_first
(
img_list
);
img
=
(
ImageItem
*
)
lp
->
data
;
}
}
GtkWidget
*
picture_create_widget
(
GtkWidget
*
dlg
)
{
...
...
@@ -272,19 +350,19 @@ picture_create_widget (GtkWidget * dlg)
gtk_container_add
(
GTK_CONTAINER
(
ev
),
picture
);
/* load picture */
if
(
options
.
common_data
.
uri
&&
g_file_test
(
options
.
common_data
.
uri
,
G_FILE_TEST_EXISTS
))
load_picture
(
options
.
common_data
.
uri
);
else
gtk_image_set_from_icon_name
(
GTK_IMAGE
(
picture
),
"image-missing"
,
GTK_ICON_SIZE_DIALOG
);
init_img_data
();
load_picture
();
if
(
loaded
&&
!
animated
)
if
(
img
)
{
create_popup_menu
();
g_signal_connect
(
G_OBJECT
(
ev
),
"button-press-event"
,
G_CALLBACK
(
button_handler
),
NULL
);
g_signal_connect
(
G_OBJECT
(
ev
),
"key-press-event"
,
G_CALLBACK
(
key_handler
),
NULL
);
g_signal_connect
(
G_OBJECT
(
ev
),
"size-allocate"
,
G_CALLBACK
(
size_allocate_cb
),
NULL
);
load_picture
(
0
);
}
else
gtk_image_set_from_icon_name
(
GTK_IMAGE
(
picture
),
"image-missing"
,
GTK_ICON_SIZE_DIALOG
);
return
sw
;
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment