Added search disabling when current view can't be searched
This commit is contained in:
parent
8b127400e8
commit
e14ab32aa6
|
@ -28,6 +28,7 @@
|
|||
#include "gm-world-tab.h"
|
||||
#include "mcp/gm-mcp-session.h"
|
||||
#include "mcp/gm-mcp-package.h"
|
||||
#include "gm-searchable.h"
|
||||
|
||||
//#include "if_world.h"
|
||||
//#include "if_worlds_listing.h"
|
||||
|
@ -55,6 +56,8 @@ void on_gm_app_view_button_find_close_clicked(GtkButton *button,
|
|||
|
||||
void on_gm_app_view_notebook_switch_page(GtkNotebook * notebook,
|
||||
GtkNotebookPage * page, guint page_num, GmAppView *view);
|
||||
void on_gm_app_view_world_view_notebook_switch_page(GtkNotebook * notebook,
|
||||
GtkNotebookPage * page, guint page_num, GmAppView *view);
|
||||
gboolean on_gm_app_view_notebook_button_press(GtkNotebook *notebook,
|
||||
GdkEventButton *event, GmAppView *view);
|
||||
gboolean on_gm_app_view_notebook_button_release(GtkNotebook *notebook,
|
||||
|
@ -116,7 +119,9 @@ struct _GmAppViewPrivate {
|
|||
|
||||
GtkEntry *entry_find;
|
||||
GtkVBox *vbox_find;
|
||||
GtkHBox *hbox_control_find;
|
||||
GtkCheckButton *check_button_search_direction;
|
||||
gboolean ignore_toggling;
|
||||
|
||||
gboolean drag_in_progress;
|
||||
gint motion_notify_handler_id;
|
||||
|
@ -214,6 +219,7 @@ GtkWidget *
|
|||
gm_app_view_create_search_box(GmAppView *view) {
|
||||
GtkWidget *vbox = gtk_vbox_new(FALSE, 3);
|
||||
GtkWidget *hbox = gtk_hbox_new(FALSE, 6);
|
||||
GtkWidget *hbox_control = gtk_hbox_new(FALSE, 6);
|
||||
GtkWidget *lbl = gtk_label_new(_("Find:"));
|
||||
GtkWidget *entry = gtk_entry_new();
|
||||
GtkWidget *button = gtk_button_new();
|
||||
|
@ -235,19 +241,22 @@ gm_app_view_create_search_box(GmAppView *view) {
|
|||
gtk_box_pack_start(GTK_BOX(hbox_button),
|
||||
gtk_label_new(_("Find next")), FALSE, FALSE, 0);
|
||||
|
||||
gtk_box_pack_start(GTK_BOX(hbox), lbl, FALSE, FALSE, 0);
|
||||
gtk_box_pack_start(GTK_BOX(hbox), entry, FALSE, FALSE, 0);
|
||||
gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0);
|
||||
gtk_box_pack_start(GTK_BOX(hbox), check_button, FALSE, FALSE, 0);
|
||||
gtk_box_pack_start(GTK_BOX(hbox_control), lbl, FALSE, FALSE, 0);
|
||||
gtk_box_pack_start(GTK_BOX(hbox_control), entry, FALSE, FALSE, 0);
|
||||
gtk_box_pack_start(GTK_BOX(hbox_control), button, FALSE, FALSE, 0);
|
||||
gtk_box_pack_start(GTK_BOX(hbox_control), check_button, FALSE, FALSE, 0);
|
||||
gtk_box_pack_start(GTK_BOX(hbox), hbox_control, FALSE, FALSE, 0);
|
||||
gtk_box_pack_end(GTK_BOX(hbox), button_close, FALSE, FALSE, 0);
|
||||
|
||||
view->priv->vbox_find = GTK_VBOX(vbox);
|
||||
view->priv->hbox_control_find = GTK_HBOX(hbox_control);
|
||||
view->priv->entry_find = GTK_ENTRY(entry);
|
||||
view->priv->check_button_search_direction = GTK_CHECK_BUTTON(check_button);
|
||||
view->priv->ignore_toggling = FALSE;
|
||||
|
||||
gtk_widget_show_all(vbox);
|
||||
gtk_widget_hide(vbox);
|
||||
|
||||
|
||||
g_signal_connect(entry, "activate",
|
||||
G_CALLBACK(on_gm_app_view_entry_find_activate), view);
|
||||
g_signal_connect(entry, "changed",
|
||||
|
@ -257,6 +266,8 @@ gm_app_view_create_search_box(GmAppView *view) {
|
|||
|
||||
g_signal_connect(button_close, "clicked",
|
||||
G_CALLBACK(on_gm_app_view_button_find_close_clicked), view);
|
||||
g_signal_connect(button, "clicked",
|
||||
G_CALLBACK(on_gm_app_view_entry_find_activate), view);
|
||||
g_signal_connect(check_button, "toggled",
|
||||
G_CALLBACK(on_gm_app_view_check_button_search_direction_toggled),
|
||||
view);
|
||||
|
@ -328,7 +339,6 @@ gm_app_view_init(GmAppView *view) {
|
|||
GtkWidget *note;
|
||||
|
||||
view->priv = GM_APP_VIEW_GET_PRIVATE(view);
|
||||
|
||||
vbox = gtk_vbox_new(FALSE, 3);
|
||||
|
||||
gtk_widget_show(vbox);
|
||||
|
@ -392,8 +402,9 @@ gm_app_view_new(GmApp *application) {
|
|||
view->priv->active_world = NULL;
|
||||
|
||||
// Toggle search direction
|
||||
dir = gm_options_get_int(gm_app_options(application), "search_direction")
|
||||
dir = gm_options_get_int(gm_app_options(application), "search_direction_world")
|
||||
== 1;
|
||||
|
||||
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(
|
||||
view->priv->check_button_search_direction), dir);
|
||||
|
||||
|
@ -793,6 +804,8 @@ on_gm_app_view_world_load(GmWorld *world, GmAppView *view) {
|
|||
|
||||
g_signal_connect(gm_world_get_mcp_session(world), "package_created",
|
||||
G_CALLBACK(on_gm_app_view_world_mcp_package_created), view);
|
||||
g_signal_connect(world_view, "switch_page",
|
||||
G_CALLBACK(on_gm_app_view_world_view_notebook_switch_page), view);
|
||||
|
||||
gtk_notebook_append_page(view->priv->notebook, world_view,
|
||||
GTK_WIDGET(tab));
|
||||
|
@ -837,32 +850,32 @@ void
|
|||
on_gm_app_view_accel_switch_page(GtkAccelGroup * accelgroup, GObject * arg1,
|
||||
guint arg2, GdkModifierType arg3, AccelInfo *info) {
|
||||
|
||||
gtk_notebook_set_current_page(info->view->priv->notebook, info->num);
|
||||
gtk_notebook_set_current_page(info->view->priv->notebook, info->num);
|
||||
}
|
||||
|
||||
void
|
||||
on_gm_app_view_accel_switch_edit(GtkAccelGroup * accelgroup, GObject * arg1,
|
||||
guint arg2, GdkModifierType arg3, AccelInfo *info) {
|
||||
GmWorld *world = gm_app_view_active_world(info->view);
|
||||
GmWorld *world = gm_app_view_active_world(info->view);
|
||||
|
||||
if (world) {
|
||||
gtk_notebook_set_current_page(info->view->priv->notebook, info->num);
|
||||
}
|
||||
if (world) {
|
||||
gtk_notebook_set_current_page(info->view->priv->notebook, info->num);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
on_gm_app_view_accel_cycle_page(GtkAccelGroup * accelgroup, GObject * arg1,
|
||||
guint arg2, GdkModifierType arg3, AccelInfo *info) {
|
||||
GtkNotebook *note = info->view->priv->notebook;
|
||||
int p = gtk_notebook_get_current_page(note) + info->num;
|
||||
GtkNotebook *note = info->view->priv->notebook;
|
||||
gint p = gtk_notebook_get_current_page(note) + info->num;
|
||||
|
||||
if (p < 0) {
|
||||
gtk_notebook_set_current_page(note, gtk_notebook_get_n_pages(note) - 1);
|
||||
} else if (p > gtk_notebook_get_n_pages(note) - 1) {
|
||||
gtk_notebook_set_current_page(note, 0);
|
||||
} else {
|
||||
gtk_notebook_set_current_page(note, p);
|
||||
}
|
||||
if (p < 0) {
|
||||
gtk_notebook_set_current_page(note, gtk_notebook_get_n_pages(note) - 1);
|
||||
} else if (p > gtk_notebook_get_n_pages(note) - 1) {
|
||||
gtk_notebook_set_current_page(note, 0);
|
||||
} else {
|
||||
gtk_notebook_set_current_page(note, p);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -870,15 +883,15 @@ on_gm_app_view_world_activate(GtkAction * action, GmWorld *world) {
|
|||
gm_world_load(world);
|
||||
}
|
||||
|
||||
GmWorldViewSearchFlags
|
||||
GmSearchableSearchFlags
|
||||
gm_app_view_search_flags(GmAppView *view) {
|
||||
gboolean active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(
|
||||
view->priv->check_button_search_direction));
|
||||
|
||||
if (active) {
|
||||
return GM_WORLD_VIEW_SEARCH_BACKWARDS;
|
||||
return GM_SEARCHABLE_SEARCH_BACKWARDS;
|
||||
} else {
|
||||
return GM_WORLD_VIEW_SEARCH_FORWARDS;
|
||||
return GM_SEARCHABLE_SEARCH_FORWARDS;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -917,7 +930,7 @@ on_gm_app_view_entry_find_activate(GtkEntry *entry, GmAppView *view) {
|
|||
void
|
||||
gm_app_view_show_find_box(GmAppView *view) {
|
||||
GmWorldView *world_view;
|
||||
int i, n;
|
||||
gint i, n;
|
||||
|
||||
if (!GTK_WIDGET_VISIBLE(view->priv->vbox_find)) {
|
||||
n = gtk_notebook_get_n_pages(view->priv->notebook);
|
||||
|
@ -991,10 +1004,27 @@ on_gm_app_view_button_find_close_clicked(GtkButton *button,
|
|||
void
|
||||
on_gm_app_view_check_button_search_direction_toggled(GtkToggleButton *button,
|
||||
GmAppView *view) {
|
||||
gboolean active = gtk_toggle_button_get_active(button);
|
||||
GmWorldView *active_view;
|
||||
gboolean active;
|
||||
|
||||
gm_options_set_int(gm_app_options(view->priv->application),
|
||||
"search_direction", active ? 1 : 0);
|
||||
if (view->priv->ignore_toggling) {
|
||||
return;
|
||||
}
|
||||
|
||||
active_view = gm_app_view_active_world_view(view);
|
||||
if (active_view == NULL) {
|
||||
return;
|
||||
}
|
||||
|
||||
active = gtk_toggle_button_get_active(button);
|
||||
|
||||
if (gtk_notebook_get_current_page(GTK_NOTEBOOK(active_view)) == 0) {
|
||||
gm_options_set_int(gm_app_options(view->priv->application),
|
||||
"search_direction_world", active ? 1 : 0);
|
||||
} else {
|
||||
gm_options_set_int(gm_app_options(view->priv->application),
|
||||
"search_direction", active ? 1 : 0);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -1178,6 +1208,29 @@ on_gm_app_view_notebook_button_release(GtkNotebook *notebook,
|
|||
return FALSE;
|
||||
}
|
||||
|
||||
void
|
||||
on_gm_app_view_world_view_notebook_switch_page(GtkNotebook *notebook,
|
||||
GtkNotebookPage * page, guint page_num, GmAppView *view) {
|
||||
GmWorldView *world_view = GM_WORLD_VIEW(notebook);
|
||||
gboolean direction;
|
||||
|
||||
gtk_widget_set_sensitive(GTK_WIDGET(view->priv->hbox_control_find),
|
||||
gm_world_view_page_can_find(world_view, page_num));
|
||||
|
||||
if (page_num == 0) {
|
||||
direction = gm_options_get_int(gm_app_options(gm_app_instance()),
|
||||
"search_direction_world");
|
||||
} else {
|
||||
direction = gm_options_get_int(gm_app_options(gm_app_instance()),
|
||||
"search_direction");
|
||||
}
|
||||
|
||||
view->priv->ignore_toggling = TRUE;
|
||||
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(
|
||||
view->priv->check_button_search_direction), direction);
|
||||
view->priv->ignore_toggling = FALSE;
|
||||
}
|
||||
|
||||
void
|
||||
on_gm_app_view_notebook_switch_page(GtkNotebook * notebook,
|
||||
GtkNotebookPage * page, guint page_num, GmAppView *view) {
|
||||
|
@ -1195,6 +1248,9 @@ on_gm_app_view_notebook_switch_page(GtkNotebook * notebook,
|
|||
view->priv->active_world = world;
|
||||
gm_world_set_active(view->priv->active_world, TRUE);
|
||||
}
|
||||
|
||||
on_gm_app_view_world_view_notebook_switch_page(GTK_NOTEBOOK(
|
||||
gm_app_view_active_world_view(view)), NULL, 0, view);
|
||||
}
|
||||
|
||||
static const gchar *authors[] = {
|
||||
|
|
Reference in New Issue