Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1990549
  • 博文数量: 433
  • 博客积分: 918
  • 博客等级: 准尉
  • 技术积分: 3218
  • 用 户 组: 普通用户
  • 注册时间: 2012-02-24 18:21
个人简介

你是不是暗恋我,那就给我发个消息呀,让我知道o(∩∩)o

文章分类

全部博文(433)

分类: LINUX

2012-12-26 08:39:25

仅实现动态列表的主题功能,对于列表的控制自行解决,菜鸟我还在琢磨中
也希望高手指点....................
void go_to(void)
{
    while(1){
        select(sockfd+1, &sockset, NULL, NULL, NULL);
        if (FD_ISSET(sockfd, &sockset)){
                status=read(sockfd, string, MAX_LINE);    //接收服务器的广播消息
            if(status==0){
                sprintf(string,"#0");
                //close(sockfd);
                //exit(0);
            }
            string[status]='\0';
            //printf("%s\n", string);
                char myser_ip[20];
                char myser_port[20];
                int n,m=0,p=0,k;
                for(n=0;n                    if(string[n]=='*'){
                        for(k=n+1;k                            myser_port[m++]=string[k];
                        }
                        string[n]='\0';
                        strcpy(myser_ip, string);
                        //printf("%saaa\n",myser_ip);
                        gchar *my_obj_ip=(gchar *)myser_ip;
                        //gint my_obj_port=5555;
                        //printf("%sbbb\n",myser_ip);
                        cli_sockfd=initial_client(my_obj_ip, atoi(myser_port));
                        if (cli_sockfd==0){
                        printf("初始化客户端套接字时出错!\n");
                        fflush(stdout);
                        //printf("连接对方失败!\n");
                        close(sockfd);
                        //exit(1);
                        }
                        set_address(&cli_sockset, cli_sockfd);
                        write(cli_sockfd, string_obj, strlen(string_obj));
                   
                        //printf("%s!",string_obj);
                        //g_thread_create( G_THREAD_FUNC(receive_obj), NULL, FALSE, NULL) ;
                    }else{
                        GtkTreeStore *store;
                GtkTreeIter toplevel, child;
                store = GTK_TREE_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(treeview_friends)));
                if(top==0){
                    printf("%d\n",top);
                    gtk_tree_store_append(store, &toplevel, NULL);
                        gtk_tree_store_set(store, &toplevel, COLUMN, "在线好友", -1);
                        top++;
                        printf("%d\n",top);
                }   
               
                gtk_tree_store_append(store, &child, &toplevel);
                gtk_tree_store_set(store, &child, COLUMN, string, -1);
                    }
                }
            fflush(stdout);
        }
        set_address(&sockset, sockfd);
    }
    return;
}

static GtkWidget *create_view_and_model(void)
{
    GtkTreeViewColumn *col;
    GtkCellRenderer *renderer;
    GtkTreeStore *treestore;
    GtkTreeModel *model;

    treestore = gtk_tree_store_new(NUM_COLS, G_TYPE_STRING);

    col = gtk_tree_view_column_new();
    gtk_tree_view_column_set_title(col, "好友列表");
    gtk_tree_view_append_column(GTK_TREE_VIEW(treeview_friends), col);

    renderer = gtk_cell_renderer_text_new();
    gtk_tree_view_column_pack_start(col, renderer, TRUE);
    gtk_tree_view_column_add_attribute(col, renderer, "text", COLUMN);

    model = GTK_TREE_MODEL(treestore);
    gtk_tree_view_set_model(GTK_TREE_VIEW(treeview_friends), model);
    g_object_unref(model);
        printf("11111\n");
    return treeview_friends;
}
void mainframe(void)
{
    GtkBuilder *builder_main;
    GtkWidget *window_main;
    GtkWidget *entry_mood;
    GtkWidget *entry_friend;
    GtkWidget *button_search;
    GtkWidget *scrolledwindow1;
    //GtkWidget *treeview_friends;
    GtkTreeSelection *selection;
    //GtkWidget *notebook;
    //GtkTreeStore *treestore;
    //GtkTreeIter toplevel;
    //GtkTreeModel *Model;
    GtkWidget *label_friends;
    //GtkTreeViewColumn *col;
    //GtkCellRenderer *renderer;
    GtkWidget *statusbar;
   
    //gtk_init(&argc, &argv);
    builder_main = gtk_builder_new();
    gtk_builder_add_from_file(builder_main, "mainframe.glade", NULL);
    window_main = GTK_WIDGET(gtk_builder_get_object(builder_main, "window_main"));
    gtk_window_set_position(GTK_WINDOW(window_main), GTK_WIN_POS_CENTER);
    //treestore = gtk_tree_store_new(NUM_COLS, G_TYPE_STRING);
    entry_mood = GTK_WIDGET(gtk_builder_get_object(builder_main, "entry_mood"));
    entry_friend = GTK_WIDGET(gtk_builder_get_object(builder_main, "entry_friend"));
    button_search= GTK_WIDGET(gtk_builder_get_object(builder_main, "button_search"));
    scrolledwindow1 = GTK_WIDGET(gtk_builder_get_object(builder_main, "scrolledwindow1"));
    treeview_friends = GTK_WIDGET(gtk_builder_get_object(builder_main, "treeview_friends"));
    statusbar = GTK_WIDGET(gtk_builder_get_object(builder_main, "statusbar"));
    create_view_and_model();
  selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(treeview_friends));
 
  g_thread_create ( G_THREAD_FUNC(go_to), NULL, FALSE, NULL) ;

  gtk_widget_show_all(window_main);
  printf("2222\n");
  g_signal_connect(window_main, "destroy", G_CALLBACK(gtk_main_quit), NULL);
  g_signal_connect(selection, "changed", G_CALLBACK(on_changed), statusbar);
  return;
}
阅读(2581) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~