void capture_start(GtkWidget *widget,gpointer data) { GtkWidget *isenable; uint8_t i = 0; guint text_len = 0; pthread_mutex_lock(&capture_state_mtx); if (capture_state == 0) capture_state = 1; pthread_mutex_unlock(&capture_state_mtx); init_file(); capture_packet(); pthread_mutex_lock(&packet_stat_mtx); tot_packet = 0; ip_packet = 0; tcp_packet = 0; udp_packet = 0; arp_packet = 0; icmp_packet = 0; igmp_packet = 0; capture_pre_packet = 0; pthread_mutex_unlock(&packet_stat_mtx); isenable = capture_menu[0].widget; gtk_widget_set_sensitive(isenable,FALSE); isenable = capture_menu[1].widget; gtk_widget_set_sensitive(isenable,TRUE); gtk_clist_clear((GtkCList *)clist); for (i = 0;i < 5;i++) { if (item[i]) { gtk_tree_item_remove_subtree((GtkTreeItem *)item[i]); gtk_container_remove (GTK_CONTAINER(tree), item[i]); item[i] = NULL; } } gtk_text_freeze(GTK_TEXT(hex_text)); text_len = gtk_text_get_length(GTK_TEXT(hex_text)); gtk_text_backward_delete(GTK_TEXT(hex_text),text_len); gtk_text_thaw(GTK_TEXT(hex_text)); gtk_text_freeze(GTK_TEXT(hex_text)); text_len = gtk_text_get_length(GTK_TEXT(hex_text)); gtk_text_backward_delete(GTK_TEXT(hex_text),text_len); gtk_text_thaw(GTK_TEXT(hex_text)); }
/* * FindFunction * * Looks for the string in the notepad. */ void FindFunction (GtkWidget *widget, gpointer data) { int nIndex; GtkWidget *text = GetTextWidget (); char *szHaystack; /* --- Get the text from the widget --- */ szHaystack = GetText (); /* --- Free up the old needle (text) --- */ if (szNeedle) { g_free (szNeedle); } /* --- Get text to search for. --- */ szNeedle = gtk_editable_get_chars ( GTK_EDITABLE (entry), 0, -1); /* --- Get cursor position --- */ nIndex = GTK_EDITABLE (text)->selection_end_pos; /* --- Find the string --- */ nIndex = LookForString (szHaystack, szNeedle, nIndex); if (nIndex >= 0) { /* --- Move the cursor to a position --- */ gtk_text_set_point (GTK_TEXT (text), nIndex); /* --- These two lines will force the widget to --- */ /* scroll to the position where the text is. --- */ gtk_text_insert (GTK_TEXT (text), NULL, NULL, NULL, " ", 1); gtk_text_backward_delete (GTK_TEXT (text), 1); /* --- Select the field found. --- */ gtk_editable_select_region (GTK_EDITABLE (text), nIndex, nIndex + strlen (szNeedle)); /* --- Allow it to be created again --- */ dialog_window = NULL; } else { ShowMessage ("Find...", "Not found. Reached the end of the file."); } /* --- Release memory. --- */ g_free (szHaystack); }
static void replace_word(GtkWidget *w, gpointer d) { int start, end; char *newword; char buf[BUFSIZE]; /* we don't save their position, * because the cursor is moved by the click. */ gtk_text_freeze(GTK_TEXT(d)); gtk_label_get(GTK_LABEL(GTK_BIN(w)->child), &newword); get_curword(GTK_TEXT(d), buf, &start, &end); gtk_text_set_point(GTK_TEXT(d), end); gtk_text_backward_delete(GTK_TEXT(d), end-start); gtk_text_insert(GTK_TEXT(d), NULL, NULL, NULL, newword, strlen(newword)); gtk_text_thaw(GTK_TEXT(d)); }
void clearlog (gpointer data) { gint len; #if GTK_MAJOR_VERSION == 1 len = gtk_text_get_length (GTK_TEXT (logwdw)); gtk_text_set_point (GTK_TEXT (logwdw), len); gtk_text_backward_delete (GTK_TEXT (logwdw), len); #else GtkTextBuffer * textbuf; GtkTextIter iter, iter2; textbuf = gtk_text_view_get_buffer (GTK_TEXT_VIEW (logwdw)); len = gtk_text_buffer_get_char_count (textbuf); gtk_text_buffer_get_iter_at_offset (textbuf, &iter, 0); gtk_text_buffer_get_iter_at_offset (textbuf, &iter2, len); gtk_text_buffer_delete (textbuf, &iter, &iter2); #endif }
void nh_message_putstr(const char *str) { int i; int len; char *buf; GtkText *t; #ifdef FROZEN_INSERT static int freeze_count=0; #endif if (!message_text) return; t = GTK_TEXT(message_text); len = strlen(str); buf = (char *)alloc(len + 2); sprintf(buf, "\n%s", str); #ifdef FROZEN_INSERT /* ALI: gimpwin 20001226 looks very bad if you update a text widget without * freezing it (the text is displayed half-scrolled, with lines overlapping * each other). This is not ideal (the text is redrawn each thaw), but it * is an improvement. Due to a bug in gimpwin we can't trim text if we've * frozen the widget, thus every so often we don't freeze but trim instead. */ if (++freeze_count >= 50) /* Trim text every 50 inserts */ freeze_count = 0; else gtk_text_freeze(t); #endif if (nh_status_in_trouble()) i = CLR_RED; else i = MAP_BLACK; gtk_text_insert(t, NULL, &nh_color[i], &nh_color[MAP_WHITE], buf, len + 1); len = gtk_text_get_length(t); #ifdef FROZEN_INSERT if (!freeze_count && len > NH_TEXT_REMEMBER) { #else if (len > NH_TEXT_REMEMBER) { #endif gtk_text_freeze(t); for(i = 0; i < len && len > NH_TEXT_REMEMBER; i++) if (GTK_TEXT_INDEX(t, i) == '\n') { i++; gtk_text_set_point(t, i); gtk_text_backward_delete(t, i); len -= i; } gtk_text_set_point(t, len); gtk_text_thaw(t); } #ifdef FROZEN_INSERT /* ALI: t->vadj->upper would be more correct, but causes gimpwin to crash */ if (freeze_count) { gtk_adjustment_set_value(t->vadj, t->vadj->upper - 1); gtk_text_thaw(t); } #endif free(buf); } #endif /* USE_TEXTVIEW */ int GTK_doprev_message() { return 0; } void nh_message_destroy(void) { message_text = NULL; }