1
  
2
  
3
  
4
  
5
  
6
  
7
  
8
  
9
  
10
  
11
  
12
  
13
  
14
  
15
  
16
  
17
  
18
  
19
  
20
  
21
  
22
  
23
  
24
  
25
  
26
  
27
  
28
  
29
  
30
  
31
  
32
  
33
  
34
  
35
  
36
  
37
  
38
  
39
  
40
  
41
  
42
  
43
  
44
  
45
  
46
  
47
  
48
  
49
  
50
  
51
  
52
  
53
  
54
  
55
  
56
  
57
  
58
  
59
  
60
  
61
  
62
  
63
  
64
  
65
  
66
  
67
  
68
  
69
  
70
  
71
  
72
  
73
  
74
  
75
  
76
  
77
  
78
  
79
  
80
  
81
  
82
  
83
  
84
  
85
  
86
  
87
  
88
  
89
  
90
  
91
  
92
  
/* -*- C -*- */ 
require gtk212; 
 
class GTK2.ScaleButton; 
inherit GTK2.Button; 
 
//! Properties: 
//! GTK2.Adjustment adjustment 
//! string icons 
//! int size 
//! float value 
 
signal popdown; 
signal popup; 
signal value_changed; 
 
//! Scale button 
void create(int|void size_or_props, ?float min, ?float max, 
            ?float step, ?array(string) icons) 
//! Create a new W(ScaleButton). 
{ 
  pgtk2_verify_not_inited(); 
  pgtk2_verify_setup(); 
  if (args>1) { 
    INT_TYPE size; 
    FLOAT_TYPE min,max,step; 
    struct array *a; 
    const gchar **icons; 
    int i,j; 
    GtkWidget *gsb; 
 
    get_all_args(NULL,args,"%i%f%f%f%A",&size,&min,&max,&step,&a); 
    if (a==NULL || a->size<1) 
      Pike_error("Invalid array argument 5.\n"); 
    icons=g_new0(const gchar *,a->size+1); 
    for (i=j=0; i<a->size; i++) { 
      icons[j]=g_strdup(CGSTR0((ITEM(a)+i)->u.string)); 
      j++; 
    } 
    icons[j]=NULL; 
    gsb=gtk_scale_button_new(size,min,max,step,icons); 
    THIS->obj=G_OBJECT(gsb); 
    for (i=0; icons[i]; i++) 
      g_free((gpointer *)icons[i]); 
    g_free(icons); 
  } else { 
    INIT_WITH_PROPS(GTK_TYPE_SCALE_BUTTON); 
  } 
  pgtk2_pop_n_elems(args); 
  pgtk2__init_this_object(); 
} 
 
void set_adjustment(GTK2.Adjustment adj); 
//! Sets the GTK2.Adjustment to be used as a model. 
 
void set_icons(array icons) 
//! Sets the icons to be used. 
{ 
    struct array *a; 
    int i,j; 
    const gchar **icons; 
 
    get_all_args(NULL,args,"%A",&a); 
    if (a==NULL || a->size<1) 
        Pike_error("Invalid array argument 1.\n"); 
    icons=g_new0(const gchar *,a->size+1); 
    for (i=j=0; i<a->size; i++) { 
        icons[j]=g_strdup(CGSTR0((ITEM(a)+i)->u.string)); 
        j++; 
    } 
    icons[j]=NULL; 
    gtk_scale_button_set_icons(GTK_SCALE_BUTTON(THIS->obj),icons); 
    for (i=0; icons[i]; i++) 
        g_free((gpointer *)icons[i]); 
    g_free(icons); 
    RETURN_THIS(); 
} 
 
void set_value(float val); 
//! Sets the current value of the scale; if the scale is outside the minimum 
//! or maximum range values, it will be clamped to fit inside them.  The 
//! button emits the "value-changed" signal if the value changes. 
 
+GTK2.Adjustment get_adjustment(); 
//! Returns the GTK2.Adjustment associated with this scale. 
 
float get_value(); 
//! Gets the current value. 
 
endrequire;