今天的工作任务,主要是进行了结构体和链表的使用。将分栏控件中的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;
}
}
思路总结:
先创建结构体,将新建事件的属性都放进去;
然后按钮事件,获取新建事件面板中各个属性栏的属性,并作为值传递给结构体;
将结构体添加到链表中去;
选择列表查看事件的时候:
先获取鼠标选择的行文本,然后遍历整个链表,查找每一个结构体,如果找到相匹配的,就将个结构体的各个属性部分放到查看面板中显示。
阅读(835) | 评论(1) | 转发(0) |