Fixed disconnecting while connecting, added case matching searching

This commit is contained in:
Jesse van den Kieboom 2006-01-08 16:31:32 +00:00
parent caa57f6877
commit f348d7f24c
1 changed files with 54 additions and 21 deletions

View File

@ -66,6 +66,8 @@ gboolean on_gm_app_view_notebook_button_release(GtkNotebook *notebook,
GdkEventButton *event, GmAppView *view);
void on_gm_app_view_check_button_search_direction_toggled(
GtkToggleButton *button, GmAppView *view);
void on_gm_app_view_check_button_search_sensitive_toggled(
GtkToggleButton *button, GmAppView *view);
gboolean on_gm_app_view_tray_button_press(GmTray *tray, GdkEventButton *event,
GmAppView *view);
@ -140,6 +142,7 @@ struct _GmAppViewPrivate {
GtkHBox *hbox_control_find;
GtkHBox *hbox_replace;
GtkCheckButton *check_button_search_direction;
GtkCheckButton *check_button_search_sensitive;
gboolean ignore_toggling;
gboolean drag_in_progress;
@ -331,8 +334,7 @@ gm_app_view_create_search_box(GmAppView *view) {
GtkWidget *entry;
GtkWidget *button;
GtkWidget *align;
GtkWidget *check_button =
gtk_check_button_new_with_label(_("Search backwards"));
GtkWidget *check_button;
GtkWidget *button_close = gtk_button_new_from_stock(GTK_STOCK_CLOSE);
GtkWidget *separator = gtk_hseparator_new();
GtkWidget *expander = gtk_expander_new(NULL);
@ -381,7 +383,22 @@ gm_app_view_create_search_box(GmAppView *view) {
gtk_box_pack_start(GTK_BOX(hbox_control), entry, FALSE, FALSE, 0);
gtk_box_pack_start(GTK_BOX(hbox_control), button, FALSE, FALSE, 0);
check_button = gtk_check_button_new_with_label(_("Search backwards"));
g_signal_connect(check_button, "toggled",
G_CALLBACK(on_gm_app_view_check_button_search_direction_toggled),
view);
view->priv->check_button_search_direction = GTK_CHECK_BUTTON(check_button);
gtk_box_pack_start(GTK_BOX(hbox_control), check_button, FALSE, FALSE, 0);
check_button = gtk_check_button_new_with_label(_("Match case"));
g_signal_connect(check_button, "toggled",
G_CALLBACK(on_gm_app_view_check_button_search_sensitive_toggled),
view);
view->priv->check_button_search_sensitive = GTK_CHECK_BUTTON(check_button);
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);
@ -409,7 +426,6 @@ gm_app_view_create_search_box(GmAppView *view) {
view->priv->hbox_replace = GTK_HBOX(hbox);
view->priv->vbox_find = GTK_VBOX(vbox);
view->priv->hbox_control_find = GTK_HBOX(hbox_control);
view->priv->check_button_search_direction = GTK_CHECK_BUTTON(check_button);
view->priv->ignore_toggling = FALSE;
gtk_widget_show_all(vbox);
@ -419,9 +435,6 @@ 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(check_button, "toggled",
G_CALLBACK(on_gm_app_view_check_button_search_direction_toggled),
view);
return vbox;
}
@ -565,17 +578,19 @@ gm_app_view_init(GmAppView *view) {
GmAppView *
gm_app_view_new(GmApp *application) {
GmAppView *view = GM_APP_VIEW(g_object_new(GM_TYPE_APP_VIEW, NULL));
gboolean dir;
view->priv->application = application;
view->priv->active_world = NULL;
// Toggle 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);
view->priv->check_button_search_direction),
gm_options_get_int(gm_app_options(application),
"search_direction_world"));
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(
view->priv->check_button_search_sensitive),
gm_options_get_int(gm_app_options(application),
"search_sensitive"));
g_signal_connect(application, "world_added",
G_CALLBACK(on_gm_app_view_world_added), view);
@ -728,7 +743,7 @@ gm_app_view_update_tray(GmAppView *view) {
}
if (!active) {
for (worlds = gm_app_worlds(gm_app_instance()); worlds;
for (worlds = gm_app_worlds(view->priv->application); worlds;
worlds = worlds->next) {
world = GM_WORLD(worlds->data);
activity = gm_world_activity(world);
@ -895,7 +910,7 @@ on_gm_app_view_world_state_changing(GmWorld *world, GmNetState state,
GmAppView *view) {
if (world == gm_app_view_active_world(view)) {
switch (state) {
case GM_NET_STATE_CONNECTED:
case GM_NET_STATE_CONNECTING:
gm_app_view_update_connect_button(view, TRUE);
break;
case GM_NET_STATE_DISCONNECTED:
@ -1019,14 +1034,23 @@ on_gm_app_view_world_activate(GtkAction * action, GmWorld *world) {
GmSearchableSearchFlags
gm_app_view_search_flags(GmAppView *view) {
GmSearchableSearchFlags flags = 0;
gboolean active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(
view->priv->check_button_search_direction));
gboolean sensitive = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(
view->priv->check_button_search_sensitive));
if (active) {
return GM_SEARCHABLE_SEARCH_BACKWARDS;
flags = GM_SEARCHABLE_SEARCH_BACKWARDS;
} else {
return GM_SEARCHABLE_SEARCH_FORWARDS;
flags = GM_SEARCHABLE_SEARCH_FORWARDS;
}
if (!sensitive) {
flags |= GM_SEARCHABLE_SEARCH_CASE_INSENSITIVE;
}
return flags;
}
gboolean
@ -1203,6 +1227,15 @@ on_gm_app_view_button_find_close_clicked(GtkButton *button,
}
}
void
on_gm_app_view_check_button_search_sensitive_toggled(GtkToggleButton *button,
GmAppView *view) {
gboolean active = gtk_toggle_button_get_active(button);
gm_options_set_int(gm_app_options(view->priv->application),
"search_sensitive", active ? 1 : 0);
}
void
on_gm_app_view_check_button_search_direction_toggled(GtkToggleButton *button,
GmAppView *view) {
@ -1452,10 +1485,10 @@ on_gm_app_view_world_view_notebook_switch_page(GtkNotebook *notebook,
}
if (page_num == 0) {
direction = gm_options_get_int(gm_app_options(gm_app_instance()),
direction = gm_options_get_int(gm_app_options(view->priv->application),
"search_direction_world");
} else {
direction = gm_options_get_int(gm_app_options(gm_app_instance()),
direction = gm_options_get_int(gm_app_options(view->priv->application),
"search_direction");
}
@ -1577,10 +1610,10 @@ on_gm_app_view_world_connect(GtkMenuItem * menuitem, GmAppView *view) {
GmWorld *world = gm_app_view_active_world(view);
if (world != NULL) {
if (gm_world_connected(world)) {
gm_world_disconnect(world);
} else if (gm_world_disconnected(world)) {
if (gm_world_disconnected(world)) {
gm_world_connect(world);
} else {
gm_world_disconnect(world);
}
}
}