aboutsummaryrefslogtreecommitdiff
path: root/shell/shell.c
diff options
context:
space:
mode:
authorSimon Quigley <tsimonq2@ubuntu.com>2017-08-16 04:32:39 -0500
committerSimon Quigley <tsimonq2@ubuntu.com>2017-08-16 04:32:39 -0500
commit82306ca849c0710209e5a39754f446d0335a276d (patch)
tree8d297400e5c36357b9147401631e653e035283d3 /shell/shell.c
parent21a53faf18b01a65a341115000e97d70b37c750c (diff)
parent9a9db98089717990cd5e0eef529f6bb0819ebe46 (diff)
Updated version 0.5.1+git20170815 from 'upstream/0.5.1+git20170815'
with Debian dir 36bf8e7e43d9f6621a63c79a597af2f4f76271b7
Diffstat (limited to 'shell/shell.c')
-rw-r--r--shell/shell.c314
1 files changed, 217 insertions, 97 deletions
diff --git a/shell/shell.c b/shell/shell.c
index bf866e84..b81e77b6 100644
--- a/shell/shell.c
+++ b/shell/shell.c
@@ -284,9 +284,7 @@ void shell_view_set_enabled(gboolean setting)
shell_action_set_enabled("CopyAction", setting);
shell_action_set_enabled("ReportAction", setting);
shell_action_set_enabled("SyncManagerAction", setting && sync_manager_count_entries() > 0);
- shell_action_set_enabled("SaveGraphAction",
- setting ? shell->view_type ==
- SHELL_VIEW_PROGRESS : FALSE);
+
}
void shell_status_set_enabled(gboolean setting)
@@ -358,14 +356,18 @@ static ShellNote *note_new(void)
note->label = gtk_label_new("");
note->event_box = gtk_event_box_new();
button = gtk_button_new();
-
+
border_box = gtk_event_box_new();
gtk_container_set_border_width(GTK_CONTAINER(border_box), 1);
gtk_container_add(GTK_CONTAINER(note->event_box), border_box);
gtk_widget_show(border_box);
-
+
+#if GTK_CHECK_VERSION(3, 0, 0)
+ /* TODO:GTK3 css-based style */
+#else
gtk_widget_modify_bg(border_box, GTK_STATE_NORMAL, &info_default_fill_color);
gtk_widget_modify_bg(note->event_box, GTK_STATE_NORMAL, &info_default_border_color);
+#endif
icon = icon_cache_get_image("close.png");
gtk_widget_show(icon);
@@ -374,7 +376,11 @@ static ShellNote *note_new(void)
g_signal_connect(G_OBJECT(button), "clicked", (GCallback) close_note,
NULL);
+#if GTK_CHECK_VERSION(3, 0, 0)
+ hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 3);
+#else
hbox = gtk_hbox_new(FALSE, 3);
+#endif
icon = icon_cache_get_image("dialog-information.png");
gtk_box_pack_start(GTK_BOX(hbox), icon, FALSE, FALSE, 0);
@@ -395,7 +401,7 @@ void shell_set_title(Shell *shell, gchar *subtitle)
tmp = g_strdup_printf(_("%s - System Information"), subtitle);
gtk_window_set_title(GTK_WINDOW(shell->window), tmp);
-
+
g_free(tmp);
} else {
gtk_window_set_title(GTK_WINDOW(shell->window), _("System Information"));
@@ -415,14 +421,22 @@ static void create_window(void)
gtk_window_set_default_size(GTK_WINDOW(shell->window), 800, 600);
g_signal_connect(G_OBJECT(shell->window), "destroy", destroy_me, NULL);
+#if GTK_CHECK_VERSION(3, 0, 0)
+ vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0);
+#else
vbox = gtk_vbox_new(FALSE, 0);
+#endif
gtk_widget_show(vbox);
gtk_container_add(GTK_CONTAINER(shell->window), vbox);
shell->vbox = vbox;
menu_init(shell);
+#if GTK_CHECK_VERSION(3, 0, 0)
+ hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 5);
+#else
hbox = gtk_hbox_new(FALSE, 5);
+#endif
gtk_widget_show(hbox);
gtk_box_pack_end(GTK_BOX(vbox), hbox, FALSE, FALSE, 3);
@@ -432,23 +446,39 @@ static void create_window(void)
gtk_box_pack_end(GTK_BOX(hbox), shell->progress, FALSE, FALSE, 5);
shell->status = gtk_label_new("");
+#if GTK_CHECK_VERSION(3, 0, 0)
+ gtk_widget_set_valign(GTK_MISC(shell->status), GTK_ALIGN_CENTER);
+#else
gtk_misc_set_alignment(GTK_MISC(shell->status), 0.0, 0.5);
+#endif
gtk_widget_show(shell->status);
gtk_box_pack_start(GTK_BOX(hbox), shell->status, FALSE, FALSE, 5);
+#if GTK_CHECK_VERSION(3, 0, 0)
+ shell->hpaned = gtk_paned_new(GTK_ORIENTATION_HORIZONTAL);
+#else
shell->hpaned = gtk_hpaned_new();
+#endif
gtk_widget_show(shell->hpaned);
gtk_box_pack_end(GTK_BOX(vbox), shell->hpaned, TRUE, TRUE, 0);
gtk_paned_set_position(GTK_PANED(shell->hpaned), 210);
+#if GTK_CHECK_VERSION(3, 0, 0)
+ vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 5);
+#else
vbox = gtk_vbox_new(FALSE, 5);
+#endif
gtk_widget_show(vbox);
gtk_paned_add2(GTK_PANED(shell->hpaned), vbox);
shell->note = note_new();
gtk_box_pack_end(GTK_BOX(vbox), shell->note->event_box, FALSE, FALSE, 0);
+#if GTK_CHECK_VERSION(3, 0, 0)
+ shell->vpaned = gtk_paned_new(GTK_ORIENTATION_VERTICAL);
+#else
shell->vpaned = gtk_vpaned_new();
+#endif
gtk_box_pack_start(GTK_BOX(vbox), shell->vpaned, TRUE, TRUE, 0);
gtk_widget_show(shell->vpaned);
@@ -479,7 +509,7 @@ static void menu_item_set_icon_always_visible(Shell *shell,
{
GtkWidget *menuitem;
gchar *path;
-
+
path = g_strdup_printf("%s/%s", parent_path, item_id);
menuitem = gtk_ui_manager_get_widget(shell->ui_manager, path);
#if GTK_CHECK_VERSION(2, 18, 0)
@@ -533,7 +563,7 @@ static void add_module_to_menu(gchar * name, GdkPixbuf * pixbuf)
"/menubar/ViewMenu/LastSep",
name, name, GTK_UI_MANAGER_MENU, TRUE);
shell->merge_ids = g_slist_prepend(shell->merge_ids, GINT_TO_POINTER(merge_id));
-
+
merge_id = gtk_ui_manager_new_merge_id(shell->ui_manager);
gtk_ui_manager_add_ui(shell->ui_manager,
merge_id,
@@ -579,7 +609,7 @@ add_module_entry_to_view_menu(gchar * module, gchar * name,
shell->merge_ids = g_slist_prepend(shell->merge_ids, GINT_TO_POINTER(merge_id));
menu_item_set_icon_always_visible(shell, path, name);
-
+
g_free(path);
}
@@ -589,7 +619,7 @@ void shell_add_modules_to_gui(gpointer _shell_module, gpointer _shell_tree)
ShellTree *shelltree = (ShellTree *) _shell_tree;
GtkTreeStore *store = GTK_TREE_STORE(shelltree->model);
GtkTreeIter parent;
-
+
if (!module) {
return;
}
@@ -645,19 +675,28 @@ static void __tree_iter_destroy(gpointer data)
ShellSummary *summary_new(void)
{
ShellSummary *summary;
-
+
summary = g_new0(ShellSummary, 1);
summary->scroll = gtk_scrolled_window_new(NULL, NULL);
+#if GTK_CHECK_VERSION(3, 0, 0)
+ summary->view = gtk_box_new(GTK_ORIENTATION_VERTICAL, 5);
+#else
summary->view = gtk_vbox_new(FALSE, 5);
+#endif
summary->items = NULL;
gtk_container_set_border_width(GTK_CONTAINER(summary->view), 6);
gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(summary->scroll),
GTK_POLICY_AUTOMATIC,
GTK_POLICY_AUTOMATIC);
+#if GTK_CHECK_VERSION(3, 0, 0)
+ gtk_container_add(GTK_SCROLLED_WINDOW(summary->scroll),
+ summary->view);
+#else
gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(summary->scroll),
summary->view);
- gtk_widget_show_all(summary->scroll);
+#endif
+ gtk_widget_show_all(summary->scroll);
return summary;
}
@@ -684,7 +723,7 @@ void shell_init(GSList * modules)
shell->moreinfo = info_tree_new(TRUE);
shell->loadgraph = load_graph_new(75);
shell->summary = summary_new();
-
+
update_tbl = g_hash_table_new_full(g_str_hash, g_str_equal,
g_free, __tree_iter_destroy);
@@ -700,7 +739,7 @@ void shell_init(GSList * modules)
NULL);
gtk_notebook_append_page(GTK_NOTEBOOK(shell->notebook),
shell->summary->scroll, NULL);
-
+
gtk_notebook_set_show_tabs(GTK_NOTEBOOK(shell->notebook), FALSE);
gtk_notebook_set_show_border(GTK_NOTEBOOK(shell->notebook), FALSE);
@@ -723,10 +762,9 @@ void shell_init(GSList * modules)
shell_action_set_enabled("RefreshAction", FALSE);
shell_action_set_enabled("CopyAction", FALSE);
- shell_action_set_enabled("SaveGraphAction", FALSE);
shell_action_set_active("SidePaneAction", TRUE);
shell_action_set_active("ToolbarAction", TRUE);
-
+
#ifndef HAS_LIBSOUP
shell_action_set_enabled("SyncManagerAction", FALSE);
#else
@@ -738,21 +776,21 @@ static gboolean update_field(gpointer data)
{
ShellFieldUpdate *fu;
GtkTreeIter *iter;
-
+
fu = (ShellFieldUpdate *) data;
g_return_val_if_fail(fu != NULL, FALSE);
-
+
DEBUG("update_field [%s]", fu->field_name);
-
+
iter = g_hash_table_lookup(update_tbl, fu->field_name);
if (!iter) {
return FALSE;
}
-
+
/* if the entry is still selected, update it */
if (iter && fu->entry->selected && fu->entry->fieldfunc) {
GtkTreeStore *store = GTK_TREE_STORE(shell->info->model);
- gchar *value = fu->entry->fieldfunc(_(fu->field_name));
+ gchar *value = fu->entry->fieldfunc(fu->field_name);
/*
* this function is also used to feed the load graph when ViewType
@@ -761,7 +799,7 @@ static gboolean update_field(gpointer data)
if (shell->view_type == SHELL_VIEW_LOAD_GRAPH &&
gtk_tree_selection_iter_is_selected(shell->info->selection,
iter)) {
- load_graph_update(shell->loadgraph, atoi(value));
+ load_graph_update(shell->loadgraph, atof(value));
}
gtk_tree_store_set(store, iter, INFO_TREE_COL_VALUE, value, -1);
@@ -802,20 +840,31 @@ static gboolean update_field(gpointer data)
static gboolean reload_section(gpointer data)
{
ShellModuleEntry *entry = (ShellModuleEntry *) data;
+#if GTK_CHECK_VERSION(2, 14, 0)
+ GdkWindow *gdk_window = gtk_widget_get_window(GTK_WIDGET(shell->window));
+#endif
/* if the entry is still selected, update it */
if (entry->selected) {
GtkTreePath *path = NULL;
GtkTreeIter iter;
double pos_info_scroll, pos_more_scroll;
-
+
/* save current position */
+#if GTK_CHECK_VERSION(3, 0, 0)
+ /* TODO:GTK3 */
+#else
pos_info_scroll = RANGE_GET_VALUE(info, vscrollbar);
pos_more_scroll = RANGE_GET_VALUE(moreinfo, vscrollbar);
-
+#endif
+
/* avoid drawing the window while we reload */
+#if GTK_CHECK_VERSION(2, 14, 0)
+ gdk_window_freeze_updates(gdk_window);
+#else
gdk_window_freeze_updates(shell->window->window);
-
+#endif
+
/* gets the current selected path */
if (gtk_tree_selection_get_selected
(shell->info->selection, &shell->info->model, &iter)) {
@@ -835,12 +884,20 @@ static gboolean reload_section(gpointer data)
gtk_tree_path_free(path);
} else {
/* restore position */
+#if GTK_CHECK_VERSION(3, 0, 0)
+ /* TODO:GTK3 */
+#else
RANGE_SET_VALUE(info, vscrollbar, pos_info_scroll);
RANGE_SET_VALUE(moreinfo, vscrollbar, pos_more_scroll);
+#endif
}
-
+
/* make the window drawable again */
+#if GTK_CHECK_VERSION(2, 14, 0)
+ gdk_window_thaw_updates(gdk_window);
+#else
gdk_window_thaw_updates(shell->window->window);
+#endif
}
/* destroy the timeout: it'll be set up again */
@@ -892,15 +949,25 @@ info_tree_compare_val_func(GtkTreeModel * model,
static void set_view_type(ShellViewType viewtype, gboolean reload)
{
+#if GTK_CHECK_VERSION(2, 18, 0)
+ GtkAllocation* alloc;
+#endif
+
if (viewtype < SHELL_VIEW_NORMAL || viewtype >= SHELL_VIEW_N_VIEWS)
viewtype = SHELL_VIEW_NORMAL;
shell->normalize_percentage = TRUE;
shell->view_type = viewtype;
+ shell->_order_type = SHELL_ORDER_DESCENDING;
+
+ /* use an unsorted tree model */
+ GtkTreeSortable *sortable = GTK_TREE_SORTABLE(shell->info->model);
- /* reset to the default model */
+ gtk_tree_sortable_set_sort_column_id(sortable,
+ GTK_TREE_SORTABLE_UNSORTED_SORT_COLUMN_ID,
+ GTK_SORT_ASCENDING);
gtk_tree_view_set_model(GTK_TREE_VIEW(shell->info->view),
- shell->info->model);
+ GTK_TREE_MODEL(sortable));
/* reset to the default view columns */
if (!reload) {
@@ -909,13 +976,10 @@ static void set_view_type(ShellViewType viewtype, gboolean reload)
gtk_tree_view_column_set_visible(shell->info->col_progress, FALSE);
gtk_tree_view_column_set_visible(shell->info->col_value, TRUE);
}
-
+
/* turn off the rules hint */
gtk_tree_view_set_rules_hint(GTK_TREE_VIEW(shell->info->view), FALSE);
- /* turn off the save graphic action */
- shell_action_set_enabled("SaveGraphAction", FALSE);
-
close_note(NULL, NULL);
switch (viewtype) {
@@ -923,7 +987,7 @@ static void set_view_type(ShellViewType viewtype, gboolean reload)
case SHELL_VIEW_NORMAL:
gtk_widget_show(shell->info->scroll);
gtk_widget_hide(shell->notebook);
-
+
if (!reload) {
gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(shell->info->view), FALSE);
}
@@ -931,42 +995,57 @@ static void set_view_type(ShellViewType viewtype, gboolean reload)
case SHELL_VIEW_DUAL:
gtk_widget_show(shell->info->scroll);
gtk_widget_show(shell->moreinfo->scroll);
- gtk_notebook_set_page(GTK_NOTEBOOK(shell->notebook), 0);
- gtk_widget_show(shell->notebook);
+ gtk_notebook_set_current_page(GTK_NOTEBOOK(shell->notebook), 0);
+ gtk_widget_show(shell->notebook);
- gtk_paned_set_position(GTK_PANED(shell->vpaned),
- shell->hpaned->allocation.height / 2);
- break;
+#if GTK_CHECK_VERSION(2, 18, 0)
+ alloc = g_new(GtkAllocation, 1);
+ gtk_widget_get_allocation(shell->hpaned, alloc);
+ gtk_paned_set_position(GTK_PANED(shell->vpaned), alloc->height / 2);
+ g_free(alloc);
+#else
+ gtk_paned_set_position(GTK_PANED(shell->vpaned),
+ shell->hpaned->allocation.height / 2);
+#endif
+ break;
case SHELL_VIEW_LOAD_GRAPH:
gtk_widget_show(shell->info->scroll);
- gtk_notebook_set_page(GTK_NOTEBOOK(shell->notebook), 1);
- gtk_widget_show(shell->notebook);
- load_graph_clear(shell->loadgraph);
+ gtk_notebook_set_current_page(GTK_NOTEBOOK(shell->notebook), 1);
+ gtk_widget_show(shell->notebook);
+ load_graph_clear(shell->loadgraph);
- gtk_paned_set_position(GTK_PANED(shell->vpaned),
+#if GTK_CHECK_VERSION(2, 18, 0)
+ alloc = g_new(GtkAllocation, 1);
+ gtk_widget_get_allocation(shell->hpaned, alloc);
+ gtk_paned_set_position(GTK_PANED(shell->vpaned),
+ alloc->height - load_graph_get_height(shell->loadgraph) - 16);
+ g_free(alloc);
+#else
+ gtk_paned_set_position(GTK_PANED(shell->vpaned),
shell->hpaned->allocation.height -
- shell->loadgraph->height - 16);
+ load_graph_get_height(shell->loadgraph) - 16);
+#endif
+
break;
case SHELL_VIEW_PROGRESS_DUAL:
gtk_widget_show(shell->notebook);
gtk_widget_show(shell->moreinfo->scroll);
- gtk_notebook_set_page(GTK_NOTEBOOK(shell->notebook), 0);
+ gtk_notebook_set_current_page(GTK_NOTEBOOK(shell->notebook), 0);
/* fallthrough */
case SHELL_VIEW_PROGRESS:
gtk_widget_show(shell->info->scroll);
- shell_action_set_enabled("SaveGraphAction", TRUE);
-
+
if (!reload) {
gtk_tree_view_column_set_visible(shell->info->col_progress, TRUE);
gtk_tree_view_column_set_visible(shell->info->col_value, FALSE);
}
-
+
if (viewtype == SHELL_VIEW_PROGRESS)
gtk_widget_hide(shell->notebook);
break;
case SHELL_VIEW_SUMMARY:
- gtk_notebook_set_page(GTK_NOTEBOOK(shell->notebook), 2);
+ gtk_notebook_set_current_page(GTK_NOTEBOOK(shell->notebook), 2);
gtk_widget_show(shell->notebook);
gtk_widget_hide(shell->info->scroll);
@@ -1104,11 +1183,11 @@ group_handle_normal(GKeyFile * key_file, ShellModuleEntry * entry,
gchar *value;
GtkTreeIter child;
- value = g_key_file_get_value(key_file, group, key, NULL);
- if (entry->fieldfunc && value && g_str_equal(value, "...")) {
- g_free(value);
- value = entry->fieldfunc(_(key));
- }
+ value = g_key_file_get_value(key_file, group, key, NULL);
+ if (entry->fieldfunc && value && g_str_equal(value, "...")) {
+ g_free(value);
+ value = entry->fieldfunc(key);
+ }
if ((key && value) && g_utf8_validate(key, -1, NULL) && g_utf8_validate(value, -1, NULL)) {
if (ngroups == 1) {
@@ -1116,7 +1195,7 @@ group_handle_normal(GKeyFile * key_file, ShellModuleEntry * entry,
} else {
gtk_tree_store_append(store, &child, &parent);
}
-
+
/* FIXME: use g_key_file_get_string_list? */
if (g_utf8_strchr(value, -1, '|')) {
gchar **columns = g_strsplit(value, "|", 0);
@@ -1284,7 +1363,7 @@ void shell_clear_field_updates(void)
{
if (update_sfusrc) {
GSList *sfusrc;
-
+
for (sfusrc = update_sfusrc; sfusrc; sfusrc = sfusrc->next) {
ShellFieldUpdateSource *src =
(ShellFieldUpdateSource *) sfusrc->data;
@@ -1299,6 +1378,17 @@ void shell_clear_field_updates(void)
}
}
+static gboolean
+select_first_item(gpointer data)
+{
+ GtkTreeIter first;
+
+ if (gtk_tree_model_get_iter_first(shell->info->model, &first))
+ gtk_tree_selection_select_iter(shell->info->selection, &first);
+
+ return FALSE;
+}
+
static void
module_selected_show_info(ShellModuleEntry * entry, gboolean reload)
{
@@ -1308,12 +1398,19 @@ module_selected_show_info(ShellModuleEntry * entry, gboolean reload)
gboolean has_shell_param = FALSE;
gint i;
gsize ngroups;
+#if GTK_CHECK_VERSION(2, 14, 0)
+ GdkWindow *gdk_window = gtk_widget_get_window(GTK_WIDGET(shell->info->view));
+#endif
module_entry_scan(entry);
key_data = module_entry_function(entry);
/* */
+#if GTK_CHECK_VERSION(2, 14, 0)
+ gdk_window_freeze_updates(gdk_window);
+#else
gdk_window_freeze_updates(shell->info->view->window);
+#endif
g_object_ref(shell->info->model);
gtk_tree_view_set_model(GTK_TREE_VIEW(shell->info->view), NULL);
@@ -1325,7 +1422,7 @@ module_selected_show_info(ShellModuleEntry * entry, gboolean reload)
/* recreate the iter hash table */
h_hash_table_remove_all(update_tbl);
}
-
+
shell_clear_field_updates();
store = GTK_TREE_STORE(shell->info->model);
@@ -1353,18 +1450,22 @@ module_selected_show_info(ShellModuleEntry * entry, gboolean reload)
g_strfreev(keys);
}
-
+
/* */
if (!has_shell_param) {
gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(shell->info->view), FALSE);
}
-
+
/* */
g_object_unref(shell->info->model);
gtk_tree_view_set_model(GTK_TREE_VIEW(shell->info->view), shell->info->model);
gtk_tree_view_expand_all(GTK_TREE_VIEW(shell->info->view));
+#if GTK_CHECK_VERSION(2, 14, 0)
+ gdk_window_thaw_updates(gdk_window);
+#else
gdk_window_thaw_updates(shell->info->view->window);
+#endif
shell_set_note_from_entry(entry);
if (shell->view_type == SHELL_VIEW_PROGRESS || shell->view_type == SHELL_VIEW_PROGRESS_DUAL) {
@@ -1384,6 +1485,15 @@ module_selected_show_info(ShellModuleEntry * entry, gboolean reload)
g_strfreev(groups);
g_key_file_free(key_file);
g_free(key_data);
+
+ if (!reload) {
+ switch (shell->view_type) {
+ case SHELL_VIEW_DUAL:
+ case SHELL_VIEW_LOAD_GRAPH:
+ case SHELL_VIEW_PROGRESS_DUAL:
+ g_idle_add(select_first_item, NULL);
+ }
+ }
}
static void info_selected_show_extra(gchar * data)
@@ -1426,7 +1536,7 @@ static gchar *shell_summary_clear_value(gchar *value)
{
GKeyFile *keyfile;
gchar *return_value;
-
+
keyfile = g_key_file_new();
if (!value) return_value = g_strdup("");
else
@@ -1434,18 +1544,18 @@ static gchar *shell_summary_clear_value(gchar *value)
strlen(value), 0, NULL)) {
gchar **groups;
gint group;
-
+
return_value = g_strdup("");
-
+
groups = g_key_file_get_groups(keyfile, NULL);
for (group = 0; groups[group]; group++) {
gchar **keys;
gint key;
-
+
keys = g_key_file_get_keys(keyfile, groups[group], NULL, NULL);
for (key = 0; keys[key]; key++) {
gchar *temp = keys[key];
-
+
if (*temp == '$') {
temp++;
while (*temp && *temp != '$')
@@ -1458,17 +1568,17 @@ static gchar *shell_summary_clear_value(gchar *value)
keys[key], NULL);
}
}
-
+
g_strfreev(keys);
}
-
+
g_strfreev(groups);
} else {
return_value = g_strdup(value);
}
-
+
g_key_file_free(keyfile);
-
+
return g_strstrip(return_value);
}
@@ -1484,25 +1594,30 @@ static void shell_summary_add_item(ShellSummary *summary,
GtkWidget *content;
GtkWidget *alignment;
gchar *temp;
-
+
temp = shell_summary_clear_value(value);
-
+
/* creates the frame */
frame = gtk_frame_new(NULL);
gtk_frame_set_shadow_type(GTK_FRAME(frame),
GTK_SHADOW_NONE);
+#if GTK_CHECK_VERSION(3, 0, 0)
+ frame_label_box = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 5);
+#else
frame_label_box = gtk_hbox_new(FALSE, 5);
+#endif
frame_image = icon_cache_get_image(icon);
frame_label = gtk_label_new(name);
gtk_label_set_use_markup(GTK_LABEL(frame_label), TRUE);
gtk_box_pack_start(GTK_BOX(frame_label_box), frame_image, FALSE, FALSE, 0);
gtk_box_pack_start(GTK_BOX(frame_label_box), frame_label, FALSE, FALSE, 0);
+ /* TODO:GTK3 gtk_alignment_new(), etc is deprecated from 3.14 */
alignment = gtk_alignment_new(0.5, 0.5, 1, 1);
+ gtk_alignment_set_padding(GTK_ALIGNMENT(alignment), 0, 0, 48, 0);
gtk_widget_show(alignment);
gtk_container_add(GTK_CONTAINER(frame), alignment);
- gtk_alignment_set_padding(GTK_ALIGNMENT(alignment), 0, 0, 48, 0);
content = gtk_label_new(temp);
gtk_misc_set_alignment(GTK_MISC(content), 0.0, 0.5);
@@ -1510,29 +1625,29 @@ static void shell_summary_add_item(ShellSummary *summary,
gtk_widget_show_all(frame);
gtk_widget_show_all(frame_label_box);
-
+
gtk_frame_set_label_widget(GTK_FRAME(frame), frame_label_box);
-
+
/* pack the item on the summary screen */
gtk_box_pack_start(GTK_BOX(shell->summary->view), frame, FALSE, FALSE, 4);
/* add the item to the list of summary items */
summary->items = g_slist_prepend(summary->items, frame);
-
+
g_free(temp);
}
static void shell_summary_clear(ShellSummary *summary)
{
GSList *item;
-
+
for (item = summary->items; item; item = item->next) {
gtk_widget_destroy(GTK_WIDGET(item->data));
}
-
+
g_slist_free(summary->items);
summary->items = NULL;
-
+
if (summary->header) gtk_widget_destroy(summary->header);
summary->header = NULL;
}
@@ -1541,20 +1656,20 @@ static void shell_summary_create_header(ShellSummary *summary,
{
GtkWidget *header, *label;
gchar *temp;
-
+
temp = g_strdup_printf(_("<b>%s \342\206\222 Summary</b>"), title);
-
+
header = gtk_menu_item_new_with_label(temp);
gtk_menu_item_select(GTK_MENU_ITEM(header));
gtk_widget_show(header);
-
+
label = gtk_bin_get_child(GTK_BIN(header));
gtk_label_set_use_markup(GTK_LABEL(label), TRUE);
-
+
gtk_box_pack_start(GTK_BOX(shell->summary->view), header, FALSE, FALSE, 4);
-
+
summary->header = header;
-
+
g_free(temp);
}
@@ -1566,20 +1681,20 @@ static void shell_show_summary(void)
set_view_type(SHELL_VIEW_SUMMARY, FALSE);
shell_summary_clear(shell->summary);
shell_summary_create_header(shell->summary, shell->selected_module->name);
-
+
keyfile = g_key_file_new();
summary = shell->selected_module->summaryfunc();
-
+
if (g_key_file_load_from_data(keyfile, summary,
strlen(summary), 0, NULL)) {
gchar **groups;
gint group;
-
+
groups = g_key_file_get_groups(keyfile, NULL);
-
+
for (group = 0; groups[group]; group++) {
gchar *icon, *method, *method_result;
-
+
shell_status_pulse();
icon = g_key_file_get_string(keyfile, groups[group], "Icon", NULL);
@@ -1589,25 +1704,25 @@ static void shell_show_summary(void)
} else {
method_result = g_strdup("N/A");
}
-
+
shell_summary_add_item(shell->summary,
icon, groups[group], method_result);
shell_status_pulse();
-
+
g_free(icon);
g_free(method);
g_free(method_result);
}
-
+
g_strfreev(groups);
} else {
DEBUG("error while parsing summary");
set_view_type(SHELL_VIEW_NORMAL, FALSE);
- }
-
+ }
+
g_free(summary);
g_key_file_free(keyfile);
-
+
shell_view_set_enabled(TRUE);
}
@@ -1619,6 +1734,7 @@ static void module_selected(gpointer data)
ShellModuleEntry *entry;
static ShellModuleEntry *current = NULL;
static gboolean updating = FALSE;
+ GtkScrollbar *hscrollbar, *vscrollbar;
/* Gets the currently selected item on the left-side TreeView; if there is no
selection, silently return */
@@ -1626,7 +1742,7 @@ static void module_selected(gpointer data)
return;
}
- /* Mark the currently selected module as "unselected"; this is used to kill the
+ /* Mark the currently selected module as "unselected"; this is used to kill the
update timeout. */
if (current) {
current->selected = FALSE;
@@ -1641,7 +1757,7 @@ static void module_selected(gpointer data)
if (!gtk_tree_model_iter_parent(model, &parent, &iter)) {
memcpy(&parent, &iter, sizeof(iter));
}
-
+
gtk_tree_model_get(model, &parent, TREE_COL_MODULE, &shell->selected_module, -1);
/* Get the current selection and shows its related info */
@@ -1655,15 +1771,19 @@ static void module_selected(gpointer data)
entry->selected = TRUE;
shell->selected = entry;
module_selected_show_info(entry, FALSE);
-
+
info_selected_show_extra(NULL); /* clears the more info store */
gtk_tree_view_columns_autosize(GTK_TREE_VIEW(shell->info->view));
/* urgh. why don't GTK do this when the model is cleared? */
+#if GTK_CHECK_VERSION(3, 0, 0)
+ /* TODO:GTK3 */
+#else
RANGE_SET_VALUE(info, vscrollbar, 0.0);
RANGE_SET_VALUE(info, hscrollbar, 0.0);
RANGE_SET_VALUE(moreinfo, vscrollbar, 0.0);
RANGE_SET_VALUE(moreinfo, hscrollbar, 0.0);
+#endif
title = g_strdup_printf("%s - %s", shell->selected_module->name, entry->name);
shell_set_title(shell, title);
@@ -1700,7 +1820,7 @@ static void info_selected(GtkTreeSelection * ts, gpointer data)
if (!gtk_tree_selection_get_selected(ts, &model, &parent))
return;
-
+
if (shell->view_type == SHELL_VIEW_NORMAL ||
shell->view_type == SHELL_VIEW_PROGRESS) {
gtk_tree_selection_unselect_all(ts);