eb05362005-11-05Henrik Grubbström (Grubba) /* -*- C -*- */
1a05542005-07-28Martin Nilsson class GTK2.Button; inherit GTK2.Bin;
27833d2009-11-16Per Hedbor inherit GTK2.Activatable;
1a05542005-07-28Martin Nilsson  //! A container that can only contain one child, and accepts events. //! draws a bevelbox around itself. //! IMG: GTK2.Button("A button") //! IMG: GTK2.Button("A button\nwith multiple lines\nof text")
27a6df2006-01-05Marcus Comstedt //! IMG: GTK2.Button()->add(GTK2.Image(GTK2.GdkImage(0)->set(Image.Image(100,40)->test())))
1a05542005-07-28Martin Nilsson  //! Properties: //! int focus-on-click //! GTK2.Widget image
f284492006-08-03Lance Dillon require gtk210; //! int image-position endrequire;
1a05542005-07-28Martin Nilsson //! string label //! int relief //! int use-stock //! int use-underline require gtk24; //! float xalign //! float yalign endrequire; //! <p> //! Style properties: //! int child-displacement-x //! int child-displacement-y //! GTK2.Border default-border //! GTK2.Border default-outside-border require gtk26; //! int displace-focus endrequire;
f284492006-08-03Lance Dillon //! int image-spacing require gtk210; //! int inner-border endrequire;
1a05542005-07-28Martin Nilsson  signal activate; signal pressed; //! Called when the button is pressed signal released; //! Called when the button is released signal clicked; //! Called when the button is pressed, and then released signal enter; //! Called when the mouse enters the button signal leave; //! Called when the mouse leaves the button
f284492006-08-03Lance Dillon void create(string|mapping(string:mixed)|void label_or_props)
1a05542005-07-28Martin Nilsson //! If a string is supplied, a W(Label) is created and added to the button. {
ba9e802006-02-27Martin Stjernholm  pgtk2_verify_not_inited(); pgtk2_verify_setup();
3d76632005-11-03Lance Dillon  if (args) {
017b572011-10-28Henrik Grubbström (Grubba)  if (TYPEOF(Pike_sp[-args]) == PIKE_T_STRING) {
3d76632005-11-03Lance Dillon  struct pike_string *t; GtkWidget *gb;
bf4a2a2006-02-02Lance Dillon  GtkStockItem item;
f104b32006-02-02Lance Dillon  int i=0;
bf4a2a2006-02-02Lance Dillon 
96f5f42018-08-05Martin Nilsson  get_all_args(NULL,args,"%T",&t);
c8c9812006-02-02Henrik Grubbström (Grubba)  if (t) { if (t->size_shift==0)
8edd582006-02-02Lance Dillon  i=gtk_stock_lookup(CGSTR0(t),&item);
c8c9812006-02-02Henrik Grubbström (Grubba)  if (i) gb=gtk_button_new_from_stock(CGSTR0(t)); else { ref_push_string(t); f_string_to_utf8(1);
bf4a2a2006-02-02Lance Dillon 
c8c9812006-02-02Henrik Grubbström (Grubba)  gb=gtk_button_new_with_label(CGSTR0(Pike_sp[-1].u.string)); pop_stack(); }
3d76632005-11-03Lance Dillon  } else gb=gtk_button_new(); THIS->obj=G_OBJECT(gb); } else { INIT_WITH_PROPS(GTK_TYPE_BUTTON); }
ba9e802006-02-27Martin Stjernholm  pgtk2_pop_n_elems(args);
1a05542005-07-28Martin Nilsson  } else {
3d76632005-11-03Lance Dillon  GtkWidget *gb; gb=gtk_button_new(); THIS->obj=G_OBJECT(gb);
1a05542005-07-28Martin Nilsson  }
ba9e802006-02-27Martin Stjernholm  pgtk2__init_this_object();
1a05542005-07-28Martin Nilsson } void pressed(); //! Emulate a 'press' event. void released(); //! Emulate a 'release' event. void clicked(); //! Emulate a 'clicked' event (press followed by release). void enter(); //! Emulate a 'enter' event. void leave(); //! Emulate a 'leave' event. void set_relief( int newstyle ); //! One of CONST(GTK_RELIEF) int get_relief(); //! One of CONST(GTK_RELIEF), set with set_relief() string get_label(); //! Get the text from the label of the button. void set_label(string label); //! Set the text of the label. int get_use_stock(); //! Returns whether the button label is a stock item. void set_use_stock(int use_stock); //! If true, the label set on the button is used as a stock id //! to select the stock item for the button. int get_use_underline(); //! Returns whether an embedded underline in the button indicates //! a mnemonic. void set_use_underline(int use_underline); //! If true, an underline in the text of the button label indicates the //! next character should be used for the mnemonic accelerator key. require gtk24; void set_focus_on_click(int focus_on_click); //! Sets whether the button will grab focus when it is clicked. int get_focus_on_click(); //! Returns whether the button grabs focus when it is clicked. void set_alignment(float xalign, float yalign); //! Sets the alignment of the child.
bf4a2a2006-02-02Lance Dillon  mapping get_alignment() //! Gets the alignment of the child. {
ba9e802006-02-27Martin Stjernholm  pgtk2_verify_inited(); pgtk2_pop_n_elems(args);
bf4a2a2006-02-02Lance Dillon  { gfloat xalign,yalign; gtk_button_get_alignment(GTK_BUTTON(THIS->obj),&xalign,&yalign); ref_push_string(_STR("xalign")); push_float(xalign); ref_push_string(_STR("yalign")); push_float(yalign); f_aggregate_mapping(4); } }
1a05542005-07-28Martin Nilsson endrequire; require gtk26; void set_image(GTK2.Widget widget); //! Set the image of the button to the given widget. Note that it depends on //! the gtk-button-images setting whether the image will be displayed or not.
f284492006-08-03Lance Dillon +GTK2.Widget get_image();
1a05542005-07-28Martin Nilsson //! Gets the widget that is currently set as the image of the button. endrequire;
f284492006-08-03Lance Dillon  require gtk210; void set_image_position(int position); //! Sets the position of the image relative to the text inside the button. int get_image_position(); //! Gets the position of the image relative to the text inside the button. endrequire;