Mercurial > audlegacy-plugins
comparison src/aosd/aosd_ui.c @ 906:16e51fb5908e trunk
[svn] - aosd: beta4, ghosd source was rewritten to support argb visual (x composite extension) as an option, this allows to have real transparency in the OSD
author | giacomo |
---|---|
date | Sat, 31 Mar 2007 17:44:23 -0700 |
parents | ca9907354db6 |
children | 8b4b381b4399 |
comparison
equal
deleted
inserted
replaced
905:987eebc33408 | 906:16e51fb5908e |
---|---|
782 return tri_hbox; | 782 return tri_hbox; |
783 } | 783 } |
784 | 784 |
785 | 785 |
786 static void | 786 static void |
787 aosd_cb_configure_misc_transp_commit ( GtkWidget * mis_transp_vbox , aosd_cfg_t * cfg ) | |
788 { | |
789 GList *child_list = gtk_container_get_children( GTK_CONTAINER(mis_transp_vbox) ); | |
790 while (child_list != NULL) | |
791 { | |
792 if ( gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON(child_list->data) ) ) | |
793 { | |
794 cfg->osd->misc.transparency_mode = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(child_list->data),"val")); | |
795 break; | |
796 } | |
797 child_list = g_list_next(child_list); | |
798 } | |
799 return; | |
800 } | |
801 | |
802 | |
803 static GtkWidget * | |
804 aosd_ui_configure_misc ( aosd_cfg_t * cfg , GList ** cb_list ) | |
805 { | |
806 GtkWidget *mis_vbox; | |
807 GtkWidget *mis_transp_frame, *mis_transp_vbox; | |
808 GtkWidget *mis_transp_fake_rbt, *mis_transp_real_rbt; | |
809 | |
810 mis_vbox = gtk_vbox_new( FALSE , 0 ); | |
811 gtk_container_set_border_width( GTK_CONTAINER(mis_vbox) , 6 ); | |
812 | |
813 mis_transp_vbox = gtk_vbox_new( FALSE , 0 ); | |
814 mis_transp_frame = gtk_frame_new( _("Transparency") ); | |
815 gtk_container_set_border_width( GTK_CONTAINER(mis_transp_vbox) , 6 ); | |
816 gtk_container_add( GTK_CONTAINER(mis_transp_frame) , mis_transp_vbox ); | |
817 gtk_box_pack_start( GTK_BOX(mis_vbox) , mis_transp_frame , FALSE , FALSE , 0 ); | |
818 | |
819 mis_transp_fake_rbt = gtk_radio_button_new_with_label( NULL , | |
820 _("Fake transparency") ); | |
821 mis_transp_real_rbt = gtk_radio_button_new_with_label_from_widget( GTK_RADIO_BUTTON(mis_transp_fake_rbt) , | |
822 _("Real transparency (requires X Composite Ext.)") ); | |
823 g_object_set_data( G_OBJECT(mis_transp_fake_rbt) , "val" , | |
824 GINT_TO_POINTER(AOSD_MISC_TRANSPARENCY_FAKE) ); | |
825 g_object_set_data( G_OBJECT(mis_transp_real_rbt) , "val" , | |
826 GINT_TO_POINTER(AOSD_MISC_TRANSPARENCY_REAL) ); | |
827 if ( cfg->osd->misc.transparency_mode == AOSD_MISC_TRANSPARENCY_FAKE ) | |
828 gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON(mis_transp_fake_rbt) , TRUE ); | |
829 else | |
830 gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON(mis_transp_real_rbt) , TRUE ); | |
831 gtk_box_pack_start( GTK_BOX(mis_transp_vbox) , mis_transp_fake_rbt , TRUE , TRUE , 0 ); | |
832 gtk_box_pack_start( GTK_BOX(mis_transp_vbox) , mis_transp_real_rbt , TRUE , TRUE , 0 ); | |
833 aosd_callback_list_add( cb_list , mis_transp_vbox , aosd_cb_configure_misc_transp_commit ); | |
834 | |
835 return mis_vbox; | |
836 } | |
837 | |
838 | |
839 static void | |
787 aosd_cb_configure_test ( gpointer cfg_win ) | 840 aosd_cb_configure_test ( gpointer cfg_win ) |
788 { | 841 { |
789 gchar *markup_message = NULL; | 842 gchar *markup_message = NULL; |
790 aosd_cfg_t *cfg = aosd_cfg_new(); | 843 aosd_cfg_t *cfg = aosd_cfg_new(); |
791 GList *cb_list = g_object_get_data( G_OBJECT(cfg_win) , "cblist" ); | 844 GList *cb_list = g_object_get_data( G_OBJECT(cfg_win) , "cblist" ); |
794 #ifdef DEBUG | 847 #ifdef DEBUG |
795 aosd_cfg_debug( cfg ); | 848 aosd_cfg_debug( cfg ); |
796 #endif | 849 #endif |
797 markup_message = g_markup_printf_escaped( | 850 markup_message = g_markup_printf_escaped( |
798 "<span font_desc='%s'>Audacious OSD</span>" , cfg->osd->text.fonts_name[0] ); | 851 "<span font_desc='%s'>Audacious OSD</span>" , cfg->osd->text.fonts_name[0] ); |
799 if ( plugin_is_active != TRUE ) | 852 aosd_osd_shutdown(); /* stop any displayed osd */ |
800 aosd_osd_init(); | 853 aosd_osd_cleanup(); /* just in case it's active */ |
854 aosd_osd_init( cfg->osd->misc.transparency_mode ); | |
801 aosd_osd_display( markup_message , cfg->osd , TRUE ); | 855 aosd_osd_display( markup_message , cfg->osd , TRUE ); |
802 g_free( markup_message ); | 856 g_free( markup_message ); |
803 aosd_cfg_delete( cfg ); | 857 aosd_cfg_delete( cfg ); |
804 return; | 858 return; |
805 } | 859 } |
809 aosd_cb_configure_cancel ( gpointer cfg_win ) | 863 aosd_cb_configure_cancel ( gpointer cfg_win ) |
810 { | 864 { |
811 GList *cb_list = g_object_get_data( G_OBJECT(cfg_win) , "cblist" ); | 865 GList *cb_list = g_object_get_data( G_OBJECT(cfg_win) , "cblist" ); |
812 aosd_callback_list_free( cb_list ); | 866 aosd_callback_list_free( cb_list ); |
813 aosd_osd_shutdown(); /* stop any displayed osd */ | 867 aosd_osd_shutdown(); /* stop any displayed osd */ |
814 if ( plugin_is_active != TRUE ) | 868 aosd_osd_cleanup(); /* just in case it's active */ |
815 aosd_osd_cleanup(); | 869 if ( plugin_is_active == TRUE ) |
870 aosd_osd_init( global_config->osd->misc.transparency_mode ); | |
816 gtk_widget_destroy( GTK_WIDGET(cfg_win) ); | 871 gtk_widget_destroy( GTK_WIDGET(cfg_win) ); |
817 return; | 872 return; |
818 } | 873 } |
819 | 874 |
820 | 875 |
825 aosd_cfg_t *cfg = aosd_cfg_new(); | 880 aosd_cfg_t *cfg = aosd_cfg_new(); |
826 GList *cb_list = g_object_get_data( G_OBJECT(cfg_win) , "cblist" ); | 881 GList *cb_list = g_object_get_data( G_OBJECT(cfg_win) , "cblist" ); |
827 aosd_callback_list_run( cb_list , cfg ); | 882 aosd_callback_list_run( cb_list , cfg ); |
828 cfg->set = TRUE; | 883 cfg->set = TRUE; |
829 aosd_osd_shutdown(); /* stop any displayed osd */ | 884 aosd_osd_shutdown(); /* stop any displayed osd */ |
830 if ( plugin_is_active != TRUE ) | 885 aosd_osd_cleanup(); /* just in case it's active */ |
831 aosd_osd_cleanup(); | |
832 | 886 |
833 if ( global_config != NULL ) | 887 if ( global_config != NULL ) |
834 { | 888 { |
835 /* plugin is active */ | 889 /* plugin is active */ |
836 aosd_trigger_stop( &global_config->osd->trigger ); /* stop triggers */ | 890 aosd_trigger_stop( &global_config->osd->trigger ); /* stop triggers */ |
837 aosd_cfg_delete( global_config ); /* delete old global_config */ | 891 aosd_cfg_delete( global_config ); /* delete old global_config */ |
838 global_config = cfg; /* put the new one */ | 892 global_config = cfg; /* put the new one */ |
839 aosd_cfg_save( cfg ); /* save the new configuration on config file */ | 893 aosd_cfg_save( cfg ); /* save the new configuration on config file */ |
894 aosd_osd_init( cfg->osd->misc.transparency_mode ); /* restart osd */ | |
840 aosd_trigger_start( &cfg->osd->trigger ); /* restart triggers */ | 895 aosd_trigger_start( &cfg->osd->trigger ); /* restart triggers */ |
841 } | 896 } |
842 else | 897 else |
843 { | 898 { |
844 /* plugin is not active */ | 899 /* plugin is not active */ |
930 /* add TRIGGER page */ | 985 /* add TRIGGER page */ |
931 cfg_trigger_widget = aosd_ui_configure_trigger( cfg , &cb_list ); | 986 cfg_trigger_widget = aosd_ui_configure_trigger( cfg , &cb_list ); |
932 gtk_notebook_append_page( GTK_NOTEBOOK(cfg_nb) , | 987 gtk_notebook_append_page( GTK_NOTEBOOK(cfg_nb) , |
933 cfg_trigger_widget , gtk_label_new( _("Trigger") ) ); | 988 cfg_trigger_widget , gtk_label_new( _("Trigger") ) ); |
934 | 989 |
990 /* add MISC page */ | |
991 cfg_trigger_widget = aosd_ui_configure_misc( cfg , &cb_list ); | |
992 gtk_notebook_append_page( GTK_NOTEBOOK(cfg_nb) , | |
993 cfg_trigger_widget , gtk_label_new( _("Misc") ) ); | |
994 | |
935 g_object_set_data( G_OBJECT(cfg_win) , "cblist" , cb_list ); | 995 g_object_set_data( G_OBJECT(cfg_win) , "cblist" , cb_list ); |
936 | 996 |
937 g_signal_connect_swapped( G_OBJECT(cfg_bbar_bt_test) , "clicked" , | 997 g_signal_connect_swapped( G_OBJECT(cfg_bbar_bt_test) , "clicked" , |
938 G_CALLBACK(aosd_cb_configure_test) , cfg_win ); | 998 G_CALLBACK(aosd_cb_configure_test) , cfg_win ); |
939 g_signal_connect_swapped( G_OBJECT(cfg_bbar_bt_cancel) , "clicked" , | 999 g_signal_connect_swapped( G_OBJECT(cfg_bbar_bt_cancel) , "clicked" , |