⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gtkprogress.c

📁 gtk是linux一款强大的夸平台的图形化开发工具
💻 C
📖 第 1 页 / 共 2 页
字号:
						   widget->allocation.height,						   -1);      GTK_PROGRESS_CLASS (GTK_OBJECT (progress)->klass)->paint (progress);    }}static voidgtk_progress_value_changed (GtkAdjustment *adjustment,			    GtkProgress   *progress){  GTK_PROGRESS_CLASS (GTK_OBJECT (progress)->klass)->update (progress);}static gchar *gtk_progress_build_string (GtkProgress *progress,			   gfloat       value,			   gfloat       percentage){  gchar buf[256] = { 0 };  gchar tmp[256] = { 0 };  gchar *src;  gchar *dest;  gchar fmt[10];  src = progress->format;  dest = buf;   while (src && *src)    {      if (*src != '%')	{	  *dest = *src;	  dest++;	}      else	{	  gchar c;	  gint digits;	  c = *(src + sizeof(gchar));	  digits = 0;	  if (c >= '0' && c <= '2')	    {	      digits = (gint) (c - '0');	      src++;	      c = *(src + sizeof(gchar));	    }	  switch (c)	    {	    case '%':	      *dest = '%';	      src++;	      dest++;	      break;	    case 'p':	    case 'P':	      if (digits)		{		  sprintf (fmt, "%%.%df", digits);		  sprintf (tmp, fmt, 100 * percentage);		}	      else		sprintf (tmp, "%.0f", 100 * percentage);	      strcat (buf, tmp);	      dest = &(buf[strlen (buf)]);	      src++;	      break;	    case 'v':	    case 'V':	      if (digits)		{		  sprintf (fmt, "%%.%df", digits);		  sprintf (tmp, fmt, value);		}	      else		sprintf (tmp, "%.0f", value);	      strcat (buf, tmp);	      dest = &(buf[strlen (buf)]);	      src++;	      break;	    case 'l':	    case 'L':	      if (digits)		{		  sprintf (fmt, "%%.%df", digits);		  sprintf (tmp, fmt, progress->adjustment->lower);		}	      else		sprintf (tmp, "%.0f", progress->adjustment->lower);	      strcat (buf, tmp);	      dest = &(buf[strlen (buf)]);	      src++;	      break;	    case 'u':	    case 'U':	      if (digits)		{		  sprintf (fmt, "%%.%df", digits);		  sprintf (tmp, fmt, progress->adjustment->upper);		}	      else		sprintf (tmp, "%.0f", progress->adjustment->upper);	      strcat (buf, tmp);	      dest = &(buf[strlen (buf)]);	      src++;	      break;	    default:	      break;	    }	}      src++;    }  return g_strdup (buf);}/***************************************************************/voidgtk_progress_set_adjustment (GtkProgress   *progress,			     GtkAdjustment *adjustment){  g_return_if_fail (progress != NULL);  g_return_if_fail (GTK_IS_PROGRESS (progress));  if (adjustment)    g_return_if_fail (GTK_IS_ADJUSTMENT (adjustment));  else    adjustment = (GtkAdjustment*) gtk_adjustment_new (0, 0, 100, 0, 0, 0);  if (progress->adjustment != adjustment)    {      if (progress->adjustment)        {          gtk_signal_disconnect_by_data (GTK_OBJECT (progress->adjustment),                                         (gpointer) progress);          gtk_object_unref (GTK_OBJECT (progress->adjustment));        }      progress->adjustment = adjustment;      if (adjustment)        {          gtk_object_ref (GTK_OBJECT (adjustment));	  gtk_object_sink (GTK_OBJECT (adjustment));          gtk_signal_connect (GTK_OBJECT (adjustment), "value_changed",			      (GtkSignalFunc) gtk_progress_value_changed,			      (gpointer) progress);        }    }}voidgtk_progress_configure (GtkProgress *progress,			gfloat value,			gfloat min,			gfloat max){  GtkAdjustment *adj;  gboolean changed = FALSE;  g_return_if_fail (progress != NULL);  g_return_if_fail (GTK_IS_PROGRESS (progress));  g_return_if_fail (min <= max);  g_return_if_fail (value >= min && value <= max);  adj = progress->adjustment;  if (fabs (adj->lower - min) > EPSILON || fabs (adj->upper - max) > EPSILON)    changed = TRUE;  adj->value = value;  adj->lower = min;  adj->upper = max;  gtk_signal_emit_by_name (GTK_OBJECT (adj), "value_changed");  if (changed)    gtk_signal_emit_by_name (GTK_OBJECT (progress->adjustment), "changed");}voidgtk_progress_set_percentage (GtkProgress *progress,			     gfloat       percentage){  g_return_if_fail (progress != NULL);  g_return_if_fail (GTK_IS_PROGRESS (progress));  g_return_if_fail (percentage >= 0 && percentage <= 1.0);  gtk_progress_set_value (progress, progress->adjustment->lower + percentage * 		 (progress->adjustment->upper - progress->adjustment->lower));}gfloatgtk_progress_get_current_percentage (GtkProgress *progress){  g_return_val_if_fail (progress != NULL, 0);  g_return_val_if_fail (GTK_IS_PROGRESS (progress), 0);  return (progress->adjustment->value - progress->adjustment->lower) /    (progress->adjustment->upper - progress->adjustment->lower);}gfloatgtk_progress_get_percentage_from_value (GtkProgress *progress,					gfloat       value){  g_return_val_if_fail (progress != NULL, 0);  g_return_val_if_fail (GTK_IS_PROGRESS (progress), 0);  if (value >= progress->adjustment->lower &&      value <= progress->adjustment->upper)    return (value - progress->adjustment->lower) /      (progress->adjustment->upper - progress->adjustment->lower);  else    return 0.0;}voidgtk_progress_set_value (GtkProgress *progress,			gfloat       value){  g_return_if_fail (progress != NULL);  g_return_if_fail (GTK_IS_PROGRESS (progress));  if (fabs (progress->adjustment->value - value) > EPSILON)    gtk_adjustment_set_value (progress->adjustment, value);}gfloatgtk_progress_get_value (GtkProgress *progress){  g_return_val_if_fail (progress != NULL, 0);  g_return_val_if_fail (GTK_IS_PROGRESS (progress), 0);  return progress->adjustment->value;}voidgtk_progress_set_show_text (GtkProgress *progress,			    gint        show_text){  g_return_if_fail (progress != NULL);  g_return_if_fail (GTK_IS_PROGRESS (progress));  if (progress->show_text != show_text)    {      progress->show_text = show_text;      if (GTK_WIDGET_DRAWABLE (GTK_WIDGET (progress)))	gtk_widget_queue_resize (GTK_WIDGET (progress));    }}voidgtk_progress_set_text_alignment (GtkProgress *progress,				 gfloat       x_align,				 gfloat       y_align){  g_return_if_fail (progress != NULL);  g_return_if_fail (GTK_IS_PROGRESS (progress));  g_return_if_fail (x_align >= 0.0 && x_align <= 1.0);  g_return_if_fail (y_align >= 0.0 && y_align <= 1.0);  if (progress->x_align != x_align || progress->y_align != y_align)    {      progress->x_align = x_align;      progress->y_align = y_align;      if (GTK_WIDGET_DRAWABLE (GTK_WIDGET (progress)))	gtk_widget_queue_resize (GTK_WIDGET (progress));    }}voidgtk_progress_set_format_string (GtkProgress *progress,				gchar       *format){  g_return_if_fail (progress != NULL);  g_return_if_fail (GTK_IS_PROGRESS (progress));  if (format)    {      if (progress->format)	g_free (progress->format);      progress->format = g_strdup (format);      if (GTK_WIDGET_DRAWABLE (GTK_WIDGET (progress)))	gtk_widget_queue_resize (GTK_WIDGET (progress));    }}gchar *gtk_progress_get_current_text (GtkProgress *progress){  g_return_val_if_fail (progress != NULL, 0);  g_return_val_if_fail (GTK_IS_PROGRESS (progress), 0);  return gtk_progress_build_string (progress, progress->adjustment->value,		    gtk_progress_get_current_percentage (progress));}gchar *gtk_progress_get_text_from_value (GtkProgress *progress,				  gfloat       value){  g_return_val_if_fail (progress != NULL, 0);  g_return_val_if_fail (GTK_IS_PROGRESS (progress), 0);  return gtk_progress_build_string (progress, value,		    gtk_progress_get_percentage_from_value (progress, value));}voidgtk_progress_set_activity_mode (GtkProgress *progress,				guint        activity_mode){  g_return_if_fail (progress != NULL);  g_return_if_fail (GTK_IS_PROGRESS (progress));  if (progress->activity_mode != (activity_mode != 0))    {      progress->activity_mode = (activity_mode != 0);      if (progress->activity_mode)	GTK_PROGRESS_CLASS 	  (GTK_OBJECT (progress)->klass)->act_mode_enter (progress);      if (GTK_WIDGET_DRAWABLE (GTK_WIDGET (progress)))	gtk_widget_queue_resize (GTK_WIDGET (progress));    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -