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);
}
|