mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-06-21 14:11:20 +00:00
[PATCH] fix gconfig crash
I ran glade-2 on the glade file, fixed two missing stock icons and cleaned up the C code that inserts the single/split/full modes. The rest of the patch is minor cleanups only. I refrained from using all the included xpm icons in images.c (like qconf.cc does) in favour of using the stock Gtk+ icons instead. Oh, yes there was a "back" bug in split mode that I also removed, oh well... It has been tested with success by several people, including Jesper Juhl, Randy Dunlap and myself. Signed-off-by: Sam Ravnborg <sam@ravnborg.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
parent
2ac6608c41
commit
bafd2df5d0
2 changed files with 208 additions and 101 deletions
|
@ -178,17 +178,31 @@ const char *dbg_print_ptype(int val)
|
|||
}
|
||||
|
||||
|
||||
void replace_button_icon(GladeXML * xml, GdkDrawable * window,
|
||||
GtkStyle * style, gchar * btn_name, gchar ** xpm)
|
||||
{
|
||||
GdkPixmap *pixmap;
|
||||
GdkBitmap *mask;
|
||||
GtkToolButton *button;
|
||||
GtkWidget *image;
|
||||
|
||||
pixmap = gdk_pixmap_create_from_xpm_d(window, &mask,
|
||||
&style->bg[GTK_STATE_NORMAL],
|
||||
xpm);
|
||||
|
||||
button = GTK_TOOL_BUTTON(glade_xml_get_widget(xml, btn_name));
|
||||
image = gtk_image_new_from_pixmap(pixmap, mask);
|
||||
gtk_widget_show(image);
|
||||
gtk_tool_button_set_icon_widget(button, image);
|
||||
}
|
||||
|
||||
/* Main Window Initialization */
|
||||
|
||||
|
||||
void init_main_window(const gchar * glade_file)
|
||||
{
|
||||
GladeXML *xml;
|
||||
GtkWidget *widget;
|
||||
GtkTextBuffer *txtbuf;
|
||||
char title[256];
|
||||
GdkPixmap *pixmap;
|
||||
GdkBitmap *mask;
|
||||
GtkStyle *style;
|
||||
|
||||
xml = glade_xml_new(glade_file, "window1", NULL);
|
||||
|
@ -221,36 +235,22 @@ void init_main_window(const gchar * glade_file)
|
|||
style = gtk_widget_get_style(main_wnd);
|
||||
widget = glade_xml_get_widget(xml, "toolbar1");
|
||||
|
||||
pixmap = gdk_pixmap_create_from_xpm_d(main_wnd->window, &mask,
|
||||
&style->bg[GTK_STATE_NORMAL],
|
||||
(gchar **) xpm_single_view);
|
||||
gtk_image_set_from_pixmap(GTK_IMAGE
|
||||
(((GtkToolbarChild
|
||||
*) (g_list_nth(GTK_TOOLBAR(widget)->
|
||||
children,
|
||||
5)->data))->icon),
|
||||
pixmap, mask);
|
||||
pixmap =
|
||||
gdk_pixmap_create_from_xpm_d(main_wnd->window, &mask,
|
||||
&style->bg[GTK_STATE_NORMAL],
|
||||
(gchar **) xpm_split_view);
|
||||
gtk_image_set_from_pixmap(GTK_IMAGE
|
||||
(((GtkToolbarChild
|
||||
*) (g_list_nth(GTK_TOOLBAR(widget)->
|
||||
children,
|
||||
6)->data))->icon),
|
||||
pixmap, mask);
|
||||
pixmap =
|
||||
gdk_pixmap_create_from_xpm_d(main_wnd->window, &mask,
|
||||
&style->bg[GTK_STATE_NORMAL],
|
||||
(gchar **) xpm_tree_view);
|
||||
gtk_image_set_from_pixmap(GTK_IMAGE
|
||||
(((GtkToolbarChild
|
||||
*) (g_list_nth(GTK_TOOLBAR(widget)->
|
||||
children,
|
||||
7)->data))->icon),
|
||||
pixmap, mask);
|
||||
#if 0 /* Use stock Gtk icons instead */
|
||||
replace_button_icon(xml, main_wnd->window, style,
|
||||
"button1", (gchar **) xpm_back);
|
||||
replace_button_icon(xml, main_wnd->window, style,
|
||||
"button2", (gchar **) xpm_load);
|
||||
replace_button_icon(xml, main_wnd->window, style,
|
||||
"button3", (gchar **) xpm_save);
|
||||
#endif
|
||||
replace_button_icon(xml, main_wnd->window, style,
|
||||
"button4", (gchar **) xpm_single_view);
|
||||
replace_button_icon(xml, main_wnd->window, style,
|
||||
"button5", (gchar **) xpm_split_view);
|
||||
replace_button_icon(xml, main_wnd->window, style,
|
||||
"button6", (gchar **) xpm_tree_view);
|
||||
|
||||
#if 0
|
||||
switch (view_mode) {
|
||||
case SINGLE_VIEW:
|
||||
widget = glade_xml_get_widget(xml, "button4");
|
||||
|
@ -265,7 +265,7 @@ void init_main_window(const gchar * glade_file)
|
|||
g_signal_emit_by_name(widget, "clicked");
|
||||
break;
|
||||
}
|
||||
|
||||
#endif
|
||||
txtbuf = gtk_text_view_get_buffer(GTK_TEXT_VIEW(text_w));
|
||||
tag1 = gtk_text_buffer_create_tag(txtbuf, "mytag1",
|
||||
"foreground", "red",
|
||||
|
@ -322,7 +322,7 @@ void init_left_tree(void)
|
|||
gtk_tree_view_set_model(view, model1);
|
||||
gtk_tree_view_set_headers_visible(view, TRUE);
|
||||
gtk_tree_view_set_rules_hint(view, FALSE);
|
||||
|
||||
|
||||
column = gtk_tree_view_column_new();
|
||||
gtk_tree_view_append_column(view, column);
|
||||
gtk_tree_view_column_set_title(column, _("Options"));
|
||||
|
@ -334,11 +334,11 @@ void init_left_tree(void)
|
|||
renderer,
|
||||
"active", COL_BTNACT,
|
||||
"inconsistent", COL_BTNINC,
|
||||
"visible", COL_BTNVIS,
|
||||
"visible", COL_BTNVIS,
|
||||
"radio", COL_BTNRAD, NULL);
|
||||
renderer = gtk_cell_renderer_text_new();
|
||||
gtk_tree_view_column_pack_start(GTK_TREE_VIEW_COLUMN(column),
|
||||
renderer, FALSE);
|
||||
renderer, FALSE);
|
||||
gtk_tree_view_column_set_attributes(GTK_TREE_VIEW_COLUMN(column),
|
||||
renderer,
|
||||
"text", COL_OPTION,
|
||||
|
@ -386,7 +386,7 @@ void init_right_tree(void)
|
|||
renderer,
|
||||
"active", COL_BTNACT,
|
||||
"inconsistent", COL_BTNINC,
|
||||
"visible", COL_BTNVIS,
|
||||
"visible", COL_BTNVIS,
|
||||
"radio", COL_BTNRAD, NULL);
|
||||
/*g_signal_connect(G_OBJECT(renderer), "toggled",
|
||||
G_CALLBACK(renderer_toggled), NULL); */
|
||||
|
@ -806,7 +806,7 @@ void on_license1_activate(GtkMenuItem * menuitem, gpointer user_data)
|
|||
}
|
||||
|
||||
|
||||
void on_back_pressed(GtkButton * button, gpointer user_data)
|
||||
void on_back_clicked(GtkButton * button, gpointer user_data)
|
||||
{
|
||||
enum prop_type ptype;
|
||||
|
||||
|
@ -821,13 +821,13 @@ void on_back_pressed(GtkButton * button, gpointer user_data)
|
|||
}
|
||||
|
||||
|
||||
void on_load_pressed(GtkButton * button, gpointer user_data)
|
||||
void on_load_clicked(GtkButton * button, gpointer user_data)
|
||||
{
|
||||
on_load1_activate(NULL, user_data);
|
||||
}
|
||||
|
||||
|
||||
void on_save_pressed(GtkButton * button, gpointer user_data)
|
||||
void on_save_clicked(GtkButton * button, gpointer user_data)
|
||||
{
|
||||
on_save1_activate(NULL, user_data);
|
||||
}
|
||||
|
@ -850,9 +850,12 @@ void on_split_clicked(GtkButton * button, gpointer user_data)
|
|||
gtk_widget_show(tree1_w);
|
||||
gtk_window_get_default_size(GTK_WINDOW(main_wnd), &w, &h);
|
||||
gtk_paned_set_position(GTK_PANED(hpaned), w / 2);
|
||||
if (tree2)
|
||||
if (tree2)
|
||||
gtk_tree_store_clear(tree2);
|
||||
display_list();
|
||||
|
||||
/* Disable back btn, like in full mode. */
|
||||
gtk_widget_set_sensitive(back_btn, FALSE);
|
||||
}
|
||||
|
||||
|
||||
|
@ -868,13 +871,13 @@ void on_full_clicked(GtkButton * button, gpointer user_data)
|
|||
}
|
||||
|
||||
|
||||
void on_collapse_pressed(GtkButton * button, gpointer user_data)
|
||||
void on_collapse_clicked(GtkButton * button, gpointer user_data)
|
||||
{
|
||||
gtk_tree_view_collapse_all(GTK_TREE_VIEW(tree2_w));
|
||||
}
|
||||
|
||||
|
||||
void on_expand_pressed(GtkButton * button, gpointer user_data)
|
||||
void on_expand_clicked(GtkButton * button, gpointer user_data)
|
||||
{
|
||||
gtk_tree_view_expand_all(GTK_TREE_VIEW(tree2_w));
|
||||
}
|
||||
|
@ -1242,13 +1245,13 @@ static gchar **fill_row(struct menu *menu)
|
|||
row[COL_VALUE] =
|
||||
g_strdup(menu_get_prompt(def_menu));
|
||||
}
|
||||
if(sym->flags & SYMBOL_CHOICEVAL)
|
||||
if (sym->flags & SYMBOL_CHOICEVAL)
|
||||
row[COL_BTNRAD] = GINT_TO_POINTER(TRUE);
|
||||
|
||||
stype = sym_get_type(sym);
|
||||
switch (stype) {
|
||||
case S_BOOLEAN:
|
||||
if(GPOINTER_TO_INT(row[COL_PIXVIS]) == FALSE)
|
||||
if (GPOINTER_TO_INT(row[COL_PIXVIS]) == FALSE)
|
||||
row[COL_BTNVIS] = GINT_TO_POINTER(TRUE);
|
||||
if (sym_is_choice(sym))
|
||||
break;
|
||||
|
@ -1423,7 +1426,7 @@ static void update_tree(struct menu *src, GtkTreeIter * dst)
|
|||
child2);
|
||||
gtk_tree_store_remove(tree2, &tmp);
|
||||
if (!valid)
|
||||
return; // next parent
|
||||
return; // next parent
|
||||
else
|
||||
goto reparse; // next child
|
||||
} else
|
||||
|
@ -1448,7 +1451,7 @@ static void update_tree(struct menu *src, GtkTreeIter * dst)
|
|||
child2);
|
||||
gtk_tree_store_remove(tree2, &tmp);
|
||||
if (!valid)
|
||||
return; // next parent
|
||||
return; // next parent
|
||||
else
|
||||
goto reparse; // next child
|
||||
}
|
||||
|
@ -1486,12 +1489,12 @@ static void display_tree(struct menu *menu)
|
|||
if (sym)
|
||||
sym->flags &= ~SYMBOL_CHANGED;
|
||||
|
||||
if ((view_mode == SPLIT_VIEW) && !(child->flags & MENU_ROOT) &&
|
||||
(tree == tree1))
|
||||
if ((view_mode == SPLIT_VIEW)
|
||||
&& !(child->flags & MENU_ROOT) && (tree == tree1))
|
||||
continue;
|
||||
|
||||
if ((view_mode == SPLIT_VIEW) && (child->flags & MENU_ROOT) &&
|
||||
(tree == tree2))
|
||||
if ((view_mode == SPLIT_VIEW) && (child->flags & MENU_ROOT)
|
||||
&& (tree == tree2))
|
||||
continue;
|
||||
|
||||
if (menu_is_visible(child) || show_all)
|
||||
|
@ -1513,11 +1516,12 @@ static void display_tree(struct menu *menu)
|
|||
&& (tree == tree2))
|
||||
continue;
|
||||
/*
|
||||
if (((menu != &rootmenu) && !(menu->flags & MENU_ROOT)) ||
|
||||
(view_mode == FULL_VIEW)
|
||||
if (((menu != &rootmenu) && !(menu->flags & MENU_ROOT))
|
||||
|| (view_mode == FULL_VIEW)
|
||||
|| (view_mode == SPLIT_VIEW))*/
|
||||
if (((view_mode == SINGLE_VIEW) && (menu->flags & MENU_ROOT))
|
||||
|| (view_mode == FULL_VIEW) || (view_mode == SPLIT_VIEW)) {
|
||||
|| (view_mode == FULL_VIEW)
|
||||
|| (view_mode == SPLIT_VIEW)) {
|
||||
indent++;
|
||||
display_tree(child);
|
||||
indent--;
|
||||
|
@ -1530,9 +1534,9 @@ static void display_tree_part(void)
|
|||
{
|
||||
if (tree2)
|
||||
gtk_tree_store_clear(tree2);
|
||||
if(view_mode == SINGLE_VIEW)
|
||||
if (view_mode == SINGLE_VIEW)
|
||||
display_tree(current);
|
||||
else if(view_mode == SPLIT_VIEW)
|
||||
else if (view_mode == SPLIT_VIEW)
|
||||
display_tree(browsed);
|
||||
gtk_tree_view_expand_all(GTK_TREE_VIEW(tree2_w));
|
||||
}
|
||||
|
@ -1551,24 +1555,22 @@ static void display_list(void)
|
|||
|
||||
void fixup_rootmenu(struct menu *menu)
|
||||
{
|
||||
struct menu *child;
|
||||
static int menu_cnt = 0;
|
||||
struct menu *child;
|
||||
static int menu_cnt = 0;
|
||||
|
||||
menu->flags |= MENU_ROOT;
|
||||
for (child = menu->list; child; child = child->next) {
|
||||
if (child->prompt && child->prompt->type == P_MENU) {
|
||||
menu_cnt++;
|
||||
fixup_rootmenu(child);
|
||||
menu_cnt--;
|
||||
} else if (!menu_cnt)
|
||||
fixup_rootmenu(child);
|
||||
}
|
||||
menu->flags |= MENU_ROOT;
|
||||
for (child = menu->list; child; child = child->next) {
|
||||
if (child->prompt && child->prompt->type == P_MENU) {
|
||||
menu_cnt++;
|
||||
fixup_rootmenu(child);
|
||||
menu_cnt--;
|
||||
} else if (!menu_cnt)
|
||||
fixup_rootmenu(child);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* Main */
|
||||
|
||||
|
||||
int main(int ac, char *av[])
|
||||
{
|
||||
const char *name;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue