⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 callbacks.c

📁 Linux下的飞鸽传书
💻 C
📖 第 1 页 / 共 5 页
字号:
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 + -