📄 callbacks.c
字号:
if (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_ACCEPT) { gchar *filename; filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (dialog)); gtk_entry_set_text(mwin->p1_entry_FilePathName, filename); gtk_image_set_from_file(mwin->p1_image, filename); filename_for_existing_document = g_strdup(filename); user_edited_a_new_document = FALSE; g_free (filename); } gtk_widget_destroy (dialog);}voidon_Save_clicked(GtkWidget* w, gpointer user_data){ printf("func cb Save\n"); GtkWidget *dialog; dialog = gtk_file_chooser_dialog_new ("保存文件", mwin->window, GTK_FILE_CHOOSER_ACTION_SAVE, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, GTK_STOCK_SAVE, GTK_RESPONSE_ACCEPT, NULL); gtk_file_chooser_set_do_overwrite_confirmation(GTK_FILE_CHOOSER (dialog), TRUE); // 处理保存路径及文件名 if (user_edited_a_new_document) { gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER (dialog), default_folder_for_saving); gtk_file_chooser_set_current_name(GTK_FILE_CHOOSER(dialog), "未命名"); } else gtk_file_chooser_set_filename(GTK_FILE_CHOOSER (dialog), filename_for_existing_document); if (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_ACCEPT) { char *filename; filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (dialog)); //~ save_to_file (filename); g_free (filename); } gtk_widget_destroy (dialog); }// Action Callbackvoidon_btn_OK_clicked(GtkWidget* w, gpointer user_data){ printf("func cb ok\n"); //FILE* file; //const gchar* filename; GtkTextBuffer* tbuf; GtkTextIter start, end; tbuf = gtk_text_view_get_buffer (GTK_TEXT_VIEW (mwin->p2_textview)); //gtk_text_buffer_set_text (tbuf, "Hello, this is some text", -1); gtk_text_buffer_get_iter_at_offset(tbuf, &start, 7); gtk_text_buffer_get_iter_at_offset(tbuf, &end, 12); gchar* text_fv= gtk_text_buffer_get_text(tbuf, &start, &end, TRUE); gtk_entry_set_text(mwin->p2_entry_text, text_fv); //filename = gtk_entry_get_text(mwin->p1_entry_FilePathName); //file = fopen(filename, "r+"); //gtk_text_view_set_buffer(mwin->p2_textview, file); //fclose(file); }voidon_btn_Apply_clicked(GtkWidget* w, gpointer user_data){ printf("func cb apply\n"); gdouble pb = 0.0; int i; for (i = 0; i < 1000-1; i++) { pb = pb + 0.001; gtk_progress_bar_set_text(mwin->progressbar, "progressing"); gtk_progress_bar_set_fraction(mwin->progressbar, pb); //sleep(1); }}voidon_btn_Undo_clicked(GtkWidget* w, gpointer user_data){ printf("func cb undo\n"); gtk_progress_bar_set_fraction(mwin->progressbar, 0.0);}// FileChooserButton Callbackvoidon_page1_btn_filechooser_file_set(GtkWidget* w, gpointer user_data){ const gchar* filename; filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER (w)); gtk_image_set_from_file(mwin->p1_image, filename); }// page 3voidon_page3_radiobutton1_toggled(GtkWidget *w, gpointer data){ gboolean t = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(w)); if (t) { GtkDialog *dlg = (GtkDialog*)gtk_dialog_new_with_buttons("dialog", GTK_WINDOW(mwin->window), GTK_DIALOG_MODAL, GTK_STOCK_OK, GTK_RESPONSE_ACCEPT, GTK_STOCK_CANCEL, GTK_RESPONSE_REJECT, NULL); gtk_dialog_run(GTK_DIALOG(dlg)); gtk_widget_destroy((GtkWidget*)dlg); }}voidon_page3_radiobutton2_toggled(GtkWidget *w, gpointer data){ gboolean t = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(w)); if (t) { GtkWidget *dialog; dialog = gtk_message_dialog_new (mwin->window, GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_ERROR, GTK_BUTTONS_CLOSE, "模式消息框: '%s': %s", "strings", "Model Message Dialog."); gtk_dialog_run(GTK_DIALOG(dialog)); gtk_widget_destroy (dialog); }}voidon_page3_radiobutton3_toggled(GtkWidget *w, gpointer data){ gboolean t = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(w)); if (t) { GtkWidget *dialog; dialog = gtk_message_dialog_new (mwin->window, GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_INFO, GTK_BUTTONS_CLOSE, "无模式消息框: '%s': %s", "strings", "Modeless Message Dialog."); /* Destroy the dialog when the user responds to it (e.g. clicks a button) */ g_signal_connect_swapped (dialog, "response", G_CALLBACK (gtk_widget_destroy), dialog); gtk_widget_show(dialog); }}// popop menu// Signal handler which displays a popup menu.static gintpopup_handler_window(GtkWidget *widget, GdkEvent *event){ printf("func event handler window popup \n"); GtkMenu *menu; GdkEventButton *event_button; g_return_val_if_fail (widget != NULL, FALSE); g_return_val_if_fail (GTK_IS_MENU (widget), FALSE); g_return_val_if_fail (event != NULL, FALSE); /* The "widget" is the menu that was supplied when * g_signal_connect_swapped() was called. */ menu = GTK_MENU (widget); if (event->type == GDK_BUTTON_PRESS) { event_button = (GdkEventButton *) event; if (event_button->button == 3) { gtk_menu_popup (menu, NULL, NULL, NULL, NULL, event_button->button, event_button->time); return TRUE; } } return FALSE;}/* Prototype for selection handler callback */voidon_treeview_selection_changed(GtkTreeSelection *selection, gpointer data){ printf("func tree selection changed\n"); GtkTreeIter iter; GtkTreeModel *model; gchar *title, *author; gboolean checked = FALSE; if (gtk_tree_selection_get_selected (selection, &model, &iter)) { gtk_tree_model_get (model, &iter, TITLE_COLUMN, &title, AUTHOR_COLUMN, &author, CHECKED_COLUMN, &checked, -1); g_print ("You selected a book \n<<%s>> by <%s>, Checked Out:%s\n", title, author, checked?"TRUE":"FALSE"); g_free (author); } }voidon_treeview_row_activated(GtkTreeView *tree_view, GtkTreePath *path, GtkTreeViewColumn *column, gpointer user_data) { printf("func tree row activate\n"); }voidon_page3_combobox1_changed(GtkComboBox *widget, gpointer user_data){ GtkTreeIter iter; gchar *activetext = gtk_combo_box_get_active_text(widget); gtk_combo_box_get_active_iter(widget, &iter); if (*activetext == 'a') { gtk_combo_box_insert_text(widget, 0, "new item"); } if (*activetext == 'r') { gtk_combo_box_remove_text(widget, 0); } }voidon_page3_spinbutton1_value_changed (GtkSpinButton *spinbutton, GtkScrollType arg1, gpointer user_data){ gdouble value = gtk_spin_button_get_value(spinbutton); gchar *str; str = g_new0(char, 80); sprintf(str, "数值已改变:%lf", value); MessageBox(str); g_free(str);}voidon_page3_vscale1_value_changed(GtkRange *range, gpointer user_data){ gdouble value = gtk_range_get_value(range); gtk_range_set_value(GTK_RANGE(mwin->p3_hscale), value); gchar *str; str = g_new0(char, 20); sprintf(str, "%.2f%%", value*100/90.0); gtk_progress_bar_set_text(mwin->progressbar, str); gtk_progress_bar_set_fraction(mwin->progressbar, value/90.0);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -