#include "pan-item.h"
#include "pan-timeline.h"
#include "pan-util.h"
+#include "pan-view-filter.h"
#include "pan-view-search.h"
#include "pixbuf-renderer.h"
#include "pixbuf_util.h"
}
}
-static void pan_layout_update(PanWindow *pw)
+void pan_layout_update(PanWindow *pw)
{
pan_window_message(pw, _("Sorting images..."));
pan_layout_update_idle(pw);
imd_widget = gtk_container_get_focus_child(GTK_CONTAINER(pw->imd->widget));
focused = (pw->fs || (imd_widget && gtk_widget_has_focus(imd_widget)));
on_entry = (gtk_widget_has_focus(pw->path_entry) ||
- gtk_widget_has_focus(pw->search_entry));
+ gtk_widget_has_focus(pw->search_ui->search_entry) ||
+ gtk_widget_has_focus(pw->filter_ui->filter_entry));
if (focused)
{
if (stop_signal) return stop_signal;
+ // Don't steal characters from entry boxes.
if (!on_entry)
{
stop_signal = TRUE;
}
pan_fullscreen_toggle(pw, TRUE);
+ pan_search_ui_destroy(&pw->search_ui);
+ pan_filter_ui_destroy(&pw->filter_ui);
gtk_widget_destroy(pw->window);
pan_window_items_free(pw);
/* find bar */
- pw->search_box = gtk_hbox_new(FALSE, PREF_PAD_SPACE);
- gtk_box_pack_start(GTK_BOX(vbox), pw->search_box, FALSE, FALSE, 2);
+ pw->search_ui = pan_search_ui_new(pw);
+ gtk_box_pack_start(GTK_BOX(vbox), pw->search_ui->search_box, FALSE, FALSE, 2);
- pref_spacer(pw->search_box, 0);
- pref_label_new(pw->search_box, _("Find:"));
-
- hbox = gtk_hbox_new(TRUE, PREF_PAD_SPACE);
- gtk_box_pack_start(GTK_BOX(pw->search_box), hbox, TRUE, TRUE, 0);
- gtk_widget_show(hbox);
-
- combo = tab_completion_new_with_history(&pw->search_entry, "", "pan_view_search", -1,
- pan_search_activate_cb, pw);
- gtk_box_pack_start(GTK_BOX(hbox), combo, TRUE, TRUE, 0);
- gtk_widget_show(combo);
-
- pw->search_label = gtk_label_new("");
- gtk_box_pack_start(GTK_BOX(hbox), pw->search_label, TRUE, TRUE, 0);
- gtk_widget_show(pw->search_label);
+ /* filter bar */
+ pw->filter_ui = pan_filter_ui_new(pw);
+ gtk_box_pack_start(GTK_BOX(vbox), pw->filter_ui->filter_box, FALSE, FALSE, 2);
/* status bar */
gtk_container_add(GTK_CONTAINER(frame), pw->label_zoom);
gtk_widget_show(pw->label_zoom);
- pw->search_button = gtk_toggle_button_new();
- gtk_button_set_relief(GTK_BUTTON(pw->search_button), GTK_RELIEF_NONE);
- gtk_button_set_focus_on_click(GTK_BUTTON(pw->search_button), FALSE);
- hbox = gtk_hbox_new(FALSE, PREF_PAD_GAP);
- gtk_container_add(GTK_CONTAINER(pw->search_button), hbox);
- gtk_widget_show(hbox);
- pw->search_button_arrow = gtk_arrow_new(GTK_ARROW_UP, GTK_SHADOW_NONE);
- gtk_box_pack_start(GTK_BOX(hbox), pw->search_button_arrow, FALSE, FALSE, 0);
- gtk_widget_show(pw->search_button_arrow);
- pref_label_new(hbox, _("Find"));
-
- gtk_box_pack_end(GTK_BOX(box), pw->search_button, FALSE, FALSE, 0);
- gtk_widget_show(pw->search_button);
- g_signal_connect(G_OBJECT(pw->search_button), "clicked",
- G_CALLBACK(pan_search_toggle_cb), pw);
+ // Add the "Find" button to the status bar area.
+ gtk_box_pack_end(GTK_BOX(box), pw->search_ui->search_button, FALSE, FALSE, 0);
+ gtk_widget_show(pw->search_ui->search_button);
+
+ // Add the "Filter" button to the status bar area.
+ gtk_box_pack_end(GTK_BOX(box), pw->filter_ui->filter_button, FALSE, FALSE, 0);
+ gtk_widget_show(pw->filter_ui->filter_button);
g_signal_connect(G_OBJECT(pw->window), "delete_event",
G_CALLBACK(pan_window_delete_cb), pw);