Compare commits
2 Commits
ada67f044a
...
c3eb5ca170
Author | SHA1 | Date | |
---|---|---|---|
c3eb5ca170 | |||
9c0e9d8d49 |
52
fastiv.c
52
fastiv.c
@ -54,6 +54,8 @@ exit_fatal(const gchar *format, ...)
|
||||
|
||||
// --- Main --------------------------------------------------------------------
|
||||
|
||||
// TODO(p): See if it's possible to give separators room to shrink
|
||||
// by some minor amount of pixels, margin-wise.
|
||||
// TODO(p): Add a toggle for a checkerboard background.
|
||||
// TODO(p): Implement commented-out actions.
|
||||
#define B make_toolbar_button
|
||||
@ -62,23 +64,23 @@ exit_fatal(const gchar *format, ...)
|
||||
XX(BROWSE, B("view-grid-symbolic", "Browse")) \
|
||||
XX(FILE_PREVIOUS, B("go-previous-symbolic", "Previous file")) \
|
||||
XX(FILE_NEXT, B("go-next-symbolic", "Next file")) \
|
||||
XX(S1, make_separator()) \
|
||||
XX(S1, gtk_separator_new(GTK_ORIENTATION_HORIZONTAL)) \
|
||||
XX(PAGE_FIRST, B("go-top-symbolic", "First page")) \
|
||||
XX(PAGE_PREVIOUS, B("go-up-symbolic", "Previous page")) \
|
||||
XX(PAGE_NEXT, B("go-down-symbolic", "Next page")) \
|
||||
XX(PAGE_LAST, B("go-bottom-symbolic", "Last page")) \
|
||||
XX(S2, make_separator()) \
|
||||
XX(S2, gtk_separator_new(GTK_ORIENTATION_HORIZONTAL)) \
|
||||
XX(SKIP_BACK, B("media-skip-backward-symbolic", "Rewind playback")) \
|
||||
XX(SEEK_BACK, B("media-seek-backward-symbolic", "Previous frame")) \
|
||||
XX(PLAY_PAUSE, B("media-playback-start-symbolic", "Pause")) \
|
||||
XX(SEEK_FORWARD, B("media-seek-forward-symbolic", "Next frame")) \
|
||||
XX(S3, make_separator()) \
|
||||
XX(S3, gtk_separator_new(GTK_ORIENTATION_HORIZONTAL)) \
|
||||
XX(PLUS, B("zoom-in-symbolic", "Zoom in")) \
|
||||
XX(SCALE, gtk_label_new("")) \
|
||||
XX(MINUS, B("zoom-out-symbolic", "Zoom out")) \
|
||||
XX(ONE, B("zoom-original-symbolic", "Original size")) \
|
||||
XX(FIT, T("zoom-fit-best-symbolic", "Scale to fit")) \
|
||||
XX(S4, make_separator()) \
|
||||
XX(S4, gtk_separator_new(GTK_ORIENTATION_HORIZONTAL)) \
|
||||
/* XX(PIN, B("view-pin-symbolic", "Keep view configuration")) */ \
|
||||
/* Or perhaps "blur-symbolic", also in the extended set. */ \
|
||||
XX(SMOOTH, T("blend-tool-symbolic", "Smooth scaling")) \
|
||||
@ -86,11 +88,11 @@ exit_fatal(const gchar *format, ...)
|
||||
XX(SAVE, B("document-save-as-symbolic", "Save as...")) \
|
||||
XX(PRINT, B("document-print-symbolic", "Print...")) \
|
||||
/* XX(INFO, B("info-symbolic", "Information")) */ \
|
||||
XX(S5, make_separator()) \
|
||||
XX(S5, gtk_separator_new(GTK_ORIENTATION_HORIZONTAL)) \
|
||||
XX(LEFT, B("object-rotate-left-symbolic", "Rotate left")) \
|
||||
XX(MIRROR, B("object-flip-horizontal-symbolic", "Mirror")) \
|
||||
XX(RIGHT, B("object-rotate-right-symbolic", "Rotate right")) \
|
||||
XX(S6, make_separator()) \
|
||||
XX(S6, gtk_separator_new(GTK_ORIENTATION_HORIZONTAL)) \
|
||||
/* We are YouTube. */ \
|
||||
XX(FULLSCREEN, B("view-fullscreen-symbolic", "Fullscreen"))
|
||||
|
||||
@ -723,17 +725,6 @@ make_toolbar_toggle(const gchar *symbolic, const gchar *tooltip)
|
||||
return button;
|
||||
}
|
||||
|
||||
static GtkWidget *
|
||||
make_separator(void)
|
||||
{
|
||||
// TODO(p): See if it's possible to give the separator room to shrink
|
||||
// by some minor amount of pixels, margin-wise.
|
||||
GtkWidget *separator = gtk_separator_new(GTK_ORIENTATION_HORIZONTAL);
|
||||
gtk_widget_set_margin_start(separator, 10);
|
||||
gtk_widget_set_margin_end(separator, 10);
|
||||
return separator;
|
||||
}
|
||||
|
||||
static void
|
||||
on_view_actions_changed(void)
|
||||
{
|
||||
@ -873,9 +864,19 @@ make_view_toolbar(void)
|
||||
|
||||
// GtkStatusBar solves a problem we do not have here.
|
||||
GtkWidget *view_toolbar = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0);
|
||||
gtk_widget_set_name(view_toolbar, "toolbar");
|
||||
GtkBox *box = GTK_BOX(view_toolbar);
|
||||
for (int i = 0; i < TOOLBAR_COUNT; i++)
|
||||
|
||||
// Exploring different versions of awkward layouts.
|
||||
for (int i = 0; i <= TOOLBAR_S1; i++)
|
||||
gtk_box_pack_start(box, g.toolbar[i], FALSE, FALSE, 0);
|
||||
for (int i = TOOLBAR_COUNT; --i >= TOOLBAR_S6; )
|
||||
gtk_box_pack_end(box, g.toolbar[i], FALSE, FALSE, 0);
|
||||
|
||||
GtkWidget *center = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0);
|
||||
for (int i = TOOLBAR_S1; ++i < TOOLBAR_S6; )
|
||||
gtk_box_pack_start(GTK_BOX(center), g.toolbar[i], FALSE, FALSE, 0);
|
||||
gtk_box_set_center_widget(box, center);
|
||||
|
||||
toolbar_connect(TOOLBAR_BROWSE, G_CALLBACK(switch_to_browser));
|
||||
toolbar_connect(TOOLBAR_FILE_PREVIOUS, G_CALLBACK(on_previous));
|
||||
@ -971,17 +972,16 @@ main(int argc, char *argv[])
|
||||
|
||||
// This is incredibly broken https://stackoverflow.com/a/51054396/76313
|
||||
// thus resolving the problem using overlaps.
|
||||
// XXX: button.flat is too generic, it's only for the view toolbar.
|
||||
// XXX: Similarly, box > separator.horizontal is a temporary hack.
|
||||
// Consider using a #name or a .class here, possibly for a parent widget.
|
||||
const char *style = "@define-color fiv-tile #3c3c3c; \
|
||||
fiv-view, fiv-browser { background: @content_view_bg; } \
|
||||
placessidebar.fiv .toolbar { padding: 2px 6px; } \
|
||||
placessidebar.fiv box > separator { margin: 4px 0; } \
|
||||
button.flat { padding-left: 0; padding-right: 0 } \
|
||||
box > separator.horizontal { \
|
||||
#toolbar button { padding-left: 0; padding-right: 0; } \
|
||||
#toolbar > button:first-child { padding-left: 4px; } \
|
||||
#toolbar > button:last-child { padding-right: 4px; } \
|
||||
#toolbar separator { \
|
||||
background: mix(@insensitive_fg_color, \
|
||||
@insensitive_bg_color, 0.4); margin: 6px 0; \
|
||||
@insensitive_bg_color, 0.4); margin: 6px 10px; \
|
||||
} \
|
||||
fiv-browser { padding: 5px; } \
|
||||
fiv-browser.item { \
|
||||
@ -1019,11 +1019,9 @@ main(int argc, char *argv[])
|
||||
g_object_set(gtk_settings_get_default(),
|
||||
"gtk-application-prefer-dark-theme", TRUE, NULL);
|
||||
|
||||
GtkWidget *view_toolbar = make_view_toolbar();
|
||||
gtk_widget_set_halign(view_toolbar, GTK_ALIGN_CENTER);
|
||||
|
||||
// Need to put the toolbar at the top, because of the horizontal scrollbar.
|
||||
g.view_box = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0);
|
||||
GtkWidget *view_toolbar = make_view_toolbar();
|
||||
gtk_box_pack_start(GTK_BOX(g.view_box), view_toolbar, FALSE, FALSE, 0);
|
||||
gtk_box_pack_start(GTK_BOX(g.view_box),
|
||||
gtk_separator_new(GTK_ORIENTATION_VERTICAL), FALSE, FALSE, 0);
|
||||
|
Loading…
x
Reference in New Issue
Block a user