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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? gperiodic.c

?? gperiodic is a program for browsing the periodic table and looking up data for different elements. I
?? C
字號:
/* gperiodic - a program for browsing the periodic table and looking up            information on elements.Copyright (C) 2000 Jonas Frantz     This file is part of gperiodic.     gdpc is free software; you can redistribute it and/or modify    it under the terms of the GNU General Public License as published by    the Free Software Foundation; either version 2 of the License, or    (at your option) any later version.     gdpc is distributed in the hope that it will be useful,    but WITHOUT ANY WARRANTY; without even the implied warranty of    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the    GNU General Public License for more details.     You should have received a copy of the GNU General Public License    along with this program; if not, write to the Free Software    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA Authors email : jonas.frantz@helsinki.fi */#include <gtk/gtk.h>#include <stdio.h>#include <stdlib.h>#include <math.h>#include <unistd.h>#include <string.h>#include "gperiodic.h"#include "table_data.h"#define VERSION "2.0.2"#define HEADERTEXTLEN 40  char *optstr            = "c:hDv";		/* cmdline option string... */  int  enable_colorscale  = 0;  int  debug = 0;  gsize bytes_read, bytes_written;int gpdata_get_atomic_number_for_symbol(const char*sym){  int i;    for(i = 0; i < 118; ++i) {	if(!strcasecmp(table[i].info[SYMBOL],sym)) {	    return i+1;	}    }  return 0;}  void gpparse_print_element_data_for_num(int num){    int row, n, i;    char fillout[HEADERTEXTLEN];    printf("\n");    for (row = 0; row < MAX_INFO_NR; row++) {	n = strlen(header.info[row]);	n = HEADERTEXTLEN - n;	for (i=0;i<HEADERTEXTLEN;i++) fillout[i] = ' ';	fillout[n] = (char) NULL;	printf(" %s%s%s\n", header.info[row], fillout,  table[num-1].info[row]);    }    printf("\n");}void main_window_exit( GtkWidget *w, gpointer d ) {    gtk_main_quit();}void dialog_destroy( GtkWidget *w, gpointer d ) {    gtk_grab_remove(GTK_WIDGET(w));}void dialog_close( GtkWidget *w, gpointer d ) {    gtk_widget_destroy(GTK_WIDGET(d));}void display_element_dialog( GtkWidget *w, gpointer d ) {  struct table_entry *entry = (struct table_entry *)d;  GtkWidget *dialog, *vbox, *tbl, *ok_button, *hbox_space, *hbox_ok, *sound_button, *hbox_sound;  int col, x1, x2, y1, y2;  char *buff;    _DBG(g_message("%s(%d) display_table_element() w=0x%08x d=0x%08x",__FILE__, __LINE__, w, d ) );/* display this in a dialog box... */    dialog = gtk_dialog_new();    g_signal_connect(GTK_OBJECT(dialog),"destroy", G_CALLBACK(dialog_destroy), dialog );       gtk_window_set_title(GTK_WINDOW(dialog), _(entry->info[NAME]));    gtk_container_set_border_width( GTK_CONTAINER(dialog), 5 );    vbox = gtk_vbox_new(FALSE,0);    gtk_box_pack_start(GTK_BOX( GTK_DIALOG(dialog)->action_area),			vbox, TRUE, TRUE, 0 );    tbl = gtk_table_new(MAX_INFO_NR, 2,FALSE);    gtk_box_pack_start(GTK_BOX(vbox), tbl, FALSE, FALSE, 0 );/* add the labels to the dialog box verticaly... */    for (col = 0; col < 2; col++) {	int row;	for (row = 0; row < MAX_INFO_NR; row++) {	    GtkWidget *label;	    if (col == 0) label = gtk_label_new(_(header.info[row]));	    else if (row == 0) label = gtk_label_new(_(entry->info[row]));	    else label = gtk_label_new(_(entry->info[row]));	    gtk_misc_set_alignment(GTK_MISC(label), 0, 0);	    gtk_table_attach_defaults(GTK_TABLE(tbl), label, col, col + 1, row, row + 1);	}    }    ok_button = gtk_button_new_from_stock (GTK_STOCK_OK);    g_signal_connect( GTK_OBJECT(ok_button), "clicked",          G_CALLBACK(dialog_close), dialog );    hbox_space = gtk_hbox_new(FALSE, 0);    gtk_container_set_border_width(GTK_CONTAINER(hbox_space),5);    gtk_box_pack_start( GTK_BOX(vbox), hbox_space, TRUE, TRUE, 0 );    hbox_ok = gtk_hbox_new(FALSE, 0);    gtk_box_pack_start(GTK_BOX(hbox_ok), ok_button, TRUE, TRUE, 0 );    gtk_box_pack_end(GTK_BOX(vbox), hbox_ok, TRUE, TRUE, 0 );    gtk_grab_add(dialog);    gtk_widget_show_all(dialog);}void menu_file_exit(gpointer callback_data, guint callback_action, GtkWidget *w ){    main_window_exit(w,NULL);}void menu_help_about( gpointer callback_data, guint callback_action, GtkWidget *widget ) {  GtkWidget *ok_button    = NULL;  GtkWidget *about_dialog = NULL;  GtkWidget *label        = NULL;  gchar *buff;  char *authors = "\tjonas.frantz@helsinki.fi\n"		  "\tmortis@voicenet.com\n"		  "\ta.w.peters@ieee.org\n"		  "\tkhazuada@univ-littoral.fr\n"		  "\trmrivera@cable.net.co\n"		  "\tchris@koeln.ccc.de\n"		  "\tlalo@webcom.com\n"		  "\tneumanns@uni-duesseldorf.de\n"		  "\tkoen_kooi@hotmail.com\n"		  "\tantigone34@libero.it\n"		  "\tAmbrogio.Oliva@sanofi-synthelabo.fr\n"		  "\tf.natter@ndh.net\n"		  "\tmike@lic145.kiev.ua\n"		  "\tpicio@bogucice.pl";  char *info = _("<big><b>GPeriodic "VERSION"</b></big>\n\n"		 "<u>Authors:</u>\n%s\n\n"		 "This program shows the periodic table of elements\n"		 "and information about these elements.\n\n"		 "Released under the GPL license.");    about_dialog = gtk_dialog_new();    g_signal_connect(GTK_OBJECT(about_dialog), "destroy", G_CALLBACK(dialog_destroy),		     about_dialog );    gtk_window_set_title(GTK_WINDOW(about_dialog), _("GPeriodic - About"));    gtk_container_set_border_width( GTK_CONTAINER(about_dialog), 5 );    buff = g_strdup_printf(info, authors);    label = gtk_label_new("");    gtk_label_set_markup(GTK_LABEL(label),buff);    free(buff);    gtk_misc_set_padding( GTK_MISC(label), 10, 10 );    gtk_box_pack_start( GTK_BOX(GTK_DIALOG(about_dialog)->vbox), label, TRUE, TRUE, 0 );    ok_button = gtk_button_new_from_stock (GTK_STOCK_OK);    g_signal_connect( GTK_OBJECT(ok_button), "clicked", G_CALLBACK(dialog_close), about_dialog );    gtk_box_pack_start( GTK_BOX( GTK_DIALOG(about_dialog)->action_area ), ok_button, TRUE, TRUE, 0 );    gtk_widget_show_all(about_dialog);}void show_usage( void ) {    printf("GPeriodic [opts]\n"	   "Options are:\n"	   "    -h         show this help screen.\n"	   "    -c <Temp>  color the elements according to their phase at\n"	   "               temperature <Temp> in Kelvins.\n"	   "    -D         dump the periodic table.\n"	   "    -v         be verbose\n\n");}int criterion2scale(double r, int maxcolor) {  int result;    if (r < 0) return 0;    result = 1 + (maxcolor-1) * r;    if (result >= maxcolor) result = maxcolor - 1;    return result;}void colorize_element(  int i,  struct colorscale * cs1, criterion c1,  struct colorscale * cs2, criterion c2,  struct colorscale * cs3, criterion c3){  int n, c;  double r;  GdkColor col, col_;  c = cs1->maxcolor;  r = c1(table+i);  n = criterion2scale(r,c);  col = cs1->scale[n];  if(cs2) {    c = cs2->maxcolor;    r = c2(table+i);    n = criterion2scale(r,c);    col_ = cs2->scale[n];    col.red += col_.red;    col.green += col_.green;    col.blue += col_.blue;    if(cs3) {      c = cs3->maxcolor;      r = c3(table+i);      n = criterion2scale(r,c);      col_ = cs3->scale[n];      col.red += col_.red;      col.green += col_.green;      col.blue += col_.blue;    }  }  table[i].style->bg[0].red = col.red;  table[i].style->bg[0].green = col.green;  table[i].style->bg[0].blue = col.blue;  gtk_widget_set_style( table[i].button, table[i].style );}void main_prog(void){  GtkWidget *window;  GtkWidget *vbox;  GtkWidget *periodic_table;  GtkAccelGroup *accel_group;  GtkItemFactory *item_factory;  int menu_num_items;  GdkColor tooltip_color_bg, tooltip_color_fg;  int red, gree, blue;  char *buff;  int i;/* create the menu using a menufactory... */  GtkItemFactoryEntry menu[] = {    {_("/_File"), NULL, 0, 0, "<Branch>"},    {_("/File/_Quit"), NULL, (GtkItemFactoryCallback)menu_file_exit, 0, "<Item>"},    {_("/_Help"), NULL, 0, 0, "<Branch>"},    {_("/Help/_About ..."), NULL, (GtkItemFactoryCallback)menu_help_about, 0, "<Item>"},  };/* create the main window */    window = gtk_window_new(GTK_WINDOW_TOPLEVEL);    gtk_window_set_title(GTK_WINDOW(window),"GPeriodic");    gtk_container_set_border_width(GTK_CONTAINER(window),0);/* connect the close event... */    g_signal_connect(GTK_OBJECT(window), "delete-event", G_CALLBACK(main_window_exit), &window );    g_signal_connect(GTK_OBJECT(window), "destroy", G_CALLBACK(main_window_exit), &window );/* use a vbox for the menubar and the table of elements... */    vbox = gtk_vbox_new(FALSE,0);    gtk_container_set_border_width(GTK_CONTAINER(vbox),2);    gtk_container_add( GTK_CONTAINER(window), vbox );    menu_num_items = sizeof(menu) / sizeof(menu[0]);    item_factory = gtk_item_factory_new(GTK_TYPE_MENU_BAR, "<blah>", NULL);    gtk_item_factory_create_items( item_factory, menu_num_items, menu, NULL );    gtk_box_pack_start(GTK_BOX(vbox), gtk_item_factory_get_widget(item_factory, "<blah>"), FALSE, FALSE, 0);/* create the table widget to hold the periodic table */    periodic_table = gtk_table_new(1,1,TRUE);    gtk_box_pack_end( GTK_BOX(vbox), periodic_table, FALSE, FALSE, 0 );/* now for each element in the table of elements, create a display *//* item for it, and add it to the table... */    for(i = 0; i < sizeof(table); ++i ) {	if( !table[i].info[NAME] ) {	    /* stop if no data... */	    _DBG(g_message("%s(%d) %s : %d",__FILE__,__LINE__,		 _("No symbol for index"), i));	    break;	}/* create the button */	table[i].button = gtk_button_new_with_label(_(table[i].info[SYMBOL]));	if( !table[i].button ) {	    g_warning("%s(%d) %s", __FILE__, __LINE__, _("Error button was null?"));	    break;	}/******************************************************************************/    {      int j;      GtkStyle *button_style = gtk_widget_get_style(window);      table[i].style = gtk_style_copy(button_style);      _DBG( g_message("%s(%d) Setting color:  %d %d %d",__FILE__,__LINE__,        table[i].color.red,        table[i].color.green,        table[i].color.blue ) );            if( enable_colorscale ) {        colorize_element(i,          &solid_fluid_cs, solid_fluid_crid,          &condensed_gas_cs, condensed_gas_crit,          0, 0        );      }      else {        /* set for 0, 1, and 2 */        table[i].style->bg[0].red   = table[i].color.red;        table[i].style->bg[0].green = table[i].color.green;        table[i].style->bg[0].blue  = table[i].color.blue;      }      table[i].style->bg[1].red   = table[i].color.red;      table[i].style->bg[1].green = table[i].color.green;      table[i].style->bg[1].blue  = table[i].color.blue;      table[i].style->bg[2].red   = table[i].color.red;      table[i].style->bg[2].green = table[i].color.green;      table[i].style->bg[2].blue  = table[i].color.blue;      gtk_widget_set_style( table[i].button, table[i].style );    }/******************************************************************************//* connect the destroy method to it */	g_signal_connect(GTK_OBJECT(table[i].button), "clicked",			 G_CALLBACK(display_element_dialog), &table[i] );/* set up a string for the tooltips */	buff = g_strdup_printf(_("%s  n:%s w:%s"), _(table[i].info[NAME]),			       table[i].info[NUMBER], table[i].info[WEIGHT]);/* create a new tooltips object... */	table[i].tooltip = gtk_tooltips_new();	gtk_tooltips_set_delay(table[i].tooltip,100);	gtk_tooltips_set_tip(table[i].tooltip,table[i].button,buff,NULL);/* attach the button to the table */	gtk_table_attach(GTK_TABLE(periodic_table), table[i].button,         		 table[i].x - 1, table[i].x, table[i].y - 1, table[i].y,			 GTK_FILL, GTK_FILL, 2, 2);    }/* show all the widgets */    gtk_widget_show_all(window);/* give up controll till they exit the application */    gtk_main();    free(buff);}int main(int argc, char** argv) {  char ch;    gtk_init(&argc,&argv);/* parse the command line with getopt(3) */    while( -1 != (ch=getopt(argc,argv,optstr)) ) {	switch(ch) {	    case 'c':	    if (sscanf(optarg, "%lf", &ambientTemperature) != 1) {		printf(" Option -c error : %s is not a number.\n", optarg);		return -1;	    }	    if (ambientTemperature < 0) {		printf(" Option -c error : %s is not a valid number (must be > 0).\n", optarg);		return -1;	    }	    enable_colorscale = 1;	    break;	case 'h':	    show_usage();	    exit(0);	    break;	case 'D':	    dump_table();	    exit(0);	    break;	case 'v':	    debug = 1;	    break;	default:	    break;	}    }    if(optind < argc) {	while(optind < argc) {	    int atomicNumber = atoi(argv[optind]);	    if(!atomicNumber) { 		atomicNumber = gpdata_get_atomic_number_for_symbol(argv[optind]);	    }	    gpparse_print_element_data_for_num(atomicNumber);	    ++optind;	}	return 0;    }    main_prog();  return 0;}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩中文另类| 北条麻妃国产九九精品视频| 欧美日韩免费电影| 亚洲一二三四在线观看| 欧美日韩在线播放三区四区| 亚洲高清三级视频| 欧美一区二区福利在线| 精品一区二区三区在线观看| 日本亚洲视频在线| 欧美一级高清片在线观看| 久久精品国产久精国产爱| 精品国产乱码久久久久久久| 国产91综合网| 亚洲激情在线播放| 日韩欧美一区中文| 国产99久久久久久免费看农村| 久久久美女艺术照精彩视频福利播放| 成人深夜在线观看| 亚洲一区在线电影| 337p日本欧洲亚洲大胆色噜噜| 成人午夜又粗又硬又大| 亚洲一区二区av电影| 精品久久一区二区| 91香蕉视频污在线| 美日韩一级片在线观看| 国产免费久久精品| 欧美情侣在线播放| 高清beeg欧美| 日韩精品一级中文字幕精品视频免费观看| 日韩欧美亚洲国产另类| 成人精品小蝌蚪| 视频一区二区三区中文字幕| 国产喂奶挤奶一区二区三区| 欧美性色黄大片| 国产99一区视频免费| 亚洲国产日韩a在线播放性色| 精品成人免费观看| 欧美色窝79yyyycom| 国产精品中文有码| 偷窥少妇高潮呻吟av久久免费| 国产视频一区不卡| 欧美一区二区免费视频| 一本一本大道香蕉久在线精品| 久久精品久久99精品久久| 亚洲美女精品一区| 国产人成亚洲第一网站在线播放| 在线免费观看日本一区| 国产成人av一区二区三区在线 | 亚洲欧美国产三级| 欧美videos中文字幕| 欧美在线一二三四区| 日韩亚洲欧美在线| 一本久久a久久免费精品不卡| 国产一区二区免费视频| 日韩精品色哟哟| 亚洲欧美国产高清| 中文字幕一区二区三区av| 久久影院午夜片一区| 欧美精品vⅰdeose4hd| 色一区在线观看| av在线播放成人| 国产成人啪午夜精品网站男同| 免费人成黄页网站在线一区二区| 亚洲一区二区三区中文字幕| 中文字幕一区二区三中文字幕| 久久精品网站免费观看| wwww国产精品欧美| 日韩一区国产二区欧美三区| 欧美色电影在线| 91极品美女在线| 91免费视频网| 99视频在线精品| 99久久综合狠狠综合久久| 国产99一区视频免费| 国产精品66部| 国产白丝精品91爽爽久久| 国产麻豆精品视频| 国产福利一区在线观看| 国产成人av电影免费在线观看| 国内成人精品2018免费看| 看电视剧不卡顿的网站| 看电视剧不卡顿的网站| 国产乱码精品1区2区3区| 国产91露脸合集magnet| 成人小视频免费在线观看| www.激情成人| 91精品91久久久中77777| 欧美羞羞免费网站| 91精品婷婷国产综合久久性色| 欧美日韩一区二区三区视频| 69堂国产成人免费视频| 精品国产乱码久久久久久牛牛 | 国产视频一区在线播放| 国产人妖乱国产精品人妖| 日本一区二区视频在线观看| 中文字幕在线观看不卡| 一区二区国产视频| 亚洲成人三级小说| 久久99热狠狠色一区二区| 国产美女精品一区二区三区| 国产99久久久国产精品潘金| 91浏览器打开| 6080午夜不卡| 国产丝袜在线精品| 亚洲欧美日韩国产手机在线| 亚洲国产综合色| 免费精品99久久国产综合精品| 国产乱码精品一区二区三区av | 日韩午夜在线影院| 国产日韩欧美在线一区| 亚洲男人天堂av网| 六月丁香综合在线视频| 成人小视频免费在线观看| 欧美午夜精品一区二区三区| 日韩精品在线看片z| 中日韩av电影| 91精品国产综合久久久久| 色哟哟国产精品免费观看| 欧美一级专区免费大片| 国产精品每日更新| 日韩精品欧美成人高清一区二区| 国产乱国产乱300精品| 欧美午夜电影网| 国产视频一区二区在线观看| 亚洲国产一区二区a毛片| 国产一区二区三区四| 欧美这里有精品| 国产日韩欧美精品在线| 亚洲电影视频在线| 国产999精品久久久久久绿帽| 欧美亚一区二区| 欧美国产日韩a欧美在线观看| 香蕉加勒比综合久久| 成人av资源站| 欧美精品一区二区精品网| 亚洲精品亚洲人成人网在线播放| 极品少妇xxxx精品少妇偷拍| 色94色欧美sute亚洲13| 久久伊人中文字幕| 日韩高清一区二区| 色婷婷久久综合| 国产精品不卡一区二区三区| 精品一区二区三区免费视频| 精品视频色一区| 亚洲美女在线国产| 成人一区二区三区| 久久夜色精品国产欧美乱极品| 亚洲国产美国国产综合一区二区| 成人黄色小视频| 久久久久久久久岛国免费| 免费在线观看不卡| 欧美电影在哪看比较好| 亚洲综合在线视频| 99精品国产99久久久久久白柏| 精品va天堂亚洲国产| 免费久久精品视频| 91麻豆精品国产91久久久久久久久 | 欧美国产综合色视频| 久久成人精品无人区| 欧美一区二区三区日韩| 亚洲成人精品一区| 欧美色图片你懂的| 亚洲一区二区三区四区在线观看| 99久久99久久综合| 亚洲区小说区图片区qvod| av中文字幕亚洲| 国产精品国产三级国产aⅴ原创| 国产成人精品午夜视频免费| 国产女主播一区| 成人高清伦理免费影院在线观看| 国产女同互慰高潮91漫画| 成人激情动漫在线观看| 国产精品高清亚洲| 91麻豆蜜桃一区二区三区| 亚洲欧美在线视频| 91成人国产精品| 午夜精品在线看| 欧美老年两性高潮| 男男成人高潮片免费网站| 精品奇米国产一区二区三区| 国产麻豆精品theporn| 中文字幕不卡在线| 91蜜桃在线免费视频| 亚洲高清不卡在线| 日韩一区二区三区电影在线观看| 狂野欧美性猛交blacked| 久久久99精品免费观看不卡| 波多野结衣欧美| 亚洲国产精品久久人人爱蜜臀| 欧美高清视频一二三区| 蜜臀久久久99精品久久久久久| 亚洲精品一区二区三区精华液| 国产米奇在线777精品观看| 国产精品久久毛片av大全日韩| 91麻豆福利精品推荐| 日韩精品一区第一页| 国产欧美精品一区二区色综合朱莉| 91美女视频网站| 全国精品久久少妇| 国产欧美视频一区二区三区|