5
#include "ubuntu-tweak.h"
6
#include "session_page.h"
8
#include "compiz_page.h"
9
#include "gnome_page.h"
10
#include "nautilus_page.h"
11
#include "powermanager_page.h"
12
#include "security_page.h"
15
#define UT_LOGO PACKAGE_PIXMAPS_DIR"/ubuntu-tweak.png"
16
#define UT_BANNER PACKAGE_PIXMAPS_DIR"/banner.png"
17
#define UT_WELCOME PACKAGE_PIXMAPS_DIR"/welcome.png"
18
#define UT_STARTUP PACKAGE_PIXMAPS_DIR"/startup.png"
19
#define UT_DESKTOP PACKAGE_PIXMAPS_DIR"/desktop.png"
20
#define UT_ICON PACKAGE_PIXMAPS_DIR"/icon.png"
21
#define UT_COMPIZ PACKAGE_PIXMAPS_DIR"/compiz-fusion.png"
22
#define UT_GNOME PACKAGE_PIXMAPS_DIR"/gnome.png"
23
#define UT_NAUTILUS PACKAGE_PIXMAPS_DIR"/nautilus.png"
24
#define UT_SYSTEM PACKAGE_PIXMAPS_DIR"/system.png"
25
#define UT_POWER PACKAGE_PIXMAPS_DIR"/power-manager.png"
26
#define UT_SECURITY PACKAGE_PIXMAPS_DIR"/security.png"
27
#define UT_SECU_OPTIONS PACKAGE_PIXMAPS_DIR"/security-options.png"
28
#define UT_APPLICATION PACKAGE_PIXMAPS_DIR"/applications.png"
29
#define UT_SESSION PACKAGE_PIXMAPS_DIR"/session-properties.png"
73
{ITEM_FATHER,PAGE_WELCOME,UT_WELCOME,"欢迎使用"},
74
{ITEM_FATHER,PAGE_SATRUP,UT_STARTUP,"启动控制"},
75
{ITEM_CHILD,PAGE_SESSION,UT_SESSION,"会话控制"},
76
{ITEM_FATHER,PAGE_DESKTOP,UT_DESKTOP,"桌面设置"},
77
{ITEM_CHILD,PAGE_ICON,UT_ICON,"桌面图标"},
78
{ITEM_CHILD,PAGE_COMPIZ,UT_COMPIZ,"Compiz"},
79
{ITEM_CHILD,PAGE_GNOME,UT_GNOME,"GNOME设置"},
80
{ITEM_CHILD,PAGE_NAUTILUS,UT_NAUTILUS,"文件管理器"},
81
{ITEM_FATHER,PAGE_SYSTEM,UT_SYSTEM,"系统设置"},
82
{ITEM_CHILD,PAGE_POWER,UT_POWER,"高级电源管理"},
83
{ITEM_FATHER,PAGE_SECUTIRY,UT_SECURITY,"安全相关"},
84
{ITEM_CHILD,PAGE_SECU_OPTTIONS,UT_SECU_OPTIONS,"安全设置"},
85
{ITEM_FATHER,PAGE_APPLICATION,UT_APPLICATION,"应用程序"},
86
{ITEM_FATHER,NUM_PAGE,NULL,NULL}
89
static GtkWidget *notebook;
91
GtkWidget *create_notebook(void)
94
GtkWidget *vbox,*hbox;
95
GtkWidget *label,*page_label;
97
notebook=gtk_notebook_new();
98
gtk_notebook_set_tab_pos(GTK_NOTEBOOK(notebook),GTK_POS_TOP);
99
gtk_notebook_set_show_tabs(GTK_NOTEBOOK(notebook),FALSE);
101
/*no.1 page-welcome*/
102
label=gtk_label_new(NULL);
103
gtk_label_set_markup (GTK_LABEL (label),_("<span size=\"xx-large\">Welcome to <b>Ubuntu Tweak!</b></span>\n\n\nThis is a tool for Ubuntu which makes it easy to change hidden \n system and desktop settings.\n\nUbuntu Tweak is currently only for the GNOME Desktop Environment.\n\nAlthough this application is only in early stages, I will keep developing it.\n\nIf you have any suggestions, please e-mail me. \n\nThankyou,\n- TualatriX"));
104
gtk_label_set_justify(GTK_LABEL(label),GTK_JUSTIFY_FILL);
105
page_label=gtk_label_new("欢迎使用");
106
gtk_notebook_append_page(GTK_NOTEBOOK(notebook),label,page_label);
108
// label=gtk_label_new("欢迎进入启动控制");
109
hbox=gtk_hbox_new(FALSE,0);
110
label=gtk_tool_button_new_from_stock(GTK_STOCK_OK);
111
gtk_box_pack_start(GTK_BOX(hbox),label,FALSE,FALSE,0);
112
gtk_tool_button_set_label(GTK_TOOL_BUTTON(label),"hello");
113
label=gtk_tool_button_new_from_stock(GTK_STOCK_ABOUT);
114
gtk_box_pack_start(GTK_BOX(hbox),label,FALSE,FALSE,0);
115
page_label=gtk_label_new("启动控制");
116
gtk_notebook_append_page(GTK_NOTEBOOK(notebook),hbox,page_label);
118
vbox=create_session_page();
119
page_label=gtk_label_new("会话设置");
120
gtk_notebook_append_page(GTK_NOTEBOOK(notebook),vbox,page_label);
122
label=gtk_label_new("欢迎进入桌面设置");
123
page_label=gtk_label_new("桌面设置");
124
gtk_notebook_append_page(GTK_NOTEBOOK(notebook),label,page_label);
126
vbox=create_icon_page();
127
page_label=gtk_label_new("桌面图标");
128
gtk_notebook_append_page(GTK_NOTEBOOK(notebook),vbox,page_label);
130
vbox=create_compiz_page();
131
page_label=gtk_label_new("Compiz设置");
132
gtk_notebook_append_page(GTK_NOTEBOOK(notebook),vbox,page_label);
134
vbox=create_gnome_page();
135
page_label=gtk_label_new("GNOME");
136
gtk_notebook_append_page(GTK_NOTEBOOK(notebook),vbox,page_label);
138
vbox=create_nautilus_page();
139
page_label=gtk_label_new("nautilus");
140
gtk_notebook_append_page(GTK_NOTEBOOK(notebook),vbox,page_label);
142
label=gtk_label_new("系统设置");
143
page_label=gtk_label_new("欢迎进入系统设置");
144
gtk_notebook_append_page(GTK_NOTEBOOK(notebook),label,page_label);
146
vbox=create_powermanager_page();
147
page_label=gtk_label_new("powermanager");
148
gtk_notebook_append_page(GTK_NOTEBOOK(notebook),vbox,page_label);
150
label=gtk_label_new("安全设置");
151
page_label=gtk_label_new("欢迎进入安全设置");
152
gtk_notebook_append_page(GTK_NOTEBOOK(notebook),label,page_label);
154
vbox=create_disable_page();
155
page_label=gtk_label_new("security");
156
gtk_notebook_append_page(GTK_NOTEBOOK(notebook),vbox,page_label);
162
selection_cb(GtkTreeSelection *selection,
168
if(!gtk_tree_selection_get_selected(selection,NULL,&iter))
171
gtk_tree_model_get_value(model,&iter,
174
gtk_notebook_set_current_page(GTK_NOTEBOOK(notebook),g_value_get_int(&value));
176
g_value_unset(&value);
180
create_liststore(void)
183
GtkTreeIter child,iter;
185
GError *error = NULL;
188
store = gtk_tree_store_new(NUM_COLS, G_TYPE_INT, GDK_TYPE_PIXBUF, G_TYPE_STRING);
190
while(list[i].name != NULL)
192
if(list[i].tree_type == ITEM_FATHER)
194
icon = gdk_pixbuf_new_from_file(list[i].icon, &error);
198
gtk_tree_store_append(store,&iter,NULL);
199
gtk_tree_store_set(store,&iter,
200
COL_NUM,list[i].page_num,
202
COL_TEXT,list[i].name,
207
icon = gdk_pixbuf_new_from_file(list[i].icon, &error);
209
gtk_tree_store_append(store,&child,&iter);
210
gtk_tree_store_set(store,&child,
211
COL_NUM,list[i].page_num,
213
COL_TEXT,list[i].name,
224
create_treeview(void)
228
GtkTreeViewColumn *col;
229
GtkTreeSelection *selection;
230
GtkCellRenderer *renderer;
231
GtkWidget *tree_view;
233
model = GTK_TREE_MODEL(create_liststore());
234
tree_view = gtk_tree_view_new_with_model(model);
235
selection=gtk_tree_view_get_selection(GTK_TREE_VIEW(tree_view));
236
gtk_tree_selection_set_mode(GTK_TREE_SELECTION(selection),
237
GTK_SELECTION_BROWSE);
239
renderer = gtk_cell_renderer_text_new();
240
col=gtk_tree_view_column_new_with_attributes("num",renderer,
241
"text",COL_NUM,NULL);
242
gtk_tree_view_column_set_visible(col,FALSE);
243
gtk_tree_view_append_column(GTK_TREE_VIEW(tree_view), col);
245
col = gtk_tree_view_column_new();
246
gtk_tree_view_column_set_title(col, "Title");
248
renderer = gtk_cell_renderer_pixbuf_new();
249
gtk_tree_view_column_pack_start(col, renderer, FALSE);
250
gtk_tree_view_column_set_attributes(col, renderer,
253
renderer = gtk_cell_renderer_text_new();
254
gtk_tree_view_column_pack_start(col, renderer, TRUE);
255
gtk_tree_view_column_set_attributes(col, renderer,
259
gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(tree_view),FALSE);
260
gtk_tree_view_append_column(GTK_TREE_VIEW(tree_view), col);
262
gtk_tree_model_get_iter_first(GTK_TREE_MODEL(model),&iter);
263
gtk_tree_selection_select_iter(GTK_TREE_SELECTION(selection),&iter);
265
g_signal_connect(selection,"changed",G_CALLBACK(selection_cb),model);
267
gtk_widget_show_all(tree_view);
272
GtkWidget *create_main_window(void)
275
GtkWidget *tree_view;
276
GtkWidget *scrolled_window;
278
GtkWidget *vbox,*hbox;
281
gtk_window_set_default_icon_from_file(UT_LOGO,NULL);
282
/*创建主窗体,分别设置好窗口标题,默认尺寸,是否可调,默认放置位置,边框
285
window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
286
gtk_window_set_title(GTK_WINDOW(window),"Ubuntu Tweak!");
287
gtk_widget_set_size_request(GTK_WIDGET(window),650,680);
288
gtk_window_set_resizable(GTK_WINDOW(window),FALSE);
289
gtk_container_set_border_width(GTK_CONTAINER(window),10);
290
gtk_window_set_position(GTK_WINDOW(window),GTK_WIN_POS_CENTER);
291
g_signal_connect(window, "delete_event", gtk_main_quit, NULL);
294
vbox=gtk_vbox_new(FALSE,0);
295
gtk_container_add(GTK_CONTAINER(window),vbox);
298
banner=gtk_image_new_from_file(UT_BANNER);
299
gtk_box_pack_start(GTK_BOX(vbox),banner,FALSE,FALSE,0);
301
/*创建一个hbox,用于包装Tree View和Notebook*/
302
hbox=gtk_hbox_new(FALSE,5);
303
gtk_box_pack_start(GTK_BOX(vbox),hbox,TRUE,TRUE,0);
305
/*创建Tree View,将其包装进scrolled_window里,再装进hbox里*/
306
tree_view = create_treeview();
307
scrolled_window=gtk_scrolled_window_new(NULL,NULL);
308
gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolled_window),
310
GTK_POLICY_AUTOMATIC);
311
gtk_box_pack_start(GTK_BOX(hbox),scrolled_window,FALSE,FALSE,0);
312
gtk_container_add(GTK_CONTAINER(scrolled_window),tree_view);
314
/*创建notebook,包装进hbox里*/
315
notebook=create_notebook();
316
gtk_box_pack_start(GTK_BOX(hbox),notebook,TRUE,TRUE,0);
318
/*窗体下部的hbox,用于放置几个按钮*/
319
hbox=gtk_hbox_new(FALSE,5);
320
gtk_box_pack_start(GTK_BOX(vbox),hbox,FALSE,FALSE,5);
322
button=gtk_button_new_from_stock(GTK_STOCK_ABOUT);
323
g_signal_connect((button),"clicked",G_CALLBACK(show_about),NULL);
324
gtk_box_pack_start(GTK_BOX(hbox),button,FALSE,FALSE,0);
326
button=gtk_button_new_from_stock(GTK_STOCK_QUIT);
327
g_signal_connect(button,"clicked",G_CALLBACK(gtk_main_quit),NULL);
328
gtk_box_pack_end(GTK_BOX(hbox),button,FALSE,FALSE,0);
330
button=gtk_button_new_from_stock(GTK_STOCK_OK);
331
gtk_box_pack_end(GTK_BOX(hbox),button,FALSE,FALSE,0);