#include <gtk/gtk.h>
GtkWidget *hscale, *vscale;
void cb_pos_menu_select(GtkWidget *item,
GtkPositionType pos)
{
gtk_scale_set_value_pos(GTK_SCALE(hscale), pos);
gtk_scale_set_value_pos(GTK_SCALE(vscale), pos);
}
void cb_update_menu_select(GtkWidget *item,
GtkUpdateType policy)
{
gtk_range_set_update_policy(GTK_RANGE(hscale), policy);
gtk_range_set_update_policy(GTK_RANGE(vscale), policy);
}
void cb_digits_scale (GtkAdjustment *adj)
{
gtk_scale_set_digits(GTK_SCALE(hscale), (gint)adj->value);
gtk_scale_set_digits(GTK_SCALE(vscale), (gint)adj->value);
}
void cb_page_size(GtkAdjustment *get,
GtkAdjustment *set)
{
set->page_size = get->value;
set->page_increment = get->value;
gtk_adjustment_set_value(set, CLAMP (set->value,set->lower,
(set->upper - set->page_size)));
}
void cb_draw_value(GtkToggleButton *button)
{
gtk_scale_set_draw_value(GTK_SCALE (hscale), button->active);
gtk_scale_set_draw_value(GTK_SCALE (vscale), button->active);
}
GtkWidget* make_menu_item (gchar *name,
GCallback callback,
gpointer data)
{
GtkWidget *item;
item = gtk_menu_item_new_with_label (name);
g_signal_connect (G_OBJECT(item), "activate",
callback, data);
gtk_widget_show(item);
return item;
}
void scale_set_default_values(GtkScale *scale)
{
gtk_range_set_update_policy (GTK_RANGE (scale),
GTK_UPDATE_CONTINUOUS);
gtk_scale_set_digits(scale, 1);
gtk_scale_set_value_pos(scale, GTK_POS_TOP);
gtk_scale_set_draw_value(scale, TRUE);
}
void create_range_controls (void)
{
GtkWidget *window;
GtkWidget *box1, *box2, *box3;
GtkWidget *button;
GtkWidget *scrollbar;
GtkWidget *separator;
GtkWidget *opt, *menu, *item;
GtkWidget *label;
GtkWidget *scale;
GtkObject *adj1, *adj2;
window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
g_signal_connect(G_OBJECT(window), "destroy",
G_CALLBACK(gtk_main_quit), NULL);
gtk_window_set_title(GTK_WINDOW(window), "range controls");
box1 = gtk_vbox_new (FALSE, 0);
gtk_container_add(GTK_CONTAINER(window), box1);
gtk_widget_show(box1);
box2 = gtk_hbox_new (FALSE, 10);
gtk_container_set_border_width(GTK_CONTAINER(box2), 10);
gtk_box_pack_start(GTK_BOX(box1), box2, TRUE, TRUE, 0);
gtk_widget_show(box2);
adj1 = gtk_adjustment_new (0.0, 0.0, 101.0, 0.1, 1.0, 1.0);
vscale = gtk_vscale_new (GTK_ADJUSTMENT(adj1));
scale_set_default_values (GTK_SCALE (vscale));
gtk_box_pack_start (GTK_BOX(box2), vscale, TRUE, TRUE, 0);
gtk_widget_show (vscale);
box3 = gtk_vbox_new (FALSE, 10);
gtk_box_pack_start (GTK_BOX(box2), box3, TRUE, TRUE, 0);
gtk_widget_show(box3);
hscale = gtk_hscale_new (GTK_ADJUSTMENT (adj1));
gtk_widget_set_size_request(GTK_WIDGET(hscale), 200, -1);
scale_set_default_values (GTK_SCALE (hscale));
gtk_box_pack_start(GTK_BOX(box3), hscale, TRUE, TRUE, 0);
gtk_widget_show(hscale);
scrollbar = gtk_hscrollbar_new (GTK_ADJUSTMENT (adj1));
gtk_range_set_update_policy (GTK_RANGE (scrollbar),
GTK_UPDATE_CONTINUOUS);
gtk_box_pack_start(GTK_BOX(box3), scrollbar, TRUE, TRUE, 0);
gtk_widget_show (scrollbar);
box2 = gtk_hbox_new (FALSE, 10);
gtk_container_set_border_width (GTK_CONTAINER (box2), 10);
gtk_box_pack_start (GTK_BOX (box1), box2, TRUE, TRUE, 0);
gtk_widget_show (box2);
button = gtk_check_button_new_with_label (
"Display value on scale widgets");
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(button), TRUE);
g_signal_connect (G_OBJECT(button), "toggled",
G_CALLBACK (cb_draw_value), NULL);
gtk_box_pack_start (GTK_BOX(box2), button, TRUE, TRUE, 0);
gtk_widget_show (button);
box2 = gtk_hbox_new (FALSE, 10);
gtk_container_set_border_width(GTK_CONTAINER (box2), 10);
label = gtk_label_new ("Scale Value Position:");
gtk_box_pack_start(GTK_BOX(box2), label, FALSE, FALSE, 0);
gtk_widget_show(label);
opt = gtk_option_menu_new();
menu = gtk_menu_new();
item = make_menu_item ("Top", G_CALLBACK(cb_pos_menu_select),
GINT_TO_POINTER (GTK_POS_TOP));
gtk_menu_shell_append (GTK_MENU_SHELL(menu), item);
item = make_menu_item ("Bottom", G_CALLBACK(cb_pos_menu_select),
GINT_TO_POINTER (GTK_POS_BOTTOM));
gtk_menu_shell_append(GTK_MENU_SHELL(menu), item);
item = make_menu_item ("Left", G_CALLBACK(cb_pos_menu_select),
GINT_TO_POINTER (GTK_POS_LEFT));
gtk_menu_shell_append (GTK_MENU_SHELL(menu), item);
item = make_menu_item ("Right", G_CALLBACK(cb_pos_menu_select),
GINT_TO_POINTER (GTK_POS_RIGHT));
gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
gtk_option_menu_set_menu (GTK_OPTION_MENU (opt), menu);
gtk_box_pack_start (GTK_BOX (box2), opt, TRUE, TRUE, 0);
gtk_widget_show (opt);
gtk_box_pack_start (GTK_BOX(box1), box2, TRUE, TRUE, 0);
gtk_widget_show (box2);
box2 = gtk_hbox_new (FALSE, 10);
gtk_container_set_border_width (GTK_CONTAINER (box2), 10);
label = gtk_label_new ("Scale Update Policy:");
gtk_box_pack_start (GTK_BOX (box2), label, FALSE, FALSE, 0);
gtk_widget_show (label);
opt = gtk_option_menu_new();
menu = gtk_menu_new();
item = make_menu_item ("Continuous",
G_CALLBACK(cb_update_menu_select),
GINT_TO_POINTER (GTK_UPDATE_CONTINUOUS));
gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
item = make_menu_item ("Discontinuous",
G_CALLBACK(cb_update_menu_select),
GINT_TO_POINTER (GTK_UPDATE_DISCONTINUOUS));
gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
item = make_menu_item ("Delayed",
G_CALLBACK (cb_update_menu_select),
GINT_TO_POINTER (GTK_UPDATE_DELAYED));
gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
gtk_option_menu_set_menu (GTK_OPTION_MENU(opt), menu);
gtk_box_pack_start (GTK_BOX(box2), opt, TRUE, TRUE, 0);
gtk_widget_show (opt);
gtk_box_pack_start (GTK_BOX(box1), box2, TRUE, TRUE, 0);
gtk_widget_show (box2);
box2 = gtk_vbox_new (FALSE , 10);
gtk_container_set_border_width (GTK_CONTAINER(box2), 10);
label = gtk_label_new ("Scale Digits:");
gtk_box_pack_start (GTK_BOX (box2), label, FALSE, FALSE, 0);
gtk_widget_show (label);
adj2 = gtk_adjustment_new (1.0, 0.0, 5.0, 1.0, 1.0, 0.0);
g_signal_connect (G_OBJECT(adj2), "value_changed",
G_CALLBACK(cb_digits_scale), NULL);
scale = gtk_hscale_new (GTK_ADJUSTMENT(adj2));
gtk_scale_set_digits (GTK_SCALE(scale), 0);
gtk_box_pack_start(GTK_BOX(box2), scale, TRUE, TRUE, 0);
gtk_widget_show (scale);
gtk_box_pack_start(GTK_BOX(box1), box2, TRUE, TRUE, 0);
gtk_widget_show (box2);
box2 = gtk_hbox_new (FALSE, 10);
gtk_container_set_border_width (GTK_CONTAINER(box2), 10);
label = gtk_label_new ("Scrollbar Page Size:");
gtk_box_pack_start (GTK_BOX (box2), label, FALSE, FALSE, 0);
gtk_widget_show (label);
adj2 = gtk_adjustment_new (1.0, 1.0, 101.0, 1.0, 1.0, 0.0);
g_signal_connect (G_OBJECT (adj2), "value_changed",
G_CALLBACK (cb_page_size), adj1);
scale = gtk_hscale_new (GTK_ADJUSTMENT(adj2));
gtk_scale_set_digits (GTK_SCALE(scale), 0);
gtk_box_pack_start (GTK_BOX(box2), scale, TRUE, TRUE, 0);
gtk_widget_show (scale);
gtk_box_pack_start (GTK_BOX(box1), box2, TRUE, TRUE, 0);
gtk_widget_show (box2);
separator = gtk_hseparator_new();
gtk_box_pack_start (GTK_BOX (box1), separator, FALSE, TRUE, 0);
gtk_widget_show (separator);
box2 = gtk_vbox_new (FALSE, 0);
gtk_container_set_border_width (GTK_CONTAINER(box2), 10);
gtk_box_pack_start (GTK_BOX(box1), box2, TRUE, TRUE, 0);
gtk_widget_show (box2);
button = gtk_button_new_with_label ("Quit");
g_signal_connect (G_OBJECT(button), "clicked",
G_CALLBACK(gtk_main_quit), NULL);
gtk_box_pack_start (GTK_BOX(box2), button, TRUE, TRUE, 0);
GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
gtk_widget_grab_default (button);
gtk_widget_show (button);
gtk_widget_show (window);
}
int main(int argc, char * argv[])
{
gtk_init(&argc, &argv);
create_range_controls();
gtk_main();
return 0;
}
没有合适的资源?快使用搜索试试~ 我知道了~
个人资料备份-----GTK+
需积分: 4 90 下载量 26 浏览量
2008-12-05
16:33:14
上传
评论
收藏 198KB GZ 举报
温馨提示
共89个文件
c:37个
makefile:10个
png:8个
个人收藏,学习GTK时写的…… 个人收藏,学习GTK时写的……
资源详情
资源评论
资源推荐
收起资源包目录
gtk.tar.gz (89个子文件)
gtk
label.c 4KB
stabars 10KB
color.c 2KB
eventbox.c 1KB
hello.c 1KB
radbutton.c 3KB
menu.c 1KB
tooltip.c 994B
list
list 20KB
list.c 2KB
Makefile 83B
base 7KB
menu 10KB
frame 9KB
rules.c 2KB
frame.c 1KB
stabars.c 2KB
entext 12KB
pass.c 2KB
base.c 211B
spin 16KB
entext.c 3KB
test 11KB
test.c 7KB
URL
url 19KB
url.c 1KB
Makefile 81B
subwin
subwin 27KB
subwin.c 2KB
Makefile 87B
11111.c 3KB
tabexample.c 1KB
pass 20KB
eventbox 9KB
progress 13KB
color 11KB
hello 22KB
info.png 654B
tabexample 9KB
newhello.c 1KB
tooltips 9KB
111.c 3KB
file 8KB
imabutton.c 1KB
label 12KB
optionmenu
optionmenu.c 1KB
optionmenu 20KB
Makefile 95B
newhello 9KB
mine.c 7KB
rules 10KB
111.c~ 3KB
range.c 8KB
snake
snake.png 384B
back.png 159B
bean.png 360B
snake.c 8KB
snake 32KB
Makefile 85B
toolbar
toolbar.c 894B
toolbar 18KB
Makefile 89B
spin.c 7KB
Makefile 93B
boxexample 13KB
arrow 9KB
progress.c 4KB
imabutton 9KB
mine 15KB
arrow.c 1KB
popup
pop.c 0B
Makefile 85B
popup.c 4KB
popup 30KB
basic.c 209B
radbutton 26KB
file.c 1KB
range 29KB
time
time.c 3KB
Makefile 83B
time 21KB
tank
tank.c 3KB
0.png 946B
6.png 915B
Makefile 84B
2.png 906B
4.png 973B
tank 24KB
boxexample.c 5KB
共 89 条
- 1
mifeixq
- 粉丝: 53
- 资源: 38
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0