?? callbacks.c
字號:
voidon_viewwindowCloseBtn_clicked (GtkButton *button, gpointer user_data){ GtkWidget *top; top=lookup_widget(GTK_WIDGET(button),"viewWindow"); g_assert(top); gtk_widget_destroy(top);}voidselect_user_list_by_addr(GtkTreeView *treeview,const char *ipaddr) { GtkTreeSelection *sel; GtkTreeModel *model; GtkTreeIter iter; gboolean valid; g_assert((treeview) && (ipaddr)); sel=gtk_tree_view_get_selection(treeview); model = gtk_tree_view_get_model(treeview); valid = gtk_tree_model_get_iter_first (model, &iter); while(valid) { gchar *tree_ipaddr; gtk_tree_model_get (model, &iter, USER_VIEW_IPADDR_ID, &tree_ipaddr, -1); dbg_out("Addr:%s\n",tree_ipaddr); if (!strcmp(tree_ipaddr,ipaddr)) { dbg_out("Select : %s\n",tree_ipaddr); gtk_tree_selection_select_iter(sel,&iter); } g_free(tree_ipaddr); valid = gtk_tree_model_iter_next (model, &iter); } }voidon_viewwindowReplyBtn_clicked (GtkButton *button, gpointer user_data){ GtkWidget *view; GtkWidget *messageWindow; GtkTextView *text_view; GtkTextIter start_iter,end_iter; GtkTextBuffer *buffer; GtkTextView *new_view; GtkTextBuffer *new_buffer; GtkWidget *cite_toggle; gint text_line; gchar *string; ipmsg_private_data_t *priv=NULL; ipmsg_recvmsg_private_t *sender_info; GtkWidget *messageUserTree; int i; dbg_out("here\n"); messageWindow = internal_create_messageWindow(); g_assert(messageWindow); messageUserTree=lookup_widget(messageWindow,"messageUserTree"); g_assert(messageUserTree); view=lookup_widget(GTK_WIDGET(button),"viewWindow"); text_view=GTK_TEXT_VIEW(lookup_widget(GTK_WIDGET(button),"viewwindowTextView")); cite_toggle=lookup_widget(GTK_WIDGET(button),"viewwindowCitationCheck"); priv=(ipmsg_private_data_t *)lookup_widget(GTK_WIDGET(button),"senderInfo"); g_assert(cite_toggle); g_assert(text_view); g_assert(view); g_assert(priv); IPMSG_ASSERT_PRIVATE(priv,IPMSG_PRIVATE_RECVMSG); sender_info=priv->data; dbg_out("sender_info:%p\n",sender_info); if (sender_info->ipaddr) { update_users_on_message_window(messageWindow,FALSE); select_user_list_by_addr(GTK_TREE_VIEW(messageUserTree),sender_info->ipaddr); } if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(cite_toggle))) { new_view=GTK_TEXT_VIEW(lookup_widget(messageWindow,"textview1")); new_buffer=gtk_text_view_get_buffer(new_view); g_assert(new_view); g_assert(new_buffer); /* following codes assume gtk_text_view_get_buffer(text_view) does not * allocate new reference * as gtk manual says. */ buffer=gtk_text_view_get_buffer(text_view); text_line=gtk_text_buffer_get_line_count(buffer); dbg_out("lines:%d\n",text_line); for(i=0;i<text_line;++i) { gtk_text_buffer_get_iter_at_line(buffer,&start_iter,i); if (i<(text_line-1)) gtk_text_buffer_get_iter_at_line(buffer,&end_iter,i+1); else gtk_text_buffer_get_end_iter(buffer,&end_iter); string=gtk_text_buffer_get_text(buffer, &start_iter, &end_iter, FALSE); g_assert(string); gtk_text_buffer_insert_at_cursor(new_buffer,hostinfo_refer_ipmsg_cite_string(),-1); gtk_text_buffer_insert_at_cursor(new_buffer," ",-1); gtk_text_buffer_insert_at_cursor(new_buffer,string,-1); dbg_out("string:%s\n",string); g_free(string); } } gtk_widget_show (messageWindow); return;}voidon_comboboxentry1_editing_done (GtkCellEditable *celleditable, gpointer user_data){ dbg_out("here\n");}voidon_comboboxentry1_set_focus_child (GtkContainer *container, GtkWidget *widget, gpointer user_data){}voidon_entry1_activate (GtkEntry *entry, gpointer user_data){}voidon_configWindow_show (GtkWidget *widget, gpointer user_data){ GtkWidget *nickname_entry; GtkWidget *groupEntry; GtkWidget *logfile_entry; GtkWidget *configOpenCheckChkBtn; GtkWidget *configNonPopupCheckBtn; GtkWidget *configNoSoundCheckBtn; GtkWidget *configEncloseEnableCheckBtn; GtkWidget *configCitationCheckBtn; GtkWidget *configIPV6CheckBtn; GtkWidget *configDialUpCheckBtn; GtkWidget *enableLogToggle; GtkWidget *loginNameLoggingToggle; GtkWidget *logIPAddrToggle; GtkTreeView *treeview; GtkWidget *addr_entry; GtkWidget *configAddBcastBtn; GtkTreeIter selected_row; GtkWidget *configRemoveBcastBtn; GtkTreeSelection *sel; gchar *entry_string; GSList *addr_list,*addr_top; int group_index; int err_count; groupEntry=lookup_widget(widget,"comboboxentry1"); g_assert(groupEntry); nickname_entry=lookup_widget(widget,"entry2"); g_assert(nickname_entry); logfile_entry=lookup_widget(widget,"entry1"); g_assert(logfile_entry); configOpenCheckChkBtn=lookup_widget(widget,"configOpenCheckChkBtn"); g_assert(configOpenCheckChkBtn); configNonPopupCheckBtn=lookup_widget(widget,"configNonPopupCheckBtn"); g_assert(configNonPopupCheckBtn); configNoSoundCheckBtn=lookup_widget(widget,"configNoSoundCheckBtn"); g_assert(configNoSoundCheckBtn); configEncloseEnableCheckBtn=lookup_widget(widget,"configEncloseEnableCheckBtn"); g_assert(configEncloseEnableCheckBtn); configCitationCheckBtn=lookup_widget(widget,"configCitationCheckBtn"); g_assert(configCitationCheckBtn); configIPV6CheckBtn=lookup_widget(widget,"configIPV6CheckBtn"); g_assert(configIPV6CheckBtn); configDialUpCheckBtn=lookup_widget(widget,"configDialUpCheckBtn"); g_assert(configDialUpCheckBtn); enableLogToggle=lookup_widget(widget,"enableLogToggle"); g_assert(enableLogToggle); loginNameLoggingToggle=lookup_widget(widget,"loginNameLoggingToggle"); g_assert(loginNameLoggingToggle); logIPAddrToggle=lookup_widget(widget,"logIPAddrToggle"); g_assert(logIPAddrToggle); treeview = GTK_TREE_VIEW(lookup_widget(widget,"treeview4")); g_assert(treeview); gtk_entry_set_text(GTK_ENTRY(nickname_entry), hostinfo_refer_nick_name()); for(err_count=0,group_index=-1; ( (err_count<IPMSG_COMMON_MAX_RETRY) && (group_index<0) ); ++err_count) { updateConfigWindowGroups(groupEntry); group_index=get_current_group_index(GTK_COMBO_BOX(groupEntry)); } g_assert(group_index>=0); gtk_combo_box_set_active(GTK_COMBO_BOX(groupEntry),group_index); gtk_entry_set_text(GTK_ENTRY(logfile_entry), hostinfo_refer_ipmsg_logfile()); if (hostinfo_refer_ipmsg_default_confirm()) gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(configOpenCheckChkBtn),TRUE); else gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(configOpenCheckChkBtn),FALSE); if (hostinfo_refer_ipmsg_default_popup()) gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(configNonPopupCheckBtn),TRUE); else gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(configNonPopupCheckBtn),FALSE); if (is_sound_system_available()) { if (hostinfo_refer_ipmsg_default_sound()) gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(configNoSoundCheckBtn),TRUE); else gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(configNoSoundCheckBtn),FALSE); }else{ gtk_widget_set_sensitive(configNoSoundCheckBtn, FALSE); } if (hostinfo_refer_ipmsg_default_enclose()) gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(configEncloseEnableCheckBtn),TRUE); else gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(configEncloseEnableCheckBtn),FALSE); if (hostinfo_refer_ipmsg_default_citation()) gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(configCitationCheckBtn),TRUE); else gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(configCitationCheckBtn),FALSE); if (hostinfo_refer_ipmsg_ipv6_mode()) gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(configIPV6CheckBtn),TRUE); else gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(configIPV6CheckBtn),FALSE); if (hostinfo_refer_ipmsg_dialup_mode()) gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(configDialUpCheckBtn),TRUE); else gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(configDialUpCheckBtn),FALSE); if (hostinfo_refer_ipmsg_enable_log()) gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(enableLogToggle),TRUE); else gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(enableLogToggle),FALSE); if (hostinfo_refer_ipmsg_logname_logging()) gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(loginNameLoggingToggle),TRUE); else gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(loginNameLoggingToggle),FALSE); if (hostinfo_refer_ipmsg_ipaddr_logging()) gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(logIPAddrToggle),TRUE); else gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(logIPAddrToggle),FALSE); addr_top=addr_list=hostinfo_get_ipmsg_broadcast_list(); while(addr_list != NULL) { GtkTreeModel *model; GtkTreeIter newrow; gchar *element = addr_list->data; model = gtk_tree_view_get_model(treeview); gtk_list_store_append(GTK_LIST_STORE(model), &newrow); gtk_list_store_set(GTK_LIST_STORE(model), &newrow, 0, element, -1); g_free(element); addr_list=g_slist_next(addr_list); } if (addr_top) g_slist_free(addr_top); /* * button state */ configAddBcastBtn=lookup_widget(widget,"configAddBcastBtn"); g_assert(configAddBcastBtn); addr_entry=lookup_widget(widget,"entry3"); g_assert(addr_entry); entry_string=(char *)gtk_entry_get_text(GTK_ENTRY(addr_entry)); if ( (entry_string) && (*entry_string) ) gtk_widget_set_sensitive(configAddBcastBtn,TRUE); else gtk_widget_set_sensitive(configAddBcastBtn,FALSE); sel=gtk_tree_view_get_selection(treeview); configRemoveBcastBtn=lookup_widget(widget,"configRemoveBcastBtn"); g_assert(configRemoveBcastBtn); g_assert(gtk_tree_selection_get_mode(sel) == GTK_SELECTION_SINGLE); if (gtk_tree_selection_get_selected(sel, NULL, &selected_row)) { gtk_widget_set_sensitive(configRemoveBcastBtn, TRUE); } else { gtk_widget_set_sensitive(configRemoveBcastBtn, FALSE); }}voidon_configWindow_clicked (GtkButton *button, gpointer user_data){}voidupdate_one_group_entry(gpointer data,GtkComboBox *user_data) { userdb_t *current_user; GtkWidget *comboEntry=GTK_WIDGET(user_data); GtkTreeModel *model; GtkTreeIter iter; gboolean valid; if ( (!data) || (!user_data) ) return; current_user=(userdb_t *)data; dbg_out("NickName: %s\n",current_user->nickname); dbg_out("Group: %s\n",current_user->group); dbg_out("User: %s\n",current_user->user); dbg_out("Host: %s\n",current_user->host); dbg_out("IP Addr: %s\n",current_user->ipaddr); model=gtk_combo_box_get_model(GTK_COMBO_BOX(comboEntry)); if (!model) return; valid = gtk_tree_model_get_iter_first (model, &iter); while (valid) { gchar *str_data; /* Make sure you terminate calls to gtk_tree_model_get() * with a '-1' value */ gtk_tree_model_get (model, &iter, 0, &str_data, -1); dbg_out("check: %s\n",str_data); if (!strcmp(current_user->group,str_data)) { dbg_out("found: %s\n",current_user->group); g_free(str_data); return; /* Already appended */ } g_free(str_data); valid = gtk_tree_model_iter_next (model, &iter); } gtk_combo_box_append_text(GTK_COMBO_BOX(comboEntry),current_user->group); return;}voidon_configWindowAddGroupBtn_clicked (GtkButton *button, gpointer user_data){ GtkWidget *comboEntry; ipmsg_send_br_absence(udp_con,0); comboEntry=lookup_widget(GTK_WIDGET(button),"comboboxentry1"); g_assert(comboEntry); updateConfigWindowGroups(comboEntry);}voidon_sendFailDialog_show (GtkWidget *widget, gpointer user_data){}voidon_sendFailDialog_destroy (GtkObject *object, gpointer user_data){}voidon_sendFailDialog_response (GtkDialog *dialog, gint response_id, gpointer user_data){ dbg_out("Response:%d\n",response_id);}voidon_sendFailDialog_close (GtkDialog *dialog, gpointer user_data){}voidon_cancelbutton1_clicked (GtkButton *button, gpointer user_data){}voidon_okbutton1_clicked (GtkButton *button, gpointer user_data){ GtkWidget *dialog; dialog=lookup_widget(GTK_WIDGET(button),"sendFailDialog"); gtk_dialog_response(GTK_DIALOG(dialog),GTK_RESPONSE_OK);}static inthandle_attachment_drag_data(GtkSelectionData *data,GtkWidget *attachment_editor){ GList *files,*list; gchar *path; if ( (!data) || (!(data->data)) || (!attachment_editor) ) return -EINVAL; files= gnome_vfs_uri_list_parse((gchar *)data->data); for(list = files; list != NULL; list = g_list_next(list) ) { path=gnome_vfs_unescape_string(gnome_vfs_uri_get_path(list->data),NULL); dbg_out("draged file: %s\n",path); on_add_new_file(path,attachment_editor,FALSE); g_free(path); } gnome_vfs_uri_list_free(files); return 0;}static int on_message_window_drag_data_received(GtkWidget *widget,GtkSelectionData *data){ GtkWidget *window; GtkWidget *attachment_editor; int rc; if (!data) return -EINVAL; dbg_out("here:data %s\n",(char *)data->data); window=lookup_widget(widget,"messageWindow"); g_assert(window); attachment_editor=setup_attachment_editor(window); g_assert(attachment_editor); gtk_widget_show(attachment_editor); rc=handle_attachment_drag_data(data,attachment_editor);
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -