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

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

?? notebook.c

?? 開發linux應用-用gtk+和gdk開發linux圖形用戶界面應用--的實例
?? C
?? 第 1 頁 / 共 2 頁
字號:
/* * Auth: Eric Harlow * File: Notebook.c *  * Create a sample notebook application */#include <gtk/gtk.h>#include "logtypes.h"extern GTree *dateTree;extern GTree *userTree;GtkWidget *hourlyPage = NULL;GtkWidget *dailyPage = NULL;GtkWidget *userPage = NULL;GtkWidget *hourlyCList = NULL;GtkWidget *dailyCList = NULL;GtkWidget *userCList = NULL;typedef struct {    GtkWidget *widget;    long nMaxSize;    long row;} typGraphInfo;/* * Titles displayed on the clist for the various pages */char *szHourlyTitles[] = {"Hour", "Hits", "Size", "Graph"};char *szDailyTitles[] = {"Date", "Hits", "Size", "Graph"};char *szUserTitles[] = {"User", "Hits", "Size", "Graph"};#define NUM_GRAPHS 21GdkPixmap *pixmapGraph [NUM_GRAPHS];GdkBitmap *mask[NUM_GRAPHS];char **CreateBarBitmap (int height, int width, int size, char *sColor);void FreeResources ();void PopulateUser ();void PopulateDaily ();void PopulateHourly ();void GetHitsForHour (int nHours, long *hits, long *size);void FreeBarBitmap (char **bitmap);/* * GeneratePixmaps * * Generate the pixmaps for all the sizes of horizontal bars  * that are supported.  */void GeneratePixmaps (GtkWidget *widget){    int i;    gchar **pixmap_d;    /* --- For each possible graph --- */    for (i = 0; i < NUM_GRAPHS; i++) {        /* --- Get the data for the graph --- */        pixmap_d = CreateBarBitmap (9, 65, i * 3, "#ff0000");        /* --- Create a pixmap --- */        pixmapGraph[i] = gdk_pixmap_create_from_xpm_d (                      widget->window,                      &mask[i], NULL,                      (gpointer) pixmap_d);        /* --- Free the data --- */        FreeBarBitmap (pixmap_d);    }}/* * PageSwitch * * Event that occurs when a different page is now * the focus. */static void PageSwitch (GtkWidget *widget,                          GtkNotebookPage *page,                          gint page_num){}/* * AddPage * * Add a page to the notebook  * * notebook - existing notebook * szName - name to give to the new page */GtkWidget *AddPage (GtkWidget *notebook, char *szName){    GtkWidget *label;    GtkWidget *frame;    /* --- Create a label from the name. --- */    label = gtk_label_new (szName);    gtk_widget_show (label);    /* --- Create a frame for the page --- */    frame = gtk_frame_new (szName);    gtk_widget_show (frame);    /* --- Add a page with the frame and label --- */    gtk_notebook_append_page (GTK_NOTEBOOK (notebook), frame, label);    return (frame);}/* * CreateNotebook * * Create a new notebook and add pages to it. * * window - window to create the notebook in. */void CreateNotebook (GtkWidget *window){    GtkWidget *notebook;    /* --- Create the notebook --- */    notebook = gtk_notebook_new ();    /* --- Listen for the switch page event --- */    gtk_signal_connect (GTK_OBJECT (notebook), "switch_page",			  GTK_SIGNAL_FUNC (PageSwitch), NULL);    /* --- Make sure tabs are on top --- */    gtk_notebook_set_tab_pos (GTK_NOTEBOOK (notebook), GTK_POS_TOP);    /* --- Add notebook to vbox --- */    gtk_box_pack_start (GTK_BOX (window), notebook, TRUE, TRUE, 0);    /* --- Give notebook a border --- */    gtk_container_border_width (GTK_CONTAINER (notebook), 10);    /* --- Add pages to the notebook --- */    hourlyPage = AddPage (notebook, "Hourly Traffic");    dailyPage = AddPage (notebook, "Daily Traffic");    userPage = AddPage (notebook, "User Traffic");          /* --- Show everything. --- */    gtk_widget_show_all (window);}/* * PopulatePages * * Populate the pages on the notebook with the information. * Populates the hourly page, daily page, and the user page. * * Frees the data used to generate the page when done. */void PopulatePages (){    /* --- Free clist data if already used --- */    if (userCList) {        gtk_clist_clear (GTK_CLIST (userCList));    }    if (hourlyCList) {        gtk_clist_clear (GTK_CLIST (hourlyCList));    }    if (dailyCList) {        gtk_clist_clear (GTK_CLIST (dailyCList));    }    /* --- Populate each of the fields --- */    PopulateHourly ();    PopulateDaily ();    PopulateUser ();    /* --- Free the resources generated by parselog --- */    FreeResources ();}/* * PopulateHourly  * * Populate the clist with the hourly information.  * Assumes that the trees are fully populated with * data ready to be picked. */void PopulateHourly (){    gchar *strValue[4];    int i;    int ix;    long hits;    long size;    gchar buffer0[88];    gchar buffer1[88];    gchar buffer2[88];    long nMaxSize = 0;    /* --- Here's the array used to insert into clist --- */    strValue[0] = buffer0;    strValue[1] = buffer1;    strValue[2] = buffer2;    /* --- This is NULL because it's a pixmap --- */    strValue[3] = NULL;        /* --- If clist not created yet... --- */    if (hourlyCList == NULL) {        /* --- Create the clist with four columns --- */        hourlyCList = gtk_clist_new_with_titles (4, szHourlyTitles);        /* --- Make sure titles are visible --- */        gtk_clist_column_titles_show (GTK_CLIST (hourlyCList));        /* --- Set the column widths --- */        gtk_clist_set_column_width (GTK_CLIST (hourlyCList), 0, 80);        gtk_clist_set_column_width (GTK_CLIST (hourlyCList), 1, 80);        gtk_clist_set_column_width (GTK_CLIST (hourlyCList), 2, 80);        gtk_clist_set_column_width (GTK_CLIST (hourlyCList), 3, 40);        /* --- Set the justification on each of the columns --- */        gtk_clist_set_column_justification (GTK_CLIST (hourlyCList),                                             0, GTK_JUSTIFY_RIGHT);        gtk_clist_set_column_justification (GTK_CLIST (hourlyCList),                                             1, GTK_JUSTIFY_RIGHT);        gtk_clist_set_column_justification (GTK_CLIST (hourlyCList),                                             2, GTK_JUSTIFY_RIGHT);        /* --- Add the clist to the correct page --- */        gtk_container_add (GTK_CONTAINER (hourlyPage), hourlyCList);    }    /* --- Generate a row for each hour of the day --- */    for (i = 0; i < 24; i++) {        /* --- Show the time - like 3:00 --- */        sprintf (strValue[0], "%d:00", i);         /* --- Get # of hits for that hour --- */        GetHitsForHour (i, &hits, &size);        /* --- Display hit count and byte count --- */        sprintf (strValue[1], "%ld", hits);        sprintf (strValue[2], "%ld", size);        /* --- Add the data to the clist --- */        gtk_clist_append (GTK_CLIST (hourlyCList), strValue);        /* --- Keep track of max byte count --- */        if (size > nMaxSize) {            nMaxSize = size;        }    }    /*     * Now that the clist is generated, we need to go back      * and add the horizontal graph to the clist.  Couldn't do     * it earlier since we didn't know what the max was.      */    /* --- Every hour of the day --- */    for (i = 0; i < 24; i++) {        /* --- Get hits for the hour --- */        GetHitsForHour (i, &hits, &size);        /* --- Calculate how big graph should be --- */        ix = (size * NUM_GRAPHS-1) / nMaxSize;         /* --- Display that graph in the clist --- */        gtk_clist_set_pixmap (GTK_CLIST (hourlyCList),               i, 3, (GdkPixmap *) pixmapGraph[ix], mask[ix]);    }    /* --- Show the clist --- */    gtk_widget_show_all (GTK_WIDGET (hourlyCList));}/* * ShowDateInfo *

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91.com在线观看| 亚洲综合免费观看高清完整版| 日韩影视精彩在线| 丁香桃色午夜亚洲一区二区三区| 日韩欧美一区二区免费| 日本大胆欧美人术艺术动态| 欧美日韩在线播放| 午夜影院久久久| 欧美日韩精品一二三区| 中文一区二区在线观看| 国产福利91精品| 国产精品天干天干在观线| 成人综合婷婷国产精品久久蜜臀| 久久久99久久| 亚洲高清中文字幕| 久久成人久久爱| 亚洲国产成人私人影院tom| 亚洲男女一区二区三区| 99re这里只有精品首页| 亚洲欧美一区二区三区国产精品 | www欧美成人18+| 亚洲一区免费在线观看| 欧美精品免费视频| 麻豆91精品视频| 久久美女高清视频| 国产夫妻精品视频| 中文字幕亚洲综合久久菠萝蜜| 91美女蜜桃在线| 香蕉久久夜色精品国产使用方法 | 91精品国产美女浴室洗澡无遮挡| 丝袜美腿亚洲综合| 欧美精品xxxxbbbb| 狠狠色丁香婷婷综合| 日韩欧美综合一区| 欧美一区午夜视频在线观看| 欧美另类videos死尸| 国产欧美精品一区二区色综合朱莉| 成人听书哪个软件好| 亚洲欧美色图小说| 欧美一区二区三区在线观看| 激情综合网av| 亚洲欧美日本在线| 欧美成人精品福利| 99视频精品免费视频| 视频一区在线播放| 国产精品国产三级国产aⅴ入口| a美女胸又www黄视频久久| 五月婷婷色综合| 国产网站一区二区| 欧美午夜精品理论片a级按摩| 久久 天天综合| 日韩一区欧美小说| 精品成人a区在线观看| 成人午夜电影小说| 天天av天天翘天天综合网| 国产精品一区二区免费不卡| 欧洲一区在线观看| 久久久99精品免费观看不卡| 91免费视频网| 韩国女主播成人在线| 亚洲六月丁香色婷婷综合久久| 欧美一区二区三区精品| 日韩一区欧美二区| 怡红院av一区二区三区| 精品久久99ma| 欧美久久婷婷综合色| 成人97人人超碰人人99| 麻豆中文一区二区| 亚洲自拍与偷拍| 欧美高清在线精品一区| 欧美成人高清电影在线| 欧美日本一道本| 在线一区二区三区做爰视频网站| 国产精品正在播放| 狠狠色丁香久久婷婷综合_中 | 国产91精品精华液一区二区三区 | 免费人成在线不卡| 亚洲欧美激情视频在线观看一区二区三区 | 欧美成人一区二区三区在线观看| 色狠狠色噜噜噜综合网| 成人黄色综合网站| 强制捆绑调教一区二区| 亚洲成精国产精品女| 国产精品久久久久影视| 精品国产电影一区二区| 日韩一区二区免费视频| 欧美色大人视频| 在线观看日韩精品| 色婷婷狠狠综合| av成人免费在线观看| 成人激情动漫在线观看| 大白屁股一区二区视频| 激情综合五月天| 国产原创一区二区| 精品一区二区三区在线播放视频 | 激情综合网av| 日韩欧美国产麻豆| 欧美一区二区三区思思人| 欧美日韩在线精品一区二区三区激情| 国产福利精品一区二区| 久久97超碰国产精品超碰| 激情成人综合网| 国产综合久久久久久久久久久久| 日韩电影在线一区二区| 麻豆精品久久久| 日日夜夜精品视频天天综合网| 亚洲国产你懂的| 日韩成人一级大片| 日本不卡一二三| 久久99精品久久久久| 国产一区二区三区在线观看免费视频| 久久国产婷婷国产香蕉| 国产一区二区在线免费观看| 国产盗摄一区二区三区| 91蜜桃传媒精品久久久一区二区| 91视频一区二区| 欧美日免费三级在线| 正在播放一区二区| 久久丝袜美腿综合| 国产精品网站在线观看| 免费成人在线网站| av一区二区不卡| 亚洲视频免费观看| 蜜桃久久久久久| av一本久道久久综合久久鬼色| 欧美高清视频在线高清观看mv色露露十八| 亚洲精品在线网站| 亚洲bdsm女犯bdsm网站| 成人激情动漫在线观看| 欧美一级夜夜爽| 亚洲精品伦理在线| 国产麻豆精品久久一二三| 欧亚一区二区三区| 中国色在线观看另类| 日本特黄久久久高潮| 色婷婷综合久久久中文一区二区| 欧美一级午夜免费电影| 亚洲一区视频在线| proumb性欧美在线观看| 久久综合五月天婷婷伊人| 午夜免费久久看| 91在线视频18| 国产人妖乱国产精品人妖| 日韩av电影免费观看高清完整版 | 不卡一区二区三区四区| 欧美日韩国产精选| 国产精品美女久久久久aⅴ| 美国av一区二区| 欧美猛男男办公室激情| 亚洲精选视频在线| 成a人片国产精品| 久久日韩粉嫩一区二区三区| 国产91丝袜在线18| www精品美女久久久tv| 日本v片在线高清不卡在线观看| 欧美性一区二区| 亚洲精品视频一区二区| 99热国产精品| 亚洲图片另类小说| youjizz久久| 中文字幕中文字幕中文字幕亚洲无线| 国产精品一区二区久激情瑜伽| 精品美女一区二区| 久久99精品久久久| 日韩欧美二区三区| 老司机精品视频一区二区三区| 91精品国产免费| 精品一区二区在线视频| 精品一区二区三区免费观看| 国产精品久久久久久久久免费丝袜| 欧美电影免费观看高清完整版在线 | 夜夜嗨av一区二区三区| av成人动漫在线观看| 中文字幕一区av| 色视频一区二区| 亚洲午夜免费福利视频| 欧美日韩一卡二卡三卡| 奇米色777欧美一区二区| 日韩精品最新网址| 国产一区二区0| 国产精品国产三级国产普通话三级| av资源网一区| 亚洲国产精品一区二区久久| 欧美日韩一本到| 蜜臀精品一区二区三区在线观看| 26uuu久久天堂性欧美| 福利一区福利二区| 亚洲精品自拍动漫在线| 欧美日韩精品一区二区在线播放| 日本不卡高清视频| 久久久久97国产精华液好用吗| 粉嫩欧美一区二区三区高清影视| 亚洲欧洲av另类| 精品1区2区3区| 午夜电影一区二区三区| 一区二区欧美国产| 日本美女一区二区三区视频| 韩日精品视频一区| 在线观看一区二区精品视频| 日韩精品国产精品|