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" ,