]> icculus.org git repositories - dana/obconf.git/blob - src/behavior.c
does this crash or is this better, mika?
[dana/obconf.git] / src / behavior.c
1 /* -*- indent-tabs-mode: nil; tab-width: 4; c-basic-offset: 4; -*-
2
3    behavior.h for ObConf, the configuration tool for Openbox
4    Copyright (c) 2003-2007   Dana Jansens
5    Copyright (c) 2003        Tim Riley
6
7    This program is free software; you can redistribute it and/or modify
8    it under the terms of the GNU General Public License as published by
9    the Free Software Foundation; either version 2 of the License, or
10    (at your option) any later version.
11
12    This program is distributed in the hope that it will be useful,
13    but WITHOUT ANY WARRANTY; without even the implied warranty of
14    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15    GNU General Public License for more details.
16
17    See the COPYING file for a copy of the GNU General Public License.
18 */
19
20 #include "main.h"
21 #include "tree.h"
22
23 static gboolean mapping = FALSE;
24
25 static void behavior_enable_stuff();
26
27 void behavior_setup_tab()
28 {
29     GtkWidget *w, *winresist, *edgeresist;
30     GtkSizeGroup *group;
31     gchar *s;
32
33     mapping = TRUE;
34
35     winresist  = get_widget("resist_window");
36     edgeresist = get_widget("resist_edge");
37     group      = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL);
38     gtk_size_group_add_widget(group, winresist);
39     gtk_size_group_add_widget(group, edgeresist);
40
41     winresist  = get_widget("resist_window_label");
42     edgeresist = get_widget("resist_edge_label");
43     group      = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL);
44     gtk_size_group_add_widget(group, winresist);
45     gtk_size_group_add_widget(group, edgeresist);
46
47     w = get_widget("focus_mouse");
48     gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(w),
49                                  tree_get_bool("focus/followMouse", FALSE));
50
51     w = get_widget("focus_delay");
52     gtk_spin_button_set_value(GTK_SPIN_BUTTON(w),
53                               tree_get_int("focus/focusDelay", 0));
54
55     w = get_widget("focus_raise");
56     gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(w),
57                                  tree_get_bool("focus/raiseOnFocus", FALSE));
58
59     w = get_widget("focus_last");
60     gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(w),
61                                  tree_get_bool("focus/focusLast", FALSE));
62
63     w = get_widget("focus_new");
64     gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(w),
65                                  tree_get_bool("focus/focusNew", TRUE));
66
67     w = get_widget("resize_contents");
68     gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(w),
69                                  tree_get_bool("resize/drawContents", TRUE));
70
71     w = get_widget("resist_window");
72     gtk_spin_button_set_value(GTK_SPIN_BUTTON(w),
73                               tree_get_int("resistance/strength", 10));
74
75     w = get_widget("resist_edge");
76     gtk_spin_button_set_value(GTK_SPIN_BUTTON(w),
77                               tree_get_int("resistance/screen_edge_strength",
78                                            20));
79
80     w = get_widget("place_mouse");
81     s = tree_get_string("placement/policy", "Smart");
82     gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(w),
83                                  !g_ascii_strcasecmp(s, "UnderMouse"));
84     g_free(s);
85
86     behavior_enable_stuff();
87
88     mapping = FALSE;
89 }
90
91 static void behavior_enable_stuff()
92 {
93     GtkWidget *w;
94     gboolean b;
95
96     w = get_widget("focus_mouse");
97     b = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(w));
98
99     w = get_widget("focus_delay");
100     gtk_widget_set_sensitive(w, b);
101     w = get_widget("focus_delay_label");
102     gtk_widget_set_sensitive(w, b);
103     w = get_widget("focus_delay_label_units");
104     gtk_widget_set_sensitive(w, b);
105     w = get_widget("focus_raise");
106     gtk_widget_set_sensitive(w, b);
107     w = get_widget("focus_last");
108     gtk_widget_set_sensitive(w, b);
109 }
110
111 void on_focus_mouse_toggled(GtkToggleButton *w, gpointer data)
112 {
113     gboolean b;
114
115     if (mapping) return;
116
117     b = gtk_toggle_button_get_active(w);
118     tree_set_bool("focus/followMouse", b);
119
120     behavior_enable_stuff();
121 }
122
123 void on_focus_delay_value_changed(GtkSpinButton *w, gpointer data)
124 {
125     if (mapping) return;
126
127     tree_set_int("focus/focusDelay",
128                  gtk_spin_button_get_value_as_int(w));
129 }
130
131 void on_focus_raise_toggled(GtkToggleButton *w, gpointer data)
132 {
133     if (mapping) return;
134
135     tree_set_bool("focus/raiseOnFocus", gtk_toggle_button_get_active(w));
136 }
137
138 void on_focus_last_toggled(GtkToggleButton *w, gpointer data)
139 {
140     if (mapping) return;
141
142     tree_set_bool("focus/focusLast", gtk_toggle_button_get_active(w));
143 }
144
145 void on_focus_new_toggled(GtkToggleButton *w, gpointer data)
146 {
147     if (mapping) return;
148
149     tree_set_bool("focus/focusNew", gtk_toggle_button_get_active(w));
150 }
151
152 void on_place_mouse_toggled(GtkToggleButton *w, gpointer data)
153 {
154     if (mapping) return;
155
156     tree_set_string("placement/policy",
157                     (gtk_toggle_button_get_active(w) ?
158                      "UnderMouse" : "Smart"));
159 }
160
161 void on_resist_window_value_changed(GtkSpinButton *w, gpointer data)
162 {
163     if (mapping) return;
164
165     tree_set_int("resistance/strength", gtk_spin_button_get_value_as_int(w));
166 }
167
168 void on_resist_edge_value_changed(GtkSpinButton *w, gpointer data)
169 {
170     if (mapping) return;
171
172     tree_set_int("resistance/screen_edge_strength",
173                  gtk_spin_button_get_value_as_int(w));
174 }
175
176 void on_resize_contents_toggled(GtkToggleButton *w, gpointer data)
177 {
178     if (mapping) return;
179
180     tree_set_bool("resize/drawContents", gtk_toggle_button_get_active(w));
181 }