Systematic use of tm_ostream class instead of ostream (removing dependency on std)
[texmacs.git] / src / src / Plugins / Widkit / wk_widget.hpp
blobc255b2c1d97e138b1f9affe8c7407f28825ceb6a
2 /******************************************************************************
3 * MODULE : wk_widget.hpp
4 * DESCRIPTION: Definition of abstract native widgets
5 * COPYRIGHT : (C) 1999 Joris van der Hoeven
6 *******************************************************************************
7 * This software falls under the GNU general public license version 3 or later.
8 * It comes WITHOUT ANY WARRANTY WHATSOEVER. For details, see the file LICENSE
9 * in the root directory or <http://www.gnu.org/licenses/gpl-3.0.html>.
10 ******************************************************************************/
12 #ifndef WK_WIDGET_H
13 #define WK_WIDGET_H
14 #include "widget.hpp"
15 #include "Widkit/event.hpp"
17 /******************************************************************************
18 * The abstract widkit implementation of widgets
19 ******************************************************************************/
21 class wk_widget;
22 class wk_widget_rep: public widget_rep {
23 public:
24 window win; // underlying window
25 SI ox, oy; // origin of widget in window
26 SI w, h; // width and height of widget
27 gravity grav; // position of the origin in the widget
28 array<wk_widget> a; // children of widget
29 array<string> name; // names for the children
31 wk_widget_rep (array<wk_widget> a, array<string> name, gravity grav);
32 ~wk_widget_rep ();
34 void send (slot s, blackbox val);
35 blackbox query (slot s, int type_id);
36 void notify (slot s, blackbox new_val);
37 widget read (slot s, blackbox index);
38 void write (slot s, blackbox index, widget w);
40 virtual operator tree () = 0;
41 virtual bool handle (event ev) = 0;
42 virtual bool is_window_widget ();
44 SI x1 (); SI y1 (); // lower left window coordinates of widget
45 SI x2 (); SI y2 (); // upper right window coordinates of widget
46 bool attached ();
47 void wk_error (string message);
49 friend class wk_widget;
52 class wk_widget {
53 public:
54 ABSTRACT_NULL(wk_widget);
55 inline wk_widget operator [] (int i) { return rep->a[i]; }
56 wk_widget operator [] (string s);
57 inline operator tree () { return (tree) (*rep); }
58 inline bool operator == (wk_widget w) { return rep == w.rep; }
59 inline bool operator != (wk_widget w) { return rep != w.rep; }
61 ABSTRACT_NULL_CODE(wk_widget);
63 inline widget abstract (wk_widget w) {
64 return widget (w.rep); }
65 inline wk_widget concrete (widget w) {
66 return wk_widget ((wk_widget_rep*) w.rep); }
67 array<widget> abstract (array<wk_widget> a);
68 array<wk_widget> concrete (array<widget> a);
70 tm_ostream& operator << (tm_ostream& out, wk_widget w);
71 wk_widget operator << (wk_widget w, event ev);
73 void wk_grab_pointer (wk_widget w);
74 void wk_ungrab_pointer (wk_widget w);
75 bool wk_has_pointer_grab (wk_widget w);
77 #define WK_FAILED(msg) { wk_error (msg); FAILED ("widget_error"); }
79 /******************************************************************************
80 * Exported special widgets and window widget destruction
81 ******************************************************************************/
83 wk_widget horizontal_list (array<wk_widget> a);
84 wk_widget horizontal_list (array<wk_widget> a, array<string> name);
85 wk_widget vertical_list (array<wk_widget> a);
86 wk_widget vertical_list (array<wk_widget> a, array<string> name);
87 wk_widget vertical_menu (array<wk_widget> a);
88 wk_widget tile (array<wk_widget> a, int cols);
89 wk_widget tile (array<wk_widget> a, int cols, array<string> name);
90 wk_widget horizontal_array (array<wk_widget> a, int stretch_me= -1);
91 wk_widget horizontal_array (array<wk_widget> a, array<string> s,
92 int stretch_me= -1);
93 wk_widget switch_widget (array<wk_widget> a, array<string> name, int init= 0);
94 wk_widget optional_widget (wk_widget w, bool on= true);
95 wk_widget glue_wk_widget (bool hx=true, bool vx=true, SI w=0, SI h=0);
96 wk_widget separator_wk_widget (SI pre=0, SI post=0, bool vert=false);
97 wk_widget text_wk_widget (string s, bool tsp= false, string lan="");
98 wk_widget menu_text_wk_widget (string s, color col, bool tsp=true,
99 string lan="", bool tt= false);
100 wk_widget xpm_wk_widget (url file_name, bool transp= true);
101 wk_widget command_button (wk_widget w, command cmd, bool button_flag= false);
102 wk_widget command_button (wk_widget lw, wk_widget rw, command cmd);
103 wk_widget command_button (wk_widget lw, wk_widget cw, wk_widget rw,
104 command cmd, bool e=true, bool c=false);
105 wk_widget pulldown_button (wk_widget w, wk_widget m, bool button_flag= false);
106 wk_widget pullright_button (wk_widget w, wk_widget m, bool button_flag= false);
107 wk_widget pulldown_button (wk_widget w, promise<wk_widget> pw);
108 wk_widget pullright_button (wk_widget w, promise<wk_widget> pw);
109 wk_widget popup_widget (wk_widget w, gravity quit=center);
110 wk_widget canvas_widget (wk_widget w, gravity grav=north_west);
111 wk_widget input_text_wk_widget (command call_back);
112 wk_widget input_text_wk_widget (command cb, string type, array<string> def);
113 wk_widget inputs_list_wk_widget (command call_back, array<string> prompts);
114 wk_widget file_chooser_wk_widget (command cmd, string type="texmacs",
115 string mgn="");
116 wk_widget balloon_widget (wk_widget w, wk_widget help);
117 wk_widget wait_wk_widget (SI w, SI h, string message);
118 wk_widget texmacs_wk_widget (int mask, command quit);
119 wk_widget plain_window_widget (wk_widget wid, string s);
120 wk_widget popup_window_widget (wk_widget wid, string s);
121 void destroy_window_widget (wk_widget w);
123 #endif // defined WK_WIDGET_H