亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? notebook.c

?? 開發linux應用-用gtk+和gdk開發linux圖形用戶界面應用--的實例
?? C
?? 第 1 頁 / 共 2 頁
字號:
 * Show information about the traffic on a particular  * day.  Dumps the information into the clist that  * represents the daily graph. * * This is called by the tree traverse callback! */gint ShowDateInfo (gpointer key, gpointer value, gpointer data){    char *strValue[4];    typDateInfo *dateInfo;    long *pnMax;    char buffer0[88];    char buffer1[88];    char buffer2[88];    /* --- Get info passed it --- */    dateInfo = (typDateInfo *) value;       pnMax = (long *) data;    /* --- Setup structures to populate clist --- */    strValue[0] = buffer0;    strValue[1] = buffer1;    strValue[2] = buffer2;    strValue[3] = NULL;    /* --- Fill in the date in the first column --- */    sprintf (strValue[0], "%02d/%02d/%4d", dateInfo->date->month,                                            dateInfo->date->day,                                            dateInfo->date->year);    /* --- Fill in the hits and byte count --- */    sprintf (strValue[1], "%ld", dateInfo->nHits);    sprintf (strValue[2], "%ld", dateInfo->nSize);    /* --- Append the data into the clist --- */    gtk_clist_append (GTK_CLIST (dailyCList), strValue);    /* --- Keep track of the maximum value --- */    if (*pnMax < dateInfo->nSize) {        *pnMax = dateInfo->nSize;    }    /* --- 0 => keep on trucking --- */    return (0);}/* * ShowUserInfo * * Shows information about a user (no graphs) but keeps track  * of the maximum byte count so that the graphs can be generated. * * This is called as the traverse tree callback. */gint ShowUserInfo (gpointer key, gpointer value, gpointer data){    char *strValue[4];    typStat *info;    long *pnMax;    char buffer0[88];    char buffer1[88];    char buffer2[88];    /* --- Get information passed in --- */    info = (typStat *) value;       pnMax = (long *) data;    /* --- Buffers to append data --- */    strValue[0] = buffer0;    strValue[1] = buffer1;    strValue[2] = buffer2;    strValue[3] = NULL;    /* --- Update the URL in first column --- */    sprintf (strValue[0], "%s", info->sURL);    /* --- Update bytes and size in next column --- */    sprintf (strValue[1], "%ld", info->nHits);    sprintf (strValue[2], "%ld", info->nSize);    /* --- Add the data to the clist --- */    gtk_clist_append (GTK_CLIST (userCList), strValue);    /* --- Keep track of the maximum size --- */    if (info->nSize > *pnMax) {        *pnMax = info->nSize;    }    return (0);}/* * DisplayGraph * * Display the daily graph in the clist. * * Called as a Tree traverse callback. */gint DisplayGraph (gpointer key, gpointer value, gpointer data){    int ix;    typGraphInfo *graphInfo = (typGraphInfo *) data;    typDateInfo *dateInfo = (typDateInfo *) value;       /* --- Figure out which graph to display based on size --- */    ix = (dateInfo->nSize * NUM_GRAPHS-1) / graphInfo->nMaxSize;    /* --- Set the pixmap in the clist to this one --- */    gtk_clist_set_pixmap (GTK_CLIST (graphInfo->widget),                           graphInfo->row, 3, pixmapGraph[ix], mask[ix]);    /* --- Next row to display --- */    graphInfo->row++;    /* --- Continue... --- */    return (0);}/* * PopulateDaily * * Populate the clist with the data from the tree.  * Assumes that the data in the tree has been fully * populated. */void PopulateDaily (){    gchar *strValue[4];    long nMaxDaily;    gchar buffer0[88];    gchar buffer1[88];    gchar buffer2[88];    typGraphInfo graphInfo;    /* --- Create the table --- */    strValue[0] = buffer0;    strValue[1] = buffer1;    strValue[2] = buffer2;    /* --- NULL - graphic is going here. --- */    strValue[3] = NULL;        /* --- If the clist has not been created yet... --- */    if (dailyCList == NULL) {        /* --- Create the clist --- */        dailyCList = gtk_clist_new_with_titles (4, szDailyTitles);        /* --- Make sure titles are being shown --- */        gtk_clist_column_titles_show (GTK_CLIST (dailyCList));        /* --- Set the column widths --- */        gtk_clist_set_column_width (GTK_CLIST (dailyCList), 0, 80);        gtk_clist_set_column_width (GTK_CLIST (dailyCList), 1, 80);        gtk_clist_set_column_width (GTK_CLIST (dailyCList), 2, 80);        /* --- Set the column justifications --- */        gtk_clist_set_column_justification (GTK_CLIST (dailyCList),                                             0, GTK_JUSTIFY_RIGHT);        gtk_clist_set_column_justification (GTK_CLIST (dailyCList),                                             1, GTK_JUSTIFY_RIGHT);        gtk_clist_set_column_justification (GTK_CLIST (dailyCList),                                             2, GTK_JUSTIFY_RIGHT);        /* --- Add the clist to the notebook page --- */        gtk_container_add (GTK_CONTAINER (dailyPage), dailyCList);    }    /* --- set max to zero --- */    nMaxDaily = 0;    /*      * --- Traverse tree and display the textual information      *     while gathering the maximum so that the graph can     *     be displayed     */    g_tree_traverse (dateTree, ShowDateInfo, G_IN_ORDER, &nMaxDaily);     /* --- Information for displaying of the graph --- */    graphInfo.nMaxSize = nMaxDaily;    graphInfo.widget = dailyCList;    graphInfo.row = 0;    /* --- Re-traverse the tree and display graphs --- */    g_tree_traverse (dateTree, DisplayGraph, G_IN_ORDER, &graphInfo);    /* --- Show the clist now --- */    gtk_widget_show_all (GTK_WIDGET (dailyCList));}/* * DisplayUserGraph * * Display the graph for each user.  * This is called from a traverse tree - it's a callback with the * data passed into it.  * * value - contains information about this users activity * data - contains information about the graph, incl. widget and max */gint DisplayUserGraph (gpointer key, gpointer value, gpointer data){    int ix;    typGraphInfo *graphInfo = (typGraphInfo *) data;    typStat *statInfo = (typStat *) value;       /* --- How big should the graph be? --- */    ix = (long) (((double) statInfo->nSize * NUM_GRAPHS-1) /                            graphInfo->nMaxSize);    /* --- Set the pixmap to be an appropriate size --- */    gtk_clist_set_pixmap (GTK_CLIST (graphInfo->widget),                           graphInfo->row, 3, pixmapGraph[ix], mask[ix]);    /* --- Go to the next row. --- */    graphInfo->row++;    return (0);}/* * PopulateUser * * Populate the user graph with the information about each users's  * web site traffic.  The display is created in two parts.  The  * first part displays the text data and computes the necessary * values for the second part to display the graph. */void PopulateUser (){    gchar *strValue[4];    gchar buffer0[88];    gchar buffer1[88];    gchar buffer2[88];    long nMax;    typGraphInfo graphInfo;    /* --- Buffered values --- */    strValue[0] = buffer0;    strValue[1] = buffer1;    strValue[2] = buffer2;    strValue[3] = NULL;        /* --- If there's no user clist yet --- */    if (userCList == NULL) {        /* --- Create the clist with titles --- */        userCList = gtk_clist_new_with_titles (4, szUserTitles);        /* --- Show titles --- */        gtk_clist_column_titles_show (GTK_CLIST (userCList));        /* --- Show width of columns. --- */        gtk_clist_set_column_width (GTK_CLIST (userCList), 0, 80);        gtk_clist_set_column_width (GTK_CLIST (userCList), 1, 80);        gtk_clist_set_column_width (GTK_CLIST (userCList), 2, 80);        /* --- Justify columns --- */        gtk_clist_set_column_justification (GTK_CLIST (userCList),                                             0, GTK_JUSTIFY_LEFT);        gtk_clist_set_column_justification (GTK_CLIST (userCList),                                             1, GTK_JUSTIFY_RIGHT);        gtk_clist_set_column_justification (GTK_CLIST (userCList),                                             2, GTK_JUSTIFY_RIGHT);        /* --- Add clist to page. --- */        gtk_container_add (GTK_CONTAINER (userPage), userCList);    }    /* --- Traverse the tree to show text info and get max --- */    nMax = 0;    g_tree_traverse (userTree, ShowUserInfo, G_IN_ORDER, &nMax);    /* --- Populate structure for graphical tree traversal --- */    graphInfo.nMaxSize = nMax;    graphInfo.widget = userCList;    graphInfo.row = 0;    /* --- Display graphs --- */    g_tree_traverse (userTree, DisplayUserGraph, G_IN_ORDER, &graphInfo);    gtk_widget_show_all (GTK_WIDGET (userCList));}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
