From: <kr_...@us...> - 2003-03-27 13:36:25
|
Update of /cvsroot/htoolkit/port/src/cbits/GTK In directory sc8-pr-cvs1:/tmp/cvs-serv10752/port/src/cbits/GTK Added Files: ProgressBar.c Slider.c Log Message: Added implementation for ProgressBar and Slider controls --- NEW FILE: ProgressBar.c --- #include "ProgressBar.h" #include "Internals.h" #include "Handlers_stub.h" WindowHandle osCreateHorzProgressBar(WindowHandle window, BOOL bSmooth) { GtkWidget *bar; bar = gtk_progress_bar_new(); gtk_progress_bar_set_orientation(GTK_PROGRESS_BAR(bar), GTK_PROGRESS_LEFT_TO_RIGHT); gtk_progress_bar_set_bar_style(GTK_PROGRESS_BAR(bar), bSmooth ? GTK_PROGRESS_CONTINUOUS : GTK_PROGRESS_DISCRETE); gtk_fixed_put(GTK_FIXED(GTK_BIN(GetSW(window)->child)->child), bar, 0, 0); gtk_widget_show(bar); return bar; }; WindowHandle osCreateVertProgressBar(WindowHandle window, BOOL bSmooth) { GtkWidget *bar; bar = gtk_progress_bar_new(); gtk_progress_bar_set_orientation(GTK_PROGRESS_BAR(bar), GTK_PROGRESS_BOTTOM_TO_TOP); gtk_progress_bar_set_bar_style(GTK_PROGRESS_BAR(bar), bSmooth ? GTK_PROGRESS_CONTINUOUS : GTK_PROGRESS_DISCRETE); gtk_fixed_put(GTK_FIXED(GTK_BIN(GetSW(window)->child)->child), bar, 0, 0); gtk_widget_show(bar); return bar; }; void osGetProgressBarReqSize(WindowHandle bar, int *res) { int w,h; GtkRequisition requisition; gtk_widget_get_size_request(bar, &w,&h); gtk_widget_set_size_request(bar, -1,-1); gtk_widget_size_request(bar, &requisition); gtk_widget_set_size_request(bar, w, h); res[0] = requisition.width; res[1] = requisition.height; } void osSetProgressBarFraction(WindowHandle bar, int minPos, int maxPos, int pos) { if (maxPos!=minPos) { gdouble fraction = ((gdouble) pos)/((gdouble) (maxPos-minPos)); gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(bar), fraction); } gtk_progress_bar_set_discrete_blocks(GTK_PROGRESS_BAR(bar), maxPos-minPos); } int osGetProgressBarFraction(WindowHandle bar, int minPos, int maxPos) { return floor(gtk_progress_bar_get_fraction(GTK_PROGRESS_BAR(bar))*(maxPos-minPos)+0.5);; } --- NEW FILE: Slider.c --- #include "Slider.h" #include "Internals.h" #include "Handlers_stub.h" static void slider_adjustment_value_changed_handler (GtkAdjustment *adjustment, gpointer user_data) { handleControlCommand((WindowHandle) user_data); }; WindowHandle osCreateHorzSlider(WindowHandle window) { GtkWidget *slider; slider = gtk_hscale_new_with_range(0, 100, 1); gtk_signal_connect (GTK_OBJECT (gtk_range_get_adjustment(GTK_RANGE(slider))), "value-changed", GTK_SIGNAL_FUNC(slider_adjustment_value_changed_handler), slider); gtk_fixed_put(GTK_FIXED(GTK_BIN(GetSW(window)->child)->child), slider, 0, 0); gtk_widget_show(slider); return slider; }; WindowHandle osCreateVertSlider(WindowHandle window) { GtkWidget *slider; slider = gtk_vscale_new_with_range(0, 100, 1); gtk_signal_connect (GTK_OBJECT (gtk_range_get_adjustment(GTK_RANGE(slider))), "value-changed", GTK_SIGNAL_FUNC(slider_adjustment_value_changed_handler), slider); gtk_fixed_put(GTK_FIXED(GTK_BIN(GetSW(window)->child)->child), slider, 0, 0); gtk_widget_show(slider); return slider; }; void osGetSliderReqSize(WindowHandle slider, int *res) { int w,h; GtkRequisition requisition; gtk_widget_get_size_request(slider, &w,&h); gtk_widget_set_size_request(slider, -1,-1); gtk_widget_size_request(slider, &requisition); gtk_widget_set_size_request(slider, w, h); res[0] = requisition.width; res[1] = requisition.height; } void osSetSliderRange(WindowHandle slider, int minPos, int maxPos) { GtkAdjustment *adjustment = gtk_range_get_adjustment(GTK_RANGE(slider)); adjustment->lower = minPos; adjustment->upper = maxPos; gtk_adjustment_changed(adjustment); } void osGetSliderRange(WindowHandle slider, int *minPos, int *maxPos) { GtkAdjustment *adjustment = gtk_range_get_adjustment(GTK_RANGE(slider)); *minPos = adjustment->lower; *minPos = adjustment->upper; } void osSetSliderPosition(WindowHandle slider, int pos) { GtkAdjustment *adjustment = gtk_range_get_adjustment(GTK_RANGE(slider)); gtk_adjustment_set_value(adjustment, pos); } int osGetSliderPosition(WindowHandle slider) { GtkAdjustment *adjustment = gtk_range_get_adjustment(GTK_RANGE(slider)); return gtk_adjustment_get_value(adjustment); } |