Mercurial > audlegacy
changeset 2853:bec320cfcc12 trunk
use UiSkinnedButton instead of PButton in equalizerwin
author | Tomasz Mon <desowin@gmail.com> |
---|---|
date | Fri, 22 Jun 2007 17:23:58 +0200 |
parents | 22da7cd0eca0 |
children | 9f37fd52e7d0 |
files | src/audacious/ui_equalizer.c src/audacious/ui_equalizer.h src/audacious/ui_main.c src/audacious/ui_main.h src/audacious/ui_playlist.h src/audacious/ui_skinned_button.c src/audacious/ui_skinned_button.h |
diffstat | 7 files changed, 114 insertions(+), 83 deletions(-) [+] |
line wrap: on
line diff
--- a/src/audacious/ui_equalizer.c Sun Jun 17 16:53:40 2007 +0200 +++ b/src/audacious/ui_equalizer.c Fri Jun 22 17:23:58 2007 +0200 @@ -53,6 +53,7 @@ #include "images/audacious_eq.xpm" #include "ui_skinned_window.h" +#include "ui_skinned_button.h" enum PresetViewCols { PRESET_VIEW_COL_NAME, @@ -84,15 +85,13 @@ static TButton *equalizerwin_on, *equalizerwin_auto; -static PButton *equalizerwin_presets, *equalizerwin_shade; -PButton *equalizerwin_close; +static GtkWidget *equalizerwin_close, *equalizerwin_presets, *equalizerwin_shade; static EqGraph *equalizerwin_graph; static EqSlider *equalizerwin_preamp, *equalizerwin_bands[10]; static HSlider *equalizerwin_volume, *equalizerwin_balance; static GList *equalizer_presets = NULL, *equalizer_auto_presets = NULL; - EqualizerPreset * equalizer_preset_new(const gchar * name) { @@ -148,6 +147,13 @@ gdk_window_set_back_pixmap(equalizerwin->window, equalizerwin_bg, 0); } + GList *iter; + for (iter = GTK_FIXED (SKINNED_WINDOW(equalizerwin)->fixed)->children; iter; iter = g_list_next (iter)) { + GtkFixedChild *child_data = (GtkFixedChild *) iter->data; + GtkWidget *child = child_data->widget; + g_signal_emit_by_name(child, "toggle-double-size"); + } + draw_equalizer_window(TRUE); } @@ -161,20 +167,20 @@ if (shaded) { dock_shade(dock_window_list, GTK_WINDOW(equalizerwin), 14 * (EQUALIZER_DOUBLESIZE + 1)); - pbutton_set_button_data(equalizerwin_shade, -1, 3, -1, 47); - pbutton_set_skin_index1(equalizerwin_shade, SKIN_EQ_EX); - pbutton_set_button_data(equalizerwin_close, 11, 38, 11, 47); - pbutton_set_skin_index(equalizerwin_close, SKIN_EQ_EX); + ui_skinned_set_push_button_data(equalizerwin_shade, -1, 3, -1, 47); + ui_skinned_button_set_skin_index1(equalizerwin_shade, SKIN_EQ_EX); + ui_skinned_set_push_button_data(equalizerwin_close, 11, 38, 11, 47); + ui_skinned_button_set_skin_index(equalizerwin_close, SKIN_EQ_EX); widget_show(WIDGET(equalizerwin_volume)); widget_show(WIDGET(equalizerwin_balance)); } else { dock_shade(dock_window_list, GTK_WINDOW(equalizerwin), 116 * (EQUALIZER_DOUBLESIZE + 1)); - pbutton_set_button_data(equalizerwin_shade, -1, 137, -1, 38); - pbutton_set_skin_index1(equalizerwin_shade, SKIN_EQMAIN); - pbutton_set_button_data(equalizerwin_close, 0, 116, 0, 125); - pbutton_set_skin_index(equalizerwin_close, SKIN_EQMAIN); + ui_skinned_set_push_button_data(equalizerwin_shade, -1, 137, -1, 38); + ui_skinned_button_set_skin_index1(equalizerwin_shade, SKIN_EQMAIN); + ui_skinned_set_push_button_data(equalizerwin_close, 0, 116, 0, 125); + ui_skinned_button_set_skin_index(equalizerwin_close, SKIN_EQMAIN); widget_hide(WIDGET(equalizerwin_volume)); widget_hide(WIDGET(equalizerwin_balance)); } @@ -244,19 +250,7 @@ cfg.equalizer_autoload = toggled; } -void -draw_equalizer_window(gboolean force) -{ - GdkImage *img, *img2; - GList *wl; - Widget *w; - gboolean redraw; - - widget_list_lock(equalizerwin_wlist); - - if (force) { - skin_draw_pixmap(bmp_active_skin, equalizerwin_bg, SKINNED_WINDOW(equalizerwin)->gc, - SKIN_EQMAIN, 0, 0, 0, 0, 275, 116); +static void equalizerwin_draw_titlebar() { if (gtk_window_has_toplevel_focus(GTK_WINDOW(equalizerwin)) || !cfg.dim_titlebar) { if (!cfg.equalizer_shaded) @@ -277,8 +271,27 @@ skin_draw_pixmap(bmp_active_skin, equalizerwin_bg, SKINNED_WINDOW(equalizerwin)->gc, SKIN_EQ_EX, 0, 15, 0, 0, 275, 14); + } +} - } +void +draw_equalizer_window(gboolean force) +{ + GdkImage *img, *img2x; + GList *wl; + Widget *w; + gboolean redraw; + + if (!cfg.equalizer_visible) + return; + + widget_list_lock(equalizerwin_wlist); + + if (force) { + if (!cfg.equalizer_shaded) + skin_draw_pixmap(bmp_active_skin, equalizerwin_bg, SKINNED_WINDOW(equalizerwin)->gc, + SKIN_EQMAIN, 0, 0, 0, 0, 275, 116); + equalizerwin_draw_titlebar(); } widget_list_draw(equalizerwin_wlist, &redraw, force); @@ -287,10 +300,10 @@ if (cfg.doublesize && cfg.eq_doublesize_linked) { if (force) { img = gdk_drawable_get_image(equalizerwin_bg, 0, 0, 275, 116); - img2 = create_dblsize_image(img); + img2x = create_dblsize_image(img); gdk_draw_image(equalizerwin_bg_x2, SKINNED_WINDOW(equalizerwin)->gc, - img2, 0, 0, 0, 0, 550, 232); - g_object_unref(img2); + img2x, 0, 0, 0, 0, 550, 232); + g_object_unref(img2x); g_object_unref(img); } else { @@ -300,12 +313,12 @@ img = gdk_drawable_get_image(equalizerwin_bg, w->x, w->y, w->width, w->height); - img2 = create_dblsize_image(img); + img2x = create_dblsize_image(img); gdk_draw_image(equalizerwin_bg_x2, - SKINNED_WINDOW(equalizerwin)->gc, img2, 0, 0, + SKINNED_WINDOW(equalizerwin)->gc, img2x, 0, 0, w->x << 1, w->y << 1, w->width << 1, w->height << 1); - g_object_unref(img2); + g_object_unref(img2x); g_object_unref(img); w->redraw = FALSE; } @@ -314,7 +327,13 @@ } else widget_list_clear_redraw(equalizerwin_wlist); - gdk_window_clear(equalizerwin->window); + + GList *iter; + for (iter = GTK_FIXED (SKINNED_WINDOW(mainwin)->fixed)->children; iter; iter = g_list_next (iter)) { + GtkFixedChild *child_data = (GtkFixedChild *) iter->data; + GtkWidget *child = child_data->widget; + g_signal_emit_by_name(child, "redraw"); + } gdk_flush(); } @@ -418,10 +437,9 @@ if (dock_is_moving(GTK_WINDOW(equalizerwin))) { dock_move_release(GTK_WINDOW(equalizerwin)); } - else { - handle_release_cb(equalizerwin_wlist, widget, event); - draw_equalizer_window(FALSE); - } + + handle_release_cb(equalizerwin_wlist, widget, event); + draw_equalizer_window(FALSE); return FALSE; } @@ -431,8 +449,6 @@ GdkEvent * event, gpointer data) { - equalizerwin_close->pb_allow_draw = TRUE; - equalizerwin_shade->pb_allow_draw = TRUE; draw_equalizer_window(TRUE); return TRUE; } @@ -442,8 +458,6 @@ GdkEventButton * event, gpointer data) { - equalizerwin_close->pb_allow_draw = FALSE; - equalizerwin_shade->pb_allow_draw = FALSE; draw_equalizer_window(TRUE); return TRUE; } @@ -657,28 +671,21 @@ ui_skinned_window_widgetlist_associate(equalizerwin, WIDGET(equalizerwin_auto)); - equalizerwin_presets = - create_pbutton(&equalizerwin_wlist, equalizerwin_bg, - SKINNED_WINDOW(equalizerwin)->gc, 217, 18, 44, 12, 224, 164, 224, - 176, equalizerwin_presets_pushed, SKIN_EQMAIN); - ui_skinned_window_widgetlist_associate(equalizerwin, - WIDGET(equalizerwin_presets)); + equalizerwin_presets = ui_skinned_button_new(); + ui_skinned_push_button_setup(equalizerwin_presets, SKINNED_WINDOW(equalizerwin)->fixed, equalizerwin_bg, + SKINNED_WINDOW(equalizerwin)->gc, 217, 18, 44, 12, 224, 164, 224, 176, SKIN_EQMAIN); + g_signal_connect(equalizerwin_presets, "clicked", equalizerwin_presets_pushed, NULL ); - equalizerwin_close = - create_pbutton(&equalizerwin_wlist, equalizerwin_bg, - SKINNED_WINDOW(equalizerwin)->gc, 264, 3, 9, 9, 0, 116, 0, 125, - equalizerwin_close_cb, SKIN_EQMAIN); - equalizerwin_close->pb_allow_draw = FALSE; - ui_skinned_window_widgetlist_associate(equalizerwin, - WIDGET(equalizerwin_close)); + equalizerwin_close = ui_skinned_button_new(); + ui_skinned_push_button_setup(equalizerwin_close, SKINNED_WINDOW(equalizerwin)->fixed, equalizerwin_bg, + SKINNED_WINDOW(equalizerwin)->gc, 264, 3, 9, 9, 0, 116, 0, 125, SKIN_EQMAIN); + g_signal_connect(equalizerwin_close, "clicked", equalizerwin_close_cb, NULL ); - equalizerwin_shade = - create_pbutton_ex(&equalizerwin_wlist, equalizerwin_bg, - SKINNED_WINDOW(equalizerwin)->gc, 254, 3, 9, 9, 254, 137, 1, 38, - equalizerwin_shade_toggle, NULL, SKIN_EQMAIN, SKIN_EQ_EX); - equalizerwin_shade->pb_allow_draw = FALSE; - ui_skinned_window_widgetlist_associate(equalizerwin, - WIDGET(equalizerwin_shade)); + equalizerwin_shade = ui_skinned_button_new(); + ui_skinned_push_button_setup(equalizerwin_shade, SKINNED_WINDOW(equalizerwin)->fixed, equalizerwin_bg, + SKINNED_WINDOW(equalizerwin)->gc, 254, 3, 9, 9, 254, 137, 1, 38, SKIN_EQMAIN); + ui_skinned_button_set_skin_index2(equalizerwin_shade, SKIN_EQ_EX); + g_signal_connect(equalizerwin_shade, "clicked", equalizerwin_shade_toggle, NULL ); equalizerwin_graph = create_eqgraph(&equalizerwin_wlist, equalizerwin_bg, @@ -725,10 +732,10 @@ widget_hide(WIDGET(equalizerwin_balance)); } else { - pbutton_set_button_data(equalizerwin_shade, -1, 3, -1, 47); - pbutton_set_skin_index1(equalizerwin_shade, SKIN_EQ_EX); - pbutton_set_button_data(equalizerwin_close, 11, 38, 11, 47); - pbutton_set_skin_index(equalizerwin_close, SKIN_EQ_EX); + ui_skinned_set_push_button_data(equalizerwin_shade, -1, 3, -1, 47); + ui_skinned_button_set_skin_index1(equalizerwin_shade, SKIN_EQ_EX); + ui_skinned_set_push_button_data(equalizerwin_close, 11, 38, 11, 47); + ui_skinned_button_set_skin_index(equalizerwin_close, SKIN_EQ_EX); } } @@ -739,20 +746,20 @@ GdkPixbuf *icon; gint width, height; + width = 275; + height = cfg.equalizer_shaded ? 14 : 116; + equalizerwin = ui_skinned_window_new(GTK_WINDOW_TOPLEVEL, "equalizer"); gtk_window_set_title(GTK_WINDOW(equalizerwin), _("Audacious Equalizer")); gtk_window_set_role(GTK_WINDOW(equalizerwin), "equalizer"); - - width = 275; - height = cfg.equalizer_shaded ? 14 : 116; + gtk_window_set_resizable(GTK_WINDOW(equalizerwin), FALSE); if (cfg.doublesize && cfg.eq_doublesize_linked) { width *= 2; height *= 2; } - gtk_window_set_default_size(GTK_WINDOW(equalizerwin), width, height); - gtk_window_set_resizable(GTK_WINDOW(equalizerwin), FALSE); + gtk_widget_set_size_request(equalizerwin, width, height); /* this will hide only mainwin. it's annoying! yaz */ gtk_window_set_transient_for(GTK_WINDOW(equalizerwin), @@ -804,14 +811,8 @@ equalizerwin_bg = gdk_pixmap_new(equalizerwin->window, 275, 116, -1); equalizerwin_bg_x2 = gdk_pixmap_new(equalizerwin->window, 550, 232, -1); + equalizerwin_set_back_pixmap(); equalizerwin_create_widgets(); - - equalizerwin_set_back_pixmap(); - if (cfg.doublesize && cfg.eq_doublesize_linked) - gdk_window_set_back_pixmap(equalizerwin->window, - equalizerwin_bg_x2, 0); - else - gdk_window_set_back_pixmap(equalizerwin->window, equalizerwin_bg, 0); } @@ -841,9 +842,11 @@ gdk_flush(); draw_equalizer_window(TRUE); cfg.equalizer_visible = TRUE; - //FIXME: set mainwin_eq->inside as TRUE and redraw it + UI_SKINNED_BUTTON(mainwin_eq)->inside = TRUE; + g_signal_emit_by_name(mainwin_eq, "redraw"); - gtk_widget_show(equalizerwin); + gtk_widget_show_all(equalizerwin); + gtk_window_present(GTK_WINDOW(equalizerwin)); } void @@ -855,7 +858,8 @@ */ gtk_widget_hide(equalizerwin); cfg.equalizer_visible = FALSE; - //FIXME: set mainwin_eq->inside as FALSE and redraw it + UI_SKINNED_BUTTON(mainwin_eq)->inside = FALSE; + g_signal_emit_by_name(mainwin_eq, "redraw"); } static EqualizerPreset *
--- a/src/audacious/ui_equalizer.h Sun Jun 17 16:53:40 2007 +0200 +++ b/src/audacious/ui_equalizer.h Fri Jun 22 17:23:58 2007 +0200 @@ -58,7 +58,6 @@ gboolean equalizerwin_has_focus(void); extern GtkWidget *equalizerwin; -extern PButton *equalizerwin_close; extern gboolean equalizerwin_focus; #endif
--- a/src/audacious/ui_main.c Sun Jun 17 16:53:40 2007 +0200 +++ b/src/audacious/ui_main.c Fri Jun 22 17:23:58 2007 +0200 @@ -133,7 +133,8 @@ static GtkWidget *mainwin_eject; static GtkWidget *mainwin_play, *mainwin_pause, *mainwin_stop; -static GtkWidget *mainwin_shuffle, *mainwin_repeat, *mainwin_eq, *mainwin_pl; +static GtkWidget *mainwin_shuffle, *mainwin_repeat; +GtkWidget *mainwin_eq, *mainwin_pl; TextBox *mainwin_info; TextBox *mainwin_stime_min, *mainwin_stime_sec;
--- a/src/audacious/ui_main.h Sun Jun 17 16:53:40 2007 +0200 +++ b/src/audacious/ui_main.h Fri Jun 22 17:23:58 2007 +0200 @@ -98,6 +98,7 @@ extern gboolean mainwin_focus; extern GtkWidget *mainwin_jtf; +extern GtkWidget *mainwin_eq, *mainwin_pl; extern TextBox *mainwin_stime_min, *mainwin_stime_sec; extern TextBox *mainwin_info;
--- a/src/audacious/ui_playlist.h Sun Jun 17 16:53:40 2007 +0200 +++ b/src/audacious/ui_playlist.h Fri Jun 22 17:23:58 2007 +0200 @@ -75,8 +75,6 @@ extern GtkWidget *playlistwin; extern PlayList_List *playlistwin_list; -extern PButton *playlistwin_shade, *playlistwin_close; - extern gboolean playlistwin_focus; #endif
--- a/src/audacious/ui_skinned_button.c Sun Jun 17 16:53:40 2007 +0200 +++ b/src/audacious/ui_skinned_button.c Fri Jun 22 17:23:58 2007 +0200 @@ -482,3 +482,27 @@ button->redraw = TRUE; ui_skinned_button_paint(button); } + + +void ui_skinned_set_push_button_data(GtkWidget *button, gint nx, gint ny, gint px, gint py) { + UiSkinnedButton *b = UI_SKINNED_BUTTON(button); + if (nx > -1) b->nx = nx; + if (ny > -1) b->ny = ny; + if (px > -1) b->px = px; + if (py > -1) b->py = py; +} + +void ui_skinned_button_set_skin_index(GtkWidget *button, SkinPixmapId si) { + UiSkinnedButtonPrivate *priv = UI_SKINNED_BUTTON_GET_PRIVATE (button); + priv->skin_index1 = priv->skin_index2 = si; +} + +void ui_skinned_button_set_skin_index1(GtkWidget *button, SkinPixmapId si) { + UiSkinnedButtonPrivate *priv = UI_SKINNED_BUTTON_GET_PRIVATE (button); + priv->skin_index1 = si; +} + +void ui_skinned_button_set_skin_index2(GtkWidget *button, SkinPixmapId si) { + UiSkinnedButtonPrivate *priv = UI_SKINNED_BUTTON_GET_PRIVATE (button); + priv->skin_index2 = si; +}
--- a/src/audacious/ui_skinned_button.h Sun Jun 17 16:53:40 2007 +0200 +++ b/src/audacious/ui_skinned_button.h Fri Jun 22 17:23:58 2007 +0200 @@ -82,7 +82,11 @@ GType ui_skinned_button_get_type(void) G_GNUC_CONST; GtkWidget* ui_skinned_button_new(); void ui_skinned_push_button_setup(GtkWidget *button, GtkWidget *fixed, GdkPixmap * parent, GdkGC * gc, gint x, gint y, gint w, gint h, gint nx, gint ny, gint px, gint py, SkinPixmapId si); +void ui_skinned_set_push_button_data(GtkWidget *button, gint nx, gint ny, gint px, gint py); void ui_skinned_toggle_button_setup(GtkWidget *button, GtkWidget *fixed, GdkPixmap *parent, GdkGC *gc, gint x, gint y, gint w, gint h, gint nx, gint ny, gint px, gint py, gint pnx, gint pny, gint ppx, gint ppy, SkinPixmapId si); void ui_skinned_small_button_setup(GtkWidget *button, GtkWidget *fixed, GdkPixmap *parent, GdkGC *gc, gint x, gint y, gint w, gint h); +void ui_skinned_button_set_skin_index(GtkWidget *button, SkinPixmapId si); +void ui_skinned_button_set_skin_index1(GtkWidget *button, SkinPixmapId si); +void ui_skinned_button_set_skin_index2(GtkWidget *button, SkinPixmapId si); #endif