Chinaunix首页 | 论坛 | 博客
  • 博客访问: 9445
  • 博文数量: 4
  • 博客积分: 170
  • 博客等级: 入伍新兵
  • 技术积分: 60
  • 用 户 组: 普通用户
  • 注册时间: 2008-11-07 17:17
文章分类

全部博文(4)

文章存档

2011年(1)

2008年(3)

我的朋友

分类: C/C++

2008-12-08 15:42:58

 

今天的工作任务,主要是进行了结构体和链表的使用。将分栏控件中的GTK_Clist改为单列显示

代码段1:

/*创建一个名为event_data的结构体*/
typedef struct event_data
{
 gchar name[50];
 gchar promulgator[50];
 gchar users[50];
 gchar content[50];
 gchar progress[50];
 
}aff, *paff;

 

 
代码段2:
/*添加新事件——"提交按钮"所回调的函数*/
static void event_add_push_callback(GtkWidget *widget, gpointer data)
{
 /*这里要获取新建事件frame中的:事件名称,事件发起者(设定为当前用户),事件内容,事件参与者,事件进度(设定为:刚开始)*/
 /*这里:将事件名称和事件其他的属性分开,主要是为了在显示面板中分开显示*/
 gchar *text[4]; 
 gchar *event_name[1];
 event_name[0] = (gchar *)gtk_entry_get_text(GTK_ENTRY(event_add_newName));
 const gchar *mainName = "defaultName";
 text[0] = (gchar *)mainName;
 GtkTextIter start,end;
 gtk_text_buffer_get_bounds(GTK_TEXT_BUFFER(event_add_user_buffer),&start,&end);
 text[1] = (gchar *)gtk_text_buffer_get_text(GTK_TEXT_BUFFER(event_add_user_buffer),&start, &end, TRUE);
 
 gtk_text_buffer_get_bounds(GTK_TEXT_BUFFER(event_add_content_buffer),&start,&end);
 text[2] = (gchar *)gtk_text_buffer_get_text(GTK_TEXT_BUFFER(event_add_content_buffer),&start, &end, TRUE);
 const gchar *progress = "just begin\n";
 text[3] = (gchar *)progress;
 
 /*将新建事件的名称放到显示面板中的事件列表中去*/
 gtk_clist_append(GTK_CLIST(event_show_list), event_name); 
 paff p = malloc(sizeof(aff));   //为结构体的每条记录分配内存 
 strcpy(p->name, event_name[0]);      //给结构体的每个成员赋值      
 strcpy(p->promulgator, text[0]);       
 strcpy(p->users, text[1]);  
 strcpy(p->content, text[2]);    
 strcpy(p->progress, text[3]);      
 event_add_data_to_glist(p);/*将结构体放到链表中*/
}
 
代码段3:
/*获取是哪项事件被点击了*/
 gtk_clist_get_text(GTK_CLIST(clist), row, column, &text);   
 /*遍历整个数据构件存储的链表*/
 for(it = list; it; it = it->next)
 {
  /*查找判断是否是相应的事件*/
  if(strcmp(text, ((paff)(it->data))->name) == 0)
  {
   rowdata[0] = ((paff)(it->data))->promulgator;
   rowdata[1] = ((paff)(it->data))->users;
   rowdata[2] = ((paff)(it->data))->content;
   rowdata[3] = ((paff)(it->data))->progress;
  }
 }
 
思路总结:
 
先创建结构体,将新建事件的属性都放进去;
然后按钮事件,获取新建事件面板中各个属性栏的属性,并作为值传递给结构体;
将结构体添加到链表中去;
 
选择列表查看事件的时候:
先获取鼠标选择的行文本,然后遍历整个链表,查找每一个结构体,如果找到相匹配的,就将个结构体的各个属性部分放到查看面板中显示。
 
阅读(794) | 评论(1) | 转发(0) |
0

上一篇:今天在这里开博

下一篇:远程发布测试

给主人留下些什么吧!~~

vaqeteart2009-04-08 21:36:31

你好啊,你也做嵌入式?那你也知道maemo hildon-desktop**吧?问下你知道如何实现用其它插件(如homearea上的),控制在status bar上的某个插件按钮的显示吗?