麻豆精品视频在线| 天天免费综合色| 日韩一二三四区| 欧美日韩高清一区| 日本乱人伦一区| 99精品久久99久久久久| 成人一级片在线观看| 丁香婷婷综合五月| 国产成人精品免费网站| 成人综合婷婷国产精品久久 | 欧美综合久久久| 色综合天天综合网天天看片| 不卡免费追剧大全电视剧网站| 豆国产96在线|亚洲| 成人久久久精品乱码一区二区三区| 国产aⅴ综合色| 白白色 亚洲乱淫| 在线看不卡av| 91精品久久久久久久91蜜桃| 日韩一区二区视频在线观看| 日韩欧美一区二区不卡| 久久免费电影网| 欧美高清在线一区二区| 亚洲美女偷拍久久| 亚洲午夜久久久久| 久久aⅴ国产欧美74aaa| 国产成人免费在线视频| 成人国产电影网| 欧美三级在线看| 精品剧情v国产在线观看在线| 26uuu精品一区二区三区四区在线| 久久网站最新地址| 亚洲久本草在线中文字幕| 亚洲第一福利一区| 国产一区二区精品久久| 91亚洲大成网污www| 欧美一区二区三区视频| 久久久99精品久久| 亚洲第一激情av| 国产精品一区专区| 欧美日韩激情一区二区| 国产欧美一区二区精品婷婷| 一区二区三区欧美视频| 日韩电影在线一区二区| 99精品国产91久久久久久| 欧美一区二区三区在线视频| 国产精品色噜噜| 免费看精品久久片| 色偷偷成人一区二区三区91| 日韩视频在线观看一区二区| 最新国产精品久久精品| 蜜桃视频一区二区三区在线观看| 成人黄动漫网站免费app| 日韩一区二区免费在线观看| 亚洲欧洲一区二区三区| 国产最新精品免费| 91精品国产入口| 亚洲丝袜精品丝袜在线| 国产一区二区三区在线观看免费视频| 在线观看视频一区| 国产精品美女久久福利网站| 狠狠色丁香久久婷婷综| 欧美丰满高潮xxxx喷水动漫| 亚洲日本一区二区三区| 成人免费视频app| 欧美一区二区在线视频| 亚洲成人免费观看| 日本高清无吗v一区| 中日韩免费视频中文字幕| 久久69国产一区二区蜜臀| 欧美日韩亚洲另类| 亚洲午夜免费福利视频| 一本到一区二区三区| 国产精品二区一区二区aⅴ污介绍| 精品一区二区三区在线播放视频| 欧美日韩精品电影| 同产精品九九九| 欧美区视频在线观看| 亚洲午夜免费视频| 欧美日韩国产乱码电影| 日日噜噜夜夜狠狠视频欧美人| 在线一区二区三区四区五区| 亚洲日本在线天堂| 欧洲另类一二三四区| 亚洲国产一区二区三区青草影视| 91在线视频观看| 玉足女爽爽91| 欧美色综合影院| 亚洲电影一级黄| 欧美一级淫片007| 狠狠狠色丁香婷婷综合久久五月| 国产亚洲欧洲一区高清在线观看| 狠狠色综合色综合网络| 久久精品免费在线观看| 不卡的电影网站| 一区二区三区不卡在线观看| 在线观看欧美日本| 美女视频黄 久久| 久久精品网站免费观看| jlzzjlzz国产精品久久| 亚洲国产aⅴ成人精品无吗| 欧美三片在线视频观看| 麻豆久久一区二区| 国产欧美日韩视频一区二区 | 一区二区激情视频| 制服丝袜激情欧洲亚洲| 久久爱另类一区二区小说| 国产女主播视频一区二区| 91蜜桃在线免费视频| 午夜精品久久久久久久99水蜜桃 | 成人激情动漫在线观看| 国产精品国产三级国产aⅴ原创| 在线日韩av片| 久久99国内精品| 亚洲影视在线观看| 久久久久久久电影| 欧美日韩精品高清| 成人激情小说乱人伦| 丝袜美腿高跟呻吟高潮一区| 久久久影视传媒| 欧美亚洲国产一区在线观看网站| 另类小说一区二区三区| 亚洲欧美日韩成人高清在线一区| 欧美成人vr18sexvr| 欧美综合在线视频| 成人动漫中文字幕| 精品夜夜嗨av一区二区三区| 亚洲精品欧美专区| 日韩视频免费观看高清完整版在线观看| 亚洲精品v日韩精品| 成人听书哪个软件好| 午夜影院在线观看欧美| 国产午夜精品一区二区三区四区| a级精品国产片在线观看| 美女视频第一区二区三区免费观看网站 | 精品一区二区在线观看| 国产精品久久久久久户外露出 | 国产精品1区二区.| 亚洲免费观看高清完整版在线| 91精品久久久久久久久99蜜臂| 成人一区二区三区| 青青国产91久久久久久| 亚洲人精品午夜| 国产精品美女久久久久高潮| 欧美精品在线观看一区二区| 丁香婷婷综合网| 久久精品国产澳门| 中文字幕在线观看不卡视频| 久久视频一区二区| 欧美日韩在线综合| 91网站在线播放| 国产91清纯白嫩初高中在线观看| 久久激情五月婷婷| 亚洲成人资源网| 中文字幕亚洲不卡| 久久人人97超碰com| 91影院在线观看| 91视频www| av一本久道久久综合久久鬼色| 蜜桃久久精品一区二区| 亚洲午夜久久久久久久久电影网| 久久久久久97三级| 日韩精品综合一本久道在线视频| 欧美午夜电影在线播放| 99re在线视频这里只有精品| 视频一区视频二区中文| 石原莉奈一区二区三区在线观看| 亚洲欧洲日韩在线| 国产精品看片你懂得| 国产夜色精品一区二区av| 国产偷国产偷精品高清尤物| 日韩欧美久久一区| 欧美成人三级在线| 精品久久人人做人人爱| 欧美日韩免费一区二区三区视频| 欧美日韩的一区二区| 欧美色精品天天在线观看视频| 在线观看日韩电影| 欧美日韩在线精品一区二区三区激情| 欧美妇女性影城| 欧美人妖巨大在线| 欧美一区二区三区免费大片| 91精品国产日韩91久久久久久| 精品盗摄一区二区三区| 久久久一区二区三区捆绑**| 久久免费午夜影院| 中文字幕av一区二区三区免费看| 中文字幕在线不卡一区二区三区| 亚洲日本乱码在线观看| 亚洲主播在线播放| 日韩激情一二三区| 蜜桃av噜噜一区| 成人动漫在线一区| 精品婷婷伊人一区三区三| 欧美高清激情brazzers| 国产日产欧美精品一区二区三区| 最新国产成人在线观看| 亚洲第一会所有码转帖| 免费在线视频一区| 91丨九色丨国产丨porny|