diff options
Diffstat (limited to 'mate-volume-control')
110 files changed, 36844 insertions, 0 deletions
diff --git a/mate-volume-control/AUTHORS b/mate-volume-control/AUTHORS new file mode 100644 index 0000000..3f6dd9e --- /dev/null +++ b/mate-volume-control/AUTHORS @@ -0,0 +1,2 @@ +William Jon McCann <[email protected]> +Bastien Nocera <[email protected]> diff --git a/mate-volume-control/ChangeLog.pre-2-26 b/mate-volume-control/ChangeLog.pre-2-26 new file mode 100644 index 0000000..8b38808 --- /dev/null +++ b/mate-volume-control/ChangeLog.pre-2-26 @@ -0,0 +1,1245 @@ +2009-03-16 Marc-André Lureau <[email protected]> + + * src/Makefile.am (*_SOURCES): Fix make dist. Include gvc-log.h. + +2009-03-12 Bastien Nocera <[email protected]> + + * src/gvc-stream-status-icon.c (on_stream_decibel_notify), + (gvc_stream_status_icon_set_mixer_stream): Also update the + tooltip when decibels change, fixes the dB value pretty much + always being wrong (the code notifies of the changed dB after the + changed volume) (Closes: #575093) + +2009-03-12 Bastien Nocera <[email protected]> + + * src/gvc-balance-bar.c (_scale_box_new), + (gvc_balance_bar_set_balance_type), (gvc_balance_bar_set_property), + (gvc_balance_bar_class_init), (on_adjustment_value_changed), + (gvc_balance_bar_init), (gvc_balance_bar_new): Fix use of the + zero_adjustment GtkAdjustment in slider callbacks, export + gvc_channel_bar_scroll + * src/gvc-balance-bar.h: Export gvc_channel_bar_scroll + + * src/gvc-stream-status-icon.c (on_status_icon_scroll_event): + Use gvc_channel_bar_scroll instead of our own code + + (Closes: #564313) + +2009-03-06 Matthias Clasen <[email protected]> + + * src/applet-main.c: + * src/dialog-main.c: Wire up --debug + + * src/gvc-log.[hc]: Add some trivial logging infrastructure + + * src/Makefile.am: Add gvc-log.c + +2009-03-04 Bastien Nocera <[email protected]> + + * src/Makefile.am: Link to libsoundtheme.la, not using + -l against a static lib + +==================== 2.25.92 ==================== + +2009-02-23 Matthias Clasen <[email protected]> + + Bug 572665 – update sensitivity of input feedback checkbox + + * src/gvc-sound-theme-chooser.c (update_theme): Make the window + and button sounds button insensitive too. + +2009-02-18 Bastien Nocera <[email protected]> + + * src/gvc-balance-bar.c (_scale_box_new), + (on_scale_button_press_event), (on_scale_button_release_event), + (on_scale_scroll_event): Make the balance bar instant-apply + (Closes: #566423) + +2009-02-18 Bastien Nocera <[email protected]> + + * src/gvc-stream-status-icon.c (popup_dock): Fix warning + +2009-02-18 Bastien Nocera <[email protected]> + + * src/gvc-stream-status-icon.c (popup_dock), + (gvc_stream_status_icon_constructor): Patch from Yanko Kaneti + <[email protected]> to fix the dock showing up off-screen + when the applet is at the bottom of the screen and is popped + up for the first time (Closes: #564312) + +2009-02-17 Bastien Nocera <[email protected]> + + * src/gvc-mixer-control.c (update_source): Don't filter out + non-hardware sources, only ignore sink monitors + +2009-02-17 Bastien Nocera <[email protected]> + + * src/gvc-mixer-control.c (update_sink): Don't filter out + sinks with PA_SINK_HARDWARE, otherwise things like network sinks + (Airport Express?) won't show up in the volume capplet + +2009-02-17 Bastien Nocera <[email protected]> + + * src/gvc-channel-bar.c (on_scale_scroll_event), + (gvc_channel_bar_set_is_amplified), (gvc_channel_bar_set_property), + (gvc_channel_bar_get_property), (gvc_channel_bar_class_init), + (gvc_channel_bar_init): + * src/gvc-channel-bar.h: Add "is-amplified" property. In this mode, + the volume can be set above 100% (150% tops actually) for inputs + that support giving us the dB information + * src/gvc-mixer-dialog.c (on_mixer_control_default_source_changed), + (add_stream): Disconnect the value-changed signal, and + reconnect it when we're done setting is_amplified for source streams + that support giving dB info + (Closes: #567536) + +2009-02-17 Bastien Nocera <[email protected]> + + * src/gvc-channel-map.c (gvc_channel_map_can_balance), + (set_from_pa_map): + * src/gvc-channel-map.h: Add API to detect whether a channel + map supports balancing + * src/gvc-mixer-dialog.c (update_output_settings): De-sensitivise + the balance bar if the output doesn't support balacing + +2009-02-17 Bastien Nocera <[email protected]> + + * src/gvc-balance-bar.c (on_adjustment_value_changed): + Remove fixed FIXME + +2009-02-17 Bastien Nocera <[email protected]> + + * src/applet-main.c: Remove unused macro + +2009-02-12 Bastien Nocera <[email protected]> + + * src/gvc-mixer-control.c (gvc_stream_collate): Fix run-time + warning when there's no name for a stream, such as some events + from libcanberra + +2009-02-12 Bastien Nocera <[email protected]> + + * src/dialog-main.c (on_control_ready), (warning_dialog_answered), + (dialog_popup_timeout), (main): When PulseAudio isn't running, + or takes a long time to connect to, popup a dialogue telling + the user what we're waiting for, and the ability to cancel + (Closes: #566835) + +2009-02-11 Bastien Nocera <[email protected]> + + * src/applet-main.c (main): Use libunique instead of D-Bus + and refuse to run if an applet is already running + * src/dialog-main.c (message_received_cb), (on_control_ready), + (main): present the application when it's already running + (Closes: #542727) + +2009-02-11 Bastien Nocera <[email protected]> + + * src/gvc-channel-bar.c (on_scale_button_release_event): + * src/gvc-sound-theme-chooser.c (play_preview_for_path): + * src/gvc-sound-theme-editor.c (play_sound_preview), + (play_sound_at_path): Don't call ca_gtk_context_get () when + we're not going to use the returned context, set the + application id for all the calls to ca_gtk_play_*() + +2009-02-10 Bastien Nocera <[email protected]> + + * src/gvc-mixer-dialog.c (gvc_mixer_dialog_constructor): + Correct the label to mention that there are no recording apps as well + (Closes: #568900) + +2009-02-10 Bastien Nocera <[email protected]> + + * data/Makefile.am: Install the applet's desktop file in the + xdg autostart directory (Closes: #570114) + +2009-02-10 Bastien Nocera <[email protected]> + + * src/gvc-mixer-control.c (update_source_output): + * src/gvc-mixer-dialog.c (add_stream): Show recording applications + in addition to playback applications, use the microphone icon + for those applications (Closes: #568900) + +2009-02-10 Bastien Nocera <[email protected]> + + * src/gvc-applet.c (maybe_show_status_icons): + * src/gvc-mixer-control.c (set_application_id_from_proplist), + (update_sink_input), (update_source_output): + * src/gvc-mixer-dialog.c (create_monitor_stream_for_source): + * src/gvc-mixer-stream.c (gvc_mixer_stream_get_application_id), + (gvc_mixer_stream_set_application_id), + (gvc_mixer_stream_set_property), (gvc_mixer_stream_get_property), + (gvc_mixer_stream_class_init), (gvc_mixer_stream_finalize): + * src/gvc-mixer-stream.h: Set the org.mate.VolumeControl application + ID for the input peak monitor, and ignore it when checking whether + an application is using the input. Also ignore Pavucontrol. + Stops the microphone showing up in the applet when the capplet is + running (Closes: #565146) + +2009-02-10 Bastien Nocera <[email protected]> + + * src/gvc-applet.c (maybe_show_status_icons): Revert accidentally + committing the rejected patch for bug #565146 + +2009-01-26 Bastien Nocera <[email protected]> + + * src/gvc-balance-bar.c (gvc_balance_bar_init): Make sure the balance + bar stays Left to Right, so that the Left balance is really on the + left + +2009-01-26 Bastien Nocera <[email protected]> + + * src/gvc-balance-bar.c (_scale_box_new), (gvc_balance_bar_init): + Patch from Luca Ferretti <[email protected]>, to use the new GTK+ + scale marks for the balance widget (Closes: #565144) + +2009-01-26 Bastien Nocera <[email protected]> + + * src/dialog-main.c (on_dialog_response), (on_dialog_close): + Use gtk_main_quit () instead of exit (), so that all the + objects are unref'ed cleanly + +2009-01-26 Bastien Nocera <[email protected]> + + * src/dialog-main.c (on_dialog_response), (on_dialog_close), + (on_control_ready): Exit when Esc is pressed + +2009-01-26 Bastien Nocera <[email protected]> + + * src/gvc-level-bar.c (gvc_level_bar_finalize): + Remove any lingering timeouts when finalizing the object + +2009-01-26 Bastien Nocera <[email protected]> + + * src/Makefile.am: Fix automake warning + + * src/gvc-applet.c (maybe_show_status_icons): + * src/gvc-mixer-dialog.c (gvc_mixer_dialog_constructor): + * src/gvc-stream-status-icon.c (on_status_icon_scroll_event), + (update_icon), (gvc_stream_status_icon_init): Remove ifdef's + from the volume control code, as GTK+ 2.15.1 is now required + (Closes: #564318) + +2009-01-24 Luca Ferretti <[email protected]> + + * data/mate-volume-control.desktop.in.in: + Icon name is mate-volume-control, not mate-sound-properties. + +2009-01-23 Bastien Nocera <[email protected]> + + * data/icons/16x16/apps/Makefile.am: + * data/icons/22x22/apps/Makefile.am: + * data/icons/24x24/apps/Makefile.am: + * data/icons/32x32/apps/Makefile.am: + * data/icons/48x48/apps/Makefile.am: + * data/icons/scalable/apps/Makefile.am: + Install the application icon in the global + icon theme, not in our private directory + (Closes: #568635) + + * data/icons/Makefile.am: Don't run gtk-update-icon-cache + for a private icons directory + +2009-01-20 Bastien Nocera <[email protected]> + + * data/Makefile.am: + * data/icons/48x48/apps/Makefile.am: + * data/icons/Makefile.am: + * src/Makefile.am: Fix distcheck + +2009-01-20 Bastien Nocera <[email protected]> + + * src/gvc-channel-bar.c (_scale_box_new), + (on_scale_button_press_event), (on_scale_button_release_event), + (on_scale_scroll_event), (gvc_channel_bar_init): Move the + setup of the press and release button events to _scale_box_new(), + otherwise it's not handled with horizontal scales. + When scrolling with the mouse wheel, swap the up/down directions + to work as expected (Closes: #567034) + +2009-01-20 Bastien Nocera <[email protected]> + + * src/gvc-mixer-control.c (set_is_event_stream_from_proplist), + (update_sink_input): + * src/gvc-mixer-stream.c (gvc_mixer_stream_is_event_stream), + (gvc_mixer_stream_set_is_event_stream), + (gvc_mixer_stream_set_property), (gvc_mixer_stream_get_property), + (gvc_mixer_stream_class_init): + * src/gvc-mixer-stream.h: Add the "is-event-stream" property, + to check whether the role of a stream is to play an event + + * src/gvc-mixer-dialog.c (add_stream): Don't show event streams + in the applications tab (Closes: #565145) + +2009-01-20 Bastien Nocera <[email protected]> + + * src/gvc-mixer-dialog.c (gvc_mixer_dialog_constructor): + Add Close button, and change the spacing around it to + match existing capplets (Closes: #564314) + +2009-01-20 Bastien Nocera <[email protected]> + + * data/mate-volume-control-applet.desktop.in: Start + mate-volume-control after the panel, not at the same time, + spotted by Chris Coulson (Closes: #568320) + +2009-01-16 William Jon McCann <[email protected]> + + * src/gvc-mixer-dialog.c (gvc_mixer_dialog_constructor): + Don't show no apps message if there are apps. + Fixes #567250 + +2009-01-16 William Jon McCann <[email protected]> + + * src/gvc-stream-status-icon.c + (gvc_stream_status_icon_constructor): + Reduce border around volume slider dock + +2009-01-16 William Jon McCann <[email protected]> + + * src/gvc-channel-bar.c (_scale_box_new), + (on_scale_button_press_event), (on_scale_button_release_event), + (on_zero_adjustment_value_changed), (gvc_channel_bar_init): + Make volume sliders instantaneous. + + Patch from: Bastien Nocera <[email protected]> + Fixes #564313 + +2009-01-16 William Jon McCann <[email protected]> + + * src/gvc-stream-status-icon.c (on_menu_mute_toggled), + (on_status_icon_popup_menu): + Add a mute toggle item to the context menu. + + Patch from: Paolo Borelli <[email protected]> + Fixes #567510 + +2009-01-16 William Jon McCann <[email protected]> + + * src/gvc-applet.c (maybe_show_status_icons): + Don't leak a list of sources. + + Patch from: Paolo Borelli <[email protected]> + Fixes #567514 + +2009-01-10 William Jon McCann <[email protected]> + + * src/gvc-balance-bar.c (_scale_box_new): + Don't paint the scale trough. + Patch from: Matthias Clasen <[email protected]> + Fixes part of #565144 + +2008-12-21 William Jon McCann <[email protected]> + + * src/gvc-stream-status-icon.c (popup_dock): + addresses a bunch of positioning problems + Patch from: Matthias Clasen <[email protected]> + Fixes #564312 + +2008-12-21 William Jon McCann <[email protected]> + + * src/gvc-sound-theme-chooser.c (on_treeview_selection_changed): + Check for null selection. + +2008-12-21 William Jon McCann <[email protected]> + + * data/sounds/Makefile.am: + * data/sounds/mate-sounds-default.xml.in.in: + Add drip, glass, and sonar sounds. + +2008-12-21 William Jon McCann <[email protected]> + + * data/Makefile.am: + * data/sounds/Makefile.am: + * data/sounds/mate-sounds-default.xml.in.in: + * src/Makefile.am: + * src/gvc-mixer-dialog.c (gvc_mixer_dialog_constructor): + * src/gvc-sound-theme-chooser.c (set_combox_for_theme_name), + (xml_get_and_trim_names), (populate_model_from_node), + (populate_model_from_file), (populate_model_from_dir), + (save_alert_sounds), (update_alert_model), (update_alert), + (on_alert_toggled), (play_preview_for_path), + (create_alert_treeview), (get_file_type), + (update_alerts_from_theme_name), (update_theme), + (gvc_sound_theme_chooser_init): + * src/sound-theme-file-utils.c (custom_theme_dir_is_empty), + (delete_old_files), (delete_disabled_files), (add_disabled_file), + (add_custom_file), (create_custom_theme): + * src/sound-theme-file-utils.h: + Add sound set. Properly set the active alert sound in the + model. + +2008-12-21 William Jon McCann <[email protected]> + + * src/gvc-sound-theme-chooser.c (on_combobox_changed), + (set_input_feedback_enabled), (update_theme), (on_alert_toggled), + (play_preview_for_path), (on_treeview_row_activated), + (on_treeview_selection_changed), (create_alert_treeview), + (gvc_sound_theme_chooser_constructor), + (gvc_sound_theme_chooser_init): + * src/gvc-sound-theme-editor.c (theme_changed_custom_reinit), + (on_theme_changed), (load_index_theme_name), (sound_theme_in_dir), + (add_theme_to_store), (set_theme_name), (audible_bell_foreach), + (set_audible_bell_enabled), (input_feedback_foreach), + (set_input_feedback_enabled), (get_file_type), + (theme_changed_custom_init), (update_theme), + (setup_theme_selector), (play_sound_preview), (get_sound_filename), + (count_customised_sounds), (save_sounds), (save_custom_theme), + (dump_theme), (on_setting_column_edited), (fill_custom_model), + (on_combobox_editing_started), (play_sound_at_path), + (setting_set_func), (activatable_cell_renderer_pixbuf_activate), + (activatable_cell_renderer_pixbuf_init), + (activatable_cell_renderer_pixbuf_class_init), + (setup_theme_custom_selector), + (gvc_sound_theme_editor_constructor), + (gvc_sound_theme_editor_class_init), (on_click_feedback_toggled), + (on_key_changed), (on_treeview_row_activated), + (constrain_list_size), (setup_list_size_constraint), + (gvc_sound_theme_editor_init), (gvc_sound_theme_editor_finalize), + (gvc_sound_theme_editor_new): + * src/gvc-sound-theme-editor.h: + Simplify the theme selection. Move the ability to + customize the sound theme into a separate widget. We + should add a Customize button to access it. + This new approach will mirror the way we handle + wallpapers. Next thing to do is to add a set + of standard alert sounds that one can choose from. + And have the widget customize the selected theme to + use them. + +2008-12-21 William Jon McCann <[email protected]> + + * src/gvc-mixer-dialog.c (gvc_mixer_dialog_constructor): + Move the sound effects tab back to the first one. + +2008-12-19 Bastien Nocera <[email protected]> + + * src/gvc-mixer-dialog.c (gvc_mixer_dialog_constructor): + Move the sound effects tab to be the last one + +2008-12-19 Bastien Nocera <[email protected]> + + * src/gvc-sound-theme-chooser.c (setup_theme_custom_selector): + Change the ellipsising to be at the start + +2008-12-19 Bastien Nocera <[email protected]> + + * data/mate-volume-control.desktop.in.in: + Add a .desktop file to launch g-v-c from the + control-center (and preferences menu) + + * data/Makefile.am: changes for the above + + * data/icons/16x16/Makefile.am: + * data/icons/16x16/apps/*: + * data/icons/22x22/Makefile.am: + * data/icons/22x22/apps/*: + * data/icons/24x24/Makefile.am: + * data/icons/24x24/apps/*: + * data/icons/32x32/Makefile.am: + * data/icons/32x32/apps/*: + * data/icons/48x48/*: + * data/icons/scalable/Makefile.am: + * data/icons/scalable/apps/*: + Add icons for the .desktop file + +2008-12-18 Bastien Nocera <[email protected]> + + * src/gvc-sound-theme-chooser.c (setup_theme_custom_selector): + Set the first column's text to be ellipsised, and expanded, + fixes the window resizing on startup, but still some unsightly + resizing in the treeview itself + +2008-12-17 Bastien Nocera <[email protected]> + + * AUTHORS: Add myself, having written much of src/*theme*.[ch] + +2008-12-16 William Jon McCann <[email protected]> + + * src/gvc-level-bar.c (gvc_level_bar_size_allocate): + Recalculate layout for allocation. + +2008-12-16 William Jon McCann <[email protected]> + + * src/gvc-level-bar.c (layout_changed), (reset_max_peak), + (bar_calc_layout), (update_peak_value), (update_rms_value), + (gvc_level_bar_expose): + Separate the layout calculation from the draw. + Only queue a redraw if the layout actually changes. + Reduces cpu usage considerably. + +2008-12-14 William Jon McCann <[email protected]> + + * src/gvc-level-bar.c (gvc_level_bar_expose): + Compress expose event queue. + +2008-12-14 William Jon McCann <[email protected]> + + * src/gvc-balance-bar.c (_scale_box_new): + Add left and right labels. + +2008-12-14 William Jon McCann <[email protected]> + + * src/gvc-level-bar.c (gvc_level_bar_expose): + Round corners a bit more. + +2008-12-14 William Jon McCann <[email protected]> + + * src/gvc-level-bar.c (reset_max_peak), (update_peak_value), + (gvc_level_bar_expose): + Add peak of level indicator. + +2008-12-14 William Jon McCann <[email protected]> + + * src/Makefile.am: + * src/gvc-level-bar.c (fraction_from_adjustment), + (update_peak_value), (update_rms_value), + (gvc_level_bar_get_orientation), (gvc_level_bar_set_orientation), + (on_peak_adjustment_value_changed), + (on_rms_adjustment_value_changed), + (gvc_level_bar_set_peak_adjustment), + (gvc_level_bar_set_rms_adjustment), + (gvc_level_bar_get_peak_adjustment), + (gvc_level_bar_get_rms_adjustment), (gvc_level_bar_set_scale), + (gvc_level_bar_set_property), (gvc_level_bar_get_property), + (gvc_level_bar_constructor), (gvc_level_bar_size_request), + (gvc_level_bar_size_allocate), (curved_rectangle), + (gvc_level_bar_expose), (gvc_level_bar_class_init), + (gvc_level_bar_init), (gvc_level_bar_finalize), + (gvc_level_bar_new): + * src/gvc-level-bar.h: + * src/gvc-mixer-dialog.c (update_input_peak), + (gvc_mixer_dialog_constructor): + * src/rb-segmented-bar.c: + * src/rb-segmented-bar.h: + Remove rb-segmented-bar and add a new GvcLevelBar. + +2008-12-13 William Jon McCann <[email protected]> + + * src/Makefile.am: + * src/gvc-balance-bar.c (_scale_box_new), + (gvc_balance_bar_set_size_group), + (gvc_balance_bar_set_channel_map), (gvc_balance_bar_set_property), + (gvc_balance_bar_get_property), (gvc_balance_bar_constructor), + (gvc_balance_bar_class_init), (on_left), (on_right), + (on_adjustment_value_changed), (gvc_balance_bar_init), + (gvc_balance_bar_finalize), (gvc_balance_bar_new): + * src/gvc-balance-bar.h: + * src/gvc-channel-map.c (gvc_channel_map_class_init), + (gvc_channel_map_gains_changed), (set_from_pa_map): + * src/gvc-channel-map.h: + * src/gvc-mixer-control.c (gvc_mixer_control_set_default_sink), + (gvc_mixer_control_set_default_source), + (update_default_source_from_name), (update_default_sink_from_name), + (update_sink), (update_source), (update_sink_input), + (update_event_role_stream): + * src/gvc-mixer-dialog.c (update_output_settings), + (on_mixer_control_default_sink_changed), (add_stream), + (on_output_radio_toggled), (gvc_mixer_dialog_constructor): + * src/gvc-mixer-sink-input.c (gvc_mixer_sink_input_change_volume): + * src/gvc-mixer-sink.c (gvc_mixer_sink_change_volume): + * src/gvc-mixer-source.c (gvc_mixer_source_change_volume): + * src/gvc-mixer-stream.c (on_channel_map_gains_changed), + (gvc_mixer_stream_set_channel_map): + Add output balance control. + +2008-12-13 William Jon McCann <[email protected]> + + * AUTHORS: updated email address + +2008-12-13 William Jon McCann <[email protected]> + + * src/Makefile.am: + * src/gvc-channel-map.c (gvc_channel_map_get_num_channels), + (gvc_channel_map_get_gains), (gvc_channel_map_get_positions), + (gvc_channel_map_class_init), (gvc_channel_map_init), + (gvc_channel_map_finalize), (gvc_channel_map_new), + (set_from_pa_map), (gvc_channel_map_new_from_pa_channel_map): + * src/gvc-channel-map.h: + * src/gvc-mixer-control.c (update_sink), (update_source), + (update_sink_input), (update_source_output): + * src/gvc-mixer-event-role.c (update_settings), + (gvc_mixer_event_role_new): + * src/gvc-mixer-sink-input.c (gvc_mixer_sink_input_change_volume), + (gvc_mixer_sink_input_new): + * src/gvc-mixer-sink-input.h: + * src/gvc-mixer-sink.c (gvc_mixer_sink_change_volume), + (gvc_mixer_sink_new): + * src/gvc-mixer-sink.h: + * src/gvc-mixer-source-output.c (gvc_mixer_source_output_new): + * src/gvc-mixer-source-output.h: + * src/gvc-mixer-source.c (gvc_mixer_source_change_volume), + (gvc_mixer_source_new): + * src/gvc-mixer-source.h: + * src/gvc-mixer-stream.c (gvc_mixer_stream_get_channel_map), + (gvc_mixer_stream_set_channel_map), + (gvc_mixer_stream_set_property), (gvc_mixer_stream_get_property), + (gvc_mixer_stream_class_init): + * src/gvc-mixer-stream.h: + Add a ChannelMap class that we can use to manipulate channel + volume levels. + +2008-12-13 William Jon McCann <[email protected]> + + * src/gvc-channel-bar.c (_scale_box_new), (update_layout), + (gvc_channel_bar_set_size_group), + (gvc_channel_bar_set_orientation), (gvc_channel_bar_constructor), + (gvc_channel_bar_init): + * src/gvc-channel-bar.h: + * src/gvc-mixer-dialog.c (create_bar), (add_stream), + (gvc_mixer_dialog_constructor): + Don't put the end box in the size group for app channel bars. + +2008-12-13 William Jon McCann <[email protected]> + + * src/gvc-mixer-dialog.c (add_stream), (remove_stream), + (gvc_mixer_dialog_constructor): + Show explanation when no apps are playing. + +2008-12-13 William Jon McCann <[email protected]> + + * src/Makefile.am: + * src/gvc-channel-bar.c (_scale_box_new): + * src/gvc-mixer-control.c (gvc_mixer_control_get_pa_context), + (update_default_source_from_name): + * src/gvc-mixer-control.h: + * src/gvc-mixer-dialog.c (update_input_peak), (update_input_meter), + (on_monitor_suspended_callback), (on_monitor_read_callback), + (create_monitor_stream_for_source), + (on_mixer_control_default_source_changed), (add_stream), + (gvc_mixer_dialog_constructor): + * src/rb-segmented-bar.c (rb_segment_new), (rb_segment_free), + (rb_segmented_bar_init), (rb_segmented_bar_class_init), + (rb_segmented_bar_finalize), (rb_segmented_bar_get_property), + (rb_segmented_bar_set_property), + (rb_segmented_bar_default_value_formatter), + (rb_segmented_bar_size_request), (create_adapt_layout), + (compute_layout_size), (rb_segmented_bar_size_allocate), + (rb_segmented_bar_add_segment), + (rb_segmented_bar_add_segment_default_color), + (rb_segmented_bar_update_segment), (draw_rounded_rectangle), + (rb_segmented_bar_render_segments), (modula), (hsb_from_color), + (color_from_hsb), (color_shade), (make_segment_gradient), + (rb_segmented_bar_render_strokes), (rb_segmented_bar_render), + (rb_segmented_bar_render_labels), (rb_segmented_bar_expose), + (rb_segmented_bar_new), (rb_segmented_bar_set_value_formatter): + * src/rb-segmented-bar.h: + Add input level monitor. + +2008-12-13 William Jon McCann <[email protected]> + + * src/gvc-channel-bar.c (_scale_box_new), + (gvc_channel_bar_set_orientation): + Use the same size group for the start and end of + the channel bar. + +2008-12-12 Bastien Nocera <[email protected]> + + * src/gvc-sound-theme-chooser.c (get_sound_filename): + Set a parent for the file chooser + +2008-12-12 Bastien Nocera <[email protected]> + + * src/gvc-stream-status-icon.c (update_icon): Fix + last commit, we need to use commas, not dots to separate + major, minor and micro versions + +2007-12-12 Matthias Clasen <[email protected]> + + Bug 564176 – dependency on API from gtk+ trunk + + * mate-volume-control/src/gvc-stream-status-icon.c: Don't use + GTK+ 2.16 API unconditionally. Reported by Frederic Peters + +2008-12-12 William Jon McCann <[email protected]> + + * src/gvc-mixer-control.c (update_sink), (update_source): + * src/gvc-mixer-stream.c (gvc_mixer_stream_get_decibel), + (gvc_mixer_stream_set_decibel), (gvc_mixer_stream_get_can_decibel), + (gvc_mixer_stream_set_can_decibel), + (gvc_mixer_stream_set_property), (gvc_mixer_stream_get_property), + (gvc_mixer_stream_class_init): + * src/gvc-mixer-stream.h: + * src/gvc-stream-status-icon.c (update_icon): + Add decibel level support. + +2008-12-11 William Jon McCann <[email protected]> + + * src/Makefile.am: + * src/gvc-applet.c (maybe_show_status_icons), (gvc_applet_start), + (on_control_stream_removed), (on_control_stream_added), + (gvc_applet_constructor): + * src/gvc-mixer-control.c (gvc_mixer_control_get_source_outputs), + (update_source), (update_sink_input), (update_source_output), + (update_event_role_stream): + * src/gvc-mixer-control.h: + * src/gvc-mixer-source-output.c + (gvc_mixer_source_output_change_volume), + (gvc_mixer_source_output_change_is_muted), + (gvc_mixer_source_output_constructor), + (gvc_mixer_source_output_class_init), + (gvc_mixer_source_output_init), (gvc_mixer_source_output_finalize), + (gvc_mixer_source_output_new): + * src/gvc-mixer-source-output.h: + * src/gvc-stream-status-icon.c (update_icon), + (on_status_icon_visible_notify), (gvc_stream_status_icon_init): + Show/hide input level status icon based on presence of + a "source output" stream. + +2008-12-11 William Jon McCann <[email protected]> + + * src/gvc-channel-bar.c (gvc_channel_bar_set_low_icon_name), + (gvc_channel_bar_set_high_icon_name), + (gvc_channel_bar_set_property), (gvc_channel_bar_get_property), + (gvc_channel_bar_class_init), (gvc_channel_bar_init), + (gvc_channel_bar_finalize): + * src/gvc-channel-bar.h: + * src/gvc-mixer-dialog.c (gvc_mixer_dialog_constructor), + (gvc_mixer_dialog_set_page): + Use the new input icons in the dialog. + +2008-12-11 William Jon McCann <[email protected]> + + * src/Makefile.am: + * src/applet-main.c (main): + * src/dialog-main.c (main): + Append the icon search path to the icon theme. + +2008-12-11 William Jon McCann <[email protected]> + + * src/gvc-applet.c: + Use new icons. + +2008-12-11 William Jon McCann <[email protected]> + + * data/Makefile.am: + * data/icons/*: + Add some input level icons from Mike Langlie. Just + an initial draft. + +2008-12-11 William Jon McCann <[email protected]> + + * src/Makefile.am: + * src/gvc-applet.c (gvc_applet_start), (gvc_applet_dispose), + (update_default_source), (update_default_sink), (on_control_ready), + (on_control_default_sink_changed), + (on_control_default_source_changed), (gvc_applet_constructor), + (gvc_applet_class_init), (gvc_applet_init), (gvc_applet_finalize): + * src/gvc-stream-status-icon.c (on_adjustment_value_changed), + (popup_dock), (on_status_icon_activate), + (on_menu_activate_open_volume_control), + (on_status_icon_popup_menu), (on_status_icon_scroll_event), + (gvc_icon_release_grab), (on_dock_button_press), (popdown_dock), + (gvc_icon_grab_notify), (on_dock_grab_notify), + (on_dock_grab_broken_event), (on_dock_key_release), + (maybe_show_status_icon), (update_icon), + (gvc_stream_status_icon_set_icon_names), (on_stream_volume_notify), + (on_stream_is_muted_notify), + (gvc_stream_status_icon_set_display_name), + (gvc_stream_status_icon_set_mixer_stream), + (gvc_stream_status_icon_set_property), + (gvc_stream_status_icon_get_property), (on_bar_is_muted_notify), + (gvc_stream_status_icon_constructor), + (gvc_stream_status_icon_dispose), + (gvc_stream_status_icon_class_init), (gvc_stream_status_icon_init), + (gvc_stream_status_icon_finalize), (gvc_stream_status_icon_new): + * src/gvc-stream-status-icon.h: + Create a stream-status-icon class. Create a status icon + for input stream. Todo: only show input status icon + when an application is recording, use microphone images. + +2008-12-05 William Jon McCann <[email protected]> + + * src/gvc-channel-bar.c (gvc_channel_bar_init): + Make label left aligned. + +2008-12-05 William Jon McCann <[email protected]> + + * src/gvc-mixer-control.c (update_sink), (update_sink_input), + (update_client), (remove_client), (gvc_mixer_control_init): + Use application/client name instead of stream name. + +2008-12-05 Marc-André Lureau <[email protected]> + + * src/gvc-mixer-dialog.c (gvc_mixer_dialog_set_page): + Added --page argument for compatibility reasons (used by g-s-r, + for instance). Closes: #563289 + +2008-11-19 William Jon McCann <[email protected]> + + * src/gvc-mixer-control.c (update_sink_input), + (update_event_role_stream): + Add debug for event stuff. + +2008-11-19 William Jon McCann <[email protected]> + + * src/gvc-mixer-dialog.c (on_stream_volume_notify), + (on_stream_is_muted_notify): + Fix crash when can't find a bar for stream. + +2008-11-19 William Jon McCann <[email protected]> + + * src/gvc-mixer-dialog.c (update_default_input), + (update_default_output), (on_mixer_control_default_sink_changed), + (on_mixer_control_default_source_changed), (add_stream), + (on_input_radio_toggled), (on_output_radio_toggled), + (create_stream_treeview), (gvc_mixer_dialog_constructor): + Use radio buttons instead of selection to change default in/out. + +2008-11-19 William Jon McCann <[email protected]> + + * src/gvc-channel-bar.c (_scale_box_new), (gvc_channel_bar_new): + * src/gvc-mixer-control.c (_set_default_source), + (_set_default_sink): + Make range update policy discontinuous. + +2008-11-19 William Jon McCann <[email protected]> + + * src/gvc-sound-theme-chooser.c (constrain_list_size), + (setup_list_size_constraint), (gvc_sound_theme_chooser_init): + Make the initial size of the scrolled window more reasonable. + +2008-11-18 William Jon McCann <[email protected]> + + * src/gvc-mixer-dialog.c (create_stream_treeview): + * src/gvc-sound-theme-chooser.c (play_sound_at_path), + (activatable_cell_renderer_pixbuf_activate), + (setup_theme_custom_selector), (on_treeview_row_activated), + (gvc_sound_theme_chooser_init): + Hide treeview headers. Make double click on tree rows + play sound preview. + +2008-11-18 William Jon McCann <[email protected]> + + * src/gvc-applet.c (maybe_show_status_icon), (update_icon), + (update_default_sink), (on_control_ready), + (on_control_default_sink_changed), (gvc_applet_init): + * src/gvc-mixer-control.c (remove_stream): + Hide the status icon when there is no output device. + +2008-11-18 William Jon McCann <[email protected]> + + * src/gvc-mixer-control.c (gvc_mixer_control_set_default_sink), + (gvc_mixer_control_set_default_source), (_set_default_source), + (_set_default_sink), (_stream_has_name), (find_stream_for_name), + (update_default_source_from_name), (update_default_sink_from_name), + (update_server), (update_sink), (update_source), + (update_sink_input), (gvc_mixer_control_class_init): + * src/gvc-mixer-control.h: + * src/gvc-mixer-dialog.c (on_mixer_control_default_sink_changed), + (on_mixer_control_default_source_changed), + (gvc_mixer_dialog_set_mixer_control), (bar_set_stream), + (add_stream), (find_stream_by_id), (remove_stream), + (on_control_stream_removed), (create_stream_treeview), + (on_input_treeview_selection_changed), + (on_output_treeview_selection_changed), + (gvc_mixer_dialog_constructor): + * src/gvc-mixer-stream.c (gvc_mixer_stream_set_property), + (gvc_mixer_stream_get_property), (gvc_mixer_stream_class_init): + * src/gvc-mixer-stream.h: + Add support for changing the default sink and source. + +2008-11-12 William Jon McCann <[email protected]> + + * src/Makefile.am: + * src/gvc-mixer-control.c (update_event_role_stream): + * src/gvc-mixer-dialog.c (create_bar), (add_stream): + * src/gvc-mixer-event-role.c (update_settings), + (gvc_mixer_event_role_change_volume), + (gvc_mixer_event_role_change_is_muted), + (gvc_mixer_event_role_set_device), + (gvc_mixer_event_role_set_property), + (gvc_mixer_event_role_get_property), + (gvc_mixer_event_role_constructor), + (gvc_mixer_event_role_class_init), (gvc_mixer_event_role_init), + (gvc_mixer_event_role_finalize), (gvc_mixer_event_role_new): + * src/gvc-mixer-event-role.h: + Add event role stream. Make setting event volume work. + +2008-11-12 William Jon McCann <[email protected]> + + * src/gvc-mixer-dialog.c (gvc_mixer_dialog_constructor), + (gvc_mixer_dialog_init): + * src/gvc-sound-theme-chooser.c (theme_changed_custom_reinit), + (on_combobox_changed), (audible_bell_foreach), + (set_audible_bell_enabled), (input_feedback_foreach), + (set_input_feedback_enabled), (get_file_type), + (theme_changed_custom_init), (update_theme), + (setup_theme_selector), (count_customised_sounds), (save_sounds), + (on_setting_column_edited), (fill_custom_model), + (on_combobox_editing_started), (setting_set_func), + (setup_theme_custom_selector), + (gvc_sound_theme_chooser_constructor), (on_click_feedback_toggled), + (on_key_changed), (gvc_sound_theme_chooser_init), + (gvc_sound_theme_chooser_new): + Simplify the theme chooser a bit. Remove the visual bell stuff + since that should go into the to-be-written Universal Access + control panel. + +2008-11-12 William Jon McCann <[email protected]> + + * src/gvc-mixer-dialog.c (on_key_changed): + Don't assume all changed keys are booleans. + +2008-11-12 William Jon McCann <[email protected]> + + * src/gvc-mixer-dialog.c (create_bar), (add_stream), + (gvc_mixer_dialog_constructor), (gvc_mixer_dialog_init): + Use a separate size group for application streams. + +2008-11-12 William Jon McCann <[email protected]> + + * src/gvc-mixer-dialog.c (gvc_mixer_dialog_constructor): + Switch order of input and output tabs. + +2008-11-12 William Jon McCann <[email protected]> + + * src/gvc-channel-bar.c (_scale_box_new): + Add labels to size group instead of scale because + using expand/fill widgets in a size group doesn't really + work. And in practice the label is the only variable + length widget. + +2008-11-12 William Jon McCann <[email protected]> + + * src/gvc-mixer-dialog.c (gvc_mixer_dialog_dispose): + Only disconnect signals once. + +2008-11-12 William Jon McCann <[email protected]> + + * src/gvc-mixer-dialog.c (gvc_mixer_dialog_constructor): + * src/gvc-sound-theme-chooser.c (gvc_sound_theme_chooser_init): + Move alert and input sliders to the top. + +2008-11-12 William Jon McCann <[email protected]> + + * src/gvc-mixer-dialog.c (gvc_mixer_dialog_constructor): + * src/gvc-sound-theme-chooser.c (setup_theme_selector), + (gvc_sound_theme_chooser_init): + Drop the frame and label from the effects chooser. + Move the enable effects toggle up to the top. + +2008-11-12 William Jon McCann <[email protected]> + + * src/gvc-mixer-dialog.c (gvc_mixer_dialog_constructor): + At mpt's suggestion, move the output slider to the top. + +2008-11-11 William Jon McCann <[email protected]> + + * src/gvc-mixer-control.c (update_sink_input), + (update_source_output), (update_event_role_stream), + (remove_client), (remove_sink), (remove_source), + (remove_sink_input), (remove_source_output): + * src/gvc-mixer-dialog.c (on_bar_is_muted_notify), (create_bar), + (bar_set_stream), (add_stream), (on_control_stream_added), + (on_control_stream_removed): + Set the associated stream on the bar so mute works. + Hush some debugging. + +2008-11-11 William Jon McCann <[email protected]> + + * src/gvc-mixer-control.c (update_sink), (update_source): + * src/gvc-mixer-dialog.c (add_stream): + * src/gvc-mixer-stream.c (gvc_mixer_stream_get_description), + (gvc_mixer_stream_set_description), + (gvc_mixer_stream_set_property), (gvc_mixer_stream_get_property), + (gvc_mixer_stream_class_init), (gvc_mixer_stream_finalize): + * src/gvc-mixer-stream.h: + Add descriptions and use them instead of names when + displaying sinks and sources. + +2008-11-11 William Jon McCann <[email protected]> + + * src/gvc-mixer-dialog.c (add_stream): + Don't show sinks/source in apps page. + +2008-11-11 William Jon McCann <[email protected]> + + * src/gvc-mixer-dialog.c (add_stream), (find_stream_by_id), + (on_control_stream_removed), (create_stream_treeview): + Try to remove streams from models. + +2008-11-11 William Jon McCann <[email protected]> + + * src/gvc-mixer-dialog.c (add_stream): + Also add default streams to tree models. + +2008-11-11 William Jon McCann <[email protected]> + + * src/gvc-mixer-control.c (gvc_mixer_control_get_streams): + * src/gvc-mixer-control.h: + * src/gvc-mixer-dialog.c (create_bar), (bar_set_stream), + (add_stream), (create_stream_treeview), + (gvc_mixer_dialog_constructor): + Add beginnings of output and input selection. + +2008-11-10 William Jon McCann <[email protected]> + + * src/gvc-mixer-dialog.c (add_stream), + (gvc_mixer_dialog_constructor): + Don't crash if we don't get a default sink/source. + +2008-11-06 William Jon McCann <[email protected]> + + * src/gvc-mixer-control.c (remove_stream), (update_sink_input), + (update_event_role_stream): + * src/gvc-mixer-dialog.c (on_control_stream_added), + (on_control_stream_removed): + Fix adding and remove streams. + +2008-11-06 William Jon McCann <[email protected]> + + * src/gvc-mixer-dialog.c (_gtk_label_make_bold), + (gvc_mixer_dialog_constructor): + * src/gvc-sound-theme-chooser.c (gvc_sound_theme_chooser_init): + Tweak layout and add some placeholder treeviews. + +2008-11-06 William Jon McCann <[email protected]> + + * src/gvc-channel-bar.c (_scale_box_new), + (gvc_channel_bar_set_size_group): + * src/gvc-channel-bar.h: + * src/gvc-mixer-dialog.c (add_stream), (gvc_mixer_dialog_init): + Put all the scales in a size group. Doesn't seem + to work though. + +2008-11-06 William Jon McCann <[email protected]> + + * src/gvc-mixer-dialog.c (on_enable_effects_toggled), + (on_click_feedback_toggled), (on_audible_bell_toggled), + (gvc_mixer_dialog_constructor), (on_key_changed), + (gvc_mixer_dialog_init): + Hook up the check buttons. + +2008-11-06 William Jon McCann <[email protected]> + + * src/gvc-mixer-dialog.c (add_stream), + (gvc_mixer_dialog_constructor): + * src/gvc-sound-theme-chooser.c (setup_theme_selector), + (gvc_sound_theme_chooser_init): + Fix up some layout. Hide the theme selector if there is + only one. + +2008-11-06 William Jon McCann <[email protected]> + + * src/Makefile.am: + * src/gvc-applet.c (on_menu_activate_open_volume_control), + (on_status_icon_popup_menu): + * src/gvc-mixer-dialog.c (on_stream_is_muted_notify), (add_stream), + (gvc_mixer_dialog_constructor), (gvc_mixer_dialog_new): + * src/gvc-sound-theme-chooser.c (theme_changed_custom_reinit), + (on_combobox_changed), (load_index_theme_name), + (sound_theme_in_dir), (add_theme_to_store), + (set_combox_for_theme_name), (on_theme_changed), + (setup_theme_selector), (visual_bell_mateconf_to_setting), + (visual_bell_setting_to_mateconf), (play_sound_preview), + (get_sound_filename), (count_customised_sounds), (save_sounds), + (save_custom_theme), (dump_theme), (on_setting_column_edited), + (fill_visual_bell_model), (fill_custom_model), + (on_combobox_editing_started), (play_sound_at_path), + (on_treeview_button_press_event), (setting_set_func), + (activatable_cell_renderer_pixbuf_activate), + (activatable_cell_renderer_pixbuf_init), + (activatable_cell_renderer_pixbuf_class_init), + (input_feedback_foreach), (set_input_feedback_enabled), + (on_input_feedback_changed), (audible_bell_foreach), + (set_audible_bell_enabled), (on_audible_bell_changed), + (get_file_type), (theme_changed_custom_init), + (setup_theme_custom_selector), + (gvc_sound_theme_chooser_constructor), + (gvc_sound_theme_chooser_class_init), (_gtk_label_make_bold), + (gvc_sound_theme_chooser_init), (gvc_sound_theme_chooser_finalize), + (gvc_sound_theme_chooser_new): + * src/gvc-sound-theme-chooser.h: + * src/sound-theme-file-utils.c (custom_theme_update_time), + (custom_theme_dir_path), (directory_delete_recursive), + (capplet_file_delete_recursive), (delete_custom_theme_dir), + (delete_one_file), (delete_old_files), (delete_disabled_files), + (create_one_file), (add_disabled_file), (add_custom_file): + * src/sound-theme-file-utils.h: + Redesign a bit in order to incorporate the sound properties. + +2008-11-05 William Jon McCann <[email protected]> + + * src/gvc-applet.c (popup_dock), (on_bar_is_muted_notify), + (gvc_applet_init): + * src/gvc-channel-bar.c (on_zero_adjustment_value_changed), + (update_mute_button), (gvc_channel_bar_init): + Fix initial mute setting for applet. When mute button + is not displayed use the "zero" position to indicate + muted state. + +2008-11-05 William Jon McCann <[email protected]> + + * src/gvc-applet.c (gvc_applet_init): + * src/gvc-channel-bar.c (_scale_box_new), + (gvc_channel_bar_set_orientation), (update_mute_button), + (gvc_channel_bar_set_show_mute), (gvc_channel_bar_get_show_mute), + (gvc_channel_bar_set_property), (gvc_channel_bar_get_property), + (gvc_channel_bar_constructor), (gvc_channel_bar_class_init), + (gvc_channel_bar_init): + * src/gvc-channel-bar.h: + * src/gvc-mixer-dialog.c (add_stream): + Hide mute in vertical mode. Add icons to hint at scale direction + in horizontal mode. Fix orientation changing. + +2008-11-05 William Jon McCann <[email protected]> + + * src/Makefile.am: + * src/gvc-mixer-control.c (gvc_mixer_control_get_default_source), + (gvc_mixer_control_get_sources), (remove_stream), (add_stream), + (update_sink), (update_source), (update_sink_input), + (update_event_role_stream), (remove_sink), (remove_source), + (remove_sink_input), (remove_source_output): + * src/gvc-mixer-control.h: + * src/gvc-mixer-dialog.c (add_stream), + (gvc_mixer_dialog_constructor): + * src/gvc-mixer-source.c (gvc_mixer_source_change_volume), + (gvc_mixer_source_change_is_muted), (gvc_mixer_source_constructor), + (gvc_mixer_source_class_init), (gvc_mixer_source_init), + (gvc_mixer_source_finalize), (gvc_mixer_source_new): + * src/gvc-mixer-source.h: + Add support for input streams. Only show default input and + output stream. + +2008-11-05 William Jon McCann <[email protected]> + + * src/gvc-applet.c (gvc_applet_dispose), (on_control_ready): + * src/gvc-channel-bar.c (gvc_channel_bar_finalize): + * src/gvc-mixer-control.c (gvc_mixer_control_get_event_sink_input), + (gvc_mixer_control_get_default_sink), + (gvc_mixer_control_lookup_stream_id), (update_sink), + (update_sink_input), (update_event_role_stream), + (gvc_mixer_control_dispose), (gvc_mixer_control_init): + * src/gvc-mixer-control.h: + * src/gvc-mixer-dialog.c (on_control_stream_added), + (on_control_stream_removed), (gvc_mixer_dialog_constructor), + (gvc_mixer_dialog_dispose), (gvc_mixer_dialog_class_init): + * src/gvc-mixer-stream.c (gvc_mixer_stream_finalize): + Fix leaks. Use ids instead of indexes when possible. + Add method to lookup stream by id. + +2008-11-04 Marc-André Lureau <[email protected]> + + * src/gvc-mixer-dialog.c (gvc_mixer_dialog_constructor): Compile + with gtk+ <= 2.14. + +2008-11-03 William Jon McCann <[email protected]> + + * src/gvc-applet.c (on_menu_activate_sounds), + (on_status_icon_popup_menu): + Add sound properties to menu. + +2008-11-03 William Jon McCann <[email protected]> + + * src/gvc-applet.c (gvc_applet_init): + status-icon scroll events only available in gtk+ 2.15.0 + +2008-11-03 William Jon McCann <[email protected]> + + * Makefile.am (SUBDIRS): + Add data dir. + +2008-11-03 William Jon McCann <[email protected]> + + * data/Makefile.am: + * data/mate-volume-control-applet.desktop.in: + Install an autostart file for the volume applet + +2008-11-03 William Jon McCann <[email protected]> + + * AUTHORS: + * Makefile.am: + * src/Makefile.am: + * src/applet-main.c (on_bus_name_lost), (acquire_name_on_proxy), + (acquire_name), (main): + * src/dialog-main.c (on_bus_name_lost), (acquire_name_on_proxy), + (acquire_name), (on_dialog_response), (on_control_ready), (main): + * src/gvc-applet.c (maybe_show_status_icon), (gvc_applet_start), + (gvc_applet_dispose), (gvc_applet_constructor), + (gvc_applet_class_init), (on_adjustment_value_changed), + (popup_dock), (on_status_icon_activate), + (on_menu_activate_open_volume_control), + (on_status_icon_popup_menu), (on_status_icon_scroll_event), + (gvc_applet_release_grab), (on_dock_button_press), (popdown_dock), + (gvc_applet_grab_notify), (on_dock_grab_notify), + (on_dock_grab_broken_event), (on_dock_key_release), (update_icon), + (on_stream_volume_notify), (on_stream_is_muted_notify), + (on_control_ready), (on_bar_is_muted_notify), (gvc_applet_init), + (gvc_applet_finalize), (gvc_applet_new): + * src/gvc-applet.h: + * src/gvc-channel-bar.c (_scale_box_new), (update_image), + (update_label), (gvc_channel_bar_set_name), + (gvc_channel_bar_set_icon_name), (gvc_channel_bar_set_orientation), + (gvc_channel_bar_set_adjustment), (gvc_channel_bar_get_adjustment), + (update_mute_button), (gvc_channel_bar_set_is_muted), + (gvc_channel_bar_get_is_muted), (gvc_channel_bar_set_property), + (gvc_channel_bar_get_property), (gvc_channel_bar_constructor), + (gvc_channel_bar_class_init), (on_mute_button_toggled), + (gvc_channel_bar_init), (gvc_channel_bar_finalize), + (gvc_channel_bar_new): + * src/gvc-channel-bar.h: + * src/gvc-mixer-control.c (gvc_mixer_control_get_event_sink_input), + (gvc_mixer_control_get_default_sink), (listify_hash_values_hfunc), + (gvc_stream_collate), (gvc_mixer_control_get_sinks), + (gvc_mixer_control_get_sink_inputs), (dec_outstanding), + (gvc_mixer_control_is_ready), (update_server), (update_sink), + (update_source), (set_icon_name_from_proplist), + (update_sink_input), (update_source_output), (update_client), + (_pa_context_get_sink_info_cb), (_pa_context_get_source_info_cb), + (_pa_context_get_sink_input_info_cb), + (_pa_context_get_source_output_info_cb), + (_pa_context_get_client_info_cb), (_pa_context_get_server_info_cb), + (remove_event_role_stream), (update_event_role_stream), + (_pa_ext_stream_restore_read_cb), + (_pa_ext_stream_restore_subscribe_cb), (req_update_server_info), + (req_update_client_info), (req_update_sink_info), + (req_update_source_info), (req_update_sink_input_info), + (req_update_source_output_info), (remove_client), (remove_sink), + (remove_source), (remove_sink_input), (remove_source_output), + (_pa_context_subscribe_cb), (gvc_mixer_control_ready), + (_pa_context_state_cb), (gvc_mixer_control_open), + (gvc_mixer_control_close), (gvc_mixer_control_dispose), + (gvc_mixer_control_constructor), (gvc_mixer_control_class_init), + (gvc_mixer_control_init), (gvc_mixer_control_finalize), + (gvc_mixer_control_new): + * src/gvc-mixer-control.h: + * src/gvc-mixer-dialog.c (gvc_mixer_dialog_set_mixer_control), + (gvc_mixer_dialog_get_mixer_control), + (gvc_mixer_dialog_set_property), (gvc_mixer_dialog_get_property), + (on_adjustment_value_changed), (on_bar_is_muted_notify), + (lookup_bar_for_stream), (on_stream_volume_notify), + (on_stream_is_muted_notify), (save_bar_for_stream), (add_stream), + (gvc_mixer_dialog_constructor), (gvc_mixer_dialog_class_init), + (gvc_mixer_dialog_init), (gvc_mixer_dialog_finalize), + (gvc_mixer_dialog_new): + * src/gvc-mixer-dialog.h: + * src/gvc-mixer-sink-input.c (gvc_mixer_sink_input_change_volume), + (gvc_mixer_sink_input_change_is_muted), + (gvc_mixer_sink_input_constructor), + (gvc_mixer_sink_input_class_init), (gvc_mixer_sink_input_init), + (gvc_mixer_sink_input_finalize), (gvc_mixer_sink_input_new): + * src/gvc-mixer-sink-input.h: + * src/gvc-mixer-sink.c (gvc_mixer_sink_change_volume), + (gvc_mixer_sink_change_is_muted), (gvc_mixer_sink_constructor), + (gvc_mixer_sink_class_init), (gvc_mixer_sink_init), + (gvc_mixer_sink_finalize), (gvc_mixer_sink_new): + * src/gvc-mixer-sink.h: + * src/gvc-mixer-stream.c (get_next_stream_serial), + (gvc_mixer_stream_get_pa_context), (gvc_mixer_stream_get_index), + (gvc_mixer_stream_get_id), (gvc_mixer_stream_get_num_channels), + (gvc_mixer_stream_get_volume), (gvc_mixer_stream_set_volume), + (gvc_mixer_stream_get_is_muted), (gvc_mixer_stream_get_is_default), + (gvc_mixer_stream_set_is_muted), (gvc_mixer_stream_set_is_default), + (gvc_mixer_stream_get_name), (gvc_mixer_stream_set_name), + (gvc_mixer_stream_get_icon_name), (gvc_mixer_stream_set_icon_name), + (gvc_mixer_stream_set_property), (gvc_mixer_stream_get_property), + (gvc_mixer_stream_constructor), + (gvc_mixer_stream_real_change_volume), + (gvc_mixer_stream_real_change_is_muted), + (gvc_mixer_stream_change_volume), + (gvc_mixer_stream_change_is_muted), (gvc_mixer_stream_class_init), + (gvc_mixer_stream_init), (gvc_mixer_stream_finalize): + * src/gvc-mixer-stream.h: + Initial commit. + diff --git a/mate-volume-control/Makefile.am b/mate-volume-control/Makefile.am new file mode 100644 index 0000000..0c3fa4c --- /dev/null +++ b/mate-volume-control/Makefile.am @@ -0,0 +1,16 @@ +NULL = + +SUBDIRS = \ + data \ + src \ + $(NULL) + +EXTRA_DIST = \ + ChangeLog.pre-2-26 \ + $(NULL) + +MAINTAINERCLEANFILES = \ + *~ \ + $(NULL) + +-include $(top_srcdir)/git.mk diff --git a/mate-volume-control/Makefile.in b/mate-volume-control/Makefile.in new file mode 100644 index 0000000..94c92f7 --- /dev/null +++ b/mate-volume-control/Makefile.in @@ -0,0 +1,647 @@ +# Makefile.in generated by automake 1.11.1 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, +# Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = mate-volume-control +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in AUTHORS +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/as-ac-expand.m4 \ + $(top_srcdir)/m4/as-compiler-flag.m4 \ + $(top_srcdir)/m4/as-version.m4 $(top_srcdir)/m4/intltool.m4 \ + $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ + $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ + $(top_srcdir)/m4/lt~obsolete.m4 \ + $(top_srcdir)/m4/mate-doc-utils.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/build-aux/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +AM_V_GEN = $(am__v_GEN_$(V)) +am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) +am__v_GEN_0 = @echo " GEN " $@; +AM_V_at = $(am__v_at_$(V)) +am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) +am__v_at_0 = @ +SOURCES = +DIST_SOURCES = +RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ + html-recursive info-recursive install-data-recursive \ + install-dvi-recursive install-exec-recursive \ + install-html-recursive install-info-recursive \ + install-pdf-recursive install-ps-recursive install-recursive \ + installcheck-recursive installdirs-recursive pdf-recursive \ + ps-recursive uninstall-recursive +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ + $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ + distdir +ETAGS = etags +CTAGS = ctags +DIST_SUBDIRS = $(SUBDIRS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +am__relativize = \ + dir0=`pwd`; \ + sed_first='s,^\([^/]*\)/.*$$,\1,'; \ + sed_rest='s,^[^/]*/*,,'; \ + sed_last='s,^.*/\([^/]*\)$$,\1,'; \ + sed_butlast='s,/*[^/]*$$,,'; \ + while test -n "$$dir1"; do \ + first=`echo "$$dir1" | sed -e "$$sed_first"`; \ + if test "$$first" != "."; then \ + if test "$$first" = ".."; then \ + dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ + dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ + else \ + first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ + if test "$$first2" = "$$first"; then \ + dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ + else \ + dir2="../$$dir2"; \ + fi; \ + dir0="$$dir0"/"$$first"; \ + fi; \ + fi; \ + dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ + done; \ + reldir="$$dir2" +ACLOCAL = @ACLOCAL@ +ALL_LINGUAS = @ALL_LINGUAS@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CATALOGS = @CATALOGS@ +CATOBJEXT = @CATOBJEXT@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DATADIRNAME = @DATADIRNAME@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DISABLE_DEPRECATED = @DISABLE_DEPRECATED@ +DISTCHECK_CONFIGURE_FLAGS = @DISTCHECK_CONFIGURE_FLAGS@ +DLLTOOL = @DLLTOOL@ +DOC_USER_FORMATS = @DOC_USER_FORMATS@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ +GLADEUI_CATALOG_DIR = @GLADEUI_CATALOG_DIR@ +GLADEUI_CFLAGS = @GLADEUI_CFLAGS@ +GLADEUI_LIBS = @GLADEUI_LIBS@ +GLADEUI_MODULE_DIR = @GLADEUI_MODULE_DIR@ +GLIB_GENMARSHAL = @GLIB_GENMARSHAL@ +GMOFILES = @GMOFILES@ +GMP_CFLAGS = @GMP_CFLAGS@ +GMP_LIBS = @GMP_LIBS@ +GMSGFMT = @GMSGFMT@ +GREP = @GREP@ +GSR_CFLAGS = @GSR_CFLAGS@ +GSR_LIBS = @GSR_LIBS@ +GSTMIXER_CFLAGS = @GSTMIXER_CFLAGS@ +GSTMIXER_LIBS = @GSTMIXER_LIBS@ +GSTPROPS_CFLAGS = @GSTPROPS_CFLAGS@ +GSTPROPS_LIBS = @GSTPROPS_LIBS@ +GST_MAJORMINOR = @GST_MAJORMINOR@ +HAVE_PULSEAUDIO = @HAVE_PULSEAUDIO@ +HAVE_SOUND_THEME = @HAVE_SOUND_THEME@ +HELP_DIR = @HELP_DIR@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INSTOBJEXT = @INSTOBJEXT@ +INTLLIBS = @INTLLIBS@ +INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@ +INTLTOOL_MERGE = @INTLTOOL_MERGE@ +INTLTOOL_PERL = @INTLTOOL_PERL@ +INTLTOOL_UPDATE = @INTLTOOL_UPDATE@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MATECC_DESKTOP_DIR = @MATECC_DESKTOP_DIR@ +MATECONFTOOL = @MATECONFTOOL@ +MATECONF_SCHEMA_CONFIG_SOURCE = @MATECONF_SCHEMA_CONFIG_SOURCE@ +MATECONF_SCHEMA_FILE_DIR = @MATECONF_SCHEMA_FILE_DIR@ +MKDIR_P = @MKDIR_P@ +MKINSTALLDIRS = @MKINSTALLDIRS@ +MSGFMT = @MSGFMT@ +MSGFMT_OPTS = @MSGFMT_OPTS@ +MSGMERGE = @MSGMERGE@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OMF_DIR = @OMF_DIR@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PACKAGE_VERSION_MAJOR = @PACKAGE_VERSION_MAJOR@ +PACKAGE_VERSION_MICRO = @PACKAGE_VERSION_MICRO@ +PACKAGE_VERSION_MINOR = @PACKAGE_VERSION_MINOR@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +POFILES = @POFILES@ +POSUB = @POSUB@ +PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ +PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@ +PROGRAMS_GSTPROPS = @PROGRAMS_GSTPROPS@ +PULSEAUDIO_CFLAGS = @PULSEAUDIO_CFLAGS@ +PULSEAUDIO_LIBS = @PULSEAUDIO_LIBS@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SOUNDTHEME_CFLAGS = @SOUNDTHEME_CFLAGS@ +SOUNDTHEME_LIBS = @SOUNDTHEME_LIBS@ +SOUND_THEME_CFLAGS = @SOUND_THEME_CFLAGS@ +SOUND_THEME_LIBS = @SOUND_THEME_LIBS@ +STRIP = @STRIP@ +USE_NLS = @USE_NLS@ +VERSION = @VERSION@ +VOLUME_CONTROL_CFLAGS = @VOLUME_CONTROL_CFLAGS@ +VOLUME_CONTROL_LIBS = @VOLUME_CONTROL_LIBS@ +WARN_CFLAGS = @WARN_CFLAGS@ +WARN_CXXFLAGS = @WARN_CXXFLAGS@ +XGETTEXT = @XGETTEXT@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +NULL = +SUBDIRS = \ + data \ + src \ + $(NULL) + +EXTRA_DIST = \ + ChangeLog.pre-2-26 \ + $(NULL) + +MAINTAINERCLEANFILES = \ + *~ \ + $(NULL) + +all: all-recursive + +.SUFFIXES: +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign mate-volume-control/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign mate-volume-control/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +# This directory's subdirectories are mostly independent; you can cd +# into them and run `make' without going through this Makefile. +# To change the values of `make' variables: instead of editing Makefiles, +# (1) if the variable is set in `config.status', edit `config.status' +# (which will cause the Makefiles to be regenerated when you run `make'); +# (2) otherwise, pass the desired values on the `make' command line. +$(RECURSIVE_TARGETS): + @fail= failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +$(RECURSIVE_CLEAN_TARGETS): + @fail= failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + rev=''; for subdir in $$list; do \ + if test "$$subdir" = "."; then :; else \ + rev="$$subdir $$rev"; \ + fi; \ + done; \ + rev="$$rev ."; \ + target=`echo $@ | sed s/-recursive//`; \ + for subdir in $$rev; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done +ctags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + done + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + set x; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: CTAGS +CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ + $(am__relativize); \ + new_distdir=$$reldir; \ + dir1=$$subdir; dir2="$(top_distdir)"; \ + $(am__relativize); \ + new_top_distdir=$$reldir; \ + echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ + echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ + ($(am__cd) $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$new_top_distdir" \ + distdir="$$new_distdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + am__skip_mode_fix=: \ + distdir) \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-recursive +all-am: Makefile +installdirs: installdirs-recursive +installdirs-am: +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." + -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) +clean: clean-recursive + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-recursive + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +html-am: + +info: info-recursive + +info-am: + +install-data-am: + +install-dvi: install-dvi-recursive + +install-dvi-am: + +install-exec-am: + +install-html: install-html-recursive + +install-html-am: + +install-info: install-info-recursive + +install-info-am: + +install-man: + +install-pdf: install-pdf-recursive + +install-pdf-am: + +install-ps: install-ps-recursive + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: + +.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \ + install-am install-strip tags-recursive + +.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ + all all-am check check-am clean clean-generic clean-libtool \ + ctags ctags-recursive distclean distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs installdirs-am maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \ + uninstall uninstall-am + + +-include $(top_srcdir)/git.mk + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/mate-volume-control/data/Makefile.am b/mate-volume-control/data/Makefile.am new file mode 100644 index 0000000..c580a45 --- /dev/null +++ b/mate-volume-control/data/Makefile.am @@ -0,0 +1,29 @@ +NULL = + +SUBDIRS = \ + icons \ + $(NULL) + +@INTLTOOL_DESKTOP_RULE@ +autostartdir = $(sysconfdir)/xdg/autostart +autostart_in_files = mate-volume-control-applet.desktop.in +autostart_DATA = $(autostart_in_files:.desktop.in=.desktop) + +appsdir = $(datadir)/applications +apps_in_files = mate-volume-control.desktop.in +apps_DATA = $(apps_in_files:.desktop.in=.desktop) + +EXTRA_DIST = \ + $(autostart_in_files) \ + mate-volume-control.desktop.in.in \ + $(NULL) + +CLEANFILES = \ + mate-volume-control.desktop \ + $(NULL) + +DISTCLEANFILES = \ + mate-volume-control-applet.desktop \ + $(NULL) + +-include $(top_srcdir)/git.mk diff --git a/mate-volume-control/data/Makefile.in b/mate-volume-control/data/Makefile.in new file mode 100644 index 0000000..fab6a5b --- /dev/null +++ b/mate-volume-control/data/Makefile.in @@ -0,0 +1,731 @@ +# Makefile.in generated by automake 1.11.1 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, +# Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = mate-volume-control/data +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ + $(srcdir)/mate-volume-control.desktop.in.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/as-ac-expand.m4 \ + $(top_srcdir)/m4/as-compiler-flag.m4 \ + $(top_srcdir)/m4/as-version.m4 $(top_srcdir)/m4/intltool.m4 \ + $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ + $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ + $(top_srcdir)/m4/lt~obsolete.m4 \ + $(top_srcdir)/m4/mate-doc-utils.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/build-aux/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = mate-volume-control.desktop.in +CONFIG_CLEAN_VPATH_FILES = +AM_V_GEN = $(am__v_GEN_$(V)) +am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) +am__v_GEN_0 = @echo " GEN " $@; +AM_V_at = $(am__v_at_$(V)) +am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) +am__v_at_0 = @ +SOURCES = +DIST_SOURCES = +RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ + html-recursive info-recursive install-data-recursive \ + install-dvi-recursive install-exec-recursive \ + install-html-recursive install-info-recursive \ + install-pdf-recursive install-ps-recursive install-recursive \ + installcheck-recursive installdirs-recursive pdf-recursive \ + ps-recursive uninstall-recursive +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__installdirs = "$(DESTDIR)$(appsdir)" "$(DESTDIR)$(autostartdir)" +DATA = $(apps_DATA) $(autostart_DATA) +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ + $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ + distdir +ETAGS = etags +CTAGS = ctags +DIST_SUBDIRS = $(SUBDIRS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +am__relativize = \ + dir0=`pwd`; \ + sed_first='s,^\([^/]*\)/.*$$,\1,'; \ + sed_rest='s,^[^/]*/*,,'; \ + sed_last='s,^.*/\([^/]*\)$$,\1,'; \ + sed_butlast='s,/*[^/]*$$,,'; \ + while test -n "$$dir1"; do \ + first=`echo "$$dir1" | sed -e "$$sed_first"`; \ + if test "$$first" != "."; then \ + if test "$$first" = ".."; then \ + dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ + dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ + else \ + first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ + if test "$$first2" = "$$first"; then \ + dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ + else \ + dir2="../$$dir2"; \ + fi; \ + dir0="$$dir0"/"$$first"; \ + fi; \ + fi; \ + dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ + done; \ + reldir="$$dir2" +ACLOCAL = @ACLOCAL@ +ALL_LINGUAS = @ALL_LINGUAS@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CATALOGS = @CATALOGS@ +CATOBJEXT = @CATOBJEXT@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DATADIRNAME = @DATADIRNAME@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DISABLE_DEPRECATED = @DISABLE_DEPRECATED@ +DISTCHECK_CONFIGURE_FLAGS = @DISTCHECK_CONFIGURE_FLAGS@ +DLLTOOL = @DLLTOOL@ +DOC_USER_FORMATS = @DOC_USER_FORMATS@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ +GLADEUI_CATALOG_DIR = @GLADEUI_CATALOG_DIR@ +GLADEUI_CFLAGS = @GLADEUI_CFLAGS@ +GLADEUI_LIBS = @GLADEUI_LIBS@ +GLADEUI_MODULE_DIR = @GLADEUI_MODULE_DIR@ +GLIB_GENMARSHAL = @GLIB_GENMARSHAL@ +GMOFILES = @GMOFILES@ +GMP_CFLAGS = @GMP_CFLAGS@ +GMP_LIBS = @GMP_LIBS@ +GMSGFMT = @GMSGFMT@ +GREP = @GREP@ +GSR_CFLAGS = @GSR_CFLAGS@ +GSR_LIBS = @GSR_LIBS@ +GSTMIXER_CFLAGS = @GSTMIXER_CFLAGS@ +GSTMIXER_LIBS = @GSTMIXER_LIBS@ +GSTPROPS_CFLAGS = @GSTPROPS_CFLAGS@ +GSTPROPS_LIBS = @GSTPROPS_LIBS@ +GST_MAJORMINOR = @GST_MAJORMINOR@ +HAVE_PULSEAUDIO = @HAVE_PULSEAUDIO@ +HAVE_SOUND_THEME = @HAVE_SOUND_THEME@ +HELP_DIR = @HELP_DIR@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INSTOBJEXT = @INSTOBJEXT@ +INTLLIBS = @INTLLIBS@ +INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@ +INTLTOOL_MERGE = @INTLTOOL_MERGE@ +INTLTOOL_PERL = @INTLTOOL_PERL@ +INTLTOOL_UPDATE = @INTLTOOL_UPDATE@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MATECC_DESKTOP_DIR = @MATECC_DESKTOP_DIR@ +MATECONFTOOL = @MATECONFTOOL@ +MATECONF_SCHEMA_CONFIG_SOURCE = @MATECONF_SCHEMA_CONFIG_SOURCE@ +MATECONF_SCHEMA_FILE_DIR = @MATECONF_SCHEMA_FILE_DIR@ +MKDIR_P = @MKDIR_P@ +MKINSTALLDIRS = @MKINSTALLDIRS@ +MSGFMT = @MSGFMT@ +MSGFMT_OPTS = @MSGFMT_OPTS@ +MSGMERGE = @MSGMERGE@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OMF_DIR = @OMF_DIR@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PACKAGE_VERSION_MAJOR = @PACKAGE_VERSION_MAJOR@ +PACKAGE_VERSION_MICRO = @PACKAGE_VERSION_MICRO@ +PACKAGE_VERSION_MINOR = @PACKAGE_VERSION_MINOR@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +POFILES = @POFILES@ +POSUB = @POSUB@ +PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ +PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@ +PROGRAMS_GSTPROPS = @PROGRAMS_GSTPROPS@ +PULSEAUDIO_CFLAGS = @PULSEAUDIO_CFLAGS@ +PULSEAUDIO_LIBS = @PULSEAUDIO_LIBS@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SOUNDTHEME_CFLAGS = @SOUNDTHEME_CFLAGS@ +SOUNDTHEME_LIBS = @SOUNDTHEME_LIBS@ +SOUND_THEME_CFLAGS = @SOUND_THEME_CFLAGS@ +SOUND_THEME_LIBS = @SOUND_THEME_LIBS@ +STRIP = @STRIP@ +USE_NLS = @USE_NLS@ +VERSION = @VERSION@ +VOLUME_CONTROL_CFLAGS = @VOLUME_CONTROL_CFLAGS@ +VOLUME_CONTROL_LIBS = @VOLUME_CONTROL_LIBS@ +WARN_CFLAGS = @WARN_CFLAGS@ +WARN_CXXFLAGS = @WARN_CXXFLAGS@ +XGETTEXT = @XGETTEXT@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +NULL = +SUBDIRS = \ + icons \ + $(NULL) + +autostartdir = $(sysconfdir)/xdg/autostart +autostart_in_files = mate-volume-control-applet.desktop.in +autostart_DATA = $(autostart_in_files:.desktop.in=.desktop) +appsdir = $(datadir)/applications +apps_in_files = mate-volume-control.desktop.in +apps_DATA = $(apps_in_files:.desktop.in=.desktop) +EXTRA_DIST = \ + $(autostart_in_files) \ + mate-volume-control.desktop.in.in \ + $(NULL) + +CLEANFILES = \ + mate-volume-control.desktop \ + $(NULL) + +DISTCLEANFILES = \ + mate-volume-control-applet.desktop \ + $(NULL) + +all: all-recursive + +.SUFFIXES: +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign mate-volume-control/data/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign mate-volume-control/data/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): +mate-volume-control.desktop.in: $(top_builddir)/config.status $(srcdir)/mate-volume-control.desktop.in.in + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-appsDATA: $(apps_DATA) + @$(NORMAL_INSTALL) + test -z "$(appsdir)" || $(MKDIR_P) "$(DESTDIR)$(appsdir)" + @list='$(apps_DATA)'; test -n "$(appsdir)" || list=; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(appsdir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(appsdir)" || exit $$?; \ + done + +uninstall-appsDATA: + @$(NORMAL_UNINSTALL) + @list='$(apps_DATA)'; test -n "$(appsdir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + test -n "$$files" || exit 0; \ + echo " ( cd '$(DESTDIR)$(appsdir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(appsdir)" && rm -f $$files +install-autostartDATA: $(autostart_DATA) + @$(NORMAL_INSTALL) + test -z "$(autostartdir)" || $(MKDIR_P) "$(DESTDIR)$(autostartdir)" + @list='$(autostart_DATA)'; test -n "$(autostartdir)" || list=; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(autostartdir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(autostartdir)" || exit $$?; \ + done + +uninstall-autostartDATA: + @$(NORMAL_UNINSTALL) + @list='$(autostart_DATA)'; test -n "$(autostartdir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + test -n "$$files" || exit 0; \ + echo " ( cd '$(DESTDIR)$(autostartdir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(autostartdir)" && rm -f $$files + +# This directory's subdirectories are mostly independent; you can cd +# into them and run `make' without going through this Makefile. +# To change the values of `make' variables: instead of editing Makefiles, +# (1) if the variable is set in `config.status', edit `config.status' +# (which will cause the Makefiles to be regenerated when you run `make'); +# (2) otherwise, pass the desired values on the `make' command line. +$(RECURSIVE_TARGETS): + @fail= failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +$(RECURSIVE_CLEAN_TARGETS): + @fail= failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + rev=''; for subdir in $$list; do \ + if test "$$subdir" = "."; then :; else \ + rev="$$subdir $$rev"; \ + fi; \ + done; \ + rev="$$rev ."; \ + target=`echo $@ | sed s/-recursive//`; \ + for subdir in $$rev; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done +ctags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + done + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + set x; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: CTAGS +CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ + $(am__relativize); \ + new_distdir=$$reldir; \ + dir1=$$subdir; dir2="$(top_distdir)"; \ + $(am__relativize); \ + new_top_distdir=$$reldir; \ + echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ + echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ + ($(am__cd) $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$new_top_distdir" \ + distdir="$$new_distdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + am__skip_mode_fix=: \ + distdir) \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-recursive +all-am: Makefile $(DATA) +installdirs: installdirs-recursive +installdirs-am: + for dir in "$(DESTDIR)$(appsdir)" "$(DESTDIR)$(autostartdir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-recursive + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-recursive + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +html-am: + +info: info-recursive + +info-am: + +install-data-am: install-appsDATA install-autostartDATA + +install-dvi: install-dvi-recursive + +install-dvi-am: + +install-exec-am: + +install-html: install-html-recursive + +install-html-am: + +install-info: install-info-recursive + +install-info-am: + +install-man: + +install-pdf: install-pdf-recursive + +install-pdf-am: + +install-ps: install-ps-recursive + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: uninstall-appsDATA uninstall-autostartDATA + +.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \ + install-am install-strip tags-recursive + +.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ + all all-am check check-am clean clean-generic clean-libtool \ + ctags ctags-recursive distclean distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-appsDATA \ + install-autostartDATA install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + installdirs-am maintainer-clean maintainer-clean-generic \ + mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ + ps ps-am tags tags-recursive uninstall uninstall-am \ + uninstall-appsDATA uninstall-autostartDATA + + +@INTLTOOL_DESKTOP_RULE@ + +-include $(top_srcdir)/git.mk + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/mate-volume-control/data/icons/16x16/Makefile.am b/mate-volume-control/data/icons/16x16/Makefile.am new file mode 100644 index 0000000..05a9700 --- /dev/null +++ b/mate-volume-control/data/icons/16x16/Makefile.am @@ -0,0 +1,4 @@ +SUBDIRS = status + + +-include $(top_srcdir)/git.mk diff --git a/mate-volume-control/data/icons/16x16/Makefile.in b/mate-volume-control/data/icons/16x16/Makefile.in new file mode 100644 index 0000000..926ec3d --- /dev/null +++ b/mate-volume-control/data/icons/16x16/Makefile.in @@ -0,0 +1,633 @@ +# Makefile.in generated by automake 1.11.1 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, +# Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = mate-volume-control/data/icons/16x16 +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/as-ac-expand.m4 \ + $(top_srcdir)/m4/as-compiler-flag.m4 \ + $(top_srcdir)/m4/as-version.m4 $(top_srcdir)/m4/intltool.m4 \ + $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ + $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ + $(top_srcdir)/m4/lt~obsolete.m4 \ + $(top_srcdir)/m4/mate-doc-utils.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/build-aux/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +AM_V_GEN = $(am__v_GEN_$(V)) +am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) +am__v_GEN_0 = @echo " GEN " $@; +AM_V_at = $(am__v_at_$(V)) +am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) +am__v_at_0 = @ +SOURCES = +DIST_SOURCES = +RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ + html-recursive info-recursive install-data-recursive \ + install-dvi-recursive install-exec-recursive \ + install-html-recursive install-info-recursive \ + install-pdf-recursive install-ps-recursive install-recursive \ + installcheck-recursive installdirs-recursive pdf-recursive \ + ps-recursive uninstall-recursive +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ + $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ + distdir +ETAGS = etags +CTAGS = ctags +DIST_SUBDIRS = $(SUBDIRS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +am__relativize = \ + dir0=`pwd`; \ + sed_first='s,^\([^/]*\)/.*$$,\1,'; \ + sed_rest='s,^[^/]*/*,,'; \ + sed_last='s,^.*/\([^/]*\)$$,\1,'; \ + sed_butlast='s,/*[^/]*$$,,'; \ + while test -n "$$dir1"; do \ + first=`echo "$$dir1" | sed -e "$$sed_first"`; \ + if test "$$first" != "."; then \ + if test "$$first" = ".."; then \ + dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ + dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ + else \ + first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ + if test "$$first2" = "$$first"; then \ + dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ + else \ + dir2="../$$dir2"; \ + fi; \ + dir0="$$dir0"/"$$first"; \ + fi; \ + fi; \ + dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ + done; \ + reldir="$$dir2" +ACLOCAL = @ACLOCAL@ +ALL_LINGUAS = @ALL_LINGUAS@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CATALOGS = @CATALOGS@ +CATOBJEXT = @CATOBJEXT@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DATADIRNAME = @DATADIRNAME@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DISABLE_DEPRECATED = @DISABLE_DEPRECATED@ +DISTCHECK_CONFIGURE_FLAGS = @DISTCHECK_CONFIGURE_FLAGS@ +DLLTOOL = @DLLTOOL@ +DOC_USER_FORMATS = @DOC_USER_FORMATS@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ +GLADEUI_CATALOG_DIR = @GLADEUI_CATALOG_DIR@ +GLADEUI_CFLAGS = @GLADEUI_CFLAGS@ +GLADEUI_LIBS = @GLADEUI_LIBS@ +GLADEUI_MODULE_DIR = @GLADEUI_MODULE_DIR@ +GLIB_GENMARSHAL = @GLIB_GENMARSHAL@ +GMOFILES = @GMOFILES@ +GMP_CFLAGS = @GMP_CFLAGS@ +GMP_LIBS = @GMP_LIBS@ +GMSGFMT = @GMSGFMT@ +GREP = @GREP@ +GSR_CFLAGS = @GSR_CFLAGS@ +GSR_LIBS = @GSR_LIBS@ +GSTMIXER_CFLAGS = @GSTMIXER_CFLAGS@ +GSTMIXER_LIBS = @GSTMIXER_LIBS@ +GSTPROPS_CFLAGS = @GSTPROPS_CFLAGS@ +GSTPROPS_LIBS = @GSTPROPS_LIBS@ +GST_MAJORMINOR = @GST_MAJORMINOR@ +HAVE_PULSEAUDIO = @HAVE_PULSEAUDIO@ +HAVE_SOUND_THEME = @HAVE_SOUND_THEME@ +HELP_DIR = @HELP_DIR@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INSTOBJEXT = @INSTOBJEXT@ +INTLLIBS = @INTLLIBS@ +INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@ +INTLTOOL_MERGE = @INTLTOOL_MERGE@ +INTLTOOL_PERL = @INTLTOOL_PERL@ +INTLTOOL_UPDATE = @INTLTOOL_UPDATE@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MATECC_DESKTOP_DIR = @MATECC_DESKTOP_DIR@ +MATECONFTOOL = @MATECONFTOOL@ +MATECONF_SCHEMA_CONFIG_SOURCE = @MATECONF_SCHEMA_CONFIG_SOURCE@ +MATECONF_SCHEMA_FILE_DIR = @MATECONF_SCHEMA_FILE_DIR@ +MKDIR_P = @MKDIR_P@ +MKINSTALLDIRS = @MKINSTALLDIRS@ +MSGFMT = @MSGFMT@ +MSGFMT_OPTS = @MSGFMT_OPTS@ +MSGMERGE = @MSGMERGE@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OMF_DIR = @OMF_DIR@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PACKAGE_VERSION_MAJOR = @PACKAGE_VERSION_MAJOR@ +PACKAGE_VERSION_MICRO = @PACKAGE_VERSION_MICRO@ +PACKAGE_VERSION_MINOR = @PACKAGE_VERSION_MINOR@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +POFILES = @POFILES@ +POSUB = @POSUB@ +PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ +PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@ +PROGRAMS_GSTPROPS = @PROGRAMS_GSTPROPS@ +PULSEAUDIO_CFLAGS = @PULSEAUDIO_CFLAGS@ +PULSEAUDIO_LIBS = @PULSEAUDIO_LIBS@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SOUNDTHEME_CFLAGS = @SOUNDTHEME_CFLAGS@ +SOUNDTHEME_LIBS = @SOUNDTHEME_LIBS@ +SOUND_THEME_CFLAGS = @SOUND_THEME_CFLAGS@ +SOUND_THEME_LIBS = @SOUND_THEME_LIBS@ +STRIP = @STRIP@ +USE_NLS = @USE_NLS@ +VERSION = @VERSION@ +VOLUME_CONTROL_CFLAGS = @VOLUME_CONTROL_CFLAGS@ +VOLUME_CONTROL_LIBS = @VOLUME_CONTROL_LIBS@ +WARN_CFLAGS = @WARN_CFLAGS@ +WARN_CXXFLAGS = @WARN_CXXFLAGS@ +XGETTEXT = @XGETTEXT@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +SUBDIRS = status +all: all-recursive + +.SUFFIXES: +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign mate-volume-control/data/icons/16x16/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign mate-volume-control/data/icons/16x16/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +# This directory's subdirectories are mostly independent; you can cd +# into them and run `make' without going through this Makefile. +# To change the values of `make' variables: instead of editing Makefiles, +# (1) if the variable is set in `config.status', edit `config.status' +# (which will cause the Makefiles to be regenerated when you run `make'); +# (2) otherwise, pass the desired values on the `make' command line. +$(RECURSIVE_TARGETS): + @fail= failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +$(RECURSIVE_CLEAN_TARGETS): + @fail= failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + rev=''; for subdir in $$list; do \ + if test "$$subdir" = "."; then :; else \ + rev="$$subdir $$rev"; \ + fi; \ + done; \ + rev="$$rev ."; \ + target=`echo $@ | sed s/-recursive//`; \ + for subdir in $$rev; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done +ctags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + done + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + set x; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: CTAGS +CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ + $(am__relativize); \ + new_distdir=$$reldir; \ + dir1=$$subdir; dir2="$(top_distdir)"; \ + $(am__relativize); \ + new_top_distdir=$$reldir; \ + echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ + echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ + ($(am__cd) $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$new_top_distdir" \ + distdir="$$new_distdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + am__skip_mode_fix=: \ + distdir) \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-recursive +all-am: Makefile +installdirs: installdirs-recursive +installdirs-am: +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-recursive + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-recursive + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +html-am: + +info: info-recursive + +info-am: + +install-data-am: + +install-dvi: install-dvi-recursive + +install-dvi-am: + +install-exec-am: + +install-html: install-html-recursive + +install-html-am: + +install-info: install-info-recursive + +install-info-am: + +install-man: + +install-pdf: install-pdf-recursive + +install-pdf-am: + +install-ps: install-ps-recursive + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: + +.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \ + install-am install-strip tags-recursive + +.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ + all all-am check check-am clean clean-generic clean-libtool \ + ctags ctags-recursive distclean distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs installdirs-am maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \ + uninstall uninstall-am + + +-include $(top_srcdir)/git.mk + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/mate-volume-control/data/icons/16x16/status/Makefile.am b/mate-volume-control/data/icons/16x16/status/Makefile.am new file mode 100644 index 0000000..041fb3b --- /dev/null +++ b/mate-volume-control/data/icons/16x16/status/Makefile.am @@ -0,0 +1,21 @@ +NULL = + +themedir = $(pkgdatadir)/icons/mate +size = 16x16 +context = status + +iconsdir = $(themedir)/$(size)/$(context) + +icons_DATA = \ + audio-input-microphone-high.png \ + audio-input-microphone-low.png \ + audio-input-microphone-medium.png \ + audio-input-microphone-muted.png \ + $(NULL) + +EXTRA_DIST = \ + $(icons_DATA) \ + $(NULL) + + +-include $(top_srcdir)/git.mk diff --git a/mate-volume-control/data/icons/16x16/status/Makefile.in b/mate-volume-control/data/icons/16x16/status/Makefile.in new file mode 100644 index 0000000..23e6e15 --- /dev/null +++ b/mate-volume-control/data/icons/16x16/status/Makefile.in @@ -0,0 +1,494 @@ +# Makefile.in generated by automake 1.11.1 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, +# Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = mate-volume-control/data/icons/16x16/status +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/as-ac-expand.m4 \ + $(top_srcdir)/m4/as-compiler-flag.m4 \ + $(top_srcdir)/m4/as-version.m4 $(top_srcdir)/m4/intltool.m4 \ + $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ + $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ + $(top_srcdir)/m4/lt~obsolete.m4 \ + $(top_srcdir)/m4/mate-doc-utils.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/build-aux/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +AM_V_GEN = $(am__v_GEN_$(V)) +am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) +am__v_GEN_0 = @echo " GEN " $@; +AM_V_at = $(am__v_at_$(V)) +am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) +am__v_at_0 = @ +SOURCES = +DIST_SOURCES = +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__installdirs = "$(DESTDIR)$(iconsdir)" +DATA = $(icons_DATA) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +ALL_LINGUAS = @ALL_LINGUAS@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CATALOGS = @CATALOGS@ +CATOBJEXT = @CATOBJEXT@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DATADIRNAME = @DATADIRNAME@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DISABLE_DEPRECATED = @DISABLE_DEPRECATED@ +DISTCHECK_CONFIGURE_FLAGS = @DISTCHECK_CONFIGURE_FLAGS@ +DLLTOOL = @DLLTOOL@ +DOC_USER_FORMATS = @DOC_USER_FORMATS@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ +GLADEUI_CATALOG_DIR = @GLADEUI_CATALOG_DIR@ +GLADEUI_CFLAGS = @GLADEUI_CFLAGS@ +GLADEUI_LIBS = @GLADEUI_LIBS@ +GLADEUI_MODULE_DIR = @GLADEUI_MODULE_DIR@ +GLIB_GENMARSHAL = @GLIB_GENMARSHAL@ +GMOFILES = @GMOFILES@ +GMP_CFLAGS = @GMP_CFLAGS@ +GMP_LIBS = @GMP_LIBS@ +GMSGFMT = @GMSGFMT@ +GREP = @GREP@ +GSR_CFLAGS = @GSR_CFLAGS@ +GSR_LIBS = @GSR_LIBS@ +GSTMIXER_CFLAGS = @GSTMIXER_CFLAGS@ +GSTMIXER_LIBS = @GSTMIXER_LIBS@ +GSTPROPS_CFLAGS = @GSTPROPS_CFLAGS@ +GSTPROPS_LIBS = @GSTPROPS_LIBS@ +GST_MAJORMINOR = @GST_MAJORMINOR@ +HAVE_PULSEAUDIO = @HAVE_PULSEAUDIO@ +HAVE_SOUND_THEME = @HAVE_SOUND_THEME@ +HELP_DIR = @HELP_DIR@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INSTOBJEXT = @INSTOBJEXT@ +INTLLIBS = @INTLLIBS@ +INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@ +INTLTOOL_MERGE = @INTLTOOL_MERGE@ +INTLTOOL_PERL = @INTLTOOL_PERL@ +INTLTOOL_UPDATE = @INTLTOOL_UPDATE@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MATECC_DESKTOP_DIR = @MATECC_DESKTOP_DIR@ +MATECONFTOOL = @MATECONFTOOL@ +MATECONF_SCHEMA_CONFIG_SOURCE = @MATECONF_SCHEMA_CONFIG_SOURCE@ +MATECONF_SCHEMA_FILE_DIR = @MATECONF_SCHEMA_FILE_DIR@ +MKDIR_P = @MKDIR_P@ +MKINSTALLDIRS = @MKINSTALLDIRS@ +MSGFMT = @MSGFMT@ +MSGFMT_OPTS = @MSGFMT_OPTS@ +MSGMERGE = @MSGMERGE@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OMF_DIR = @OMF_DIR@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PACKAGE_VERSION_MAJOR = @PACKAGE_VERSION_MAJOR@ +PACKAGE_VERSION_MICRO = @PACKAGE_VERSION_MICRO@ +PACKAGE_VERSION_MINOR = @PACKAGE_VERSION_MINOR@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +POFILES = @POFILES@ +POSUB = @POSUB@ +PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ +PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@ +PROGRAMS_GSTPROPS = @PROGRAMS_GSTPROPS@ +PULSEAUDIO_CFLAGS = @PULSEAUDIO_CFLAGS@ +PULSEAUDIO_LIBS = @PULSEAUDIO_LIBS@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SOUNDTHEME_CFLAGS = @SOUNDTHEME_CFLAGS@ +SOUNDTHEME_LIBS = @SOUNDTHEME_LIBS@ +SOUND_THEME_CFLAGS = @SOUND_THEME_CFLAGS@ +SOUND_THEME_LIBS = @SOUND_THEME_LIBS@ +STRIP = @STRIP@ +USE_NLS = @USE_NLS@ +VERSION = @VERSION@ +VOLUME_CONTROL_CFLAGS = @VOLUME_CONTROL_CFLAGS@ +VOLUME_CONTROL_LIBS = @VOLUME_CONTROL_LIBS@ +WARN_CFLAGS = @WARN_CFLAGS@ +WARN_CXXFLAGS = @WARN_CXXFLAGS@ +XGETTEXT = @XGETTEXT@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +NULL = +themedir = $(pkgdatadir)/icons/mate +size = 16x16 +context = status +iconsdir = $(themedir)/$(size)/$(context) +icons_DATA = \ + audio-input-microphone-high.png \ + audio-input-microphone-low.png \ + audio-input-microphone-medium.png \ + audio-input-microphone-muted.png \ + $(NULL) + +EXTRA_DIST = \ + $(icons_DATA) \ + $(NULL) + +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign mate-volume-control/data/icons/16x16/status/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign mate-volume-control/data/icons/16x16/status/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-iconsDATA: $(icons_DATA) + @$(NORMAL_INSTALL) + test -z "$(iconsdir)" || $(MKDIR_P) "$(DESTDIR)$(iconsdir)" + @list='$(icons_DATA)'; test -n "$(iconsdir)" || list=; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(iconsdir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(iconsdir)" || exit $$?; \ + done + +uninstall-iconsDATA: + @$(NORMAL_UNINSTALL) + @list='$(icons_DATA)'; test -n "$(iconsdir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + test -n "$$files" || exit 0; \ + echo " ( cd '$(DESTDIR)$(iconsdir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(iconsdir)" && rm -f $$files +tags: TAGS +TAGS: + +ctags: CTAGS +CTAGS: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(DATA) +installdirs: + for dir in "$(DESTDIR)$(iconsdir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-iconsDATA + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-iconsDATA + +.MAKE: install-am install-strip + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + distclean distclean-generic distclean-libtool distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-iconsDATA install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + uninstall uninstall-am uninstall-iconsDATA + + +-include $(top_srcdir)/git.mk + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/mate-volume-control/data/icons/16x16/status/audio-input-microphone-high.png b/mate-volume-control/data/icons/16x16/status/audio-input-microphone-high.png Binary files differnew file mode 100644 index 0000000..160d2b8 --- /dev/null +++ b/mate-volume-control/data/icons/16x16/status/audio-input-microphone-high.png diff --git a/mate-volume-control/data/icons/16x16/status/audio-input-microphone-low.png b/mate-volume-control/data/icons/16x16/status/audio-input-microphone-low.png Binary files differnew file mode 100644 index 0000000..b08ab64 --- /dev/null +++ b/mate-volume-control/data/icons/16x16/status/audio-input-microphone-low.png diff --git a/mate-volume-control/data/icons/16x16/status/audio-input-microphone-medium.png b/mate-volume-control/data/icons/16x16/status/audio-input-microphone-medium.png Binary files differnew file mode 100644 index 0000000..48a4c05 --- /dev/null +++ b/mate-volume-control/data/icons/16x16/status/audio-input-microphone-medium.png diff --git a/mate-volume-control/data/icons/16x16/status/audio-input-microphone-muted.png b/mate-volume-control/data/icons/16x16/status/audio-input-microphone-muted.png Binary files differnew file mode 100644 index 0000000..7aed52c --- /dev/null +++ b/mate-volume-control/data/icons/16x16/status/audio-input-microphone-muted.png diff --git a/mate-volume-control/data/icons/22x22/Makefile.am b/mate-volume-control/data/icons/22x22/Makefile.am new file mode 100644 index 0000000..05a9700 --- /dev/null +++ b/mate-volume-control/data/icons/22x22/Makefile.am @@ -0,0 +1,4 @@ +SUBDIRS = status + + +-include $(top_srcdir)/git.mk diff --git a/mate-volume-control/data/icons/22x22/Makefile.in b/mate-volume-control/data/icons/22x22/Makefile.in new file mode 100644 index 0000000..8fb3d42 --- /dev/null +++ b/mate-volume-control/data/icons/22x22/Makefile.in @@ -0,0 +1,633 @@ +# Makefile.in generated by automake 1.11.1 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, +# Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = mate-volume-control/data/icons/22x22 +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/as-ac-expand.m4 \ + $(top_srcdir)/m4/as-compiler-flag.m4 \ + $(top_srcdir)/m4/as-version.m4 $(top_srcdir)/m4/intltool.m4 \ + $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ + $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ + $(top_srcdir)/m4/lt~obsolete.m4 \ + $(top_srcdir)/m4/mate-doc-utils.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/build-aux/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +AM_V_GEN = $(am__v_GEN_$(V)) +am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) +am__v_GEN_0 = @echo " GEN " $@; +AM_V_at = $(am__v_at_$(V)) +am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) +am__v_at_0 = @ +SOURCES = +DIST_SOURCES = +RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ + html-recursive info-recursive install-data-recursive \ + install-dvi-recursive install-exec-recursive \ + install-html-recursive install-info-recursive \ + install-pdf-recursive install-ps-recursive install-recursive \ + installcheck-recursive installdirs-recursive pdf-recursive \ + ps-recursive uninstall-recursive +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ + $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ + distdir +ETAGS = etags +CTAGS = ctags +DIST_SUBDIRS = $(SUBDIRS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +am__relativize = \ + dir0=`pwd`; \ + sed_first='s,^\([^/]*\)/.*$$,\1,'; \ + sed_rest='s,^[^/]*/*,,'; \ + sed_last='s,^.*/\([^/]*\)$$,\1,'; \ + sed_butlast='s,/*[^/]*$$,,'; \ + while test -n "$$dir1"; do \ + first=`echo "$$dir1" | sed -e "$$sed_first"`; \ + if test "$$first" != "."; then \ + if test "$$first" = ".."; then \ + dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ + dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ + else \ + first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ + if test "$$first2" = "$$first"; then \ + dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ + else \ + dir2="../$$dir2"; \ + fi; \ + dir0="$$dir0"/"$$first"; \ + fi; \ + fi; \ + dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ + done; \ + reldir="$$dir2" +ACLOCAL = @ACLOCAL@ +ALL_LINGUAS = @ALL_LINGUAS@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CATALOGS = @CATALOGS@ +CATOBJEXT = @CATOBJEXT@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DATADIRNAME = @DATADIRNAME@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DISABLE_DEPRECATED = @DISABLE_DEPRECATED@ +DISTCHECK_CONFIGURE_FLAGS = @DISTCHECK_CONFIGURE_FLAGS@ +DLLTOOL = @DLLTOOL@ +DOC_USER_FORMATS = @DOC_USER_FORMATS@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ +GLADEUI_CATALOG_DIR = @GLADEUI_CATALOG_DIR@ +GLADEUI_CFLAGS = @GLADEUI_CFLAGS@ +GLADEUI_LIBS = @GLADEUI_LIBS@ +GLADEUI_MODULE_DIR = @GLADEUI_MODULE_DIR@ +GLIB_GENMARSHAL = @GLIB_GENMARSHAL@ +GMOFILES = @GMOFILES@ +GMP_CFLAGS = @GMP_CFLAGS@ +GMP_LIBS = @GMP_LIBS@ +GMSGFMT = @GMSGFMT@ +GREP = @GREP@ +GSR_CFLAGS = @GSR_CFLAGS@ +GSR_LIBS = @GSR_LIBS@ +GSTMIXER_CFLAGS = @GSTMIXER_CFLAGS@ +GSTMIXER_LIBS = @GSTMIXER_LIBS@ +GSTPROPS_CFLAGS = @GSTPROPS_CFLAGS@ +GSTPROPS_LIBS = @GSTPROPS_LIBS@ +GST_MAJORMINOR = @GST_MAJORMINOR@ +HAVE_PULSEAUDIO = @HAVE_PULSEAUDIO@ +HAVE_SOUND_THEME = @HAVE_SOUND_THEME@ +HELP_DIR = @HELP_DIR@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INSTOBJEXT = @INSTOBJEXT@ +INTLLIBS = @INTLLIBS@ +INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@ +INTLTOOL_MERGE = @INTLTOOL_MERGE@ +INTLTOOL_PERL = @INTLTOOL_PERL@ +INTLTOOL_UPDATE = @INTLTOOL_UPDATE@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MATECC_DESKTOP_DIR = @MATECC_DESKTOP_DIR@ +MATECONFTOOL = @MATECONFTOOL@ +MATECONF_SCHEMA_CONFIG_SOURCE = @MATECONF_SCHEMA_CONFIG_SOURCE@ +MATECONF_SCHEMA_FILE_DIR = @MATECONF_SCHEMA_FILE_DIR@ +MKDIR_P = @MKDIR_P@ +MKINSTALLDIRS = @MKINSTALLDIRS@ +MSGFMT = @MSGFMT@ +MSGFMT_OPTS = @MSGFMT_OPTS@ +MSGMERGE = @MSGMERGE@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OMF_DIR = @OMF_DIR@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PACKAGE_VERSION_MAJOR = @PACKAGE_VERSION_MAJOR@ +PACKAGE_VERSION_MICRO = @PACKAGE_VERSION_MICRO@ +PACKAGE_VERSION_MINOR = @PACKAGE_VERSION_MINOR@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +POFILES = @POFILES@ +POSUB = @POSUB@ +PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ +PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@ +PROGRAMS_GSTPROPS = @PROGRAMS_GSTPROPS@ +PULSEAUDIO_CFLAGS = @PULSEAUDIO_CFLAGS@ +PULSEAUDIO_LIBS = @PULSEAUDIO_LIBS@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SOUNDTHEME_CFLAGS = @SOUNDTHEME_CFLAGS@ +SOUNDTHEME_LIBS = @SOUNDTHEME_LIBS@ +SOUND_THEME_CFLAGS = @SOUND_THEME_CFLAGS@ +SOUND_THEME_LIBS = @SOUND_THEME_LIBS@ +STRIP = @STRIP@ +USE_NLS = @USE_NLS@ +VERSION = @VERSION@ +VOLUME_CONTROL_CFLAGS = @VOLUME_CONTROL_CFLAGS@ +VOLUME_CONTROL_LIBS = @VOLUME_CONTROL_LIBS@ +WARN_CFLAGS = @WARN_CFLAGS@ +WARN_CXXFLAGS = @WARN_CXXFLAGS@ +XGETTEXT = @XGETTEXT@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +SUBDIRS = status +all: all-recursive + +.SUFFIXES: +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign mate-volume-control/data/icons/22x22/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign mate-volume-control/data/icons/22x22/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +# This directory's subdirectories are mostly independent; you can cd +# into them and run `make' without going through this Makefile. +# To change the values of `make' variables: instead of editing Makefiles, +# (1) if the variable is set in `config.status', edit `config.status' +# (which will cause the Makefiles to be regenerated when you run `make'); +# (2) otherwise, pass the desired values on the `make' command line. +$(RECURSIVE_TARGETS): + @fail= failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +$(RECURSIVE_CLEAN_TARGETS): + @fail= failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + rev=''; for subdir in $$list; do \ + if test "$$subdir" = "."; then :; else \ + rev="$$subdir $$rev"; \ + fi; \ + done; \ + rev="$$rev ."; \ + target=`echo $@ | sed s/-recursive//`; \ + for subdir in $$rev; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done +ctags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + done + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + set x; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: CTAGS +CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ + $(am__relativize); \ + new_distdir=$$reldir; \ + dir1=$$subdir; dir2="$(top_distdir)"; \ + $(am__relativize); \ + new_top_distdir=$$reldir; \ + echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ + echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ + ($(am__cd) $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$new_top_distdir" \ + distdir="$$new_distdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + am__skip_mode_fix=: \ + distdir) \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-recursive +all-am: Makefile +installdirs: installdirs-recursive +installdirs-am: +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-recursive + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-recursive + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +html-am: + +info: info-recursive + +info-am: + +install-data-am: + +install-dvi: install-dvi-recursive + +install-dvi-am: + +install-exec-am: + +install-html: install-html-recursive + +install-html-am: + +install-info: install-info-recursive + +install-info-am: + +install-man: + +install-pdf: install-pdf-recursive + +install-pdf-am: + +install-ps: install-ps-recursive + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: + +.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \ + install-am install-strip tags-recursive + +.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ + all all-am check check-am clean clean-generic clean-libtool \ + ctags ctags-recursive distclean distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs installdirs-am maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \ + uninstall uninstall-am + + +-include $(top_srcdir)/git.mk + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/mate-volume-control/data/icons/22x22/status/Makefile.am b/mate-volume-control/data/icons/22x22/status/Makefile.am new file mode 100644 index 0000000..53b0a3a --- /dev/null +++ b/mate-volume-control/data/icons/22x22/status/Makefile.am @@ -0,0 +1,21 @@ +NULL = + +themedir = $(pkgdatadir)/icons/mate +size = 22x22 +context = status + +iconsdir = $(themedir)/$(size)/$(context) + +icons_DATA = \ + audio-input-microphone-high.png \ + audio-input-microphone-low.png \ + audio-input-microphone-medium.png \ + audio-input-microphone-muted.png \ + $(NULL) + +EXTRA_DIST = \ + $(icons_DATA) \ + $(NULL) + + +-include $(top_srcdir)/git.mk diff --git a/mate-volume-control/data/icons/22x22/status/Makefile.in b/mate-volume-control/data/icons/22x22/status/Makefile.in new file mode 100644 index 0000000..0941710 --- /dev/null +++ b/mate-volume-control/data/icons/22x22/status/Makefile.in @@ -0,0 +1,494 @@ +# Makefile.in generated by automake 1.11.1 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, +# Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = mate-volume-control/data/icons/22x22/status +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/as-ac-expand.m4 \ + $(top_srcdir)/m4/as-compiler-flag.m4 \ + $(top_srcdir)/m4/as-version.m4 $(top_srcdir)/m4/intltool.m4 \ + $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ + $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ + $(top_srcdir)/m4/lt~obsolete.m4 \ + $(top_srcdir)/m4/mate-doc-utils.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/build-aux/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +AM_V_GEN = $(am__v_GEN_$(V)) +am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) +am__v_GEN_0 = @echo " GEN " $@; +AM_V_at = $(am__v_at_$(V)) +am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) +am__v_at_0 = @ +SOURCES = +DIST_SOURCES = +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__installdirs = "$(DESTDIR)$(iconsdir)" +DATA = $(icons_DATA) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +ALL_LINGUAS = @ALL_LINGUAS@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CATALOGS = @CATALOGS@ +CATOBJEXT = @CATOBJEXT@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DATADIRNAME = @DATADIRNAME@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DISABLE_DEPRECATED = @DISABLE_DEPRECATED@ +DISTCHECK_CONFIGURE_FLAGS = @DISTCHECK_CONFIGURE_FLAGS@ +DLLTOOL = @DLLTOOL@ +DOC_USER_FORMATS = @DOC_USER_FORMATS@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ +GLADEUI_CATALOG_DIR = @GLADEUI_CATALOG_DIR@ +GLADEUI_CFLAGS = @GLADEUI_CFLAGS@ +GLADEUI_LIBS = @GLADEUI_LIBS@ +GLADEUI_MODULE_DIR = @GLADEUI_MODULE_DIR@ +GLIB_GENMARSHAL = @GLIB_GENMARSHAL@ +GMOFILES = @GMOFILES@ +GMP_CFLAGS = @GMP_CFLAGS@ +GMP_LIBS = @GMP_LIBS@ +GMSGFMT = @GMSGFMT@ +GREP = @GREP@ +GSR_CFLAGS = @GSR_CFLAGS@ +GSR_LIBS = @GSR_LIBS@ +GSTMIXER_CFLAGS = @GSTMIXER_CFLAGS@ +GSTMIXER_LIBS = @GSTMIXER_LIBS@ +GSTPROPS_CFLAGS = @GSTPROPS_CFLAGS@ +GSTPROPS_LIBS = @GSTPROPS_LIBS@ +GST_MAJORMINOR = @GST_MAJORMINOR@ +HAVE_PULSEAUDIO = @HAVE_PULSEAUDIO@ +HAVE_SOUND_THEME = @HAVE_SOUND_THEME@ +HELP_DIR = @HELP_DIR@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INSTOBJEXT = @INSTOBJEXT@ +INTLLIBS = @INTLLIBS@ +INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@ +INTLTOOL_MERGE = @INTLTOOL_MERGE@ +INTLTOOL_PERL = @INTLTOOL_PERL@ +INTLTOOL_UPDATE = @INTLTOOL_UPDATE@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MATECC_DESKTOP_DIR = @MATECC_DESKTOP_DIR@ +MATECONFTOOL = @MATECONFTOOL@ +MATECONF_SCHEMA_CONFIG_SOURCE = @MATECONF_SCHEMA_CONFIG_SOURCE@ +MATECONF_SCHEMA_FILE_DIR = @MATECONF_SCHEMA_FILE_DIR@ +MKDIR_P = @MKDIR_P@ +MKINSTALLDIRS = @MKINSTALLDIRS@ +MSGFMT = @MSGFMT@ +MSGFMT_OPTS = @MSGFMT_OPTS@ +MSGMERGE = @MSGMERGE@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OMF_DIR = @OMF_DIR@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PACKAGE_VERSION_MAJOR = @PACKAGE_VERSION_MAJOR@ +PACKAGE_VERSION_MICRO = @PACKAGE_VERSION_MICRO@ +PACKAGE_VERSION_MINOR = @PACKAGE_VERSION_MINOR@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +POFILES = @POFILES@ +POSUB = @POSUB@ +PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ +PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@ +PROGRAMS_GSTPROPS = @PROGRAMS_GSTPROPS@ +PULSEAUDIO_CFLAGS = @PULSEAUDIO_CFLAGS@ +PULSEAUDIO_LIBS = @PULSEAUDIO_LIBS@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SOUNDTHEME_CFLAGS = @SOUNDTHEME_CFLAGS@ +SOUNDTHEME_LIBS = @SOUNDTHEME_LIBS@ +SOUND_THEME_CFLAGS = @SOUND_THEME_CFLAGS@ +SOUND_THEME_LIBS = @SOUND_THEME_LIBS@ +STRIP = @STRIP@ +USE_NLS = @USE_NLS@ +VERSION = @VERSION@ +VOLUME_CONTROL_CFLAGS = @VOLUME_CONTROL_CFLAGS@ +VOLUME_CONTROL_LIBS = @VOLUME_CONTROL_LIBS@ +WARN_CFLAGS = @WARN_CFLAGS@ +WARN_CXXFLAGS = @WARN_CXXFLAGS@ +XGETTEXT = @XGETTEXT@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +NULL = +themedir = $(pkgdatadir)/icons/mate +size = 22x22 +context = status +iconsdir = $(themedir)/$(size)/$(context) +icons_DATA = \ + audio-input-microphone-high.png \ + audio-input-microphone-low.png \ + audio-input-microphone-medium.png \ + audio-input-microphone-muted.png \ + $(NULL) + +EXTRA_DIST = \ + $(icons_DATA) \ + $(NULL) + +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign mate-volume-control/data/icons/22x22/status/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign mate-volume-control/data/icons/22x22/status/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-iconsDATA: $(icons_DATA) + @$(NORMAL_INSTALL) + test -z "$(iconsdir)" || $(MKDIR_P) "$(DESTDIR)$(iconsdir)" + @list='$(icons_DATA)'; test -n "$(iconsdir)" || list=; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(iconsdir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(iconsdir)" || exit $$?; \ + done + +uninstall-iconsDATA: + @$(NORMAL_UNINSTALL) + @list='$(icons_DATA)'; test -n "$(iconsdir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + test -n "$$files" || exit 0; \ + echo " ( cd '$(DESTDIR)$(iconsdir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(iconsdir)" && rm -f $$files +tags: TAGS +TAGS: + +ctags: CTAGS +CTAGS: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(DATA) +installdirs: + for dir in "$(DESTDIR)$(iconsdir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-iconsDATA + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-iconsDATA + +.MAKE: install-am install-strip + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + distclean distclean-generic distclean-libtool distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-iconsDATA install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + uninstall uninstall-am uninstall-iconsDATA + + +-include $(top_srcdir)/git.mk + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/mate-volume-control/data/icons/22x22/status/audio-input-microphone-high.png b/mate-volume-control/data/icons/22x22/status/audio-input-microphone-high.png Binary files differnew file mode 100644 index 0000000..ca3770f --- /dev/null +++ b/mate-volume-control/data/icons/22x22/status/audio-input-microphone-high.png diff --git a/mate-volume-control/data/icons/22x22/status/audio-input-microphone-low.png b/mate-volume-control/data/icons/22x22/status/audio-input-microphone-low.png Binary files differnew file mode 100644 index 0000000..75d0612 --- /dev/null +++ b/mate-volume-control/data/icons/22x22/status/audio-input-microphone-low.png diff --git a/mate-volume-control/data/icons/22x22/status/audio-input-microphone-medium.png b/mate-volume-control/data/icons/22x22/status/audio-input-microphone-medium.png Binary files differnew file mode 100644 index 0000000..c1efeb5 --- /dev/null +++ b/mate-volume-control/data/icons/22x22/status/audio-input-microphone-medium.png diff --git a/mate-volume-control/data/icons/22x22/status/audio-input-microphone-muted.png b/mate-volume-control/data/icons/22x22/status/audio-input-microphone-muted.png Binary files differnew file mode 100644 index 0000000..9f3dd3c --- /dev/null +++ b/mate-volume-control/data/icons/22x22/status/audio-input-microphone-muted.png diff --git a/mate-volume-control/data/icons/24x24/Makefile.am b/mate-volume-control/data/icons/24x24/Makefile.am new file mode 100644 index 0000000..05a9700 --- /dev/null +++ b/mate-volume-control/data/icons/24x24/Makefile.am @@ -0,0 +1,4 @@ +SUBDIRS = status + + +-include $(top_srcdir)/git.mk diff --git a/mate-volume-control/data/icons/24x24/Makefile.in b/mate-volume-control/data/icons/24x24/Makefile.in new file mode 100644 index 0000000..ac035a1 --- /dev/null +++ b/mate-volume-control/data/icons/24x24/Makefile.in @@ -0,0 +1,633 @@ +# Makefile.in generated by automake 1.11.1 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, +# Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = mate-volume-control/data/icons/24x24 +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/as-ac-expand.m4 \ + $(top_srcdir)/m4/as-compiler-flag.m4 \ + $(top_srcdir)/m4/as-version.m4 $(top_srcdir)/m4/intltool.m4 \ + $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ + $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ + $(top_srcdir)/m4/lt~obsolete.m4 \ + $(top_srcdir)/m4/mate-doc-utils.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/build-aux/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +AM_V_GEN = $(am__v_GEN_$(V)) +am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) +am__v_GEN_0 = @echo " GEN " $@; +AM_V_at = $(am__v_at_$(V)) +am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) +am__v_at_0 = @ +SOURCES = +DIST_SOURCES = +RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ + html-recursive info-recursive install-data-recursive \ + install-dvi-recursive install-exec-recursive \ + install-html-recursive install-info-recursive \ + install-pdf-recursive install-ps-recursive install-recursive \ + installcheck-recursive installdirs-recursive pdf-recursive \ + ps-recursive uninstall-recursive +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ + $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ + distdir +ETAGS = etags +CTAGS = ctags +DIST_SUBDIRS = $(SUBDIRS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +am__relativize = \ + dir0=`pwd`; \ + sed_first='s,^\([^/]*\)/.*$$,\1,'; \ + sed_rest='s,^[^/]*/*,,'; \ + sed_last='s,^.*/\([^/]*\)$$,\1,'; \ + sed_butlast='s,/*[^/]*$$,,'; \ + while test -n "$$dir1"; do \ + first=`echo "$$dir1" | sed -e "$$sed_first"`; \ + if test "$$first" != "."; then \ + if test "$$first" = ".."; then \ + dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ + dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ + else \ + first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ + if test "$$first2" = "$$first"; then \ + dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ + else \ + dir2="../$$dir2"; \ + fi; \ + dir0="$$dir0"/"$$first"; \ + fi; \ + fi; \ + dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ + done; \ + reldir="$$dir2" +ACLOCAL = @ACLOCAL@ +ALL_LINGUAS = @ALL_LINGUAS@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CATALOGS = @CATALOGS@ +CATOBJEXT = @CATOBJEXT@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DATADIRNAME = @DATADIRNAME@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DISABLE_DEPRECATED = @DISABLE_DEPRECATED@ +DISTCHECK_CONFIGURE_FLAGS = @DISTCHECK_CONFIGURE_FLAGS@ +DLLTOOL = @DLLTOOL@ +DOC_USER_FORMATS = @DOC_USER_FORMATS@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ +GLADEUI_CATALOG_DIR = @GLADEUI_CATALOG_DIR@ +GLADEUI_CFLAGS = @GLADEUI_CFLAGS@ +GLADEUI_LIBS = @GLADEUI_LIBS@ +GLADEUI_MODULE_DIR = @GLADEUI_MODULE_DIR@ +GLIB_GENMARSHAL = @GLIB_GENMARSHAL@ +GMOFILES = @GMOFILES@ +GMP_CFLAGS = @GMP_CFLAGS@ +GMP_LIBS = @GMP_LIBS@ +GMSGFMT = @GMSGFMT@ +GREP = @GREP@ +GSR_CFLAGS = @GSR_CFLAGS@ +GSR_LIBS = @GSR_LIBS@ +GSTMIXER_CFLAGS = @GSTMIXER_CFLAGS@ +GSTMIXER_LIBS = @GSTMIXER_LIBS@ +GSTPROPS_CFLAGS = @GSTPROPS_CFLAGS@ +GSTPROPS_LIBS = @GSTPROPS_LIBS@ +GST_MAJORMINOR = @GST_MAJORMINOR@ +HAVE_PULSEAUDIO = @HAVE_PULSEAUDIO@ +HAVE_SOUND_THEME = @HAVE_SOUND_THEME@ +HELP_DIR = @HELP_DIR@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INSTOBJEXT = @INSTOBJEXT@ +INTLLIBS = @INTLLIBS@ +INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@ +INTLTOOL_MERGE = @INTLTOOL_MERGE@ +INTLTOOL_PERL = @INTLTOOL_PERL@ +INTLTOOL_UPDATE = @INTLTOOL_UPDATE@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MATECC_DESKTOP_DIR = @MATECC_DESKTOP_DIR@ +MATECONFTOOL = @MATECONFTOOL@ +MATECONF_SCHEMA_CONFIG_SOURCE = @MATECONF_SCHEMA_CONFIG_SOURCE@ +MATECONF_SCHEMA_FILE_DIR = @MATECONF_SCHEMA_FILE_DIR@ +MKDIR_P = @MKDIR_P@ +MKINSTALLDIRS = @MKINSTALLDIRS@ +MSGFMT = @MSGFMT@ +MSGFMT_OPTS = @MSGFMT_OPTS@ +MSGMERGE = @MSGMERGE@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OMF_DIR = @OMF_DIR@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PACKAGE_VERSION_MAJOR = @PACKAGE_VERSION_MAJOR@ +PACKAGE_VERSION_MICRO = @PACKAGE_VERSION_MICRO@ +PACKAGE_VERSION_MINOR = @PACKAGE_VERSION_MINOR@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +POFILES = @POFILES@ +POSUB = @POSUB@ +PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ +PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@ +PROGRAMS_GSTPROPS = @PROGRAMS_GSTPROPS@ +PULSEAUDIO_CFLAGS = @PULSEAUDIO_CFLAGS@ +PULSEAUDIO_LIBS = @PULSEAUDIO_LIBS@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SOUNDTHEME_CFLAGS = @SOUNDTHEME_CFLAGS@ +SOUNDTHEME_LIBS = @SOUNDTHEME_LIBS@ +SOUND_THEME_CFLAGS = @SOUND_THEME_CFLAGS@ +SOUND_THEME_LIBS = @SOUND_THEME_LIBS@ +STRIP = @STRIP@ +USE_NLS = @USE_NLS@ +VERSION = @VERSION@ +VOLUME_CONTROL_CFLAGS = @VOLUME_CONTROL_CFLAGS@ +VOLUME_CONTROL_LIBS = @VOLUME_CONTROL_LIBS@ +WARN_CFLAGS = @WARN_CFLAGS@ +WARN_CXXFLAGS = @WARN_CXXFLAGS@ +XGETTEXT = @XGETTEXT@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +SUBDIRS = status +all: all-recursive + +.SUFFIXES: +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign mate-volume-control/data/icons/24x24/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign mate-volume-control/data/icons/24x24/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +# This directory's subdirectories are mostly independent; you can cd +# into them and run `make' without going through this Makefile. +# To change the values of `make' variables: instead of editing Makefiles, +# (1) if the variable is set in `config.status', edit `config.status' +# (which will cause the Makefiles to be regenerated when you run `make'); +# (2) otherwise, pass the desired values on the `make' command line. +$(RECURSIVE_TARGETS): + @fail= failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +$(RECURSIVE_CLEAN_TARGETS): + @fail= failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + rev=''; for subdir in $$list; do \ + if test "$$subdir" = "."; then :; else \ + rev="$$subdir $$rev"; \ + fi; \ + done; \ + rev="$$rev ."; \ + target=`echo $@ | sed s/-recursive//`; \ + for subdir in $$rev; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done +ctags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + done + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + set x; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: CTAGS +CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ + $(am__relativize); \ + new_distdir=$$reldir; \ + dir1=$$subdir; dir2="$(top_distdir)"; \ + $(am__relativize); \ + new_top_distdir=$$reldir; \ + echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ + echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ + ($(am__cd) $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$new_top_distdir" \ + distdir="$$new_distdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + am__skip_mode_fix=: \ + distdir) \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-recursive +all-am: Makefile +installdirs: installdirs-recursive +installdirs-am: +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-recursive + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-recursive + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +html-am: + +info: info-recursive + +info-am: + +install-data-am: + +install-dvi: install-dvi-recursive + +install-dvi-am: + +install-exec-am: + +install-html: install-html-recursive + +install-html-am: + +install-info: install-info-recursive + +install-info-am: + +install-man: + +install-pdf: install-pdf-recursive + +install-pdf-am: + +install-ps: install-ps-recursive + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: + +.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \ + install-am install-strip tags-recursive + +.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ + all all-am check check-am clean clean-generic clean-libtool \ + ctags ctags-recursive distclean distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs installdirs-am maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \ + uninstall uninstall-am + + +-include $(top_srcdir)/git.mk + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/mate-volume-control/data/icons/24x24/status/Makefile.am b/mate-volume-control/data/icons/24x24/status/Makefile.am new file mode 100644 index 0000000..9ea93cd --- /dev/null +++ b/mate-volume-control/data/icons/24x24/status/Makefile.am @@ -0,0 +1,21 @@ +NULL = + +themedir = $(pkgdatadir)/icons/mate +size = 24x24 +context = status + +iconsdir = $(themedir)/$(size)/$(context) + +icons_DATA = \ + audio-input-microphone-high.png \ + audio-input-microphone-low.png \ + audio-input-microphone-medium.png \ + audio-input-microphone-muted.png \ + $(NULL) + +EXTRA_DIST = \ + $(icons_DATA) \ + $(NULL) + + +-include $(top_srcdir)/git.mk diff --git a/mate-volume-control/data/icons/24x24/status/Makefile.in b/mate-volume-control/data/icons/24x24/status/Makefile.in new file mode 100644 index 0000000..8f7bde6 --- /dev/null +++ b/mate-volume-control/data/icons/24x24/status/Makefile.in @@ -0,0 +1,494 @@ +# Makefile.in generated by automake 1.11.1 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, +# Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = mate-volume-control/data/icons/24x24/status +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/as-ac-expand.m4 \ + $(top_srcdir)/m4/as-compiler-flag.m4 \ + $(top_srcdir)/m4/as-version.m4 $(top_srcdir)/m4/intltool.m4 \ + $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ + $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ + $(top_srcdir)/m4/lt~obsolete.m4 \ + $(top_srcdir)/m4/mate-doc-utils.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/build-aux/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +AM_V_GEN = $(am__v_GEN_$(V)) +am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) +am__v_GEN_0 = @echo " GEN " $@; +AM_V_at = $(am__v_at_$(V)) +am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) +am__v_at_0 = @ +SOURCES = +DIST_SOURCES = +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__installdirs = "$(DESTDIR)$(iconsdir)" +DATA = $(icons_DATA) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +ALL_LINGUAS = @ALL_LINGUAS@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CATALOGS = @CATALOGS@ +CATOBJEXT = @CATOBJEXT@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DATADIRNAME = @DATADIRNAME@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DISABLE_DEPRECATED = @DISABLE_DEPRECATED@ +DISTCHECK_CONFIGURE_FLAGS = @DISTCHECK_CONFIGURE_FLAGS@ +DLLTOOL = @DLLTOOL@ +DOC_USER_FORMATS = @DOC_USER_FORMATS@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ +GLADEUI_CATALOG_DIR = @GLADEUI_CATALOG_DIR@ +GLADEUI_CFLAGS = @GLADEUI_CFLAGS@ +GLADEUI_LIBS = @GLADEUI_LIBS@ +GLADEUI_MODULE_DIR = @GLADEUI_MODULE_DIR@ +GLIB_GENMARSHAL = @GLIB_GENMARSHAL@ +GMOFILES = @GMOFILES@ +GMP_CFLAGS = @GMP_CFLAGS@ +GMP_LIBS = @GMP_LIBS@ +GMSGFMT = @GMSGFMT@ +GREP = @GREP@ +GSR_CFLAGS = @GSR_CFLAGS@ +GSR_LIBS = @GSR_LIBS@ +GSTMIXER_CFLAGS = @GSTMIXER_CFLAGS@ +GSTMIXER_LIBS = @GSTMIXER_LIBS@ +GSTPROPS_CFLAGS = @GSTPROPS_CFLAGS@ +GSTPROPS_LIBS = @GSTPROPS_LIBS@ +GST_MAJORMINOR = @GST_MAJORMINOR@ +HAVE_PULSEAUDIO = @HAVE_PULSEAUDIO@ +HAVE_SOUND_THEME = @HAVE_SOUND_THEME@ +HELP_DIR = @HELP_DIR@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INSTOBJEXT = @INSTOBJEXT@ +INTLLIBS = @INTLLIBS@ +INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@ +INTLTOOL_MERGE = @INTLTOOL_MERGE@ +INTLTOOL_PERL = @INTLTOOL_PERL@ +INTLTOOL_UPDATE = @INTLTOOL_UPDATE@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MATECC_DESKTOP_DIR = @MATECC_DESKTOP_DIR@ +MATECONFTOOL = @MATECONFTOOL@ +MATECONF_SCHEMA_CONFIG_SOURCE = @MATECONF_SCHEMA_CONFIG_SOURCE@ +MATECONF_SCHEMA_FILE_DIR = @MATECONF_SCHEMA_FILE_DIR@ +MKDIR_P = @MKDIR_P@ +MKINSTALLDIRS = @MKINSTALLDIRS@ +MSGFMT = @MSGFMT@ +MSGFMT_OPTS = @MSGFMT_OPTS@ +MSGMERGE = @MSGMERGE@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OMF_DIR = @OMF_DIR@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PACKAGE_VERSION_MAJOR = @PACKAGE_VERSION_MAJOR@ +PACKAGE_VERSION_MICRO = @PACKAGE_VERSION_MICRO@ +PACKAGE_VERSION_MINOR = @PACKAGE_VERSION_MINOR@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +POFILES = @POFILES@ +POSUB = @POSUB@ +PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ +PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@ +PROGRAMS_GSTPROPS = @PROGRAMS_GSTPROPS@ +PULSEAUDIO_CFLAGS = @PULSEAUDIO_CFLAGS@ +PULSEAUDIO_LIBS = @PULSEAUDIO_LIBS@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SOUNDTHEME_CFLAGS = @SOUNDTHEME_CFLAGS@ +SOUNDTHEME_LIBS = @SOUNDTHEME_LIBS@ +SOUND_THEME_CFLAGS = @SOUND_THEME_CFLAGS@ +SOUND_THEME_LIBS = @SOUND_THEME_LIBS@ +STRIP = @STRIP@ +USE_NLS = @USE_NLS@ +VERSION = @VERSION@ +VOLUME_CONTROL_CFLAGS = @VOLUME_CONTROL_CFLAGS@ +VOLUME_CONTROL_LIBS = @VOLUME_CONTROL_LIBS@ +WARN_CFLAGS = @WARN_CFLAGS@ +WARN_CXXFLAGS = @WARN_CXXFLAGS@ +XGETTEXT = @XGETTEXT@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +NULL = +themedir = $(pkgdatadir)/icons/mate +size = 24x24 +context = status +iconsdir = $(themedir)/$(size)/$(context) +icons_DATA = \ + audio-input-microphone-high.png \ + audio-input-microphone-low.png \ + audio-input-microphone-medium.png \ + audio-input-microphone-muted.png \ + $(NULL) + +EXTRA_DIST = \ + $(icons_DATA) \ + $(NULL) + +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign mate-volume-control/data/icons/24x24/status/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign mate-volume-control/data/icons/24x24/status/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-iconsDATA: $(icons_DATA) + @$(NORMAL_INSTALL) + test -z "$(iconsdir)" || $(MKDIR_P) "$(DESTDIR)$(iconsdir)" + @list='$(icons_DATA)'; test -n "$(iconsdir)" || list=; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(iconsdir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(iconsdir)" || exit $$?; \ + done + +uninstall-iconsDATA: + @$(NORMAL_UNINSTALL) + @list='$(icons_DATA)'; test -n "$(iconsdir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + test -n "$$files" || exit 0; \ + echo " ( cd '$(DESTDIR)$(iconsdir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(iconsdir)" && rm -f $$files +tags: TAGS +TAGS: + +ctags: CTAGS +CTAGS: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(DATA) +installdirs: + for dir in "$(DESTDIR)$(iconsdir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-iconsDATA + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-iconsDATA + +.MAKE: install-am install-strip + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + distclean distclean-generic distclean-libtool distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-iconsDATA install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + uninstall uninstall-am uninstall-iconsDATA + + +-include $(top_srcdir)/git.mk + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/mate-volume-control/data/icons/24x24/status/audio-input-microphone-high.png b/mate-volume-control/data/icons/24x24/status/audio-input-microphone-high.png Binary files differnew file mode 100644 index 0000000..fe10ab2 --- /dev/null +++ b/mate-volume-control/data/icons/24x24/status/audio-input-microphone-high.png diff --git a/mate-volume-control/data/icons/24x24/status/audio-input-microphone-low.png b/mate-volume-control/data/icons/24x24/status/audio-input-microphone-low.png Binary files differnew file mode 100644 index 0000000..ee180d8 --- /dev/null +++ b/mate-volume-control/data/icons/24x24/status/audio-input-microphone-low.png diff --git a/mate-volume-control/data/icons/24x24/status/audio-input-microphone-medium.png b/mate-volume-control/data/icons/24x24/status/audio-input-microphone-medium.png Binary files differnew file mode 100644 index 0000000..eb6aa28 --- /dev/null +++ b/mate-volume-control/data/icons/24x24/status/audio-input-microphone-medium.png diff --git a/mate-volume-control/data/icons/24x24/status/audio-input-microphone-muted.png b/mate-volume-control/data/icons/24x24/status/audio-input-microphone-muted.png Binary files differnew file mode 100644 index 0000000..b969738 --- /dev/null +++ b/mate-volume-control/data/icons/24x24/status/audio-input-microphone-muted.png diff --git a/mate-volume-control/data/icons/32x32/Makefile.am b/mate-volume-control/data/icons/32x32/Makefile.am new file mode 100644 index 0000000..05a9700 --- /dev/null +++ b/mate-volume-control/data/icons/32x32/Makefile.am @@ -0,0 +1,4 @@ +SUBDIRS = status + + +-include $(top_srcdir)/git.mk diff --git a/mate-volume-control/data/icons/32x32/Makefile.in b/mate-volume-control/data/icons/32x32/Makefile.in new file mode 100644 index 0000000..2ec1736 --- /dev/null +++ b/mate-volume-control/data/icons/32x32/Makefile.in @@ -0,0 +1,633 @@ +# Makefile.in generated by automake 1.11.1 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, +# Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = mate-volume-control/data/icons/32x32 +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/as-ac-expand.m4 \ + $(top_srcdir)/m4/as-compiler-flag.m4 \ + $(top_srcdir)/m4/as-version.m4 $(top_srcdir)/m4/intltool.m4 \ + $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ + $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ + $(top_srcdir)/m4/lt~obsolete.m4 \ + $(top_srcdir)/m4/mate-doc-utils.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/build-aux/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +AM_V_GEN = $(am__v_GEN_$(V)) +am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) +am__v_GEN_0 = @echo " GEN " $@; +AM_V_at = $(am__v_at_$(V)) +am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) +am__v_at_0 = @ +SOURCES = +DIST_SOURCES = +RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ + html-recursive info-recursive install-data-recursive \ + install-dvi-recursive install-exec-recursive \ + install-html-recursive install-info-recursive \ + install-pdf-recursive install-ps-recursive install-recursive \ + installcheck-recursive installdirs-recursive pdf-recursive \ + ps-recursive uninstall-recursive +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ + $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ + distdir +ETAGS = etags +CTAGS = ctags +DIST_SUBDIRS = $(SUBDIRS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +am__relativize = \ + dir0=`pwd`; \ + sed_first='s,^\([^/]*\)/.*$$,\1,'; \ + sed_rest='s,^[^/]*/*,,'; \ + sed_last='s,^.*/\([^/]*\)$$,\1,'; \ + sed_butlast='s,/*[^/]*$$,,'; \ + while test -n "$$dir1"; do \ + first=`echo "$$dir1" | sed -e "$$sed_first"`; \ + if test "$$first" != "."; then \ + if test "$$first" = ".."; then \ + dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ + dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ + else \ + first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ + if test "$$first2" = "$$first"; then \ + dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ + else \ + dir2="../$$dir2"; \ + fi; \ + dir0="$$dir0"/"$$first"; \ + fi; \ + fi; \ + dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ + done; \ + reldir="$$dir2" +ACLOCAL = @ACLOCAL@ +ALL_LINGUAS = @ALL_LINGUAS@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CATALOGS = @CATALOGS@ +CATOBJEXT = @CATOBJEXT@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DATADIRNAME = @DATADIRNAME@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DISABLE_DEPRECATED = @DISABLE_DEPRECATED@ +DISTCHECK_CONFIGURE_FLAGS = @DISTCHECK_CONFIGURE_FLAGS@ +DLLTOOL = @DLLTOOL@ +DOC_USER_FORMATS = @DOC_USER_FORMATS@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ +GLADEUI_CATALOG_DIR = @GLADEUI_CATALOG_DIR@ +GLADEUI_CFLAGS = @GLADEUI_CFLAGS@ +GLADEUI_LIBS = @GLADEUI_LIBS@ +GLADEUI_MODULE_DIR = @GLADEUI_MODULE_DIR@ +GLIB_GENMARSHAL = @GLIB_GENMARSHAL@ +GMOFILES = @GMOFILES@ +GMP_CFLAGS = @GMP_CFLAGS@ +GMP_LIBS = @GMP_LIBS@ +GMSGFMT = @GMSGFMT@ +GREP = @GREP@ +GSR_CFLAGS = @GSR_CFLAGS@ +GSR_LIBS = @GSR_LIBS@ +GSTMIXER_CFLAGS = @GSTMIXER_CFLAGS@ +GSTMIXER_LIBS = @GSTMIXER_LIBS@ +GSTPROPS_CFLAGS = @GSTPROPS_CFLAGS@ +GSTPROPS_LIBS = @GSTPROPS_LIBS@ +GST_MAJORMINOR = @GST_MAJORMINOR@ +HAVE_PULSEAUDIO = @HAVE_PULSEAUDIO@ +HAVE_SOUND_THEME = @HAVE_SOUND_THEME@ +HELP_DIR = @HELP_DIR@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INSTOBJEXT = @INSTOBJEXT@ +INTLLIBS = @INTLLIBS@ +INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@ +INTLTOOL_MERGE = @INTLTOOL_MERGE@ +INTLTOOL_PERL = @INTLTOOL_PERL@ +INTLTOOL_UPDATE = @INTLTOOL_UPDATE@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MATECC_DESKTOP_DIR = @MATECC_DESKTOP_DIR@ +MATECONFTOOL = @MATECONFTOOL@ +MATECONF_SCHEMA_CONFIG_SOURCE = @MATECONF_SCHEMA_CONFIG_SOURCE@ +MATECONF_SCHEMA_FILE_DIR = @MATECONF_SCHEMA_FILE_DIR@ +MKDIR_P = @MKDIR_P@ +MKINSTALLDIRS = @MKINSTALLDIRS@ +MSGFMT = @MSGFMT@ +MSGFMT_OPTS = @MSGFMT_OPTS@ +MSGMERGE = @MSGMERGE@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OMF_DIR = @OMF_DIR@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PACKAGE_VERSION_MAJOR = @PACKAGE_VERSION_MAJOR@ +PACKAGE_VERSION_MICRO = @PACKAGE_VERSION_MICRO@ +PACKAGE_VERSION_MINOR = @PACKAGE_VERSION_MINOR@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +POFILES = @POFILES@ +POSUB = @POSUB@ +PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ +PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@ +PROGRAMS_GSTPROPS = @PROGRAMS_GSTPROPS@ +PULSEAUDIO_CFLAGS = @PULSEAUDIO_CFLAGS@ +PULSEAUDIO_LIBS = @PULSEAUDIO_LIBS@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SOUNDTHEME_CFLAGS = @SOUNDTHEME_CFLAGS@ +SOUNDTHEME_LIBS = @SOUNDTHEME_LIBS@ +SOUND_THEME_CFLAGS = @SOUND_THEME_CFLAGS@ +SOUND_THEME_LIBS = @SOUND_THEME_LIBS@ +STRIP = @STRIP@ +USE_NLS = @USE_NLS@ +VERSION = @VERSION@ +VOLUME_CONTROL_CFLAGS = @VOLUME_CONTROL_CFLAGS@ +VOLUME_CONTROL_LIBS = @VOLUME_CONTROL_LIBS@ +WARN_CFLAGS = @WARN_CFLAGS@ +WARN_CXXFLAGS = @WARN_CXXFLAGS@ +XGETTEXT = @XGETTEXT@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +SUBDIRS = status +all: all-recursive + +.SUFFIXES: +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign mate-volume-control/data/icons/32x32/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign mate-volume-control/data/icons/32x32/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +# This directory's subdirectories are mostly independent; you can cd +# into them and run `make' without going through this Makefile. +# To change the values of `make' variables: instead of editing Makefiles, +# (1) if the variable is set in `config.status', edit `config.status' +# (which will cause the Makefiles to be regenerated when you run `make'); +# (2) otherwise, pass the desired values on the `make' command line. +$(RECURSIVE_TARGETS): + @fail= failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +$(RECURSIVE_CLEAN_TARGETS): + @fail= failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + rev=''; for subdir in $$list; do \ + if test "$$subdir" = "."; then :; else \ + rev="$$subdir $$rev"; \ + fi; \ + done; \ + rev="$$rev ."; \ + target=`echo $@ | sed s/-recursive//`; \ + for subdir in $$rev; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done +ctags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + done + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + set x; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: CTAGS +CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ + $(am__relativize); \ + new_distdir=$$reldir; \ + dir1=$$subdir; dir2="$(top_distdir)"; \ + $(am__relativize); \ + new_top_distdir=$$reldir; \ + echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ + echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ + ($(am__cd) $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$new_top_distdir" \ + distdir="$$new_distdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + am__skip_mode_fix=: \ + distdir) \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-recursive +all-am: Makefile +installdirs: installdirs-recursive +installdirs-am: +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-recursive + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-recursive + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +html-am: + +info: info-recursive + +info-am: + +install-data-am: + +install-dvi: install-dvi-recursive + +install-dvi-am: + +install-exec-am: + +install-html: install-html-recursive + +install-html-am: + +install-info: install-info-recursive + +install-info-am: + +install-man: + +install-pdf: install-pdf-recursive + +install-pdf-am: + +install-ps: install-ps-recursive + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: + +.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \ + install-am install-strip tags-recursive + +.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ + all all-am check check-am clean clean-generic clean-libtool \ + ctags ctags-recursive distclean distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs installdirs-am maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \ + uninstall uninstall-am + + +-include $(top_srcdir)/git.mk + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/mate-volume-control/data/icons/32x32/status/Makefile.am b/mate-volume-control/data/icons/32x32/status/Makefile.am new file mode 100644 index 0000000..68afbb7 --- /dev/null +++ b/mate-volume-control/data/icons/32x32/status/Makefile.am @@ -0,0 +1,21 @@ +NULL = + +themedir = $(pkgdatadir)/icons/mate +size = 32x32 +context = status + +iconsdir = $(themedir)/$(size)/$(context) + +icons_DATA = \ + audio-input-microphone-high.png \ + audio-input-microphone-low.png \ + audio-input-microphone-medium.png \ + audio-input-microphone-muted.png \ + $(NULL) + +EXTRA_DIST = \ + $(icons_DATA) \ + $(NULL) + + +-include $(top_srcdir)/git.mk diff --git a/mate-volume-control/data/icons/32x32/status/Makefile.in b/mate-volume-control/data/icons/32x32/status/Makefile.in new file mode 100644 index 0000000..6bb9ef3 --- /dev/null +++ b/mate-volume-control/data/icons/32x32/status/Makefile.in @@ -0,0 +1,494 @@ +# Makefile.in generated by automake 1.11.1 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, +# Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = mate-volume-control/data/icons/32x32/status +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/as-ac-expand.m4 \ + $(top_srcdir)/m4/as-compiler-flag.m4 \ + $(top_srcdir)/m4/as-version.m4 $(top_srcdir)/m4/intltool.m4 \ + $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ + $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ + $(top_srcdir)/m4/lt~obsolete.m4 \ + $(top_srcdir)/m4/mate-doc-utils.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/build-aux/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +AM_V_GEN = $(am__v_GEN_$(V)) +am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) +am__v_GEN_0 = @echo " GEN " $@; +AM_V_at = $(am__v_at_$(V)) +am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) +am__v_at_0 = @ +SOURCES = +DIST_SOURCES = +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__installdirs = "$(DESTDIR)$(iconsdir)" +DATA = $(icons_DATA) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +ALL_LINGUAS = @ALL_LINGUAS@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CATALOGS = @CATALOGS@ +CATOBJEXT = @CATOBJEXT@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DATADIRNAME = @DATADIRNAME@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DISABLE_DEPRECATED = @DISABLE_DEPRECATED@ +DISTCHECK_CONFIGURE_FLAGS = @DISTCHECK_CONFIGURE_FLAGS@ +DLLTOOL = @DLLTOOL@ +DOC_USER_FORMATS = @DOC_USER_FORMATS@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ +GLADEUI_CATALOG_DIR = @GLADEUI_CATALOG_DIR@ +GLADEUI_CFLAGS = @GLADEUI_CFLAGS@ +GLADEUI_LIBS = @GLADEUI_LIBS@ +GLADEUI_MODULE_DIR = @GLADEUI_MODULE_DIR@ +GLIB_GENMARSHAL = @GLIB_GENMARSHAL@ +GMOFILES = @GMOFILES@ +GMP_CFLAGS = @GMP_CFLAGS@ +GMP_LIBS = @GMP_LIBS@ +GMSGFMT = @GMSGFMT@ +GREP = @GREP@ +GSR_CFLAGS = @GSR_CFLAGS@ +GSR_LIBS = @GSR_LIBS@ +GSTMIXER_CFLAGS = @GSTMIXER_CFLAGS@ +GSTMIXER_LIBS = @GSTMIXER_LIBS@ +GSTPROPS_CFLAGS = @GSTPROPS_CFLAGS@ +GSTPROPS_LIBS = @GSTPROPS_LIBS@ +GST_MAJORMINOR = @GST_MAJORMINOR@ +HAVE_PULSEAUDIO = @HAVE_PULSEAUDIO@ +HAVE_SOUND_THEME = @HAVE_SOUND_THEME@ +HELP_DIR = @HELP_DIR@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INSTOBJEXT = @INSTOBJEXT@ +INTLLIBS = @INTLLIBS@ +INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@ +INTLTOOL_MERGE = @INTLTOOL_MERGE@ +INTLTOOL_PERL = @INTLTOOL_PERL@ +INTLTOOL_UPDATE = @INTLTOOL_UPDATE@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MATECC_DESKTOP_DIR = @MATECC_DESKTOP_DIR@ +MATECONFTOOL = @MATECONFTOOL@ +MATECONF_SCHEMA_CONFIG_SOURCE = @MATECONF_SCHEMA_CONFIG_SOURCE@ +MATECONF_SCHEMA_FILE_DIR = @MATECONF_SCHEMA_FILE_DIR@ +MKDIR_P = @MKDIR_P@ +MKINSTALLDIRS = @MKINSTALLDIRS@ +MSGFMT = @MSGFMT@ +MSGFMT_OPTS = @MSGFMT_OPTS@ +MSGMERGE = @MSGMERGE@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OMF_DIR = @OMF_DIR@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PACKAGE_VERSION_MAJOR = @PACKAGE_VERSION_MAJOR@ +PACKAGE_VERSION_MICRO = @PACKAGE_VERSION_MICRO@ +PACKAGE_VERSION_MINOR = @PACKAGE_VERSION_MINOR@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +POFILES = @POFILES@ +POSUB = @POSUB@ +PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ +PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@ +PROGRAMS_GSTPROPS = @PROGRAMS_GSTPROPS@ +PULSEAUDIO_CFLAGS = @PULSEAUDIO_CFLAGS@ +PULSEAUDIO_LIBS = @PULSEAUDIO_LIBS@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SOUNDTHEME_CFLAGS = @SOUNDTHEME_CFLAGS@ +SOUNDTHEME_LIBS = @SOUNDTHEME_LIBS@ +SOUND_THEME_CFLAGS = @SOUND_THEME_CFLAGS@ +SOUND_THEME_LIBS = @SOUND_THEME_LIBS@ +STRIP = @STRIP@ +USE_NLS = @USE_NLS@ +VERSION = @VERSION@ +VOLUME_CONTROL_CFLAGS = @VOLUME_CONTROL_CFLAGS@ +VOLUME_CONTROL_LIBS = @VOLUME_CONTROL_LIBS@ +WARN_CFLAGS = @WARN_CFLAGS@ +WARN_CXXFLAGS = @WARN_CXXFLAGS@ +XGETTEXT = @XGETTEXT@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +NULL = +themedir = $(pkgdatadir)/icons/mate +size = 32x32 +context = status +iconsdir = $(themedir)/$(size)/$(context) +icons_DATA = \ + audio-input-microphone-high.png \ + audio-input-microphone-low.png \ + audio-input-microphone-medium.png \ + audio-input-microphone-muted.png \ + $(NULL) + +EXTRA_DIST = \ + $(icons_DATA) \ + $(NULL) + +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign mate-volume-control/data/icons/32x32/status/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign mate-volume-control/data/icons/32x32/status/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-iconsDATA: $(icons_DATA) + @$(NORMAL_INSTALL) + test -z "$(iconsdir)" || $(MKDIR_P) "$(DESTDIR)$(iconsdir)" + @list='$(icons_DATA)'; test -n "$(iconsdir)" || list=; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(iconsdir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(iconsdir)" || exit $$?; \ + done + +uninstall-iconsDATA: + @$(NORMAL_UNINSTALL) + @list='$(icons_DATA)'; test -n "$(iconsdir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + test -n "$$files" || exit 0; \ + echo " ( cd '$(DESTDIR)$(iconsdir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(iconsdir)" && rm -f $$files +tags: TAGS +TAGS: + +ctags: CTAGS +CTAGS: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(DATA) +installdirs: + for dir in "$(DESTDIR)$(iconsdir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-iconsDATA + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-iconsDATA + +.MAKE: install-am install-strip + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + distclean distclean-generic distclean-libtool distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-iconsDATA install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + uninstall uninstall-am uninstall-iconsDATA + + +-include $(top_srcdir)/git.mk + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/mate-volume-control/data/icons/32x32/status/audio-input-microphone-high.png b/mate-volume-control/data/icons/32x32/status/audio-input-microphone-high.png Binary files differnew file mode 100644 index 0000000..8bd9d5b --- /dev/null +++ b/mate-volume-control/data/icons/32x32/status/audio-input-microphone-high.png diff --git a/mate-volume-control/data/icons/32x32/status/audio-input-microphone-low.png b/mate-volume-control/data/icons/32x32/status/audio-input-microphone-low.png Binary files differnew file mode 100644 index 0000000..8a09c9f --- /dev/null +++ b/mate-volume-control/data/icons/32x32/status/audio-input-microphone-low.png diff --git a/mate-volume-control/data/icons/32x32/status/audio-input-microphone-medium.png b/mate-volume-control/data/icons/32x32/status/audio-input-microphone-medium.png Binary files differnew file mode 100644 index 0000000..a45c79c --- /dev/null +++ b/mate-volume-control/data/icons/32x32/status/audio-input-microphone-medium.png diff --git a/mate-volume-control/data/icons/32x32/status/audio-input-microphone-muted.png b/mate-volume-control/data/icons/32x32/status/audio-input-microphone-muted.png Binary files differnew file mode 100644 index 0000000..8161f1f --- /dev/null +++ b/mate-volume-control/data/icons/32x32/status/audio-input-microphone-muted.png diff --git a/mate-volume-control/data/icons/Makefile.am b/mate-volume-control/data/icons/Makefile.am new file mode 100644 index 0000000..67d9cea --- /dev/null +++ b/mate-volume-control/data/icons/Makefile.am @@ -0,0 +1,25 @@ +NULL = + +SUBDIRS = \ + scalable \ + 16x16 \ + 22x22 \ + 24x24 \ + 32x32 \ + $(NULL) + +gtk_update_icon_cache = gtk-update-icon-cache -f -t $(datadir)/icons/mate + +install-data-hook: update-icon-cache +uninstall-hook: update-icon-cache +update-icon-cache: + @-if test -z "$(DESTDIR)"; then \ + echo "Updating Gtk icon cache."; \ + $(gtk_update_icon_cache); \ + else \ + echo "*** Icon cache not updated. After (un)install, run this:"; \ + echo "*** $(gtk_update_icon_cache)"; \ + fi + + +-include $(top_srcdir)/git.mk diff --git a/mate-volume-control/data/icons/Makefile.in b/mate-volume-control/data/icons/Makefile.in new file mode 100644 index 0000000..e5084ce --- /dev/null +++ b/mate-volume-control/data/icons/Makefile.in @@ -0,0 +1,656 @@ +# Makefile.in generated by automake 1.11.1 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, +# Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = mate-volume-control/data/icons +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/as-ac-expand.m4 \ + $(top_srcdir)/m4/as-compiler-flag.m4 \ + $(top_srcdir)/m4/as-version.m4 $(top_srcdir)/m4/intltool.m4 \ + $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ + $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ + $(top_srcdir)/m4/lt~obsolete.m4 \ + $(top_srcdir)/m4/mate-doc-utils.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/build-aux/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +AM_V_GEN = $(am__v_GEN_$(V)) +am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) +am__v_GEN_0 = @echo " GEN " $@; +AM_V_at = $(am__v_at_$(V)) +am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) +am__v_at_0 = @ +SOURCES = +DIST_SOURCES = +RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ + html-recursive info-recursive install-data-recursive \ + install-dvi-recursive install-exec-recursive \ + install-html-recursive install-info-recursive \ + install-pdf-recursive install-ps-recursive install-recursive \ + installcheck-recursive installdirs-recursive pdf-recursive \ + ps-recursive uninstall-recursive +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ + $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ + distdir +ETAGS = etags +CTAGS = ctags +DIST_SUBDIRS = $(SUBDIRS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +am__relativize = \ + dir0=`pwd`; \ + sed_first='s,^\([^/]*\)/.*$$,\1,'; \ + sed_rest='s,^[^/]*/*,,'; \ + sed_last='s,^.*/\([^/]*\)$$,\1,'; \ + sed_butlast='s,/*[^/]*$$,,'; \ + while test -n "$$dir1"; do \ + first=`echo "$$dir1" | sed -e "$$sed_first"`; \ + if test "$$first" != "."; then \ + if test "$$first" = ".."; then \ + dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ + dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ + else \ + first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ + if test "$$first2" = "$$first"; then \ + dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ + else \ + dir2="../$$dir2"; \ + fi; \ + dir0="$$dir0"/"$$first"; \ + fi; \ + fi; \ + dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ + done; \ + reldir="$$dir2" +ACLOCAL = @ACLOCAL@ +ALL_LINGUAS = @ALL_LINGUAS@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CATALOGS = @CATALOGS@ +CATOBJEXT = @CATOBJEXT@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DATADIRNAME = @DATADIRNAME@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DISABLE_DEPRECATED = @DISABLE_DEPRECATED@ +DISTCHECK_CONFIGURE_FLAGS = @DISTCHECK_CONFIGURE_FLAGS@ +DLLTOOL = @DLLTOOL@ +DOC_USER_FORMATS = @DOC_USER_FORMATS@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ +GLADEUI_CATALOG_DIR = @GLADEUI_CATALOG_DIR@ +GLADEUI_CFLAGS = @GLADEUI_CFLAGS@ +GLADEUI_LIBS = @GLADEUI_LIBS@ +GLADEUI_MODULE_DIR = @GLADEUI_MODULE_DIR@ +GLIB_GENMARSHAL = @GLIB_GENMARSHAL@ +GMOFILES = @GMOFILES@ +GMP_CFLAGS = @GMP_CFLAGS@ +GMP_LIBS = @GMP_LIBS@ +GMSGFMT = @GMSGFMT@ +GREP = @GREP@ +GSR_CFLAGS = @GSR_CFLAGS@ +GSR_LIBS = @GSR_LIBS@ +GSTMIXER_CFLAGS = @GSTMIXER_CFLAGS@ +GSTMIXER_LIBS = @GSTMIXER_LIBS@ +GSTPROPS_CFLAGS = @GSTPROPS_CFLAGS@ +GSTPROPS_LIBS = @GSTPROPS_LIBS@ +GST_MAJORMINOR = @GST_MAJORMINOR@ +HAVE_PULSEAUDIO = @HAVE_PULSEAUDIO@ +HAVE_SOUND_THEME = @HAVE_SOUND_THEME@ +HELP_DIR = @HELP_DIR@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INSTOBJEXT = @INSTOBJEXT@ +INTLLIBS = @INTLLIBS@ +INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@ +INTLTOOL_MERGE = @INTLTOOL_MERGE@ +INTLTOOL_PERL = @INTLTOOL_PERL@ +INTLTOOL_UPDATE = @INTLTOOL_UPDATE@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MATECC_DESKTOP_DIR = @MATECC_DESKTOP_DIR@ +MATECONFTOOL = @MATECONFTOOL@ +MATECONF_SCHEMA_CONFIG_SOURCE = @MATECONF_SCHEMA_CONFIG_SOURCE@ +MATECONF_SCHEMA_FILE_DIR = @MATECONF_SCHEMA_FILE_DIR@ +MKDIR_P = @MKDIR_P@ +MKINSTALLDIRS = @MKINSTALLDIRS@ +MSGFMT = @MSGFMT@ +MSGFMT_OPTS = @MSGFMT_OPTS@ +MSGMERGE = @MSGMERGE@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OMF_DIR = @OMF_DIR@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PACKAGE_VERSION_MAJOR = @PACKAGE_VERSION_MAJOR@ +PACKAGE_VERSION_MICRO = @PACKAGE_VERSION_MICRO@ +PACKAGE_VERSION_MINOR = @PACKAGE_VERSION_MINOR@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +POFILES = @POFILES@ +POSUB = @POSUB@ +PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ +PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@ +PROGRAMS_GSTPROPS = @PROGRAMS_GSTPROPS@ +PULSEAUDIO_CFLAGS = @PULSEAUDIO_CFLAGS@ +PULSEAUDIO_LIBS = @PULSEAUDIO_LIBS@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SOUNDTHEME_CFLAGS = @SOUNDTHEME_CFLAGS@ +SOUNDTHEME_LIBS = @SOUNDTHEME_LIBS@ +SOUND_THEME_CFLAGS = @SOUND_THEME_CFLAGS@ +SOUND_THEME_LIBS = @SOUND_THEME_LIBS@ +STRIP = @STRIP@ +USE_NLS = @USE_NLS@ +VERSION = @VERSION@ +VOLUME_CONTROL_CFLAGS = @VOLUME_CONTROL_CFLAGS@ +VOLUME_CONTROL_LIBS = @VOLUME_CONTROL_LIBS@ +WARN_CFLAGS = @WARN_CFLAGS@ +WARN_CXXFLAGS = @WARN_CXXFLAGS@ +XGETTEXT = @XGETTEXT@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +NULL = +SUBDIRS = \ + scalable \ + 16x16 \ + 22x22 \ + 24x24 \ + 32x32 \ + $(NULL) + +gtk_update_icon_cache = gtk-update-icon-cache -f -t $(datadir)/icons/mate +all: all-recursive + +.SUFFIXES: +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign mate-volume-control/data/icons/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign mate-volume-control/data/icons/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +# This directory's subdirectories are mostly independent; you can cd +# into them and run `make' without going through this Makefile. +# To change the values of `make' variables: instead of editing Makefiles, +# (1) if the variable is set in `config.status', edit `config.status' +# (which will cause the Makefiles to be regenerated when you run `make'); +# (2) otherwise, pass the desired values on the `make' command line. +$(RECURSIVE_TARGETS): + @fail= failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +$(RECURSIVE_CLEAN_TARGETS): + @fail= failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + rev=''; for subdir in $$list; do \ + if test "$$subdir" = "."; then :; else \ + rev="$$subdir $$rev"; \ + fi; \ + done; \ + rev="$$rev ."; \ + target=`echo $@ | sed s/-recursive//`; \ + for subdir in $$rev; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done +ctags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + done + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + set x; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: CTAGS +CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ + $(am__relativize); \ + new_distdir=$$reldir; \ + dir1=$$subdir; dir2="$(top_distdir)"; \ + $(am__relativize); \ + new_top_distdir=$$reldir; \ + echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ + echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ + ($(am__cd) $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$new_top_distdir" \ + distdir="$$new_distdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + am__skip_mode_fix=: \ + distdir) \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-recursive +all-am: Makefile +installdirs: installdirs-recursive +installdirs-am: +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-recursive + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-recursive + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +html-am: + +info: info-recursive + +info-am: + +install-data-am: + @$(NORMAL_INSTALL) + $(MAKE) $(AM_MAKEFLAGS) install-data-hook +install-dvi: install-dvi-recursive + +install-dvi-am: + +install-exec-am: + +install-html: install-html-recursive + +install-html-am: + +install-info: install-info-recursive + +install-info-am: + +install-man: + +install-pdf: install-pdf-recursive + +install-pdf-am: + +install-ps: install-ps-recursive + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: + @$(NORMAL_INSTALL) + $(MAKE) $(AM_MAKEFLAGS) uninstall-hook +.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \ + install-am install-data-am install-strip tags-recursive \ + uninstall-am + +.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ + all all-am check check-am clean clean-generic clean-libtool \ + ctags ctags-recursive distclean distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-data-hook install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-info install-info-am install-man install-pdf \ + install-pdf-am install-ps install-ps-am install-strip \ + installcheck installcheck-am installdirs installdirs-am \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + tags tags-recursive uninstall uninstall-am uninstall-hook + + +install-data-hook: update-icon-cache +uninstall-hook: update-icon-cache +update-icon-cache: + @-if test -z "$(DESTDIR)"; then \ + echo "Updating Gtk icon cache."; \ + $(gtk_update_icon_cache); \ + else \ + echo "*** Icon cache not updated. After (un)install, run this:"; \ + echo "*** $(gtk_update_icon_cache)"; \ + fi + +-include $(top_srcdir)/git.mk + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/mate-volume-control/data/icons/scalable/Makefile.am b/mate-volume-control/data/icons/scalable/Makefile.am new file mode 100644 index 0000000..2cf31cf --- /dev/null +++ b/mate-volume-control/data/icons/scalable/Makefile.am @@ -0,0 +1,4 @@ +SUBDIRS = status devices + + +-include $(top_srcdir)/git.mk diff --git a/mate-volume-control/data/icons/scalable/Makefile.in b/mate-volume-control/data/icons/scalable/Makefile.in new file mode 100644 index 0000000..d3fb19d --- /dev/null +++ b/mate-volume-control/data/icons/scalable/Makefile.in @@ -0,0 +1,633 @@ +# Makefile.in generated by automake 1.11.1 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, +# Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = mate-volume-control/data/icons/scalable +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/as-ac-expand.m4 \ + $(top_srcdir)/m4/as-compiler-flag.m4 \ + $(top_srcdir)/m4/as-version.m4 $(top_srcdir)/m4/intltool.m4 \ + $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ + $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ + $(top_srcdir)/m4/lt~obsolete.m4 \ + $(top_srcdir)/m4/mate-doc-utils.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/build-aux/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +AM_V_GEN = $(am__v_GEN_$(V)) +am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) +am__v_GEN_0 = @echo " GEN " $@; +AM_V_at = $(am__v_at_$(V)) +am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) +am__v_at_0 = @ +SOURCES = +DIST_SOURCES = +RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ + html-recursive info-recursive install-data-recursive \ + install-dvi-recursive install-exec-recursive \ + install-html-recursive install-info-recursive \ + install-pdf-recursive install-ps-recursive install-recursive \ + installcheck-recursive installdirs-recursive pdf-recursive \ + ps-recursive uninstall-recursive +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ + $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ + distdir +ETAGS = etags +CTAGS = ctags +DIST_SUBDIRS = $(SUBDIRS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +am__relativize = \ + dir0=`pwd`; \ + sed_first='s,^\([^/]*\)/.*$$,\1,'; \ + sed_rest='s,^[^/]*/*,,'; \ + sed_last='s,^.*/\([^/]*\)$$,\1,'; \ + sed_butlast='s,/*[^/]*$$,,'; \ + while test -n "$$dir1"; do \ + first=`echo "$$dir1" | sed -e "$$sed_first"`; \ + if test "$$first" != "."; then \ + if test "$$first" = ".."; then \ + dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ + dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ + else \ + first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ + if test "$$first2" = "$$first"; then \ + dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ + else \ + dir2="../$$dir2"; \ + fi; \ + dir0="$$dir0"/"$$first"; \ + fi; \ + fi; \ + dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ + done; \ + reldir="$$dir2" +ACLOCAL = @ACLOCAL@ +ALL_LINGUAS = @ALL_LINGUAS@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CATALOGS = @CATALOGS@ +CATOBJEXT = @CATOBJEXT@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DATADIRNAME = @DATADIRNAME@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DISABLE_DEPRECATED = @DISABLE_DEPRECATED@ +DISTCHECK_CONFIGURE_FLAGS = @DISTCHECK_CONFIGURE_FLAGS@ +DLLTOOL = @DLLTOOL@ +DOC_USER_FORMATS = @DOC_USER_FORMATS@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ +GLADEUI_CATALOG_DIR = @GLADEUI_CATALOG_DIR@ +GLADEUI_CFLAGS = @GLADEUI_CFLAGS@ +GLADEUI_LIBS = @GLADEUI_LIBS@ +GLADEUI_MODULE_DIR = @GLADEUI_MODULE_DIR@ +GLIB_GENMARSHAL = @GLIB_GENMARSHAL@ +GMOFILES = @GMOFILES@ +GMP_CFLAGS = @GMP_CFLAGS@ +GMP_LIBS = @GMP_LIBS@ +GMSGFMT = @GMSGFMT@ +GREP = @GREP@ +GSR_CFLAGS = @GSR_CFLAGS@ +GSR_LIBS = @GSR_LIBS@ +GSTMIXER_CFLAGS = @GSTMIXER_CFLAGS@ +GSTMIXER_LIBS = @GSTMIXER_LIBS@ +GSTPROPS_CFLAGS = @GSTPROPS_CFLAGS@ +GSTPROPS_LIBS = @GSTPROPS_LIBS@ +GST_MAJORMINOR = @GST_MAJORMINOR@ +HAVE_PULSEAUDIO = @HAVE_PULSEAUDIO@ +HAVE_SOUND_THEME = @HAVE_SOUND_THEME@ +HELP_DIR = @HELP_DIR@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INSTOBJEXT = @INSTOBJEXT@ +INTLLIBS = @INTLLIBS@ +INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@ +INTLTOOL_MERGE = @INTLTOOL_MERGE@ +INTLTOOL_PERL = @INTLTOOL_PERL@ +INTLTOOL_UPDATE = @INTLTOOL_UPDATE@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MATECC_DESKTOP_DIR = @MATECC_DESKTOP_DIR@ +MATECONFTOOL = @MATECONFTOOL@ +MATECONF_SCHEMA_CONFIG_SOURCE = @MATECONF_SCHEMA_CONFIG_SOURCE@ +MATECONF_SCHEMA_FILE_DIR = @MATECONF_SCHEMA_FILE_DIR@ +MKDIR_P = @MKDIR_P@ +MKINSTALLDIRS = @MKINSTALLDIRS@ +MSGFMT = @MSGFMT@ +MSGFMT_OPTS = @MSGFMT_OPTS@ +MSGMERGE = @MSGMERGE@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OMF_DIR = @OMF_DIR@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PACKAGE_VERSION_MAJOR = @PACKAGE_VERSION_MAJOR@ +PACKAGE_VERSION_MICRO = @PACKAGE_VERSION_MICRO@ +PACKAGE_VERSION_MINOR = @PACKAGE_VERSION_MINOR@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +POFILES = @POFILES@ +POSUB = @POSUB@ +PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ +PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@ +PROGRAMS_GSTPROPS = @PROGRAMS_GSTPROPS@ +PULSEAUDIO_CFLAGS = @PULSEAUDIO_CFLAGS@ +PULSEAUDIO_LIBS = @PULSEAUDIO_LIBS@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SOUNDTHEME_CFLAGS = @SOUNDTHEME_CFLAGS@ +SOUNDTHEME_LIBS = @SOUNDTHEME_LIBS@ +SOUND_THEME_CFLAGS = @SOUND_THEME_CFLAGS@ +SOUND_THEME_LIBS = @SOUND_THEME_LIBS@ +STRIP = @STRIP@ +USE_NLS = @USE_NLS@ +VERSION = @VERSION@ +VOLUME_CONTROL_CFLAGS = @VOLUME_CONTROL_CFLAGS@ +VOLUME_CONTROL_LIBS = @VOLUME_CONTROL_LIBS@ +WARN_CFLAGS = @WARN_CFLAGS@ +WARN_CXXFLAGS = @WARN_CXXFLAGS@ +XGETTEXT = @XGETTEXT@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +SUBDIRS = status devices +all: all-recursive + +.SUFFIXES: +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign mate-volume-control/data/icons/scalable/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign mate-volume-control/data/icons/scalable/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +# This directory's subdirectories are mostly independent; you can cd +# into them and run `make' without going through this Makefile. +# To change the values of `make' variables: instead of editing Makefiles, +# (1) if the variable is set in `config.status', edit `config.status' +# (which will cause the Makefiles to be regenerated when you run `make'); +# (2) otherwise, pass the desired values on the `make' command line. +$(RECURSIVE_TARGETS): + @fail= failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +$(RECURSIVE_CLEAN_TARGETS): + @fail= failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + rev=''; for subdir in $$list; do \ + if test "$$subdir" = "."; then :; else \ + rev="$$subdir $$rev"; \ + fi; \ + done; \ + rev="$$rev ."; \ + target=`echo $@ | sed s/-recursive//`; \ + for subdir in $$rev; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done +ctags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + done + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + set x; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: CTAGS +CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ + $(am__relativize); \ + new_distdir=$$reldir; \ + dir1=$$subdir; dir2="$(top_distdir)"; \ + $(am__relativize); \ + new_top_distdir=$$reldir; \ + echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ + echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ + ($(am__cd) $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$new_top_distdir" \ + distdir="$$new_distdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + am__skip_mode_fix=: \ + distdir) \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-recursive +all-am: Makefile +installdirs: installdirs-recursive +installdirs-am: +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-recursive + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-recursive + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +html-am: + +info: info-recursive + +info-am: + +install-data-am: + +install-dvi: install-dvi-recursive + +install-dvi-am: + +install-exec-am: + +install-html: install-html-recursive + +install-html-am: + +install-info: install-info-recursive + +install-info-am: + +install-man: + +install-pdf: install-pdf-recursive + +install-pdf-am: + +install-ps: install-ps-recursive + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: + +.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \ + install-am install-strip tags-recursive + +.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ + all all-am check check-am clean clean-generic clean-libtool \ + ctags ctags-recursive distclean distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs installdirs-am maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \ + uninstall uninstall-am + + +-include $(top_srcdir)/git.mk + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/mate-volume-control/data/icons/scalable/devices/Makefile.am b/mate-volume-control/data/icons/scalable/devices/Makefile.am new file mode 100644 index 0000000..e22cb77 --- /dev/null +++ b/mate-volume-control/data/icons/scalable/devices/Makefile.am @@ -0,0 +1,35 @@ +NULL = + +themedir = $(pkgdatadir)/icons/mate +size = 48x48 +context = devices + +iconsdir = $(themedir)/$(size)/$(context) + +icons_DATA = \ + audio-speaker-center.svg \ + audio-speaker-center-testing.svg \ + audio-speaker-left-back.svg \ + audio-speaker-left-back-testing.svg \ + audio-speaker-left.svg \ + audio-speaker-left-side.svg \ + audio-speaker-left-side-testing.svg \ + audio-speaker-left-testing.svg \ + audio-speaker-right-back.svg \ + audio-speaker-right-back-testing.svg \ + audio-speaker-right.svg \ + audio-speaker-right-side.svg \ + audio-speaker-right-side-testing.svg \ + audio-speaker-right-testing.svg \ + audio-speaker-center-back-testing.svg \ + audio-speaker-center-back.svg \ + audio-subwoofer.svg \ + audio-subwoofer-testing.svg \ + $(NULL) + +EXTRA_DIST = \ + $(icons_DATA) \ + $(NULL) + + +-include $(top_srcdir)/git.mk diff --git a/mate-volume-control/data/icons/scalable/devices/Makefile.in b/mate-volume-control/data/icons/scalable/devices/Makefile.in new file mode 100644 index 0000000..e5aa46b --- /dev/null +++ b/mate-volume-control/data/icons/scalable/devices/Makefile.in @@ -0,0 +1,508 @@ +# Makefile.in generated by automake 1.11.1 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, +# Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = mate-volume-control/data/icons/scalable/devices +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/as-ac-expand.m4 \ + $(top_srcdir)/m4/as-compiler-flag.m4 \ + $(top_srcdir)/m4/as-version.m4 $(top_srcdir)/m4/intltool.m4 \ + $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ + $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ + $(top_srcdir)/m4/lt~obsolete.m4 \ + $(top_srcdir)/m4/mate-doc-utils.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/build-aux/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +AM_V_GEN = $(am__v_GEN_$(V)) +am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) +am__v_GEN_0 = @echo " GEN " $@; +AM_V_at = $(am__v_at_$(V)) +am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) +am__v_at_0 = @ +SOURCES = +DIST_SOURCES = +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__installdirs = "$(DESTDIR)$(iconsdir)" +DATA = $(icons_DATA) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +ALL_LINGUAS = @ALL_LINGUAS@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CATALOGS = @CATALOGS@ +CATOBJEXT = @CATOBJEXT@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DATADIRNAME = @DATADIRNAME@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DISABLE_DEPRECATED = @DISABLE_DEPRECATED@ +DISTCHECK_CONFIGURE_FLAGS = @DISTCHECK_CONFIGURE_FLAGS@ +DLLTOOL = @DLLTOOL@ +DOC_USER_FORMATS = @DOC_USER_FORMATS@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ +GLADEUI_CATALOG_DIR = @GLADEUI_CATALOG_DIR@ +GLADEUI_CFLAGS = @GLADEUI_CFLAGS@ +GLADEUI_LIBS = @GLADEUI_LIBS@ +GLADEUI_MODULE_DIR = @GLADEUI_MODULE_DIR@ +GLIB_GENMARSHAL = @GLIB_GENMARSHAL@ +GMOFILES = @GMOFILES@ +GMP_CFLAGS = @GMP_CFLAGS@ +GMP_LIBS = @GMP_LIBS@ +GMSGFMT = @GMSGFMT@ +GREP = @GREP@ +GSR_CFLAGS = @GSR_CFLAGS@ +GSR_LIBS = @GSR_LIBS@ +GSTMIXER_CFLAGS = @GSTMIXER_CFLAGS@ +GSTMIXER_LIBS = @GSTMIXER_LIBS@ +GSTPROPS_CFLAGS = @GSTPROPS_CFLAGS@ +GSTPROPS_LIBS = @GSTPROPS_LIBS@ +GST_MAJORMINOR = @GST_MAJORMINOR@ +HAVE_PULSEAUDIO = @HAVE_PULSEAUDIO@ +HAVE_SOUND_THEME = @HAVE_SOUND_THEME@ +HELP_DIR = @HELP_DIR@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INSTOBJEXT = @INSTOBJEXT@ +INTLLIBS = @INTLLIBS@ +INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@ +INTLTOOL_MERGE = @INTLTOOL_MERGE@ +INTLTOOL_PERL = @INTLTOOL_PERL@ +INTLTOOL_UPDATE = @INTLTOOL_UPDATE@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MATECC_DESKTOP_DIR = @MATECC_DESKTOP_DIR@ +MATECONFTOOL = @MATECONFTOOL@ +MATECONF_SCHEMA_CONFIG_SOURCE = @MATECONF_SCHEMA_CONFIG_SOURCE@ +MATECONF_SCHEMA_FILE_DIR = @MATECONF_SCHEMA_FILE_DIR@ +MKDIR_P = @MKDIR_P@ +MKINSTALLDIRS = @MKINSTALLDIRS@ +MSGFMT = @MSGFMT@ +MSGFMT_OPTS = @MSGFMT_OPTS@ +MSGMERGE = @MSGMERGE@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OMF_DIR = @OMF_DIR@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PACKAGE_VERSION_MAJOR = @PACKAGE_VERSION_MAJOR@ +PACKAGE_VERSION_MICRO = @PACKAGE_VERSION_MICRO@ +PACKAGE_VERSION_MINOR = @PACKAGE_VERSION_MINOR@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +POFILES = @POFILES@ +POSUB = @POSUB@ +PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ +PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@ +PROGRAMS_GSTPROPS = @PROGRAMS_GSTPROPS@ +PULSEAUDIO_CFLAGS = @PULSEAUDIO_CFLAGS@ +PULSEAUDIO_LIBS = @PULSEAUDIO_LIBS@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SOUNDTHEME_CFLAGS = @SOUNDTHEME_CFLAGS@ +SOUNDTHEME_LIBS = @SOUNDTHEME_LIBS@ +SOUND_THEME_CFLAGS = @SOUND_THEME_CFLAGS@ +SOUND_THEME_LIBS = @SOUND_THEME_LIBS@ +STRIP = @STRIP@ +USE_NLS = @USE_NLS@ +VERSION = @VERSION@ +VOLUME_CONTROL_CFLAGS = @VOLUME_CONTROL_CFLAGS@ +VOLUME_CONTROL_LIBS = @VOLUME_CONTROL_LIBS@ +WARN_CFLAGS = @WARN_CFLAGS@ +WARN_CXXFLAGS = @WARN_CXXFLAGS@ +XGETTEXT = @XGETTEXT@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +NULL = +themedir = $(pkgdatadir)/icons/mate +size = 48x48 +context = devices +iconsdir = $(themedir)/$(size)/$(context) +icons_DATA = \ + audio-speaker-center.svg \ + audio-speaker-center-testing.svg \ + audio-speaker-left-back.svg \ + audio-speaker-left-back-testing.svg \ + audio-speaker-left.svg \ + audio-speaker-left-side.svg \ + audio-speaker-left-side-testing.svg \ + audio-speaker-left-testing.svg \ + audio-speaker-right-back.svg \ + audio-speaker-right-back-testing.svg \ + audio-speaker-right.svg \ + audio-speaker-right-side.svg \ + audio-speaker-right-side-testing.svg \ + audio-speaker-right-testing.svg \ + audio-speaker-center-back-testing.svg \ + audio-speaker-center-back.svg \ + audio-subwoofer.svg \ + audio-subwoofer-testing.svg \ + $(NULL) + +EXTRA_DIST = \ + $(icons_DATA) \ + $(NULL) + +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign mate-volume-control/data/icons/scalable/devices/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign mate-volume-control/data/icons/scalable/devices/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-iconsDATA: $(icons_DATA) + @$(NORMAL_INSTALL) + test -z "$(iconsdir)" || $(MKDIR_P) "$(DESTDIR)$(iconsdir)" + @list='$(icons_DATA)'; test -n "$(iconsdir)" || list=; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(iconsdir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(iconsdir)" || exit $$?; \ + done + +uninstall-iconsDATA: + @$(NORMAL_UNINSTALL) + @list='$(icons_DATA)'; test -n "$(iconsdir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + test -n "$$files" || exit 0; \ + echo " ( cd '$(DESTDIR)$(iconsdir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(iconsdir)" && rm -f $$files +tags: TAGS +TAGS: + +ctags: CTAGS +CTAGS: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(DATA) +installdirs: + for dir in "$(DESTDIR)$(iconsdir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-iconsDATA + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-iconsDATA + +.MAKE: install-am install-strip + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + distclean distclean-generic distclean-libtool distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-iconsDATA install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + uninstall uninstall-am uninstall-iconsDATA + + +-include $(top_srcdir)/git.mk + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/mate-volume-control/data/icons/scalable/devices/audio-speaker-center-back-testing.svg b/mate-volume-control/data/icons/scalable/devices/audio-speaker-center-back-testing.svg new file mode 100644 index 0000000..93afe0b --- /dev/null +++ b/mate-volume-control/data/icons/scalable/devices/audio-speaker-center-back-testing.svg @@ -0,0 +1,539 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="48" + height="48" + id="svg2643" + sodipodi:version="0.32" + inkscape:version="0.47 r22583" + version="1.0" + sodipodi:docname="audio-speaker-center-back-testing.svg" + inkscape:output_extension="org.inkscape.output.svg.inkscape" + inkscape:export-filename="/Users/eve/Documents/MATE/audio-speaker-left-side-testing.png" + inkscape:export-xdpi="67.489998" + inkscape:export-ydpi="67.489998"> + <defs + id="defs2645"> + <linearGradient + id="linearGradient3529"> + <stop + id="stop3531" + offset="0" + style="stop-color:#fefefe;stop-opacity:1;" /> + <stop + id="stop3533" + offset="1" + style="stop-color:#e8e7e6;stop-opacity:1;" /> + </linearGradient> + <linearGradient + id="linearGradient4389"> + <stop + style="stop-color:#555753;stop-opacity:1;" + offset="0" + id="stop4391" /> + <stop + id="stop4393" + offset="1" + style="stop-color:#eeeeec;stop-opacity:1;" /> + </linearGradient> + <linearGradient + id="linearGradient4325"> + <stop + id="stop4327" + offset="0" + style="stop-color:#2e3436;stop-opacity:1;" /> + <stop + style="stop-color:#eeeeec;stop-opacity:1;" + offset="1" + id="stop4329" /> + </linearGradient> + <linearGradient + id="linearGradient21608"> + <stop + style="stop-color:#888a85;stop-opacity:1" + offset="0" + id="stop21610" /> + <stop + style="stop-color:#2e3436;stop-opacity:1" + offset="1" + id="stop21612" /> + </linearGradient> + <linearGradient + id="linearGradient15341"> + <stop + style="stop-color:#888a85;stop-opacity:1" + offset="0" + id="stop15343" /> + <stop + style="stop-color:#555753;stop-opacity:1" + offset="1" + id="stop15345" /> + </linearGradient> + <linearGradient + id="linearGradient6371"> + <stop + style="stop-color:#888a85;stop-opacity:1" + offset="0" + id="stop6373" /> + <stop + style="stop-color:#d3d7cf;stop-opacity:1;" + offset="1" + id="stop6375" /> + </linearGradient> + <linearGradient + id="linearGradient10872"> + <stop + id="stop10874" + offset="0" + style="stop-color:#888a85;stop-opacity:1" /> + <stop + style="stop-color:#9e9e92;stop-opacity:1;" + offset="0.25301206" + id="stop10876" /> + <stop + id="stop10878" + offset="1" + style="stop-color:#555753;stop-opacity:1" /> + </linearGradient> + <linearGradient + id="linearGradient5254"> + <stop + id="stop5256" + offset="0" + style="stop-color:#707469;stop-opacity:1;" /> + <stop + id="stop5258" + offset="1" + style="stop-color:#2e3335;stop-opacity:1;" /> + </linearGradient> + <linearGradient + id="linearGradient10055"> + <stop + style="stop-color:#bebebe;stop-opacity:1;" + offset="0" + id="stop10057" /> + <stop + id="stop10061" + offset="0.375" + style="stop-color:#e8e8e8;stop-opacity:1;" /> + <stop + style="stop-color:#5c5c5c;stop-opacity:1;" + offset="1" + id="stop10059" /> + </linearGradient> + <linearGradient + id="linearGradient4841"> + <stop + id="stop4843" + offset="0" + style="stop-color:#babdb6;stop-opacity:1;" /> + <stop + style="stop-color:#fcaf3e;stop-opacity:0.94117647;" + offset="0" + id="stop4845" /> + <stop + id="stop4847" + offset="1" + style="stop-color:#babdb6;stop-opacity:1;" /> + <stop + style="stop-color:#eeeeec;stop-opacity:1;" + offset="1" + id="stop4849" /> + </linearGradient> + <linearGradient + id="linearGradient4809"> + <stop + style="stop-color:#babdb6;stop-opacity:1;" + offset="0" + id="stop4811" /> + <stop + id="stop4813" + offset="0" + style="stop-color:#ad7fa8;stop-opacity:1;" /> + <stop + style="stop-color:#babdb6;stop-opacity:1;" + offset="1" + id="stop4815" /> + <stop + id="stop4817" + offset="1" + style="stop-color:#eeeeec;stop-opacity:1;" /> + </linearGradient> + <linearGradient + id="linearGradient3345"> + <stop + id="stop3347" + offset="0" + style="stop-color:#babdb6;stop-opacity:1;" /> + <stop + style="stop-color:#729fcf;stop-opacity:1;" + offset="0" + id="stop3351" /> + <stop + id="stop3355" + offset="1" + style="stop-color:#babdb6;stop-opacity:1;" /> + <stop + style="stop-color:#eeeeec;stop-opacity:1;" + offset="1" + id="stop3349" /> + </linearGradient> + <linearGradient + id="linearGradient3223"> + <stop + style="stop-color:#eeeeec;stop-opacity:1;" + offset="0" + id="stop3225" /> + <stop + style="stop-color:#babdb6;stop-opacity:1;" + offset="1" + id="stop3227" /> + </linearGradient> + <linearGradient + id="linearGradient3503"> + <stop + style="stop-color:#babdb6;stop-opacity:1;" + offset="0" + id="stop3239" /> + <stop + id="stop3507" + offset="1" + style="stop-color:#eeeeec;stop-opacity:1;" /> + </linearGradient> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + id="perspective2651" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient3501" + cx="22.276291" + cy="32.248856" + fx="22.276291" + fy="32.248856" + r="20.319138" + gradientTransform="matrix(1,0,0,0.2366258,0,24.617945)" + gradientUnits="userSpaceOnUse" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient3500" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.2366258,0,24.617945)" + cx="22.276291" + cy="32.248856" + fx="22.276291" + fy="32.248856" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient3232" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,47.474934,42.420392)" + cx="22.276291" + cy="21.520338" + fx="22.276291" + fy="21.520338" + r="20.319138" + spreadMethod="reflect" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient5689" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0469084,0,0,0.4796469,270.37856,38.427671)" + cx="22.276291" + cy="32.248856" + fx="22.276291" + fy="32.248856" + r="20.319138" /> + <inkscape:perspective + id="perspective3474" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 526.18109 : 1" + sodipodi:type="inkscape:persp3d" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4325" + id="radialGradient4359" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,-52.447261,-106.14795)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient5015" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,42.720075,-107.89847)" + spreadMethod="pad" + cx="22.276291" + cy="21.520338" + fx="22.276291" + fy="21.520338" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient5062" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,98.720075,-107.89847)" + spreadMethod="pad" + cx="22.276291" + cy="21.520338" + fx="22.276291" + fy="21.520338" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4325" + id="radialGradient5064" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,98.720075,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4389" + id="radialGradient5110" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,142.72007,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4389" + id="radialGradient3863" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,92.720075,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4389" + id="radialGradient3865" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,92.720075,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4389" + id="radialGradient3906" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,92.720075,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3345" + id="radialGradient5554" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,97.725459,40.419065)" + spreadMethod="pad" + cx="22.276291" + cy="21.520338" + fx="22.276291" + fy="21.520338" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient8512" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,97.72545,40.294064)" + spreadMethod="reflect" + cx="22.276291" + cy="21.520338" + fx="22.276291" + fy="21.520338" + r="20.319138" /> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + gridtolerance="10000" + guidetolerance="10" + objecttolerance="10" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="1" + inkscape:cx="126.80533" + inkscape:cy="41.532441" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="false" + inkscape:snap-global="false" + inkscape:window-width="1680" + inkscape:window-height="977" + inkscape:window-x="0" + inkscape:window-y="27" + showguides="false" + inkscape:guide-bbox="true" + inkscape:window-maximized="1"> + <inkscape:grid + type="xygrid" + id="grid2653" + visible="true" + enabled="true" + color="#ff00ff" + opacity="0.1254902" + empcolor="#0000f2" + empopacity="0.25098039" /> + <sodipodi:guide + orientation="1,0" + position="23.969062,28.50558" + id="guide3488" /> + <sodipodi:guide + orientation="0,1" + position="-14.142136,73.185552" + id="guide3490" /> + <sodipodi:guide + orientation="1,0" + position="-21,-23.25" + id="guide5857" /> + <sodipodi:guide + orientation="1,0" + position="-49.5,-22.625" + id="guide5859" /> + </sodipodi:namedview> + <metadata + id="metadata2648"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <cc:license + rdf:resource="" /> + <dc:subject> + <rdf:Bag> + <rdf:li>audio</rdf:li> + <rdf:li>device</rdf:li> + <rdf:li>speaker</rdf:li> + <rdf:li>output</rdf:li> + <rdf:li>center</rdf:li> + <rdf:li>testing</rdf:li> + <rdf:li>highlighted</rdf:li> + </rdf:Bag> + </dc:subject> + <dc:title>audio-speaker-center-testing</dc:title> + <dc:creator> + <cc:Agent> + <dc:title>Evangeline McGlynn</dc:title> + </cc:Agent> + </dc:creator> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <g + id="g8490" + transform="matrix(1,0,0,-1,-50.334601,47.958369)"> + <path + sodipodi:nodetypes="ccccc" + id="path8492" + d="m 64.325669,10.506413 c 6.07143,-3.4821397 13.14286,-3.3928497 19.39286,0 l 2,4.39286 -23.39286,0 2,-4.39286 z" + style="fill:#729fcf;fill-opacity:1;fill-rule:nonzero;stroke:#2e3436;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> + <path + sodipodi:nodetypes="csssccsssc" + d="m 95.897099,27.934983 c 0,0 -4.54743,-8.68677 -9.8613,-12.93926 -0.21063,-0.16856 -0.42247,-0.33016 -0.63527,-0.48397 -0.50204,-0.36286 -1.00946,-0.68239 -1.51919,-0.94787 -0.56896,-0.29634 -1.14078,-0.52533 -1.71117,-0.67205 -3.88321,-1.01934 -11.71652,-1.06249 -15.58966,-0.04613 -0.83989,0.21914 -1.6816,0.61173 -2.51203,1.13191 -0.62524,0.39166 -1.24409,0.85564 -1.85095,1.37236 -1.87112,1.5932 -3.628309,3.68784 -5.107769,5.71001 -2.59659,3.54911 -4.33766,6.875 -4.33766,6.875" + style="fill:none;stroke:none" + id="path8494" /> + <path + style="fill:none;stroke:#bfd8f3;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="m 62.827469,15.979023 2.18704,-4.766 c 5.261057,-2.7432797 11.220313,-3.3671697 17.939063,-0.0056 l 1.96851,4.2035" + id="path8496" + sodipodi:nodetypes="cccc" /> + <path + sodipodi:nodetypes="cccc" + d="m 95.001579,28.523883 c 0,0 -6.30803,-12.92857 -13.07068,-14.66816 -3.88321,-1.01933 -11.18527,-1.06248 -15.05841,-0.04613 -6.84412,1.78572 -11.839659,12.46429 -11.839659,12.46429" + style="fill:#729fcf;fill-opacity:1;fill-rule:evenodd;stroke:#bfd8f3;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + id="path8498" /> + <path + transform="matrix(1.0469083,0,0,2.027027,51.01285,-35.409607)" + d="m 43.214285,32.24107 c 0,2.736768 -9.374038,4.955357 -20.9375,4.955357 -11.563462,0 -20.9375001,-2.218589 -20.9375001,-4.955357 0,-2.736768 9.3740381,-4.955357 20.9375001,-4.955357 11.563462,0 20.9375,2.218589 20.9375,4.955357 z" + sodipodi:ry="4.9553571" + sodipodi:rx="20.9375" + sodipodi:cy="32.24107" + sodipodi:cx="22.276785" + id="path8500" + style="fill:#eeeeec;fill-opacity:1;fill-rule:nonzero;stroke:#2e3436;stroke-width:0.68646109;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + sodipodi:type="arc" /> + <path + sodipodi:nodetypes="ccccc" + id="path8502" + d="m 95.16001,29.859216 c 0.1894,4.408221 -8.80985,9.066057 -20.909493,9.066057 -12.099643,0 -21.130461,-4.594701 -20.90949,-9.066057 -0.189403,-4.566056 8.809847,-9.034489 20.90949,-9.034489 12.099643,0 20.941063,4.37373 20.909493,9.034489 z" + style="fill:url(#radialGradient8512);fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> + <path + style="fill:none;stroke:#555753;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="m 82.142459,27.943913 c -0.67407,2.18776 -3.2897,3.38538 -7.80786,3.38538 -4.51815,0 -7.3487,-1.37717 -7.80786,-3.38538 -0.07073,-1.70502 3.28971,-3.37359 7.80786,-3.37359 4.51816,0 7.81965,1.63321 7.80786,3.37359 z" + id="path8504" + sodipodi:nodetypes="ccccc" /> + <path + style="fill:#729fcf;fill-opacity:1;fill-rule:nonzero;stroke:#204a87;stroke-width:0.96596354;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="m 67.476989,27.764793 c 0.9704,3.07926 3.66898,5.29604 6.84343,5.29605 3.19412,0 5.90648,-2.24438 6.86128,-5.35345 -0.90064,-1.50063 -4.28117,-2.23685 -6.89061,-2.19358 -3.30434,-0.08574 -5.85648,0.85968 -6.8141,2.25098 z" + id="path8506" + sodipodi:nodetypes="csccc" + inkscape:export-filename="/Users/eve/Documents/MATE/SpeakerIcon_Test.png" + inkscape:export-xdpi="67.489998" + inkscape:export-ydpi="67.489998" /> + <path + id="path8508" + style="fill:none;stroke:#2e3436;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 62.722179,14.847493 c -0.12704,0.1026 -0.3786,0.39515 -0.50465,0.50248 -1.87112,1.5932 -3.628309,3.68784 -5.107769,5.71001 -2.59659,3.54911 -4.33766,6.875 -4.33766,6.875 m 43.124999,0 c 0,0 -4.54743,-8.68677 -9.8613,-12.93926 -0.21063,-0.16856 -0.42247,-0.33016 -0.63527,-0.48397 -0.10052,-0.07265 -0.648157,-0.29253 -0.749077,-0.36162" + sodipodi:nodetypes="cssccsss" /> + <path + id="path8510" + style="fill:none;stroke:#bfd8f3;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 81.930899,13.855723 c -3.88321,-1.01933 -11.18527,-1.06248 -15.05841,-0.04613" + sodipodi:nodetypes="cc" /> + </g> + </g> +</svg> diff --git a/mate-volume-control/data/icons/scalable/devices/audio-speaker-center-back.svg b/mate-volume-control/data/icons/scalable/devices/audio-speaker-center-back.svg new file mode 100644 index 0000000..7d278f8 --- /dev/null +++ b/mate-volume-control/data/icons/scalable/devices/audio-speaker-center-back.svg @@ -0,0 +1,506 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="48" + height="48" + id="svg2643" + sodipodi:version="0.32" + inkscape:version="0.47 r22583" + version="1.0" + sodipodi:docname="audio-speaker-center-back.svg" + inkscape:output_extension="org.inkscape.output.svg.inkscape" + inkscape:export-filename="/Users/eve/Documents/MATE/audio-speaker.png" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90"> + <defs + id="defs2645"> + <linearGradient + id="linearGradient4389"> + <stop + style="stop-color:#555753;stop-opacity:1;" + offset="0" + id="stop4391" /> + <stop + id="stop4393" + offset="1" + style="stop-color:#eeeeec;stop-opacity:1;" /> + </linearGradient> + <linearGradient + id="linearGradient4325"> + <stop + id="stop4327" + offset="0" + style="stop-color:#2e3436;stop-opacity:1;" /> + <stop + style="stop-color:#eeeeec;stop-opacity:1;" + offset="1" + id="stop4329" /> + </linearGradient> + <linearGradient + id="linearGradient21608"> + <stop + style="stop-color:#888a85;stop-opacity:1" + offset="0" + id="stop21610" /> + <stop + style="stop-color:#2e3436;stop-opacity:1" + offset="1" + id="stop21612" /> + </linearGradient> + <linearGradient + id="linearGradient15341"> + <stop + style="stop-color:#888a85;stop-opacity:1" + offset="0" + id="stop15343" /> + <stop + style="stop-color:#555753;stop-opacity:1" + offset="1" + id="stop15345" /> + </linearGradient> + <linearGradient + id="linearGradient6371"> + <stop + style="stop-color:#888a85;stop-opacity:1" + offset="0" + id="stop6373" /> + <stop + style="stop-color:#d3d7cf;stop-opacity:1;" + offset="1" + id="stop6375" /> + </linearGradient> + <linearGradient + id="linearGradient10872"> + <stop + id="stop10874" + offset="0" + style="stop-color:#888a85;stop-opacity:1" /> + <stop + style="stop-color:#9e9e92;stop-opacity:1;" + offset="0.25301206" + id="stop10876" /> + <stop + id="stop10878" + offset="1" + style="stop-color:#555753;stop-opacity:1" /> + </linearGradient> + <linearGradient + id="linearGradient5254"> + <stop + id="stop5256" + offset="0" + style="stop-color:#707469;stop-opacity:1;" /> + <stop + id="stop5258" + offset="1" + style="stop-color:#2e3335;stop-opacity:1;" /> + </linearGradient> + <linearGradient + id="linearGradient10055"> + <stop + style="stop-color:#bebebe;stop-opacity:1;" + offset="0" + id="stop10057" /> + <stop + id="stop10061" + offset="0.375" + style="stop-color:#e8e8e8;stop-opacity:1;" /> + <stop + style="stop-color:#5c5c5c;stop-opacity:1;" + offset="1" + id="stop10059" /> + </linearGradient> + <linearGradient + id="linearGradient4841"> + <stop + id="stop4843" + offset="0" + style="stop-color:#babdb6;stop-opacity:1;" /> + <stop + style="stop-color:#fcaf3e;stop-opacity:0.94117647;" + offset="0" + id="stop4845" /> + <stop + id="stop4847" + offset="1" + style="stop-color:#babdb6;stop-opacity:1;" /> + <stop + style="stop-color:#eeeeec;stop-opacity:1;" + offset="1" + id="stop4849" /> + </linearGradient> + <linearGradient + id="linearGradient4809"> + <stop + style="stop-color:#babdb6;stop-opacity:1;" + offset="0" + id="stop4811" /> + <stop + id="stop4813" + offset="0" + style="stop-color:#ad7fa8;stop-opacity:1;" /> + <stop + style="stop-color:#babdb6;stop-opacity:1;" + offset="1" + id="stop4815" /> + <stop + id="stop4817" + offset="1" + style="stop-color:#eeeeec;stop-opacity:1;" /> + </linearGradient> + <linearGradient + id="linearGradient3345"> + <stop + id="stop3347" + offset="0" + style="stop-color:#babdb6;stop-opacity:1;" /> + <stop + style="stop-color:#729fcf;stop-opacity:1;" + offset="0" + id="stop3351" /> + <stop + id="stop3355" + offset="1" + style="stop-color:#babdb6;stop-opacity:1;" /> + <stop + style="stop-color:#eeeeec;stop-opacity:1;" + offset="1" + id="stop3349" /> + </linearGradient> + <linearGradient + id="linearGradient3223"> + <stop + style="stop-color:#eeeeec;stop-opacity:1;" + offset="0" + id="stop3225" /> + <stop + style="stop-color:#babdb6;stop-opacity:1;" + offset="1" + id="stop3227" /> + </linearGradient> + <linearGradient + id="linearGradient3503"> + <stop + style="stop-color:#babdb6;stop-opacity:1;" + offset="0" + id="stop3239" /> + <stop + id="stop3507" + offset="1" + style="stop-color:#eeeeec;stop-opacity:1;" /> + </linearGradient> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + id="perspective2651" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient3501" + cx="22.276291" + cy="32.248856" + fx="22.276291" + fy="32.248856" + r="20.319138" + gradientTransform="matrix(1,0,0,0.2366258,0,24.617945)" + gradientUnits="userSpaceOnUse" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient3500" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.2366258,0,24.617945)" + cx="22.276291" + cy="32.248856" + fx="22.276291" + fy="32.248856" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient3232" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,47.474934,42.420392)" + cx="22.276291" + cy="21.520338" + fx="22.276291" + fy="21.520338" + r="20.319138" + spreadMethod="reflect" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient5689" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0469084,0,0,0.4796469,270.37856,38.427671)" + cx="22.276291" + cy="32.248856" + fx="22.276291" + fy="32.248856" + r="20.319138" /> + <inkscape:perspective + id="perspective3474" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 526.18109 : 1" + sodipodi:type="inkscape:persp3d" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4325" + id="radialGradient4359" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,-52.447261,-106.14795)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient5015" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,42.720075,-107.89847)" + spreadMethod="pad" + cx="22.276291" + cy="21.520338" + fx="22.276291" + fy="21.520338" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient5062" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,98.720075,-107.89847)" + spreadMethod="pad" + cx="22.276291" + cy="21.520338" + fx="22.276291" + fy="21.520338" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4325" + id="radialGradient5064" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,98.720075,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4389" + id="radialGradient5110" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,142.72007,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4389" + id="radialGradient3863" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,92.720075,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4389" + id="radialGradient3865" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,92.720075,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4389" + id="radialGradient3906" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,92.720075,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4389" + id="radialGradient7260" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,47.516569,40.378763)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + gridtolerance="10000" + guidetolerance="10" + objecttolerance="10" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="5.6568542" + inkscape:cx="-53.025818" + inkscape:cy="20.556657" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="false" + inkscape:snap-global="false" + inkscape:window-width="1680" + inkscape:window-height="977" + inkscape:window-x="0" + inkscape:window-y="27" + showguides="false" + inkscape:guide-bbox="true" + inkscape:window-maximized="1"> + <inkscape:grid + type="xygrid" + id="grid2653" + visible="true" + enabled="true" + color="#ff00ff" + opacity="0.1254902" + empcolor="#0000f2" + empopacity="0.25098039" /> + <sodipodi:guide + orientation="1,0" + position="23.969062,28.50558" + id="guide3488" /> + <sodipodi:guide + orientation="0,1" + position="17.401268,34.125445" + id="guide3490" /> + </sodipodi:namedview> + <metadata + id="metadata2648"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <cc:license + rdf:resource="" /> + <dc:subject> + <rdf:Bag> + <rdf:li>audio</rdf:li> + <rdf:li>device</rdf:li> + <rdf:li>speaker</rdf:li> + <rdf:li>output</rdf:li> + <rdf:li>center</rdf:li> + </rdf:Bag> + </dc:subject> + <dc:title>audio-speaker-center</dc:title> + <dc:creator> + <cc:Agent> + <dc:title>Evangeline McGlynn</dc:title> + </cc:Agent> + </dc:creator> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <g + id="g7248" + transform="matrix(1,0,0,-1,-0.04163061,47.958369)"> + <path + sodipodi:nodetypes="ccccc" + id="path5365" + d="m 14.032699,10.506413 c 6.07143,-3.4821397 13.14286,-3.3928497 19.39286,0 l 2,4.39286 -23.39286,0 2,-4.39286 z" + style="fill:#babdb6;fill-opacity:1;fill-rule:nonzero;stroke:#2e3436;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> + <path + sodipodi:nodetypes="csssccsssc" + d="m 45.604129,27.934983 c 0,0 -4.54743,-8.68677 -9.8613,-12.93926 -0.21063,-0.16856 -0.42247,-0.33016 -0.63527,-0.48397 -0.50204,-0.36286 -1.00946,-0.68239 -1.51919,-0.94787 -0.56896,-0.29634 -1.14078,-0.52533 -1.71117,-0.67205 -3.88321,-1.01934 -11.71652,-1.06249 -15.58966,-0.04613 -0.83989,0.21914 -1.6816,0.61173 -2.51203,1.13191 -0.62524,0.39166 -1.24409,0.85564 -1.85095,1.37236 -1.87112,1.5932 -3.6283094,3.68784 -5.1077694,5.71001 -2.59659,3.54911 -4.33766,6.875 -4.33766,6.875" + style="fill:#babdb6;fill-opacity:1;fill-rule:evenodd;stroke:none" + id="path5367" /> + <path + style="fill:none;stroke:#888a83;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="m 12.534499,15.979023 2.18704,-4.766 c 5.261057,-2.7432797 11.220313,-3.3671697 17.939063,-0.0056 l 1.96851,4.2035" + id="path5369" + sodipodi:nodetypes="cccc" /> + <path + sodipodi:nodetypes="cccc" + d="m 44.708609,28.523883 c 0,0 -6.30803,-12.92857 -13.07068,-14.66816 -3.88321,-1.01933 -11.18527,-1.06248 -15.05841,-0.04613 -6.8441198,1.78572 -11.8396594,12.46429 -11.8396594,12.46429" + style="fill:#555753;fill-opacity:1;fill-rule:evenodd;stroke:#888a85;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + id="path5371" /> + <path + transform="matrix(1.0469083,0,0,2.027027,0.7198796,-35.409607)" + d="m 43.214285,32.24107 c 0,2.736768 -9.374038,4.955357 -20.9375,4.955357 -11.563462,0 -20.9375001,-2.218589 -20.9375001,-4.955357 0,-2.736768 9.3740381,-4.955357 20.9375001,-4.955357 11.563462,0 20.9375,2.218589 20.9375,4.955357 z" + sodipodi:ry="4.9553571" + sodipodi:rx="20.9375" + sodipodi:cy="32.24107" + sodipodi:cx="22.276785" + id="path5373" + style="fill:#eeeeec;fill-opacity:1;fill-rule:nonzero;stroke:#2e3436;stroke-width:0.68646109;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + sodipodi:type="arc" /> + <path + style="fill:url(#radialGradient7260);fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="m 44.951119,29.943913 c 0.18941,4.40822 -8.80985,9.06606 -20.90949,9.06606 -12.09964,0 -21.1304594,-4.5947 -20.9094894,-9.06606 -0.1894,-4.56606 8.8098494,-9.03449 20.9094894,-9.03449 12.09964,0 20.94106,4.37373 20.90949,9.03449 z" + id="path5375" + sodipodi:nodetypes="ccccc" /> + <path + style="fill:none;stroke:#555753;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="m 31.849489,27.943913 c -0.67407,2.18776 -3.2897,3.38538 -7.80786,3.38538 -4.51815,0 -7.3487,-1.37717 -7.80786,-3.38538 -0.07073,-1.70502 3.28971,-3.37359 7.80786,-3.37359 4.51816,0 7.81965,1.63321 7.80786,3.37359 z" + id="path5377" + sodipodi:nodetypes="ccccc" /> + <path + style="fill:#555753;fill-opacity:1;fill-rule:nonzero;stroke:#2e3436;stroke-width:0.96596354;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="m 17.184019,27.764793 c 0.9704,3.07926 3.66898,5.29604 6.84343,5.29605 3.19412,0 5.90648,-2.24438 6.86128,-5.35345 -0.90064,-1.50063 -4.28117,-2.23685 -6.89061,-2.19358 -3.30434,-0.08574 -5.85648,0.85968 -6.8141,2.25098 z" + id="path5379" + sodipodi:nodetypes="csccc" + inkscape:export-filename="/Users/eve/Documents/MATE/SpeakerIcon_Test.png" + inkscape:export-xdpi="67.489998" + inkscape:export-ydpi="67.489998" /> + <path + id="path5381" + style="fill:none;stroke:#2e3436;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 12.429209,14.847493 c -0.12704,0.1026 -0.3786,0.39515 -0.50465,0.50248 -1.87112,1.5932 -3.6283094,3.68784 -5.1077694,5.71001 -2.59659,3.54911 -4.33766,6.875 -4.33766,6.875 m 43.1249994,0 c 0,0 -4.54743,-8.68677 -9.8613,-12.93926 -0.21063,-0.16856 -0.42247,-0.33016 -0.63527,-0.48397 -0.10052,-0.07265 -0.648157,-0.29253 -0.749077,-0.36162" + sodipodi:nodetypes="cssccsss" /> + <path + id="path5383" + style="fill:none;stroke:#888a85;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 31.637929,13.855723 c -3.88321,-1.01933 -11.18527,-1.06248 -15.05841,-0.04613" + sodipodi:nodetypes="cc" /> + </g> + </g> +</svg> diff --git a/mate-volume-control/data/icons/scalable/devices/audio-speaker-center-testing.svg b/mate-volume-control/data/icons/scalable/devices/audio-speaker-center-testing.svg new file mode 100644 index 0000000..09f40bc --- /dev/null +++ b/mate-volume-control/data/icons/scalable/devices/audio-speaker-center-testing.svg @@ -0,0 +1,537 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="48" + height="48" + id="svg2643" + sodipodi:version="0.32" + inkscape:version="0.46" + version="1.0" + sodipodi:docname="audio-speaker-center-testing.svg" + inkscape:output_extension="org.inkscape.output.svg.inkscape" + inkscape:export-filename="/Users/eve/Documents/MATE/audio-speaker-left-side-testing.png" + inkscape:export-xdpi="67.489998" + inkscape:export-ydpi="67.489998"> + <defs + id="defs2645"> + <linearGradient + id="linearGradient3529"> + <stop + id="stop3531" + offset="0" + style="stop-color:#fefefe;stop-opacity:1;" /> + <stop + id="stop3533" + offset="1" + style="stop-color:#e8e7e6;stop-opacity:1;" /> + </linearGradient> + <linearGradient + id="linearGradient4389"> + <stop + style="stop-color:#555753;stop-opacity:1;" + offset="0" + id="stop4391" /> + <stop + id="stop4393" + offset="1" + style="stop-color:#eeeeec;stop-opacity:1;" /> + </linearGradient> + <linearGradient + id="linearGradient4325"> + <stop + id="stop4327" + offset="0" + style="stop-color:#2e3436;stop-opacity:1;" /> + <stop + style="stop-color:#eeeeec;stop-opacity:1;" + offset="1" + id="stop4329" /> + </linearGradient> + <linearGradient + id="linearGradient21608"> + <stop + style="stop-color:#888a85;stop-opacity:1" + offset="0" + id="stop21610" /> + <stop + style="stop-color:#2e3436;stop-opacity:1" + offset="1" + id="stop21612" /> + </linearGradient> + <linearGradient + id="linearGradient15341"> + <stop + style="stop-color:#888a85;stop-opacity:1" + offset="0" + id="stop15343" /> + <stop + style="stop-color:#555753;stop-opacity:1" + offset="1" + id="stop15345" /> + </linearGradient> + <linearGradient + id="linearGradient6371"> + <stop + style="stop-color:#888a85;stop-opacity:1" + offset="0" + id="stop6373" /> + <stop + style="stop-color:#d3d7cf;stop-opacity:1;" + offset="1" + id="stop6375" /> + </linearGradient> + <linearGradient + id="linearGradient10872"> + <stop + id="stop10874" + offset="0" + style="stop-color:#888a85;stop-opacity:1" /> + <stop + style="stop-color:#9e9e92;stop-opacity:1;" + offset="0.25301206" + id="stop10876" /> + <stop + id="stop10878" + offset="1" + style="stop-color:#555753;stop-opacity:1" /> + </linearGradient> + <linearGradient + id="linearGradient5254"> + <stop + id="stop5256" + offset="0" + style="stop-color:#707469;stop-opacity:1;" /> + <stop + id="stop5258" + offset="1" + style="stop-color:#2e3335;stop-opacity:1;" /> + </linearGradient> + <linearGradient + id="linearGradient10055"> + <stop + style="stop-color:#bebebe;stop-opacity:1;" + offset="0" + id="stop10057" /> + <stop + id="stop10061" + offset="0.375" + style="stop-color:#e8e8e8;stop-opacity:1;" /> + <stop + style="stop-color:#5c5c5c;stop-opacity:1;" + offset="1" + id="stop10059" /> + </linearGradient> + <linearGradient + id="linearGradient4841"> + <stop + id="stop4843" + offset="0" + style="stop-color:#babdb6;stop-opacity:1;" /> + <stop + style="stop-color:#fcaf3e;stop-opacity:0.94117647;" + offset="0" + id="stop4845" /> + <stop + id="stop4847" + offset="1" + style="stop-color:#babdb6;stop-opacity:1;" /> + <stop + style="stop-color:#eeeeec;stop-opacity:1;" + offset="1" + id="stop4849" /> + </linearGradient> + <linearGradient + id="linearGradient4809"> + <stop + style="stop-color:#babdb6;stop-opacity:1;" + offset="0" + id="stop4811" /> + <stop + id="stop4813" + offset="0" + style="stop-color:#ad7fa8;stop-opacity:1;" /> + <stop + style="stop-color:#babdb6;stop-opacity:1;" + offset="1" + id="stop4815" /> + <stop + id="stop4817" + offset="1" + style="stop-color:#eeeeec;stop-opacity:1;" /> + </linearGradient> + <linearGradient + id="linearGradient3345"> + <stop + id="stop3347" + offset="0" + style="stop-color:#babdb6;stop-opacity:1;" /> + <stop + style="stop-color:#729fcf;stop-opacity:1;" + offset="0" + id="stop3351" /> + <stop + id="stop3355" + offset="1" + style="stop-color:#babdb6;stop-opacity:1;" /> + <stop + style="stop-color:#eeeeec;stop-opacity:1;" + offset="1" + id="stop3349" /> + </linearGradient> + <linearGradient + id="linearGradient3223"> + <stop + style="stop-color:#eeeeec;stop-opacity:1;" + offset="0" + id="stop3225" /> + <stop + style="stop-color:#babdb6;stop-opacity:1;" + offset="1" + id="stop3227" /> + </linearGradient> + <linearGradient + id="linearGradient3503"> + <stop + style="stop-color:#babdb6;stop-opacity:1;" + offset="0" + id="stop3239" /> + <stop + id="stop3507" + offset="1" + style="stop-color:#eeeeec;stop-opacity:1;" /> + </linearGradient> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + id="perspective2651" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient3501" + cx="22.276291" + cy="32.248856" + fx="22.276291" + fy="32.248856" + r="20.319138" + gradientTransform="matrix(1,0,0,0.2366258,0,24.617945)" + gradientUnits="userSpaceOnUse" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient3500" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.2366258,0,24.617945)" + cx="22.276291" + cy="32.248856" + fx="22.276291" + fy="32.248856" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient3232" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,47.474934,42.420392)" + cx="22.276291" + cy="21.520338" + fx="22.276291" + fy="21.520338" + r="20.319138" + spreadMethod="reflect" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient5689" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0469084,0,0,0.4796469,270.37856,38.427671)" + cx="22.276291" + cy="32.248856" + fx="22.276291" + fy="32.248856" + r="20.319138" /> + <inkscape:perspective + id="perspective3474" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 526.18109 : 1" + sodipodi:type="inkscape:persp3d" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4325" + id="radialGradient4359" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,-52.447261,-106.14795)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient5015" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,42.720075,-107.89847)" + spreadMethod="pad" + cx="22.276291" + cy="21.520338" + fx="22.276291" + fy="21.520338" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient5062" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,98.720075,-107.89847)" + spreadMethod="pad" + cx="22.276291" + cy="21.520338" + fx="22.276291" + fy="21.520338" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4325" + id="radialGradient5064" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,98.720075,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4389" + id="radialGradient5110" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,142.72007,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4389" + id="radialGradient3863" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,92.720075,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4389" + id="radialGradient3865" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,92.720075,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4389" + id="radialGradient3906" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,92.720075,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3345" + id="radialGradient5554" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,97.725459,40.419065)" + spreadMethod="pad" + cx="22.276291" + cy="21.520338" + fx="22.276291" + fy="21.520338" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient8512" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,97.72545,40.294064)" + spreadMethod="reflect" + cx="22.276291" + cy="21.520338" + fx="22.276291" + fy="21.520338" + r="20.319138" /> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + gridtolerance="10000" + guidetolerance="10" + objecttolerance="10" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="1" + inkscape:cx="126.80533" + inkscape:cy="41.532441" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="false" + inkscape:snap-global="false" + inkscape:window-width="1680" + inkscape:window-height="1028" + inkscape:window-x="-12" + inkscape:window-y="0" + showguides="false" + inkscape:guide-bbox="true"> + <inkscape:grid + type="xygrid" + id="grid2653" + visible="true" + enabled="true" + color="#ff00ff" + opacity="0.1254902" + empcolor="#0000f2" + empopacity="0.25098039" /> + <sodipodi:guide + orientation="1,0" + position="23.969062,28.50558" + id="guide3488" /> + <sodipodi:guide + orientation="0,1" + position="-14.142136,73.185552" + id="guide3490" /> + <sodipodi:guide + orientation="1,0" + position="-21,-23.25" + id="guide5857" /> + <sodipodi:guide + orientation="1,0" + position="-49.5,-22.625" + id="guide5859" /> + </sodipodi:namedview> + <metadata + id="metadata2648"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <cc:license + rdf:resource="" /> + <dc:subject> + <rdf:Bag> + <rdf:li>audio</rdf:li> + <rdf:li>device</rdf:li> + <rdf:li>speaker</rdf:li> + <rdf:li>output</rdf:li> + <rdf:li>center</rdf:li> + <rdf:li>testing</rdf:li> + <rdf:li>highlighted</rdf:li> + </rdf:Bag> + </dc:subject> + <dc:title>audio-speaker-center-testing</dc:title> + <dc:creator> + <cc:Agent> + <dc:title>Evangeline McGlynn</dc:title> + </cc:Agent> + </dc:creator> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <g + id="g8490" + transform="translate(-50.334601,4.1631076e-2)"> + <path + sodipodi:nodetypes="ccccc" + id="path8492" + d="M 64.325669,10.506413 C 70.397099,7.0242733 77.468529,7.1135633 83.718529,10.506413 L 85.718529,14.899273 L 62.325669,14.899273 L 64.325669,10.506413 z" + style="fill:#729fcf;fill-opacity:1;fill-rule:nonzero;stroke:#2e3436;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> + <path + sodipodi:nodetypes="csssccsssc" + d="M 95.897099,27.934983 C 95.897099,27.934983 91.349669,19.248213 86.035799,14.995723 C 85.825169,14.827163 85.613329,14.665563 85.400529,14.511753 C 84.898489,14.148893 84.391069,13.829363 83.881339,13.563883 C 83.312379,13.267543 82.740559,13.038553 82.170169,12.891833 C 78.286959,11.872493 70.453649,11.829343 66.580509,12.845703 C 65.740619,13.064843 64.898909,13.457433 64.068479,13.977613 C 63.443239,14.369273 62.824389,14.833253 62.217529,15.349973 C 60.346409,16.943173 58.58922,19.037813 57.10976,21.059983 C 54.51317,24.609093 52.7721,27.934983 52.7721,27.934983" + style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + id="path8494" /> + <path + style="fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#bfd8f3;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="M 62.827469,15.979023 L 65.014509,11.213023 C 70.275566,8.4697433 76.234822,7.8458533 82.953572,11.207463 L 84.922082,15.410963" + id="path8496" + sodipodi:nodetypes="cccc" /> + <path + sodipodi:nodetypes="cccc" + d="M 95.001579,28.523883 C 95.001579,28.523883 88.693549,15.595313 81.930899,13.855723 C 78.047689,12.836393 70.745629,12.793243 66.872489,13.809593 C 60.028369,15.595313 55.03283,26.273883 55.03283,26.273883" + style="fill:#729fcf;fill-opacity:1;fill-rule:evenodd;stroke:#bfd8f3;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + id="path8498" /> + <path + transform="matrix(1.0469083,0,0,2.027027,51.01285,-35.409607)" + d="M 43.214285,32.24107 A 20.9375,4.9553571 0 1 1 1.3392849,32.24107 A 20.9375,4.9553571 0 1 1 43.214285,32.24107 z" + sodipodi:ry="4.9553571" + sodipodi:rx="20.9375" + sodipodi:cy="32.24107" + sodipodi:cx="22.276785" + id="path8500" + style="fill:#eeeeec;fill-opacity:1;fill-rule:nonzero;stroke:#2e3436;stroke-width:0.68646109;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + sodipodi:type="arc" /> + <path + sodipodi:nodetypes="ccccc" + id="path8502" + d="M 95.16001,29.859216 C 95.34941,34.267437 86.35016,38.925273 74.250517,38.925273 C 62.150874,38.925273 53.120056,34.330572 53.341027,29.859216 C 53.151624,25.29316 62.150874,20.824727 74.250517,20.824727 C 86.35016,20.824727 95.19158,25.198457 95.16001,29.859216 z" + style="fill:url(#radialGradient8512);fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> + <path + style="fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#555753;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="M 82.142459,27.943913 C 81.468389,30.131673 78.852759,31.329293 74.334599,31.329293 C 69.816449,31.329293 66.985899,29.952123 66.526739,27.943913 C 66.456009,26.238893 69.816449,24.570323 74.334599,24.570323 C 78.852759,24.570323 82.154249,26.203533 82.142459,27.943913 z" + id="path8504" + sodipodi:nodetypes="ccccc" /> + <path + style="fill:#729fcf;fill-opacity:1;fill-rule:nonzero;stroke:#204a87;stroke-width:0.96596354;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="M 67.476989,27.764793 C 68.447389,30.844053 71.145969,33.060833 74.320419,33.060843 C 77.514539,33.060843 80.226899,30.816463 81.181699,27.707393 C 80.281059,26.206763 76.900529,25.470543 74.291089,25.513813 C 70.986749,25.428073 68.434609,26.373493 67.476989,27.764793 z" + id="path8506" + sodipodi:nodetypes="csccc" + inkscape:export-filename="/Users/eve/Documents/MATE/SpeakerIcon_Test.png" + inkscape:export-xdpi="67.489998" + inkscape:export-ydpi="67.489998" /> + <path + id="path8508" + style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#2e3436;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="M 62.722179,14.847493 C 62.595139,14.950093 62.343579,15.242643 62.217529,15.349973 C 60.346409,16.943173 58.58922,19.037813 57.10976,21.059983 C 54.51317,24.609093 52.7721,27.934983 52.7721,27.934983 M 95.897099,27.934983 C 95.897099,27.934983 91.349669,19.248213 86.035799,14.995723 C 85.825169,14.827163 85.613329,14.665563 85.400529,14.511753 C 85.300009,14.439103 84.752372,14.219223 84.651452,14.150133" + sodipodi:nodetypes="cssccsss" /> + <path + id="path8510" + style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#bfd8f3;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="M 81.930899,13.855723 C 78.047689,12.836393 70.745629,12.793243 66.872489,13.809593" + sodipodi:nodetypes="cc" /> + </g> + </g> +</svg> diff --git a/mate-volume-control/data/icons/scalable/devices/audio-speaker-center.svg b/mate-volume-control/data/icons/scalable/devices/audio-speaker-center.svg new file mode 100644 index 0000000..886b4b8 --- /dev/null +++ b/mate-volume-control/data/icons/scalable/devices/audio-speaker-center.svg @@ -0,0 +1,504 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="48" + height="48" + id="svg2643" + sodipodi:version="0.32" + inkscape:version="0.46" + version="1.0" + sodipodi:docname="audio-speaker-center.svg" + inkscape:output_extension="org.inkscape.output.svg.inkscape" + inkscape:export-filename="/Users/eve/Documents/MATE/audio-speaker.png" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90"> + <defs + id="defs2645"> + <linearGradient + id="linearGradient4389"> + <stop + style="stop-color:#555753;stop-opacity:1;" + offset="0" + id="stop4391" /> + <stop + id="stop4393" + offset="1" + style="stop-color:#eeeeec;stop-opacity:1;" /> + </linearGradient> + <linearGradient + id="linearGradient4325"> + <stop + id="stop4327" + offset="0" + style="stop-color:#2e3436;stop-opacity:1;" /> + <stop + style="stop-color:#eeeeec;stop-opacity:1;" + offset="1" + id="stop4329" /> + </linearGradient> + <linearGradient + id="linearGradient21608"> + <stop + style="stop-color:#888a85;stop-opacity:1" + offset="0" + id="stop21610" /> + <stop + style="stop-color:#2e3436;stop-opacity:1" + offset="1" + id="stop21612" /> + </linearGradient> + <linearGradient + id="linearGradient15341"> + <stop + style="stop-color:#888a85;stop-opacity:1" + offset="0" + id="stop15343" /> + <stop + style="stop-color:#555753;stop-opacity:1" + offset="1" + id="stop15345" /> + </linearGradient> + <linearGradient + id="linearGradient6371"> + <stop + style="stop-color:#888a85;stop-opacity:1" + offset="0" + id="stop6373" /> + <stop + style="stop-color:#d3d7cf;stop-opacity:1;" + offset="1" + id="stop6375" /> + </linearGradient> + <linearGradient + id="linearGradient10872"> + <stop + id="stop10874" + offset="0" + style="stop-color:#888a85;stop-opacity:1" /> + <stop + style="stop-color:#9e9e92;stop-opacity:1;" + offset="0.25301206" + id="stop10876" /> + <stop + id="stop10878" + offset="1" + style="stop-color:#555753;stop-opacity:1" /> + </linearGradient> + <linearGradient + id="linearGradient5254"> + <stop + id="stop5256" + offset="0" + style="stop-color:#707469;stop-opacity:1;" /> + <stop + id="stop5258" + offset="1" + style="stop-color:#2e3335;stop-opacity:1;" /> + </linearGradient> + <linearGradient + id="linearGradient10055"> + <stop + style="stop-color:#bebebe;stop-opacity:1;" + offset="0" + id="stop10057" /> + <stop + id="stop10061" + offset="0.375" + style="stop-color:#e8e8e8;stop-opacity:1;" /> + <stop + style="stop-color:#5c5c5c;stop-opacity:1;" + offset="1" + id="stop10059" /> + </linearGradient> + <linearGradient + id="linearGradient4841"> + <stop + id="stop4843" + offset="0" + style="stop-color:#babdb6;stop-opacity:1;" /> + <stop + style="stop-color:#fcaf3e;stop-opacity:0.94117647;" + offset="0" + id="stop4845" /> + <stop + id="stop4847" + offset="1" + style="stop-color:#babdb6;stop-opacity:1;" /> + <stop + style="stop-color:#eeeeec;stop-opacity:1;" + offset="1" + id="stop4849" /> + </linearGradient> + <linearGradient + id="linearGradient4809"> + <stop + style="stop-color:#babdb6;stop-opacity:1;" + offset="0" + id="stop4811" /> + <stop + id="stop4813" + offset="0" + style="stop-color:#ad7fa8;stop-opacity:1;" /> + <stop + style="stop-color:#babdb6;stop-opacity:1;" + offset="1" + id="stop4815" /> + <stop + id="stop4817" + offset="1" + style="stop-color:#eeeeec;stop-opacity:1;" /> + </linearGradient> + <linearGradient + id="linearGradient3345"> + <stop + id="stop3347" + offset="0" + style="stop-color:#babdb6;stop-opacity:1;" /> + <stop + style="stop-color:#729fcf;stop-opacity:1;" + offset="0" + id="stop3351" /> + <stop + id="stop3355" + offset="1" + style="stop-color:#babdb6;stop-opacity:1;" /> + <stop + style="stop-color:#eeeeec;stop-opacity:1;" + offset="1" + id="stop3349" /> + </linearGradient> + <linearGradient + id="linearGradient3223"> + <stop + style="stop-color:#eeeeec;stop-opacity:1;" + offset="0" + id="stop3225" /> + <stop + style="stop-color:#babdb6;stop-opacity:1;" + offset="1" + id="stop3227" /> + </linearGradient> + <linearGradient + id="linearGradient3503"> + <stop + style="stop-color:#babdb6;stop-opacity:1;" + offset="0" + id="stop3239" /> + <stop + id="stop3507" + offset="1" + style="stop-color:#eeeeec;stop-opacity:1;" /> + </linearGradient> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + id="perspective2651" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient3501" + cx="22.276291" + cy="32.248856" + fx="22.276291" + fy="32.248856" + r="20.319138" + gradientTransform="matrix(1,0,0,0.2366258,0,24.617945)" + gradientUnits="userSpaceOnUse" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient3500" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.2366258,0,24.617945)" + cx="22.276291" + cy="32.248856" + fx="22.276291" + fy="32.248856" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient3232" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,47.474934,42.420392)" + cx="22.276291" + cy="21.520338" + fx="22.276291" + fy="21.520338" + r="20.319138" + spreadMethod="reflect" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient5689" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0469084,0,0,0.4796469,270.37856,38.427671)" + cx="22.276291" + cy="32.248856" + fx="22.276291" + fy="32.248856" + r="20.319138" /> + <inkscape:perspective + id="perspective3474" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 526.18109 : 1" + sodipodi:type="inkscape:persp3d" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4325" + id="radialGradient4359" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,-52.447261,-106.14795)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient5015" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,42.720075,-107.89847)" + spreadMethod="pad" + cx="22.276291" + cy="21.520338" + fx="22.276291" + fy="21.520338" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient5062" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,98.720075,-107.89847)" + spreadMethod="pad" + cx="22.276291" + cy="21.520338" + fx="22.276291" + fy="21.520338" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4325" + id="radialGradient5064" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,98.720075,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4389" + id="radialGradient5110" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,142.72007,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4389" + id="radialGradient3863" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,92.720075,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4389" + id="radialGradient3865" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,92.720075,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4389" + id="radialGradient3906" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,92.720075,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4389" + id="radialGradient7260" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,47.516569,40.378763)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + gridtolerance="10000" + guidetolerance="10" + objecttolerance="10" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="5.6568542" + inkscape:cx="-53.025818" + inkscape:cy="20.556657" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="false" + inkscape:snap-global="false" + inkscape:window-width="1680" + inkscape:window-height="1028" + inkscape:window-x="25" + inkscape:window-y="21" + showguides="false" + inkscape:guide-bbox="true"> + <inkscape:grid + type="xygrid" + id="grid2653" + visible="true" + enabled="true" + color="#ff00ff" + opacity="0.1254902" + empcolor="#0000f2" + empopacity="0.25098039" /> + <sodipodi:guide + orientation="1,0" + position="23.969062,28.50558" + id="guide3488" /> + <sodipodi:guide + orientation="0,1" + position="17.401268,34.125445" + id="guide3490" /> + </sodipodi:namedview> + <metadata + id="metadata2648"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <cc:license + rdf:resource="" /> + <dc:subject> + <rdf:Bag> + <rdf:li>audio</rdf:li> + <rdf:li>device</rdf:li> + <rdf:li>speaker</rdf:li> + <rdf:li>output</rdf:li> + <rdf:li>center</rdf:li> + </rdf:Bag> + </dc:subject> + <dc:title>audio-speaker-center</dc:title> + <dc:creator> + <cc:Agent> + <dc:title>Evangeline McGlynn</dc:title> + </cc:Agent> + </dc:creator> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <g + id="g7248" + transform="translate(-4.1630606e-2,4.1631076e-2)"> + <path + sodipodi:nodetypes="ccccc" + id="path5365" + d="M 14.032699,10.506413 C 20.104129,7.0242733 27.175559,7.1135633 33.425559,10.506413 L 35.425559,14.899273 L 12.032699,14.899273 L 14.032699,10.506413 z" + style="fill:#babdb6;fill-opacity:1;fill-rule:nonzero;stroke:#2e3436;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> + <path + sodipodi:nodetypes="csssccsssc" + d="M 45.604129,27.934983 C 45.604129,27.934983 41.056699,19.248213 35.742829,14.995723 C 35.532199,14.827163 35.320359,14.665563 35.107559,14.511753 C 34.605519,14.148893 34.098099,13.829363 33.588369,13.563883 C 33.019409,13.267543 32.447589,13.038553 31.877199,12.891833 C 27.993989,11.872493 20.160679,11.829343 16.287539,12.845703 C 15.447649,13.064843 14.605939,13.457433 13.775509,13.977613 C 13.150269,14.369273 12.531419,14.833253 11.924559,15.349973 C 10.053439,16.943173 8.2962496,19.037813 6.8167896,21.059983 C 4.2201996,24.609093 2.4791296,27.934983 2.4791296,27.934983" + style="fill:#babdb6;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + id="path5367" /> + <path + style="fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#888a83;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="M 12.534499,15.979023 L 14.721539,11.213023 C 19.982596,8.4697433 25.941852,7.8458533 32.660602,11.207463 L 34.629112,15.410963" + id="path5369" + sodipodi:nodetypes="cccc" /> + <path + sodipodi:nodetypes="cccc" + d="M 44.708609,28.523883 C 44.708609,28.523883 38.400579,15.595313 31.637929,13.855723 C 27.754719,12.836393 20.452659,12.793243 16.579519,13.809593 C 9.7353992,15.595313 4.7398596,26.273883 4.7398596,26.273883" + style="fill:#555753;fill-opacity:1;fill-rule:evenodd;stroke:#888a85;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + id="path5371" /> + <path + transform="matrix(1.0469083,0,0,2.027027,0.7198796,-35.409607)" + d="M 43.214285,32.24107 A 20.9375,4.9553571 0 1 1 1.3392849,32.24107 A 20.9375,4.9553571 0 1 1 43.214285,32.24107 z" + sodipodi:ry="4.9553571" + sodipodi:rx="20.9375" + sodipodi:cy="32.24107" + sodipodi:cx="22.276785" + id="path5373" + style="fill:#eeeeec;fill-opacity:1;fill-rule:nonzero;stroke:#2e3436;stroke-width:0.68646109;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + sodipodi:type="arc" /> + <path + style="fill:url(#radialGradient7260);fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="M 44.951119,29.943913 C 45.140529,34.352133 36.141269,39.009973 24.041629,39.009973 C 11.941989,39.009973 2.9111696,34.415273 3.1321396,29.943913 C 2.9427396,25.377853 11.941989,20.909423 24.041629,20.909423 C 36.141269,20.909423 44.982689,25.283153 44.951119,29.943913 z" + id="path5375" + sodipodi:nodetypes="ccccc" /> + <path + style="fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#555753;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="M 31.849489,27.943913 C 31.175419,30.131673 28.559789,31.329293 24.041629,31.329293 C 19.523479,31.329293 16.692929,29.952123 16.233769,27.943913 C 16.163039,26.238893 19.523479,24.570323 24.041629,24.570323 C 28.559789,24.570323 31.861279,26.203533 31.849489,27.943913 z" + id="path5377" + sodipodi:nodetypes="ccccc" /> + <path + style="fill:#555753;fill-opacity:1;fill-rule:nonzero;stroke:#2e3436;stroke-width:0.96596354;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="M 17.184019,27.764793 C 18.154419,30.844053 20.852999,33.060833 24.027449,33.060843 C 27.221569,33.060843 29.933929,30.816463 30.888729,27.707393 C 29.988089,26.206763 26.607559,25.470543 23.998119,25.513813 C 20.693779,25.428073 18.141639,26.373493 17.184019,27.764793 z" + id="path5379" + sodipodi:nodetypes="csccc" + inkscape:export-filename="/Users/eve/Documents/MATE/SpeakerIcon_Test.png" + inkscape:export-xdpi="67.489998" + inkscape:export-ydpi="67.489998" /> + <path + id="path5381" + style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#2e3436;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="M 12.429209,14.847493 C 12.302169,14.950093 12.050609,15.242643 11.924559,15.349973 C 10.053439,16.943173 8.2962496,19.037813 6.8167896,21.059983 C 4.2201996,24.609093 2.4791296,27.934983 2.4791296,27.934983 M 45.604129,27.934983 C 45.604129,27.934983 41.056699,19.248213 35.742829,14.995723 C 35.532199,14.827163 35.320359,14.665563 35.107559,14.511753 C 35.007039,14.439103 34.459402,14.219223 34.358482,14.150133" + sodipodi:nodetypes="cssccsss" /> + <path + id="path5383" + style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#888a85;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="M 31.637929,13.855723 C 27.754719,12.836393 20.452659,12.793243 16.579519,13.809593" + sodipodi:nodetypes="cc" /> + </g> + </g> +</svg> diff --git a/mate-volume-control/data/icons/scalable/devices/audio-speaker-left-back-testing.svg b/mate-volume-control/data/icons/scalable/devices/audio-speaker-left-back-testing.svg new file mode 100644 index 0000000..e1618fc --- /dev/null +++ b/mate-volume-control/data/icons/scalable/devices/audio-speaker-left-back-testing.svg @@ -0,0 +1,537 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="48" + height="48" + id="svg2643" + sodipodi:version="0.32" + inkscape:version="0.46" + version="1.0" + sodipodi:docname="audio-speaker-left-back-testing.svg" + inkscape:output_extension="org.inkscape.output.svg.inkscape" + inkscape:export-filename="/Users/eve/Documents/MATE/audio-speaker-left-testing.png" + inkscape:export-xdpi="67.489998" + inkscape:export-ydpi="67.489998"> + <defs + id="defs2645"> + <linearGradient + id="linearGradient3529"> + <stop + id="stop3531" + offset="0" + style="stop-color:#fefefe;stop-opacity:1;" /> + <stop + id="stop3533" + offset="1" + style="stop-color:#e8e7e6;stop-opacity:1;" /> + </linearGradient> + <linearGradient + id="linearGradient4389"> + <stop + style="stop-color:#555753;stop-opacity:1;" + offset="0" + id="stop4391" /> + <stop + id="stop4393" + offset="1" + style="stop-color:#eeeeec;stop-opacity:1;" /> + </linearGradient> + <linearGradient + id="linearGradient4325"> + <stop + id="stop4327" + offset="0" + style="stop-color:#2e3436;stop-opacity:1;" /> + <stop + style="stop-color:#eeeeec;stop-opacity:1;" + offset="1" + id="stop4329" /> + </linearGradient> + <linearGradient + id="linearGradient21608"> + <stop + style="stop-color:#888a85;stop-opacity:1" + offset="0" + id="stop21610" /> + <stop + style="stop-color:#2e3436;stop-opacity:1" + offset="1" + id="stop21612" /> + </linearGradient> + <linearGradient + id="linearGradient15341"> + <stop + style="stop-color:#888a85;stop-opacity:1" + offset="0" + id="stop15343" /> + <stop + style="stop-color:#555753;stop-opacity:1" + offset="1" + id="stop15345" /> + </linearGradient> + <linearGradient + id="linearGradient6371"> + <stop + style="stop-color:#888a85;stop-opacity:1" + offset="0" + id="stop6373" /> + <stop + style="stop-color:#d3d7cf;stop-opacity:1;" + offset="1" + id="stop6375" /> + </linearGradient> + <linearGradient + id="linearGradient10872"> + <stop + id="stop10874" + offset="0" + style="stop-color:#888a85;stop-opacity:1" /> + <stop + style="stop-color:#9e9e92;stop-opacity:1;" + offset="0.25301206" + id="stop10876" /> + <stop + id="stop10878" + offset="1" + style="stop-color:#555753;stop-opacity:1" /> + </linearGradient> + <linearGradient + id="linearGradient5254"> + <stop + id="stop5256" + offset="0" + style="stop-color:#707469;stop-opacity:1;" /> + <stop + id="stop5258" + offset="1" + style="stop-color:#2e3335;stop-opacity:1;" /> + </linearGradient> + <linearGradient + id="linearGradient10055"> + <stop + style="stop-color:#bebebe;stop-opacity:1;" + offset="0" + id="stop10057" /> + <stop + id="stop10061" + offset="0.375" + style="stop-color:#e8e8e8;stop-opacity:1;" /> + <stop + style="stop-color:#5c5c5c;stop-opacity:1;" + offset="1" + id="stop10059" /> + </linearGradient> + <linearGradient + id="linearGradient4841"> + <stop + id="stop4843" + offset="0" + style="stop-color:#babdb6;stop-opacity:1;" /> + <stop + style="stop-color:#fcaf3e;stop-opacity:0.94117647;" + offset="0" + id="stop4845" /> + <stop + id="stop4847" + offset="1" + style="stop-color:#babdb6;stop-opacity:1;" /> + <stop + style="stop-color:#eeeeec;stop-opacity:1;" + offset="1" + id="stop4849" /> + </linearGradient> + <linearGradient + id="linearGradient4809"> + <stop + style="stop-color:#babdb6;stop-opacity:1;" + offset="0" + id="stop4811" /> + <stop + id="stop4813" + offset="0" + style="stop-color:#ad7fa8;stop-opacity:1;" /> + <stop + style="stop-color:#babdb6;stop-opacity:1;" + offset="1" + id="stop4815" /> + <stop + id="stop4817" + offset="1" + style="stop-color:#eeeeec;stop-opacity:1;" /> + </linearGradient> + <linearGradient + id="linearGradient3345"> + <stop + id="stop3347" + offset="0" + style="stop-color:#babdb6;stop-opacity:1;" /> + <stop + style="stop-color:#729fcf;stop-opacity:1;" + offset="0" + id="stop3351" /> + <stop + id="stop3355" + offset="1" + style="stop-color:#babdb6;stop-opacity:1;" /> + <stop + style="stop-color:#eeeeec;stop-opacity:1;" + offset="1" + id="stop3349" /> + </linearGradient> + <linearGradient + id="linearGradient3223"> + <stop + style="stop-color:#eeeeec;stop-opacity:1;" + offset="0" + id="stop3225" /> + <stop + style="stop-color:#babdb6;stop-opacity:1;" + offset="1" + id="stop3227" /> + </linearGradient> + <linearGradient + id="linearGradient3503"> + <stop + style="stop-color:#babdb6;stop-opacity:1;" + offset="0" + id="stop3239" /> + <stop + id="stop3507" + offset="1" + style="stop-color:#eeeeec;stop-opacity:1;" /> + </linearGradient> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + id="perspective2651" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient3501" + cx="22.276291" + cy="32.248856" + fx="22.276291" + fy="32.248856" + r="20.319138" + gradientTransform="matrix(1,0,0,0.2366258,0,24.617945)" + gradientUnits="userSpaceOnUse" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient3500" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.2366258,0,24.617945)" + cx="22.276291" + cy="32.248856" + fx="22.276291" + fy="32.248856" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient3232" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,47.474934,42.420392)" + cx="22.276291" + cy="21.520338" + fx="22.276291" + fy="21.520338" + r="20.319138" + spreadMethod="reflect" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient5689" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0469084,0,0,0.4796469,270.37856,38.427671)" + cx="22.276291" + cy="32.248856" + fx="22.276291" + fy="32.248856" + r="20.319138" /> + <inkscape:perspective + id="perspective3474" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 526.18109 : 1" + sodipodi:type="inkscape:persp3d" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4325" + id="radialGradient4359" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,-52.447261,-106.14795)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient5015" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,42.720075,-107.89847)" + spreadMethod="pad" + cx="22.276291" + cy="21.520338" + fx="22.276291" + fy="21.520338" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient5062" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,98.720075,-107.89847)" + spreadMethod="pad" + cx="22.276291" + cy="21.520338" + fx="22.276291" + fy="21.520338" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4325" + id="radialGradient5064" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,98.720075,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4389" + id="radialGradient5110" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,142.72007,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4389" + id="radialGradient3863" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,92.720075,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4389" + id="radialGradient3865" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,92.720075,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4389" + id="radialGradient3906" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,92.720075,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3345" + id="radialGradient5554" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,97.725459,40.419065)" + spreadMethod="pad" + cx="22.276291" + cy="21.520338" + fx="22.276291" + fy="21.520338" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient8512" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,97.72545,40.294064)" + spreadMethod="reflect" + cx="22.276291" + cy="21.520338" + fx="22.276291" + fy="21.520338" + r="20.319138" /> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + gridtolerance="10000" + guidetolerance="10" + objecttolerance="10" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="1" + inkscape:cx="126.80533" + inkscape:cy="41.532441" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="false" + inkscape:snap-global="false" + inkscape:window-width="1680" + inkscape:window-height="1028" + inkscape:window-x="-12" + inkscape:window-y="0" + showguides="false" + inkscape:guide-bbox="true"> + <inkscape:grid + type="xygrid" + id="grid2653" + visible="true" + enabled="true" + color="#ff00ff" + opacity="0.1254902" + empcolor="#0000f2" + empopacity="0.25098039" /> + <sodipodi:guide + orientation="1,0" + position="23.969062,28.50558" + id="guide3488" /> + <sodipodi:guide + orientation="0,1" + position="-14.142136,73.185552" + id="guide3490" /> + <sodipodi:guide + orientation="1,0" + position="-21,-23.25" + id="guide5857" /> + <sodipodi:guide + orientation="1,0" + position="-49.5,-22.625" + id="guide5859" /> + </sodipodi:namedview> + <metadata + id="metadata2648"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <cc:license + rdf:resource="" /> + <dc:subject> + <rdf:Bag> + <rdf:li>audio</rdf:li> + <rdf:li>device</rdf:li> + <rdf:li>speaker</rdf:li> + <rdf:li>output</rdf:li> + <rdf:li>left-back</rdf:li> + <rdf:li>testing</rdf:li> + <rdf:li>highlighted</rdf:li> + </rdf:Bag> + </dc:subject> + <dc:title>audio-speaker-left-b-testing</dc:title> + <dc:creator> + <cc:Agent> + <dc:title>Evangeline McGlynn</dc:title> + </cc:Agent> + </dc:creator> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <g + id="g8490" + transform="matrix(-0.7071068,-0.7071068,0.7071068,-0.7071068,57.052876,95.851156)"> + <path + sodipodi:nodetypes="ccccc" + id="path8492" + d="M 64.325669,10.506413 C 70.397099,7.0242733 77.468529,7.1135633 83.718529,10.506413 L 85.718529,14.899273 L 62.325669,14.899273 L 64.325669,10.506413 z" + style="fill:#729fcf;fill-opacity:1;fill-rule:nonzero;stroke:#2e3436;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> + <path + sodipodi:nodetypes="csssccsssc" + d="M 95.897099,27.934983 C 95.897099,27.934983 91.349669,19.248213 86.035799,14.995723 C 85.825169,14.827163 85.613329,14.665563 85.400529,14.511753 C 84.898489,14.148893 84.391069,13.829363 83.881339,13.563883 C 83.312379,13.267543 82.740559,13.038553 82.170169,12.891833 C 78.286959,11.872493 70.453649,11.829343 66.580509,12.845703 C 65.740619,13.064843 64.898909,13.457433 64.068479,13.977613 C 63.443239,14.369273 62.824389,14.833253 62.217529,15.349973 C 60.346409,16.943173 58.58922,19.037813 57.10976,21.059983 C 54.51317,24.609093 52.7721,27.934983 52.7721,27.934983" + style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + id="path8494" /> + <path + style="fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#bfd8f3;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="M 62.827469,15.979023 L 65.014509,11.213023 C 70.275566,8.4697433 76.234822,7.8458533 82.953572,11.207463 L 84.922082,15.410963" + id="path8496" + sodipodi:nodetypes="cccc" /> + <path + sodipodi:nodetypes="cccc" + d="M 95.001579,28.523883 C 95.001579,28.523883 88.693549,15.595313 81.930899,13.855723 C 78.047689,12.836393 70.745629,12.793243 66.872489,13.809593 C 60.028369,15.595313 55.03283,26.273883 55.03283,26.273883" + style="fill:#729fcf;fill-opacity:1;fill-rule:evenodd;stroke:#bfd8f3;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + id="path8498" /> + <path + transform="matrix(1.0469083,0,0,2.027027,51.01285,-35.409607)" + d="M 43.214285,32.24107 A 20.9375,4.9553571 0 1 1 1.3392849,32.24107 A 20.9375,4.9553571 0 1 1 43.214285,32.24107 z" + sodipodi:ry="4.9553571" + sodipodi:rx="20.9375" + sodipodi:cy="32.24107" + sodipodi:cx="22.276785" + id="path8500" + style="fill:#eeeeec;fill-opacity:1;fill-rule:nonzero;stroke:#2e3436;stroke-width:0.68646109;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + sodipodi:type="arc" /> + <path + sodipodi:nodetypes="ccccc" + id="path8502" + d="M 95.16001,29.859216 C 95.34941,34.267437 86.35016,38.925273 74.250517,38.925273 C 62.150874,38.925273 53.120056,34.330572 53.341027,29.859216 C 53.151624,25.29316 62.150874,20.824727 74.250517,20.824727 C 86.35016,20.824727 95.19158,25.198457 95.16001,29.859216 z" + style="fill:url(#radialGradient8512);fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> + <path + style="fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#555753;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="M 82.142459,27.943913 C 81.468389,30.131673 78.852759,31.329293 74.334599,31.329293 C 69.816449,31.329293 66.985899,29.952123 66.526739,27.943913 C 66.456009,26.238893 69.816449,24.570323 74.334599,24.570323 C 78.852759,24.570323 82.154249,26.203533 82.142459,27.943913 z" + id="path8504" + sodipodi:nodetypes="ccccc" /> + <path + style="fill:#729fcf;fill-opacity:1;fill-rule:nonzero;stroke:#204a87;stroke-width:0.96596354;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="M 67.476989,27.764793 C 68.447389,30.844053 71.145969,33.060833 74.320419,33.060843 C 77.514539,33.060843 80.226899,30.816463 81.181699,27.707393 C 80.281059,26.206763 76.900529,25.470543 74.291089,25.513813 C 70.986749,25.428073 68.434609,26.373493 67.476989,27.764793 z" + id="path8506" + sodipodi:nodetypes="csccc" + inkscape:export-filename="/Users/eve/Documents/MATE/SpeakerIcon_Test.png" + inkscape:export-xdpi="67.489998" + inkscape:export-ydpi="67.489998" /> + <path + id="path8508" + style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#2e3436;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="M 62.722179,14.847493 C 62.595139,14.950093 62.343579,15.242643 62.217529,15.349973 C 60.346409,16.943173 58.58922,19.037813 57.10976,21.059983 C 54.51317,24.609093 52.7721,27.934983 52.7721,27.934983 M 95.897099,27.934983 C 95.897099,27.934983 91.349669,19.248213 86.035799,14.995723 C 85.825169,14.827163 85.613329,14.665563 85.400529,14.511753 C 85.300009,14.439103 84.752372,14.219223 84.651452,14.150133" + sodipodi:nodetypes="cssccsss" /> + <path + id="path8510" + style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#bfd8f3;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="M 81.930899,13.855723 C 78.047689,12.836393 70.745629,12.793243 66.872489,13.809593" + sodipodi:nodetypes="cc" /> + </g> + </g> +</svg> diff --git a/mate-volume-control/data/icons/scalable/devices/audio-speaker-left-back.svg b/mate-volume-control/data/icons/scalable/devices/audio-speaker-left-back.svg new file mode 100644 index 0000000..d7a6f43 --- /dev/null +++ b/mate-volume-control/data/icons/scalable/devices/audio-speaker-left-back.svg @@ -0,0 +1,504 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="48" + height="48" + id="svg2643" + sodipodi:version="0.32" + inkscape:version="0.46" + version="1.0" + sodipodi:docname="audio-speaker-left-back.svg" + inkscape:output_extension="org.inkscape.output.svg.inkscape" + inkscape:export-filename="/Users/eve/Documents/MATE/audio-speaker-left.png" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90"> + <defs + id="defs2645"> + <linearGradient + id="linearGradient4389"> + <stop + style="stop-color:#555753;stop-opacity:1;" + offset="0" + id="stop4391" /> + <stop + id="stop4393" + offset="1" + style="stop-color:#eeeeec;stop-opacity:1;" /> + </linearGradient> + <linearGradient + id="linearGradient4325"> + <stop + id="stop4327" + offset="0" + style="stop-color:#2e3436;stop-opacity:1;" /> + <stop + style="stop-color:#eeeeec;stop-opacity:1;" + offset="1" + id="stop4329" /> + </linearGradient> + <linearGradient + id="linearGradient21608"> + <stop + style="stop-color:#888a85;stop-opacity:1" + offset="0" + id="stop21610" /> + <stop + style="stop-color:#2e3436;stop-opacity:1" + offset="1" + id="stop21612" /> + </linearGradient> + <linearGradient + id="linearGradient15341"> + <stop + style="stop-color:#888a85;stop-opacity:1" + offset="0" + id="stop15343" /> + <stop + style="stop-color:#555753;stop-opacity:1" + offset="1" + id="stop15345" /> + </linearGradient> + <linearGradient + id="linearGradient6371"> + <stop + style="stop-color:#888a85;stop-opacity:1" + offset="0" + id="stop6373" /> + <stop + style="stop-color:#d3d7cf;stop-opacity:1;" + offset="1" + id="stop6375" /> + </linearGradient> + <linearGradient + id="linearGradient10872"> + <stop + id="stop10874" + offset="0" + style="stop-color:#888a85;stop-opacity:1" /> + <stop + style="stop-color:#9e9e92;stop-opacity:1;" + offset="0.25301206" + id="stop10876" /> + <stop + id="stop10878" + offset="1" + style="stop-color:#555753;stop-opacity:1" /> + </linearGradient> + <linearGradient + id="linearGradient5254"> + <stop + id="stop5256" + offset="0" + style="stop-color:#707469;stop-opacity:1;" /> + <stop + id="stop5258" + offset="1" + style="stop-color:#2e3335;stop-opacity:1;" /> + </linearGradient> + <linearGradient + id="linearGradient10055"> + <stop + style="stop-color:#bebebe;stop-opacity:1;" + offset="0" + id="stop10057" /> + <stop + id="stop10061" + offset="0.375" + style="stop-color:#e8e8e8;stop-opacity:1;" /> + <stop + style="stop-color:#5c5c5c;stop-opacity:1;" + offset="1" + id="stop10059" /> + </linearGradient> + <linearGradient + id="linearGradient4841"> + <stop + id="stop4843" + offset="0" + style="stop-color:#babdb6;stop-opacity:1;" /> + <stop + style="stop-color:#fcaf3e;stop-opacity:0.94117647;" + offset="0" + id="stop4845" /> + <stop + id="stop4847" + offset="1" + style="stop-color:#babdb6;stop-opacity:1;" /> + <stop + style="stop-color:#eeeeec;stop-opacity:1;" + offset="1" + id="stop4849" /> + </linearGradient> + <linearGradient + id="linearGradient4809"> + <stop + style="stop-color:#babdb6;stop-opacity:1;" + offset="0" + id="stop4811" /> + <stop + id="stop4813" + offset="0" + style="stop-color:#ad7fa8;stop-opacity:1;" /> + <stop + style="stop-color:#babdb6;stop-opacity:1;" + offset="1" + id="stop4815" /> + <stop + id="stop4817" + offset="1" + style="stop-color:#eeeeec;stop-opacity:1;" /> + </linearGradient> + <linearGradient + id="linearGradient3345"> + <stop + id="stop3347" + offset="0" + style="stop-color:#babdb6;stop-opacity:1;" /> + <stop + style="stop-color:#729fcf;stop-opacity:1;" + offset="0" + id="stop3351" /> + <stop + id="stop3355" + offset="1" + style="stop-color:#babdb6;stop-opacity:1;" /> + <stop + style="stop-color:#eeeeec;stop-opacity:1;" + offset="1" + id="stop3349" /> + </linearGradient> + <linearGradient + id="linearGradient3223"> + <stop + style="stop-color:#eeeeec;stop-opacity:1;" + offset="0" + id="stop3225" /> + <stop + style="stop-color:#babdb6;stop-opacity:1;" + offset="1" + id="stop3227" /> + </linearGradient> + <linearGradient + id="linearGradient3503"> + <stop + style="stop-color:#babdb6;stop-opacity:1;" + offset="0" + id="stop3239" /> + <stop + id="stop3507" + offset="1" + style="stop-color:#eeeeec;stop-opacity:1;" /> + </linearGradient> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + id="perspective2651" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient3501" + cx="22.276291" + cy="32.248856" + fx="22.276291" + fy="32.248856" + r="20.319138" + gradientTransform="matrix(1,0,0,0.2366258,0,24.617945)" + gradientUnits="userSpaceOnUse" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient3500" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.2366258,0,24.617945)" + cx="22.276291" + cy="32.248856" + fx="22.276291" + fy="32.248856" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient3232" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,47.474934,42.420392)" + cx="22.276291" + cy="21.520338" + fx="22.276291" + fy="21.520338" + r="20.319138" + spreadMethod="reflect" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient5689" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0469084,0,0,0.4796469,270.37856,38.427671)" + cx="22.276291" + cy="32.248856" + fx="22.276291" + fy="32.248856" + r="20.319138" /> + <inkscape:perspective + id="perspective3474" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 526.18109 : 1" + sodipodi:type="inkscape:persp3d" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4325" + id="radialGradient4359" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,-52.447261,-106.14795)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient5015" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,42.720075,-107.89847)" + spreadMethod="pad" + cx="22.276291" + cy="21.520338" + fx="22.276291" + fy="21.520338" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient5062" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,98.720075,-107.89847)" + spreadMethod="pad" + cx="22.276291" + cy="21.520338" + fx="22.276291" + fy="21.520338" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4325" + id="radialGradient5064" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,98.720075,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4389" + id="radialGradient5110" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,142.72007,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4389" + id="radialGradient3863" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,92.720075,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4389" + id="radialGradient3865" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,92.720075,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4389" + id="radialGradient3906" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,92.720075,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4389" + id="radialGradient7260" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,47.516569,40.378763)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + gridtolerance="10000" + guidetolerance="10" + objecttolerance="10" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="5.6568542" + inkscape:cx="-53.376308" + inkscape:cy="20.556657" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="false" + inkscape:snap-global="false" + inkscape:window-width="1601" + inkscape:window-height="942" + inkscape:window-x="5" + inkscape:window-y="1" + showguides="false" + inkscape:guide-bbox="true"> + <inkscape:grid + type="xygrid" + id="grid2653" + visible="true" + enabled="true" + color="#ff00ff" + opacity="0.1254902" + empcolor="#0000f2" + empopacity="0.25098039" /> + <sodipodi:guide + orientation="1,0" + position="23.969062,28.50558" + id="guide3488" /> + <sodipodi:guide + orientation="0,1" + position="17.401268,34.125445" + id="guide3490" /> + </sodipodi:namedview> + <metadata + id="metadata2648"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <cc:license + rdf:resource="" /> + <dc:subject> + <rdf:Bag> + <rdf:li>audio</rdf:li> + <rdf:li>device</rdf:li> + <rdf:li>speaker</rdf:li> + <rdf:li>output</rdf:li> + <rdf:li>left-back</rdf:li> + </rdf:Bag> + </dc:subject> + <dc:title>audio-speaker-left-back</dc:title> + <dc:creator> + <cc:Agent> + <dc:title>Evangeline McGlynn</dc:title> + </cc:Agent> + </dc:creator> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <g + id="g7248" + transform="matrix(-0.7071068,-0.7071068,0.7071068,-0.7071068,21.490375,60.288654)"> + <path + sodipodi:nodetypes="ccccc" + id="path5365" + d="M 14.032699,10.506413 C 20.104129,7.0242733 27.175559,7.1135633 33.425559,10.506413 L 35.425559,14.899273 L 12.032699,14.899273 L 14.032699,10.506413 z" + style="fill:#babdb6;fill-opacity:1;fill-rule:nonzero;stroke:#2e3436;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> + <path + sodipodi:nodetypes="csssccsssc" + d="M 45.604129,27.934983 C 45.604129,27.934983 41.056699,19.248213 35.742829,14.995723 C 35.532199,14.827163 35.320359,14.665563 35.107559,14.511753 C 34.605519,14.148893 34.098099,13.829363 33.588369,13.563883 C 33.019409,13.267543 32.447589,13.038553 31.877199,12.891833 C 27.993989,11.872493 20.160679,11.829343 16.287539,12.845703 C 15.447649,13.064843 14.605939,13.457433 13.775509,13.977613 C 13.150269,14.369273 12.531419,14.833253 11.924559,15.349973 C 10.053439,16.943173 8.2962496,19.037813 6.8167896,21.059983 C 4.2201996,24.609093 2.4791296,27.934983 2.4791296,27.934983" + style="fill:#babdb6;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + id="path5367" /> + <path + style="fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#888a83;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="M 12.534499,15.979023 L 14.721539,11.213023 C 19.982596,8.4697433 25.941852,7.8458533 32.660602,11.207463 L 34.629112,15.410963" + id="path5369" + sodipodi:nodetypes="cccc" /> + <path + sodipodi:nodetypes="cccc" + d="M 44.708609,28.523883 C 44.708609,28.523883 38.400579,15.595313 31.637929,13.855723 C 27.754719,12.836393 20.452659,12.793243 16.579519,13.809593 C 9.7353992,15.595313 4.7398596,26.273883 4.7398596,26.273883" + style="fill:#555753;fill-opacity:1;fill-rule:evenodd;stroke:#888a85;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + id="path5371" /> + <path + transform="matrix(1.0469083,0,0,2.027027,0.7198796,-35.409607)" + d="M 43.214285,32.24107 A 20.9375,4.9553571 0 1 1 1.3392849,32.24107 A 20.9375,4.9553571 0 1 1 43.214285,32.24107 z" + sodipodi:ry="4.9553571" + sodipodi:rx="20.9375" + sodipodi:cy="32.24107" + sodipodi:cx="22.276785" + id="path5373" + style="fill:#eeeeec;fill-opacity:1;fill-rule:nonzero;stroke:#2e3436;stroke-width:0.68646109;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + sodipodi:type="arc" /> + <path + style="fill:url(#radialGradient7260);fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="M 44.951119,29.943913 C 45.140529,34.352133 36.141269,39.009973 24.041629,39.009973 C 11.941989,39.009973 2.9111696,34.415273 3.1321396,29.943913 C 2.9427396,25.377853 11.941989,20.909423 24.041629,20.909423 C 36.141269,20.909423 44.982689,25.283153 44.951119,29.943913 z" + id="path5375" + sodipodi:nodetypes="ccccc" /> + <path + style="fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#555753;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="M 31.849489,27.943913 C 31.175419,30.131673 28.559789,31.329293 24.041629,31.329293 C 19.523479,31.329293 16.692929,29.952123 16.233769,27.943913 C 16.163039,26.238893 19.523479,24.570323 24.041629,24.570323 C 28.559789,24.570323 31.861279,26.203533 31.849489,27.943913 z" + id="path5377" + sodipodi:nodetypes="ccccc" /> + <path + style="fill:#555753;fill-opacity:1;fill-rule:nonzero;stroke:#2e3436;stroke-width:0.96596354;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="M 17.184019,27.764793 C 18.154419,30.844053 20.852999,33.060833 24.027449,33.060843 C 27.221569,33.060843 29.933929,30.816463 30.888729,27.707393 C 29.988089,26.206763 26.607559,25.470543 23.998119,25.513813 C 20.693779,25.428073 18.141639,26.373493 17.184019,27.764793 z" + id="path5379" + sodipodi:nodetypes="csccc" + inkscape:export-filename="/Users/eve/Documents/MATE/SpeakerIcon_Test.png" + inkscape:export-xdpi="67.489998" + inkscape:export-ydpi="67.489998" /> + <path + id="path5381" + style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#2e3436;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="M 12.429209,14.847493 C 12.302169,14.950093 12.050609,15.242643 11.924559,15.349973 C 10.053439,16.943173 8.2962496,19.037813 6.8167896,21.059983 C 4.2201996,24.609093 2.4791296,27.934983 2.4791296,27.934983 M 45.604129,27.934983 C 45.604129,27.934983 41.056699,19.248213 35.742829,14.995723 C 35.532199,14.827163 35.320359,14.665563 35.107559,14.511753 C 35.007039,14.439103 34.459402,14.219223 34.358482,14.150133" + sodipodi:nodetypes="cssccsss" /> + <path + id="path5383" + style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#888a85;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="M 31.637929,13.855723 C 27.754719,12.836393 20.452659,12.793243 16.579519,13.809593" + sodipodi:nodetypes="cc" /> + </g> + </g> +</svg> diff --git a/mate-volume-control/data/icons/scalable/devices/audio-speaker-left-side-testing.svg b/mate-volume-control/data/icons/scalable/devices/audio-speaker-left-side-testing.svg new file mode 100644 index 0000000..ad0f430 --- /dev/null +++ b/mate-volume-control/data/icons/scalable/devices/audio-speaker-left-side-testing.svg @@ -0,0 +1,537 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="48" + height="48" + id="svg2643" + sodipodi:version="0.32" + inkscape:version="0.46" + version="1.0" + sodipodi:docname="audio-speaker-left-side-testing.svg" + inkscape:output_extension="org.inkscape.output.svg.inkscape" + inkscape:export-filename="/Users/eve/Documents/MATE/audio-speaker-right-side-testing.png" + inkscape:export-xdpi="67.489998" + inkscape:export-ydpi="67.489998"> + <defs + id="defs2645"> + <linearGradient + id="linearGradient3529"> + <stop + id="stop3531" + offset="0" + style="stop-color:#fefefe;stop-opacity:1;" /> + <stop + id="stop3533" + offset="1" + style="stop-color:#e8e7e6;stop-opacity:1;" /> + </linearGradient> + <linearGradient + id="linearGradient4389"> + <stop + style="stop-color:#555753;stop-opacity:1;" + offset="0" + id="stop4391" /> + <stop + id="stop4393" + offset="1" + style="stop-color:#eeeeec;stop-opacity:1;" /> + </linearGradient> + <linearGradient + id="linearGradient4325"> + <stop + id="stop4327" + offset="0" + style="stop-color:#2e3436;stop-opacity:1;" /> + <stop + style="stop-color:#eeeeec;stop-opacity:1;" + offset="1" + id="stop4329" /> + </linearGradient> + <linearGradient + id="linearGradient21608"> + <stop + style="stop-color:#888a85;stop-opacity:1" + offset="0" + id="stop21610" /> + <stop + style="stop-color:#2e3436;stop-opacity:1" + offset="1" + id="stop21612" /> + </linearGradient> + <linearGradient + id="linearGradient15341"> + <stop + style="stop-color:#888a85;stop-opacity:1" + offset="0" + id="stop15343" /> + <stop + style="stop-color:#555753;stop-opacity:1" + offset="1" + id="stop15345" /> + </linearGradient> + <linearGradient + id="linearGradient6371"> + <stop + style="stop-color:#888a85;stop-opacity:1" + offset="0" + id="stop6373" /> + <stop + style="stop-color:#d3d7cf;stop-opacity:1;" + offset="1" + id="stop6375" /> + </linearGradient> + <linearGradient + id="linearGradient10872"> + <stop + id="stop10874" + offset="0" + style="stop-color:#888a85;stop-opacity:1" /> + <stop + style="stop-color:#9e9e92;stop-opacity:1;" + offset="0.25301206" + id="stop10876" /> + <stop + id="stop10878" + offset="1" + style="stop-color:#555753;stop-opacity:1" /> + </linearGradient> + <linearGradient + id="linearGradient5254"> + <stop + id="stop5256" + offset="0" + style="stop-color:#707469;stop-opacity:1;" /> + <stop + id="stop5258" + offset="1" + style="stop-color:#2e3335;stop-opacity:1;" /> + </linearGradient> + <linearGradient + id="linearGradient10055"> + <stop + style="stop-color:#bebebe;stop-opacity:1;" + offset="0" + id="stop10057" /> + <stop + id="stop10061" + offset="0.375" + style="stop-color:#e8e8e8;stop-opacity:1;" /> + <stop + style="stop-color:#5c5c5c;stop-opacity:1;" + offset="1" + id="stop10059" /> + </linearGradient> + <linearGradient + id="linearGradient4841"> + <stop + id="stop4843" + offset="0" + style="stop-color:#babdb6;stop-opacity:1;" /> + <stop + style="stop-color:#fcaf3e;stop-opacity:0.94117647;" + offset="0" + id="stop4845" /> + <stop + id="stop4847" + offset="1" + style="stop-color:#babdb6;stop-opacity:1;" /> + <stop + style="stop-color:#eeeeec;stop-opacity:1;" + offset="1" + id="stop4849" /> + </linearGradient> + <linearGradient + id="linearGradient4809"> + <stop + style="stop-color:#babdb6;stop-opacity:1;" + offset="0" + id="stop4811" /> + <stop + id="stop4813" + offset="0" + style="stop-color:#ad7fa8;stop-opacity:1;" /> + <stop + style="stop-color:#babdb6;stop-opacity:1;" + offset="1" + id="stop4815" /> + <stop + id="stop4817" + offset="1" + style="stop-color:#eeeeec;stop-opacity:1;" /> + </linearGradient> + <linearGradient + id="linearGradient3345"> + <stop + id="stop3347" + offset="0" + style="stop-color:#babdb6;stop-opacity:1;" /> + <stop + style="stop-color:#729fcf;stop-opacity:1;" + offset="0" + id="stop3351" /> + <stop + id="stop3355" + offset="1" + style="stop-color:#babdb6;stop-opacity:1;" /> + <stop + style="stop-color:#eeeeec;stop-opacity:1;" + offset="1" + id="stop3349" /> + </linearGradient> + <linearGradient + id="linearGradient3223"> + <stop + style="stop-color:#eeeeec;stop-opacity:1;" + offset="0" + id="stop3225" /> + <stop + style="stop-color:#babdb6;stop-opacity:1;" + offset="1" + id="stop3227" /> + </linearGradient> + <linearGradient + id="linearGradient3503"> + <stop + style="stop-color:#babdb6;stop-opacity:1;" + offset="0" + id="stop3239" /> + <stop + id="stop3507" + offset="1" + style="stop-color:#eeeeec;stop-opacity:1;" /> + </linearGradient> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + id="perspective2651" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient3501" + cx="22.276291" + cy="32.248856" + fx="22.276291" + fy="32.248856" + r="20.319138" + gradientTransform="matrix(1,0,0,0.2366258,0,24.617945)" + gradientUnits="userSpaceOnUse" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient3500" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.2366258,0,24.617945)" + cx="22.276291" + cy="32.248856" + fx="22.276291" + fy="32.248856" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient3232" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,47.474934,42.420392)" + cx="22.276291" + cy="21.520338" + fx="22.276291" + fy="21.520338" + r="20.319138" + spreadMethod="reflect" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient5689" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0469084,0,0,0.4796469,270.37856,38.427671)" + cx="22.276291" + cy="32.248856" + fx="22.276291" + fy="32.248856" + r="20.319138" /> + <inkscape:perspective + id="perspective3474" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 526.18109 : 1" + sodipodi:type="inkscape:persp3d" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4325" + id="radialGradient4359" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,-52.447261,-106.14795)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient5015" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,42.720075,-107.89847)" + spreadMethod="pad" + cx="22.276291" + cy="21.520338" + fx="22.276291" + fy="21.520338" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient5062" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,98.720075,-107.89847)" + spreadMethod="pad" + cx="22.276291" + cy="21.520338" + fx="22.276291" + fy="21.520338" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4325" + id="radialGradient5064" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,98.720075,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4389" + id="radialGradient5110" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,142.72007,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4389" + id="radialGradient3863" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,92.720075,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4389" + id="radialGradient3865" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,92.720075,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4389" + id="radialGradient3906" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,92.720075,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3345" + id="radialGradient5554" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,97.725459,40.419065)" + spreadMethod="pad" + cx="22.276291" + cy="21.520338" + fx="22.276291" + fy="21.520338" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient8512" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,97.72545,40.294064)" + spreadMethod="reflect" + cx="22.276291" + cy="21.520338" + fx="22.276291" + fy="21.520338" + r="20.319138" /> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + gridtolerance="10000" + guidetolerance="10" + objecttolerance="10" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="1" + inkscape:cx="126.80533" + inkscape:cy="41.532441" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="false" + inkscape:snap-global="false" + inkscape:window-width="1680" + inkscape:window-height="1028" + inkscape:window-x="-12" + inkscape:window-y="0" + showguides="false" + inkscape:guide-bbox="true"> + <inkscape:grid + type="xygrid" + id="grid2653" + visible="true" + enabled="true" + color="#ff00ff" + opacity="0.1254902" + empcolor="#0000f2" + empopacity="0.25098039" /> + <sodipodi:guide + orientation="1,0" + position="23.969062,28.50558" + id="guide3488" /> + <sodipodi:guide + orientation="0,1" + position="-14.142136,73.185552" + id="guide3490" /> + <sodipodi:guide + orientation="1,0" + position="-21,-23.25" + id="guide5857" /> + <sodipodi:guide + orientation="1,0" + position="-49.5,-22.625" + id="guide5859" /> + </sodipodi:namedview> + <metadata + id="metadata2648"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <cc:license + rdf:resource="" /> + <dc:subject> + <rdf:Bag> + <rdf:li>audio</rdf:li> + <rdf:li>device</rdf:li> + <rdf:li>speaker</rdf:li> + <rdf:li>output</rdf:li> + <rdf:li>left-side</rdf:li> + <rdf:li>testing</rdf:li> + <rdf:li>highlighted</rdf:li> + </rdf:Bag> + </dc:subject> + <dc:title>audio-speaker-left-side-testing</dc:title> + <dc:creator> + <cc:Agent> + <dc:title>Evangeline McGlynn</dc:title> + </cc:Agent> + </dc:creator> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <g + id="g8490" + transform="matrix(0,-1,1,0,4.1631076e-2,98.334601)"> + <path + sodipodi:nodetypes="ccccc" + id="path8492" + d="M 64.325669,10.506413 C 70.397099,7.0242733 77.468529,7.1135633 83.718529,10.506413 L 85.718529,14.899273 L 62.325669,14.899273 L 64.325669,10.506413 z" + style="fill:#729fcf;fill-opacity:1;fill-rule:nonzero;stroke:#2e3436;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> + <path + sodipodi:nodetypes="csssccsssc" + d="M 95.897099,27.934983 C 95.897099,27.934983 91.349669,19.248213 86.035799,14.995723 C 85.825169,14.827163 85.613329,14.665563 85.400529,14.511753 C 84.898489,14.148893 84.391069,13.829363 83.881339,13.563883 C 83.312379,13.267543 82.740559,13.038553 82.170169,12.891833 C 78.286959,11.872493 70.453649,11.829343 66.580509,12.845703 C 65.740619,13.064843 64.898909,13.457433 64.068479,13.977613 C 63.443239,14.369273 62.824389,14.833253 62.217529,15.349973 C 60.346409,16.943173 58.58922,19.037813 57.10976,21.059983 C 54.51317,24.609093 52.7721,27.934983 52.7721,27.934983" + style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + id="path8494" /> + <path + style="fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#bfd8f3;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="M 62.827469,15.979023 L 65.014509,11.213023 C 70.275566,8.4697433 76.234822,7.8458533 82.953572,11.207463 L 84.922082,15.410963" + id="path8496" + sodipodi:nodetypes="cccc" /> + <path + sodipodi:nodetypes="cccc" + d="M 95.001579,28.523883 C 95.001579,28.523883 88.693549,15.595313 81.930899,13.855723 C 78.047689,12.836393 70.745629,12.793243 66.872489,13.809593 C 60.028369,15.595313 55.03283,26.273883 55.03283,26.273883" + style="fill:#729fcf;fill-opacity:1;fill-rule:evenodd;stroke:#bfd8f3;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + id="path8498" /> + <path + transform="matrix(1.0469083,0,0,2.027027,51.01285,-35.409607)" + d="M 43.214285,32.24107 A 20.9375,4.9553571 0 1 1 1.3392849,32.24107 A 20.9375,4.9553571 0 1 1 43.214285,32.24107 z" + sodipodi:ry="4.9553571" + sodipodi:rx="20.9375" + sodipodi:cy="32.24107" + sodipodi:cx="22.276785" + id="path8500" + style="fill:#eeeeec;fill-opacity:1;fill-rule:nonzero;stroke:#2e3436;stroke-width:0.68646109;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + sodipodi:type="arc" /> + <path + sodipodi:nodetypes="ccccc" + id="path8502" + d="M 95.16001,29.859216 C 95.34941,34.267437 86.35016,38.925273 74.250517,38.925273 C 62.150874,38.925273 53.120056,34.330572 53.341027,29.859216 C 53.151624,25.29316 62.150874,20.824727 74.250517,20.824727 C 86.35016,20.824727 95.19158,25.198457 95.16001,29.859216 z" + style="fill:url(#radialGradient8512);fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> + <path + style="fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#555753;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="M 82.142459,27.943913 C 81.468389,30.131673 78.852759,31.329293 74.334599,31.329293 C 69.816449,31.329293 66.985899,29.952123 66.526739,27.943913 C 66.456009,26.238893 69.816449,24.570323 74.334599,24.570323 C 78.852759,24.570323 82.154249,26.203533 82.142459,27.943913 z" + id="path8504" + sodipodi:nodetypes="ccccc" /> + <path + style="fill:#729fcf;fill-opacity:1;fill-rule:nonzero;stroke:#204a87;stroke-width:0.96596354;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="M 67.476989,27.764793 C 68.447389,30.844053 71.145969,33.060833 74.320419,33.060843 C 77.514539,33.060843 80.226899,30.816463 81.181699,27.707393 C 80.281059,26.206763 76.900529,25.470543 74.291089,25.513813 C 70.986749,25.428073 68.434609,26.373493 67.476989,27.764793 z" + id="path8506" + sodipodi:nodetypes="csccc" + inkscape:export-filename="/Users/eve/Documents/MATE/SpeakerIcon_Test.png" + inkscape:export-xdpi="67.489998" + inkscape:export-ydpi="67.489998" /> + <path + id="path8508" + style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#2e3436;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="M 62.722179,14.847493 C 62.595139,14.950093 62.343579,15.242643 62.217529,15.349973 C 60.346409,16.943173 58.58922,19.037813 57.10976,21.059983 C 54.51317,24.609093 52.7721,27.934983 52.7721,27.934983 M 95.897099,27.934983 C 95.897099,27.934983 91.349669,19.248213 86.035799,14.995723 C 85.825169,14.827163 85.613329,14.665563 85.400529,14.511753 C 85.300009,14.439103 84.752372,14.219223 84.651452,14.150133" + sodipodi:nodetypes="cssccsss" /> + <path + id="path8510" + style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#bfd8f3;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="M 81.930899,13.855723 C 78.047689,12.836393 70.745629,12.793243 66.872489,13.809593" + sodipodi:nodetypes="cc" /> + </g> + </g> +</svg> diff --git a/mate-volume-control/data/icons/scalable/devices/audio-speaker-left-side.svg b/mate-volume-control/data/icons/scalable/devices/audio-speaker-left-side.svg new file mode 100644 index 0000000..4851454 --- /dev/null +++ b/mate-volume-control/data/icons/scalable/devices/audio-speaker-left-side.svg @@ -0,0 +1,504 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="48" + height="48" + id="svg2643" + sodipodi:version="0.32" + inkscape:version="0.46" + version="1.0" + sodipodi:docname="audio-speaker-left-side.svg" + inkscape:output_extension="org.inkscape.output.svg.inkscape" + inkscape:export-filename="/Users/eve/Documents/MATE/audio-speaker-left-side.png" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90"> + <defs + id="defs2645"> + <linearGradient + id="linearGradient4389"> + <stop + style="stop-color:#555753;stop-opacity:1;" + offset="0" + id="stop4391" /> + <stop + id="stop4393" + offset="1" + style="stop-color:#eeeeec;stop-opacity:1;" /> + </linearGradient> + <linearGradient + id="linearGradient4325"> + <stop + id="stop4327" + offset="0" + style="stop-color:#2e3436;stop-opacity:1;" /> + <stop + style="stop-color:#eeeeec;stop-opacity:1;" + offset="1" + id="stop4329" /> + </linearGradient> + <linearGradient + id="linearGradient21608"> + <stop + style="stop-color:#888a85;stop-opacity:1" + offset="0" + id="stop21610" /> + <stop + style="stop-color:#2e3436;stop-opacity:1" + offset="1" + id="stop21612" /> + </linearGradient> + <linearGradient + id="linearGradient15341"> + <stop + style="stop-color:#888a85;stop-opacity:1" + offset="0" + id="stop15343" /> + <stop + style="stop-color:#555753;stop-opacity:1" + offset="1" + id="stop15345" /> + </linearGradient> + <linearGradient + id="linearGradient6371"> + <stop + style="stop-color:#888a85;stop-opacity:1" + offset="0" + id="stop6373" /> + <stop + style="stop-color:#d3d7cf;stop-opacity:1;" + offset="1" + id="stop6375" /> + </linearGradient> + <linearGradient + id="linearGradient10872"> + <stop + id="stop10874" + offset="0" + style="stop-color:#888a85;stop-opacity:1" /> + <stop + style="stop-color:#9e9e92;stop-opacity:1;" + offset="0.25301206" + id="stop10876" /> + <stop + id="stop10878" + offset="1" + style="stop-color:#555753;stop-opacity:1" /> + </linearGradient> + <linearGradient + id="linearGradient5254"> + <stop + id="stop5256" + offset="0" + style="stop-color:#707469;stop-opacity:1;" /> + <stop + id="stop5258" + offset="1" + style="stop-color:#2e3335;stop-opacity:1;" /> + </linearGradient> + <linearGradient + id="linearGradient10055"> + <stop + style="stop-color:#bebebe;stop-opacity:1;" + offset="0" + id="stop10057" /> + <stop + id="stop10061" + offset="0.375" + style="stop-color:#e8e8e8;stop-opacity:1;" /> + <stop + style="stop-color:#5c5c5c;stop-opacity:1;" + offset="1" + id="stop10059" /> + </linearGradient> + <linearGradient + id="linearGradient4841"> + <stop + id="stop4843" + offset="0" + style="stop-color:#babdb6;stop-opacity:1;" /> + <stop + style="stop-color:#fcaf3e;stop-opacity:0.94117647;" + offset="0" + id="stop4845" /> + <stop + id="stop4847" + offset="1" + style="stop-color:#babdb6;stop-opacity:1;" /> + <stop + style="stop-color:#eeeeec;stop-opacity:1;" + offset="1" + id="stop4849" /> + </linearGradient> + <linearGradient + id="linearGradient4809"> + <stop + style="stop-color:#babdb6;stop-opacity:1;" + offset="0" + id="stop4811" /> + <stop + id="stop4813" + offset="0" + style="stop-color:#ad7fa8;stop-opacity:1;" /> + <stop + style="stop-color:#babdb6;stop-opacity:1;" + offset="1" + id="stop4815" /> + <stop + id="stop4817" + offset="1" + style="stop-color:#eeeeec;stop-opacity:1;" /> + </linearGradient> + <linearGradient + id="linearGradient3345"> + <stop + id="stop3347" + offset="0" + style="stop-color:#babdb6;stop-opacity:1;" /> + <stop + style="stop-color:#729fcf;stop-opacity:1;" + offset="0" + id="stop3351" /> + <stop + id="stop3355" + offset="1" + style="stop-color:#babdb6;stop-opacity:1;" /> + <stop + style="stop-color:#eeeeec;stop-opacity:1;" + offset="1" + id="stop3349" /> + </linearGradient> + <linearGradient + id="linearGradient3223"> + <stop + style="stop-color:#eeeeec;stop-opacity:1;" + offset="0" + id="stop3225" /> + <stop + style="stop-color:#babdb6;stop-opacity:1;" + offset="1" + id="stop3227" /> + </linearGradient> + <linearGradient + id="linearGradient3503"> + <stop + style="stop-color:#babdb6;stop-opacity:1;" + offset="0" + id="stop3239" /> + <stop + id="stop3507" + offset="1" + style="stop-color:#eeeeec;stop-opacity:1;" /> + </linearGradient> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + id="perspective2651" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient3501" + cx="22.276291" + cy="32.248856" + fx="22.276291" + fy="32.248856" + r="20.319138" + gradientTransform="matrix(1,0,0,0.2366258,0,24.617945)" + gradientUnits="userSpaceOnUse" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient3500" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.2366258,0,24.617945)" + cx="22.276291" + cy="32.248856" + fx="22.276291" + fy="32.248856" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient3232" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,47.474934,42.420392)" + cx="22.276291" + cy="21.520338" + fx="22.276291" + fy="21.520338" + r="20.319138" + spreadMethod="reflect" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient5689" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0469084,0,0,0.4796469,270.37856,38.427671)" + cx="22.276291" + cy="32.248856" + fx="22.276291" + fy="32.248856" + r="20.319138" /> + <inkscape:perspective + id="perspective3474" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 526.18109 : 1" + sodipodi:type="inkscape:persp3d" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4325" + id="radialGradient4359" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,-52.447261,-106.14795)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient5015" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,42.720075,-107.89847)" + spreadMethod="pad" + cx="22.276291" + cy="21.520338" + fx="22.276291" + fy="21.520338" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient5062" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,98.720075,-107.89847)" + spreadMethod="pad" + cx="22.276291" + cy="21.520338" + fx="22.276291" + fy="21.520338" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4325" + id="radialGradient5064" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,98.720075,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4389" + id="radialGradient5110" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,142.72007,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4389" + id="radialGradient3863" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,92.720075,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4389" + id="radialGradient3865" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,92.720075,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4389" + id="radialGradient3906" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,92.720075,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4389" + id="radialGradient7260" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,47.516569,40.378763)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + gridtolerance="10000" + guidetolerance="10" + objecttolerance="10" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="5.6568542" + inkscape:cx="-15.988037" + inkscape:cy="20.556657" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="false" + inkscape:snap-global="false" + inkscape:window-width="1601" + inkscape:window-height="942" + inkscape:window-x="5" + inkscape:window-y="1" + showguides="false" + inkscape:guide-bbox="true"> + <inkscape:grid + type="xygrid" + id="grid2653" + visible="true" + enabled="true" + color="#ff00ff" + opacity="0.1254902" + empcolor="#0000f2" + empopacity="0.25098039" /> + <sodipodi:guide + orientation="1,0" + position="23.969062,28.50558" + id="guide3488" /> + <sodipodi:guide + orientation="0,1" + position="17.401268,34.125445" + id="guide3490" /> + </sodipodi:namedview> + <metadata + id="metadata2648"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <cc:license + rdf:resource="" /> + <dc:subject> + <rdf:Bag> + <rdf:li>audio</rdf:li> + <rdf:li>device</rdf:li> + <rdf:li>speaker</rdf:li> + <rdf:li>output</rdf:li> + <rdf:li>left-side</rdf:li> + </rdf:Bag> + </dc:subject> + <dc:title>audio-speaker-left-side</dc:title> + <dc:creator> + <cc:Agent> + <dc:title>Evangeline McGlynn</dc:title> + </cc:Agent> + </dc:creator> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <g + id="g7248" + transform="matrix(0,-1,1,0,4.1631076e-2,48.041631)"> + <path + sodipodi:nodetypes="ccccc" + id="path5365" + d="M 14.032699,10.506413 C 20.104129,7.0242733 27.175559,7.1135633 33.425559,10.506413 L 35.425559,14.899273 L 12.032699,14.899273 L 14.032699,10.506413 z" + style="fill:#babdb6;fill-opacity:1;fill-rule:nonzero;stroke:#2e3436;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> + <path + sodipodi:nodetypes="csssccsssc" + d="M 45.604129,27.934983 C 45.604129,27.934983 41.056699,19.248213 35.742829,14.995723 C 35.532199,14.827163 35.320359,14.665563 35.107559,14.511753 C 34.605519,14.148893 34.098099,13.829363 33.588369,13.563883 C 33.019409,13.267543 32.447589,13.038553 31.877199,12.891833 C 27.993989,11.872493 20.160679,11.829343 16.287539,12.845703 C 15.447649,13.064843 14.605939,13.457433 13.775509,13.977613 C 13.150269,14.369273 12.531419,14.833253 11.924559,15.349973 C 10.053439,16.943173 8.2962496,19.037813 6.8167896,21.059983 C 4.2201996,24.609093 2.4791296,27.934983 2.4791296,27.934983" + style="fill:#babdb6;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + id="path5367" /> + <path + style="fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#888a83;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="M 12.534499,15.979023 L 14.721539,11.213023 C 19.982596,8.4697433 25.941852,7.8458533 32.660602,11.207463 L 34.629112,15.410963" + id="path5369" + sodipodi:nodetypes="cccc" /> + <path + sodipodi:nodetypes="cccc" + d="M 44.708609,28.523883 C 44.708609,28.523883 38.400579,15.595313 31.637929,13.855723 C 27.754719,12.836393 20.452659,12.793243 16.579519,13.809593 C 9.7353992,15.595313 4.7398596,26.273883 4.7398596,26.273883" + style="fill:#555753;fill-opacity:1;fill-rule:evenodd;stroke:#888a85;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + id="path5371" /> + <path + transform="matrix(1.0469083,0,0,2.027027,0.7198796,-35.409607)" + d="M 43.214285,32.24107 A 20.9375,4.9553571 0 1 1 1.3392849,32.24107 A 20.9375,4.9553571 0 1 1 43.214285,32.24107 z" + sodipodi:ry="4.9553571" + sodipodi:rx="20.9375" + sodipodi:cy="32.24107" + sodipodi:cx="22.276785" + id="path5373" + style="fill:#eeeeec;fill-opacity:1;fill-rule:nonzero;stroke:#2e3436;stroke-width:0.68646109;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + sodipodi:type="arc" /> + <path + style="fill:url(#radialGradient7260);fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="M 44.951119,29.943913 C 45.140529,34.352133 36.141269,39.009973 24.041629,39.009973 C 11.941989,39.009973 2.9111696,34.415273 3.1321396,29.943913 C 2.9427396,25.377853 11.941989,20.909423 24.041629,20.909423 C 36.141269,20.909423 44.982689,25.283153 44.951119,29.943913 z" + id="path5375" + sodipodi:nodetypes="ccccc" /> + <path + style="fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#555753;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="M 31.849489,27.943913 C 31.175419,30.131673 28.559789,31.329293 24.041629,31.329293 C 19.523479,31.329293 16.692929,29.952123 16.233769,27.943913 C 16.163039,26.238893 19.523479,24.570323 24.041629,24.570323 C 28.559789,24.570323 31.861279,26.203533 31.849489,27.943913 z" + id="path5377" + sodipodi:nodetypes="ccccc" /> + <path + style="fill:#555753;fill-opacity:1;fill-rule:nonzero;stroke:#2e3436;stroke-width:0.96596354;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="M 17.184019,27.764793 C 18.154419,30.844053 20.852999,33.060833 24.027449,33.060843 C 27.221569,33.060843 29.933929,30.816463 30.888729,27.707393 C 29.988089,26.206763 26.607559,25.470543 23.998119,25.513813 C 20.693779,25.428073 18.141639,26.373493 17.184019,27.764793 z" + id="path5379" + sodipodi:nodetypes="csccc" + inkscape:export-filename="/Users/eve/Documents/MATE/SpeakerIcon_Test.png" + inkscape:export-xdpi="67.489998" + inkscape:export-ydpi="67.489998" /> + <path + id="path5381" + style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#2e3436;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="M 12.429209,14.847493 C 12.302169,14.950093 12.050609,15.242643 11.924559,15.349973 C 10.053439,16.943173 8.2962496,19.037813 6.8167896,21.059983 C 4.2201996,24.609093 2.4791296,27.934983 2.4791296,27.934983 M 45.604129,27.934983 C 45.604129,27.934983 41.056699,19.248213 35.742829,14.995723 C 35.532199,14.827163 35.320359,14.665563 35.107559,14.511753 C 35.007039,14.439103 34.459402,14.219223 34.358482,14.150133" + sodipodi:nodetypes="cssccsss" /> + <path + id="path5383" + style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#888a85;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="M 31.637929,13.855723 C 27.754719,12.836393 20.452659,12.793243 16.579519,13.809593" + sodipodi:nodetypes="cc" /> + </g> + </g> +</svg> diff --git a/mate-volume-control/data/icons/scalable/devices/audio-speaker-left-testing.svg b/mate-volume-control/data/icons/scalable/devices/audio-speaker-left-testing.svg new file mode 100644 index 0000000..7b9316f --- /dev/null +++ b/mate-volume-control/data/icons/scalable/devices/audio-speaker-left-testing.svg @@ -0,0 +1,537 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="48" + height="48" + id="svg2643" + sodipodi:version="0.32" + inkscape:version="0.46" + version="1.0" + sodipodi:docname="audio-speaker-left-testing.svg" + inkscape:output_extension="org.inkscape.output.svg.inkscape" + inkscape:export-filename="/Users/eve/Documents/MATE/audio-speaker-left-back-testing.png" + inkscape:export-xdpi="67.489998" + inkscape:export-ydpi="67.489998"> + <defs + id="defs2645"> + <linearGradient + id="linearGradient3529"> + <stop + id="stop3531" + offset="0" + style="stop-color:#fefefe;stop-opacity:1;" /> + <stop + id="stop3533" + offset="1" + style="stop-color:#e8e7e6;stop-opacity:1;" /> + </linearGradient> + <linearGradient + id="linearGradient4389"> + <stop + style="stop-color:#555753;stop-opacity:1;" + offset="0" + id="stop4391" /> + <stop + id="stop4393" + offset="1" + style="stop-color:#eeeeec;stop-opacity:1;" /> + </linearGradient> + <linearGradient + id="linearGradient4325"> + <stop + id="stop4327" + offset="0" + style="stop-color:#2e3436;stop-opacity:1;" /> + <stop + style="stop-color:#eeeeec;stop-opacity:1;" + offset="1" + id="stop4329" /> + </linearGradient> + <linearGradient + id="linearGradient21608"> + <stop + style="stop-color:#888a85;stop-opacity:1" + offset="0" + id="stop21610" /> + <stop + style="stop-color:#2e3436;stop-opacity:1" + offset="1" + id="stop21612" /> + </linearGradient> + <linearGradient + id="linearGradient15341"> + <stop + style="stop-color:#888a85;stop-opacity:1" + offset="0" + id="stop15343" /> + <stop + style="stop-color:#555753;stop-opacity:1" + offset="1" + id="stop15345" /> + </linearGradient> + <linearGradient + id="linearGradient6371"> + <stop + style="stop-color:#888a85;stop-opacity:1" + offset="0" + id="stop6373" /> + <stop + style="stop-color:#d3d7cf;stop-opacity:1;" + offset="1" + id="stop6375" /> + </linearGradient> + <linearGradient + id="linearGradient10872"> + <stop + id="stop10874" + offset="0" + style="stop-color:#888a85;stop-opacity:1" /> + <stop + style="stop-color:#9e9e92;stop-opacity:1;" + offset="0.25301206" + id="stop10876" /> + <stop + id="stop10878" + offset="1" + style="stop-color:#555753;stop-opacity:1" /> + </linearGradient> + <linearGradient + id="linearGradient5254"> + <stop + id="stop5256" + offset="0" + style="stop-color:#707469;stop-opacity:1;" /> + <stop + id="stop5258" + offset="1" + style="stop-color:#2e3335;stop-opacity:1;" /> + </linearGradient> + <linearGradient + id="linearGradient10055"> + <stop + style="stop-color:#bebebe;stop-opacity:1;" + offset="0" + id="stop10057" /> + <stop + id="stop10061" + offset="0.375" + style="stop-color:#e8e8e8;stop-opacity:1;" /> + <stop + style="stop-color:#5c5c5c;stop-opacity:1;" + offset="1" + id="stop10059" /> + </linearGradient> + <linearGradient + id="linearGradient4841"> + <stop + id="stop4843" + offset="0" + style="stop-color:#babdb6;stop-opacity:1;" /> + <stop + style="stop-color:#fcaf3e;stop-opacity:0.94117647;" + offset="0" + id="stop4845" /> + <stop + id="stop4847" + offset="1" + style="stop-color:#babdb6;stop-opacity:1;" /> + <stop + style="stop-color:#eeeeec;stop-opacity:1;" + offset="1" + id="stop4849" /> + </linearGradient> + <linearGradient + id="linearGradient4809"> + <stop + style="stop-color:#babdb6;stop-opacity:1;" + offset="0" + id="stop4811" /> + <stop + id="stop4813" + offset="0" + style="stop-color:#ad7fa8;stop-opacity:1;" /> + <stop + style="stop-color:#babdb6;stop-opacity:1;" + offset="1" + id="stop4815" /> + <stop + id="stop4817" + offset="1" + style="stop-color:#eeeeec;stop-opacity:1;" /> + </linearGradient> + <linearGradient + id="linearGradient3345"> + <stop + id="stop3347" + offset="0" + style="stop-color:#babdb6;stop-opacity:1;" /> + <stop + style="stop-color:#729fcf;stop-opacity:1;" + offset="0" + id="stop3351" /> + <stop + id="stop3355" + offset="1" + style="stop-color:#babdb6;stop-opacity:1;" /> + <stop + style="stop-color:#eeeeec;stop-opacity:1;" + offset="1" + id="stop3349" /> + </linearGradient> + <linearGradient + id="linearGradient3223"> + <stop + style="stop-color:#eeeeec;stop-opacity:1;" + offset="0" + id="stop3225" /> + <stop + style="stop-color:#babdb6;stop-opacity:1;" + offset="1" + id="stop3227" /> + </linearGradient> + <linearGradient + id="linearGradient3503"> + <stop + style="stop-color:#babdb6;stop-opacity:1;" + offset="0" + id="stop3239" /> + <stop + id="stop3507" + offset="1" + style="stop-color:#eeeeec;stop-opacity:1;" /> + </linearGradient> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + id="perspective2651" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient3501" + cx="22.276291" + cy="32.248856" + fx="22.276291" + fy="32.248856" + r="20.319138" + gradientTransform="matrix(1,0,0,0.2366258,0,24.617945)" + gradientUnits="userSpaceOnUse" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient3500" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.2366258,0,24.617945)" + cx="22.276291" + cy="32.248856" + fx="22.276291" + fy="32.248856" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient3232" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,47.474934,42.420392)" + cx="22.276291" + cy="21.520338" + fx="22.276291" + fy="21.520338" + r="20.319138" + spreadMethod="reflect" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient5689" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0469084,0,0,0.4796469,270.37856,38.427671)" + cx="22.276291" + cy="32.248856" + fx="22.276291" + fy="32.248856" + r="20.319138" /> + <inkscape:perspective + id="perspective3474" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 526.18109 : 1" + sodipodi:type="inkscape:persp3d" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4325" + id="radialGradient4359" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,-52.447261,-106.14795)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient5015" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,42.720075,-107.89847)" + spreadMethod="pad" + cx="22.276291" + cy="21.520338" + fx="22.276291" + fy="21.520338" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient5062" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,98.720075,-107.89847)" + spreadMethod="pad" + cx="22.276291" + cy="21.520338" + fx="22.276291" + fy="21.520338" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4325" + id="radialGradient5064" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,98.720075,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4389" + id="radialGradient5110" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,142.72007,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4389" + id="radialGradient3863" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,92.720075,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4389" + id="radialGradient3865" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,92.720075,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4389" + id="radialGradient3906" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,92.720075,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3345" + id="radialGradient5554" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,97.725459,40.419065)" + spreadMethod="pad" + cx="22.276291" + cy="21.520338" + fx="22.276291" + fy="21.520338" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient8512" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,97.72545,40.294064)" + spreadMethod="reflect" + cx="22.276291" + cy="21.520338" + fx="22.276291" + fy="21.520338" + r="20.319138" /> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + gridtolerance="10000" + guidetolerance="10" + objecttolerance="10" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="1" + inkscape:cx="126.80533" + inkscape:cy="41.532441" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="false" + inkscape:snap-global="false" + inkscape:window-width="1680" + inkscape:window-height="1028" + inkscape:window-x="-12" + inkscape:window-y="0" + showguides="false" + inkscape:guide-bbox="true"> + <inkscape:grid + type="xygrid" + id="grid2653" + visible="true" + enabled="true" + color="#ff00ff" + opacity="0.1254902" + empcolor="#0000f2" + empopacity="0.25098039" /> + <sodipodi:guide + orientation="1,0" + position="23.969062,28.50558" + id="guide3488" /> + <sodipodi:guide + orientation="0,1" + position="-14.142136,73.185552" + id="guide3490" /> + <sodipodi:guide + orientation="1,0" + position="-21,-23.25" + id="guide5857" /> + <sodipodi:guide + orientation="1,0" + position="-49.5,-22.625" + id="guide5859" /> + </sodipodi:namedview> + <metadata + id="metadata2648"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <cc:license + rdf:resource="" /> + <dc:subject> + <rdf:Bag> + <rdf:li>audio</rdf:li> + <rdf:li>device</rdf:li> + <rdf:li>speaker</rdf:li> + <rdf:li>output</rdf:li> + <rdf:li>left</rdf:li> + <rdf:li>testing</rdf:li> + <rdf:li>highlighted</rdf:li> + </rdf:Bag> + </dc:subject> + <dc:title>audio-speaker-left-testing</dc:title> + <dc:creator> + <cc:Agent> + <dc:title>Evangeline McGlynn</dc:title> + </cc:Agent> + </dc:creator> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <g + id="g8490" + transform="matrix(-0.7071068,0.7071068,0.7071068,0.7071068,57.052876,-47.851155)"> + <path + sodipodi:nodetypes="ccccc" + id="path8492" + d="M 64.325669,10.506413 C 70.397099,7.0242733 77.468529,7.1135633 83.718529,10.506413 L 85.718529,14.899273 L 62.325669,14.899273 L 64.325669,10.506413 z" + style="fill:#729fcf;fill-opacity:1;fill-rule:nonzero;stroke:#2e3436;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> + <path + sodipodi:nodetypes="csssccsssc" + d="M 95.897099,27.934983 C 95.897099,27.934983 91.349669,19.248213 86.035799,14.995723 C 85.825169,14.827163 85.613329,14.665563 85.400529,14.511753 C 84.898489,14.148893 84.391069,13.829363 83.881339,13.563883 C 83.312379,13.267543 82.740559,13.038553 82.170169,12.891833 C 78.286959,11.872493 70.453649,11.829343 66.580509,12.845703 C 65.740619,13.064843 64.898909,13.457433 64.068479,13.977613 C 63.443239,14.369273 62.824389,14.833253 62.217529,15.349973 C 60.346409,16.943173 58.58922,19.037813 57.10976,21.059983 C 54.51317,24.609093 52.7721,27.934983 52.7721,27.934983" + style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + id="path8494" /> + <path + style="fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#bfd8f3;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="M 62.827469,15.979023 L 65.014509,11.213023 C 70.275566,8.4697433 76.234822,7.8458533 82.953572,11.207463 L 84.922082,15.410963" + id="path8496" + sodipodi:nodetypes="cccc" /> + <path + sodipodi:nodetypes="cccc" + d="M 95.001579,28.523883 C 95.001579,28.523883 88.693549,15.595313 81.930899,13.855723 C 78.047689,12.836393 70.745629,12.793243 66.872489,13.809593 C 60.028369,15.595313 55.03283,26.273883 55.03283,26.273883" + style="fill:#729fcf;fill-opacity:1;fill-rule:evenodd;stroke:#bfd8f3;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + id="path8498" /> + <path + transform="matrix(1.0469083,0,0,2.027027,51.01285,-35.409607)" + d="M 43.214285,32.24107 A 20.9375,4.9553571 0 1 1 1.3392849,32.24107 A 20.9375,4.9553571 0 1 1 43.214285,32.24107 z" + sodipodi:ry="4.9553571" + sodipodi:rx="20.9375" + sodipodi:cy="32.24107" + sodipodi:cx="22.276785" + id="path8500" + style="fill:#eeeeec;fill-opacity:1;fill-rule:nonzero;stroke:#2e3436;stroke-width:0.68646109;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + sodipodi:type="arc" /> + <path + sodipodi:nodetypes="ccccc" + id="path8502" + d="M 95.16001,29.859216 C 95.34941,34.267437 86.35016,38.925273 74.250517,38.925273 C 62.150874,38.925273 53.120056,34.330572 53.341027,29.859216 C 53.151624,25.29316 62.150874,20.824727 74.250517,20.824727 C 86.35016,20.824727 95.19158,25.198457 95.16001,29.859216 z" + style="fill:url(#radialGradient8512);fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> + <path + style="fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#555753;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="M 82.142459,27.943913 C 81.468389,30.131673 78.852759,31.329293 74.334599,31.329293 C 69.816449,31.329293 66.985899,29.952123 66.526739,27.943913 C 66.456009,26.238893 69.816449,24.570323 74.334599,24.570323 C 78.852759,24.570323 82.154249,26.203533 82.142459,27.943913 z" + id="path8504" + sodipodi:nodetypes="ccccc" /> + <path + style="fill:#729fcf;fill-opacity:1;fill-rule:nonzero;stroke:#204a87;stroke-width:0.96596354;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="M 67.476989,27.764793 C 68.447389,30.844053 71.145969,33.060833 74.320419,33.060843 C 77.514539,33.060843 80.226899,30.816463 81.181699,27.707393 C 80.281059,26.206763 76.900529,25.470543 74.291089,25.513813 C 70.986749,25.428073 68.434609,26.373493 67.476989,27.764793 z" + id="path8506" + sodipodi:nodetypes="csccc" + inkscape:export-filename="/Users/eve/Documents/MATE/SpeakerIcon_Test.png" + inkscape:export-xdpi="67.489998" + inkscape:export-ydpi="67.489998" /> + <path + id="path8508" + style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#2e3436;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="M 62.722179,14.847493 C 62.595139,14.950093 62.343579,15.242643 62.217529,15.349973 C 60.346409,16.943173 58.58922,19.037813 57.10976,21.059983 C 54.51317,24.609093 52.7721,27.934983 52.7721,27.934983 M 95.897099,27.934983 C 95.897099,27.934983 91.349669,19.248213 86.035799,14.995723 C 85.825169,14.827163 85.613329,14.665563 85.400529,14.511753 C 85.300009,14.439103 84.752372,14.219223 84.651452,14.150133" + sodipodi:nodetypes="cssccsss" /> + <path + id="path8510" + style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#bfd8f3;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="M 81.930899,13.855723 C 78.047689,12.836393 70.745629,12.793243 66.872489,13.809593" + sodipodi:nodetypes="cc" /> + </g> + </g> +</svg> diff --git a/mate-volume-control/data/icons/scalable/devices/audio-speaker-left.svg b/mate-volume-control/data/icons/scalable/devices/audio-speaker-left.svg new file mode 100644 index 0000000..1ee3869 --- /dev/null +++ b/mate-volume-control/data/icons/scalable/devices/audio-speaker-left.svg @@ -0,0 +1,504 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="48" + height="48" + id="svg2643" + sodipodi:version="0.32" + inkscape:version="0.46" + version="1.0" + sodipodi:docname="audio-speaker-left.svg" + inkscape:output_extension="org.inkscape.output.svg.inkscape" + inkscape:export-filename="/Users/eve/Documents/MATE/audio-speaker-right.png" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90"> + <defs + id="defs2645"> + <linearGradient + id="linearGradient4389"> + <stop + style="stop-color:#555753;stop-opacity:1;" + offset="0" + id="stop4391" /> + <stop + id="stop4393" + offset="1" + style="stop-color:#eeeeec;stop-opacity:1;" /> + </linearGradient> + <linearGradient + id="linearGradient4325"> + <stop + id="stop4327" + offset="0" + style="stop-color:#2e3436;stop-opacity:1;" /> + <stop + style="stop-color:#eeeeec;stop-opacity:1;" + offset="1" + id="stop4329" /> + </linearGradient> + <linearGradient + id="linearGradient21608"> + <stop + style="stop-color:#888a85;stop-opacity:1" + offset="0" + id="stop21610" /> + <stop + style="stop-color:#2e3436;stop-opacity:1" + offset="1" + id="stop21612" /> + </linearGradient> + <linearGradient + id="linearGradient15341"> + <stop + style="stop-color:#888a85;stop-opacity:1" + offset="0" + id="stop15343" /> + <stop + style="stop-color:#555753;stop-opacity:1" + offset="1" + id="stop15345" /> + </linearGradient> + <linearGradient + id="linearGradient6371"> + <stop + style="stop-color:#888a85;stop-opacity:1" + offset="0" + id="stop6373" /> + <stop + style="stop-color:#d3d7cf;stop-opacity:1;" + offset="1" + id="stop6375" /> + </linearGradient> + <linearGradient + id="linearGradient10872"> + <stop + id="stop10874" + offset="0" + style="stop-color:#888a85;stop-opacity:1" /> + <stop + style="stop-color:#9e9e92;stop-opacity:1;" + offset="0.25301206" + id="stop10876" /> + <stop + id="stop10878" + offset="1" + style="stop-color:#555753;stop-opacity:1" /> + </linearGradient> + <linearGradient + id="linearGradient5254"> + <stop + id="stop5256" + offset="0" + style="stop-color:#707469;stop-opacity:1;" /> + <stop + id="stop5258" + offset="1" + style="stop-color:#2e3335;stop-opacity:1;" /> + </linearGradient> + <linearGradient + id="linearGradient10055"> + <stop + style="stop-color:#bebebe;stop-opacity:1;" + offset="0" + id="stop10057" /> + <stop + id="stop10061" + offset="0.375" + style="stop-color:#e8e8e8;stop-opacity:1;" /> + <stop + style="stop-color:#5c5c5c;stop-opacity:1;" + offset="1" + id="stop10059" /> + </linearGradient> + <linearGradient + id="linearGradient4841"> + <stop + id="stop4843" + offset="0" + style="stop-color:#babdb6;stop-opacity:1;" /> + <stop + style="stop-color:#fcaf3e;stop-opacity:0.94117647;" + offset="0" + id="stop4845" /> + <stop + id="stop4847" + offset="1" + style="stop-color:#babdb6;stop-opacity:1;" /> + <stop + style="stop-color:#eeeeec;stop-opacity:1;" + offset="1" + id="stop4849" /> + </linearGradient> + <linearGradient + id="linearGradient4809"> + <stop + style="stop-color:#babdb6;stop-opacity:1;" + offset="0" + id="stop4811" /> + <stop + id="stop4813" + offset="0" + style="stop-color:#ad7fa8;stop-opacity:1;" /> + <stop + style="stop-color:#babdb6;stop-opacity:1;" + offset="1" + id="stop4815" /> + <stop + id="stop4817" + offset="1" + style="stop-color:#eeeeec;stop-opacity:1;" /> + </linearGradient> + <linearGradient + id="linearGradient3345"> + <stop + id="stop3347" + offset="0" + style="stop-color:#babdb6;stop-opacity:1;" /> + <stop + style="stop-color:#729fcf;stop-opacity:1;" + offset="0" + id="stop3351" /> + <stop + id="stop3355" + offset="1" + style="stop-color:#babdb6;stop-opacity:1;" /> + <stop + style="stop-color:#eeeeec;stop-opacity:1;" + offset="1" + id="stop3349" /> + </linearGradient> + <linearGradient + id="linearGradient3223"> + <stop + style="stop-color:#eeeeec;stop-opacity:1;" + offset="0" + id="stop3225" /> + <stop + style="stop-color:#babdb6;stop-opacity:1;" + offset="1" + id="stop3227" /> + </linearGradient> + <linearGradient + id="linearGradient3503"> + <stop + style="stop-color:#babdb6;stop-opacity:1;" + offset="0" + id="stop3239" /> + <stop + id="stop3507" + offset="1" + style="stop-color:#eeeeec;stop-opacity:1;" /> + </linearGradient> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + id="perspective2651" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient3501" + cx="22.276291" + cy="32.248856" + fx="22.276291" + fy="32.248856" + r="20.319138" + gradientTransform="matrix(1,0,0,0.2366258,0,24.617945)" + gradientUnits="userSpaceOnUse" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient3500" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.2366258,0,24.617945)" + cx="22.276291" + cy="32.248856" + fx="22.276291" + fy="32.248856" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient3232" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,47.474934,42.420392)" + cx="22.276291" + cy="21.520338" + fx="22.276291" + fy="21.520338" + r="20.319138" + spreadMethod="reflect" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient5689" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0469084,0,0,0.4796469,270.37856,38.427671)" + cx="22.276291" + cy="32.248856" + fx="22.276291" + fy="32.248856" + r="20.319138" /> + <inkscape:perspective + id="perspective3474" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 526.18109 : 1" + sodipodi:type="inkscape:persp3d" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4325" + id="radialGradient4359" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,-52.447261,-106.14795)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient5015" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,42.720075,-107.89847)" + spreadMethod="pad" + cx="22.276291" + cy="21.520338" + fx="22.276291" + fy="21.520338" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient5062" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,98.720075,-107.89847)" + spreadMethod="pad" + cx="22.276291" + cy="21.520338" + fx="22.276291" + fy="21.520338" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4325" + id="radialGradient5064" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,98.720075,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4389" + id="radialGradient5110" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,142.72007,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4389" + id="radialGradient3863" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,92.720075,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4389" + id="radialGradient3865" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,92.720075,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4389" + id="radialGradient3906" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,92.720075,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4389" + id="radialGradient7260" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,47.516569,40.378763)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + gridtolerance="10000" + guidetolerance="10" + objecttolerance="10" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="5.6568542" + inkscape:cx="-53.376308" + inkscape:cy="20.556657" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="false" + inkscape:snap-global="false" + inkscape:window-width="1601" + inkscape:window-height="942" + inkscape:window-x="5" + inkscape:window-y="1" + showguides="false" + inkscape:guide-bbox="true"> + <inkscape:grid + type="xygrid" + id="grid2653" + visible="true" + enabled="true" + color="#ff00ff" + opacity="0.1254902" + empcolor="#0000f2" + empopacity="0.25098039" /> + <sodipodi:guide + orientation="1,0" + position="23.969062,28.50558" + id="guide3488" /> + <sodipodi:guide + orientation="0,1" + position="17.401268,34.125445" + id="guide3490" /> + </sodipodi:namedview> + <metadata + id="metadata2648"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <cc:license + rdf:resource="" /> + <dc:subject> + <rdf:Bag> + <rdf:li>audio</rdf:li> + <rdf:li>device</rdf:li> + <rdf:li>speaker</rdf:li> + <rdf:li>output</rdf:li> + <rdf:li>left</rdf:li> + </rdf:Bag> + </dc:subject> + <dc:title>audio-speaker-left</dc:title> + <dc:creator> + <cc:Agent> + <dc:title>Evangeline McGlynn</dc:title> + </cc:Agent> + </dc:creator> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <g + id="g7248" + transform="matrix(-0.7071068,0.7071068,0.7071068,0.7071068,21.490375,-12.288654)"> + <path + sodipodi:nodetypes="ccccc" + id="path5365" + d="M 14.032699,10.506413 C 20.104129,7.0242733 27.175559,7.1135633 33.425559,10.506413 L 35.425559,14.899273 L 12.032699,14.899273 L 14.032699,10.506413 z" + style="fill:#babdb6;fill-opacity:1;fill-rule:nonzero;stroke:#2e3436;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> + <path + sodipodi:nodetypes="csssccsssc" + d="M 45.604129,27.934983 C 45.604129,27.934983 41.056699,19.248213 35.742829,14.995723 C 35.532199,14.827163 35.320359,14.665563 35.107559,14.511753 C 34.605519,14.148893 34.098099,13.829363 33.588369,13.563883 C 33.019409,13.267543 32.447589,13.038553 31.877199,12.891833 C 27.993989,11.872493 20.160679,11.829343 16.287539,12.845703 C 15.447649,13.064843 14.605939,13.457433 13.775509,13.977613 C 13.150269,14.369273 12.531419,14.833253 11.924559,15.349973 C 10.053439,16.943173 8.2962496,19.037813 6.8167896,21.059983 C 4.2201996,24.609093 2.4791296,27.934983 2.4791296,27.934983" + style="fill:#babdb6;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + id="path5367" /> + <path + style="fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#888a83;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="M 12.534499,15.979023 L 14.721539,11.213023 C 19.982596,8.4697433 25.941852,7.8458533 32.660602,11.207463 L 34.629112,15.410963" + id="path5369" + sodipodi:nodetypes="cccc" /> + <path + sodipodi:nodetypes="cccc" + d="M 44.708609,28.523883 C 44.708609,28.523883 38.400579,15.595313 31.637929,13.855723 C 27.754719,12.836393 20.452659,12.793243 16.579519,13.809593 C 9.7353992,15.595313 4.7398596,26.273883 4.7398596,26.273883" + style="fill:#555753;fill-opacity:1;fill-rule:evenodd;stroke:#888a85;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + id="path5371" /> + <path + transform="matrix(1.0469083,0,0,2.027027,0.7198796,-35.409607)" + d="M 43.214285,32.24107 A 20.9375,4.9553571 0 1 1 1.3392849,32.24107 A 20.9375,4.9553571 0 1 1 43.214285,32.24107 z" + sodipodi:ry="4.9553571" + sodipodi:rx="20.9375" + sodipodi:cy="32.24107" + sodipodi:cx="22.276785" + id="path5373" + style="fill:#eeeeec;fill-opacity:1;fill-rule:nonzero;stroke:#2e3436;stroke-width:0.68646109;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + sodipodi:type="arc" /> + <path + style="fill:url(#radialGradient7260);fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="M 44.951119,29.943913 C 45.140529,34.352133 36.141269,39.009973 24.041629,39.009973 C 11.941989,39.009973 2.9111696,34.415273 3.1321396,29.943913 C 2.9427396,25.377853 11.941989,20.909423 24.041629,20.909423 C 36.141269,20.909423 44.982689,25.283153 44.951119,29.943913 z" + id="path5375" + sodipodi:nodetypes="ccccc" /> + <path + style="fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#555753;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="M 31.849489,27.943913 C 31.175419,30.131673 28.559789,31.329293 24.041629,31.329293 C 19.523479,31.329293 16.692929,29.952123 16.233769,27.943913 C 16.163039,26.238893 19.523479,24.570323 24.041629,24.570323 C 28.559789,24.570323 31.861279,26.203533 31.849489,27.943913 z" + id="path5377" + sodipodi:nodetypes="ccccc" /> + <path + style="fill:#555753;fill-opacity:1;fill-rule:nonzero;stroke:#2e3436;stroke-width:0.96596354;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="M 17.184019,27.764793 C 18.154419,30.844053 20.852999,33.060833 24.027449,33.060843 C 27.221569,33.060843 29.933929,30.816463 30.888729,27.707393 C 29.988089,26.206763 26.607559,25.470543 23.998119,25.513813 C 20.693779,25.428073 18.141639,26.373493 17.184019,27.764793 z" + id="path5379" + sodipodi:nodetypes="csccc" + inkscape:export-filename="/Users/eve/Documents/MATE/SpeakerIcon_Test.png" + inkscape:export-xdpi="67.489998" + inkscape:export-ydpi="67.489998" /> + <path + id="path5381" + style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#2e3436;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="M 12.429209,14.847493 C 12.302169,14.950093 12.050609,15.242643 11.924559,15.349973 C 10.053439,16.943173 8.2962496,19.037813 6.8167896,21.059983 C 4.2201996,24.609093 2.4791296,27.934983 2.4791296,27.934983 M 45.604129,27.934983 C 45.604129,27.934983 41.056699,19.248213 35.742829,14.995723 C 35.532199,14.827163 35.320359,14.665563 35.107559,14.511753 C 35.007039,14.439103 34.459402,14.219223 34.358482,14.150133" + sodipodi:nodetypes="cssccsss" /> + <path + id="path5383" + style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#888a85;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="M 31.637929,13.855723 C 27.754719,12.836393 20.452659,12.793243 16.579519,13.809593" + sodipodi:nodetypes="cc" /> + </g> + </g> +</svg> diff --git a/mate-volume-control/data/icons/scalable/devices/audio-speaker-right-back-testing.svg b/mate-volume-control/data/icons/scalable/devices/audio-speaker-right-back-testing.svg new file mode 100644 index 0000000..0f633a9 --- /dev/null +++ b/mate-volume-control/data/icons/scalable/devices/audio-speaker-right-back-testing.svg @@ -0,0 +1,537 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="48" + height="48" + id="svg2643" + sodipodi:version="0.32" + inkscape:version="0.46" + version="1.0" + sodipodi:docname="audio-speaker-right-back-testing.svg" + inkscape:output_extension="org.inkscape.output.svg.inkscape" + inkscape:export-filename="/Users/eve/Documents/MATE/audio-speaker-left-back-testing.png" + inkscape:export-xdpi="67.489998" + inkscape:export-ydpi="67.489998"> + <defs + id="defs2645"> + <linearGradient + id="linearGradient3529"> + <stop + id="stop3531" + offset="0" + style="stop-color:#fefefe;stop-opacity:1;" /> + <stop + id="stop3533" + offset="1" + style="stop-color:#e8e7e6;stop-opacity:1;" /> + </linearGradient> + <linearGradient + id="linearGradient4389"> + <stop + style="stop-color:#555753;stop-opacity:1;" + offset="0" + id="stop4391" /> + <stop + id="stop4393" + offset="1" + style="stop-color:#eeeeec;stop-opacity:1;" /> + </linearGradient> + <linearGradient + id="linearGradient4325"> + <stop + id="stop4327" + offset="0" + style="stop-color:#2e3436;stop-opacity:1;" /> + <stop + style="stop-color:#eeeeec;stop-opacity:1;" + offset="1" + id="stop4329" /> + </linearGradient> + <linearGradient + id="linearGradient21608"> + <stop + style="stop-color:#888a85;stop-opacity:1" + offset="0" + id="stop21610" /> + <stop + style="stop-color:#2e3436;stop-opacity:1" + offset="1" + id="stop21612" /> + </linearGradient> + <linearGradient + id="linearGradient15341"> + <stop + style="stop-color:#888a85;stop-opacity:1" + offset="0" + id="stop15343" /> + <stop + style="stop-color:#555753;stop-opacity:1" + offset="1" + id="stop15345" /> + </linearGradient> + <linearGradient + id="linearGradient6371"> + <stop + style="stop-color:#888a85;stop-opacity:1" + offset="0" + id="stop6373" /> + <stop + style="stop-color:#d3d7cf;stop-opacity:1;" + offset="1" + id="stop6375" /> + </linearGradient> + <linearGradient + id="linearGradient10872"> + <stop + id="stop10874" + offset="0" + style="stop-color:#888a85;stop-opacity:1" /> + <stop + style="stop-color:#9e9e92;stop-opacity:1;" + offset="0.25301206" + id="stop10876" /> + <stop + id="stop10878" + offset="1" + style="stop-color:#555753;stop-opacity:1" /> + </linearGradient> + <linearGradient + id="linearGradient5254"> + <stop + id="stop5256" + offset="0" + style="stop-color:#707469;stop-opacity:1;" /> + <stop + id="stop5258" + offset="1" + style="stop-color:#2e3335;stop-opacity:1;" /> + </linearGradient> + <linearGradient + id="linearGradient10055"> + <stop + style="stop-color:#bebebe;stop-opacity:1;" + offset="0" + id="stop10057" /> + <stop + id="stop10061" + offset="0.375" + style="stop-color:#e8e8e8;stop-opacity:1;" /> + <stop + style="stop-color:#5c5c5c;stop-opacity:1;" + offset="1" + id="stop10059" /> + </linearGradient> + <linearGradient + id="linearGradient4841"> + <stop + id="stop4843" + offset="0" + style="stop-color:#babdb6;stop-opacity:1;" /> + <stop + style="stop-color:#fcaf3e;stop-opacity:0.94117647;" + offset="0" + id="stop4845" /> + <stop + id="stop4847" + offset="1" + style="stop-color:#babdb6;stop-opacity:1;" /> + <stop + style="stop-color:#eeeeec;stop-opacity:1;" + offset="1" + id="stop4849" /> + </linearGradient> + <linearGradient + id="linearGradient4809"> + <stop + style="stop-color:#babdb6;stop-opacity:1;" + offset="0" + id="stop4811" /> + <stop + id="stop4813" + offset="0" + style="stop-color:#ad7fa8;stop-opacity:1;" /> + <stop + style="stop-color:#babdb6;stop-opacity:1;" + offset="1" + id="stop4815" /> + <stop + id="stop4817" + offset="1" + style="stop-color:#eeeeec;stop-opacity:1;" /> + </linearGradient> + <linearGradient + id="linearGradient3345"> + <stop + id="stop3347" + offset="0" + style="stop-color:#babdb6;stop-opacity:1;" /> + <stop + style="stop-color:#729fcf;stop-opacity:1;" + offset="0" + id="stop3351" /> + <stop + id="stop3355" + offset="1" + style="stop-color:#babdb6;stop-opacity:1;" /> + <stop + style="stop-color:#eeeeec;stop-opacity:1;" + offset="1" + id="stop3349" /> + </linearGradient> + <linearGradient + id="linearGradient3223"> + <stop + style="stop-color:#eeeeec;stop-opacity:1;" + offset="0" + id="stop3225" /> + <stop + style="stop-color:#babdb6;stop-opacity:1;" + offset="1" + id="stop3227" /> + </linearGradient> + <linearGradient + id="linearGradient3503"> + <stop + style="stop-color:#babdb6;stop-opacity:1;" + offset="0" + id="stop3239" /> + <stop + id="stop3507" + offset="1" + style="stop-color:#eeeeec;stop-opacity:1;" /> + </linearGradient> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + id="perspective2651" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient3501" + cx="22.276291" + cy="32.248856" + fx="22.276291" + fy="32.248856" + r="20.319138" + gradientTransform="matrix(1,0,0,0.2366258,0,24.617945)" + gradientUnits="userSpaceOnUse" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient3500" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.2366258,0,24.617945)" + cx="22.276291" + cy="32.248856" + fx="22.276291" + fy="32.248856" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient3232" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,47.474934,42.420392)" + cx="22.276291" + cy="21.520338" + fx="22.276291" + fy="21.520338" + r="20.319138" + spreadMethod="reflect" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient5689" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0469084,0,0,0.4796469,270.37856,38.427671)" + cx="22.276291" + cy="32.248856" + fx="22.276291" + fy="32.248856" + r="20.319138" /> + <inkscape:perspective + id="perspective3474" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 526.18109 : 1" + sodipodi:type="inkscape:persp3d" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4325" + id="radialGradient4359" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,-52.447261,-106.14795)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient5015" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,42.720075,-107.89847)" + spreadMethod="pad" + cx="22.276291" + cy="21.520338" + fx="22.276291" + fy="21.520338" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient5062" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,98.720075,-107.89847)" + spreadMethod="pad" + cx="22.276291" + cy="21.520338" + fx="22.276291" + fy="21.520338" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4325" + id="radialGradient5064" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,98.720075,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4389" + id="radialGradient5110" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,142.72007,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4389" + id="radialGradient3863" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,92.720075,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4389" + id="radialGradient3865" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,92.720075,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4389" + id="radialGradient3906" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,92.720075,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3345" + id="radialGradient5554" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,97.725459,40.419065)" + spreadMethod="pad" + cx="22.276291" + cy="21.520338" + fx="22.276291" + fy="21.520338" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient8512" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,97.72545,40.294064)" + spreadMethod="reflect" + cx="22.276291" + cy="21.520338" + fx="22.276291" + fy="21.520338" + r="20.319138" /> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + gridtolerance="10000" + guidetolerance="10" + objecttolerance="10" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="1" + inkscape:cx="126.80533" + inkscape:cy="41.532441" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="false" + inkscape:snap-global="false" + inkscape:window-width="1680" + inkscape:window-height="1028" + inkscape:window-x="-12" + inkscape:window-y="0" + showguides="false" + inkscape:guide-bbox="true"> + <inkscape:grid + type="xygrid" + id="grid2653" + visible="true" + enabled="true" + color="#ff00ff" + opacity="0.1254902" + empcolor="#0000f2" + empopacity="0.25098039" /> + <sodipodi:guide + orientation="1,0" + position="23.969062,28.50558" + id="guide3488" /> + <sodipodi:guide + orientation="0,1" + position="-14.142136,73.185552" + id="guide3490" /> + <sodipodi:guide + orientation="1,0" + position="-21,-23.25" + id="guide5857" /> + <sodipodi:guide + orientation="1,0" + position="-49.5,-22.625" + id="guide5859" /> + </sodipodi:namedview> + <metadata + id="metadata2648"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <cc:license + rdf:resource="" /> + <dc:subject> + <rdf:Bag> + <rdf:li>audio</rdf:li> + <rdf:li>device</rdf:li> + <rdf:li>speaker</rdf:li> + <rdf:li>output</rdf:li> + <rdf:li>right-back</rdf:li> + <rdf:li>testing</rdf:li> + <rdf:li>highlighted</rdf:li> + </rdf:Bag> + </dc:subject> + <dc:title>audio-speaker-right-back-testing</dc:title> + <dc:creator> + <cc:Agent> + <dc:title>Evangeline McGlynn</dc:title> + </cc:Agent> + </dc:creator> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <g + id="g8490" + transform="matrix(0.7071068,-0.7071068,-0.7071068,-0.7071068,-9.0528759,95.851156)"> + <path + sodipodi:nodetypes="ccccc" + id="path8492" + d="M 64.325669,10.506413 C 70.397099,7.0242733 77.468529,7.1135633 83.718529,10.506413 L 85.718529,14.899273 L 62.325669,14.899273 L 64.325669,10.506413 z" + style="fill:#729fcf;fill-opacity:1;fill-rule:nonzero;stroke:#2e3436;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> + <path + sodipodi:nodetypes="csssccsssc" + d="M 95.897099,27.934983 C 95.897099,27.934983 91.349669,19.248213 86.035799,14.995723 C 85.825169,14.827163 85.613329,14.665563 85.400529,14.511753 C 84.898489,14.148893 84.391069,13.829363 83.881339,13.563883 C 83.312379,13.267543 82.740559,13.038553 82.170169,12.891833 C 78.286959,11.872493 70.453649,11.829343 66.580509,12.845703 C 65.740619,13.064843 64.898909,13.457433 64.068479,13.977613 C 63.443239,14.369273 62.824389,14.833253 62.217529,15.349973 C 60.346409,16.943173 58.58922,19.037813 57.10976,21.059983 C 54.51317,24.609093 52.7721,27.934983 52.7721,27.934983" + style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + id="path8494" /> + <path + style="fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#bfd8f3;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="M 62.827469,15.979023 L 65.014509,11.213023 C 70.275566,8.4697433 76.234822,7.8458533 82.953572,11.207463 L 84.922082,15.410963" + id="path8496" + sodipodi:nodetypes="cccc" /> + <path + sodipodi:nodetypes="cccc" + d="M 95.001579,28.523883 C 95.001579,28.523883 88.693549,15.595313 81.930899,13.855723 C 78.047689,12.836393 70.745629,12.793243 66.872489,13.809593 C 60.028369,15.595313 55.03283,26.273883 55.03283,26.273883" + style="fill:#729fcf;fill-opacity:1;fill-rule:evenodd;stroke:#bfd8f3;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + id="path8498" /> + <path + transform="matrix(1.0469083,0,0,2.027027,51.01285,-35.409607)" + d="M 43.214285,32.24107 A 20.9375,4.9553571 0 1 1 1.3392849,32.24107 A 20.9375,4.9553571 0 1 1 43.214285,32.24107 z" + sodipodi:ry="4.9553571" + sodipodi:rx="20.9375" + sodipodi:cy="32.24107" + sodipodi:cx="22.276785" + id="path8500" + style="fill:#eeeeec;fill-opacity:1;fill-rule:nonzero;stroke:#2e3436;stroke-width:0.68646109;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + sodipodi:type="arc" /> + <path + sodipodi:nodetypes="ccccc" + id="path8502" + d="M 95.16001,29.859216 C 95.34941,34.267437 86.35016,38.925273 74.250517,38.925273 C 62.150874,38.925273 53.120056,34.330572 53.341027,29.859216 C 53.151624,25.29316 62.150874,20.824727 74.250517,20.824727 C 86.35016,20.824727 95.19158,25.198457 95.16001,29.859216 z" + style="fill:url(#radialGradient8512);fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> + <path + style="fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#555753;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="M 82.142459,27.943913 C 81.468389,30.131673 78.852759,31.329293 74.334599,31.329293 C 69.816449,31.329293 66.985899,29.952123 66.526739,27.943913 C 66.456009,26.238893 69.816449,24.570323 74.334599,24.570323 C 78.852759,24.570323 82.154249,26.203533 82.142459,27.943913 z" + id="path8504" + sodipodi:nodetypes="ccccc" /> + <path + style="fill:#729fcf;fill-opacity:1;fill-rule:nonzero;stroke:#204a87;stroke-width:0.96596354;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="M 67.476989,27.764793 C 68.447389,30.844053 71.145969,33.060833 74.320419,33.060843 C 77.514539,33.060843 80.226899,30.816463 81.181699,27.707393 C 80.281059,26.206763 76.900529,25.470543 74.291089,25.513813 C 70.986749,25.428073 68.434609,26.373493 67.476989,27.764793 z" + id="path8506" + sodipodi:nodetypes="csccc" + inkscape:export-filename="/Users/eve/Documents/MATE/SpeakerIcon_Test.png" + inkscape:export-xdpi="67.489998" + inkscape:export-ydpi="67.489998" /> + <path + id="path8508" + style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#2e3436;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="M 62.722179,14.847493 C 62.595139,14.950093 62.343579,15.242643 62.217529,15.349973 C 60.346409,16.943173 58.58922,19.037813 57.10976,21.059983 C 54.51317,24.609093 52.7721,27.934983 52.7721,27.934983 M 95.897099,27.934983 C 95.897099,27.934983 91.349669,19.248213 86.035799,14.995723 C 85.825169,14.827163 85.613329,14.665563 85.400529,14.511753 C 85.300009,14.439103 84.752372,14.219223 84.651452,14.150133" + sodipodi:nodetypes="cssccsss" /> + <path + id="path8510" + style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#bfd8f3;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="M 81.930899,13.855723 C 78.047689,12.836393 70.745629,12.793243 66.872489,13.809593" + sodipodi:nodetypes="cc" /> + </g> + </g> +</svg> diff --git a/mate-volume-control/data/icons/scalable/devices/audio-speaker-right-back.svg b/mate-volume-control/data/icons/scalable/devices/audio-speaker-right-back.svg new file mode 100644 index 0000000..ba1dead --- /dev/null +++ b/mate-volume-control/data/icons/scalable/devices/audio-speaker-right-back.svg @@ -0,0 +1,504 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="48" + height="48" + id="svg2643" + sodipodi:version="0.32" + inkscape:version="0.46" + version="1.0" + sodipodi:docname="audio-speaker-right-back.svg" + inkscape:output_extension="org.inkscape.output.svg.inkscape" + inkscape:export-filename="/Users/eve/Documents/MATE/audio-speaker-left-back.png" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90"> + <defs + id="defs2645"> + <linearGradient + id="linearGradient4389"> + <stop + style="stop-color:#555753;stop-opacity:1;" + offset="0" + id="stop4391" /> + <stop + id="stop4393" + offset="1" + style="stop-color:#eeeeec;stop-opacity:1;" /> + </linearGradient> + <linearGradient + id="linearGradient4325"> + <stop + id="stop4327" + offset="0" + style="stop-color:#2e3436;stop-opacity:1;" /> + <stop + style="stop-color:#eeeeec;stop-opacity:1;" + offset="1" + id="stop4329" /> + </linearGradient> + <linearGradient + id="linearGradient21608"> + <stop + style="stop-color:#888a85;stop-opacity:1" + offset="0" + id="stop21610" /> + <stop + style="stop-color:#2e3436;stop-opacity:1" + offset="1" + id="stop21612" /> + </linearGradient> + <linearGradient + id="linearGradient15341"> + <stop + style="stop-color:#888a85;stop-opacity:1" + offset="0" + id="stop15343" /> + <stop + style="stop-color:#555753;stop-opacity:1" + offset="1" + id="stop15345" /> + </linearGradient> + <linearGradient + id="linearGradient6371"> + <stop + style="stop-color:#888a85;stop-opacity:1" + offset="0" + id="stop6373" /> + <stop + style="stop-color:#d3d7cf;stop-opacity:1;" + offset="1" + id="stop6375" /> + </linearGradient> + <linearGradient + id="linearGradient10872"> + <stop + id="stop10874" + offset="0" + style="stop-color:#888a85;stop-opacity:1" /> + <stop + style="stop-color:#9e9e92;stop-opacity:1;" + offset="0.25301206" + id="stop10876" /> + <stop + id="stop10878" + offset="1" + style="stop-color:#555753;stop-opacity:1" /> + </linearGradient> + <linearGradient + id="linearGradient5254"> + <stop + id="stop5256" + offset="0" + style="stop-color:#707469;stop-opacity:1;" /> + <stop + id="stop5258" + offset="1" + style="stop-color:#2e3335;stop-opacity:1;" /> + </linearGradient> + <linearGradient + id="linearGradient10055"> + <stop + style="stop-color:#bebebe;stop-opacity:1;" + offset="0" + id="stop10057" /> + <stop + id="stop10061" + offset="0.375" + style="stop-color:#e8e8e8;stop-opacity:1;" /> + <stop + style="stop-color:#5c5c5c;stop-opacity:1;" + offset="1" + id="stop10059" /> + </linearGradient> + <linearGradient + id="linearGradient4841"> + <stop + id="stop4843" + offset="0" + style="stop-color:#babdb6;stop-opacity:1;" /> + <stop + style="stop-color:#fcaf3e;stop-opacity:0.94117647;" + offset="0" + id="stop4845" /> + <stop + id="stop4847" + offset="1" + style="stop-color:#babdb6;stop-opacity:1;" /> + <stop + style="stop-color:#eeeeec;stop-opacity:1;" + offset="1" + id="stop4849" /> + </linearGradient> + <linearGradient + id="linearGradient4809"> + <stop + style="stop-color:#babdb6;stop-opacity:1;" + offset="0" + id="stop4811" /> + <stop + id="stop4813" + offset="0" + style="stop-color:#ad7fa8;stop-opacity:1;" /> + <stop + style="stop-color:#babdb6;stop-opacity:1;" + offset="1" + id="stop4815" /> + <stop + id="stop4817" + offset="1" + style="stop-color:#eeeeec;stop-opacity:1;" /> + </linearGradient> + <linearGradient + id="linearGradient3345"> + <stop + id="stop3347" + offset="0" + style="stop-color:#babdb6;stop-opacity:1;" /> + <stop + style="stop-color:#729fcf;stop-opacity:1;" + offset="0" + id="stop3351" /> + <stop + id="stop3355" + offset="1" + style="stop-color:#babdb6;stop-opacity:1;" /> + <stop + style="stop-color:#eeeeec;stop-opacity:1;" + offset="1" + id="stop3349" /> + </linearGradient> + <linearGradient + id="linearGradient3223"> + <stop + style="stop-color:#eeeeec;stop-opacity:1;" + offset="0" + id="stop3225" /> + <stop + style="stop-color:#babdb6;stop-opacity:1;" + offset="1" + id="stop3227" /> + </linearGradient> + <linearGradient + id="linearGradient3503"> + <stop + style="stop-color:#babdb6;stop-opacity:1;" + offset="0" + id="stop3239" /> + <stop + id="stop3507" + offset="1" + style="stop-color:#eeeeec;stop-opacity:1;" /> + </linearGradient> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + id="perspective2651" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient3501" + cx="22.276291" + cy="32.248856" + fx="22.276291" + fy="32.248856" + r="20.319138" + gradientTransform="matrix(1,0,0,0.2366258,0,24.617945)" + gradientUnits="userSpaceOnUse" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient3500" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.2366258,0,24.617945)" + cx="22.276291" + cy="32.248856" + fx="22.276291" + fy="32.248856" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient3232" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,47.474934,42.420392)" + cx="22.276291" + cy="21.520338" + fx="22.276291" + fy="21.520338" + r="20.319138" + spreadMethod="reflect" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient5689" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0469084,0,0,0.4796469,270.37856,38.427671)" + cx="22.276291" + cy="32.248856" + fx="22.276291" + fy="32.248856" + r="20.319138" /> + <inkscape:perspective + id="perspective3474" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 526.18109 : 1" + sodipodi:type="inkscape:persp3d" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4325" + id="radialGradient4359" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,-52.447261,-106.14795)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient5015" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,42.720075,-107.89847)" + spreadMethod="pad" + cx="22.276291" + cy="21.520338" + fx="22.276291" + fy="21.520338" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient5062" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,98.720075,-107.89847)" + spreadMethod="pad" + cx="22.276291" + cy="21.520338" + fx="22.276291" + fy="21.520338" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4325" + id="radialGradient5064" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,98.720075,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4389" + id="radialGradient5110" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,142.72007,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4389" + id="radialGradient3863" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,92.720075,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4389" + id="radialGradient3865" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,92.720075,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4389" + id="radialGradient3906" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,92.720075,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4389" + id="radialGradient7260" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,47.516569,40.378763)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + gridtolerance="10000" + guidetolerance="10" + objecttolerance="10" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="5.6568542" + inkscape:cx="-53.376308" + inkscape:cy="20.556657" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="false" + inkscape:snap-global="false" + inkscape:window-width="1601" + inkscape:window-height="942" + inkscape:window-x="5" + inkscape:window-y="1" + showguides="false" + inkscape:guide-bbox="true"> + <inkscape:grid + type="xygrid" + id="grid2653" + visible="true" + enabled="true" + color="#ff00ff" + opacity="0.1254902" + empcolor="#0000f2" + empopacity="0.25098039" /> + <sodipodi:guide + orientation="1,0" + position="23.969062,28.50558" + id="guide3488" /> + <sodipodi:guide + orientation="0,1" + position="17.401268,34.125445" + id="guide3490" /> + </sodipodi:namedview> + <metadata + id="metadata2648"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <cc:license + rdf:resource="" /> + <dc:subject> + <rdf:Bag> + <rdf:li>audio</rdf:li> + <rdf:li>device</rdf:li> + <rdf:li>speaker</rdf:li> + <rdf:li>output</rdf:li> + <rdf:li>right-back</rdf:li> + </rdf:Bag> + </dc:subject> + <dc:title>audio-speaker-right-back</dc:title> + <dc:creator> + <cc:Agent> + <dc:title>Evangeline McGlynn</dc:title> + </cc:Agent> + </dc:creator> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <g + id="g7248" + transform="matrix(0.7071068,-0.7071068,-0.7071068,-0.7071068,26.509625,60.288654)"> + <path + sodipodi:nodetypes="ccccc" + id="path5365" + d="M 14.032699,10.506413 C 20.104129,7.0242733 27.175559,7.1135633 33.425559,10.506413 L 35.425559,14.899273 L 12.032699,14.899273 L 14.032699,10.506413 z" + style="fill:#babdb6;fill-opacity:1;fill-rule:nonzero;stroke:#2e3436;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> + <path + sodipodi:nodetypes="csssccsssc" + d="M 45.604129,27.934983 C 45.604129,27.934983 41.056699,19.248213 35.742829,14.995723 C 35.532199,14.827163 35.320359,14.665563 35.107559,14.511753 C 34.605519,14.148893 34.098099,13.829363 33.588369,13.563883 C 33.019409,13.267543 32.447589,13.038553 31.877199,12.891833 C 27.993989,11.872493 20.160679,11.829343 16.287539,12.845703 C 15.447649,13.064843 14.605939,13.457433 13.775509,13.977613 C 13.150269,14.369273 12.531419,14.833253 11.924559,15.349973 C 10.053439,16.943173 8.2962496,19.037813 6.8167896,21.059983 C 4.2201996,24.609093 2.4791296,27.934983 2.4791296,27.934983" + style="fill:#babdb6;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + id="path5367" /> + <path + style="fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#888a83;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="M 12.534499,15.979023 L 14.721539,11.213023 C 19.982596,8.4697433 25.941852,7.8458533 32.660602,11.207463 L 34.629112,15.410963" + id="path5369" + sodipodi:nodetypes="cccc" /> + <path + sodipodi:nodetypes="cccc" + d="M 44.708609,28.523883 C 44.708609,28.523883 38.400579,15.595313 31.637929,13.855723 C 27.754719,12.836393 20.452659,12.793243 16.579519,13.809593 C 9.7353992,15.595313 4.7398596,26.273883 4.7398596,26.273883" + style="fill:#555753;fill-opacity:1;fill-rule:evenodd;stroke:#888a85;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + id="path5371" /> + <path + transform="matrix(1.0469083,0,0,2.027027,0.7198796,-35.409607)" + d="M 43.214285,32.24107 A 20.9375,4.9553571 0 1 1 1.3392849,32.24107 A 20.9375,4.9553571 0 1 1 43.214285,32.24107 z" + sodipodi:ry="4.9553571" + sodipodi:rx="20.9375" + sodipodi:cy="32.24107" + sodipodi:cx="22.276785" + id="path5373" + style="fill:#eeeeec;fill-opacity:1;fill-rule:nonzero;stroke:#2e3436;stroke-width:0.68646109;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + sodipodi:type="arc" /> + <path + style="fill:url(#radialGradient7260);fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="M 44.951119,29.943913 C 45.140529,34.352133 36.141269,39.009973 24.041629,39.009973 C 11.941989,39.009973 2.9111696,34.415273 3.1321396,29.943913 C 2.9427396,25.377853 11.941989,20.909423 24.041629,20.909423 C 36.141269,20.909423 44.982689,25.283153 44.951119,29.943913 z" + id="path5375" + sodipodi:nodetypes="ccccc" /> + <path + style="fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#555753;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="M 31.849489,27.943913 C 31.175419,30.131673 28.559789,31.329293 24.041629,31.329293 C 19.523479,31.329293 16.692929,29.952123 16.233769,27.943913 C 16.163039,26.238893 19.523479,24.570323 24.041629,24.570323 C 28.559789,24.570323 31.861279,26.203533 31.849489,27.943913 z" + id="path5377" + sodipodi:nodetypes="ccccc" /> + <path + style="fill:#555753;fill-opacity:1;fill-rule:nonzero;stroke:#2e3436;stroke-width:0.96596354;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="M 17.184019,27.764793 C 18.154419,30.844053 20.852999,33.060833 24.027449,33.060843 C 27.221569,33.060843 29.933929,30.816463 30.888729,27.707393 C 29.988089,26.206763 26.607559,25.470543 23.998119,25.513813 C 20.693779,25.428073 18.141639,26.373493 17.184019,27.764793 z" + id="path5379" + sodipodi:nodetypes="csccc" + inkscape:export-filename="/Users/eve/Documents/MATE/SpeakerIcon_Test.png" + inkscape:export-xdpi="67.489998" + inkscape:export-ydpi="67.489998" /> + <path + id="path5381" + style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#2e3436;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="M 12.429209,14.847493 C 12.302169,14.950093 12.050609,15.242643 11.924559,15.349973 C 10.053439,16.943173 8.2962496,19.037813 6.8167896,21.059983 C 4.2201996,24.609093 2.4791296,27.934983 2.4791296,27.934983 M 45.604129,27.934983 C 45.604129,27.934983 41.056699,19.248213 35.742829,14.995723 C 35.532199,14.827163 35.320359,14.665563 35.107559,14.511753 C 35.007039,14.439103 34.459402,14.219223 34.358482,14.150133" + sodipodi:nodetypes="cssccsss" /> + <path + id="path5383" + style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#888a85;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="M 31.637929,13.855723 C 27.754719,12.836393 20.452659,12.793243 16.579519,13.809593" + sodipodi:nodetypes="cc" /> + </g> + </g> +</svg> diff --git a/mate-volume-control/data/icons/scalable/devices/audio-speaker-right-side-testing.svg b/mate-volume-control/data/icons/scalable/devices/audio-speaker-right-side-testing.svg new file mode 100644 index 0000000..577dd86 --- /dev/null +++ b/mate-volume-control/data/icons/scalable/devices/audio-speaker-right-side-testing.svg @@ -0,0 +1,537 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="48" + height="48" + id="svg2643" + sodipodi:version="0.32" + inkscape:version="0.46" + version="1.0" + sodipodi:docname="audio-speaker-right-side-testing.svg" + inkscape:output_extension="org.inkscape.output.svg.inkscape" + inkscape:export-filename="/Users/eve/Documents/MATE/audio-speaker-right-back-testing.png" + inkscape:export-xdpi="67.489998" + inkscape:export-ydpi="67.489998"> + <defs + id="defs2645"> + <linearGradient + id="linearGradient3529"> + <stop + id="stop3531" + offset="0" + style="stop-color:#fefefe;stop-opacity:1;" /> + <stop + id="stop3533" + offset="1" + style="stop-color:#e8e7e6;stop-opacity:1;" /> + </linearGradient> + <linearGradient + id="linearGradient4389"> + <stop + style="stop-color:#555753;stop-opacity:1;" + offset="0" + id="stop4391" /> + <stop + id="stop4393" + offset="1" + style="stop-color:#eeeeec;stop-opacity:1;" /> + </linearGradient> + <linearGradient + id="linearGradient4325"> + <stop + id="stop4327" + offset="0" + style="stop-color:#2e3436;stop-opacity:1;" /> + <stop + style="stop-color:#eeeeec;stop-opacity:1;" + offset="1" + id="stop4329" /> + </linearGradient> + <linearGradient + id="linearGradient21608"> + <stop + style="stop-color:#888a85;stop-opacity:1" + offset="0" + id="stop21610" /> + <stop + style="stop-color:#2e3436;stop-opacity:1" + offset="1" + id="stop21612" /> + </linearGradient> + <linearGradient + id="linearGradient15341"> + <stop + style="stop-color:#888a85;stop-opacity:1" + offset="0" + id="stop15343" /> + <stop + style="stop-color:#555753;stop-opacity:1" + offset="1" + id="stop15345" /> + </linearGradient> + <linearGradient + id="linearGradient6371"> + <stop + style="stop-color:#888a85;stop-opacity:1" + offset="0" + id="stop6373" /> + <stop + style="stop-color:#d3d7cf;stop-opacity:1;" + offset="1" + id="stop6375" /> + </linearGradient> + <linearGradient + id="linearGradient10872"> + <stop + id="stop10874" + offset="0" + style="stop-color:#888a85;stop-opacity:1" /> + <stop + style="stop-color:#9e9e92;stop-opacity:1;" + offset="0.25301206" + id="stop10876" /> + <stop + id="stop10878" + offset="1" + style="stop-color:#555753;stop-opacity:1" /> + </linearGradient> + <linearGradient + id="linearGradient5254"> + <stop + id="stop5256" + offset="0" + style="stop-color:#707469;stop-opacity:1;" /> + <stop + id="stop5258" + offset="1" + style="stop-color:#2e3335;stop-opacity:1;" /> + </linearGradient> + <linearGradient + id="linearGradient10055"> + <stop + style="stop-color:#bebebe;stop-opacity:1;" + offset="0" + id="stop10057" /> + <stop + id="stop10061" + offset="0.375" + style="stop-color:#e8e8e8;stop-opacity:1;" /> + <stop + style="stop-color:#5c5c5c;stop-opacity:1;" + offset="1" + id="stop10059" /> + </linearGradient> + <linearGradient + id="linearGradient4841"> + <stop + id="stop4843" + offset="0" + style="stop-color:#babdb6;stop-opacity:1;" /> + <stop + style="stop-color:#fcaf3e;stop-opacity:0.94117647;" + offset="0" + id="stop4845" /> + <stop + id="stop4847" + offset="1" + style="stop-color:#babdb6;stop-opacity:1;" /> + <stop + style="stop-color:#eeeeec;stop-opacity:1;" + offset="1" + id="stop4849" /> + </linearGradient> + <linearGradient + id="linearGradient4809"> + <stop + style="stop-color:#babdb6;stop-opacity:1;" + offset="0" + id="stop4811" /> + <stop + id="stop4813" + offset="0" + style="stop-color:#ad7fa8;stop-opacity:1;" /> + <stop + style="stop-color:#babdb6;stop-opacity:1;" + offset="1" + id="stop4815" /> + <stop + id="stop4817" + offset="1" + style="stop-color:#eeeeec;stop-opacity:1;" /> + </linearGradient> + <linearGradient + id="linearGradient3345"> + <stop + id="stop3347" + offset="0" + style="stop-color:#babdb6;stop-opacity:1;" /> + <stop + style="stop-color:#729fcf;stop-opacity:1;" + offset="0" + id="stop3351" /> + <stop + id="stop3355" + offset="1" + style="stop-color:#babdb6;stop-opacity:1;" /> + <stop + style="stop-color:#eeeeec;stop-opacity:1;" + offset="1" + id="stop3349" /> + </linearGradient> + <linearGradient + id="linearGradient3223"> + <stop + style="stop-color:#eeeeec;stop-opacity:1;" + offset="0" + id="stop3225" /> + <stop + style="stop-color:#babdb6;stop-opacity:1;" + offset="1" + id="stop3227" /> + </linearGradient> + <linearGradient + id="linearGradient3503"> + <stop + style="stop-color:#babdb6;stop-opacity:1;" + offset="0" + id="stop3239" /> + <stop + id="stop3507" + offset="1" + style="stop-color:#eeeeec;stop-opacity:1;" /> + </linearGradient> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + id="perspective2651" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient3501" + cx="22.276291" + cy="32.248856" + fx="22.276291" + fy="32.248856" + r="20.319138" + gradientTransform="matrix(1,0,0,0.2366258,0,24.617945)" + gradientUnits="userSpaceOnUse" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient3500" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.2366258,0,24.617945)" + cx="22.276291" + cy="32.248856" + fx="22.276291" + fy="32.248856" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient3232" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,47.474934,42.420392)" + cx="22.276291" + cy="21.520338" + fx="22.276291" + fy="21.520338" + r="20.319138" + spreadMethod="reflect" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient5689" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0469084,0,0,0.4796469,270.37856,38.427671)" + cx="22.276291" + cy="32.248856" + fx="22.276291" + fy="32.248856" + r="20.319138" /> + <inkscape:perspective + id="perspective3474" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 526.18109 : 1" + sodipodi:type="inkscape:persp3d" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4325" + id="radialGradient4359" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,-52.447261,-106.14795)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient5015" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,42.720075,-107.89847)" + spreadMethod="pad" + cx="22.276291" + cy="21.520338" + fx="22.276291" + fy="21.520338" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient5062" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,98.720075,-107.89847)" + spreadMethod="pad" + cx="22.276291" + cy="21.520338" + fx="22.276291" + fy="21.520338" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4325" + id="radialGradient5064" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,98.720075,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4389" + id="radialGradient5110" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,142.72007,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4389" + id="radialGradient3863" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,92.720075,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4389" + id="radialGradient3865" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,92.720075,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4389" + id="radialGradient3906" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,92.720075,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3345" + id="radialGradient5554" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,97.725459,40.419065)" + spreadMethod="pad" + cx="22.276291" + cy="21.520338" + fx="22.276291" + fy="21.520338" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient8512" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,97.72545,40.294064)" + spreadMethod="reflect" + cx="22.276291" + cy="21.520338" + fx="22.276291" + fy="21.520338" + r="20.319138" /> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + gridtolerance="10000" + guidetolerance="10" + objecttolerance="10" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="1" + inkscape:cx="126.80533" + inkscape:cy="41.532441" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="false" + inkscape:snap-global="false" + inkscape:window-width="1680" + inkscape:window-height="1028" + inkscape:window-x="-12" + inkscape:window-y="0" + showguides="false" + inkscape:guide-bbox="true"> + <inkscape:grid + type="xygrid" + id="grid2653" + visible="true" + enabled="true" + color="#ff00ff" + opacity="0.1254902" + empcolor="#0000f2" + empopacity="0.25098039" /> + <sodipodi:guide + orientation="1,0" + position="23.969062,28.50558" + id="guide3488" /> + <sodipodi:guide + orientation="0,1" + position="-14.142136,73.185552" + id="guide3490" /> + <sodipodi:guide + orientation="1,0" + position="-21,-23.25" + id="guide5857" /> + <sodipodi:guide + orientation="1,0" + position="-49.5,-22.625" + id="guide5859" /> + </sodipodi:namedview> + <metadata + id="metadata2648"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <cc:license + rdf:resource="" /> + <dc:subject> + <rdf:Bag> + <rdf:li>audio</rdf:li> + <rdf:li>device</rdf:li> + <rdf:li>speaker</rdf:li> + <rdf:li>output</rdf:li> + <rdf:li>right-side</rdf:li> + <rdf:li>testing</rdf:li> + <rdf:li>highlighted</rdf:li> + </rdf:Bag> + </dc:subject> + <dc:title>audio-speaker-right-side-testing</dc:title> + <dc:creator> + <cc:Agent> + <dc:title>Evangeline McGlynn</dc:title> + </cc:Agent> + </dc:creator> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <g + id="g8490" + transform="matrix(0,-1,-1,0,47.958369,98.334601)"> + <path + sodipodi:nodetypes="ccccc" + id="path8492" + d="M 64.325669,10.506413 C 70.397099,7.0242733 77.468529,7.1135633 83.718529,10.506413 L 85.718529,14.899273 L 62.325669,14.899273 L 64.325669,10.506413 z" + style="fill:#729fcf;fill-opacity:1;fill-rule:nonzero;stroke:#2e3436;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> + <path + sodipodi:nodetypes="csssccsssc" + d="M 95.897099,27.934983 C 95.897099,27.934983 91.349669,19.248213 86.035799,14.995723 C 85.825169,14.827163 85.613329,14.665563 85.400529,14.511753 C 84.898489,14.148893 84.391069,13.829363 83.881339,13.563883 C 83.312379,13.267543 82.740559,13.038553 82.170169,12.891833 C 78.286959,11.872493 70.453649,11.829343 66.580509,12.845703 C 65.740619,13.064843 64.898909,13.457433 64.068479,13.977613 C 63.443239,14.369273 62.824389,14.833253 62.217529,15.349973 C 60.346409,16.943173 58.58922,19.037813 57.10976,21.059983 C 54.51317,24.609093 52.7721,27.934983 52.7721,27.934983" + style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + id="path8494" /> + <path + style="fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#bfd8f3;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="M 62.827469,15.979023 L 65.014509,11.213023 C 70.275566,8.4697433 76.234822,7.8458533 82.953572,11.207463 L 84.922082,15.410963" + id="path8496" + sodipodi:nodetypes="cccc" /> + <path + sodipodi:nodetypes="cccc" + d="M 95.001579,28.523883 C 95.001579,28.523883 88.693549,15.595313 81.930899,13.855723 C 78.047689,12.836393 70.745629,12.793243 66.872489,13.809593 C 60.028369,15.595313 55.03283,26.273883 55.03283,26.273883" + style="fill:#729fcf;fill-opacity:1;fill-rule:evenodd;stroke:#bfd8f3;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + id="path8498" /> + <path + transform="matrix(1.0469083,0,0,2.027027,51.01285,-35.409607)" + d="M 43.214285,32.24107 A 20.9375,4.9553571 0 1 1 1.3392849,32.24107 A 20.9375,4.9553571 0 1 1 43.214285,32.24107 z" + sodipodi:ry="4.9553571" + sodipodi:rx="20.9375" + sodipodi:cy="32.24107" + sodipodi:cx="22.276785" + id="path8500" + style="fill:#eeeeec;fill-opacity:1;fill-rule:nonzero;stroke:#2e3436;stroke-width:0.68646109;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + sodipodi:type="arc" /> + <path + sodipodi:nodetypes="ccccc" + id="path8502" + d="M 95.16001,29.859216 C 95.34941,34.267437 86.35016,38.925273 74.250517,38.925273 C 62.150874,38.925273 53.120056,34.330572 53.341027,29.859216 C 53.151624,25.29316 62.150874,20.824727 74.250517,20.824727 C 86.35016,20.824727 95.19158,25.198457 95.16001,29.859216 z" + style="fill:url(#radialGradient8512);fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> + <path + style="fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#555753;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="M 82.142459,27.943913 C 81.468389,30.131673 78.852759,31.329293 74.334599,31.329293 C 69.816449,31.329293 66.985899,29.952123 66.526739,27.943913 C 66.456009,26.238893 69.816449,24.570323 74.334599,24.570323 C 78.852759,24.570323 82.154249,26.203533 82.142459,27.943913 z" + id="path8504" + sodipodi:nodetypes="ccccc" /> + <path + style="fill:#729fcf;fill-opacity:1;fill-rule:nonzero;stroke:#204a87;stroke-width:0.96596354;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="M 67.476989,27.764793 C 68.447389,30.844053 71.145969,33.060833 74.320419,33.060843 C 77.514539,33.060843 80.226899,30.816463 81.181699,27.707393 C 80.281059,26.206763 76.900529,25.470543 74.291089,25.513813 C 70.986749,25.428073 68.434609,26.373493 67.476989,27.764793 z" + id="path8506" + sodipodi:nodetypes="csccc" + inkscape:export-filename="/Users/eve/Documents/MATE/SpeakerIcon_Test.png" + inkscape:export-xdpi="67.489998" + inkscape:export-ydpi="67.489998" /> + <path + id="path8508" + style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#2e3436;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="M 62.722179,14.847493 C 62.595139,14.950093 62.343579,15.242643 62.217529,15.349973 C 60.346409,16.943173 58.58922,19.037813 57.10976,21.059983 C 54.51317,24.609093 52.7721,27.934983 52.7721,27.934983 M 95.897099,27.934983 C 95.897099,27.934983 91.349669,19.248213 86.035799,14.995723 C 85.825169,14.827163 85.613329,14.665563 85.400529,14.511753 C 85.300009,14.439103 84.752372,14.219223 84.651452,14.150133" + sodipodi:nodetypes="cssccsss" /> + <path + id="path8510" + style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#bfd8f3;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="M 81.930899,13.855723 C 78.047689,12.836393 70.745629,12.793243 66.872489,13.809593" + sodipodi:nodetypes="cc" /> + </g> + </g> +</svg> diff --git a/mate-volume-control/data/icons/scalable/devices/audio-speaker-right-side.svg b/mate-volume-control/data/icons/scalable/devices/audio-speaker-right-side.svg new file mode 100644 index 0000000..be6a746 --- /dev/null +++ b/mate-volume-control/data/icons/scalable/devices/audio-speaker-right-side.svg @@ -0,0 +1,504 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="48" + height="48" + id="svg2643" + sodipodi:version="0.32" + inkscape:version="0.46" + version="1.0" + sodipodi:docname="audio-speaker-right-side.svg" + inkscape:output_extension="org.inkscape.output.svg.inkscape" + inkscape:export-filename="/Users/eve/Documents/MATE/audio-speaker-right-back.png" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90"> + <defs + id="defs2645"> + <linearGradient + id="linearGradient4389"> + <stop + style="stop-color:#555753;stop-opacity:1;" + offset="0" + id="stop4391" /> + <stop + id="stop4393" + offset="1" + style="stop-color:#eeeeec;stop-opacity:1;" /> + </linearGradient> + <linearGradient + id="linearGradient4325"> + <stop + id="stop4327" + offset="0" + style="stop-color:#2e3436;stop-opacity:1;" /> + <stop + style="stop-color:#eeeeec;stop-opacity:1;" + offset="1" + id="stop4329" /> + </linearGradient> + <linearGradient + id="linearGradient21608"> + <stop + style="stop-color:#888a85;stop-opacity:1" + offset="0" + id="stop21610" /> + <stop + style="stop-color:#2e3436;stop-opacity:1" + offset="1" + id="stop21612" /> + </linearGradient> + <linearGradient + id="linearGradient15341"> + <stop + style="stop-color:#888a85;stop-opacity:1" + offset="0" + id="stop15343" /> + <stop + style="stop-color:#555753;stop-opacity:1" + offset="1" + id="stop15345" /> + </linearGradient> + <linearGradient + id="linearGradient6371"> + <stop + style="stop-color:#888a85;stop-opacity:1" + offset="0" + id="stop6373" /> + <stop + style="stop-color:#d3d7cf;stop-opacity:1;" + offset="1" + id="stop6375" /> + </linearGradient> + <linearGradient + id="linearGradient10872"> + <stop + id="stop10874" + offset="0" + style="stop-color:#888a85;stop-opacity:1" /> + <stop + style="stop-color:#9e9e92;stop-opacity:1;" + offset="0.25301206" + id="stop10876" /> + <stop + id="stop10878" + offset="1" + style="stop-color:#555753;stop-opacity:1" /> + </linearGradient> + <linearGradient + id="linearGradient5254"> + <stop + id="stop5256" + offset="0" + style="stop-color:#707469;stop-opacity:1;" /> + <stop + id="stop5258" + offset="1" + style="stop-color:#2e3335;stop-opacity:1;" /> + </linearGradient> + <linearGradient + id="linearGradient10055"> + <stop + style="stop-color:#bebebe;stop-opacity:1;" + offset="0" + id="stop10057" /> + <stop + id="stop10061" + offset="0.375" + style="stop-color:#e8e8e8;stop-opacity:1;" /> + <stop + style="stop-color:#5c5c5c;stop-opacity:1;" + offset="1" + id="stop10059" /> + </linearGradient> + <linearGradient + id="linearGradient4841"> + <stop + id="stop4843" + offset="0" + style="stop-color:#babdb6;stop-opacity:1;" /> + <stop + style="stop-color:#fcaf3e;stop-opacity:0.94117647;" + offset="0" + id="stop4845" /> + <stop + id="stop4847" + offset="1" + style="stop-color:#babdb6;stop-opacity:1;" /> + <stop + style="stop-color:#eeeeec;stop-opacity:1;" + offset="1" + id="stop4849" /> + </linearGradient> + <linearGradient + id="linearGradient4809"> + <stop + style="stop-color:#babdb6;stop-opacity:1;" + offset="0" + id="stop4811" /> + <stop + id="stop4813" + offset="0" + style="stop-color:#ad7fa8;stop-opacity:1;" /> + <stop + style="stop-color:#babdb6;stop-opacity:1;" + offset="1" + id="stop4815" /> + <stop + id="stop4817" + offset="1" + style="stop-color:#eeeeec;stop-opacity:1;" /> + </linearGradient> + <linearGradient + id="linearGradient3345"> + <stop + id="stop3347" + offset="0" + style="stop-color:#babdb6;stop-opacity:1;" /> + <stop + style="stop-color:#729fcf;stop-opacity:1;" + offset="0" + id="stop3351" /> + <stop + id="stop3355" + offset="1" + style="stop-color:#babdb6;stop-opacity:1;" /> + <stop + style="stop-color:#eeeeec;stop-opacity:1;" + offset="1" + id="stop3349" /> + </linearGradient> + <linearGradient + id="linearGradient3223"> + <stop + style="stop-color:#eeeeec;stop-opacity:1;" + offset="0" + id="stop3225" /> + <stop + style="stop-color:#babdb6;stop-opacity:1;" + offset="1" + id="stop3227" /> + </linearGradient> + <linearGradient + id="linearGradient3503"> + <stop + style="stop-color:#babdb6;stop-opacity:1;" + offset="0" + id="stop3239" /> + <stop + id="stop3507" + offset="1" + style="stop-color:#eeeeec;stop-opacity:1;" /> + </linearGradient> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + id="perspective2651" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient3501" + cx="22.276291" + cy="32.248856" + fx="22.276291" + fy="32.248856" + r="20.319138" + gradientTransform="matrix(1,0,0,0.2366258,0,24.617945)" + gradientUnits="userSpaceOnUse" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient3500" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.2366258,0,24.617945)" + cx="22.276291" + cy="32.248856" + fx="22.276291" + fy="32.248856" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient3232" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,47.474934,42.420392)" + cx="22.276291" + cy="21.520338" + fx="22.276291" + fy="21.520338" + r="20.319138" + spreadMethod="reflect" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient5689" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0469084,0,0,0.4796469,270.37856,38.427671)" + cx="22.276291" + cy="32.248856" + fx="22.276291" + fy="32.248856" + r="20.319138" /> + <inkscape:perspective + id="perspective3474" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 526.18109 : 1" + sodipodi:type="inkscape:persp3d" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4325" + id="radialGradient4359" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,-52.447261,-106.14795)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient5015" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,42.720075,-107.89847)" + spreadMethod="pad" + cx="22.276291" + cy="21.520338" + fx="22.276291" + fy="21.520338" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient5062" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,98.720075,-107.89847)" + spreadMethod="pad" + cx="22.276291" + cy="21.520338" + fx="22.276291" + fy="21.520338" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4325" + id="radialGradient5064" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,98.720075,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4389" + id="radialGradient5110" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,142.72007,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4389" + id="radialGradient3863" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,92.720075,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4389" + id="radialGradient3865" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,92.720075,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4389" + id="radialGradient3906" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,92.720075,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4389" + id="radialGradient7260" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,47.516569,40.378763)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + gridtolerance="10000" + guidetolerance="10" + objecttolerance="10" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="5.6568542" + inkscape:cx="-15.988037" + inkscape:cy="20.556657" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="false" + inkscape:snap-global="false" + inkscape:window-width="1601" + inkscape:window-height="942" + inkscape:window-x="5" + inkscape:window-y="1" + showguides="false" + inkscape:guide-bbox="true"> + <inkscape:grid + type="xygrid" + id="grid2653" + visible="true" + enabled="true" + color="#ff00ff" + opacity="0.1254902" + empcolor="#0000f2" + empopacity="0.25098039" /> + <sodipodi:guide + orientation="1,0" + position="23.969062,28.50558" + id="guide3488" /> + <sodipodi:guide + orientation="0,1" + position="17.401268,34.125445" + id="guide3490" /> + </sodipodi:namedview> + <metadata + id="metadata2648"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <cc:license + rdf:resource="" /> + <dc:subject> + <rdf:Bag> + <rdf:li>audio</rdf:li> + <rdf:li>device</rdf:li> + <rdf:li>speaker</rdf:li> + <rdf:li>output</rdf:li> + <rdf:li>right-side</rdf:li> + </rdf:Bag> + </dc:subject> + <dc:title>audio-speaker-right-side</dc:title> + <dc:creator> + <cc:Agent> + <dc:title>Evangeline McGlynn</dc:title> + </cc:Agent> + </dc:creator> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <g + id="g7248" + transform="matrix(0,-1,-1,0,47.958369,48.041631)"> + <path + sodipodi:nodetypes="ccccc" + id="path5365" + d="M 14.032699,10.506413 C 20.104129,7.0242733 27.175559,7.1135633 33.425559,10.506413 L 35.425559,14.899273 L 12.032699,14.899273 L 14.032699,10.506413 z" + style="fill:#babdb6;fill-opacity:1;fill-rule:nonzero;stroke:#2e3436;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> + <path + sodipodi:nodetypes="csssccsssc" + d="M 45.604129,27.934983 C 45.604129,27.934983 41.056699,19.248213 35.742829,14.995723 C 35.532199,14.827163 35.320359,14.665563 35.107559,14.511753 C 34.605519,14.148893 34.098099,13.829363 33.588369,13.563883 C 33.019409,13.267543 32.447589,13.038553 31.877199,12.891833 C 27.993989,11.872493 20.160679,11.829343 16.287539,12.845703 C 15.447649,13.064843 14.605939,13.457433 13.775509,13.977613 C 13.150269,14.369273 12.531419,14.833253 11.924559,15.349973 C 10.053439,16.943173 8.2962496,19.037813 6.8167896,21.059983 C 4.2201996,24.609093 2.4791296,27.934983 2.4791296,27.934983" + style="fill:#babdb6;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + id="path5367" /> + <path + style="fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#888a83;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="M 12.534499,15.979023 L 14.721539,11.213023 C 19.982596,8.4697433 25.941852,7.8458533 32.660602,11.207463 L 34.629112,15.410963" + id="path5369" + sodipodi:nodetypes="cccc" /> + <path + sodipodi:nodetypes="cccc" + d="M 44.708609,28.523883 C 44.708609,28.523883 38.400579,15.595313 31.637929,13.855723 C 27.754719,12.836393 20.452659,12.793243 16.579519,13.809593 C 9.7353992,15.595313 4.7398596,26.273883 4.7398596,26.273883" + style="fill:#555753;fill-opacity:1;fill-rule:evenodd;stroke:#888a85;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + id="path5371" /> + <path + transform="matrix(1.0469083,0,0,2.027027,0.7198796,-35.409607)" + d="M 43.214285,32.24107 A 20.9375,4.9553571 0 1 1 1.3392849,32.24107 A 20.9375,4.9553571 0 1 1 43.214285,32.24107 z" + sodipodi:ry="4.9553571" + sodipodi:rx="20.9375" + sodipodi:cy="32.24107" + sodipodi:cx="22.276785" + id="path5373" + style="fill:#eeeeec;fill-opacity:1;fill-rule:nonzero;stroke:#2e3436;stroke-width:0.68646109;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + sodipodi:type="arc" /> + <path + style="fill:url(#radialGradient7260);fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="M 44.951119,29.943913 C 45.140529,34.352133 36.141269,39.009973 24.041629,39.009973 C 11.941989,39.009973 2.9111696,34.415273 3.1321396,29.943913 C 2.9427396,25.377853 11.941989,20.909423 24.041629,20.909423 C 36.141269,20.909423 44.982689,25.283153 44.951119,29.943913 z" + id="path5375" + sodipodi:nodetypes="ccccc" /> + <path + style="fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#555753;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="M 31.849489,27.943913 C 31.175419,30.131673 28.559789,31.329293 24.041629,31.329293 C 19.523479,31.329293 16.692929,29.952123 16.233769,27.943913 C 16.163039,26.238893 19.523479,24.570323 24.041629,24.570323 C 28.559789,24.570323 31.861279,26.203533 31.849489,27.943913 z" + id="path5377" + sodipodi:nodetypes="ccccc" /> + <path + style="fill:#555753;fill-opacity:1;fill-rule:nonzero;stroke:#2e3436;stroke-width:0.96596354;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="M 17.184019,27.764793 C 18.154419,30.844053 20.852999,33.060833 24.027449,33.060843 C 27.221569,33.060843 29.933929,30.816463 30.888729,27.707393 C 29.988089,26.206763 26.607559,25.470543 23.998119,25.513813 C 20.693779,25.428073 18.141639,26.373493 17.184019,27.764793 z" + id="path5379" + sodipodi:nodetypes="csccc" + inkscape:export-filename="/Users/eve/Documents/MATE/SpeakerIcon_Test.png" + inkscape:export-xdpi="67.489998" + inkscape:export-ydpi="67.489998" /> + <path + id="path5381" + style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#2e3436;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="M 12.429209,14.847493 C 12.302169,14.950093 12.050609,15.242643 11.924559,15.349973 C 10.053439,16.943173 8.2962496,19.037813 6.8167896,21.059983 C 4.2201996,24.609093 2.4791296,27.934983 2.4791296,27.934983 M 45.604129,27.934983 C 45.604129,27.934983 41.056699,19.248213 35.742829,14.995723 C 35.532199,14.827163 35.320359,14.665563 35.107559,14.511753 C 35.007039,14.439103 34.459402,14.219223 34.358482,14.150133" + sodipodi:nodetypes="cssccsss" /> + <path + id="path5383" + style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#888a85;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="M 31.637929,13.855723 C 27.754719,12.836393 20.452659,12.793243 16.579519,13.809593" + sodipodi:nodetypes="cc" /> + </g> + </g> +</svg> diff --git a/mate-volume-control/data/icons/scalable/devices/audio-speaker-right-testing.svg b/mate-volume-control/data/icons/scalable/devices/audio-speaker-right-testing.svg new file mode 100644 index 0000000..3a4e903 --- /dev/null +++ b/mate-volume-control/data/icons/scalable/devices/audio-speaker-right-testing.svg @@ -0,0 +1,913 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="48" + height="48" + id="svg2643" + sodipodi:version="0.32" + inkscape:version="0.46" + version="1.0" + sodipodi:docname="audio-speaker-right-testing.svg" + inkscape:output_extension="org.inkscape.output.svg.inkscape" + inkscape:export-filename="/Users/eve/Documents/MATE/audio-speaker-right-testing.png" + inkscape:export-xdpi="67.489998" + inkscape:export-ydpi="67.489998"> + <defs + id="defs2645"> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient6377" + id="radialGradient5941" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(11.322482,0,0,3.7410569,-790.12434,122.56351)" + cx="14.790665" + cy="29.860626" + fx="14.790665" + fy="29.860626" + r="1.1399525" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient6377" + id="radialGradient5939" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(10.171038,0,0,5.2502725,-797.43964,77.21735)" + cx="17.797972" + cy="29.948833" + fx="17.797972" + fy="29.948833" + r="1.945146" /> + <linearGradient + inkscape:collect="always" + id="linearGradient6377"> + <stop + style="stop-color:#729fcf;stop-opacity:1" + offset="0" + id="stop6379" /> + <stop + style="stop-color:#204a87;stop-opacity:1" + offset="1" + id="stop6381" /> + </linearGradient> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient6377" + id="radialGradient5937" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(15.4058,0,0,6.5714191,-930.81786,37.58535)" + cx="20.818829" + cy="29.948536" + fx="20.818829" + fy="29.948536" + r="2.5451017" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient5254" + id="linearGradient5935" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(2.0714931,0,0,1.2212999,-677.47231,206.91558)" + x1="21.875" + y1="9.6335878" + x2="20.5" + y2="41.744865" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient10055" + id="linearGradient5933" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(2.0714931,0,0,1.2212999,-677.47231,206.91558)" + x1="20.087172" + y1="6.6629219" + x2="20.91938" + y2="38.337017" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient5254" + id="linearGradient5931" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.6831088,0,0,1.0329054,-652.67404,212.26374)" + x1="4.5961943" + y1="14.456622" + x2="4.5961943" + y2="30.313524" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient10055" + id="linearGradient5929" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.7679166,0,0,1.687933,-652.72155,185.35433)" + x1="2.6850162" + y1="24.367676" + x2="2.9248238" + y2="35.053852" /> + <linearGradient + inkscape:collect="always" + id="linearGradient21582"> + <stop + style="stop-color:black;stop-opacity:1;" + offset="0" + id="stop21584" /> + <stop + style="stop-color:black;stop-opacity:0;" + offset="1" + id="stop21586" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient21582" + id="linearGradient5927" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.0102994,0,0,1.2565202,-654.12827,206.16954)" + x1="21.875" + y1="26.625" + x2="18.187626" + y2="26" /> + <linearGradient + inkscape:collect="always" + id="linearGradient21598"> + <stop + style="stop-color:white;stop-opacity:1;" + offset="0" + id="stop21600" /> + <stop + style="stop-color:white;stop-opacity:0;" + offset="1" + id="stop21602" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient21598" + id="linearGradient5925" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.7830101,0,0,0.9810567,-652.01527,212.32101)" + x1="12.25" + y1="19.75" + x2="10.875" + y2="33.125" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient10055" + id="radialGradient5923" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.433087,-0.596698,0.798238,1.917124,-20.96864,-16.43019)" + cx="7.001297" + cy="22.470087" + fx="7.001297" + fy="22.470087" + r="6.4940691" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient10872" + id="linearGradient5921" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.0102994,0,0,1.0172401,-654.21562,212.46274)" + x1="3.8890872" + y1="18.937069" + x2="3.8890872" + y2="25.947107" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient5254" + id="linearGradient5919" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.99664,0,0,1.1932745,-655.42965,207.54612)" + x1="11.875" + y1="20.375" + x2="13.125" + y2="34.13559" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient6371" + id="linearGradient5917" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.99664,0,0,1.1932745,-655.42965,207.54612)" + x1="14.241117" + y1="26.996773" + x2="15.125" + y2="20.976084" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient21608" + id="linearGradient5915" + gradientUnits="userSpaceOnUse" + x1="23.272787" + y1="18.525478" + x2="23.272787" + y2="22.811184" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient15341" + id="radialGradient5913" + gradientUnits="userSpaceOnUse" + cx="22.624176" + cy="20.880224" + fx="22.624176" + fy="20.880224" + r="3.3177083" /> + <linearGradient + id="linearGradient3529"> + <stop + id="stop3531" + offset="0" + style="stop-color:#fefefe;stop-opacity:1;" /> + <stop + id="stop3533" + offset="1" + style="stop-color:#e8e7e6;stop-opacity:1;" /> + </linearGradient> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3529" + id="radialGradient5911" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.2876712,0,13.845354)" + cx="7.9549513" + cy="19.436747" + fx="7.9549513" + fy="19.436747" + r="6.4523492" /> + <linearGradient + id="linearGradient4389"> + <stop + style="stop-color:#555753;stop-opacity:1;" + offset="0" + id="stop4391" /> + <stop + id="stop4393" + offset="1" + style="stop-color:#eeeeec;stop-opacity:1;" /> + </linearGradient> + <linearGradient + id="linearGradient4325"> + <stop + id="stop4327" + offset="0" + style="stop-color:#2e3436;stop-opacity:1;" /> + <stop + style="stop-color:#eeeeec;stop-opacity:1;" + offset="1" + id="stop4329" /> + </linearGradient> + <linearGradient + id="linearGradient21608"> + <stop + style="stop-color:#888a85;stop-opacity:1" + offset="0" + id="stop21610" /> + <stop + style="stop-color:#2e3436;stop-opacity:1" + offset="1" + id="stop21612" /> + </linearGradient> + <linearGradient + id="linearGradient15341"> + <stop + style="stop-color:#888a85;stop-opacity:1" + offset="0" + id="stop15343" /> + <stop + style="stop-color:#555753;stop-opacity:1" + offset="1" + id="stop15345" /> + </linearGradient> + <linearGradient + id="linearGradient6371"> + <stop + style="stop-color:#888a85;stop-opacity:1" + offset="0" + id="stop6373" /> + <stop + style="stop-color:#d3d7cf;stop-opacity:1;" + offset="1" + id="stop6375" /> + </linearGradient> + <linearGradient + id="linearGradient10872"> + <stop + id="stop10874" + offset="0" + style="stop-color:#888a85;stop-opacity:1" /> + <stop + style="stop-color:#9e9e92;stop-opacity:1;" + offset="0.25301206" + id="stop10876" /> + <stop + id="stop10878" + offset="1" + style="stop-color:#555753;stop-opacity:1" /> + </linearGradient> + <linearGradient + id="linearGradient5254"> + <stop + id="stop5256" + offset="0" + style="stop-color:#707469;stop-opacity:1;" /> + <stop + id="stop5258" + offset="1" + style="stop-color:#2e3335;stop-opacity:1;" /> + </linearGradient> + <linearGradient + id="linearGradient10055"> + <stop + style="stop-color:#bebebe;stop-opacity:1;" + offset="0" + id="stop10057" /> + <stop + id="stop10061" + offset="0.375" + style="stop-color:#e8e8e8;stop-opacity:1;" /> + <stop + style="stop-color:#5c5c5c;stop-opacity:1;" + offset="1" + id="stop10059" /> + </linearGradient> + <linearGradient + id="linearGradient4841"> + <stop + id="stop4843" + offset="0" + style="stop-color:#babdb6;stop-opacity:1;" /> + <stop + style="stop-color:#fcaf3e;stop-opacity:0.94117647;" + offset="0" + id="stop4845" /> + <stop + id="stop4847" + offset="1" + style="stop-color:#babdb6;stop-opacity:1;" /> + <stop + style="stop-color:#eeeeec;stop-opacity:1;" + offset="1" + id="stop4849" /> + </linearGradient> + <linearGradient + id="linearGradient4809"> + <stop + style="stop-color:#babdb6;stop-opacity:1;" + offset="0" + id="stop4811" /> + <stop + id="stop4813" + offset="0" + style="stop-color:#ad7fa8;stop-opacity:1;" /> + <stop + style="stop-color:#babdb6;stop-opacity:1;" + offset="1" + id="stop4815" /> + <stop + id="stop4817" + offset="1" + style="stop-color:#eeeeec;stop-opacity:1;" /> + </linearGradient> + <linearGradient + id="linearGradient3345"> + <stop + id="stop3347" + offset="0" + style="stop-color:#babdb6;stop-opacity:1;" /> + <stop + style="stop-color:#729fcf;stop-opacity:1;" + offset="0" + id="stop3351" /> + <stop + id="stop3355" + offset="1" + style="stop-color:#babdb6;stop-opacity:1;" /> + <stop + style="stop-color:#eeeeec;stop-opacity:1;" + offset="1" + id="stop3349" /> + </linearGradient> + <linearGradient + id="linearGradient3223"> + <stop + style="stop-color:#eeeeec;stop-opacity:1;" + offset="0" + id="stop3225" /> + <stop + style="stop-color:#babdb6;stop-opacity:1;" + offset="1" + id="stop3227" /> + </linearGradient> + <linearGradient + id="linearGradient3503"> + <stop + style="stop-color:#babdb6;stop-opacity:1;" + offset="0" + id="stop3239" /> + <stop + id="stop3507" + offset="1" + style="stop-color:#eeeeec;stop-opacity:1;" /> + </linearGradient> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + id="perspective2651" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient3501" + cx="22.276291" + cy="32.248856" + fx="22.276291" + fy="32.248856" + r="20.319138" + gradientTransform="matrix(1,0,0,0.2366258,0,24.617945)" + gradientUnits="userSpaceOnUse" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient3500" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.2366258,0,24.617945)" + cx="22.276291" + cy="32.248856" + fx="22.276291" + fy="32.248856" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient3232" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,47.474934,42.420392)" + cx="22.276291" + cy="21.520338" + fx="22.276291" + fy="21.520338" + r="20.319138" + spreadMethod="reflect" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient5689" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0469084,0,0,0.4796469,270.37856,38.427671)" + cx="22.276291" + cy="32.248856" + fx="22.276291" + fy="32.248856" + r="20.319138" /> + <inkscape:perspective + id="perspective3474" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 526.18109 : 1" + sodipodi:type="inkscape:persp3d" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4325" + id="radialGradient4359" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,-52.447261,-106.14795)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient5015" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,42.720075,-107.89847)" + spreadMethod="pad" + cx="22.276291" + cy="21.520338" + fx="22.276291" + fy="21.520338" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient5062" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,98.720075,-107.89847)" + spreadMethod="pad" + cx="22.276291" + cy="21.520338" + fx="22.276291" + fy="21.520338" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4325" + id="radialGradient5064" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,98.720075,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4389" + id="radialGradient5110" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,142.72007,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4389" + id="radialGradient3863" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,92.720075,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4389" + id="radialGradient3865" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,92.720075,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4389" + id="radialGradient3906" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,92.720075,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3345" + id="radialGradient5554" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,97.725459,40.419065)" + spreadMethod="pad" + cx="22.276291" + cy="21.520338" + fx="22.276291" + fy="21.520338" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient8512" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,97.72545,40.294064)" + spreadMethod="reflect" + cx="22.276291" + cy="21.520338" + fx="22.276291" + fy="21.520338" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3529" + id="radialGradient5708" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.2876712,0,13.845354)" + cx="7.9549513" + cy="19.436747" + fx="7.9549513" + fy="19.436747" + r="6.4523492" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient15341" + id="radialGradient5710" + gradientUnits="userSpaceOnUse" + cx="22.624176" + cy="20.880224" + fx="22.624176" + fy="20.880224" + r="3.3177083" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient21608" + id="linearGradient5712" + gradientUnits="userSpaceOnUse" + x1="23.272787" + y1="18.525478" + x2="23.272787" + y2="22.811184" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient10055" + id="radialGradient5720" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.433087,-0.596698,0.798238,1.917124,-20.96864,-16.43019)" + cx="7.001297" + cy="22.470087" + fx="7.001297" + fy="22.470087" + r="6.4940691" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient6377" + id="radialGradient5744" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-8.0062038,8.0062038,-2.6453267,-2.6453267,292.61535,-42.156174)" + cx="14.790665" + cy="29.860626" + fx="14.790665" + fy="29.860626" + r="1.1399525" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient6377" + id="radialGradient5747" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-7.1920099,7.1920099,-3.7125033,-3.7125033,329.85262,-15.264295)" + cx="17.797972" + cy="29.948833" + fx="17.797972" + fy="29.948833" + r="1.945146" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient6377" + id="radialGradient5750" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-10.893546,10.893546,-4.646695,-4.646695,452.18932,-81.552883)" + cx="20.818829" + cy="29.948536" + fx="20.818829" + fy="29.948536" + r="2.5451017" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient10055" + id="linearGradient5753" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(2.0714931,0,0,1.2212999,31.77769,-26.9466)" + x1="20.087172" + y1="6.6629219" + x2="20.91938" + y2="38.337017" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient5254" + id="linearGradient5755" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(2.0714931,0,0,1.2212999,31.77769,-26.9466)" + x1="21.875" + y1="9.6335878" + x2="20.5" + y2="41.744865" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient10055" + id="linearGradient5758" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.7679166,0,0,1.687933,56.52845,-48.50785)" + x1="2.6850162" + y1="24.367676" + x2="2.9248238" + y2="35.053852" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient5254" + id="linearGradient5760" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.6831088,0,0,1.0329054,56.57596,-21.59844)" + x1="4.5961943" + y1="14.456622" + x2="4.5961943" + y2="30.313524" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient21582" + id="linearGradient5763" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.0102994,0,0,1.2565202,55.12173,-27.69264)" + x1="21.875" + y1="26.625" + x2="18.187626" + y2="26" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient21598" + id="linearGradient5766" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.7830101,0,0,0.9810567,57.23473,-21.54117)" + x1="12.25" + y1="19.75" + x2="10.875" + y2="33.125" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient10872" + id="linearGradient5770" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.0102994,0,0,1.0172401,55.03438,-21.39944)" + x1="3.8890872" + y1="18.937069" + x2="3.8890872" + y2="25.947107" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient6371" + id="linearGradient5773" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.99664,0,0,1.1932745,53.82035,-26.31606)" + x1="14.241117" + y1="26.996773" + x2="15.125" + y2="20.976084" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient5254" + id="linearGradient5775" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.99664,0,0,1.1932745,53.82035,-26.31606)" + x1="11.875" + y1="20.375" + x2="13.125" + y2="34.13559" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient5928" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,97.72545,40.294064)" + spreadMethod="reflect" + cx="22.276291" + cy="21.520338" + fx="22.276291" + fy="21.520338" + r="20.319138" /> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + gridtolerance="10000" + guidetolerance="10" + objecttolerance="10" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="1" + inkscape:cx="126.80533" + inkscape:cy="41.532441" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="false" + inkscape:snap-global="false" + inkscape:window-width="1680" + inkscape:window-height="1028" + inkscape:window-x="-12" + inkscape:window-y="0" + showguides="false" + inkscape:guide-bbox="true"> + <inkscape:grid + type="xygrid" + id="grid2653" + visible="true" + enabled="true" + color="#ff00ff" + opacity="0.1254902" + empcolor="#0000f2" + empopacity="0.25098039" /> + <sodipodi:guide + orientation="1,0" + position="23.969062,28.50558" + id="guide3488" /> + <sodipodi:guide + orientation="0,1" + position="-14.142136,73.185552" + id="guide3490" /> + <sodipodi:guide + orientation="1,0" + position="-21,-23.25" + id="guide5857" /> + <sodipodi:guide + orientation="1,0" + position="-49.5,-22.625" + id="guide5859" /> + </sodipodi:namedview> + <metadata + id="metadata2648"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <cc:license + rdf:resource="" /> + <dc:subject> + <rdf:Bag> + <rdf:li>audio</rdf:li> + <rdf:li>device</rdf:li> + <rdf:li>speaker</rdf:li> + <rdf:li>output</rdf:li> + <rdf:li>right</rdf:li> + <rdf:li>testing</rdf:li> + <rdf:li>highlighted</rdf:li> + </rdf:Bag> + </dc:subject> + <dc:title>audio-speaker-right-testing</dc:title> + <dc:creator> + <cc:Agent> + <dc:title>Evangeline McGlynn</dc:title> + </cc:Agent> + </dc:creator> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <g + id="g8490" + transform="matrix(0.7071068,0.7071068,-0.7071068,0.7071068,-9.0528759,-47.851156)"> + <path + sodipodi:nodetypes="ccccc" + id="path8492" + d="M 64.325669,10.506413 C 70.397099,7.0242733 77.468529,7.1135633 83.718529,10.506413 L 85.718529,14.899273 L 62.325669,14.899273 L 64.325669,10.506413 z" + style="fill:#729fcf;fill-opacity:1;fill-rule:nonzero;stroke:#2e3436;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> + <path + sodipodi:nodetypes="csssccsssc" + d="M 95.897099,27.934983 C 95.897099,27.934983 91.349669,19.248213 86.035799,14.995723 C 85.825169,14.827163 85.613329,14.665563 85.400529,14.511753 C 84.898489,14.148893 84.391069,13.829363 83.881339,13.563883 C 83.312379,13.267543 82.740559,13.038553 82.170169,12.891833 C 78.286959,11.872493 70.453649,11.829343 66.580509,12.845703 C 65.740619,13.064843 64.898909,13.457433 64.068479,13.977613 C 63.443239,14.369273 62.824389,14.833253 62.217529,15.349973 C 60.346409,16.943173 58.58922,19.037813 57.10976,21.059983 C 54.51317,24.609093 52.7721,27.934983 52.7721,27.934983" + style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + id="path8494" /> + <path + style="fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#bfd8f3;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="M 62.827469,15.979023 L 65.014509,11.213023 C 70.275566,8.4697433 76.234822,7.8458533 82.953572,11.207463 L 84.922082,15.410963" + id="path8496" + sodipodi:nodetypes="cccc" /> + <path + sodipodi:nodetypes="cccc" + d="M 95.001579,28.523883 C 95.001579,28.523883 88.693549,15.595313 81.930899,13.855723 C 78.047689,12.836393 70.745629,12.793243 66.872489,13.809593 C 60.028369,15.595313 55.03283,26.273883 55.03283,26.273883" + style="fill:#729fcf;fill-opacity:1;fill-rule:evenodd;stroke:#bfd8f3;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + id="path8498" /> + <path + transform="matrix(1.0469083,0,0,2.027027,51.01285,-35.409607)" + d="M 43.214285,32.24107 A 20.9375,4.9553571 0 1 1 1.3392849,32.24107 A 20.9375,4.9553571 0 1 1 43.214285,32.24107 z" + sodipodi:ry="4.9553571" + sodipodi:rx="20.9375" + sodipodi:cy="32.24107" + sodipodi:cx="22.276785" + id="path8500" + style="fill:#eeeeec;fill-opacity:1;fill-rule:nonzero;stroke:#2e3436;stroke-width:0.68646109;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + sodipodi:type="arc" /> + <path + sodipodi:nodetypes="ccccc" + id="path8502" + d="M 95.16001,29.859216 C 95.34941,34.267437 86.35016,38.925273 74.250517,38.925273 C 62.150874,38.925273 53.120056,34.330572 53.341027,29.859216 C 53.151624,25.29316 62.150874,20.824727 74.250517,20.824727 C 86.35016,20.824727 95.19158,25.198457 95.16001,29.859216 z" + style="fill:url(#radialGradient8512);fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> + <path + style="fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#555753;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="M 82.142459,27.943913 C 81.468389,30.131673 78.852759,31.329293 74.334599,31.329293 C 69.816449,31.329293 66.985899,29.952123 66.526739,27.943913 C 66.456009,26.238893 69.816449,24.570323 74.334599,24.570323 C 78.852759,24.570323 82.154249,26.203533 82.142459,27.943913 z" + id="path8504" + sodipodi:nodetypes="ccccc" /> + <path + style="fill:#729fcf;fill-opacity:1;fill-rule:nonzero;stroke:#204a87;stroke-width:0.96596354;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="M 67.476989,27.764793 C 68.447389,30.844053 71.145969,33.060833 74.320419,33.060843 C 77.514539,33.060843 80.226899,30.816463 81.181699,27.707393 C 80.281059,26.206763 76.900529,25.470543 74.291089,25.513813 C 70.986749,25.428073 68.434609,26.373493 67.476989,27.764793 z" + id="path8506" + sodipodi:nodetypes="csccc" + inkscape:export-filename="/Users/eve/Documents/MATE/SpeakerIcon_Test.png" + inkscape:export-xdpi="67.489998" + inkscape:export-ydpi="67.489998" /> + <path + id="path8508" + style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#2e3436;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="M 62.722179,14.847493 C 62.595139,14.950093 62.343579,15.242643 62.217529,15.349973 C 60.346409,16.943173 58.58922,19.037813 57.10976,21.059983 C 54.51317,24.609093 52.7721,27.934983 52.7721,27.934983 M 95.897099,27.934983 C 95.897099,27.934983 91.349669,19.248213 86.035799,14.995723 C 85.825169,14.827163 85.613329,14.665563 85.400529,14.511753 C 85.300009,14.439103 84.752372,14.219223 84.651452,14.150133" + sodipodi:nodetypes="cssccsss" /> + <path + id="path8510" + style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#bfd8f3;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="M 81.930899,13.855723 C 78.047689,12.836393 70.745629,12.793243 66.872489,13.809593" + sodipodi:nodetypes="cc" /> + </g> + </g> +</svg> diff --git a/mate-volume-control/data/icons/scalable/devices/audio-speaker-right.svg b/mate-volume-control/data/icons/scalable/devices/audio-speaker-right.svg new file mode 100644 index 0000000..bde2e35 --- /dev/null +++ b/mate-volume-control/data/icons/scalable/devices/audio-speaker-right.svg @@ -0,0 +1,504 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="48" + height="48" + id="svg2643" + sodipodi:version="0.32" + inkscape:version="0.46" + version="1.0" + sodipodi:docname="audio-speaker-right.svg" + inkscape:output_extension="org.inkscape.output.svg.inkscape" + inkscape:export-filename="/Users/eve/Documents/MATE/audio-speaker.png" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90"> + <defs + id="defs2645"> + <linearGradient + id="linearGradient4389"> + <stop + style="stop-color:#555753;stop-opacity:1;" + offset="0" + id="stop4391" /> + <stop + id="stop4393" + offset="1" + style="stop-color:#eeeeec;stop-opacity:1;" /> + </linearGradient> + <linearGradient + id="linearGradient4325"> + <stop + id="stop4327" + offset="0" + style="stop-color:#2e3436;stop-opacity:1;" /> + <stop + style="stop-color:#eeeeec;stop-opacity:1;" + offset="1" + id="stop4329" /> + </linearGradient> + <linearGradient + id="linearGradient21608"> + <stop + style="stop-color:#888a85;stop-opacity:1" + offset="0" + id="stop21610" /> + <stop + style="stop-color:#2e3436;stop-opacity:1" + offset="1" + id="stop21612" /> + </linearGradient> + <linearGradient + id="linearGradient15341"> + <stop + style="stop-color:#888a85;stop-opacity:1" + offset="0" + id="stop15343" /> + <stop + style="stop-color:#555753;stop-opacity:1" + offset="1" + id="stop15345" /> + </linearGradient> + <linearGradient + id="linearGradient6371"> + <stop + style="stop-color:#888a85;stop-opacity:1" + offset="0" + id="stop6373" /> + <stop + style="stop-color:#d3d7cf;stop-opacity:1;" + offset="1" + id="stop6375" /> + </linearGradient> + <linearGradient + id="linearGradient10872"> + <stop + id="stop10874" + offset="0" + style="stop-color:#888a85;stop-opacity:1" /> + <stop + style="stop-color:#9e9e92;stop-opacity:1;" + offset="0.25301206" + id="stop10876" /> + <stop + id="stop10878" + offset="1" + style="stop-color:#555753;stop-opacity:1" /> + </linearGradient> + <linearGradient + id="linearGradient5254"> + <stop + id="stop5256" + offset="0" + style="stop-color:#707469;stop-opacity:1;" /> + <stop + id="stop5258" + offset="1" + style="stop-color:#2e3335;stop-opacity:1;" /> + </linearGradient> + <linearGradient + id="linearGradient10055"> + <stop + style="stop-color:#bebebe;stop-opacity:1;" + offset="0" + id="stop10057" /> + <stop + id="stop10061" + offset="0.375" + style="stop-color:#e8e8e8;stop-opacity:1;" /> + <stop + style="stop-color:#5c5c5c;stop-opacity:1;" + offset="1" + id="stop10059" /> + </linearGradient> + <linearGradient + id="linearGradient4841"> + <stop + id="stop4843" + offset="0" + style="stop-color:#babdb6;stop-opacity:1;" /> + <stop + style="stop-color:#fcaf3e;stop-opacity:0.94117647;" + offset="0" + id="stop4845" /> + <stop + id="stop4847" + offset="1" + style="stop-color:#babdb6;stop-opacity:1;" /> + <stop + style="stop-color:#eeeeec;stop-opacity:1;" + offset="1" + id="stop4849" /> + </linearGradient> + <linearGradient + id="linearGradient4809"> + <stop + style="stop-color:#babdb6;stop-opacity:1;" + offset="0" + id="stop4811" /> + <stop + id="stop4813" + offset="0" + style="stop-color:#ad7fa8;stop-opacity:1;" /> + <stop + style="stop-color:#babdb6;stop-opacity:1;" + offset="1" + id="stop4815" /> + <stop + id="stop4817" + offset="1" + style="stop-color:#eeeeec;stop-opacity:1;" /> + </linearGradient> + <linearGradient + id="linearGradient3345"> + <stop + id="stop3347" + offset="0" + style="stop-color:#babdb6;stop-opacity:1;" /> + <stop + style="stop-color:#729fcf;stop-opacity:1;" + offset="0" + id="stop3351" /> + <stop + id="stop3355" + offset="1" + style="stop-color:#babdb6;stop-opacity:1;" /> + <stop + style="stop-color:#eeeeec;stop-opacity:1;" + offset="1" + id="stop3349" /> + </linearGradient> + <linearGradient + id="linearGradient3223"> + <stop + style="stop-color:#eeeeec;stop-opacity:1;" + offset="0" + id="stop3225" /> + <stop + style="stop-color:#babdb6;stop-opacity:1;" + offset="1" + id="stop3227" /> + </linearGradient> + <linearGradient + id="linearGradient3503"> + <stop + style="stop-color:#babdb6;stop-opacity:1;" + offset="0" + id="stop3239" /> + <stop + id="stop3507" + offset="1" + style="stop-color:#eeeeec;stop-opacity:1;" /> + </linearGradient> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + id="perspective2651" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient3501" + cx="22.276291" + cy="32.248856" + fx="22.276291" + fy="32.248856" + r="20.319138" + gradientTransform="matrix(1,0,0,0.2366258,0,24.617945)" + gradientUnits="userSpaceOnUse" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient3500" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.2366258,0,24.617945)" + cx="22.276291" + cy="32.248856" + fx="22.276291" + fy="32.248856" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient3232" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,47.474934,42.420392)" + cx="22.276291" + cy="21.520338" + fx="22.276291" + fy="21.520338" + r="20.319138" + spreadMethod="reflect" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient5689" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0469084,0,0,0.4796469,270.37856,38.427671)" + cx="22.276291" + cy="32.248856" + fx="22.276291" + fy="32.248856" + r="20.319138" /> + <inkscape:perspective + id="perspective3474" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 526.18109 : 1" + sodipodi:type="inkscape:persp3d" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4325" + id="radialGradient4359" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,-52.447261,-106.14795)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient5015" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,42.720075,-107.89847)" + spreadMethod="pad" + cx="22.276291" + cy="21.520338" + fx="22.276291" + fy="21.520338" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient5062" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,98.720075,-107.89847)" + spreadMethod="pad" + cx="22.276291" + cy="21.520338" + fx="22.276291" + fy="21.520338" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4325" + id="radialGradient5064" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,98.720075,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4389" + id="radialGradient5110" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,142.72007,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4389" + id="radialGradient3863" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,92.720075,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4389" + id="radialGradient3865" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,92.720075,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4389" + id="radialGradient3906" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,92.720075,-107.89847)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4389" + id="radialGradient7260" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,47.516569,40.378763)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + gridtolerance="10000" + guidetolerance="10" + objecttolerance="10" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="5.6568542" + inkscape:cx="-90.590866" + inkscape:cy="20.556657" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="false" + inkscape:snap-global="false" + inkscape:window-width="1601" + inkscape:window-height="942" + inkscape:window-x="5" + inkscape:window-y="1" + showguides="false" + inkscape:guide-bbox="true"> + <inkscape:grid + type="xygrid" + id="grid2653" + visible="true" + enabled="true" + color="#ff00ff" + opacity="0.1254902" + empcolor="#0000f2" + empopacity="0.25098039" /> + <sodipodi:guide + orientation="1,0" + position="23.969062,28.50558" + id="guide3488" /> + <sodipodi:guide + orientation="0,1" + position="17.401268,34.125445" + id="guide3490" /> + </sodipodi:namedview> + <metadata + id="metadata2648"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <cc:license + rdf:resource="" /> + <dc:subject> + <rdf:Bag> + <rdf:li>audio</rdf:li> + <rdf:li>device</rdf:li> + <rdf:li>speaker</rdf:li> + <rdf:li>output</rdf:li> + <rdf:li>right</rdf:li> + </rdf:Bag> + </dc:subject> + <dc:title>audio-speaker-right</dc:title> + <dc:creator> + <cc:Agent> + <dc:title>Evangeline McGlynn</dc:title> + </cc:Agent> + </dc:creator> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <g + id="g7248" + transform="matrix(0.7071068,0.7071068,-0.7071068,0.7071068,26.509625,-12.288654)"> + <path + sodipodi:nodetypes="ccccc" + id="path5365" + d="M 14.032699,10.506413 C 20.104129,7.0242733 27.175559,7.1135633 33.425559,10.506413 L 35.425559,14.899273 L 12.032699,14.899273 L 14.032699,10.506413 z" + style="fill:#babdb6;fill-opacity:1;fill-rule:nonzero;stroke:#2e3436;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> + <path + sodipodi:nodetypes="csssccsssc" + d="M 45.604129,27.934983 C 45.604129,27.934983 41.056699,19.248213 35.742829,14.995723 C 35.532199,14.827163 35.320359,14.665563 35.107559,14.511753 C 34.605519,14.148893 34.098099,13.829363 33.588369,13.563883 C 33.019409,13.267543 32.447589,13.038553 31.877199,12.891833 C 27.993989,11.872493 20.160679,11.829343 16.287539,12.845703 C 15.447649,13.064843 14.605939,13.457433 13.775509,13.977613 C 13.150269,14.369273 12.531419,14.833253 11.924559,15.349973 C 10.053439,16.943173 8.2962496,19.037813 6.8167896,21.059983 C 4.2201996,24.609093 2.4791296,27.934983 2.4791296,27.934983" + style="fill:#babdb6;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + id="path5367" /> + <path + style="fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#888a83;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="M 12.534499,15.979023 L 14.721539,11.213023 C 19.982596,8.4697433 25.941852,7.8458533 32.660602,11.207463 L 34.629112,15.410963" + id="path5369" + sodipodi:nodetypes="cccc" /> + <path + sodipodi:nodetypes="cccc" + d="M 44.708609,28.523883 C 44.708609,28.523883 38.400579,15.595313 31.637929,13.855723 C 27.754719,12.836393 20.452659,12.793243 16.579519,13.809593 C 9.7353992,15.595313 4.7398596,26.273883 4.7398596,26.273883" + style="fill:#555753;fill-opacity:1;fill-rule:evenodd;stroke:#888a85;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + id="path5371" /> + <path + transform="matrix(1.0469083,0,0,2.027027,0.7198796,-35.409607)" + d="M 43.214285,32.24107 A 20.9375,4.9553571 0 1 1 1.3392849,32.24107 A 20.9375,4.9553571 0 1 1 43.214285,32.24107 z" + sodipodi:ry="4.9553571" + sodipodi:rx="20.9375" + sodipodi:cy="32.24107" + sodipodi:cx="22.276785" + id="path5373" + style="fill:#eeeeec;fill-opacity:1;fill-rule:nonzero;stroke:#2e3436;stroke-width:0.68646109;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + sodipodi:type="arc" /> + <path + style="fill:url(#radialGradient7260);fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="M 44.951119,29.943913 C 45.140529,34.352133 36.141269,39.009973 24.041629,39.009973 C 11.941989,39.009973 2.9111696,34.415273 3.1321396,29.943913 C 2.9427396,25.377853 11.941989,20.909423 24.041629,20.909423 C 36.141269,20.909423 44.982689,25.283153 44.951119,29.943913 z" + id="path5375" + sodipodi:nodetypes="ccccc" /> + <path + style="fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#555753;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="M 31.849489,27.943913 C 31.175419,30.131673 28.559789,31.329293 24.041629,31.329293 C 19.523479,31.329293 16.692929,29.952123 16.233769,27.943913 C 16.163039,26.238893 19.523479,24.570323 24.041629,24.570323 C 28.559789,24.570323 31.861279,26.203533 31.849489,27.943913 z" + id="path5377" + sodipodi:nodetypes="ccccc" /> + <path + style="fill:#555753;fill-opacity:1;fill-rule:nonzero;stroke:#2e3436;stroke-width:0.96596354;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="M 17.184019,27.764793 C 18.154419,30.844053 20.852999,33.060833 24.027449,33.060843 C 27.221569,33.060843 29.933929,30.816463 30.888729,27.707393 C 29.988089,26.206763 26.607559,25.470543 23.998119,25.513813 C 20.693779,25.428073 18.141639,26.373493 17.184019,27.764793 z" + id="path5379" + sodipodi:nodetypes="csccc" + inkscape:export-filename="/Users/eve/Documents/MATE/SpeakerIcon_Test.png" + inkscape:export-xdpi="67.489998" + inkscape:export-ydpi="67.489998" /> + <path + id="path5381" + style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#2e3436;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="M 12.429209,14.847493 C 12.302169,14.950093 12.050609,15.242643 11.924559,15.349973 C 10.053439,16.943173 8.2962496,19.037813 6.8167896,21.059983 C 4.2201996,24.609093 2.4791296,27.934983 2.4791296,27.934983 M 45.604129,27.934983 C 45.604129,27.934983 41.056699,19.248213 35.742829,14.995723 C 35.532199,14.827163 35.320359,14.665563 35.107559,14.511753 C 35.007039,14.439103 34.459402,14.219223 34.358482,14.150133" + sodipodi:nodetypes="cssccsss" /> + <path + id="path5383" + style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#888a85;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="M 31.637929,13.855723 C 27.754719,12.836393 20.452659,12.793243 16.579519,13.809593" + sodipodi:nodetypes="cc" /> + </g> + </g> +</svg> diff --git a/mate-volume-control/data/icons/scalable/devices/audio-subwoofer-testing.svg b/mate-volume-control/data/icons/scalable/devices/audio-subwoofer-testing.svg new file mode 100644 index 0000000..6ae74ba --- /dev/null +++ b/mate-volume-control/data/icons/scalable/devices/audio-subwoofer-testing.svg @@ -0,0 +1,240 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="48" + height="48" + id="svg2643" + sodipodi:version="0.32" + inkscape:version="0.46" + version="1.0" + sodipodi:docname="audio-subwoofer-testing.svg" + inkscape:output_extension="org.inkscape.output.svg.inkscape" + inkscape:export-filename="/Users/eve/Documents/MATE/audio-subwoofer-testing.png" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90"> + <defs + id="defs2645"> + <linearGradient + id="linearGradient6718"> + <stop + style="stop-color:#babdb6;stop-opacity:1;" + offset="0" + id="stop6720" /> + <stop + id="stop6724" + offset="1" + style="stop-color:#eeeeec;stop-opacity:1;" /> + </linearGradient> + <linearGradient + id="linearGradient3345"> + <stop + id="stop3347" + offset="0" + style="stop-color:#babdb6;stop-opacity:1;" /> + <stop + style="stop-color:#729fcf;stop-opacity:1;" + offset="0" + id="stop3351" /> + <stop + id="stop3355" + offset="1" + style="stop-color:#babdb6;stop-opacity:1;" /> + <stop + style="stop-color:#eeeeec;stop-opacity:1;" + offset="1" + id="stop3349" /> + </linearGradient> + <linearGradient + id="linearGradient4389"> + <stop + style="stop-color:#555753;stop-opacity:1;" + offset="0" + id="stop4391" /> + <stop + id="stop4393" + offset="1" + style="stop-color:#eeeeec;stop-opacity:1;" /> + </linearGradient> + <linearGradient + id="linearGradient3503"> + <stop + id="stop3505" + offset="0" + style="stop-color:#eeeeec;stop-opacity:1;" /> + <stop + id="stop3507" + offset="1" + style="stop-color:#babdb6;stop-opacity:1;" /> + </linearGradient> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + id="perspective2651" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4389" + id="radialGradient6984" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.7191227,0,0,0.7191227,23.696408,18.236608)" + cx="84.365685" + cy="64.927307" + fx="84.365685" + fy="64.927307" + r="22.334578" /> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + gridtolerance="10000" + guidetolerance="10" + objecttolerance="10" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="2.8284271" + inkscape:cx="-48.821714" + inkscape:cy="66.867859" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="false" + inkscape:snap-global="false" + inkscape:window-width="1680" + inkscape:window-height="1028" + inkscape:window-x="0" + inkscape:window-y="0" + showguides="false" + inkscape:guide-bbox="true"> + <inkscape:grid + type="xygrid" + id="grid2653" + visible="true" + enabled="true" + color="#ff00ff" + opacity="0.1254902" + empcolor="#0000f2" + empopacity="0.25098039" /> + <sodipodi:guide + orientation="1,0" + position="23.969062,28.50558" + id="guide3488" /> + <sodipodi:guide + orientation="0,1" + position="17.401268,34.125445" + id="guide3490" /> + </sodipodi:namedview> + <metadata + id="metadata2648"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <cc:license + rdf:resource="" /> + <dc:subject> + <rdf:Bag> + <rdf:li>audio</rdf:li> + <rdf:li>device</rdf:li> + <rdf:li>subwoofer</rdf:li> + <rdf:li>output</rdf:li> + <rdf:li>testing</rdf:li> + <rdf:li>highlighted</rdf:li> + </rdf:Bag> + </dc:subject> + <dc:title>audio-subwoofer-testing</dc:title> + <dc:creator> + <cc:Agent> + <dc:title>Evangeline McGlynn</dc:title> + </cc:Agent> + </dc:creator> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <g + id="g6973" + transform="translate(-51.375,9.0155254e-8)"> + <path + style="fill:#204a87;fill-opacity:1;fill-rule:nonzero;stroke:#2e3436;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="M 94.217316,39.045143 C 93.839661,41.471941 92.789441,43.219015 91.55403,43.219015 C 90.310955,43.219015 89.255378,41.450202 88.883794,38.999908 C 89.234301,37.817247 90.549918,37.23702 91.565441,37.271125 C 92.851403,37.203551 93.844629,37.948644 94.217316,39.045143 z" + id="path6730" + sodipodi:nodetypes="csccc" /> + <path + sodipodi:nodetypes="csccc" + id="path6732" + d="M 62.393985,39.045143 C 62.016329,41.471941 60.96611,43.219015 59.730698,43.219015 C 58.487624,43.219015 57.432046,41.450202 57.060462,38.999908 C 57.410969,37.817247 58.726586,37.23702 59.742109,37.271125 C 61.028072,37.203551 62.021297,37.948644 62.393985,39.045143 z" + style="fill:#204a87;fill-opacity:1;fill-rule:nonzero;stroke:#2e3436;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> + <path + style="fill:#204a87;fill-opacity:1;fill-rule:nonzero;stroke:#2e3436;stroke-width:1.28661346;stroke-linecap:butt;stroke-linejoin:bevel;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="M 62.953967,6.9788731 C 73.409478,4.1293728 77.293929,4.3517447 87.917557,6.9788731 L 95.317117,13.152471 L 55.554408,13.152471 L 62.953967,6.9788731 z" + id="path6734" + sodipodi:nodetypes="ccccc" /> + <path + style="fill:#729fcf;fill-opacity:1;fill-rule:nonzero;stroke:#2e3436;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="M 55.289577,13.137135 C 67.861736,9.7856746 82.504598,9.8716096 95.446529,13.137135 L 95.389975,39.76734 C 82.177445,42.114593 68.287824,42.159732 55.346132,39.902758 L 55.289577,13.137135 z" + id="path6736" + sodipodi:nodetypes="ccccc" /> + <path + sodipodi:type="arc" + style="fill:url(#radialGradient6984);fill-opacity:1;fill-rule:nonzero;stroke:#204a87;stroke-width:2.05839419;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + id="path6738" + sodipodi:cx="84.365685" + sodipodi:cy="64.927307" + sodipodi:rx="21.396112" + sodipodi:ry="21.396112" + d="M 105.7618,64.927307 A 21.396112,21.396112 0 1 1 62.969572,64.927307 A 21.396112,21.396112 0 1 1 105.7618,64.927307 z" + transform="matrix(0,0.4858156,-0.4858156,0,100.43255,-14.78506)" /> + <path + transform="matrix(0,0.2827849,-0.2827849,0,105.0933,2.3437637)" + d="M 105.7618,64.927307 A 21.396112,21.396112 0 1 1 62.969572,64.927307 A 21.396112,21.396112 0 1 1 105.7618,64.927307 z" + sodipodi:ry="21.396112" + sodipodi:rx="21.396112" + sodipodi:cy="64.927307" + sodipodi:cx="84.365685" + id="path6740" + style="fill:#bfd8f3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3.53625679;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + sodipodi:type="arc" /> + <path + sodipodi:type="arc" + style="fill:#729fcf;fill-opacity:1;fill-rule:nonzero;stroke:#204a87;stroke-width:5.06734753;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + id="path6742" + sodipodi:cx="84.365685" + sodipodi:cy="64.927307" + sodipodi:rx="21.396112" + sodipodi:ry="21.396112" + d="M 105.7618,64.927307 A 21.396112,21.396112 0 1 1 62.969572,64.927307 A 21.396112,21.396112 0 1 1 105.7618,64.927307 z" + transform="matrix(0,0.1973419,-0.1973419,0,99.523923,9.5522206)" /> + <path + sodipodi:nodetypes="ccccc" + id="path6744" + d="M 56.321159,13.950789 C 67.82398,10.961669 81.161179,10.935259 94.415609,13.950789 L 94.359059,38.893489 C 81.01047,40.978079 68.381909,41.160879 56.377709,39.028909 L 56.321159,13.950789 z" + style="fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#bfd8f3;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> + <path + transform="matrix(0,0.1973419,-0.1973419,0,81.702733,9.5522212)" + d="M 105.7618,64.927307 A 21.396112,21.396112 0 1 1 62.969572,64.927307 A 21.396112,21.396112 0 1 1 105.7618,64.927307 z" + sodipodi:ry="21.396112" + sodipodi:rx="21.396112" + sodipodi:cy="64.927307" + sodipodi:cx="84.365685" + id="path6746" + style="fill:#729fcf;fill-opacity:1;fill-rule:nonzero;stroke:#204a87;stroke-width:5.06734753;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + sodipodi:type="arc" /> + </g> + </g> +</svg> diff --git a/mate-volume-control/data/icons/scalable/devices/audio-subwoofer.svg b/mate-volume-control/data/icons/scalable/devices/audio-subwoofer.svg new file mode 100644 index 0000000..dbed916 --- /dev/null +++ b/mate-volume-control/data/icons/scalable/devices/audio-subwoofer.svg @@ -0,0 +1,325 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="48" + height="48" + id="svg2643" + sodipodi:version="0.32" + inkscape:version="0.46" + version="1.0" + sodipodi:docname="audio-subwoofer.svg" + inkscape:output_extension="org.inkscape.output.svg.inkscape" + inkscape:export-filename="/Users/eve/Documents/MATE/SpeakerIcon_subwoofer.png" + inkscape:export-xdpi="67.489998" + inkscape:export-ydpi="67.489998"> + <defs + id="defs2645"> + <linearGradient + id="linearGradient6718"> + <stop + style="stop-color:#babdb6;stop-opacity:1;" + offset="0" + id="stop6720" /> + <stop + id="stop6724" + offset="1" + style="stop-color:#eeeeec;stop-opacity:1;" /> + </linearGradient> + <linearGradient + id="linearGradient3345"> + <stop + id="stop3347" + offset="0" + style="stop-color:#babdb6;stop-opacity:1;" /> + <stop + style="stop-color:#729fcf;stop-opacity:1;" + offset="0" + id="stop3351" /> + <stop + id="stop3355" + offset="1" + style="stop-color:#babdb6;stop-opacity:1;" /> + <stop + style="stop-color:#eeeeec;stop-opacity:1;" + offset="1" + id="stop3349" /> + </linearGradient> + <linearGradient + id="linearGradient4389"> + <stop + style="stop-color:#555753;stop-opacity:1;" + offset="0" + id="stop4391" /> + <stop + id="stop4393" + offset="1" + style="stop-color:#eeeeec;stop-opacity:1;" /> + </linearGradient> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4389" + id="radialGradient5385" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,-9.0519739,70.961132)" + spreadMethod="pad" + cx="22.276297" + cy="21.099283" + fx="22.276297" + fy="21.099283" + r="20.319138" /> + <linearGradient + id="linearGradient3503"> + <stop + id="stop3505" + offset="0" + style="stop-color:#eeeeec;stop-opacity:1;" /> + <stop + id="stop3507" + offset="1" + style="stop-color:#babdb6;stop-opacity:1;" /> + </linearGradient> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 526.18109 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="744.09448 : 526.18109 : 1" + inkscape:persp3d-origin="372.04724 : 350.78739 : 1" + id="perspective2651" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4389" + id="radialGradient6516" + cx="84.365685" + cy="64.927307" + fx="84.365685" + fy="64.927307" + r="22.334578" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.7191227,0,0,0.7191227,23.696408,18.236608)" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4389" + id="radialGradient6612" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.7191227,0,0,0.7191227,23.696408,18.236608)" + cx="84.365685" + cy="64.927307" + fx="84.365685" + fy="64.927307" + r="22.334578" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4389" + id="radialGradient6645" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.7191227,0,0,0.7191227,23.696408,18.236608)" + cx="84.365685" + cy="64.927307" + fx="84.365685" + fy="64.927307" + r="22.334578" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3503" + id="radialGradient6705" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.7451713,-0.7451712,0.5114274,0.5114274,10.506623,78.557248)" + spreadMethod="reflect" + cx="22.276291" + cy="21.520338" + fx="22.276291" + fy="21.520338" + r="20.319138" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient6718" + id="radialGradient6716" + gradientUnits="userSpaceOnUse" + cx="84.365685" + cy="64.927307" + fx="84.365685" + fy="64.927307" + r="22.334578" + gradientTransform="matrix(0.8545182,0,0,0.753115,12.273671,16.029579)" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4389" + id="radialGradient6728" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.7191227,0,0,0.7191227,23.696408,18.236608)" + cx="84.365685" + cy="64.927307" + fx="84.365685" + fy="64.927307" + r="22.334578" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4389" + id="radialGradient6748" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.7191227,0,0,0.7191227,23.696408,18.236608)" + cx="84.365685" + cy="64.927307" + fx="84.365685" + fy="64.927307" + r="22.334578" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4389" + id="radialGradient6781" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.7191227,0,0,0.7191227,23.696408,18.236608)" + cx="84.365685" + cy="64.927307" + fx="84.365685" + fy="64.927307" + r="22.334578" /> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + gridtolerance="10000" + guidetolerance="10" + objecttolerance="10" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="1" + inkscape:cx="-397.88007" + inkscape:cy="205.69941" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="false" + inkscape:snap-global="false" + inkscape:window-width="1680" + inkscape:window-height="1028" + inkscape:window-x="20" + inkscape:window-y="20" + showguides="false" + inkscape:guide-bbox="true"> + <inkscape:grid + type="xygrid" + id="grid2653" + visible="true" + enabled="true" + color="#ff00ff" + opacity="0.1254902" + empcolor="#0000f2" + empopacity="0.25098039" /> + <sodipodi:guide + orientation="1,0" + position="23.969062,28.50558" + id="guide3488" /> + <sodipodi:guide + orientation="0,1" + position="17.401268,34.125445" + id="guide3490" /> + </sodipodi:namedview> + <metadata + id="metadata2648"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:subject> + <rdf:Bag> + <rdf:li>audio</rdf:li> + <rdf:li>device</rdf:li> + <rdf:li>subwoofer</rdf:li> + <rdf:li>output</rdf:li> + </rdf:Bag> + </dc:subject> + <dc:title>audio-subwoofer</dc:title> + <dc:creator> + <cc:Agent> + <dc:title>Evangeline McGlynn</dc:title> + </cc:Agent> + </dc:creator> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <g + id="g6770"> + <path + sodipodi:nodetypes="csccc" + id="path3286" + d="M 42.842316,39.045143 C 42.464661,41.471941 41.414441,43.219015 40.17903,43.219015 C 38.935955,43.219015 37.880378,41.450202 37.508794,38.999908 C 37.859301,37.817247 39.174918,37.23702 40.190441,37.271125 C 41.476403,37.203551 42.469629,37.948644 42.842316,39.045143 z" + style="fill:#555753;fill-opacity:1;fill-rule:nonzero;stroke:#2e3436;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> + <path + style="fill:#555753;fill-opacity:1;fill-rule:nonzero;stroke:#2e3436;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="M 11.018985,39.045143 C 10.641329,41.471941 9.5911095,43.219015 8.3556983,43.219015 C 7.1126243,43.219015 6.0570463,41.450202 5.6854623,38.999908 C 6.0359693,37.817247 7.3515863,37.23702 8.3671093,37.271125 C 9.6530715,37.203551 10.646297,37.948644 11.018985,39.045143 z" + id="path3288" + sodipodi:nodetypes="csccc" /> + <path + sodipodi:nodetypes="ccccc" + id="path3264" + d="M 11.578967,6.9788731 C 22.034478,4.1293728 25.918929,4.3517447 36.542557,6.9788731 L 43.942117,13.152471 L 4.1794077,13.152471 L 11.578967,6.9788731 z" + style="fill:#555753;fill-opacity:1;fill-rule:nonzero;stroke:#2e3436;stroke-width:1.28661346;stroke-linecap:butt;stroke-linejoin:bevel;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> + <path + sodipodi:nodetypes="ccccc" + id="path3266" + d="M 3.9145768,13.137135 C 16.486736,9.7856746 31.129598,9.8716096 44.071529,13.137135 L 44.014975,39.76734 C 30.802445,42.114593 16.912824,42.159732 3.9711319,39.902758 L 3.9145768,13.137135 z" + style="fill:#888a85;fill-opacity:1;fill-rule:nonzero;stroke:#2e3436;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> + <path + transform="matrix(0,0.4858156,-0.4858156,0,49.057554,-14.78506)" + d="M 105.7618,64.927307 A 21.396112,21.396112 0 1 1 62.969572,64.927307 A 21.396112,21.396112 0 1 1 105.7618,64.927307 z" + sodipodi:ry="21.396112" + sodipodi:rx="21.396112" + sodipodi:cy="64.927307" + sodipodi:cx="84.365685" + id="path3238" + style="fill:url(#radialGradient6781);fill-opacity:1;fill-rule:nonzero;stroke:#555753;stroke-width:2.05839419;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + sodipodi:type="arc" /> + <path + sodipodi:type="arc" + style="fill:#eeeeec;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3.53625679;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + id="path3260" + sodipodi:cx="84.365685" + sodipodi:cy="64.927307" + sodipodi:rx="21.396112" + sodipodi:ry="21.396112" + d="M 105.7618,64.927307 A 21.396112,21.396112 0 1 1 62.969572,64.927307 A 21.396112,21.396112 0 1 1 105.7618,64.927307 z" + transform="matrix(0,0.2827849,-0.2827849,0,53.7183,2.3437637)" /> + <path + transform="matrix(0,0.1973419,-0.1973419,0,48.148923,9.5522206)" + d="M 105.7618,64.927307 A 21.396112,21.396112 0 1 1 62.969572,64.927307 A 21.396112,21.396112 0 1 1 105.7618,64.927307 z" + sodipodi:ry="21.396112" + sodipodi:rx="21.396112" + sodipodi:cy="64.927307" + sodipodi:cx="84.365685" + id="path6518" + style="fill:#555753;fill-opacity:1;fill-rule:nonzero;stroke:#2e3436;stroke-width:5.06734753;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + sodipodi:type="arc" /> + <path + style="fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#babdb6;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="M 4.9461591,13.950789 C 16.44898,10.961669 29.786179,10.935259 43.040609,13.950789 L 42.984059,38.893489 C 29.63547,40.978079 17.006909,41.160879 5.0027091,39.028909 L 4.9461591,13.950789 z" + id="path6561" + sodipodi:nodetypes="ccccc" /> + <path + sodipodi:type="arc" + style="fill:#555753;fill-opacity:1;fill-rule:nonzero;stroke:#2e3436;stroke-width:5.06734753;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + id="path6581" + sodipodi:cx="84.365685" + sodipodi:cy="64.927307" + sodipodi:rx="21.396112" + sodipodi:ry="21.396112" + d="M 105.7618,64.927307 A 21.396112,21.396112 0 1 1 62.969572,64.927307 A 21.396112,21.396112 0 1 1 105.7618,64.927307 z" + transform="matrix(0,0.1973419,-0.1973419,0,30.327733,9.5522212)" /> + </g> + </g> +</svg> diff --git a/mate-volume-control/data/icons/scalable/status/Makefile.am b/mate-volume-control/data/icons/scalable/status/Makefile.am new file mode 100644 index 0000000..c42c14e --- /dev/null +++ b/mate-volume-control/data/icons/scalable/status/Makefile.am @@ -0,0 +1,21 @@ +NULL = + +themedir = $(pkgdatadir)/icons/mate +size = scalable +context = status + +iconsdir = $(themedir)/$(size)/$(context) + +icons_DATA = \ + audio-input-microphone-high.svg \ + audio-input-microphone-low.svg \ + audio-input-microphone-medium.svg \ + audio-input-microphone-muted.svg \ + $(NULL) + +EXTRA_DIST = \ + $(icons_DATA) \ + $(NULL) + + +-include $(top_srcdir)/git.mk diff --git a/mate-volume-control/data/icons/scalable/status/Makefile.in b/mate-volume-control/data/icons/scalable/status/Makefile.in new file mode 100644 index 0000000..85f4d6a --- /dev/null +++ b/mate-volume-control/data/icons/scalable/status/Makefile.in @@ -0,0 +1,494 @@ +# Makefile.in generated by automake 1.11.1 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, +# Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = mate-volume-control/data/icons/scalable/status +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/as-ac-expand.m4 \ + $(top_srcdir)/m4/as-compiler-flag.m4 \ + $(top_srcdir)/m4/as-version.m4 $(top_srcdir)/m4/intltool.m4 \ + $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ + $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ + $(top_srcdir)/m4/lt~obsolete.m4 \ + $(top_srcdir)/m4/mate-doc-utils.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/build-aux/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +AM_V_GEN = $(am__v_GEN_$(V)) +am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) +am__v_GEN_0 = @echo " GEN " $@; +AM_V_at = $(am__v_at_$(V)) +am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) +am__v_at_0 = @ +SOURCES = +DIST_SOURCES = +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__installdirs = "$(DESTDIR)$(iconsdir)" +DATA = $(icons_DATA) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +ALL_LINGUAS = @ALL_LINGUAS@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CATALOGS = @CATALOGS@ +CATOBJEXT = @CATOBJEXT@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DATADIRNAME = @DATADIRNAME@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DISABLE_DEPRECATED = @DISABLE_DEPRECATED@ +DISTCHECK_CONFIGURE_FLAGS = @DISTCHECK_CONFIGURE_FLAGS@ +DLLTOOL = @DLLTOOL@ +DOC_USER_FORMATS = @DOC_USER_FORMATS@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ +GLADEUI_CATALOG_DIR = @GLADEUI_CATALOG_DIR@ +GLADEUI_CFLAGS = @GLADEUI_CFLAGS@ +GLADEUI_LIBS = @GLADEUI_LIBS@ +GLADEUI_MODULE_DIR = @GLADEUI_MODULE_DIR@ +GLIB_GENMARSHAL = @GLIB_GENMARSHAL@ +GMOFILES = @GMOFILES@ +GMP_CFLAGS = @GMP_CFLAGS@ +GMP_LIBS = @GMP_LIBS@ +GMSGFMT = @GMSGFMT@ +GREP = @GREP@ +GSR_CFLAGS = @GSR_CFLAGS@ +GSR_LIBS = @GSR_LIBS@ +GSTMIXER_CFLAGS = @GSTMIXER_CFLAGS@ +GSTMIXER_LIBS = @GSTMIXER_LIBS@ +GSTPROPS_CFLAGS = @GSTPROPS_CFLAGS@ +GSTPROPS_LIBS = @GSTPROPS_LIBS@ +GST_MAJORMINOR = @GST_MAJORMINOR@ +HAVE_PULSEAUDIO = @HAVE_PULSEAUDIO@ +HAVE_SOUND_THEME = @HAVE_SOUND_THEME@ +HELP_DIR = @HELP_DIR@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INSTOBJEXT = @INSTOBJEXT@ +INTLLIBS = @INTLLIBS@ +INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@ +INTLTOOL_MERGE = @INTLTOOL_MERGE@ +INTLTOOL_PERL = @INTLTOOL_PERL@ +INTLTOOL_UPDATE = @INTLTOOL_UPDATE@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MATECC_DESKTOP_DIR = @MATECC_DESKTOP_DIR@ +MATECONFTOOL = @MATECONFTOOL@ +MATECONF_SCHEMA_CONFIG_SOURCE = @MATECONF_SCHEMA_CONFIG_SOURCE@ +MATECONF_SCHEMA_FILE_DIR = @MATECONF_SCHEMA_FILE_DIR@ +MKDIR_P = @MKDIR_P@ +MKINSTALLDIRS = @MKINSTALLDIRS@ +MSGFMT = @MSGFMT@ +MSGFMT_OPTS = @MSGFMT_OPTS@ +MSGMERGE = @MSGMERGE@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OMF_DIR = @OMF_DIR@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PACKAGE_VERSION_MAJOR = @PACKAGE_VERSION_MAJOR@ +PACKAGE_VERSION_MICRO = @PACKAGE_VERSION_MICRO@ +PACKAGE_VERSION_MINOR = @PACKAGE_VERSION_MINOR@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +POFILES = @POFILES@ +POSUB = @POSUB@ +PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ +PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@ +PROGRAMS_GSTPROPS = @PROGRAMS_GSTPROPS@ +PULSEAUDIO_CFLAGS = @PULSEAUDIO_CFLAGS@ +PULSEAUDIO_LIBS = @PULSEAUDIO_LIBS@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SOUNDTHEME_CFLAGS = @SOUNDTHEME_CFLAGS@ +SOUNDTHEME_LIBS = @SOUNDTHEME_LIBS@ +SOUND_THEME_CFLAGS = @SOUND_THEME_CFLAGS@ +SOUND_THEME_LIBS = @SOUND_THEME_LIBS@ +STRIP = @STRIP@ +USE_NLS = @USE_NLS@ +VERSION = @VERSION@ +VOLUME_CONTROL_CFLAGS = @VOLUME_CONTROL_CFLAGS@ +VOLUME_CONTROL_LIBS = @VOLUME_CONTROL_LIBS@ +WARN_CFLAGS = @WARN_CFLAGS@ +WARN_CXXFLAGS = @WARN_CXXFLAGS@ +XGETTEXT = @XGETTEXT@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +NULL = +themedir = $(pkgdatadir)/icons/mate +size = scalable +context = status +iconsdir = $(themedir)/$(size)/$(context) +icons_DATA = \ + audio-input-microphone-high.svg \ + audio-input-microphone-low.svg \ + audio-input-microphone-medium.svg \ + audio-input-microphone-muted.svg \ + $(NULL) + +EXTRA_DIST = \ + $(icons_DATA) \ + $(NULL) + +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign mate-volume-control/data/icons/scalable/status/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign mate-volume-control/data/icons/scalable/status/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-iconsDATA: $(icons_DATA) + @$(NORMAL_INSTALL) + test -z "$(iconsdir)" || $(MKDIR_P) "$(DESTDIR)$(iconsdir)" + @list='$(icons_DATA)'; test -n "$(iconsdir)" || list=; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(iconsdir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(iconsdir)" || exit $$?; \ + done + +uninstall-iconsDATA: + @$(NORMAL_UNINSTALL) + @list='$(icons_DATA)'; test -n "$(iconsdir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + test -n "$$files" || exit 0; \ + echo " ( cd '$(DESTDIR)$(iconsdir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(iconsdir)" && rm -f $$files +tags: TAGS +TAGS: + +ctags: CTAGS +CTAGS: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(DATA) +installdirs: + for dir in "$(DESTDIR)$(iconsdir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-iconsDATA + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-iconsDATA + +.MAKE: install-am install-strip + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + distclean distclean-generic distclean-libtool distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-iconsDATA install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + uninstall uninstall-am uninstall-iconsDATA + + +-include $(top_srcdir)/git.mk + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/mate-volume-control/data/icons/scalable/status/audio-input-microphone-high.svg b/mate-volume-control/data/icons/scalable/status/audio-input-microphone-high.svg new file mode 100644 index 0000000..fa30895 --- /dev/null +++ b/mate-volume-control/data/icons/scalable/status/audio-input-microphone-high.svg @@ -0,0 +1,1076 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="48px" + height="48px" + id="svg2790" + sodipodi:version="0.32" + inkscape:version="0.46" + sodipodi:docname="audio-input-mic-high.svg" + inkscape:output_extension="org.inkscape.output.svg.inkscape"> + <defs + id="defs2792"> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient6958" + id="radialGradient6968" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(2.6999424,0,0,3.6828427,-122.46854,-61.286186)" + cx="72.495682" + cy="22.84375" + fx="72.495682" + fy="22.84375" + r="4.8202302" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient6958" + id="radialGradient6964" + cx="72.495682" + cy="22.84375" + fx="72.495682" + fy="22.84375" + r="4.8202302" + gradientTransform="matrix(2.6999424,0,0,3.5713875,-122.46854,-58.740132)" + gradientUnits="userSpaceOnUse" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient6958" + id="radialGradient6976" + cx="70.53125" + cy="22.734375" + fx="70.53125" + fy="22.734375" + r="3.5975378" + gradientTransform="matrix(1.8087117,0,0,3.5234273,-57.039447,-57.368542)" + gradientUnits="userSpaceOnUse" /> + <linearGradient + id="linearGradient6958"> + <stop + style="stop-color:#729fcf;stop-opacity:1;" + offset="0" + id="stop6960" /> + <stop + id="stop6966" + offset="0.60000002" + style="stop-color:#729fcf;stop-opacity:1;" /> + <stop + style="stop-color:#729fcf;stop-opacity:0;" + offset="1" + id="stop6962" /> + </linearGradient> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient6958" + id="radialGradient6984" + cx="60.640625" + cy="22.65625" + fx="60.640625" + fy="22.65625" + r="2.6194003" + gradientTransform="matrix(2.1454532,0,0,3.0191635,-69.461,-45.746674)" + gradientUnits="userSpaceOnUse" /> + <linearGradient + inkscape:collect="always" + id="linearGradient3579"> + <stop + style="stop-color:white;stop-opacity:1;" + offset="0" + id="stop3581" /> + <stop + style="stop-color:white;stop-opacity:0;" + offset="1" + id="stop3583" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3579" + id="linearGradient3585" + x1="20.483149" + y1="3.4711361" + x2="28.357954" + y2="25.991137" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.09091,0,0,1.100001,-1.681827,0.84999)" /> + <linearGradient + id="linearGradient3228"> + <stop + style="stop-color:black;stop-opacity:1;" + offset="0" + id="stop3230" /> + <stop + id="stop3573" + offset="0.06770357" + style="stop-color:black;stop-opacity:0.42857143;" /> + <stop + id="stop3569" + offset="0.29894069" + style="stop-color:black;stop-opacity:0;" /> + <stop + style="stop-color:black;stop-opacity:0.49803922;" + offset="0.77437174" + id="stop3571" /> + <stop + style="stop-color:black;stop-opacity:1;" + offset="1" + id="stop3232" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3228" + id="linearGradient3567" + gradientUnits="userSpaceOnUse" + x1="17.999674" + y1="10.081399" + x2="30" + y2="10.081399" + gradientTransform="translate(0,3)" /> + <linearGradient + inkscape:collect="always" + id="linearGradient2920"> + <stop + style="stop-color:white;stop-opacity:1;" + offset="0" + id="stop2922" /> + <stop + style="stop-color:white;stop-opacity:0;" + offset="1" + id="stop2924" /> + </linearGradient> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient2920" + id="radialGradient2926" + cx="22.553526" + cy="10.432782" + fx="22.553526" + fy="10.432782" + r="6.46875" + gradientTransform="matrix(1.580773,0,0,0.961547,-12.77702,-2.531609)" + gradientUnits="userSpaceOnUse" /> + <linearGradient + inkscape:collect="always" + id="linearGradient2877"> + <stop + style="stop-color:white;stop-opacity:1;" + offset="0" + id="stop2879" /> + <stop + style="stop-color:white;stop-opacity:0;" + offset="1" + id="stop2881" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient2877" + id="linearGradient2894" + gradientUnits="userSpaceOnUse" + x1="21.961548" + y1="6.3608937" + x2="24.508121" + y2="10.75" /> + <linearGradient + inkscape:collect="always" + id="linearGradient3815"> + <stop + style="stop-color:black;stop-opacity:1;" + offset="0" + id="stop3817" /> + <stop + style="stop-color:black;stop-opacity:0;" + offset="1" + id="stop3819" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3815" + id="linearGradient2892" + gradientUnits="userSpaceOnUse" + x1="23.246162" + y1="24.761473" + x2="23.246162" + y2="15.94703" /> + <linearGradient + inkscape:collect="always" + id="linearGradient2867"> + <stop + style="stop-color:white;stop-opacity:1;" + offset="0" + id="stop2869" /> + <stop + style="stop-color:white;stop-opacity:0;" + offset="1" + id="stop2871" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient2867" + id="linearGradient2890" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.809211,0,2.763158)" + x1="19.583334" + y1="10.76408" + x2="23.176371" + y2="10.76408" /> + <linearGradient + id="linearGradient3734"> + <stop + style="stop-color:#babdb6;stop-opacity:1" + offset="0" + id="stop3736" /> + <stop + style="stop-color:white;stop-opacity:1" + offset="1" + id="stop3738" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3734" + id="linearGradient3740" + x1="24.6875" + y1="36.75" + x2="24.6875" + y2="28.617105" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(0,-1)" /> + <linearGradient + id="linearGradient4481"> + <stop + style="stop-color:#555753;stop-opacity:1;" + offset="0" + id="stop4483" /> + <stop + style="stop-color:#babdb6;stop-opacity:1" + offset="1" + id="stop4485" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4481" + id="linearGradient4487" + x1="17.625" + y1="20.814491" + x2="17.625" + y2="5.125" + gradientUnits="userSpaceOnUse" /> + <linearGradient + id="linearGradient2904"> + <stop + id="stop2906" + offset="0" + style="stop-color:#babdb6;stop-opacity:1" /> + <stop + style="stop-color:white;stop-opacity:1;" + offset="0.21551724" + id="stop2910" /> + <stop + id="stop2912" + offset="0.70243758" + style="stop-color:#c3c4c2;stop-opacity:1;" /> + <stop + id="stop2908" + offset="1" + style="stop-color:#888a85;stop-opacity:1" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient2904" + id="linearGradient2902" + x1="18.737373" + y1="13.351768" + x2="30.230837" + y2="13.351768" + gradientUnits="userSpaceOnUse" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient2943" + id="linearGradient2949" + x1="16.65625" + y1="16.14632" + x2="16.65625" + y2="20.381033" + gradientUnits="userSpaceOnUse" /> + <linearGradient + id="linearGradient2943"> + <stop + style="stop-color:#555753;stop-opacity:1" + offset="0" + id="stop2945" /> + <stop + style="stop-color:#2e3436;stop-opacity:1;" + offset="1" + id="stop2947" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient2943" + id="linearGradient2953" + gradientUnits="userSpaceOnUse" + x1="16.65625" + y1="16.14632" + x2="16.65625" + y2="20.381033" + gradientTransform="translate(14,0)" /> + <linearGradient + id="linearGradient2981"> + <stop + style="stop-color:#eeeeec;stop-opacity:1;" + offset="0" + id="stop2983" /> + <stop + style="stop-color:white;stop-opacity:1" + offset="1" + id="stop2985" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient2981" + id="linearGradient2987" + x1="23.374121" + y1="19.452076" + x2="21.649811" + y2="25.229111" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.940947,0,1.564893)" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3795" + id="linearGradient3805" + gradientUnits="userSpaceOnUse" + x1="13.567612" + y1="18.432873" + x2="13.567612" + y2="19.231655" + gradientTransform="translate(20,-1)" /> + <linearGradient + id="linearGradient3795"> + <stop + style="stop-color:white;stop-opacity:1" + offset="0" + id="stop3797" /> + <stop + style="stop-color:#eeeeec;stop-opacity:1;" + offset="1" + id="stop3799" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3795" + id="linearGradient3801" + x1="13.567612" + y1="18.432873" + x2="13.567612" + y2="19.231655" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(0,-1)" /> + <linearGradient + id="linearGradient3726"> + <stop + style="stop-color:#555753;stop-opacity:1" + offset="0" + id="stop3728" /> + <stop + style="stop-color:#888a85;stop-opacity:1" + offset="1" + id="stop3730" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3726" + id="linearGradient3732" + x1="25.606806" + y1="36.722809" + x2="23.640165" + y2="30.421146" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(0,-1)" /> + <linearGradient + inkscape:collect="always" + id="linearGradient3703"> + <stop + style="stop-color:white;stop-opacity:1;" + offset="0" + id="stop3705" /> + <stop + style="stop-color:white;stop-opacity:0;" + offset="1" + id="stop3707" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3703" + id="linearGradient3709" + x1="23.8125" + y1="41.836731" + x2="27.272261" + y2="28.590008" + gradientUnits="userSpaceOnUse" /> + <linearGradient + inkscape:collect="always" + id="linearGradient3779"> + <stop + style="stop-color:black;stop-opacity:1;" + offset="0" + id="stop3781" /> + <stop + style="stop-color:black;stop-opacity:0;" + offset="1" + id="stop3783" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3779" + id="linearGradient3785" + x1="23.997437" + y1="37.835339" + x2="29.74268" + y2="32.355263" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.980843,0,0,0.974547,0.59387,-0.156861)" /> + <linearGradient + inkscape:collect="always" + id="linearGradient2965"> + <stop + style="stop-color:#888a85;stop-opacity:1;" + offset="0" + id="stop2967" /> + <stop + style="stop-color:#888a85;stop-opacity:0;" + offset="1" + id="stop2969" /> + </linearGradient> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient2965" + id="radialGradient2971" + cx="23.82066" + cy="36.907261" + fx="23.82066" + fy="36.907261" + r="12.59534" + gradientTransform="matrix(1,0,0,0.508772,0,18.12988)" + gradientUnits="userSpaceOnUse" /> + <linearGradient + id="linearGradient3711" + inkscape:collect="always"> + <stop + id="stop3713" + offset="0" + style="stop-color:#babdb6;stop-opacity:1" /> + <stop + id="stop3715" + offset="1" + style="stop-color:#888a85;stop-opacity:1" /> + </linearGradient> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3711" + id="radialGradient3691" + cx="18.753521" + cy="40.578671" + fx="18.753521" + fy="40.578671" + r="13.08399" + gradientTransform="matrix(1.106546,0,0,0.58328,-1.909343,15.04719)" + gradientUnits="userSpaceOnUse" /> + <linearGradient + inkscape:collect="always" + id="linearGradient4465"> + <stop + style="stop-color:#2e3436;stop-opacity:1" + offset="0" + id="stop4467" /> + <stop + style="stop-color:#2e3436;stop-opacity:0" + offset="1" + id="stop4469" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4465" + id="linearGradient4460" + gradientUnits="userSpaceOnUse" + x1="32.864544" + y1="13.794194" + x2="32.864544" + y2="5.5441942" + gradientTransform="translate(-0.25,12.5)" /> + <linearGradient + id="linearGradient4475" + inkscape:collect="always"> + <stop + id="stop4477" + offset="0" + style="stop-color:black;stop-opacity:1" /> + <stop + id="stop4479" + offset="1" + style="stop-color:black;stop-opacity:0" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4475" + id="linearGradient4473" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(-0.25,13.5)" + x1="32.864544" + y1="13.794194" + x2="32.864544" + y2="5.5441942" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4499" + id="radialGradient4505" + cx="23.82066" + cy="36.907261" + fx="23.82066" + fy="36.907261" + r="12.59534" + gradientTransform="matrix(1,0,0,0.508772,0,18.12988)" + gradientUnits="userSpaceOnUse" /> + <linearGradient + inkscape:collect="always" + id="linearGradient4499"> + <stop + style="stop-color:black;stop-opacity:1;" + offset="0" + id="stop4501" /> + <stop + style="stop-color:black;stop-opacity:0;" + offset="1" + id="stop4503" /> + </linearGradient> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4499" + id="radialGradient3012" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.508772,0,18.12988)" + cx="23.82066" + cy="36.907261" + fx="23.82066" + fy="36.907261" + r="12.59534" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 24 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="48 : 24 : 1" + inkscape:persp3d-origin="24 : 16 : 1" + id="perspective2798" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient6958" + id="radialGradient3371" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(2.6999424,0,0,3.6828427,-122.46854,-61.286186)" + cx="72.495682" + cy="22.84375" + fx="72.495682" + fy="22.84375" + r="4.8202302" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient6958" + id="radialGradient3373" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(2.6999424,0,0,3.5713875,-122.46854,-58.740132)" + cx="72.495682" + cy="22.84375" + fx="72.495682" + fy="22.84375" + r="4.8202302" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient6958" + id="radialGradient3375" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.8087117,0,0,3.5234273,-57.039447,-57.368542)" + cx="70.53125" + cy="22.734375" + fx="70.53125" + fy="22.734375" + r="3.5975378" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient6958" + id="radialGradient3377" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(2.1454532,0,0,3.0191635,-53.287444,-45.746674)" + cx="60.640625" + cy="22.65625" + fx="60.640625" + fy="22.65625" + r="2.6194003" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4499" + id="radialGradient3026" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.508772,0,18.12988)" + cx="23.82066" + cy="36.907261" + fx="23.82066" + fy="36.907261" + r="12.59534" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4499" + id="radialGradient3028" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.508772,0,18.12988)" + cx="23.82066" + cy="36.907261" + fx="23.82066" + fy="36.907261" + r="12.59534" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3711" + id="radialGradient3030" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.106546,0,0,0.58328,-1.909343,15.04719)" + cx="18.753521" + cy="40.578671" + fx="18.753521" + fy="40.578671" + r="13.08399" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient2965" + id="radialGradient3032" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.508772,0,18.12988)" + cx="23.82066" + cy="36.907261" + fx="23.82066" + fy="36.907261" + r="12.59534" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3779" + id="linearGradient3034" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.980843,0,0,0.974547,0.59387,-0.156861)" + x1="23.997437" + y1="37.835339" + x2="29.74268" + y2="32.355263" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3703" + id="linearGradient3036" + gradientUnits="userSpaceOnUse" + x1="23.8125" + y1="41.836731" + x2="27.272261" + y2="28.590008" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3726" + id="linearGradient3038" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(0,-1)" + x1="25.606806" + y1="36.722809" + x2="23.640165" + y2="30.421146" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3795" + id="linearGradient3040" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(0,-1)" + x1="13.567612" + y1="18.432873" + x2="13.567612" + y2="19.231655" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3795" + id="linearGradient3042" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(20,-1)" + x1="13.567612" + y1="18.432873" + x2="13.567612" + y2="19.231655" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient2981" + id="linearGradient3044" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.940947,0,1.564893)" + x1="23.374121" + y1="19.452076" + x2="21.649811" + y2="25.229111" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient2943" + id="linearGradient3046" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(14,0)" + x1="16.65625" + y1="16.14632" + x2="16.65625" + y2="20.381033" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient2943" + id="linearGradient3048" + gradientUnits="userSpaceOnUse" + x1="16.65625" + y1="16.14632" + x2="16.65625" + y2="20.381033" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient2904" + id="linearGradient3050" + gradientUnits="userSpaceOnUse" + x1="18.737373" + y1="13.351768" + x2="30.230837" + y2="13.351768" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4481" + id="linearGradient3052" + gradientUnits="userSpaceOnUse" + x1="17.625" + y1="20.814491" + x2="17.625" + y2="5.125" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3734" + id="linearGradient3054" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(0,-1)" + x1="24.6875" + y1="36.75" + x2="24.6875" + y2="28.617105" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient2867" + id="linearGradient3056" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.809211,0,2.763158)" + x1="19.583334" + y1="10.76408" + x2="23.176371" + y2="10.76408" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3815" + id="linearGradient3058" + gradientUnits="userSpaceOnUse" + x1="23.246162" + y1="24.761473" + x2="23.246162" + y2="15.94703" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient2877" + id="linearGradient3060" + gradientUnits="userSpaceOnUse" + x1="21.961548" + y1="6.3608937" + x2="24.508121" + y2="10.75" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient2920" + id="radialGradient3062" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.580773,0,0,0.961547,-12.77702,-2.531609)" + cx="22.553526" + cy="10.432782" + fx="22.553526" + fy="10.432782" + r="6.46875" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3228" + id="linearGradient3064" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(0,3)" + x1="17.999674" + y1="10.081399" + x2="30" + y2="10.081399" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3579" + id="linearGradient3066" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.09091,0,0,1.100001,-1.681827,0.84999)" + x1="20.483149" + y1="3.4711361" + x2="28.357954" + y2="25.991137" /> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="12.270833" + inkscape:cx="23.999999" + inkscape:cy="23.999999" + inkscape:current-layer="layer1" + showgrid="true" + inkscape:grid-bbox="true" + inkscape:document-units="px" + inkscape:window-width="780" + inkscape:window-height="776" + inkscape:window-x="161" + inkscape:window-y="146" /> + <metadata + id="metadata2795"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + id="layer1" + inkscape:label="Layer 1" + inkscape:groupmode="layer"> + <g + style="display:inline" + id="g2915" + transform="translate(7.6010187,0.1428571)"> + <path + transform="matrix(0.727673,0,0,1.235135,7.166344,-12.0556)" + d="M 36.415999,36.907261 A 12.59534,6.4081554 0 1 1 11.22532,36.907261 A 12.59534,6.4081554 0 1 1 36.415999,36.907261 z" + sodipodi:ry="6.4081554" + sodipodi:rx="12.59534" + sodipodi:cy="36.907261" + sodipodi:cx="23.82066" + id="path2917" + style="opacity:0.1;fill:url(#radialGradient3026);fill-opacity:1;stroke:none;stroke-width:0.97730058;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:inline" + sodipodi:type="arc" /> + <path + transform="matrix(1.233813,0,0,1.235135,-4.890235,-6.055598)" + d="M 36.415999,36.907261 A 12.59534,6.4081554 0 1 1 11.22532,36.907261 A 12.59534,6.4081554 0 1 1 36.415999,36.907261 z" + sodipodi:ry="6.4081554" + sodipodi:rx="12.59534" + sodipodi:cy="36.907261" + sodipodi:cx="23.82066" + id="path2919" + style="opacity:0.7;fill:url(#radialGradient3028);fill-opacity:1;stroke:none;stroke-width:0.97730058;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:inline" + sodipodi:type="arc" /> + <path + transform="matrix(1.032128,0,0,1.014402,-8.596444e-2,1.56074)" + d="M 36.415999,36.907261 A 12.59534,6.4081554 0 1 1 11.22532,36.907261 A 12.59534,6.4081554 0 1 1 36.415999,36.907261 z" + sodipodi:ry="6.4081554" + sodipodi:rx="12.59534" + sodipodi:cy="36.907261" + sodipodi:cx="23.82066" + id="path2925" + style="opacity:1;fill:url(#radialGradient3030);fill-opacity:1;stroke:#555753;stroke-width:0.97730058;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:inline" + sodipodi:type="arc" /> + <path + transform="matrix(0.43667,0,0,0.429141,14.09824,21.41158)" + d="M 36.415999,36.907261 A 12.59534,6.4081554 0 1 1 11.22532,36.907261 A 12.59534,6.4081554 0 1 1 36.415999,36.907261 z" + sodipodi:ry="6.4081554" + sodipodi:rx="12.59534" + sodipodi:cy="36.907261" + sodipodi:cx="23.82066" + id="path2927" + style="opacity:1;fill:url(#radialGradient3032);fill-opacity:1;stroke:none;stroke-width:0.97730058;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:inline" + sodipodi:type="arc" /> + <path + sodipodi:nodetypes="ccssccc" + id="path2929" + d="M 27.35249,32.125 C 25.613836,32.860383 24.806671,34.177948 23.67433,35.292277 C 23.188021,35.599877 23.07463,36.001723 23.15468,36.568962 C 23.23473,37.136205 23.644126,37.624296 24.196826,37.787146 C 24.749524,37.949994 25.196373,37.917185 25.574713,37.485007 C 26.676195,35.285524 28.744563,33.983863 31,32.85591 C 29.870496,32.536987 28.651039,32.264053 27.35249,32.125 z" + style="opacity:0.7;fill:url(#linearGradient3034);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;display:inline" /> + <path + transform="matrix(1.032128,0,0,1.014402,-8.596444e-2,1.56074)" + d="M 23.8125,31.5 C 20.473005,31.5 17.440949,32.183256 15.34375,33.25 C 13.246551,34.316744 12.21875,35.666366 12.21875,36.90625 C 12.21875,38.146134 13.246551,39.495756 15.34375,40.5625 C 17.440949,41.629244 20.473005,42.312501 23.8125,42.3125 C 27.151995,42.3125 30.184051,41.629244 32.28125,40.5625 C 34.378449,39.495756 35.40625,38.146134 35.40625,36.90625 C 35.40625,35.666366 34.378449,34.316744 32.28125,33.25 C 30.184051,32.183256 27.151995,31.5 23.8125,31.5 z" + id="path2931" + style="opacity:0.4;fill:none;fill-opacity:1;stroke:url(#linearGradient3036);stroke-width:0.97730058;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:inline" + inkscape:original="M 23.8125 30.5 C 16.859872 30.5 11.21875 33.368948 11.21875 36.90625 C 11.21875 40.443552 16.859872 43.312502 23.8125 43.3125 C 30.765128 43.3125 36.406249 40.443552 36.40625 36.90625 C 36.40625 33.368948 30.765128 30.5 23.8125 30.5 z " + inkscape:radius="-0.99470079" + sodipodi:type="inkscape:offset" /> + <path + sodipodi:nodetypes="cc" + id="path2933" + d="M 24.5,27.5 L 24.5,36.5" + style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient3038);stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;display:inline" /> + <path + sodipodi:nodetypes="csc" + id="path2935" + d="M 34.500008,18.999997 C 34.5,23.285708 30.040008,26.499998 24.500006,26.499998 C 18.960004,26.499998 14.5,23.285708 14.500003,18.999997" + style="fill:none;fill-opacity:1;stroke:#888a85;stroke-width:3.00000024;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:inline" /> + <rect + y="16.499998" + x="12.5" + height="2.9999995" + width="4" + id="rect2937" + style="opacity:1;fill:url(#linearGradient3040);fill-opacity:1;stroke:#888a85;stroke-width:0.99999988;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:inline" /> + <rect + y="16.499998" + x="32.5" + height="2.9999995" + width="4" + id="rect2939" + style="opacity:1;fill:url(#linearGradient3042);fill-opacity:1;stroke:#888a85;stroke-width:0.99999988;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:inline" /> + <path + sodipodi:nodetypes="csc" + id="path2941" + d="M 34.500008,18.999991 C 34.500008,23.285701 30.040008,26.499992 24.500006,26.499992 C 18.960004,26.499992 14.5,23.285701 14.500003,18.999991" + style="fill:none;fill-opacity:1;stroke:url(#linearGradient3044);stroke-width:0.99999982;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:inline" /> + <rect + ry="0.9722718" + rx="0.9722718" + y="15" + x="30" + height="6" + width="3.0000005" + id="rect2943" + style="opacity:1;fill:url(#linearGradient3046);fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:inline" /> + <path + transform="matrix(1.5,0,0,1.5,12.25,-11.25)" + d="M 14.5,19 A 0.5,0.5 0 1 1 13.5,19 A 0.5,0.5 0 1 1 14.5,19 z" + sodipodi:ry="0.5" + sodipodi:rx="0.5" + sodipodi:cy="19" + sodipodi:cx="14" + id="path2945" + style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:inline" + sodipodi:type="arc" /> + <rect + ry="0.9722718" + rx="0.9722718" + y="15" + x="16" + height="6" + width="3.0000005" + id="rect2947" + style="opacity:1;fill:url(#linearGradient3048);fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:inline" /> + <rect + ry="7.0108709" + rx="7.0000019" + y="1.5000002" + x="17.499996" + height="24.000008" + width="14.000004" + id="rect2949" + style="opacity:1;fill:url(#linearGradient3050);fill-opacity:1;stroke:url(#linearGradient3052);stroke-width:1.00000048;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:inline" /> + <path + sodipodi:nodetypes="cc" + id="path2951" + d="M 24.5,26.5 L 24.5,36.5" + style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient3054);stroke-width:1px;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1;display:inline" /> + <path + transform="matrix(1.5,0,0,1.5,-7.75,-11.25)" + d="M 14.5,19 A 0.5,0.5 0 1 1 13.5,19 A 0.5,0.5 0 1 1 14.5,19 z" + sodipodi:ry="0.5" + sodipodi:rx="0.5" + sodipodi:cy="19" + sodipodi:cx="14" + id="path2953" + style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:inline" + sodipodi:type="arc" /> + <g + id="g2955" + style="display:inline"> + <rect + style="opacity:1;fill:url(#linearGradient3056);fill-opacity:1;stroke:none;stroke-width:1.00000036;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:inline" + id="rect2957" + width="4" + height="15.374996" + x="20" + y="6" + rx="2" + ry="2.1991496" /> + <path + sodipodi:type="inkscape:offset" + inkscape:radius="-0.54470092" + inkscape:original="M 24.5 2.5 C 20.621999 2.5 17.5 5.615977 17.5 9.5 L 17.5 19.5 C 17.5 23.384022 20.621999 26.5 24.5 26.5 C 28.378001 26.5 31.5 23.384022 31.5 19.5 L 31.5 9.5 C 31.5 5.6159775 28.378001 2.5 24.5 2.5 z " + style="opacity:0.2;fill:url(#linearGradient3058);fill-opacity:1;stroke:none;stroke-width:1.00000048;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:inline" + id="path2959" + d="M 24.5,3.03125 C 20.913777,3.03125 18.03125,5.9078661 18.03125,9.5 L 18.03125,19.5 C 18.03125,23.092133 20.913778,25.96875 24.5,25.96875 C 28.086222,25.96875 30.96875,23.092133 30.96875,19.5 L 30.96875,9.5 C 30.96875,5.9078666 28.086223,3.03125 24.5,3.03125 z" + transform="translate(0,-1)" /> + <path + sodipodi:type="arc" + style="opacity:1;fill:url(#linearGradient3060);fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="path2961" + sodipodi:cx="23.65625" + sodipodi:cy="7.6875" + sodipodi:rx="3.34375" + sodipodi:ry="3.0625" + d="M 27,7.6875 A 3.34375,3.0625 0 1 1 20.3125,7.6875 A 3.34375,3.0625 0 1 1 27,7.6875 z" + transform="matrix(1,0,0,1.081633,-0.375,-1.252551)" /> + </g> + <path + sodipodi:nodetypes="cccccc" + id="path2963" + d="M 24.5,3.03125 C 20.913777,3.03125 18.03125,5.9078661 18.03125,9.5 L 18.03125,14.5 L 30.96875,14.5 L 30.96875,9.5 C 30.96875,5.9078666 28.086223,3.03125 24.5,3.03125 z" + style="opacity:0.9;fill:url(#radialGradient3062);fill-opacity:1;stroke:none;stroke-width:1.00000048;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;display:inline" + transform="translate(0,-1)" /> + <path + sodipodi:nodetypes="csssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssc" + id="path2965" + d="M 22.5,3 C 22.224,3 22,3.224 22,3.5 C 22,3.776 22.224,4 22.5,4 C 22.776,4 23,3.776 23,3.5 C 23,3.224 22.776,3 22.5,3 z M 24.5,3 C 24.224,3 24,3.224 24,3.5 C 24,3.776 24.224,4 24.5,4 C 24.776,4 25,3.776 25,3.5 C 25,3.224 24.776,3 24.5,3 z M 26.5,3 C 26.224,3 26,3.224 26,3.5 C 26,3.776 26.224,4 26.5,4 C 26.776,4 27,3.776 27,3.5 C 27,3.224 26.776,3 26.5,3 z M 21.5,4 C 21.224,4 21,4.224 21,4.5 C 21,4.776 21.224,5 21.5,5 C 21.776,5 22,4.776 22,4.5 C 22,4.224 21.776,4 21.5,4 z M 23.5,4 C 23.224,4 22.999999,4.2240007 23,4.5 C 23,4.7759993 23.223999,5 23.5,5 C 23.776,5 24,4.7759993 24,4.5 C 24,4.2240007 23.776,4 23.5,4 z M 25.5,4 C 25.224,4 24.999999,4.2240007 25,4.5 C 25,4.7759993 25.223999,5 25.5,5 C 25.776,5 26,4.7759993 26,4.5 C 26,4.2240007 25.776,4 25.5,4 z M 27.5,4 C 27.224,4 27,4.224 27,4.5 C 27,4.776 27.224,5 27.5,5 C 27.776,5 28,4.776 28,4.5 C 28,4.224 27.776,4 27.5,4 z M 20.5,5 C 20.224,5 19.999999,5.2240008 20,5.5 C 20,5.7759993 20.223999,6 20.5,6 C 20.776,6 21,5.7759994 21,5.5 C 21,5.2240007 20.776,5 20.5,5 z M 22.5,5 C 22.224,5 21.999999,5.2240008 22,5.5 C 22,5.7759993 22.223999,6 22.5,6 C 22.776,6 23,5.7759994 23,5.5 C 23,5.2240007 22.776,5 22.5,5 z M 24.5,5 C 24.224,5 23.999999,5.2240008 24,5.5 C 24,5.7759993 24.223999,6 24.5,6 C 24.776,6 25,5.7759994 25,5.5 C 25,5.2240007 24.776,5 24.5,5 z M 26.5,5 C 26.224,5 25.999999,5.2240008 26,5.5 C 26,5.7759993 26.223999,6 26.5,6 C 26.776,6 27,5.7759994 27,5.5 C 27,5.2240007 26.776,5 26.5,5 z M 28.5,5 C 28.224,5 28,5.224 28,5.5 C 28,5.776 28.224,6 28.5,6 C 28.776,6 29,5.776 29,5.5 C 29,5.224 28.776,5 28.5,5 z M 19.5,6 C 19.224,6 18.999999,6.2240008 19,6.5 C 19,6.7759993 19.223999,7 19.5,7 C 19.776,7 20,6.7759994 20,6.5 C 20,6.2240007 19.776,6 19.5,6 z M 21.5,6 C 21.224,6 20.999999,6.2240008 21,6.5 C 21,6.7759993 21.223999,7 21.5,7 C 21.776,7 22,6.7759994 22,6.5 C 22,6.2240007 21.776,6 21.5,6 z M 23.5,6 C 23.224,6 22.999999,6.2240008 23,6.5 C 23,6.7759993 23.223999,7 23.5,7 C 23.776,7 24,6.7759994 24,6.5 C 24,6.2240007 23.776,6 23.5,6 z M 25.5,6 C 25.224,6 24.999999,6.2240008 25,6.5 C 25,6.7759993 25.223999,7 25.5,7 C 25.776,7 26,6.7759994 26,6.5 C 26,6.2240007 25.776,6 25.5,6 z M 27.5,6 C 27.224,6 26.999999,6.2240008 27,6.5 C 27,6.7759993 27.223999,7 27.5,7 C 27.776,7 28,6.7759994 28,6.5 C 28,6.2240007 27.776,6 27.5,6 z M 29.5,6 C 29.224,6 29,6.224 29,6.5 C 29,6.776 29.224,7 29.5,7 C 29.776,7 30,6.776 30,6.5 C 30,6.224 29.776,6 29.5,6 z M 20.5,7 C 20.224,7 19.999999,7.2240008 20,7.5 C 20,7.7759993 20.223999,8.0000002 20.5,8 C 20.776,8 21,7.7759994 21,7.5 C 21,7.2240007 20.776,7 20.5,7 z M 22.5,7 C 22.224,7 21.999999,7.2240008 22,7.5 C 22,7.7759993 22.223999,8.0000002 22.5,8 C 22.776,8 23,7.7759994 23,7.5 C 23,7.2240007 22.776,7 22.5,7 z M 24.5,7 C 24.224,7 23.999999,7.2240008 24,7.5 C 24,7.7759993 24.223999,8.0000002 24.5,8 C 24.776,8 25,7.7759994 25,7.5 C 25,7.2240007 24.776,7 24.5,7 z M 26.5,7 C 26.224,7 25.999999,7.2240008 26,7.5 C 26,7.7759993 26.223999,8.0000002 26.5,8 C 26.776,8 27,7.7759994 27,7.5 C 27,7.2240007 26.776,7 26.5,7 z M 28.5,7 C 28.224,7 27.999999,7.2240008 28,7.5 C 28,7.7759993 28.223999,8.0000002 28.5,8 C 28.776,8 29,7.7759994 29,7.5 C 29,7.2240007 28.776,7 28.5,7 z M 30.5,7 C 30.224,7 30,7.224 30,7.5 C 30,7.776 30.224,8 30.5,8 C 30.776,8 31,7.776 31,7.5 C 31,7.224 30.776,7 30.5,7 z M 19.5,8 C 19.224,8 18.999999,8.2240008 19,8.5 C 19,8.7759993 19.223999,9 19.5,9 C 19.776,9 20,8.7759994 20,8.5 C 20,8.2240007 19.776,8 19.5,8 z M 21.5,8 C 21.224,8 20.999999,8.2240008 21,8.5 C 21,8.7759993 21.223999,9 21.5,9 C 21.776,9 22,8.7759994 22,8.5 C 22,8.2240007 21.776,8 21.5,8 z M 23.5,8 C 23.224,8 22.999999,8.2240008 23,8.5 C 23,8.7759993 23.223999,9 23.5,9 C 23.776,9 24,8.7759994 24,8.5 C 24,8.2240007 23.776,8 23.5,8 z M 25.5,8 C 25.224,8 24.999999,8.2240008 25,8.5 C 25,8.7759993 25.223999,9 25.5,9 C 25.776,9 26,8.7759994 26,8.5 C 26,8.2240007 25.776,8 25.5,8 z M 27.5,8 C 27.224,8 26.999999,8.2240008 27,8.5 C 27,8.7759993 27.223999,9 27.5,9 C 27.776,9 28,8.7759994 28,8.5 C 28,8.2240007 27.776,8 27.5,8 z M 29.5,8 C 29.224,8 28.999999,8.2240008 29,8.5 C 29,8.7759993 29.223999,9 29.5,9 C 29.776,9 30,8.7759994 30,8.5 C 30,8.2240007 29.776,8 29.5,8 z M 18.5,9 C 18.224,9 17.999999,9.224001 18,9.5 C 18,9.775999 18.223999,10 18.5,10 C 18.776,10 19,9.775999 19,9.5 C 19,9.224001 18.776,9 18.5,9 z M 20.5,9 C 20.224,9 19.999999,9.224001 20,9.5 C 20,9.775999 20.223999,10 20.5,10 C 20.776,10 21,9.775999 21,9.5 C 21,9.224001 20.776,9 20.5,9 z M 22.5,9 C 22.224,9 21.999999,9.224001 22,9.5 C 22,9.775999 22.223999,10 22.5,10 C 22.776,10 23,9.775999 23,9.5 C 23,9.224001 22.776,9 22.5,9 z M 24.5,9 C 24.224,9 23.999999,9.224001 24,9.5 C 24,9.775999 24.223999,10 24.5,10 C 24.776,10 25,9.775999 25,9.5 C 25,9.224001 24.776,9 24.5,9 z M 26.5,9 C 26.224,9 25.999999,9.224001 26,9.5 C 26,9.775999 26.223999,10 26.5,10 C 26.776,10 27,9.775999 27,9.5 C 27,9.224001 26.776,9 26.5,9 z M 28.5,9 C 28.224,9 27.999999,9.224001 28,9.5 C 28,9.775999 28.223999,10 28.5,10 C 28.776,10 29,9.775999 29,9.5 C 29,9.224001 28.776,9 28.5,9 z M 30.5,9 C 30.224,9 30,9.224 30,9.5 C 30,9.776 30.224,10 30.5,10 C 30.776,10 31,9.776 31,9.5 C 31,9.224 30.776,9 30.5,9 z M 19.5,10 C 19.224,10 18.999999,10.224001 19,10.5 C 19,10.775999 19.223999,11 19.5,11 C 19.776,11 20,10.775999 20,10.5 C 20,10.224001 19.776,10 19.5,10 z M 21.5,10 C 21.224,10 20.999999,10.224001 21,10.5 C 21,10.775999 21.223999,11 21.5,11 C 21.776,11 22,10.775999 22,10.5 C 22,10.224001 21.776,10 21.5,10 z M 23.5,10 C 23.224,10 22.999999,10.224001 23,10.5 C 23,10.775999 23.223999,11 23.5,11 C 23.776,11 24,10.775999 24,10.5 C 24,10.224001 23.776,10 23.5,10 z M 25.5,10 C 25.224,10 24.999999,10.224001 25,10.5 C 25,10.775999 25.223999,11 25.5,11 C 25.776,11 26,10.775999 26,10.5 C 26,10.224001 25.776,10 25.5,10 z M 27.5,10 C 27.224,10 26.999999,10.224001 27,10.5 C 27,10.775999 27.223999,11 27.5,11 C 27.776,11 28,10.775999 28,10.5 C 28,10.224001 27.776,10 27.5,10 z M 29.5,10 C 29.224,10 28.999999,10.224001 29,10.5 C 29,10.775999 29.223999,11 29.5,11 C 29.776,11 30,10.775999 30,10.5 C 30,10.224001 29.776,10 29.5,10 z M 18.5,11 C 18.224,11 17.999999,11.224 18,11.5 C 18,11.775999 18.223999,12 18.5,12 C 18.776,12 19,11.775999 19,11.5 C 19,11.224001 18.776,11 18.5,11 z M 20.5,11 C 20.224,11 19.999999,11.224 20,11.5 C 20,11.775999 20.223999,12 20.5,12 C 20.776,12 21,11.775999 21,11.5 C 21,11.224001 20.776,11 20.5,11 z M 22.5,11 C 22.224,11 21.999999,11.224 22,11.5 C 22,11.775999 22.223999,12 22.5,12 C 22.776,12 23,11.775999 23,11.5 C 23,11.224001 22.776,11 22.5,11 z M 24.5,11 C 24.224,11 23.999999,11.224 24,11.5 C 24,11.775999 24.223999,12 24.5,12 C 24.776,12 25,11.775999 25,11.5 C 25,11.224001 24.776,11 24.5,11 z M 26.5,11 C 26.224,11 25.999999,11.224 26,11.5 C 26,11.775999 26.223999,12 26.5,12 C 26.776,12 27,11.775999 27,11.5 C 27,11.224001 26.776,11 26.5,11 z M 28.5,11 C 28.224,11 27.999999,11.224 28,11.5 C 28,11.775999 28.223999,12 28.5,12 C 28.776,12 29,11.775999 29,11.5 C 29,11.224001 28.776,11 28.5,11 z M 30.5,11 C 30.224,11 30,11.224 30,11.5 C 30,11.776 30.224,12 30.5,12 C 30.776,12 31,11.776 31,11.5 C 31,11.224 30.776,11 30.5,11 z M 19.5,12 C 19.224,12 18.999999,12.224 19,12.5 C 19,12.775999 19.223999,13 19.5,13 C 19.776,13 20,12.775999 20,12.5 C 20,12.224001 19.776,12 19.5,12 z M 21.5,12 C 21.224,12 20.999999,12.224 21,12.5 C 21,12.775999 21.223999,13 21.5,13 C 21.776,13 22,12.775999 22,12.5 C 22,12.224001 21.776,12 21.5,12 z M 23.5,12 C 23.224,12 22.999999,12.224 23,12.5 C 23,12.775999 23.223999,13 23.5,13 C 23.776,13 24,12.775999 24,12.5 C 24,12.224001 23.776,12 23.5,12 z M 25.5,12 C 25.224,12 24.999999,12.224 25,12.5 C 25,12.775999 25.223999,13 25.5,13 C 25.776,13 26,12.775999 26,12.5 C 26,12.224001 25.776,12 25.5,12 z M 27.5,12 C 27.224,12 26.999999,12.224 27,12.5 C 27,12.775999 27.223999,13 27.5,13 C 27.776,13 28,12.775999 28,12.5 C 28,12.224001 27.776,12 27.5,12 z M 29.5,12 C 29.224,12 28.999999,12.224 29,12.5 C 29,12.775999 29.223999,13 29.5,13 C 29.776,13 30,12.775999 30,12.5 C 30,12.224001 29.776,12 29.5,12 z M 18.5,13 C 18.224,13 17.999999,13.224 18,13.5 C 18,13.775999 18.223999,14 18.5,14 C 18.776,14 19,13.775999 19,13.5 C 19,13.224001 18.776,13 18.5,13 z M 20.5,13 C 20.224,13 19.999999,13.224 20,13.5 C 20,13.775999 20.223999,14 20.5,14 C 20.776,14 21,13.775999 21,13.5 C 21,13.224001 20.776,13 20.5,13 z M 22.5,13 C 22.224,13 21.999999,13.224 22,13.5 C 22,13.775999 22.223999,14 22.5,14 C 22.776,14 23,13.775999 23,13.5 C 23,13.224001 22.776,13 22.5,13 z M 24.5,13 C 24.224,13 23.999999,13.224 24,13.5 C 24,13.775999 24.223999,14 24.5,14 C 24.776,14 25,13.775999 25,13.5 C 25,13.224001 24.776,13 24.5,13 z M 26.5,13 C 26.224,13 25.999999,13.224 26,13.5 C 26,13.775999 26.223999,14 26.5,14 C 26.776,14 27,13.775999 27,13.5 C 27,13.224001 26.776,13 26.5,13 z M 28.5,13 C 28.224,13 27.999999,13.224 28,13.5 C 28,13.775999 28.223999,14 28.5,14 C 28.776,14 29,13.775999 29,13.5 C 29,13.224001 28.776,13 28.5,13 z M 30.5,13 C 30.224,13 30,13.224 30,13.5 C 30,13.776 30.224,14 30.5,14 C 30.776,14 31,13.776 31,13.5 C 31,13.224 30.776,13 30.5,13 z M 19.5,14 C 19.224,14 18.999999,14.224 19,14.5 C 19,14.775999 19.223999,15 19.5,15 C 19.776,15 20,14.775999 20,14.5 C 20,14.224001 19.776,14 19.5,14 z M 21.5,14 C 21.224,14 20.999999,14.224 21,14.5 C 21,14.775999 21.223999,15 21.5,15 C 21.776,15 22,14.775999 22,14.5 C 22,14.224001 21.776,14 21.5,14 z M 23.5,14 C 23.224,14 22.999999,14.224 23,14.5 C 23,14.775999 23.223999,15 23.5,15 C 23.776,15 24,14.775999 24,14.5 C 24,14.224001 23.776,14 23.5,14 z M 25.5,14 C 25.224,14 24.999999,14.224 25,14.5 C 25,14.775999 25.223999,15 25.5,15 C 25.776,15 26,14.775999 26,14.5 C 26,14.224001 25.776,14 25.5,14 z M 27.5,14 C 27.224,14 26.999999,14.224 27,14.5 C 27,14.775999 27.223999,15 27.5,15 C 27.776,15 28,14.775999 28,14.5 C 28,14.224001 27.776,14 27.5,14 z M 29.5,14 C 29.224,14 28.999999,14.224 29,14.5 C 29,14.775999 29.223999,15 29.5,15 C 29.776,15 30,14.775999 30,14.5 C 30,14.224001 29.776,14 29.5,14 z M 18.5,15 C 18.224,15 17.999999,15.224 18,15.5 C 18,15.775999 18.223999,16 18.5,16 C 18.776,16 19,15.775999 19,15.5 C 19,15.224001 18.776,15 18.5,15 z M 20.5,15 C 20.224,15 19.999999,15.224 20,15.5 C 20,15.775999 20.223999,16 20.5,16 C 20.776,16 21,15.775999 21,15.5 C 21,15.224001 20.776,15 20.5,15 z M 22.5,15 C 22.224,15 21.999999,15.224 22,15.5 C 22,15.775999 22.223999,16 22.5,16 C 22.776,16 23,15.775999 23,15.5 C 23,15.224001 22.776,15 22.5,15 z M 24.5,15 C 24.224,15 23.999999,15.224 24,15.5 C 24,15.775999 24.223999,16 24.5,16 C 24.776,16 25,15.775999 25,15.5 C 25,15.224001 24.776,15 24.5,15 z M 26.5,15 C 26.224,15 25.999999,15.224 26,15.5 C 26,15.775999 26.223999,16 26.5,16 C 26.776,16 27,15.775999 27,15.5 C 27,15.224001 26.776,15 26.5,15 z M 28.5,15 C 28.224,15 27.999999,15.224 28,15.5 C 28,15.775999 28.223999,16 28.5,16 C 28.776,16 29,15.775999 29,15.5 C 29,15.224001 28.776,15 28.5,15 z M 30.5,15 C 30.224,15 30,15.224 30,15.5 C 30,15.776 30.224,16 30.5,16 C 30.776,16 31,15.776 31,15.5 C 31,15.224 30.776,15 30.5,15 z M 19.5,16 C 19.224,16 18.999999,16.224001 19,16.5 C 19,16.775999 19.223999,17 19.5,17 C 19.776,17 20,16.776 20,16.5 C 20,16.224001 19.776,16 19.5,16 z M 21.5,16 C 21.224,16 20.999999,16.224001 21,16.5 C 21,16.775999 21.223999,17 21.5,17 C 21.776,17 22,16.776 22,16.5 C 22,16.224001 21.776,16 21.5,16 z M 23.5,16 C 23.224,16 22.999999,16.224001 23,16.5 C 23,16.775999 23.223999,17 23.5,17 C 23.776,17 24,16.776 24,16.5 C 24,16.224001 23.776,16 23.5,16 z M 25.5,16 C 25.224,16 24.999999,16.224001 25,16.5 C 25,16.775999 25.223999,17 25.5,17 C 25.776,17 26,16.776 26,16.5 C 26,16.224001 25.776,16 25.5,16 z M 27.5,16 C 27.224,16 26.999999,16.224001 27,16.5 C 27,16.775999 27.223999,17 27.5,17 C 27.776,17 28,16.776 28,16.5 C 28,16.224001 27.776,16 27.5,16 z M 29.5,16 C 29.224,16 28.999999,16.224 29,16.5 C 29,16.775999 29.223999,17 29.5,17 C 29.776,17 30,16.775999 30,16.5 C 30,16.224001 29.776,16 29.5,16 z M 18.5,17 C 18.224,17 17.999999,17.224001 18,17.5 C 18,17.775999 18.223999,18 18.5,18 C 18.776,18 19,17.776 19,17.5 C 19,17.224001 18.776,17 18.5,17 z M 20.5,17 C 20.224,17 19.999999,17.224001 20,17.5 C 20,17.775999 20.223999,18 20.5,18 C 20.776,18 21,17.776 21,17.5 C 21,17.224001 20.776,17 20.5,17 z M 22.5,17 C 22.224,17 21.999999,17.224001 22,17.5 C 22,17.775999 22.223999,18 22.5,18 C 22.776,18 23,17.776 23,17.5 C 23,17.224001 22.776,17 22.5,17 z M 24.5,17 C 24.224,17 23.999999,17.224001 24,17.5 C 24,17.775999 24.223999,18 24.5,18 C 24.776,18 25,17.776 25,17.5 C 25,17.224001 24.776,17 24.5,17 z M 26.5,17 C 26.224,17 25.999999,17.224001 26,17.5 C 26,17.775999 26.223999,18 26.5,18 C 26.776,18 27,17.776 27,17.5 C 27,17.224001 26.776,17 26.5,17 z M 28.5,17 C 28.224,17 27.999999,17.224001 28,17.5 C 28,17.775999 28.223999,18 28.5,18 C 28.776,18 29,17.776 29,17.5 C 29,17.224001 28.776,17 28.5,17 z M 30.5,17 C 30.224,17 30,17.224 30,17.5 C 30,17.776 30.224,18 30.5,18 C 30.776,18 31,17.776 31,17.5 C 31,17.224 30.776,17 30.5,17 z M 19.5,18 C 19.224,18 18.999999,18.224001 19,18.5 C 19,18.775999 19.223999,19 19.5,19 C 19.776,19 20,18.776 20,18.5 C 20,18.224001 19.776,18 19.5,18 z M 21.5,18 C 21.224,18 20.999999,18.224001 21,18.5 C 21,18.775999 21.223999,19 21.5,19 C 21.776,19 22,18.776 22,18.5 C 22,18.224001 21.776,18 21.5,18 z M 23.5,18 C 23.224,18 22.999999,18.224001 23,18.5 C 23,18.775999 23.223999,19 23.5,19 C 23.776,19 24,18.776 24,18.5 C 24,18.224001 23.776,18 23.5,18 z M 25.5,18 C 25.224,18 24.999999,18.224001 25,18.5 C 25,18.775999 25.223999,19 25.5,19 C 25.776,19 26,18.776 26,18.5 C 26,18.224001 25.776,18 25.5,18 z M 27.5,18 C 27.224,18 26.999999,18.224001 27,18.5 C 27,18.775999 27.223999,19 27.5,19 C 27.776,19 28,18.776 28,18.5 C 28,18.224001 27.776,18 27.5,18 z M 29.5,18 C 29.224,18 28.999999,18.224001 29,18.5 C 29,18.775999 29.223999,19 29.5,19 C 29.776,19 30,18.776 30,18.5 C 30,18.224001 29.776,18 29.5,18 z M 18.5,19 C 18.224,19 17.999999,19.224001 18,19.5 C 18,19.775999 18.223999,19.999999 18.5,20 C 18.776,20 19,19.776 19,19.5 C 19,19.224001 18.776,19 18.5,19 z M 20.5,19 C 20.224,19 19.999999,19.224001 20,19.5 C 20,19.775999 20.223999,19.999999 20.5,20 C 20.776,20 21,19.776 21,19.5 C 21,19.224001 20.776,19 20.5,19 z M 22.5,19 C 22.224,19 21.999999,19.224001 22,19.5 C 22,19.775999 22.223999,19.999999 22.5,20 C 22.776,20 23,19.776 23,19.5 C 23,19.224001 22.776,19 22.5,19 z M 24.5,19 C 24.224,19 23.999999,19.224001 24,19.5 C 24,19.775999 24.223999,19.999999 24.5,20 C 24.776,20 25,19.776 25,19.5 C 25,19.224001 24.776,19 24.5,19 z M 26.5,19 C 26.224,19 25.999999,19.224001 26,19.5 C 26,19.775999 26.223999,19.999999 26.5,20 C 26.776,20 27,19.776 27,19.5 C 27,19.224001 26.776,19 26.5,19 z M 28.5,19 C 28.224,19 27.999999,19.224001 28,19.5 C 28,19.775999 28.223999,19.999999 28.5,20 C 28.776,20 29,19.776 29,19.5 C 29,19.224001 28.776,19 28.5,19 z M 30.5,19 C 30.224,19 30,19.224 30,19.5 C 30,19.776 30.224,20 30.5,20 C 30.776,20 31,19.776 31,19.5 C 31,19.224 30.776,19 30.5,19 z M 19.5,20 C 19.224,20 18.999999,20.224001 19,20.5 C 19,20.775999 19.223999,20.999999 19.5,21 C 19.776,21 20,20.776 20,20.5 C 20,20.224001 19.776,20 19.5,20 z M 21.5,20 C 21.224,20 20.999999,20.224001 21,20.5 C 21,20.775999 21.223999,20.999999 21.5,21 C 21.776,21 22,20.776 22,20.5 C 22,20.224001 21.776,20 21.5,20 z M 23.5,20 C 23.224,20 22.999999,20.224001 23,20.5 C 23,20.775999 23.223999,20.999999 23.5,21 C 23.776,21 24,20.776 24,20.5 C 24,20.224001 23.776,20 23.5,20 z M 25.5,20 C 25.224,20 24.999999,20.224001 25,20.5 C 25,20.775999 25.223999,20.999999 25.5,21 C 25.776,21 26,20.776 26,20.5 C 26,20.224001 25.776,20 25.5,20 z M 27.5,20 C 27.224,20 26.999999,20.224001 27,20.5 C 27,20.775999 27.223999,20.999999 27.5,21 C 27.776,21 28,20.776 28,20.5 C 28,20.224001 27.776,20 27.5,20 z M 29.5,20 C 29.224,20 28.999999,20.224001 29,20.5 C 29,20.775999 29.223999,20.999999 29.5,21 C 29.776,21 30,20.776 30,20.5 C 30,20.224001 29.776,20 29.5,20 z M 20.5,21 C 20.224,21 19.999999,21.224001 20,21.5 C 20,21.775999 20.223999,21.999999 20.5,22 C 20.776,22 21,21.776 21,21.5 C 21,21.224001 20.776,21 20.5,21 z M 22.5,21 C 22.224,21 21.999999,21.224001 22,21.5 C 22,21.775999 22.223999,21.999999 22.5,22 C 22.776,22 23,21.776 23,21.5 C 23,21.224001 22.776,21 22.5,21 z M 24.5,21 C 24.224,21 23.999999,21.224001 24,21.5 C 24,21.775999 24.223999,21.999999 24.5,22 C 24.776,22 25,21.776 25,21.5 C 25,21.224001 24.776,21 24.5,21 z M 26.5,21 C 26.224,21 25.999999,21.224001 26,21.5 C 26,21.775999 26.223999,21.999999 26.5,22 C 26.776,22 27,21.776 27,21.5 C 27,21.224001 26.776,21 26.5,21 z M 28.5,21 C 28.224,21 27.999999,21.224001 28,21.5 C 28,21.775999 28.223999,21.999999 28.5,22 C 28.776,22 29,21.776 29,21.5 C 29,21.224001 28.776,21 28.5,21 z M 21.5,22 C 21.224,22 20.999999,22.224001 21,22.5 C 21,22.775999 21.223999,22.999999 21.5,23 C 21.776,23 22,22.776 22,22.5 C 22,22.224001 21.776,22 21.5,22 z M 23.5,22 C 23.224,22 22.999999,22.224001 23,22.5 C 23,22.775999 23.223999,22.999999 23.5,23 C 23.776,23 24,22.776 24,22.5 C 24,22.224001 23.776,22 23.5,22 z M 25.5,22 C 25.224,22 24.999999,22.224001 25,22.5 C 25,22.775999 25.223999,22.999999 25.5,23 C 25.776,23 26,22.776 26,22.5 C 26,22.224001 25.776,22 25.5,22 z M 27.5,22 C 27.224,22 26.999999,22.224001 27,22.5 C 27,22.775999 27.223999,22.999999 27.5,23 C 27.776,23 28,22.776 28,22.5 C 28,22.224001 27.776,22 27.5,22 z M 22.5,23 C 22.224,23 21.999999,23.224001 22,23.5 C 22,23.775999 22.223999,23.999999 22.5,24 C 22.776,24 23,23.776 23,23.5 C 23,23.224001 22.776,23 22.5,23 z M 24.5,23 C 24.224,23 23.999999,23.224001 24,23.5 C 24,23.775999 24.223999,23.999999 24.5,24 C 24.776,24 25,23.776 25,23.5 C 25,23.224001 24.776,23 24.5,23 z M 26.5,23 C 26.224,23 25.999999,23.224001 26,23.5 C 26,23.775999 26.223999,23.999999 26.5,24 C 26.776,24 27,23.776 27,23.5 C 27,23.224001 26.776,23 26.5,23 z M 23.5,24 C 23.224,24 22.999999,24.224001 23,24.5 C 23,24.775999 23.223999,24.999999 23.5,25 C 23.776,25 24,24.776 24,24.5 C 24,24.224001 23.776,24 23.5,24 z M 25.5,24 C 25.224,24 24.999999,24.224001 25,24.5 C 25,24.775999 25.223999,24.999999 25.5,25 C 25.776,25 26,24.776 26,24.5 C 26,24.224001 25.776,24 25.5,24 z" + style="opacity:0.5;fill:url(#linearGradient3064);fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:inline" /> + <rect + ry="6.0500031" + rx="6.0000024" + y="2.5000026" + x="18.500008" + height="22.000008" + width="12.000005" + id="rect2967" + style="opacity:1;fill:none;fill-opacity:1;stroke:url(#linearGradient3066);stroke-width:1.0000006;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:inline" /> + </g> + <g + style="stroke:url(#radialGradient3373);display:inline" + id="g26136" + transform="matrix(0.4579202,0,0,0.9423324,-20.358831,-4.6737794)"> + <path + sodipodi:nodetypes="csc" + id="path25249" + d="M 69.03125,40.1875 C 74.190803,36.02097 77.499999,29.643289 77.5,22.5 C 77.5,15.734684 74.540259,9.6637676 69.84375,5.5" + style="opacity:1;fill:none;fill-opacity:1;stroke:url(#radialGradient3371);stroke-width:1.17171037;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1.20000057;stroke-opacity:1;display:inline" /> + </g> + <g + style="stroke:#729fcf;display:inline" + id="g27916" + transform="matrix(0.3975228,0,0,0.9423324,-18.689059,-4.6737794)"> + <path + sodipodi:nodetypes="csc" + id="path21632" + d="M 67.5625,34.78125 C 71.176369,31.899733 73.499999,27.47788 73.5,22.5 C 73.5,17.793936 71.43603,13.569699 68.15625,10.6875" + style="opacity:1;fill:none;fill-opacity:1;stroke:url(#radialGradient3375);stroke-width:1.25757563;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1.20000057;stroke-opacity:1;display:inline" /> + </g> + <g + style="stroke:#729fcf;display:inline" + id="g28807" + transform="matrix(0.272091,0,0,0.9423324,-15.475768,-4.3498543)"> + <path + sodipodi:nodetypes="csc" + id="path27920" + d="M 74.954806,30.15625 C 77.22438,28.375887 78.673556,25.606103 78.673556,22.5 C 78.673556,19.560794 77.36198,16.939552 75.298556,15.15625" + style="opacity:1;fill:none;fill-opacity:1;stroke:url(#radialGradient3377);stroke-width:1.52005064;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1.20000057;stroke-opacity:1;display:inline" /> + </g> + </g> +</svg> diff --git a/mate-volume-control/data/icons/scalable/status/audio-input-microphone-low.svg b/mate-volume-control/data/icons/scalable/status/audio-input-microphone-low.svg new file mode 100644 index 0000000..2aec722 --- /dev/null +++ b/mate-volume-control/data/icons/scalable/status/audio-input-microphone-low.svg @@ -0,0 +1,1045 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="48px" + height="48px" + id="svg2790" + sodipodi:version="0.32" + inkscape:version="0.46" + sodipodi:docname="audio-input-mic-low.svg" + inkscape:output_extension="org.inkscape.output.svg.inkscape"> + <defs + id="defs2792"> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient6958" + id="radialGradient6968" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(2.6999424,0,0,3.6828427,-122.46854,-61.286186)" + cx="72.495682" + cy="22.84375" + fx="72.495682" + fy="22.84375" + r="4.8202302" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient6958" + id="radialGradient6964" + cx="72.495682" + cy="22.84375" + fx="72.495682" + fy="22.84375" + r="4.8202302" + gradientTransform="matrix(2.6999424,0,0,3.5713875,-122.46854,-58.740132)" + gradientUnits="userSpaceOnUse" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient6958" + id="radialGradient6976" + cx="70.53125" + cy="22.734375" + fx="70.53125" + fy="22.734375" + r="3.5975378" + gradientTransform="matrix(1.8087117,0,0,3.5234273,-57.039447,-57.368542)" + gradientUnits="userSpaceOnUse" /> + <linearGradient + id="linearGradient6958"> + <stop + style="stop-color:#729fcf;stop-opacity:1;" + offset="0" + id="stop6960" /> + <stop + id="stop6966" + offset="0.60000002" + style="stop-color:#729fcf;stop-opacity:1;" /> + <stop + style="stop-color:#729fcf;stop-opacity:0;" + offset="1" + id="stop6962" /> + </linearGradient> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient6958" + id="radialGradient6984" + cx="60.640625" + cy="22.65625" + fx="60.640625" + fy="22.65625" + r="2.6194003" + gradientTransform="matrix(2.1454532,0,0,3.0191635,-69.461,-45.746674)" + gradientUnits="userSpaceOnUse" /> + <linearGradient + inkscape:collect="always" + id="linearGradient3579"> + <stop + style="stop-color:white;stop-opacity:1;" + offset="0" + id="stop3581" /> + <stop + style="stop-color:white;stop-opacity:0;" + offset="1" + id="stop3583" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3579" + id="linearGradient3585" + x1="20.483149" + y1="3.4711361" + x2="28.357954" + y2="25.991137" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.09091,0,0,1.100001,-1.681827,0.84999)" /> + <linearGradient + id="linearGradient3228"> + <stop + style="stop-color:black;stop-opacity:1;" + offset="0" + id="stop3230" /> + <stop + id="stop3573" + offset="0.06770357" + style="stop-color:black;stop-opacity:0.42857143;" /> + <stop + id="stop3569" + offset="0.29894069" + style="stop-color:black;stop-opacity:0;" /> + <stop + style="stop-color:black;stop-opacity:0.49803922;" + offset="0.77437174" + id="stop3571" /> + <stop + style="stop-color:black;stop-opacity:1;" + offset="1" + id="stop3232" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3228" + id="linearGradient3567" + gradientUnits="userSpaceOnUse" + x1="17.999674" + y1="10.081399" + x2="30" + y2="10.081399" + gradientTransform="translate(0,3)" /> + <linearGradient + inkscape:collect="always" + id="linearGradient2920"> + <stop + style="stop-color:white;stop-opacity:1;" + offset="0" + id="stop2922" /> + <stop + style="stop-color:white;stop-opacity:0;" + offset="1" + id="stop2924" /> + </linearGradient> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient2920" + id="radialGradient2926" + cx="22.553526" + cy="10.432782" + fx="22.553526" + fy="10.432782" + r="6.46875" + gradientTransform="matrix(1.580773,0,0,0.961547,-12.77702,-2.531609)" + gradientUnits="userSpaceOnUse" /> + <linearGradient + inkscape:collect="always" + id="linearGradient2877"> + <stop + style="stop-color:white;stop-opacity:1;" + offset="0" + id="stop2879" /> + <stop + style="stop-color:white;stop-opacity:0;" + offset="1" + id="stop2881" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient2877" + id="linearGradient2894" + gradientUnits="userSpaceOnUse" + x1="21.961548" + y1="6.3608937" + x2="24.508121" + y2="10.75" /> + <linearGradient + inkscape:collect="always" + id="linearGradient3815"> + <stop + style="stop-color:black;stop-opacity:1;" + offset="0" + id="stop3817" /> + <stop + style="stop-color:black;stop-opacity:0;" + offset="1" + id="stop3819" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3815" + id="linearGradient2892" + gradientUnits="userSpaceOnUse" + x1="23.246162" + y1="24.761473" + x2="23.246162" + y2="15.94703" /> + <linearGradient + inkscape:collect="always" + id="linearGradient2867"> + <stop + style="stop-color:white;stop-opacity:1;" + offset="0" + id="stop2869" /> + <stop + style="stop-color:white;stop-opacity:0;" + offset="1" + id="stop2871" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient2867" + id="linearGradient2890" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.809211,0,2.763158)" + x1="19.583334" + y1="10.76408" + x2="23.176371" + y2="10.76408" /> + <linearGradient + id="linearGradient3734"> + <stop + style="stop-color:#babdb6;stop-opacity:1" + offset="0" + id="stop3736" /> + <stop + style="stop-color:white;stop-opacity:1" + offset="1" + id="stop3738" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3734" + id="linearGradient3740" + x1="24.6875" + y1="36.75" + x2="24.6875" + y2="28.617105" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(0,-1)" /> + <linearGradient + id="linearGradient4481"> + <stop + style="stop-color:#555753;stop-opacity:1;" + offset="0" + id="stop4483" /> + <stop + style="stop-color:#babdb6;stop-opacity:1" + offset="1" + id="stop4485" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4481" + id="linearGradient4487" + x1="17.625" + y1="20.814491" + x2="17.625" + y2="5.125" + gradientUnits="userSpaceOnUse" /> + <linearGradient + id="linearGradient2904"> + <stop + id="stop2906" + offset="0" + style="stop-color:#babdb6;stop-opacity:1" /> + <stop + style="stop-color:white;stop-opacity:1;" + offset="0.21551724" + id="stop2910" /> + <stop + id="stop2912" + offset="0.70243758" + style="stop-color:#c3c4c2;stop-opacity:1;" /> + <stop + id="stop2908" + offset="1" + style="stop-color:#888a85;stop-opacity:1" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient2904" + id="linearGradient2902" + x1="18.737373" + y1="13.351768" + x2="30.230837" + y2="13.351768" + gradientUnits="userSpaceOnUse" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient2943" + id="linearGradient2949" + x1="16.65625" + y1="16.14632" + x2="16.65625" + y2="20.381033" + gradientUnits="userSpaceOnUse" /> + <linearGradient + id="linearGradient2943"> + <stop + style="stop-color:#555753;stop-opacity:1" + offset="0" + id="stop2945" /> + <stop + style="stop-color:#2e3436;stop-opacity:1;" + offset="1" + id="stop2947" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient2943" + id="linearGradient2953" + gradientUnits="userSpaceOnUse" + x1="16.65625" + y1="16.14632" + x2="16.65625" + y2="20.381033" + gradientTransform="translate(14,0)" /> + <linearGradient + id="linearGradient2981"> + <stop + style="stop-color:#eeeeec;stop-opacity:1;" + offset="0" + id="stop2983" /> + <stop + style="stop-color:white;stop-opacity:1" + offset="1" + id="stop2985" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient2981" + id="linearGradient2987" + x1="23.374121" + y1="19.452076" + x2="21.649811" + y2="25.229111" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.940947,0,1.564893)" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3795" + id="linearGradient3805" + gradientUnits="userSpaceOnUse" + x1="13.567612" + y1="18.432873" + x2="13.567612" + y2="19.231655" + gradientTransform="translate(20,-1)" /> + <linearGradient + id="linearGradient3795"> + <stop + style="stop-color:white;stop-opacity:1" + offset="0" + id="stop3797" /> + <stop + style="stop-color:#eeeeec;stop-opacity:1;" + offset="1" + id="stop3799" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3795" + id="linearGradient3801" + x1="13.567612" + y1="18.432873" + x2="13.567612" + y2="19.231655" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(0,-1)" /> + <linearGradient + id="linearGradient3726"> + <stop + style="stop-color:#555753;stop-opacity:1" + offset="0" + id="stop3728" /> + <stop + style="stop-color:#888a85;stop-opacity:1" + offset="1" + id="stop3730" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3726" + id="linearGradient3732" + x1="25.606806" + y1="36.722809" + x2="23.640165" + y2="30.421146" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(0,-1)" /> + <linearGradient + inkscape:collect="always" + id="linearGradient3703"> + <stop + style="stop-color:white;stop-opacity:1;" + offset="0" + id="stop3705" /> + <stop + style="stop-color:white;stop-opacity:0;" + offset="1" + id="stop3707" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3703" + id="linearGradient3709" + x1="23.8125" + y1="41.836731" + x2="27.272261" + y2="28.590008" + gradientUnits="userSpaceOnUse" /> + <linearGradient + inkscape:collect="always" + id="linearGradient3779"> + <stop + style="stop-color:black;stop-opacity:1;" + offset="0" + id="stop3781" /> + <stop + style="stop-color:black;stop-opacity:0;" + offset="1" + id="stop3783" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3779" + id="linearGradient3785" + x1="23.997437" + y1="37.835339" + x2="29.74268" + y2="32.355263" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.980843,0,0,0.974547,0.59387,-0.156861)" /> + <linearGradient + inkscape:collect="always" + id="linearGradient2965"> + <stop + style="stop-color:#888a85;stop-opacity:1;" + offset="0" + id="stop2967" /> + <stop + style="stop-color:#888a85;stop-opacity:0;" + offset="1" + id="stop2969" /> + </linearGradient> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient2965" + id="radialGradient2971" + cx="23.82066" + cy="36.907261" + fx="23.82066" + fy="36.907261" + r="12.59534" + gradientTransform="matrix(1,0,0,0.508772,0,18.12988)" + gradientUnits="userSpaceOnUse" /> + <linearGradient + id="linearGradient3711" + inkscape:collect="always"> + <stop + id="stop3713" + offset="0" + style="stop-color:#babdb6;stop-opacity:1" /> + <stop + id="stop3715" + offset="1" + style="stop-color:#888a85;stop-opacity:1" /> + </linearGradient> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3711" + id="radialGradient3691" + cx="18.753521" + cy="40.578671" + fx="18.753521" + fy="40.578671" + r="13.08399" + gradientTransform="matrix(1.106546,0,0,0.58328,-1.909343,15.04719)" + gradientUnits="userSpaceOnUse" /> + <linearGradient + inkscape:collect="always" + id="linearGradient4465"> + <stop + style="stop-color:#2e3436;stop-opacity:1" + offset="0" + id="stop4467" /> + <stop + style="stop-color:#2e3436;stop-opacity:0" + offset="1" + id="stop4469" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4465" + id="linearGradient4460" + gradientUnits="userSpaceOnUse" + x1="32.864544" + y1="13.794194" + x2="32.864544" + y2="5.5441942" + gradientTransform="translate(-0.25,12.5)" /> + <linearGradient + id="linearGradient4475" + inkscape:collect="always"> + <stop + id="stop4477" + offset="0" + style="stop-color:black;stop-opacity:1" /> + <stop + id="stop4479" + offset="1" + style="stop-color:black;stop-opacity:0" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4475" + id="linearGradient4473" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(-0.25,13.5)" + x1="32.864544" + y1="13.794194" + x2="32.864544" + y2="5.5441942" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4499" + id="radialGradient4505" + cx="23.82066" + cy="36.907261" + fx="23.82066" + fy="36.907261" + r="12.59534" + gradientTransform="matrix(1,0,0,0.508772,0,18.12988)" + gradientUnits="userSpaceOnUse" /> + <linearGradient + inkscape:collect="always" + id="linearGradient4499"> + <stop + style="stop-color:black;stop-opacity:1;" + offset="0" + id="stop4501" /> + <stop + style="stop-color:black;stop-opacity:0;" + offset="1" + id="stop4503" /> + </linearGradient> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4499" + id="radialGradient3012" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.508772,0,18.12988)" + cx="23.82066" + cy="36.907261" + fx="23.82066" + fy="36.907261" + r="12.59534" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 24 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="48 : 24 : 1" + inkscape:persp3d-origin="24 : 16 : 1" + id="perspective2798" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient6958" + id="radialGradient3373" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(2.6999424,0,0,3.5713875,-122.46854,-58.740132)" + cx="72.495682" + cy="22.84375" + fx="72.495682" + fy="22.84375" + r="4.8202302" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient6958" + id="radialGradient3375" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.8087117,0,0,3.5234273,-57.039447,-57.368542)" + cx="70.53125" + cy="22.734375" + fx="70.53125" + fy="22.734375" + r="3.5975378" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient6958" + id="radialGradient3377" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(2.1454532,0,0,3.0191635,-53.287444,-45.746674)" + cx="60.640625" + cy="22.65625" + fx="60.640625" + fy="22.65625" + r="2.6194003" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4499" + id="radialGradient3026" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.508772,0,18.12988)" + cx="23.82066" + cy="36.907261" + fx="23.82066" + fy="36.907261" + r="12.59534" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4499" + id="radialGradient3028" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.508772,0,18.12988)" + cx="23.82066" + cy="36.907261" + fx="23.82066" + fy="36.907261" + r="12.59534" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3711" + id="radialGradient3030" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.106546,0,0,0.58328,-1.909343,15.04719)" + cx="18.753521" + cy="40.578671" + fx="18.753521" + fy="40.578671" + r="13.08399" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient2965" + id="radialGradient3032" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.508772,0,18.12988)" + cx="23.82066" + cy="36.907261" + fx="23.82066" + fy="36.907261" + r="12.59534" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3779" + id="linearGradient3034" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.980843,0,0,0.974547,0.59387,-0.156861)" + x1="23.997437" + y1="37.835339" + x2="29.74268" + y2="32.355263" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3703" + id="linearGradient3036" + gradientUnits="userSpaceOnUse" + x1="23.8125" + y1="41.836731" + x2="27.272261" + y2="28.590008" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3726" + id="linearGradient3038" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(0,-1)" + x1="25.606806" + y1="36.722809" + x2="23.640165" + y2="30.421146" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3795" + id="linearGradient3040" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(0,-1)" + x1="13.567612" + y1="18.432873" + x2="13.567612" + y2="19.231655" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3795" + id="linearGradient3042" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(20,-1)" + x1="13.567612" + y1="18.432873" + x2="13.567612" + y2="19.231655" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient2981" + id="linearGradient3044" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.940947,0,1.564893)" + x1="23.374121" + y1="19.452076" + x2="21.649811" + y2="25.229111" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient2943" + id="linearGradient3046" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(14,0)" + x1="16.65625" + y1="16.14632" + x2="16.65625" + y2="20.381033" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient2943" + id="linearGradient3048" + gradientUnits="userSpaceOnUse" + x1="16.65625" + y1="16.14632" + x2="16.65625" + y2="20.381033" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient2904" + id="linearGradient3050" + gradientUnits="userSpaceOnUse" + x1="18.737373" + y1="13.351768" + x2="30.230837" + y2="13.351768" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4481" + id="linearGradient3052" + gradientUnits="userSpaceOnUse" + x1="17.625" + y1="20.814491" + x2="17.625" + y2="5.125" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3734" + id="linearGradient3054" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(0,-1)" + x1="24.6875" + y1="36.75" + x2="24.6875" + y2="28.617105" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient2867" + id="linearGradient3056" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.809211,0,2.763158)" + x1="19.583334" + y1="10.76408" + x2="23.176371" + y2="10.76408" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3815" + id="linearGradient3058" + gradientUnits="userSpaceOnUse" + x1="23.246162" + y1="24.761473" + x2="23.246162" + y2="15.94703" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient2877" + id="linearGradient3060" + gradientUnits="userSpaceOnUse" + x1="21.961548" + y1="6.3608937" + x2="24.508121" + y2="10.75" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient2920" + id="radialGradient3062" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.580773,0,0,0.961547,-12.77702,-2.531609)" + cx="22.553526" + cy="10.432782" + fx="22.553526" + fy="10.432782" + r="6.46875" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3228" + id="linearGradient3064" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(0,3)" + x1="17.999674" + y1="10.081399" + x2="30" + y2="10.081399" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3579" + id="linearGradient3066" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.09091,0,0,1.100001,-1.681827,0.84999)" + x1="20.483149" + y1="3.4711361" + x2="28.357954" + y2="25.991137" /> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="12.270833" + inkscape:cx="23.999998" + inkscape:cy="23.999998" + inkscape:current-layer="layer1" + showgrid="true" + inkscape:grid-bbox="true" + inkscape:document-units="px" + inkscape:window-width="780" + inkscape:window-height="776" + inkscape:window-x="161" + inkscape:window-y="146" /> + <metadata + id="metadata2795"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + id="layer1" + inkscape:label="Layer 1" + inkscape:groupmode="layer"> + <g + style="display:inline" + id="g2915" + transform="translate(7.6010187,0.1428571)"> + <path + transform="matrix(0.727673,0,0,1.235135,7.166344,-12.0556)" + d="M 36.415999,36.907261 A 12.59534,6.4081554 0 1 1 11.22532,36.907261 A 12.59534,6.4081554 0 1 1 36.415999,36.907261 z" + sodipodi:ry="6.4081554" + sodipodi:rx="12.59534" + sodipodi:cy="36.907261" + sodipodi:cx="23.82066" + id="path2917" + style="opacity:0.1;fill:url(#radialGradient3026);fill-opacity:1;stroke:none;stroke-width:0.97730058;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:inline" + sodipodi:type="arc" /> + <path + transform="matrix(1.233813,0,0,1.235135,-4.890235,-6.055598)" + d="M 36.415999,36.907261 A 12.59534,6.4081554 0 1 1 11.22532,36.907261 A 12.59534,6.4081554 0 1 1 36.415999,36.907261 z" + sodipodi:ry="6.4081554" + sodipodi:rx="12.59534" + sodipodi:cy="36.907261" + sodipodi:cx="23.82066" + id="path2919" + style="opacity:0.7;fill:url(#radialGradient3028);fill-opacity:1;stroke:none;stroke-width:0.97730058;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:inline" + sodipodi:type="arc" /> + <path + transform="matrix(1.032128,0,0,1.014402,-8.596444e-2,1.56074)" + d="M 36.415999,36.907261 A 12.59534,6.4081554 0 1 1 11.22532,36.907261 A 12.59534,6.4081554 0 1 1 36.415999,36.907261 z" + sodipodi:ry="6.4081554" + sodipodi:rx="12.59534" + sodipodi:cy="36.907261" + sodipodi:cx="23.82066" + id="path2925" + style="opacity:1;fill:url(#radialGradient3030);fill-opacity:1;stroke:#555753;stroke-width:0.97730058;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:inline" + sodipodi:type="arc" /> + <path + transform="matrix(0.43667,0,0,0.429141,14.09824,21.41158)" + d="M 36.415999,36.907261 A 12.59534,6.4081554 0 1 1 11.22532,36.907261 A 12.59534,6.4081554 0 1 1 36.415999,36.907261 z" + sodipodi:ry="6.4081554" + sodipodi:rx="12.59534" + sodipodi:cy="36.907261" + sodipodi:cx="23.82066" + id="path2927" + style="opacity:1;fill:url(#radialGradient3032);fill-opacity:1;stroke:none;stroke-width:0.97730058;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:inline" + sodipodi:type="arc" /> + <path + sodipodi:nodetypes="ccssccc" + id="path2929" + d="M 27.35249,32.125 C 25.613836,32.860383 24.806671,34.177948 23.67433,35.292277 C 23.188021,35.599877 23.07463,36.001723 23.15468,36.568962 C 23.23473,37.136205 23.644126,37.624296 24.196826,37.787146 C 24.749524,37.949994 25.196373,37.917185 25.574713,37.485007 C 26.676195,35.285524 28.744563,33.983863 31,32.85591 C 29.870496,32.536987 28.651039,32.264053 27.35249,32.125 z" + style="opacity:0.7;fill:url(#linearGradient3034);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;display:inline" /> + <path + transform="matrix(1.032128,0,0,1.014402,-8.596444e-2,1.56074)" + d="M 23.8125,31.5 C 20.473005,31.5 17.440949,32.183256 15.34375,33.25 C 13.246551,34.316744 12.21875,35.666366 12.21875,36.90625 C 12.21875,38.146134 13.246551,39.495756 15.34375,40.5625 C 17.440949,41.629244 20.473005,42.312501 23.8125,42.3125 C 27.151995,42.3125 30.184051,41.629244 32.28125,40.5625 C 34.378449,39.495756 35.40625,38.146134 35.40625,36.90625 C 35.40625,35.666366 34.378449,34.316744 32.28125,33.25 C 30.184051,32.183256 27.151995,31.5 23.8125,31.5 z" + id="path2931" + style="opacity:0.4;fill:none;fill-opacity:1;stroke:url(#linearGradient3036);stroke-width:0.97730058;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:inline" + inkscape:original="M 23.8125 30.5 C 16.859872 30.5 11.21875 33.368948 11.21875 36.90625 C 11.21875 40.443552 16.859872 43.312502 23.8125 43.3125 C 30.765128 43.3125 36.406249 40.443552 36.40625 36.90625 C 36.40625 33.368948 30.765128 30.5 23.8125 30.5 z " + inkscape:radius="-0.99470079" + sodipodi:type="inkscape:offset" /> + <path + sodipodi:nodetypes="cc" + id="path2933" + d="M 24.5,27.5 L 24.5,36.5" + style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient3038);stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;display:inline" /> + <path + sodipodi:nodetypes="csc" + id="path2935" + d="M 34.500008,18.999997 C 34.5,23.285708 30.040008,26.499998 24.500006,26.499998 C 18.960004,26.499998 14.5,23.285708 14.500003,18.999997" + style="fill:none;fill-opacity:1;stroke:#888a85;stroke-width:3.00000024;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:inline" /> + <rect + y="16.499998" + x="12.5" + height="2.9999995" + width="4" + id="rect2937" + style="opacity:1;fill:url(#linearGradient3040);fill-opacity:1;stroke:#888a85;stroke-width:0.99999988;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:inline" /> + <rect + y="16.499998" + x="32.5" + height="2.9999995" + width="4" + id="rect2939" + style="opacity:1;fill:url(#linearGradient3042);fill-opacity:1;stroke:#888a85;stroke-width:0.99999988;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:inline" /> + <path + sodipodi:nodetypes="csc" + id="path2941" + d="M 34.500008,18.999991 C 34.500008,23.285701 30.040008,26.499992 24.500006,26.499992 C 18.960004,26.499992 14.5,23.285701 14.500003,18.999991" + style="fill:none;fill-opacity:1;stroke:url(#linearGradient3044);stroke-width:0.99999982;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:inline" /> + <rect + ry="0.9722718" + rx="0.9722718" + y="15" + x="30" + height="6" + width="3.0000005" + id="rect2943" + style="opacity:1;fill:url(#linearGradient3046);fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:inline" /> + <path + transform="matrix(1.5,0,0,1.5,12.25,-11.25)" + d="M 14.5,19 A 0.5,0.5 0 1 1 13.5,19 A 0.5,0.5 0 1 1 14.5,19 z" + sodipodi:ry="0.5" + sodipodi:rx="0.5" + sodipodi:cy="19" + sodipodi:cx="14" + id="path2945" + style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:inline" + sodipodi:type="arc" /> + <rect + ry="0.9722718" + rx="0.9722718" + y="15" + x="16" + height="6" + width="3.0000005" + id="rect2947" + style="opacity:1;fill:url(#linearGradient3048);fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:inline" /> + <rect + ry="7.0108709" + rx="7.0000019" + y="1.5000002" + x="17.499996" + height="24.000008" + width="14.000004" + id="rect2949" + style="opacity:1;fill:url(#linearGradient3050);fill-opacity:1;stroke:url(#linearGradient3052);stroke-width:1.00000048;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:inline" /> + <path + sodipodi:nodetypes="cc" + id="path2951" + d="M 24.5,26.5 L 24.5,36.5" + style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient3054);stroke-width:1px;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1;display:inline" /> + <path + transform="matrix(1.5,0,0,1.5,-7.75,-11.25)" + d="M 14.5,19 A 0.5,0.5 0 1 1 13.5,19 A 0.5,0.5 0 1 1 14.5,19 z" + sodipodi:ry="0.5" + sodipodi:rx="0.5" + sodipodi:cy="19" + sodipodi:cx="14" + id="path2953" + style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:inline" + sodipodi:type="arc" /> + <g + id="g2955" + style="display:inline"> + <rect + style="opacity:1;fill:url(#linearGradient3056);fill-opacity:1;stroke:none;stroke-width:1.00000036;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:inline" + id="rect2957" + width="4" + height="15.374996" + x="20" + y="6" + rx="2" + ry="2.1991496" /> + <path + sodipodi:type="inkscape:offset" + inkscape:radius="-0.54470092" + inkscape:original="M 24.5 2.5 C 20.621999 2.5 17.5 5.615977 17.5 9.5 L 17.5 19.5 C 17.5 23.384022 20.621999 26.5 24.5 26.5 C 28.378001 26.5 31.5 23.384022 31.5 19.5 L 31.5 9.5 C 31.5 5.6159775 28.378001 2.5 24.5 2.5 z " + style="opacity:0.2;fill:url(#linearGradient3058);fill-opacity:1;stroke:none;stroke-width:1.00000048;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:inline" + id="path2959" + d="M 24.5,3.03125 C 20.913777,3.03125 18.03125,5.9078661 18.03125,9.5 L 18.03125,19.5 C 18.03125,23.092133 20.913778,25.96875 24.5,25.96875 C 28.086222,25.96875 30.96875,23.092133 30.96875,19.5 L 30.96875,9.5 C 30.96875,5.9078666 28.086223,3.03125 24.5,3.03125 z" + transform="translate(0,-1)" /> + <path + sodipodi:type="arc" + style="opacity:1;fill:url(#linearGradient3060);fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="path2961" + sodipodi:cx="23.65625" + sodipodi:cy="7.6875" + sodipodi:rx="3.34375" + sodipodi:ry="3.0625" + d="M 27,7.6875 A 3.34375,3.0625 0 1 1 20.3125,7.6875 A 3.34375,3.0625 0 1 1 27,7.6875 z" + transform="matrix(1,0,0,1.081633,-0.375,-1.252551)" /> + </g> + <path + sodipodi:nodetypes="cccccc" + id="path2963" + d="M 24.5,3.03125 C 20.913777,3.03125 18.03125,5.9078661 18.03125,9.5 L 18.03125,14.5 L 30.96875,14.5 L 30.96875,9.5 C 30.96875,5.9078666 28.086223,3.03125 24.5,3.03125 z" + style="opacity:0.9;fill:url(#radialGradient3062);fill-opacity:1;stroke:none;stroke-width:1.00000048;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;display:inline" + transform="translate(0,-1)" /> + <path + sodipodi:nodetypes="csssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssc" + id="path2965" + d="M 22.5,3 C 22.224,3 22,3.224 22,3.5 C 22,3.776 22.224,4 22.5,4 C 22.776,4 23,3.776 23,3.5 C 23,3.224 22.776,3 22.5,3 z M 24.5,3 C 24.224,3 24,3.224 24,3.5 C 24,3.776 24.224,4 24.5,4 C 24.776,4 25,3.776 25,3.5 C 25,3.224 24.776,3 24.5,3 z M 26.5,3 C 26.224,3 26,3.224 26,3.5 C 26,3.776 26.224,4 26.5,4 C 26.776,4 27,3.776 27,3.5 C 27,3.224 26.776,3 26.5,3 z M 21.5,4 C 21.224,4 21,4.224 21,4.5 C 21,4.776 21.224,5 21.5,5 C 21.776,5 22,4.776 22,4.5 C 22,4.224 21.776,4 21.5,4 z M 23.5,4 C 23.224,4 22.999999,4.2240007 23,4.5 C 23,4.7759993 23.223999,5 23.5,5 C 23.776,5 24,4.7759993 24,4.5 C 24,4.2240007 23.776,4 23.5,4 z M 25.5,4 C 25.224,4 24.999999,4.2240007 25,4.5 C 25,4.7759993 25.223999,5 25.5,5 C 25.776,5 26,4.7759993 26,4.5 C 26,4.2240007 25.776,4 25.5,4 z M 27.5,4 C 27.224,4 27,4.224 27,4.5 C 27,4.776 27.224,5 27.5,5 C 27.776,5 28,4.776 28,4.5 C 28,4.224 27.776,4 27.5,4 z M 20.5,5 C 20.224,5 19.999999,5.2240008 20,5.5 C 20,5.7759993 20.223999,6 20.5,6 C 20.776,6 21,5.7759994 21,5.5 C 21,5.2240007 20.776,5 20.5,5 z M 22.5,5 C 22.224,5 21.999999,5.2240008 22,5.5 C 22,5.7759993 22.223999,6 22.5,6 C 22.776,6 23,5.7759994 23,5.5 C 23,5.2240007 22.776,5 22.5,5 z M 24.5,5 C 24.224,5 23.999999,5.2240008 24,5.5 C 24,5.7759993 24.223999,6 24.5,6 C 24.776,6 25,5.7759994 25,5.5 C 25,5.2240007 24.776,5 24.5,5 z M 26.5,5 C 26.224,5 25.999999,5.2240008 26,5.5 C 26,5.7759993 26.223999,6 26.5,6 C 26.776,6 27,5.7759994 27,5.5 C 27,5.2240007 26.776,5 26.5,5 z M 28.5,5 C 28.224,5 28,5.224 28,5.5 C 28,5.776 28.224,6 28.5,6 C 28.776,6 29,5.776 29,5.5 C 29,5.224 28.776,5 28.5,5 z M 19.5,6 C 19.224,6 18.999999,6.2240008 19,6.5 C 19,6.7759993 19.223999,7 19.5,7 C 19.776,7 20,6.7759994 20,6.5 C 20,6.2240007 19.776,6 19.5,6 z M 21.5,6 C 21.224,6 20.999999,6.2240008 21,6.5 C 21,6.7759993 21.223999,7 21.5,7 C 21.776,7 22,6.7759994 22,6.5 C 22,6.2240007 21.776,6 21.5,6 z M 23.5,6 C 23.224,6 22.999999,6.2240008 23,6.5 C 23,6.7759993 23.223999,7 23.5,7 C 23.776,7 24,6.7759994 24,6.5 C 24,6.2240007 23.776,6 23.5,6 z M 25.5,6 C 25.224,6 24.999999,6.2240008 25,6.5 C 25,6.7759993 25.223999,7 25.5,7 C 25.776,7 26,6.7759994 26,6.5 C 26,6.2240007 25.776,6 25.5,6 z M 27.5,6 C 27.224,6 26.999999,6.2240008 27,6.5 C 27,6.7759993 27.223999,7 27.5,7 C 27.776,7 28,6.7759994 28,6.5 C 28,6.2240007 27.776,6 27.5,6 z M 29.5,6 C 29.224,6 29,6.224 29,6.5 C 29,6.776 29.224,7 29.5,7 C 29.776,7 30,6.776 30,6.5 C 30,6.224 29.776,6 29.5,6 z M 20.5,7 C 20.224,7 19.999999,7.2240008 20,7.5 C 20,7.7759993 20.223999,8.0000002 20.5,8 C 20.776,8 21,7.7759994 21,7.5 C 21,7.2240007 20.776,7 20.5,7 z M 22.5,7 C 22.224,7 21.999999,7.2240008 22,7.5 C 22,7.7759993 22.223999,8.0000002 22.5,8 C 22.776,8 23,7.7759994 23,7.5 C 23,7.2240007 22.776,7 22.5,7 z M 24.5,7 C 24.224,7 23.999999,7.2240008 24,7.5 C 24,7.7759993 24.223999,8.0000002 24.5,8 C 24.776,8 25,7.7759994 25,7.5 C 25,7.2240007 24.776,7 24.5,7 z M 26.5,7 C 26.224,7 25.999999,7.2240008 26,7.5 C 26,7.7759993 26.223999,8.0000002 26.5,8 C 26.776,8 27,7.7759994 27,7.5 C 27,7.2240007 26.776,7 26.5,7 z M 28.5,7 C 28.224,7 27.999999,7.2240008 28,7.5 C 28,7.7759993 28.223999,8.0000002 28.5,8 C 28.776,8 29,7.7759994 29,7.5 C 29,7.2240007 28.776,7 28.5,7 z M 30.5,7 C 30.224,7 30,7.224 30,7.5 C 30,7.776 30.224,8 30.5,8 C 30.776,8 31,7.776 31,7.5 C 31,7.224 30.776,7 30.5,7 z M 19.5,8 C 19.224,8 18.999999,8.2240008 19,8.5 C 19,8.7759993 19.223999,9 19.5,9 C 19.776,9 20,8.7759994 20,8.5 C 20,8.2240007 19.776,8 19.5,8 z M 21.5,8 C 21.224,8 20.999999,8.2240008 21,8.5 C 21,8.7759993 21.223999,9 21.5,9 C 21.776,9 22,8.7759994 22,8.5 C 22,8.2240007 21.776,8 21.5,8 z M 23.5,8 C 23.224,8 22.999999,8.2240008 23,8.5 C 23,8.7759993 23.223999,9 23.5,9 C 23.776,9 24,8.7759994 24,8.5 C 24,8.2240007 23.776,8 23.5,8 z M 25.5,8 C 25.224,8 24.999999,8.2240008 25,8.5 C 25,8.7759993 25.223999,9 25.5,9 C 25.776,9 26,8.7759994 26,8.5 C 26,8.2240007 25.776,8 25.5,8 z M 27.5,8 C 27.224,8 26.999999,8.2240008 27,8.5 C 27,8.7759993 27.223999,9 27.5,9 C 27.776,9 28,8.7759994 28,8.5 C 28,8.2240007 27.776,8 27.5,8 z M 29.5,8 C 29.224,8 28.999999,8.2240008 29,8.5 C 29,8.7759993 29.223999,9 29.5,9 C 29.776,9 30,8.7759994 30,8.5 C 30,8.2240007 29.776,8 29.5,8 z M 18.5,9 C 18.224,9 17.999999,9.224001 18,9.5 C 18,9.775999 18.223999,10 18.5,10 C 18.776,10 19,9.775999 19,9.5 C 19,9.224001 18.776,9 18.5,9 z M 20.5,9 C 20.224,9 19.999999,9.224001 20,9.5 C 20,9.775999 20.223999,10 20.5,10 C 20.776,10 21,9.775999 21,9.5 C 21,9.224001 20.776,9 20.5,9 z M 22.5,9 C 22.224,9 21.999999,9.224001 22,9.5 C 22,9.775999 22.223999,10 22.5,10 C 22.776,10 23,9.775999 23,9.5 C 23,9.224001 22.776,9 22.5,9 z M 24.5,9 C 24.224,9 23.999999,9.224001 24,9.5 C 24,9.775999 24.223999,10 24.5,10 C 24.776,10 25,9.775999 25,9.5 C 25,9.224001 24.776,9 24.5,9 z M 26.5,9 C 26.224,9 25.999999,9.224001 26,9.5 C 26,9.775999 26.223999,10 26.5,10 C 26.776,10 27,9.775999 27,9.5 C 27,9.224001 26.776,9 26.5,9 z M 28.5,9 C 28.224,9 27.999999,9.224001 28,9.5 C 28,9.775999 28.223999,10 28.5,10 C 28.776,10 29,9.775999 29,9.5 C 29,9.224001 28.776,9 28.5,9 z M 30.5,9 C 30.224,9 30,9.224 30,9.5 C 30,9.776 30.224,10 30.5,10 C 30.776,10 31,9.776 31,9.5 C 31,9.224 30.776,9 30.5,9 z M 19.5,10 C 19.224,10 18.999999,10.224001 19,10.5 C 19,10.775999 19.223999,11 19.5,11 C 19.776,11 20,10.775999 20,10.5 C 20,10.224001 19.776,10 19.5,10 z M 21.5,10 C 21.224,10 20.999999,10.224001 21,10.5 C 21,10.775999 21.223999,11 21.5,11 C 21.776,11 22,10.775999 22,10.5 C 22,10.224001 21.776,10 21.5,10 z M 23.5,10 C 23.224,10 22.999999,10.224001 23,10.5 C 23,10.775999 23.223999,11 23.5,11 C 23.776,11 24,10.775999 24,10.5 C 24,10.224001 23.776,10 23.5,10 z M 25.5,10 C 25.224,10 24.999999,10.224001 25,10.5 C 25,10.775999 25.223999,11 25.5,11 C 25.776,11 26,10.775999 26,10.5 C 26,10.224001 25.776,10 25.5,10 z M 27.5,10 C 27.224,10 26.999999,10.224001 27,10.5 C 27,10.775999 27.223999,11 27.5,11 C 27.776,11 28,10.775999 28,10.5 C 28,10.224001 27.776,10 27.5,10 z M 29.5,10 C 29.224,10 28.999999,10.224001 29,10.5 C 29,10.775999 29.223999,11 29.5,11 C 29.776,11 30,10.775999 30,10.5 C 30,10.224001 29.776,10 29.5,10 z M 18.5,11 C 18.224,11 17.999999,11.224 18,11.5 C 18,11.775999 18.223999,12 18.5,12 C 18.776,12 19,11.775999 19,11.5 C 19,11.224001 18.776,11 18.5,11 z M 20.5,11 C 20.224,11 19.999999,11.224 20,11.5 C 20,11.775999 20.223999,12 20.5,12 C 20.776,12 21,11.775999 21,11.5 C 21,11.224001 20.776,11 20.5,11 z M 22.5,11 C 22.224,11 21.999999,11.224 22,11.5 C 22,11.775999 22.223999,12 22.5,12 C 22.776,12 23,11.775999 23,11.5 C 23,11.224001 22.776,11 22.5,11 z M 24.5,11 C 24.224,11 23.999999,11.224 24,11.5 C 24,11.775999 24.223999,12 24.5,12 C 24.776,12 25,11.775999 25,11.5 C 25,11.224001 24.776,11 24.5,11 z M 26.5,11 C 26.224,11 25.999999,11.224 26,11.5 C 26,11.775999 26.223999,12 26.5,12 C 26.776,12 27,11.775999 27,11.5 C 27,11.224001 26.776,11 26.5,11 z M 28.5,11 C 28.224,11 27.999999,11.224 28,11.5 C 28,11.775999 28.223999,12 28.5,12 C 28.776,12 29,11.775999 29,11.5 C 29,11.224001 28.776,11 28.5,11 z M 30.5,11 C 30.224,11 30,11.224 30,11.5 C 30,11.776 30.224,12 30.5,12 C 30.776,12 31,11.776 31,11.5 C 31,11.224 30.776,11 30.5,11 z M 19.5,12 C 19.224,12 18.999999,12.224 19,12.5 C 19,12.775999 19.223999,13 19.5,13 C 19.776,13 20,12.775999 20,12.5 C 20,12.224001 19.776,12 19.5,12 z M 21.5,12 C 21.224,12 20.999999,12.224 21,12.5 C 21,12.775999 21.223999,13 21.5,13 C 21.776,13 22,12.775999 22,12.5 C 22,12.224001 21.776,12 21.5,12 z M 23.5,12 C 23.224,12 22.999999,12.224 23,12.5 C 23,12.775999 23.223999,13 23.5,13 C 23.776,13 24,12.775999 24,12.5 C 24,12.224001 23.776,12 23.5,12 z M 25.5,12 C 25.224,12 24.999999,12.224 25,12.5 C 25,12.775999 25.223999,13 25.5,13 C 25.776,13 26,12.775999 26,12.5 C 26,12.224001 25.776,12 25.5,12 z M 27.5,12 C 27.224,12 26.999999,12.224 27,12.5 C 27,12.775999 27.223999,13 27.5,13 C 27.776,13 28,12.775999 28,12.5 C 28,12.224001 27.776,12 27.5,12 z M 29.5,12 C 29.224,12 28.999999,12.224 29,12.5 C 29,12.775999 29.223999,13 29.5,13 C 29.776,13 30,12.775999 30,12.5 C 30,12.224001 29.776,12 29.5,12 z M 18.5,13 C 18.224,13 17.999999,13.224 18,13.5 C 18,13.775999 18.223999,14 18.5,14 C 18.776,14 19,13.775999 19,13.5 C 19,13.224001 18.776,13 18.5,13 z M 20.5,13 C 20.224,13 19.999999,13.224 20,13.5 C 20,13.775999 20.223999,14 20.5,14 C 20.776,14 21,13.775999 21,13.5 C 21,13.224001 20.776,13 20.5,13 z M 22.5,13 C 22.224,13 21.999999,13.224 22,13.5 C 22,13.775999 22.223999,14 22.5,14 C 22.776,14 23,13.775999 23,13.5 C 23,13.224001 22.776,13 22.5,13 z M 24.5,13 C 24.224,13 23.999999,13.224 24,13.5 C 24,13.775999 24.223999,14 24.5,14 C 24.776,14 25,13.775999 25,13.5 C 25,13.224001 24.776,13 24.5,13 z M 26.5,13 C 26.224,13 25.999999,13.224 26,13.5 C 26,13.775999 26.223999,14 26.5,14 C 26.776,14 27,13.775999 27,13.5 C 27,13.224001 26.776,13 26.5,13 z M 28.5,13 C 28.224,13 27.999999,13.224 28,13.5 C 28,13.775999 28.223999,14 28.5,14 C 28.776,14 29,13.775999 29,13.5 C 29,13.224001 28.776,13 28.5,13 z M 30.5,13 C 30.224,13 30,13.224 30,13.5 C 30,13.776 30.224,14 30.5,14 C 30.776,14 31,13.776 31,13.5 C 31,13.224 30.776,13 30.5,13 z M 19.5,14 C 19.224,14 18.999999,14.224 19,14.5 C 19,14.775999 19.223999,15 19.5,15 C 19.776,15 20,14.775999 20,14.5 C 20,14.224001 19.776,14 19.5,14 z M 21.5,14 C 21.224,14 20.999999,14.224 21,14.5 C 21,14.775999 21.223999,15 21.5,15 C 21.776,15 22,14.775999 22,14.5 C 22,14.224001 21.776,14 21.5,14 z M 23.5,14 C 23.224,14 22.999999,14.224 23,14.5 C 23,14.775999 23.223999,15 23.5,15 C 23.776,15 24,14.775999 24,14.5 C 24,14.224001 23.776,14 23.5,14 z M 25.5,14 C 25.224,14 24.999999,14.224 25,14.5 C 25,14.775999 25.223999,15 25.5,15 C 25.776,15 26,14.775999 26,14.5 C 26,14.224001 25.776,14 25.5,14 z M 27.5,14 C 27.224,14 26.999999,14.224 27,14.5 C 27,14.775999 27.223999,15 27.5,15 C 27.776,15 28,14.775999 28,14.5 C 28,14.224001 27.776,14 27.5,14 z M 29.5,14 C 29.224,14 28.999999,14.224 29,14.5 C 29,14.775999 29.223999,15 29.5,15 C 29.776,15 30,14.775999 30,14.5 C 30,14.224001 29.776,14 29.5,14 z M 18.5,15 C 18.224,15 17.999999,15.224 18,15.5 C 18,15.775999 18.223999,16 18.5,16 C 18.776,16 19,15.775999 19,15.5 C 19,15.224001 18.776,15 18.5,15 z M 20.5,15 C 20.224,15 19.999999,15.224 20,15.5 C 20,15.775999 20.223999,16 20.5,16 C 20.776,16 21,15.775999 21,15.5 C 21,15.224001 20.776,15 20.5,15 z M 22.5,15 C 22.224,15 21.999999,15.224 22,15.5 C 22,15.775999 22.223999,16 22.5,16 C 22.776,16 23,15.775999 23,15.5 C 23,15.224001 22.776,15 22.5,15 z M 24.5,15 C 24.224,15 23.999999,15.224 24,15.5 C 24,15.775999 24.223999,16 24.5,16 C 24.776,16 25,15.775999 25,15.5 C 25,15.224001 24.776,15 24.5,15 z M 26.5,15 C 26.224,15 25.999999,15.224 26,15.5 C 26,15.775999 26.223999,16 26.5,16 C 26.776,16 27,15.775999 27,15.5 C 27,15.224001 26.776,15 26.5,15 z M 28.5,15 C 28.224,15 27.999999,15.224 28,15.5 C 28,15.775999 28.223999,16 28.5,16 C 28.776,16 29,15.775999 29,15.5 C 29,15.224001 28.776,15 28.5,15 z M 30.5,15 C 30.224,15 30,15.224 30,15.5 C 30,15.776 30.224,16 30.5,16 C 30.776,16 31,15.776 31,15.5 C 31,15.224 30.776,15 30.5,15 z M 19.5,16 C 19.224,16 18.999999,16.224001 19,16.5 C 19,16.775999 19.223999,17 19.5,17 C 19.776,17 20,16.776 20,16.5 C 20,16.224001 19.776,16 19.5,16 z M 21.5,16 C 21.224,16 20.999999,16.224001 21,16.5 C 21,16.775999 21.223999,17 21.5,17 C 21.776,17 22,16.776 22,16.5 C 22,16.224001 21.776,16 21.5,16 z M 23.5,16 C 23.224,16 22.999999,16.224001 23,16.5 C 23,16.775999 23.223999,17 23.5,17 C 23.776,17 24,16.776 24,16.5 C 24,16.224001 23.776,16 23.5,16 z M 25.5,16 C 25.224,16 24.999999,16.224001 25,16.5 C 25,16.775999 25.223999,17 25.5,17 C 25.776,17 26,16.776 26,16.5 C 26,16.224001 25.776,16 25.5,16 z M 27.5,16 C 27.224,16 26.999999,16.224001 27,16.5 C 27,16.775999 27.223999,17 27.5,17 C 27.776,17 28,16.776 28,16.5 C 28,16.224001 27.776,16 27.5,16 z M 29.5,16 C 29.224,16 28.999999,16.224 29,16.5 C 29,16.775999 29.223999,17 29.5,17 C 29.776,17 30,16.775999 30,16.5 C 30,16.224001 29.776,16 29.5,16 z M 18.5,17 C 18.224,17 17.999999,17.224001 18,17.5 C 18,17.775999 18.223999,18 18.5,18 C 18.776,18 19,17.776 19,17.5 C 19,17.224001 18.776,17 18.5,17 z M 20.5,17 C 20.224,17 19.999999,17.224001 20,17.5 C 20,17.775999 20.223999,18 20.5,18 C 20.776,18 21,17.776 21,17.5 C 21,17.224001 20.776,17 20.5,17 z M 22.5,17 C 22.224,17 21.999999,17.224001 22,17.5 C 22,17.775999 22.223999,18 22.5,18 C 22.776,18 23,17.776 23,17.5 C 23,17.224001 22.776,17 22.5,17 z M 24.5,17 C 24.224,17 23.999999,17.224001 24,17.5 C 24,17.775999 24.223999,18 24.5,18 C 24.776,18 25,17.776 25,17.5 C 25,17.224001 24.776,17 24.5,17 z M 26.5,17 C 26.224,17 25.999999,17.224001 26,17.5 C 26,17.775999 26.223999,18 26.5,18 C 26.776,18 27,17.776 27,17.5 C 27,17.224001 26.776,17 26.5,17 z M 28.5,17 C 28.224,17 27.999999,17.224001 28,17.5 C 28,17.775999 28.223999,18 28.5,18 C 28.776,18 29,17.776 29,17.5 C 29,17.224001 28.776,17 28.5,17 z M 30.5,17 C 30.224,17 30,17.224 30,17.5 C 30,17.776 30.224,18 30.5,18 C 30.776,18 31,17.776 31,17.5 C 31,17.224 30.776,17 30.5,17 z M 19.5,18 C 19.224,18 18.999999,18.224001 19,18.5 C 19,18.775999 19.223999,19 19.5,19 C 19.776,19 20,18.776 20,18.5 C 20,18.224001 19.776,18 19.5,18 z M 21.5,18 C 21.224,18 20.999999,18.224001 21,18.5 C 21,18.775999 21.223999,19 21.5,19 C 21.776,19 22,18.776 22,18.5 C 22,18.224001 21.776,18 21.5,18 z M 23.5,18 C 23.224,18 22.999999,18.224001 23,18.5 C 23,18.775999 23.223999,19 23.5,19 C 23.776,19 24,18.776 24,18.5 C 24,18.224001 23.776,18 23.5,18 z M 25.5,18 C 25.224,18 24.999999,18.224001 25,18.5 C 25,18.775999 25.223999,19 25.5,19 C 25.776,19 26,18.776 26,18.5 C 26,18.224001 25.776,18 25.5,18 z M 27.5,18 C 27.224,18 26.999999,18.224001 27,18.5 C 27,18.775999 27.223999,19 27.5,19 C 27.776,19 28,18.776 28,18.5 C 28,18.224001 27.776,18 27.5,18 z M 29.5,18 C 29.224,18 28.999999,18.224001 29,18.5 C 29,18.775999 29.223999,19 29.5,19 C 29.776,19 30,18.776 30,18.5 C 30,18.224001 29.776,18 29.5,18 z M 18.5,19 C 18.224,19 17.999999,19.224001 18,19.5 C 18,19.775999 18.223999,19.999999 18.5,20 C 18.776,20 19,19.776 19,19.5 C 19,19.224001 18.776,19 18.5,19 z M 20.5,19 C 20.224,19 19.999999,19.224001 20,19.5 C 20,19.775999 20.223999,19.999999 20.5,20 C 20.776,20 21,19.776 21,19.5 C 21,19.224001 20.776,19 20.5,19 z M 22.5,19 C 22.224,19 21.999999,19.224001 22,19.5 C 22,19.775999 22.223999,19.999999 22.5,20 C 22.776,20 23,19.776 23,19.5 C 23,19.224001 22.776,19 22.5,19 z M 24.5,19 C 24.224,19 23.999999,19.224001 24,19.5 C 24,19.775999 24.223999,19.999999 24.5,20 C 24.776,20 25,19.776 25,19.5 C 25,19.224001 24.776,19 24.5,19 z M 26.5,19 C 26.224,19 25.999999,19.224001 26,19.5 C 26,19.775999 26.223999,19.999999 26.5,20 C 26.776,20 27,19.776 27,19.5 C 27,19.224001 26.776,19 26.5,19 z M 28.5,19 C 28.224,19 27.999999,19.224001 28,19.5 C 28,19.775999 28.223999,19.999999 28.5,20 C 28.776,20 29,19.776 29,19.5 C 29,19.224001 28.776,19 28.5,19 z M 30.5,19 C 30.224,19 30,19.224 30,19.5 C 30,19.776 30.224,20 30.5,20 C 30.776,20 31,19.776 31,19.5 C 31,19.224 30.776,19 30.5,19 z M 19.5,20 C 19.224,20 18.999999,20.224001 19,20.5 C 19,20.775999 19.223999,20.999999 19.5,21 C 19.776,21 20,20.776 20,20.5 C 20,20.224001 19.776,20 19.5,20 z M 21.5,20 C 21.224,20 20.999999,20.224001 21,20.5 C 21,20.775999 21.223999,20.999999 21.5,21 C 21.776,21 22,20.776 22,20.5 C 22,20.224001 21.776,20 21.5,20 z M 23.5,20 C 23.224,20 22.999999,20.224001 23,20.5 C 23,20.775999 23.223999,20.999999 23.5,21 C 23.776,21 24,20.776 24,20.5 C 24,20.224001 23.776,20 23.5,20 z M 25.5,20 C 25.224,20 24.999999,20.224001 25,20.5 C 25,20.775999 25.223999,20.999999 25.5,21 C 25.776,21 26,20.776 26,20.5 C 26,20.224001 25.776,20 25.5,20 z M 27.5,20 C 27.224,20 26.999999,20.224001 27,20.5 C 27,20.775999 27.223999,20.999999 27.5,21 C 27.776,21 28,20.776 28,20.5 C 28,20.224001 27.776,20 27.5,20 z M 29.5,20 C 29.224,20 28.999999,20.224001 29,20.5 C 29,20.775999 29.223999,20.999999 29.5,21 C 29.776,21 30,20.776 30,20.5 C 30,20.224001 29.776,20 29.5,20 z M 20.5,21 C 20.224,21 19.999999,21.224001 20,21.5 C 20,21.775999 20.223999,21.999999 20.5,22 C 20.776,22 21,21.776 21,21.5 C 21,21.224001 20.776,21 20.5,21 z M 22.5,21 C 22.224,21 21.999999,21.224001 22,21.5 C 22,21.775999 22.223999,21.999999 22.5,22 C 22.776,22 23,21.776 23,21.5 C 23,21.224001 22.776,21 22.5,21 z M 24.5,21 C 24.224,21 23.999999,21.224001 24,21.5 C 24,21.775999 24.223999,21.999999 24.5,22 C 24.776,22 25,21.776 25,21.5 C 25,21.224001 24.776,21 24.5,21 z M 26.5,21 C 26.224,21 25.999999,21.224001 26,21.5 C 26,21.775999 26.223999,21.999999 26.5,22 C 26.776,22 27,21.776 27,21.5 C 27,21.224001 26.776,21 26.5,21 z M 28.5,21 C 28.224,21 27.999999,21.224001 28,21.5 C 28,21.775999 28.223999,21.999999 28.5,22 C 28.776,22 29,21.776 29,21.5 C 29,21.224001 28.776,21 28.5,21 z M 21.5,22 C 21.224,22 20.999999,22.224001 21,22.5 C 21,22.775999 21.223999,22.999999 21.5,23 C 21.776,23 22,22.776 22,22.5 C 22,22.224001 21.776,22 21.5,22 z M 23.5,22 C 23.224,22 22.999999,22.224001 23,22.5 C 23,22.775999 23.223999,22.999999 23.5,23 C 23.776,23 24,22.776 24,22.5 C 24,22.224001 23.776,22 23.5,22 z M 25.5,22 C 25.224,22 24.999999,22.224001 25,22.5 C 25,22.775999 25.223999,22.999999 25.5,23 C 25.776,23 26,22.776 26,22.5 C 26,22.224001 25.776,22 25.5,22 z M 27.5,22 C 27.224,22 26.999999,22.224001 27,22.5 C 27,22.775999 27.223999,22.999999 27.5,23 C 27.776,23 28,22.776 28,22.5 C 28,22.224001 27.776,22 27.5,22 z M 22.5,23 C 22.224,23 21.999999,23.224001 22,23.5 C 22,23.775999 22.223999,23.999999 22.5,24 C 22.776,24 23,23.776 23,23.5 C 23,23.224001 22.776,23 22.5,23 z M 24.5,23 C 24.224,23 23.999999,23.224001 24,23.5 C 24,23.775999 24.223999,23.999999 24.5,24 C 24.776,24 25,23.776 25,23.5 C 25,23.224001 24.776,23 24.5,23 z M 26.5,23 C 26.224,23 25.999999,23.224001 26,23.5 C 26,23.775999 26.223999,23.999999 26.5,24 C 26.776,24 27,23.776 27,23.5 C 27,23.224001 26.776,23 26.5,23 z M 23.5,24 C 23.224,24 22.999999,24.224001 23,24.5 C 23,24.775999 23.223999,24.999999 23.5,25 C 23.776,25 24,24.776 24,24.5 C 24,24.224001 23.776,24 23.5,24 z M 25.5,24 C 25.224,24 24.999999,24.224001 25,24.5 C 25,24.775999 25.223999,24.999999 25.5,25 C 25.776,25 26,24.776 26,24.5 C 26,24.224001 25.776,24 25.5,24 z" + style="opacity:0.5;fill:url(#linearGradient3064);fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:inline" /> + <rect + ry="6.0500031" + rx="6.0000024" + y="2.5000026" + x="18.500008" + height="22.000008" + width="12.000005" + id="rect2967" + style="opacity:1;fill:none;fill-opacity:1;stroke:url(#linearGradient3066);stroke-width:1.0000006;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:inline" /> + </g> + <g + style="stroke:#729fcf;display:inline" + id="g28807" + transform="matrix(0.272091,0,0,0.9423324,-15.475768,-4.3498543)"> + <path + sodipodi:nodetypes="csc" + id="path27920" + d="M 74.954806,30.15625 C 77.22438,28.375887 78.673556,25.606103 78.673556,22.5 C 78.673556,19.560794 77.36198,16.939552 75.298556,15.15625" + style="opacity:1;fill:none;fill-opacity:1;stroke:url(#radialGradient3377);stroke-width:1.52005064;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1.20000057;stroke-opacity:1;display:inline" /> + </g> + </g> +</svg> diff --git a/mate-volume-control/data/icons/scalable/status/audio-input-microphone-medium.svg b/mate-volume-control/data/icons/scalable/status/audio-input-microphone-medium.svg new file mode 100644 index 0000000..ba8b5a4 --- /dev/null +++ b/mate-volume-control/data/icons/scalable/status/audio-input-microphone-medium.svg @@ -0,0 +1,1066 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="48px" + height="48px" + id="svg2790" + sodipodi:version="0.32" + inkscape:version="0.46" + sodipodi:docname="audio-input-mic-medium.svg" + inkscape:output_extension="org.inkscape.output.svg.inkscape"> + <defs + id="defs2792"> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient6958" + id="radialGradient6968" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(2.6999424,0,0,3.6828427,-122.46854,-61.286186)" + cx="72.495682" + cy="22.84375" + fx="72.495682" + fy="22.84375" + r="4.8202302" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient6958" + id="radialGradient6964" + cx="72.495682" + cy="22.84375" + fx="72.495682" + fy="22.84375" + r="4.8202302" + gradientTransform="matrix(2.6999424,0,0,3.5713875,-122.46854,-58.740132)" + gradientUnits="userSpaceOnUse" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient6958" + id="radialGradient6976" + cx="70.53125" + cy="22.734375" + fx="70.53125" + fy="22.734375" + r="3.5975378" + gradientTransform="matrix(1.8087117,0,0,3.5234273,-57.039447,-57.368542)" + gradientUnits="userSpaceOnUse" /> + <linearGradient + id="linearGradient6958"> + <stop + style="stop-color:#729fcf;stop-opacity:1;" + offset="0" + id="stop6960" /> + <stop + id="stop6966" + offset="0.60000002" + style="stop-color:#729fcf;stop-opacity:1;" /> + <stop + style="stop-color:#729fcf;stop-opacity:0;" + offset="1" + id="stop6962" /> + </linearGradient> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient6958" + id="radialGradient6984" + cx="60.640625" + cy="22.65625" + fx="60.640625" + fy="22.65625" + r="2.6194003" + gradientTransform="matrix(2.1454532,0,0,3.0191635,-69.461,-45.746674)" + gradientUnits="userSpaceOnUse" /> + <linearGradient + inkscape:collect="always" + id="linearGradient3579"> + <stop + style="stop-color:white;stop-opacity:1;" + offset="0" + id="stop3581" /> + <stop + style="stop-color:white;stop-opacity:0;" + offset="1" + id="stop3583" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3579" + id="linearGradient3585" + x1="20.483149" + y1="3.4711361" + x2="28.357954" + y2="25.991137" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.09091,0,0,1.100001,-1.681827,0.84999)" /> + <linearGradient + id="linearGradient3228"> + <stop + style="stop-color:black;stop-opacity:1;" + offset="0" + id="stop3230" /> + <stop + id="stop3573" + offset="0.06770357" + style="stop-color:black;stop-opacity:0.42857143;" /> + <stop + id="stop3569" + offset="0.29894069" + style="stop-color:black;stop-opacity:0;" /> + <stop + style="stop-color:black;stop-opacity:0.49803922;" + offset="0.77437174" + id="stop3571" /> + <stop + style="stop-color:black;stop-opacity:1;" + offset="1" + id="stop3232" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3228" + id="linearGradient3567" + gradientUnits="userSpaceOnUse" + x1="17.999674" + y1="10.081399" + x2="30" + y2="10.081399" + gradientTransform="translate(0,3)" /> + <linearGradient + inkscape:collect="always" + id="linearGradient2920"> + <stop + style="stop-color:white;stop-opacity:1;" + offset="0" + id="stop2922" /> + <stop + style="stop-color:white;stop-opacity:0;" + offset="1" + id="stop2924" /> + </linearGradient> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient2920" + id="radialGradient2926" + cx="22.553526" + cy="10.432782" + fx="22.553526" + fy="10.432782" + r="6.46875" + gradientTransform="matrix(1.580773,0,0,0.961547,-12.77702,-2.531609)" + gradientUnits="userSpaceOnUse" /> + <linearGradient + inkscape:collect="always" + id="linearGradient2877"> + <stop + style="stop-color:white;stop-opacity:1;" + offset="0" + id="stop2879" /> + <stop + style="stop-color:white;stop-opacity:0;" + offset="1" + id="stop2881" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient2877" + id="linearGradient2894" + gradientUnits="userSpaceOnUse" + x1="21.961548" + y1="6.3608937" + x2="24.508121" + y2="10.75" /> + <linearGradient + inkscape:collect="always" + id="linearGradient3815"> + <stop + style="stop-color:black;stop-opacity:1;" + offset="0" + id="stop3817" /> + <stop + style="stop-color:black;stop-opacity:0;" + offset="1" + id="stop3819" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3815" + id="linearGradient2892" + gradientUnits="userSpaceOnUse" + x1="23.246162" + y1="24.761473" + x2="23.246162" + y2="15.94703" /> + <linearGradient + inkscape:collect="always" + id="linearGradient2867"> + <stop + style="stop-color:white;stop-opacity:1;" + offset="0" + id="stop2869" /> + <stop + style="stop-color:white;stop-opacity:0;" + offset="1" + id="stop2871" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient2867" + id="linearGradient2890" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.809211,0,2.763158)" + x1="19.583334" + y1="10.76408" + x2="23.176371" + y2="10.76408" /> + <linearGradient + id="linearGradient3734"> + <stop + style="stop-color:#babdb6;stop-opacity:1" + offset="0" + id="stop3736" /> + <stop + style="stop-color:white;stop-opacity:1" + offset="1" + id="stop3738" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3734" + id="linearGradient3740" + x1="24.6875" + y1="36.75" + x2="24.6875" + y2="28.617105" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(0,-1)" /> + <linearGradient + id="linearGradient4481"> + <stop + style="stop-color:#555753;stop-opacity:1;" + offset="0" + id="stop4483" /> + <stop + style="stop-color:#babdb6;stop-opacity:1" + offset="1" + id="stop4485" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4481" + id="linearGradient4487" + x1="17.625" + y1="20.814491" + x2="17.625" + y2="5.125" + gradientUnits="userSpaceOnUse" /> + <linearGradient + id="linearGradient2904"> + <stop + id="stop2906" + offset="0" + style="stop-color:#babdb6;stop-opacity:1" /> + <stop + style="stop-color:white;stop-opacity:1;" + offset="0.21551724" + id="stop2910" /> + <stop + id="stop2912" + offset="0.70243758" + style="stop-color:#c3c4c2;stop-opacity:1;" /> + <stop + id="stop2908" + offset="1" + style="stop-color:#888a85;stop-opacity:1" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient2904" + id="linearGradient2902" + x1="18.737373" + y1="13.351768" + x2="30.230837" + y2="13.351768" + gradientUnits="userSpaceOnUse" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient2943" + id="linearGradient2949" + x1="16.65625" + y1="16.14632" + x2="16.65625" + y2="20.381033" + gradientUnits="userSpaceOnUse" /> + <linearGradient + id="linearGradient2943"> + <stop + style="stop-color:#555753;stop-opacity:1" + offset="0" + id="stop2945" /> + <stop + style="stop-color:#2e3436;stop-opacity:1;" + offset="1" + id="stop2947" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient2943" + id="linearGradient2953" + gradientUnits="userSpaceOnUse" + x1="16.65625" + y1="16.14632" + x2="16.65625" + y2="20.381033" + gradientTransform="translate(14,0)" /> + <linearGradient + id="linearGradient2981"> + <stop + style="stop-color:#eeeeec;stop-opacity:1;" + offset="0" + id="stop2983" /> + <stop + style="stop-color:white;stop-opacity:1" + offset="1" + id="stop2985" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient2981" + id="linearGradient2987" + x1="23.374121" + y1="19.452076" + x2="21.649811" + y2="25.229111" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.940947,0,1.564893)" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3795" + id="linearGradient3805" + gradientUnits="userSpaceOnUse" + x1="13.567612" + y1="18.432873" + x2="13.567612" + y2="19.231655" + gradientTransform="translate(20,-1)" /> + <linearGradient + id="linearGradient3795"> + <stop + style="stop-color:white;stop-opacity:1" + offset="0" + id="stop3797" /> + <stop + style="stop-color:#eeeeec;stop-opacity:1;" + offset="1" + id="stop3799" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3795" + id="linearGradient3801" + x1="13.567612" + y1="18.432873" + x2="13.567612" + y2="19.231655" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(0,-1)" /> + <linearGradient + id="linearGradient3726"> + <stop + style="stop-color:#555753;stop-opacity:1" + offset="0" + id="stop3728" /> + <stop + style="stop-color:#888a85;stop-opacity:1" + offset="1" + id="stop3730" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3726" + id="linearGradient3732" + x1="25.606806" + y1="36.722809" + x2="23.640165" + y2="30.421146" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(0,-1)" /> + <linearGradient + inkscape:collect="always" + id="linearGradient3703"> + <stop + style="stop-color:white;stop-opacity:1;" + offset="0" + id="stop3705" /> + <stop + style="stop-color:white;stop-opacity:0;" + offset="1" + id="stop3707" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3703" + id="linearGradient3709" + x1="23.8125" + y1="41.836731" + x2="27.272261" + y2="28.590008" + gradientUnits="userSpaceOnUse" /> + <linearGradient + inkscape:collect="always" + id="linearGradient3779"> + <stop + style="stop-color:black;stop-opacity:1;" + offset="0" + id="stop3781" /> + <stop + style="stop-color:black;stop-opacity:0;" + offset="1" + id="stop3783" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3779" + id="linearGradient3785" + x1="23.997437" + y1="37.835339" + x2="29.74268" + y2="32.355263" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.980843,0,0,0.974547,0.59387,-0.156861)" /> + <linearGradient + inkscape:collect="always" + id="linearGradient2965"> + <stop + style="stop-color:#888a85;stop-opacity:1;" + offset="0" + id="stop2967" /> + <stop + style="stop-color:#888a85;stop-opacity:0;" + offset="1" + id="stop2969" /> + </linearGradient> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient2965" + id="radialGradient2971" + cx="23.82066" + cy="36.907261" + fx="23.82066" + fy="36.907261" + r="12.59534" + gradientTransform="matrix(1,0,0,0.508772,0,18.12988)" + gradientUnits="userSpaceOnUse" /> + <linearGradient + id="linearGradient3711" + inkscape:collect="always"> + <stop + id="stop3713" + offset="0" + style="stop-color:#babdb6;stop-opacity:1" /> + <stop + id="stop3715" + offset="1" + style="stop-color:#888a85;stop-opacity:1" /> + </linearGradient> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3711" + id="radialGradient3691" + cx="18.753521" + cy="40.578671" + fx="18.753521" + fy="40.578671" + r="13.08399" + gradientTransform="matrix(1.106546,0,0,0.58328,-1.909343,15.04719)" + gradientUnits="userSpaceOnUse" /> + <linearGradient + inkscape:collect="always" + id="linearGradient4465"> + <stop + style="stop-color:#2e3436;stop-opacity:1" + offset="0" + id="stop4467" /> + <stop + style="stop-color:#2e3436;stop-opacity:0" + offset="1" + id="stop4469" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4465" + id="linearGradient4460" + gradientUnits="userSpaceOnUse" + x1="32.864544" + y1="13.794194" + x2="32.864544" + y2="5.5441942" + gradientTransform="translate(-0.25,12.5)" /> + <linearGradient + id="linearGradient4475" + inkscape:collect="always"> + <stop + id="stop4477" + offset="0" + style="stop-color:black;stop-opacity:1" /> + <stop + id="stop4479" + offset="1" + style="stop-color:black;stop-opacity:0" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4475" + id="linearGradient4473" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(-0.25,13.5)" + x1="32.864544" + y1="13.794194" + x2="32.864544" + y2="5.5441942" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4499" + id="radialGradient4505" + cx="23.82066" + cy="36.907261" + fx="23.82066" + fy="36.907261" + r="12.59534" + gradientTransform="matrix(1,0,0,0.508772,0,18.12988)" + gradientUnits="userSpaceOnUse" /> + <linearGradient + inkscape:collect="always" + id="linearGradient4499"> + <stop + style="stop-color:black;stop-opacity:1;" + offset="0" + id="stop4501" /> + <stop + style="stop-color:black;stop-opacity:0;" + offset="1" + id="stop4503" /> + </linearGradient> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4499" + id="radialGradient3012" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.508772,0,18.12988)" + cx="23.82066" + cy="36.907261" + fx="23.82066" + fy="36.907261" + r="12.59534" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 24 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="48 : 24 : 1" + inkscape:persp3d-origin="24 : 16 : 1" + id="perspective2798" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient6958" + id="radialGradient3371" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(2.6999424,0,0,3.6828427,-122.46854,-61.286186)" + cx="72.495682" + cy="22.84375" + fx="72.495682" + fy="22.84375" + r="4.8202302" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient6958" + id="radialGradient3373" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(2.6999424,0,0,3.5713875,-122.46854,-58.740132)" + cx="72.495682" + cy="22.84375" + fx="72.495682" + fy="22.84375" + r="4.8202302" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient6958" + id="radialGradient3375" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.8087117,0,0,3.5234273,-57.039447,-57.368542)" + cx="70.53125" + cy="22.734375" + fx="70.53125" + fy="22.734375" + r="3.5975378" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient6958" + id="radialGradient3377" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(2.1454532,0,0,3.0191635,-53.287444,-45.746674)" + cx="60.640625" + cy="22.65625" + fx="60.640625" + fy="22.65625" + r="2.6194003" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4499" + id="radialGradient3026" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.508772,0,18.12988)" + cx="23.82066" + cy="36.907261" + fx="23.82066" + fy="36.907261" + r="12.59534" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4499" + id="radialGradient3028" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.508772,0,18.12988)" + cx="23.82066" + cy="36.907261" + fx="23.82066" + fy="36.907261" + r="12.59534" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3711" + id="radialGradient3030" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.106546,0,0,0.58328,-1.909343,15.04719)" + cx="18.753521" + cy="40.578671" + fx="18.753521" + fy="40.578671" + r="13.08399" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient2965" + id="radialGradient3032" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.508772,0,18.12988)" + cx="23.82066" + cy="36.907261" + fx="23.82066" + fy="36.907261" + r="12.59534" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3779" + id="linearGradient3034" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.980843,0,0,0.974547,0.59387,-0.156861)" + x1="23.997437" + y1="37.835339" + x2="29.74268" + y2="32.355263" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3703" + id="linearGradient3036" + gradientUnits="userSpaceOnUse" + x1="23.8125" + y1="41.836731" + x2="27.272261" + y2="28.590008" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3726" + id="linearGradient3038" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(0,-1)" + x1="25.606806" + y1="36.722809" + x2="23.640165" + y2="30.421146" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3795" + id="linearGradient3040" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(0,-1)" + x1="13.567612" + y1="18.432873" + x2="13.567612" + y2="19.231655" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3795" + id="linearGradient3042" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(20,-1)" + x1="13.567612" + y1="18.432873" + x2="13.567612" + y2="19.231655" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient2981" + id="linearGradient3044" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.940947,0,1.564893)" + x1="23.374121" + y1="19.452076" + x2="21.649811" + y2="25.229111" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient2943" + id="linearGradient3046" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(14,0)" + x1="16.65625" + y1="16.14632" + x2="16.65625" + y2="20.381033" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient2943" + id="linearGradient3048" + gradientUnits="userSpaceOnUse" + x1="16.65625" + y1="16.14632" + x2="16.65625" + y2="20.381033" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient2904" + id="linearGradient3050" + gradientUnits="userSpaceOnUse" + x1="18.737373" + y1="13.351768" + x2="30.230837" + y2="13.351768" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4481" + id="linearGradient3052" + gradientUnits="userSpaceOnUse" + x1="17.625" + y1="20.814491" + x2="17.625" + y2="5.125" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3734" + id="linearGradient3054" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(0,-1)" + x1="24.6875" + y1="36.75" + x2="24.6875" + y2="28.617105" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient2867" + id="linearGradient3056" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.809211,0,2.763158)" + x1="19.583334" + y1="10.76408" + x2="23.176371" + y2="10.76408" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3815" + id="linearGradient3058" + gradientUnits="userSpaceOnUse" + x1="23.246162" + y1="24.761473" + x2="23.246162" + y2="15.94703" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient2877" + id="linearGradient3060" + gradientUnits="userSpaceOnUse" + x1="21.961548" + y1="6.3608937" + x2="24.508121" + y2="10.75" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient2920" + id="radialGradient3062" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.580773,0,0,0.961547,-12.77702,-2.531609)" + cx="22.553526" + cy="10.432782" + fx="22.553526" + fy="10.432782" + r="6.46875" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3228" + id="linearGradient3064" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(0,3)" + x1="17.999674" + y1="10.081399" + x2="30" + y2="10.081399" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3579" + id="linearGradient3066" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.09091,0,0,1.100001,-1.681827,0.84999)" + x1="20.483149" + y1="3.4711361" + x2="28.357954" + y2="25.991137" /> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="12.270833" + inkscape:cx="23.999998" + inkscape:cy="23.999998" + inkscape:current-layer="layer1" + showgrid="true" + inkscape:grid-bbox="true" + inkscape:document-units="px" + inkscape:window-width="780" + inkscape:window-height="776" + inkscape:window-x="161" + inkscape:window-y="146" /> + <metadata + id="metadata2795"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + id="layer1" + inkscape:label="Layer 1" + inkscape:groupmode="layer"> + <g + style="display:inline" + id="g2915" + transform="translate(7.6010187,0.1428571)"> + <path + transform="matrix(0.727673,0,0,1.235135,7.166344,-12.0556)" + d="M 36.415999,36.907261 A 12.59534,6.4081554 0 1 1 11.22532,36.907261 A 12.59534,6.4081554 0 1 1 36.415999,36.907261 z" + sodipodi:ry="6.4081554" + sodipodi:rx="12.59534" + sodipodi:cy="36.907261" + sodipodi:cx="23.82066" + id="path2917" + style="opacity:0.1;fill:url(#radialGradient3026);fill-opacity:1;stroke:none;stroke-width:0.97730058;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:inline" + sodipodi:type="arc" /> + <path + transform="matrix(1.233813,0,0,1.235135,-4.890235,-6.055598)" + d="M 36.415999,36.907261 A 12.59534,6.4081554 0 1 1 11.22532,36.907261 A 12.59534,6.4081554 0 1 1 36.415999,36.907261 z" + sodipodi:ry="6.4081554" + sodipodi:rx="12.59534" + sodipodi:cy="36.907261" + sodipodi:cx="23.82066" + id="path2919" + style="opacity:0.7;fill:url(#radialGradient3028);fill-opacity:1;stroke:none;stroke-width:0.97730058;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:inline" + sodipodi:type="arc" /> + <path + transform="matrix(1.032128,0,0,1.014402,-8.596444e-2,1.56074)" + d="M 36.415999,36.907261 A 12.59534,6.4081554 0 1 1 11.22532,36.907261 A 12.59534,6.4081554 0 1 1 36.415999,36.907261 z" + sodipodi:ry="6.4081554" + sodipodi:rx="12.59534" + sodipodi:cy="36.907261" + sodipodi:cx="23.82066" + id="path2925" + style="opacity:1;fill:url(#radialGradient3030);fill-opacity:1;stroke:#555753;stroke-width:0.97730058;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:inline" + sodipodi:type="arc" /> + <path + transform="matrix(0.43667,0,0,0.429141,14.09824,21.41158)" + d="M 36.415999,36.907261 A 12.59534,6.4081554 0 1 1 11.22532,36.907261 A 12.59534,6.4081554 0 1 1 36.415999,36.907261 z" + sodipodi:ry="6.4081554" + sodipodi:rx="12.59534" + sodipodi:cy="36.907261" + sodipodi:cx="23.82066" + id="path2927" + style="opacity:1;fill:url(#radialGradient3032);fill-opacity:1;stroke:none;stroke-width:0.97730058;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:inline" + sodipodi:type="arc" /> + <path + sodipodi:nodetypes="ccssccc" + id="path2929" + d="M 27.35249,32.125 C 25.613836,32.860383 24.806671,34.177948 23.67433,35.292277 C 23.188021,35.599877 23.07463,36.001723 23.15468,36.568962 C 23.23473,37.136205 23.644126,37.624296 24.196826,37.787146 C 24.749524,37.949994 25.196373,37.917185 25.574713,37.485007 C 26.676195,35.285524 28.744563,33.983863 31,32.85591 C 29.870496,32.536987 28.651039,32.264053 27.35249,32.125 z" + style="opacity:0.7;fill:url(#linearGradient3034);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;display:inline" /> + <path + transform="matrix(1.032128,0,0,1.014402,-8.596444e-2,1.56074)" + d="M 23.8125,31.5 C 20.473005,31.5 17.440949,32.183256 15.34375,33.25 C 13.246551,34.316744 12.21875,35.666366 12.21875,36.90625 C 12.21875,38.146134 13.246551,39.495756 15.34375,40.5625 C 17.440949,41.629244 20.473005,42.312501 23.8125,42.3125 C 27.151995,42.3125 30.184051,41.629244 32.28125,40.5625 C 34.378449,39.495756 35.40625,38.146134 35.40625,36.90625 C 35.40625,35.666366 34.378449,34.316744 32.28125,33.25 C 30.184051,32.183256 27.151995,31.5 23.8125,31.5 z" + id="path2931" + style="opacity:0.4;fill:none;fill-opacity:1;stroke:url(#linearGradient3036);stroke-width:0.97730058;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:inline" + inkscape:original="M 23.8125 30.5 C 16.859872 30.5 11.21875 33.368948 11.21875 36.90625 C 11.21875 40.443552 16.859872 43.312502 23.8125 43.3125 C 30.765128 43.3125 36.406249 40.443552 36.40625 36.90625 C 36.40625 33.368948 30.765128 30.5 23.8125 30.5 z " + inkscape:radius="-0.99470079" + sodipodi:type="inkscape:offset" /> + <path + sodipodi:nodetypes="cc" + id="path2933" + d="M 24.5,27.5 L 24.5,36.5" + style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient3038);stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;display:inline" /> + <path + sodipodi:nodetypes="csc" + id="path2935" + d="M 34.500008,18.999997 C 34.5,23.285708 30.040008,26.499998 24.500006,26.499998 C 18.960004,26.499998 14.5,23.285708 14.500003,18.999997" + style="fill:none;fill-opacity:1;stroke:#888a85;stroke-width:3.00000024;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:inline" /> + <rect + y="16.499998" + x="12.5" + height="2.9999995" + width="4" + id="rect2937" + style="opacity:1;fill:url(#linearGradient3040);fill-opacity:1;stroke:#888a85;stroke-width:0.99999988;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:inline" /> + <rect + y="16.499998" + x="32.5" + height="2.9999995" + width="4" + id="rect2939" + style="opacity:1;fill:url(#linearGradient3042);fill-opacity:1;stroke:#888a85;stroke-width:0.99999988;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:inline" /> + <path + sodipodi:nodetypes="csc" + id="path2941" + d="M 34.500008,18.999991 C 34.500008,23.285701 30.040008,26.499992 24.500006,26.499992 C 18.960004,26.499992 14.5,23.285701 14.500003,18.999991" + style="fill:none;fill-opacity:1;stroke:url(#linearGradient3044);stroke-width:0.99999982;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:inline" /> + <rect + ry="0.9722718" + rx="0.9722718" + y="15" + x="30" + height="6" + width="3.0000005" + id="rect2943" + style="opacity:1;fill:url(#linearGradient3046);fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:inline" /> + <path + transform="matrix(1.5,0,0,1.5,12.25,-11.25)" + d="M 14.5,19 A 0.5,0.5 0 1 1 13.5,19 A 0.5,0.5 0 1 1 14.5,19 z" + sodipodi:ry="0.5" + sodipodi:rx="0.5" + sodipodi:cy="19" + sodipodi:cx="14" + id="path2945" + style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:inline" + sodipodi:type="arc" /> + <rect + ry="0.9722718" + rx="0.9722718" + y="15" + x="16" + height="6" + width="3.0000005" + id="rect2947" + style="opacity:1;fill:url(#linearGradient3048);fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:inline" /> + <rect + ry="7.0108709" + rx="7.0000019" + y="1.5000002" + x="17.499996" + height="24.000008" + width="14.000004" + id="rect2949" + style="opacity:1;fill:url(#linearGradient3050);fill-opacity:1;stroke:url(#linearGradient3052);stroke-width:1.00000048;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:inline" /> + <path + sodipodi:nodetypes="cc" + id="path2951" + d="M 24.5,26.5 L 24.5,36.5" + style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient3054);stroke-width:1px;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1;display:inline" /> + <path + transform="matrix(1.5,0,0,1.5,-7.75,-11.25)" + d="M 14.5,19 A 0.5,0.5 0 1 1 13.5,19 A 0.5,0.5 0 1 1 14.5,19 z" + sodipodi:ry="0.5" + sodipodi:rx="0.5" + sodipodi:cy="19" + sodipodi:cx="14" + id="path2953" + style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:inline" + sodipodi:type="arc" /> + <g + id="g2955" + style="display:inline"> + <rect + style="opacity:1;fill:url(#linearGradient3056);fill-opacity:1;stroke:none;stroke-width:1.00000036;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:inline" + id="rect2957" + width="4" + height="15.374996" + x="20" + y="6" + rx="2" + ry="2.1991496" /> + <path + sodipodi:type="inkscape:offset" + inkscape:radius="-0.54470092" + inkscape:original="M 24.5 2.5 C 20.621999 2.5 17.5 5.615977 17.5 9.5 L 17.5 19.5 C 17.5 23.384022 20.621999 26.5 24.5 26.5 C 28.378001 26.5 31.5 23.384022 31.5 19.5 L 31.5 9.5 C 31.5 5.6159775 28.378001 2.5 24.5 2.5 z " + style="opacity:0.2;fill:url(#linearGradient3058);fill-opacity:1;stroke:none;stroke-width:1.00000048;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:inline" + id="path2959" + d="M 24.5,3.03125 C 20.913777,3.03125 18.03125,5.9078661 18.03125,9.5 L 18.03125,19.5 C 18.03125,23.092133 20.913778,25.96875 24.5,25.96875 C 28.086222,25.96875 30.96875,23.092133 30.96875,19.5 L 30.96875,9.5 C 30.96875,5.9078666 28.086223,3.03125 24.5,3.03125 z" + transform="translate(0,-1)" /> + <path + sodipodi:type="arc" + style="opacity:1;fill:url(#linearGradient3060);fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="path2961" + sodipodi:cx="23.65625" + sodipodi:cy="7.6875" + sodipodi:rx="3.34375" + sodipodi:ry="3.0625" + d="M 27,7.6875 A 3.34375,3.0625 0 1 1 20.3125,7.6875 A 3.34375,3.0625 0 1 1 27,7.6875 z" + transform="matrix(1,0,0,1.081633,-0.375,-1.252551)" /> + </g> + <path + sodipodi:nodetypes="cccccc" + id="path2963" + d="M 24.5,3.03125 C 20.913777,3.03125 18.03125,5.9078661 18.03125,9.5 L 18.03125,14.5 L 30.96875,14.5 L 30.96875,9.5 C 30.96875,5.9078666 28.086223,3.03125 24.5,3.03125 z" + style="opacity:0.9;fill:url(#radialGradient3062);fill-opacity:1;stroke:none;stroke-width:1.00000048;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;display:inline" + transform="translate(0,-1)" /> + <path + sodipodi:nodetypes="csssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssc" + id="path2965" + d="M 22.5,3 C 22.224,3 22,3.224 22,3.5 C 22,3.776 22.224,4 22.5,4 C 22.776,4 23,3.776 23,3.5 C 23,3.224 22.776,3 22.5,3 z M 24.5,3 C 24.224,3 24,3.224 24,3.5 C 24,3.776 24.224,4 24.5,4 C 24.776,4 25,3.776 25,3.5 C 25,3.224 24.776,3 24.5,3 z M 26.5,3 C 26.224,3 26,3.224 26,3.5 C 26,3.776 26.224,4 26.5,4 C 26.776,4 27,3.776 27,3.5 C 27,3.224 26.776,3 26.5,3 z M 21.5,4 C 21.224,4 21,4.224 21,4.5 C 21,4.776 21.224,5 21.5,5 C 21.776,5 22,4.776 22,4.5 C 22,4.224 21.776,4 21.5,4 z M 23.5,4 C 23.224,4 22.999999,4.2240007 23,4.5 C 23,4.7759993 23.223999,5 23.5,5 C 23.776,5 24,4.7759993 24,4.5 C 24,4.2240007 23.776,4 23.5,4 z M 25.5,4 C 25.224,4 24.999999,4.2240007 25,4.5 C 25,4.7759993 25.223999,5 25.5,5 C 25.776,5 26,4.7759993 26,4.5 C 26,4.2240007 25.776,4 25.5,4 z M 27.5,4 C 27.224,4 27,4.224 27,4.5 C 27,4.776 27.224,5 27.5,5 C 27.776,5 28,4.776 28,4.5 C 28,4.224 27.776,4 27.5,4 z M 20.5,5 C 20.224,5 19.999999,5.2240008 20,5.5 C 20,5.7759993 20.223999,6 20.5,6 C 20.776,6 21,5.7759994 21,5.5 C 21,5.2240007 20.776,5 20.5,5 z M 22.5,5 C 22.224,5 21.999999,5.2240008 22,5.5 C 22,5.7759993 22.223999,6 22.5,6 C 22.776,6 23,5.7759994 23,5.5 C 23,5.2240007 22.776,5 22.5,5 z M 24.5,5 C 24.224,5 23.999999,5.2240008 24,5.5 C 24,5.7759993 24.223999,6 24.5,6 C 24.776,6 25,5.7759994 25,5.5 C 25,5.2240007 24.776,5 24.5,5 z M 26.5,5 C 26.224,5 25.999999,5.2240008 26,5.5 C 26,5.7759993 26.223999,6 26.5,6 C 26.776,6 27,5.7759994 27,5.5 C 27,5.2240007 26.776,5 26.5,5 z M 28.5,5 C 28.224,5 28,5.224 28,5.5 C 28,5.776 28.224,6 28.5,6 C 28.776,6 29,5.776 29,5.5 C 29,5.224 28.776,5 28.5,5 z M 19.5,6 C 19.224,6 18.999999,6.2240008 19,6.5 C 19,6.7759993 19.223999,7 19.5,7 C 19.776,7 20,6.7759994 20,6.5 C 20,6.2240007 19.776,6 19.5,6 z M 21.5,6 C 21.224,6 20.999999,6.2240008 21,6.5 C 21,6.7759993 21.223999,7 21.5,7 C 21.776,7 22,6.7759994 22,6.5 C 22,6.2240007 21.776,6 21.5,6 z M 23.5,6 C 23.224,6 22.999999,6.2240008 23,6.5 C 23,6.7759993 23.223999,7 23.5,7 C 23.776,7 24,6.7759994 24,6.5 C 24,6.2240007 23.776,6 23.5,6 z M 25.5,6 C 25.224,6 24.999999,6.2240008 25,6.5 C 25,6.7759993 25.223999,7 25.5,7 C 25.776,7 26,6.7759994 26,6.5 C 26,6.2240007 25.776,6 25.5,6 z M 27.5,6 C 27.224,6 26.999999,6.2240008 27,6.5 C 27,6.7759993 27.223999,7 27.5,7 C 27.776,7 28,6.7759994 28,6.5 C 28,6.2240007 27.776,6 27.5,6 z M 29.5,6 C 29.224,6 29,6.224 29,6.5 C 29,6.776 29.224,7 29.5,7 C 29.776,7 30,6.776 30,6.5 C 30,6.224 29.776,6 29.5,6 z M 20.5,7 C 20.224,7 19.999999,7.2240008 20,7.5 C 20,7.7759993 20.223999,8.0000002 20.5,8 C 20.776,8 21,7.7759994 21,7.5 C 21,7.2240007 20.776,7 20.5,7 z M 22.5,7 C 22.224,7 21.999999,7.2240008 22,7.5 C 22,7.7759993 22.223999,8.0000002 22.5,8 C 22.776,8 23,7.7759994 23,7.5 C 23,7.2240007 22.776,7 22.5,7 z M 24.5,7 C 24.224,7 23.999999,7.2240008 24,7.5 C 24,7.7759993 24.223999,8.0000002 24.5,8 C 24.776,8 25,7.7759994 25,7.5 C 25,7.2240007 24.776,7 24.5,7 z M 26.5,7 C 26.224,7 25.999999,7.2240008 26,7.5 C 26,7.7759993 26.223999,8.0000002 26.5,8 C 26.776,8 27,7.7759994 27,7.5 C 27,7.2240007 26.776,7 26.5,7 z M 28.5,7 C 28.224,7 27.999999,7.2240008 28,7.5 C 28,7.7759993 28.223999,8.0000002 28.5,8 C 28.776,8 29,7.7759994 29,7.5 C 29,7.2240007 28.776,7 28.5,7 z M 30.5,7 C 30.224,7 30,7.224 30,7.5 C 30,7.776 30.224,8 30.5,8 C 30.776,8 31,7.776 31,7.5 C 31,7.224 30.776,7 30.5,7 z M 19.5,8 C 19.224,8 18.999999,8.2240008 19,8.5 C 19,8.7759993 19.223999,9 19.5,9 C 19.776,9 20,8.7759994 20,8.5 C 20,8.2240007 19.776,8 19.5,8 z M 21.5,8 C 21.224,8 20.999999,8.2240008 21,8.5 C 21,8.7759993 21.223999,9 21.5,9 C 21.776,9 22,8.7759994 22,8.5 C 22,8.2240007 21.776,8 21.5,8 z M 23.5,8 C 23.224,8 22.999999,8.2240008 23,8.5 C 23,8.7759993 23.223999,9 23.5,9 C 23.776,9 24,8.7759994 24,8.5 C 24,8.2240007 23.776,8 23.5,8 z M 25.5,8 C 25.224,8 24.999999,8.2240008 25,8.5 C 25,8.7759993 25.223999,9 25.5,9 C 25.776,9 26,8.7759994 26,8.5 C 26,8.2240007 25.776,8 25.5,8 z M 27.5,8 C 27.224,8 26.999999,8.2240008 27,8.5 C 27,8.7759993 27.223999,9 27.5,9 C 27.776,9 28,8.7759994 28,8.5 C 28,8.2240007 27.776,8 27.5,8 z M 29.5,8 C 29.224,8 28.999999,8.2240008 29,8.5 C 29,8.7759993 29.223999,9 29.5,9 C 29.776,9 30,8.7759994 30,8.5 C 30,8.2240007 29.776,8 29.5,8 z M 18.5,9 C 18.224,9 17.999999,9.224001 18,9.5 C 18,9.775999 18.223999,10 18.5,10 C 18.776,10 19,9.775999 19,9.5 C 19,9.224001 18.776,9 18.5,9 z M 20.5,9 C 20.224,9 19.999999,9.224001 20,9.5 C 20,9.775999 20.223999,10 20.5,10 C 20.776,10 21,9.775999 21,9.5 C 21,9.224001 20.776,9 20.5,9 z M 22.5,9 C 22.224,9 21.999999,9.224001 22,9.5 C 22,9.775999 22.223999,10 22.5,10 C 22.776,10 23,9.775999 23,9.5 C 23,9.224001 22.776,9 22.5,9 z M 24.5,9 C 24.224,9 23.999999,9.224001 24,9.5 C 24,9.775999 24.223999,10 24.5,10 C 24.776,10 25,9.775999 25,9.5 C 25,9.224001 24.776,9 24.5,9 z M 26.5,9 C 26.224,9 25.999999,9.224001 26,9.5 C 26,9.775999 26.223999,10 26.5,10 C 26.776,10 27,9.775999 27,9.5 C 27,9.224001 26.776,9 26.5,9 z M 28.5,9 C 28.224,9 27.999999,9.224001 28,9.5 C 28,9.775999 28.223999,10 28.5,10 C 28.776,10 29,9.775999 29,9.5 C 29,9.224001 28.776,9 28.5,9 z M 30.5,9 C 30.224,9 30,9.224 30,9.5 C 30,9.776 30.224,10 30.5,10 C 30.776,10 31,9.776 31,9.5 C 31,9.224 30.776,9 30.5,9 z M 19.5,10 C 19.224,10 18.999999,10.224001 19,10.5 C 19,10.775999 19.223999,11 19.5,11 C 19.776,11 20,10.775999 20,10.5 C 20,10.224001 19.776,10 19.5,10 z M 21.5,10 C 21.224,10 20.999999,10.224001 21,10.5 C 21,10.775999 21.223999,11 21.5,11 C 21.776,11 22,10.775999 22,10.5 C 22,10.224001 21.776,10 21.5,10 z M 23.5,10 C 23.224,10 22.999999,10.224001 23,10.5 C 23,10.775999 23.223999,11 23.5,11 C 23.776,11 24,10.775999 24,10.5 C 24,10.224001 23.776,10 23.5,10 z M 25.5,10 C 25.224,10 24.999999,10.224001 25,10.5 C 25,10.775999 25.223999,11 25.5,11 C 25.776,11 26,10.775999 26,10.5 C 26,10.224001 25.776,10 25.5,10 z M 27.5,10 C 27.224,10 26.999999,10.224001 27,10.5 C 27,10.775999 27.223999,11 27.5,11 C 27.776,11 28,10.775999 28,10.5 C 28,10.224001 27.776,10 27.5,10 z M 29.5,10 C 29.224,10 28.999999,10.224001 29,10.5 C 29,10.775999 29.223999,11 29.5,11 C 29.776,11 30,10.775999 30,10.5 C 30,10.224001 29.776,10 29.5,10 z M 18.5,11 C 18.224,11 17.999999,11.224 18,11.5 C 18,11.775999 18.223999,12 18.5,12 C 18.776,12 19,11.775999 19,11.5 C 19,11.224001 18.776,11 18.5,11 z M 20.5,11 C 20.224,11 19.999999,11.224 20,11.5 C 20,11.775999 20.223999,12 20.5,12 C 20.776,12 21,11.775999 21,11.5 C 21,11.224001 20.776,11 20.5,11 z M 22.5,11 C 22.224,11 21.999999,11.224 22,11.5 C 22,11.775999 22.223999,12 22.5,12 C 22.776,12 23,11.775999 23,11.5 C 23,11.224001 22.776,11 22.5,11 z M 24.5,11 C 24.224,11 23.999999,11.224 24,11.5 C 24,11.775999 24.223999,12 24.5,12 C 24.776,12 25,11.775999 25,11.5 C 25,11.224001 24.776,11 24.5,11 z M 26.5,11 C 26.224,11 25.999999,11.224 26,11.5 C 26,11.775999 26.223999,12 26.5,12 C 26.776,12 27,11.775999 27,11.5 C 27,11.224001 26.776,11 26.5,11 z M 28.5,11 C 28.224,11 27.999999,11.224 28,11.5 C 28,11.775999 28.223999,12 28.5,12 C 28.776,12 29,11.775999 29,11.5 C 29,11.224001 28.776,11 28.5,11 z M 30.5,11 C 30.224,11 30,11.224 30,11.5 C 30,11.776 30.224,12 30.5,12 C 30.776,12 31,11.776 31,11.5 C 31,11.224 30.776,11 30.5,11 z M 19.5,12 C 19.224,12 18.999999,12.224 19,12.5 C 19,12.775999 19.223999,13 19.5,13 C 19.776,13 20,12.775999 20,12.5 C 20,12.224001 19.776,12 19.5,12 z M 21.5,12 C 21.224,12 20.999999,12.224 21,12.5 C 21,12.775999 21.223999,13 21.5,13 C 21.776,13 22,12.775999 22,12.5 C 22,12.224001 21.776,12 21.5,12 z M 23.5,12 C 23.224,12 22.999999,12.224 23,12.5 C 23,12.775999 23.223999,13 23.5,13 C 23.776,13 24,12.775999 24,12.5 C 24,12.224001 23.776,12 23.5,12 z M 25.5,12 C 25.224,12 24.999999,12.224 25,12.5 C 25,12.775999 25.223999,13 25.5,13 C 25.776,13 26,12.775999 26,12.5 C 26,12.224001 25.776,12 25.5,12 z M 27.5,12 C 27.224,12 26.999999,12.224 27,12.5 C 27,12.775999 27.223999,13 27.5,13 C 27.776,13 28,12.775999 28,12.5 C 28,12.224001 27.776,12 27.5,12 z M 29.5,12 C 29.224,12 28.999999,12.224 29,12.5 C 29,12.775999 29.223999,13 29.5,13 C 29.776,13 30,12.775999 30,12.5 C 30,12.224001 29.776,12 29.5,12 z M 18.5,13 C 18.224,13 17.999999,13.224 18,13.5 C 18,13.775999 18.223999,14 18.5,14 C 18.776,14 19,13.775999 19,13.5 C 19,13.224001 18.776,13 18.5,13 z M 20.5,13 C 20.224,13 19.999999,13.224 20,13.5 C 20,13.775999 20.223999,14 20.5,14 C 20.776,14 21,13.775999 21,13.5 C 21,13.224001 20.776,13 20.5,13 z M 22.5,13 C 22.224,13 21.999999,13.224 22,13.5 C 22,13.775999 22.223999,14 22.5,14 C 22.776,14 23,13.775999 23,13.5 C 23,13.224001 22.776,13 22.5,13 z M 24.5,13 C 24.224,13 23.999999,13.224 24,13.5 C 24,13.775999 24.223999,14 24.5,14 C 24.776,14 25,13.775999 25,13.5 C 25,13.224001 24.776,13 24.5,13 z M 26.5,13 C 26.224,13 25.999999,13.224 26,13.5 C 26,13.775999 26.223999,14 26.5,14 C 26.776,14 27,13.775999 27,13.5 C 27,13.224001 26.776,13 26.5,13 z M 28.5,13 C 28.224,13 27.999999,13.224 28,13.5 C 28,13.775999 28.223999,14 28.5,14 C 28.776,14 29,13.775999 29,13.5 C 29,13.224001 28.776,13 28.5,13 z M 30.5,13 C 30.224,13 30,13.224 30,13.5 C 30,13.776 30.224,14 30.5,14 C 30.776,14 31,13.776 31,13.5 C 31,13.224 30.776,13 30.5,13 z M 19.5,14 C 19.224,14 18.999999,14.224 19,14.5 C 19,14.775999 19.223999,15 19.5,15 C 19.776,15 20,14.775999 20,14.5 C 20,14.224001 19.776,14 19.5,14 z M 21.5,14 C 21.224,14 20.999999,14.224 21,14.5 C 21,14.775999 21.223999,15 21.5,15 C 21.776,15 22,14.775999 22,14.5 C 22,14.224001 21.776,14 21.5,14 z M 23.5,14 C 23.224,14 22.999999,14.224 23,14.5 C 23,14.775999 23.223999,15 23.5,15 C 23.776,15 24,14.775999 24,14.5 C 24,14.224001 23.776,14 23.5,14 z M 25.5,14 C 25.224,14 24.999999,14.224 25,14.5 C 25,14.775999 25.223999,15 25.5,15 C 25.776,15 26,14.775999 26,14.5 C 26,14.224001 25.776,14 25.5,14 z M 27.5,14 C 27.224,14 26.999999,14.224 27,14.5 C 27,14.775999 27.223999,15 27.5,15 C 27.776,15 28,14.775999 28,14.5 C 28,14.224001 27.776,14 27.5,14 z M 29.5,14 C 29.224,14 28.999999,14.224 29,14.5 C 29,14.775999 29.223999,15 29.5,15 C 29.776,15 30,14.775999 30,14.5 C 30,14.224001 29.776,14 29.5,14 z M 18.5,15 C 18.224,15 17.999999,15.224 18,15.5 C 18,15.775999 18.223999,16 18.5,16 C 18.776,16 19,15.775999 19,15.5 C 19,15.224001 18.776,15 18.5,15 z M 20.5,15 C 20.224,15 19.999999,15.224 20,15.5 C 20,15.775999 20.223999,16 20.5,16 C 20.776,16 21,15.775999 21,15.5 C 21,15.224001 20.776,15 20.5,15 z M 22.5,15 C 22.224,15 21.999999,15.224 22,15.5 C 22,15.775999 22.223999,16 22.5,16 C 22.776,16 23,15.775999 23,15.5 C 23,15.224001 22.776,15 22.5,15 z M 24.5,15 C 24.224,15 23.999999,15.224 24,15.5 C 24,15.775999 24.223999,16 24.5,16 C 24.776,16 25,15.775999 25,15.5 C 25,15.224001 24.776,15 24.5,15 z M 26.5,15 C 26.224,15 25.999999,15.224 26,15.5 C 26,15.775999 26.223999,16 26.5,16 C 26.776,16 27,15.775999 27,15.5 C 27,15.224001 26.776,15 26.5,15 z M 28.5,15 C 28.224,15 27.999999,15.224 28,15.5 C 28,15.775999 28.223999,16 28.5,16 C 28.776,16 29,15.775999 29,15.5 C 29,15.224001 28.776,15 28.5,15 z M 30.5,15 C 30.224,15 30,15.224 30,15.5 C 30,15.776 30.224,16 30.5,16 C 30.776,16 31,15.776 31,15.5 C 31,15.224 30.776,15 30.5,15 z M 19.5,16 C 19.224,16 18.999999,16.224001 19,16.5 C 19,16.775999 19.223999,17 19.5,17 C 19.776,17 20,16.776 20,16.5 C 20,16.224001 19.776,16 19.5,16 z M 21.5,16 C 21.224,16 20.999999,16.224001 21,16.5 C 21,16.775999 21.223999,17 21.5,17 C 21.776,17 22,16.776 22,16.5 C 22,16.224001 21.776,16 21.5,16 z M 23.5,16 C 23.224,16 22.999999,16.224001 23,16.5 C 23,16.775999 23.223999,17 23.5,17 C 23.776,17 24,16.776 24,16.5 C 24,16.224001 23.776,16 23.5,16 z M 25.5,16 C 25.224,16 24.999999,16.224001 25,16.5 C 25,16.775999 25.223999,17 25.5,17 C 25.776,17 26,16.776 26,16.5 C 26,16.224001 25.776,16 25.5,16 z M 27.5,16 C 27.224,16 26.999999,16.224001 27,16.5 C 27,16.775999 27.223999,17 27.5,17 C 27.776,17 28,16.776 28,16.5 C 28,16.224001 27.776,16 27.5,16 z M 29.5,16 C 29.224,16 28.999999,16.224 29,16.5 C 29,16.775999 29.223999,17 29.5,17 C 29.776,17 30,16.775999 30,16.5 C 30,16.224001 29.776,16 29.5,16 z M 18.5,17 C 18.224,17 17.999999,17.224001 18,17.5 C 18,17.775999 18.223999,18 18.5,18 C 18.776,18 19,17.776 19,17.5 C 19,17.224001 18.776,17 18.5,17 z M 20.5,17 C 20.224,17 19.999999,17.224001 20,17.5 C 20,17.775999 20.223999,18 20.5,18 C 20.776,18 21,17.776 21,17.5 C 21,17.224001 20.776,17 20.5,17 z M 22.5,17 C 22.224,17 21.999999,17.224001 22,17.5 C 22,17.775999 22.223999,18 22.5,18 C 22.776,18 23,17.776 23,17.5 C 23,17.224001 22.776,17 22.5,17 z M 24.5,17 C 24.224,17 23.999999,17.224001 24,17.5 C 24,17.775999 24.223999,18 24.5,18 C 24.776,18 25,17.776 25,17.5 C 25,17.224001 24.776,17 24.5,17 z M 26.5,17 C 26.224,17 25.999999,17.224001 26,17.5 C 26,17.775999 26.223999,18 26.5,18 C 26.776,18 27,17.776 27,17.5 C 27,17.224001 26.776,17 26.5,17 z M 28.5,17 C 28.224,17 27.999999,17.224001 28,17.5 C 28,17.775999 28.223999,18 28.5,18 C 28.776,18 29,17.776 29,17.5 C 29,17.224001 28.776,17 28.5,17 z M 30.5,17 C 30.224,17 30,17.224 30,17.5 C 30,17.776 30.224,18 30.5,18 C 30.776,18 31,17.776 31,17.5 C 31,17.224 30.776,17 30.5,17 z M 19.5,18 C 19.224,18 18.999999,18.224001 19,18.5 C 19,18.775999 19.223999,19 19.5,19 C 19.776,19 20,18.776 20,18.5 C 20,18.224001 19.776,18 19.5,18 z M 21.5,18 C 21.224,18 20.999999,18.224001 21,18.5 C 21,18.775999 21.223999,19 21.5,19 C 21.776,19 22,18.776 22,18.5 C 22,18.224001 21.776,18 21.5,18 z M 23.5,18 C 23.224,18 22.999999,18.224001 23,18.5 C 23,18.775999 23.223999,19 23.5,19 C 23.776,19 24,18.776 24,18.5 C 24,18.224001 23.776,18 23.5,18 z M 25.5,18 C 25.224,18 24.999999,18.224001 25,18.5 C 25,18.775999 25.223999,19 25.5,19 C 25.776,19 26,18.776 26,18.5 C 26,18.224001 25.776,18 25.5,18 z M 27.5,18 C 27.224,18 26.999999,18.224001 27,18.5 C 27,18.775999 27.223999,19 27.5,19 C 27.776,19 28,18.776 28,18.5 C 28,18.224001 27.776,18 27.5,18 z M 29.5,18 C 29.224,18 28.999999,18.224001 29,18.5 C 29,18.775999 29.223999,19 29.5,19 C 29.776,19 30,18.776 30,18.5 C 30,18.224001 29.776,18 29.5,18 z M 18.5,19 C 18.224,19 17.999999,19.224001 18,19.5 C 18,19.775999 18.223999,19.999999 18.5,20 C 18.776,20 19,19.776 19,19.5 C 19,19.224001 18.776,19 18.5,19 z M 20.5,19 C 20.224,19 19.999999,19.224001 20,19.5 C 20,19.775999 20.223999,19.999999 20.5,20 C 20.776,20 21,19.776 21,19.5 C 21,19.224001 20.776,19 20.5,19 z M 22.5,19 C 22.224,19 21.999999,19.224001 22,19.5 C 22,19.775999 22.223999,19.999999 22.5,20 C 22.776,20 23,19.776 23,19.5 C 23,19.224001 22.776,19 22.5,19 z M 24.5,19 C 24.224,19 23.999999,19.224001 24,19.5 C 24,19.775999 24.223999,19.999999 24.5,20 C 24.776,20 25,19.776 25,19.5 C 25,19.224001 24.776,19 24.5,19 z M 26.5,19 C 26.224,19 25.999999,19.224001 26,19.5 C 26,19.775999 26.223999,19.999999 26.5,20 C 26.776,20 27,19.776 27,19.5 C 27,19.224001 26.776,19 26.5,19 z M 28.5,19 C 28.224,19 27.999999,19.224001 28,19.5 C 28,19.775999 28.223999,19.999999 28.5,20 C 28.776,20 29,19.776 29,19.5 C 29,19.224001 28.776,19 28.5,19 z M 30.5,19 C 30.224,19 30,19.224 30,19.5 C 30,19.776 30.224,20 30.5,20 C 30.776,20 31,19.776 31,19.5 C 31,19.224 30.776,19 30.5,19 z M 19.5,20 C 19.224,20 18.999999,20.224001 19,20.5 C 19,20.775999 19.223999,20.999999 19.5,21 C 19.776,21 20,20.776 20,20.5 C 20,20.224001 19.776,20 19.5,20 z M 21.5,20 C 21.224,20 20.999999,20.224001 21,20.5 C 21,20.775999 21.223999,20.999999 21.5,21 C 21.776,21 22,20.776 22,20.5 C 22,20.224001 21.776,20 21.5,20 z M 23.5,20 C 23.224,20 22.999999,20.224001 23,20.5 C 23,20.775999 23.223999,20.999999 23.5,21 C 23.776,21 24,20.776 24,20.5 C 24,20.224001 23.776,20 23.5,20 z M 25.5,20 C 25.224,20 24.999999,20.224001 25,20.5 C 25,20.775999 25.223999,20.999999 25.5,21 C 25.776,21 26,20.776 26,20.5 C 26,20.224001 25.776,20 25.5,20 z M 27.5,20 C 27.224,20 26.999999,20.224001 27,20.5 C 27,20.775999 27.223999,20.999999 27.5,21 C 27.776,21 28,20.776 28,20.5 C 28,20.224001 27.776,20 27.5,20 z M 29.5,20 C 29.224,20 28.999999,20.224001 29,20.5 C 29,20.775999 29.223999,20.999999 29.5,21 C 29.776,21 30,20.776 30,20.5 C 30,20.224001 29.776,20 29.5,20 z M 20.5,21 C 20.224,21 19.999999,21.224001 20,21.5 C 20,21.775999 20.223999,21.999999 20.5,22 C 20.776,22 21,21.776 21,21.5 C 21,21.224001 20.776,21 20.5,21 z M 22.5,21 C 22.224,21 21.999999,21.224001 22,21.5 C 22,21.775999 22.223999,21.999999 22.5,22 C 22.776,22 23,21.776 23,21.5 C 23,21.224001 22.776,21 22.5,21 z M 24.5,21 C 24.224,21 23.999999,21.224001 24,21.5 C 24,21.775999 24.223999,21.999999 24.5,22 C 24.776,22 25,21.776 25,21.5 C 25,21.224001 24.776,21 24.5,21 z M 26.5,21 C 26.224,21 25.999999,21.224001 26,21.5 C 26,21.775999 26.223999,21.999999 26.5,22 C 26.776,22 27,21.776 27,21.5 C 27,21.224001 26.776,21 26.5,21 z M 28.5,21 C 28.224,21 27.999999,21.224001 28,21.5 C 28,21.775999 28.223999,21.999999 28.5,22 C 28.776,22 29,21.776 29,21.5 C 29,21.224001 28.776,21 28.5,21 z M 21.5,22 C 21.224,22 20.999999,22.224001 21,22.5 C 21,22.775999 21.223999,22.999999 21.5,23 C 21.776,23 22,22.776 22,22.5 C 22,22.224001 21.776,22 21.5,22 z M 23.5,22 C 23.224,22 22.999999,22.224001 23,22.5 C 23,22.775999 23.223999,22.999999 23.5,23 C 23.776,23 24,22.776 24,22.5 C 24,22.224001 23.776,22 23.5,22 z M 25.5,22 C 25.224,22 24.999999,22.224001 25,22.5 C 25,22.775999 25.223999,22.999999 25.5,23 C 25.776,23 26,22.776 26,22.5 C 26,22.224001 25.776,22 25.5,22 z M 27.5,22 C 27.224,22 26.999999,22.224001 27,22.5 C 27,22.775999 27.223999,22.999999 27.5,23 C 27.776,23 28,22.776 28,22.5 C 28,22.224001 27.776,22 27.5,22 z M 22.5,23 C 22.224,23 21.999999,23.224001 22,23.5 C 22,23.775999 22.223999,23.999999 22.5,24 C 22.776,24 23,23.776 23,23.5 C 23,23.224001 22.776,23 22.5,23 z M 24.5,23 C 24.224,23 23.999999,23.224001 24,23.5 C 24,23.775999 24.223999,23.999999 24.5,24 C 24.776,24 25,23.776 25,23.5 C 25,23.224001 24.776,23 24.5,23 z M 26.5,23 C 26.224,23 25.999999,23.224001 26,23.5 C 26,23.775999 26.223999,23.999999 26.5,24 C 26.776,24 27,23.776 27,23.5 C 27,23.224001 26.776,23 26.5,23 z M 23.5,24 C 23.224,24 22.999999,24.224001 23,24.5 C 23,24.775999 23.223999,24.999999 23.5,25 C 23.776,25 24,24.776 24,24.5 C 24,24.224001 23.776,24 23.5,24 z M 25.5,24 C 25.224,24 24.999999,24.224001 25,24.5 C 25,24.775999 25.223999,24.999999 25.5,25 C 25.776,25 26,24.776 26,24.5 C 26,24.224001 25.776,24 25.5,24 z" + style="opacity:0.5;fill:url(#linearGradient3064);fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:inline" /> + <rect + ry="6.0500031" + rx="6.0000024" + y="2.5000026" + x="18.500008" + height="22.000008" + width="12.000005" + id="rect2967" + style="opacity:1;fill:none;fill-opacity:1;stroke:url(#linearGradient3066);stroke-width:1.0000006;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:inline" /> + </g> + <g + style="stroke:#729fcf;display:inline" + id="g27916" + transform="matrix(0.3975228,0,0,0.9423324,-18.689059,-4.6737794)"> + <path + sodipodi:nodetypes="csc" + id="path21632" + d="M 67.5625,34.78125 C 71.176369,31.899733 73.499999,27.47788 73.5,22.5 C 73.5,17.793936 71.43603,13.569699 68.15625,10.6875" + style="opacity:1;fill:none;fill-opacity:1;stroke:url(#radialGradient3375);stroke-width:1.25757563;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1.20000057;stroke-opacity:1;display:inline" /> + </g> + <g + style="stroke:#729fcf;display:inline" + id="g28807" + transform="matrix(0.272091,0,0,0.9423324,-15.475768,-4.3498543)"> + <path + sodipodi:nodetypes="csc" + id="path27920" + d="M 74.954806,30.15625 C 77.22438,28.375887 78.673556,25.606103 78.673556,22.5 C 78.673556,19.560794 77.36198,16.939552 75.298556,15.15625" + style="opacity:1;fill:none;fill-opacity:1;stroke:url(#radialGradient3377);stroke-width:1.52005064;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1.20000057;stroke-opacity:1;display:inline" /> + </g> + </g> +</svg> diff --git a/mate-volume-control/data/icons/scalable/status/audio-input-microphone-muted.svg b/mate-volume-control/data/icons/scalable/status/audio-input-microphone-muted.svg new file mode 100644 index 0000000..962b4de --- /dev/null +++ b/mate-volume-control/data/icons/scalable/status/audio-input-microphone-muted.svg @@ -0,0 +1,1040 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="48px" + height="48px" + id="svg2790" + sodipodi:version="0.32" + inkscape:version="0.46" + sodipodi:docname="audio-input-mic-muted.svg" + inkscape:output_extension="org.inkscape.output.svg.inkscape"> + <defs + id="defs2792"> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient6958" + id="radialGradient6964" + cx="72.495682" + cy="22.84375" + fx="72.495682" + fy="22.84375" + r="4.8202302" + gradientTransform="matrix(2.6999424,0,0,3.5713875,-122.46854,-58.740132)" + gradientUnits="userSpaceOnUse" /> + <linearGradient + id="linearGradient6958"> + <stop + style="stop-color:#729fcf;stop-opacity:1;" + offset="0" + id="stop6960" /> + <stop + id="stop6966" + offset="0.60000002" + style="stop-color:#729fcf;stop-opacity:1;" /> + <stop + style="stop-color:#729fcf;stop-opacity:0;" + offset="1" + id="stop6962" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + id="linearGradient3579"> + <stop + style="stop-color:white;stop-opacity:1;" + offset="0" + id="stop3581" /> + <stop + style="stop-color:white;stop-opacity:0;" + offset="1" + id="stop3583" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3579" + id="linearGradient3585" + x1="20.483149" + y1="3.4711361" + x2="28.357954" + y2="25.991137" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.09091,0,0,1.100001,-1.681827,0.84999)" /> + <linearGradient + id="linearGradient3228"> + <stop + style="stop-color:black;stop-opacity:1;" + offset="0" + id="stop3230" /> + <stop + id="stop3573" + offset="0.06770357" + style="stop-color:black;stop-opacity:0.42857143;" /> + <stop + id="stop3569" + offset="0.29894069" + style="stop-color:black;stop-opacity:0;" /> + <stop + style="stop-color:black;stop-opacity:0.49803922;" + offset="0.77437174" + id="stop3571" /> + <stop + style="stop-color:black;stop-opacity:1;" + offset="1" + id="stop3232" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3228" + id="linearGradient3567" + gradientUnits="userSpaceOnUse" + x1="17.999674" + y1="10.081399" + x2="30" + y2="10.081399" + gradientTransform="translate(0,3)" /> + <linearGradient + inkscape:collect="always" + id="linearGradient2920"> + <stop + style="stop-color:white;stop-opacity:1;" + offset="0" + id="stop2922" /> + <stop + style="stop-color:white;stop-opacity:0;" + offset="1" + id="stop2924" /> + </linearGradient> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient2920" + id="radialGradient2926" + cx="22.553526" + cy="10.432782" + fx="22.553526" + fy="10.432782" + r="6.46875" + gradientTransform="matrix(1.580773,0,0,0.961547,-12.77702,-2.531609)" + gradientUnits="userSpaceOnUse" /> + <linearGradient + inkscape:collect="always" + id="linearGradient2877"> + <stop + style="stop-color:white;stop-opacity:1;" + offset="0" + id="stop2879" /> + <stop + style="stop-color:white;stop-opacity:0;" + offset="1" + id="stop2881" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient2877" + id="linearGradient2894" + gradientUnits="userSpaceOnUse" + x1="21.961548" + y1="6.3608937" + x2="24.508121" + y2="10.75" /> + <linearGradient + inkscape:collect="always" + id="linearGradient3815"> + <stop + style="stop-color:black;stop-opacity:1;" + offset="0" + id="stop3817" /> + <stop + style="stop-color:black;stop-opacity:0;" + offset="1" + id="stop3819" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3815" + id="linearGradient2892" + gradientUnits="userSpaceOnUse" + x1="23.246162" + y1="24.761473" + x2="23.246162" + y2="15.94703" /> + <linearGradient + inkscape:collect="always" + id="linearGradient2867"> + <stop + style="stop-color:white;stop-opacity:1;" + offset="0" + id="stop2869" /> + <stop + style="stop-color:white;stop-opacity:0;" + offset="1" + id="stop2871" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient2867" + id="linearGradient2890" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.809211,0,2.763158)" + x1="19.583334" + y1="10.76408" + x2="23.176371" + y2="10.76408" /> + <linearGradient + id="linearGradient3734"> + <stop + style="stop-color:#babdb6;stop-opacity:1" + offset="0" + id="stop3736" /> + <stop + style="stop-color:white;stop-opacity:1" + offset="1" + id="stop3738" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3734" + id="linearGradient3740" + x1="24.6875" + y1="36.75" + x2="24.6875" + y2="28.617105" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(0,-1)" /> + <linearGradient + id="linearGradient4481"> + <stop + style="stop-color:#555753;stop-opacity:1;" + offset="0" + id="stop4483" /> + <stop + style="stop-color:#babdb6;stop-opacity:1" + offset="1" + id="stop4485" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4481" + id="linearGradient4487" + x1="17.625" + y1="20.814491" + x2="17.625" + y2="5.125" + gradientUnits="userSpaceOnUse" /> + <linearGradient + id="linearGradient2904"> + <stop + id="stop2906" + offset="0" + style="stop-color:#babdb6;stop-opacity:1" /> + <stop + style="stop-color:white;stop-opacity:1;" + offset="0.21551724" + id="stop2910" /> + <stop + id="stop2912" + offset="0.70243758" + style="stop-color:#c3c4c2;stop-opacity:1;" /> + <stop + id="stop2908" + offset="1" + style="stop-color:#888a85;stop-opacity:1" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient2904" + id="linearGradient2902" + x1="18.737373" + y1="13.351768" + x2="30.230837" + y2="13.351768" + gradientUnits="userSpaceOnUse" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient2943" + id="linearGradient2949" + x1="16.65625" + y1="16.14632" + x2="16.65625" + y2="20.381033" + gradientUnits="userSpaceOnUse" /> + <linearGradient + id="linearGradient2943"> + <stop + style="stop-color:#555753;stop-opacity:1" + offset="0" + id="stop2945" /> + <stop + style="stop-color:#2e3436;stop-opacity:1;" + offset="1" + id="stop2947" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient2943" + id="linearGradient2953" + gradientUnits="userSpaceOnUse" + x1="16.65625" + y1="16.14632" + x2="16.65625" + y2="20.381033" + gradientTransform="translate(14,0)" /> + <linearGradient + id="linearGradient2981"> + <stop + style="stop-color:#eeeeec;stop-opacity:1;" + offset="0" + id="stop2983" /> + <stop + style="stop-color:white;stop-opacity:1" + offset="1" + id="stop2985" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient2981" + id="linearGradient2987" + x1="23.374121" + y1="19.452076" + x2="21.649811" + y2="25.229111" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.940947,0,1.564893)" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3795" + id="linearGradient3805" + gradientUnits="userSpaceOnUse" + x1="13.567612" + y1="18.432873" + x2="13.567612" + y2="19.231655" + gradientTransform="translate(20,-1)" /> + <linearGradient + id="linearGradient3795"> + <stop + style="stop-color:white;stop-opacity:1" + offset="0" + id="stop3797" /> + <stop + style="stop-color:#eeeeec;stop-opacity:1;" + offset="1" + id="stop3799" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3795" + id="linearGradient3801" + x1="13.567612" + y1="18.432873" + x2="13.567612" + y2="19.231655" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(0,-1)" /> + <linearGradient + id="linearGradient3726"> + <stop + style="stop-color:#555753;stop-opacity:1" + offset="0" + id="stop3728" /> + <stop + style="stop-color:#888a85;stop-opacity:1" + offset="1" + id="stop3730" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3726" + id="linearGradient3732" + x1="25.606806" + y1="36.722809" + x2="23.640165" + y2="30.421146" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(0,-1)" /> + <linearGradient + inkscape:collect="always" + id="linearGradient3703"> + <stop + style="stop-color:white;stop-opacity:1;" + offset="0" + id="stop3705" /> + <stop + style="stop-color:white;stop-opacity:0;" + offset="1" + id="stop3707" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3703" + id="linearGradient3709" + x1="23.8125" + y1="41.836731" + x2="27.272261" + y2="28.590008" + gradientUnits="userSpaceOnUse" /> + <linearGradient + inkscape:collect="always" + id="linearGradient3779"> + <stop + style="stop-color:black;stop-opacity:1;" + offset="0" + id="stop3781" /> + <stop + style="stop-color:black;stop-opacity:0;" + offset="1" + id="stop3783" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3779" + id="linearGradient3785" + x1="23.997437" + y1="37.835339" + x2="29.74268" + y2="32.355263" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.980843,0,0,0.974547,0.59387,-0.156861)" /> + <linearGradient + inkscape:collect="always" + id="linearGradient2965"> + <stop + style="stop-color:#888a85;stop-opacity:1;" + offset="0" + id="stop2967" /> + <stop + style="stop-color:#888a85;stop-opacity:0;" + offset="1" + id="stop2969" /> + </linearGradient> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient2965" + id="radialGradient2971" + cx="23.82066" + cy="36.907261" + fx="23.82066" + fy="36.907261" + r="12.59534" + gradientTransform="matrix(1,0,0,0.508772,0,18.12988)" + gradientUnits="userSpaceOnUse" /> + <linearGradient + id="linearGradient3711" + inkscape:collect="always"> + <stop + id="stop3713" + offset="0" + style="stop-color:#babdb6;stop-opacity:1" /> + <stop + id="stop3715" + offset="1" + style="stop-color:#888a85;stop-opacity:1" /> + </linearGradient> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3711" + id="radialGradient3691" + cx="18.753521" + cy="40.578671" + fx="18.753521" + fy="40.578671" + r="13.08399" + gradientTransform="matrix(1.106546,0,0,0.58328,-1.909343,15.04719)" + gradientUnits="userSpaceOnUse" /> + <linearGradient + inkscape:collect="always" + id="linearGradient4465"> + <stop + style="stop-color:#2e3436;stop-opacity:1" + offset="0" + id="stop4467" /> + <stop + style="stop-color:#2e3436;stop-opacity:0" + offset="1" + id="stop4469" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4465" + id="linearGradient4460" + gradientUnits="userSpaceOnUse" + x1="32.864544" + y1="13.794194" + x2="32.864544" + y2="5.5441942" + gradientTransform="translate(-0.25,12.5)" /> + <linearGradient + id="linearGradient4475" + inkscape:collect="always"> + <stop + id="stop4477" + offset="0" + style="stop-color:black;stop-opacity:1" /> + <stop + id="stop4479" + offset="1" + style="stop-color:black;stop-opacity:0" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4475" + id="linearGradient4473" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(-0.25,13.5)" + x1="32.864544" + y1="13.794194" + x2="32.864544" + y2="5.5441942" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4499" + id="radialGradient4505" + cx="23.82066" + cy="36.907261" + fx="23.82066" + fy="36.907261" + r="12.59534" + gradientTransform="matrix(1,0,0,0.508772,0,18.12988)" + gradientUnits="userSpaceOnUse" /> + <linearGradient + inkscape:collect="always" + id="linearGradient4499"> + <stop + style="stop-color:black;stop-opacity:1;" + offset="0" + id="stop4501" /> + <stop + style="stop-color:black;stop-opacity:0;" + offset="1" + id="stop4503" /> + </linearGradient> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4499" + id="radialGradient3012" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.508772,0,18.12988)" + cx="23.82066" + cy="36.907261" + fx="23.82066" + fy="36.907261" + r="12.59534" /> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 24 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="48 : 24 : 1" + inkscape:persp3d-origin="24 : 16 : 1" + id="perspective2798" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient6958" + id="radialGradient3373" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(2.6999424,0,0,3.5713875,-122.46854,-58.740132)" + cx="72.495682" + cy="22.84375" + fx="72.495682" + fy="22.84375" + r="4.8202302" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient6958" + id="radialGradient3375" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.8087117,0,0,3.5234273,-57.039447,-57.368542)" + cx="70.53125" + cy="22.734375" + fx="70.53125" + fy="22.734375" + r="3.5975378" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient6958" + id="radialGradient3377" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(2.1454532,0,0,3.0191635,-69.461,-45.746674)" + cx="60.640625" + cy="22.65625" + fx="60.640625" + fy="22.65625" + r="2.6194003" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4499" + id="radialGradient2535" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.508772,0,18.12988)" + cx="23.82066" + cy="36.907261" + fx="23.82066" + fy="36.907261" + r="12.59534" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient4499" + id="radialGradient2537" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.508772,0,18.12988)" + cx="23.82066" + cy="36.907261" + fx="23.82066" + fy="36.907261" + r="12.59534" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient3711" + id="radialGradient2539" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.106546,0,0,0.58328,-1.909343,15.04719)" + cx="18.753521" + cy="40.578671" + fx="18.753521" + fy="40.578671" + r="13.08399" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient2965" + id="radialGradient2541" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.508772,0,18.12988)" + cx="23.82066" + cy="36.907261" + fx="23.82066" + fy="36.907261" + r="12.59534" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3779" + id="linearGradient2543" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.980843,0,0,0.974547,0.59387,-0.156861)" + x1="23.997437" + y1="37.835339" + x2="29.74268" + y2="32.355263" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3703" + id="linearGradient2545" + gradientUnits="userSpaceOnUse" + x1="23.8125" + y1="41.836731" + x2="27.272261" + y2="28.590008" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3726" + id="linearGradient2547" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(0,-1)" + x1="25.606806" + y1="36.722809" + x2="23.640165" + y2="30.421146" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3795" + id="linearGradient2549" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(0,-1)" + x1="13.567612" + y1="18.432873" + x2="13.567612" + y2="19.231655" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3795" + id="linearGradient2551" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(20,-1)" + x1="13.567612" + y1="18.432873" + x2="13.567612" + y2="19.231655" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient2981" + id="linearGradient2553" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.940947,0,1.564893)" + x1="23.374121" + y1="19.452076" + x2="21.649811" + y2="25.229111" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient2943" + id="linearGradient2555" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(14,0)" + x1="16.65625" + y1="16.14632" + x2="16.65625" + y2="20.381033" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient2943" + id="linearGradient2557" + gradientUnits="userSpaceOnUse" + x1="16.65625" + y1="16.14632" + x2="16.65625" + y2="20.381033" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient2904" + id="linearGradient2559" + gradientUnits="userSpaceOnUse" + x1="18.737373" + y1="13.351768" + x2="30.230837" + y2="13.351768" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient4481" + id="linearGradient2561" + gradientUnits="userSpaceOnUse" + x1="17.625" + y1="20.814491" + x2="17.625" + y2="5.125" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3734" + id="linearGradient2563" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(0,-1)" + x1="24.6875" + y1="36.75" + x2="24.6875" + y2="28.617105" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient2867" + id="linearGradient2565" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.809211,0,2.763158)" + x1="19.583334" + y1="10.76408" + x2="23.176371" + y2="10.76408" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3815" + id="linearGradient2567" + gradientUnits="userSpaceOnUse" + x1="23.246162" + y1="24.761473" + x2="23.246162" + y2="15.94703" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient2877" + id="linearGradient2569" + gradientUnits="userSpaceOnUse" + x1="21.961548" + y1="6.3608937" + x2="24.508121" + y2="10.75" /> + <radialGradient + inkscape:collect="always" + xlink:href="#linearGradient2920" + id="radialGradient2571" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.580773,0,0,0.961547,-12.77702,-2.531609)" + cx="22.553526" + cy="10.432782" + fx="22.553526" + fy="10.432782" + r="6.46875" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3228" + id="linearGradient2573" + gradientUnits="userSpaceOnUse" + gradientTransform="translate(0,3)" + x1="17.999674" + y1="10.081399" + x2="30" + y2="10.081399" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3579" + id="linearGradient2575" + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.09091,0,0,1.100001,-1.681827,0.84999)" + x1="20.483149" + y1="3.4711361" + x2="28.357954" + y2="25.991137" /> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="12.270833" + inkscape:cx="24" + inkscape:cy="24" + inkscape:current-layer="layer1" + showgrid="true" + inkscape:grid-bbox="true" + inkscape:document-units="px" + inkscape:window-width="780" + inkscape:window-height="776" + inkscape:window-x="949" + inkscape:window-y="190" /> + <metadata + id="metadata2795"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + id="layer1" + inkscape:label="Layer 1" + inkscape:groupmode="layer"> + <g + style="display:inline" + id="g2915" + transform="translate(7.6012894,0.1428571)"> + <path + transform="matrix(0.727673,0,0,1.235135,7.166344,-12.0556)" + d="M 36.415999,36.907261 A 12.59534,6.4081554 0 1 1 11.22532,36.907261 A 12.59534,6.4081554 0 1 1 36.415999,36.907261 z" + sodipodi:ry="6.4081554" + sodipodi:rx="12.59534" + sodipodi:cy="36.907261" + sodipodi:cx="23.82066" + id="path2917" + style="opacity:0.1;fill:url(#radialGradient2535);fill-opacity:1;stroke:none;stroke-width:0.97730058;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:inline" + sodipodi:type="arc" /> + <path + transform="matrix(1.233813,0,0,1.235135,-4.890235,-6.055598)" + d="M 36.415999,36.907261 A 12.59534,6.4081554 0 1 1 11.22532,36.907261 A 12.59534,6.4081554 0 1 1 36.415999,36.907261 z" + sodipodi:ry="6.4081554" + sodipodi:rx="12.59534" + sodipodi:cy="36.907261" + sodipodi:cx="23.82066" + id="path2919" + style="opacity:0.7;fill:url(#radialGradient2537);fill-opacity:1;stroke:none;stroke-width:0.97730058;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:inline" + sodipodi:type="arc" /> + <path + transform="matrix(1.032128,0,0,1.014402,-8.596444e-2,1.56074)" + d="M 36.415999,36.907261 A 12.59534,6.4081554 0 1 1 11.22532,36.907261 A 12.59534,6.4081554 0 1 1 36.415999,36.907261 z" + sodipodi:ry="6.4081554" + sodipodi:rx="12.59534" + sodipodi:cy="36.907261" + sodipodi:cx="23.82066" + id="path2925" + style="opacity:1;fill:url(#radialGradient2539);fill-opacity:1;stroke:#555753;stroke-width:0.97730058;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:inline" + sodipodi:type="arc" /> + <path + transform="matrix(0.43667,0,0,0.429141,14.09824,21.41158)" + d="M 36.415999,36.907261 A 12.59534,6.4081554 0 1 1 11.22532,36.907261 A 12.59534,6.4081554 0 1 1 36.415999,36.907261 z" + sodipodi:ry="6.4081554" + sodipodi:rx="12.59534" + sodipodi:cy="36.907261" + sodipodi:cx="23.82066" + id="path2927" + style="opacity:1;fill:url(#radialGradient2541);fill-opacity:1;stroke:none;stroke-width:0.97730058;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:inline" + sodipodi:type="arc" /> + <path + sodipodi:nodetypes="ccssccc" + id="path2929" + d="M 27.35249,32.125 C 25.613836,32.860383 24.806671,34.177948 23.67433,35.292277 C 23.188021,35.599877 23.07463,36.001723 23.15468,36.568962 C 23.23473,37.136205 23.644126,37.624296 24.196826,37.787146 C 24.749524,37.949994 25.196373,37.917185 25.574713,37.485007 C 26.676195,35.285524 28.744563,33.983863 31,32.85591 C 29.870496,32.536987 28.651039,32.264053 27.35249,32.125 z" + style="opacity:0.7;fill:url(#linearGradient2543);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;display:inline" /> + <path + transform="matrix(1.032128,0,0,1.014402,-8.596444e-2,1.56074)" + d="M 23.8125,31.5 C 20.473005,31.5 17.440949,32.183256 15.34375,33.25 C 13.246551,34.316744 12.21875,35.666366 12.21875,36.90625 C 12.21875,38.146134 13.246551,39.495756 15.34375,40.5625 C 17.440949,41.629244 20.473005,42.312501 23.8125,42.3125 C 27.151995,42.3125 30.184051,41.629244 32.28125,40.5625 C 34.378449,39.495756 35.40625,38.146134 35.40625,36.90625 C 35.40625,35.666366 34.378449,34.316744 32.28125,33.25 C 30.184051,32.183256 27.151995,31.5 23.8125,31.5 z" + id="path2931" + style="opacity:0.4;fill:none;fill-opacity:1;stroke:url(#linearGradient2545);stroke-width:0.97730058;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:inline" + inkscape:original="M 23.8125 30.5 C 16.859872 30.5 11.21875 33.368948 11.21875 36.90625 C 11.21875 40.443552 16.859872 43.312502 23.8125 43.3125 C 30.765128 43.3125 36.406249 40.443552 36.40625 36.90625 C 36.40625 33.368948 30.765128 30.5 23.8125 30.5 z " + inkscape:radius="-0.99470079" + sodipodi:type="inkscape:offset" /> + <path + sodipodi:nodetypes="cc" + id="path2933" + d="M 24.5,27.5 L 24.5,36.5" + style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient2547);stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;display:inline" /> + <path + sodipodi:nodetypes="csc" + id="path2935" + d="M 34.500008,18.999997 C 34.5,23.285708 30.040008,26.499998 24.500006,26.499998 C 18.960004,26.499998 14.5,23.285708 14.500003,18.999997" + style="fill:none;fill-opacity:1;stroke:#888a85;stroke-width:3.00000024;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:inline" /> + <rect + y="16.499998" + x="12.5" + height="2.9999995" + width="4" + id="rect2937" + style="opacity:1;fill:url(#linearGradient2549);fill-opacity:1;stroke:#888a85;stroke-width:0.99999988;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:inline" /> + <rect + y="16.499998" + x="32.5" + height="2.9999995" + width="4" + id="rect2939" + style="opacity:1;fill:url(#linearGradient2551);fill-opacity:1;stroke:#888a85;stroke-width:0.99999988;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:inline" /> + <path + sodipodi:nodetypes="csc" + id="path2941" + d="M 34.500008,18.999991 C 34.500008,23.285701 30.040008,26.499992 24.500006,26.499992 C 18.960004,26.499992 14.5,23.285701 14.500003,18.999991" + style="fill:none;fill-opacity:1;stroke:url(#linearGradient2553);stroke-width:0.99999982;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:inline" /> + <rect + ry="0.9722718" + rx="0.9722718" + y="15" + x="30" + height="6" + width="3.0000005" + id="rect2943" + style="opacity:1;fill:url(#linearGradient2555);fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:inline" /> + <path + transform="matrix(1.5,0,0,1.5,12.25,-11.25)" + d="M 14.5,19 A 0.5,0.5 0 1 1 13.5,19 A 0.5,0.5 0 1 1 14.5,19 z" + sodipodi:ry="0.5" + sodipodi:rx="0.5" + sodipodi:cy="19" + sodipodi:cx="14" + id="path2945" + style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:inline" + sodipodi:type="arc" /> + <rect + ry="0.9722718" + rx="0.9722718" + y="15" + x="16" + height="6" + width="3.0000005" + id="rect2947" + style="opacity:1;fill:url(#linearGradient2557);fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:inline" /> + <rect + ry="7.0108709" + rx="7.0000019" + y="1.5000002" + x="17.499996" + height="24.000008" + width="14.000004" + id="rect2949" + style="opacity:1;fill:url(#linearGradient2559);fill-opacity:1;stroke:url(#linearGradient2561);stroke-width:1.00000048;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:inline" /> + <path + sodipodi:nodetypes="cc" + id="path2951" + d="M 24.5,26.5 L 24.5,36.5" + style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient2563);stroke-width:1px;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1;display:inline" /> + <path + transform="matrix(1.5,0,0,1.5,-7.75,-11.25)" + d="M 14.5,19 A 0.5,0.5 0 1 1 13.5,19 A 0.5,0.5 0 1 1 14.5,19 z" + sodipodi:ry="0.5" + sodipodi:rx="0.5" + sodipodi:cy="19" + sodipodi:cx="14" + id="path2953" + style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:inline" + sodipodi:type="arc" /> + <g + id="g2955" + style="display:inline"> + <rect + style="opacity:1;fill:url(#linearGradient2565);fill-opacity:1;stroke:none;stroke-width:1.00000036;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:inline" + id="rect2957" + width="4" + height="15.374996" + x="20" + y="6" + rx="2" + ry="2.1991496" /> + <path + sodipodi:type="inkscape:offset" + inkscape:radius="-0.54470092" + inkscape:original="M 24.5 2.5 C 20.621999 2.5 17.5 5.615977 17.5 9.5 L 17.5 19.5 C 17.5 23.384022 20.621999 26.5 24.5 26.5 C 28.378001 26.5 31.5 23.384022 31.5 19.5 L 31.5 9.5 C 31.5 5.6159775 28.378001 2.5 24.5 2.5 z " + style="opacity:0.2;fill:url(#linearGradient2567);fill-opacity:1;stroke:none;stroke-width:1.00000048;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:inline" + id="path2959" + d="M 24.5,3.03125 C 20.913777,3.03125 18.03125,5.9078661 18.03125,9.5 L 18.03125,19.5 C 18.03125,23.092133 20.913778,25.96875 24.5,25.96875 C 28.086222,25.96875 30.96875,23.092133 30.96875,19.5 L 30.96875,9.5 C 30.96875,5.9078666 28.086223,3.03125 24.5,3.03125 z" + transform="translate(0,-1)" /> + <path + sodipodi:type="arc" + style="opacity:1;fill:url(#linearGradient2569);fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="path2961" + sodipodi:cx="23.65625" + sodipodi:cy="7.6875" + sodipodi:rx="3.34375" + sodipodi:ry="3.0625" + d="M 27,7.6875 A 3.34375,3.0625 0 1 1 20.3125,7.6875 A 3.34375,3.0625 0 1 1 27,7.6875 z" + transform="matrix(1,0,0,1.081633,-0.375,-1.252551)" /> + </g> + <path + sodipodi:nodetypes="cccccc" + id="path2963" + d="M 24.5,3.03125 C 20.913777,3.03125 18.03125,5.9078661 18.03125,9.5 L 18.03125,14.5 L 30.96875,14.5 L 30.96875,9.5 C 30.96875,5.9078666 28.086223,3.03125 24.5,3.03125 z" + style="opacity:0.9;fill:url(#radialGradient2571);fill-opacity:1;stroke:none;stroke-width:1.00000048;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;display:inline" + transform="translate(0,-1)" /> + <path + sodipodi:nodetypes="csssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssc" + id="path2965" + d="M 22.5,3 C 22.224,3 22,3.224 22,3.5 C 22,3.776 22.224,4 22.5,4 C 22.776,4 23,3.776 23,3.5 C 23,3.224 22.776,3 22.5,3 z M 24.5,3 C 24.224,3 24,3.224 24,3.5 C 24,3.776 24.224,4 24.5,4 C 24.776,4 25,3.776 25,3.5 C 25,3.224 24.776,3 24.5,3 z M 26.5,3 C 26.224,3 26,3.224 26,3.5 C 26,3.776 26.224,4 26.5,4 C 26.776,4 27,3.776 27,3.5 C 27,3.224 26.776,3 26.5,3 z M 21.5,4 C 21.224,4 21,4.224 21,4.5 C 21,4.776 21.224,5 21.5,5 C 21.776,5 22,4.776 22,4.5 C 22,4.224 21.776,4 21.5,4 z M 23.5,4 C 23.224,4 22.999999,4.2240007 23,4.5 C 23,4.7759993 23.223999,5 23.5,5 C 23.776,5 24,4.7759993 24,4.5 C 24,4.2240007 23.776,4 23.5,4 z M 25.5,4 C 25.224,4 24.999999,4.2240007 25,4.5 C 25,4.7759993 25.223999,5 25.5,5 C 25.776,5 26,4.7759993 26,4.5 C 26,4.2240007 25.776,4 25.5,4 z M 27.5,4 C 27.224,4 27,4.224 27,4.5 C 27,4.776 27.224,5 27.5,5 C 27.776,5 28,4.776 28,4.5 C 28,4.224 27.776,4 27.5,4 z M 20.5,5 C 20.224,5 19.999999,5.2240008 20,5.5 C 20,5.7759993 20.223999,6 20.5,6 C 20.776,6 21,5.7759994 21,5.5 C 21,5.2240007 20.776,5 20.5,5 z M 22.5,5 C 22.224,5 21.999999,5.2240008 22,5.5 C 22,5.7759993 22.223999,6 22.5,6 C 22.776,6 23,5.7759994 23,5.5 C 23,5.2240007 22.776,5 22.5,5 z M 24.5,5 C 24.224,5 23.999999,5.2240008 24,5.5 C 24,5.7759993 24.223999,6 24.5,6 C 24.776,6 25,5.7759994 25,5.5 C 25,5.2240007 24.776,5 24.5,5 z M 26.5,5 C 26.224,5 25.999999,5.2240008 26,5.5 C 26,5.7759993 26.223999,6 26.5,6 C 26.776,6 27,5.7759994 27,5.5 C 27,5.2240007 26.776,5 26.5,5 z M 28.5,5 C 28.224,5 28,5.224 28,5.5 C 28,5.776 28.224,6 28.5,6 C 28.776,6 29,5.776 29,5.5 C 29,5.224 28.776,5 28.5,5 z M 19.5,6 C 19.224,6 18.999999,6.2240008 19,6.5 C 19,6.7759993 19.223999,7 19.5,7 C 19.776,7 20,6.7759994 20,6.5 C 20,6.2240007 19.776,6 19.5,6 z M 21.5,6 C 21.224,6 20.999999,6.2240008 21,6.5 C 21,6.7759993 21.223999,7 21.5,7 C 21.776,7 22,6.7759994 22,6.5 C 22,6.2240007 21.776,6 21.5,6 z M 23.5,6 C 23.224,6 22.999999,6.2240008 23,6.5 C 23,6.7759993 23.223999,7 23.5,7 C 23.776,7 24,6.7759994 24,6.5 C 24,6.2240007 23.776,6 23.5,6 z M 25.5,6 C 25.224,6 24.999999,6.2240008 25,6.5 C 25,6.7759993 25.223999,7 25.5,7 C 25.776,7 26,6.7759994 26,6.5 C 26,6.2240007 25.776,6 25.5,6 z M 27.5,6 C 27.224,6 26.999999,6.2240008 27,6.5 C 27,6.7759993 27.223999,7 27.5,7 C 27.776,7 28,6.7759994 28,6.5 C 28,6.2240007 27.776,6 27.5,6 z M 29.5,6 C 29.224,6 29,6.224 29,6.5 C 29,6.776 29.224,7 29.5,7 C 29.776,7 30,6.776 30,6.5 C 30,6.224 29.776,6 29.5,6 z M 20.5,7 C 20.224,7 19.999999,7.2240008 20,7.5 C 20,7.7759993 20.223999,8.0000002 20.5,8 C 20.776,8 21,7.7759994 21,7.5 C 21,7.2240007 20.776,7 20.5,7 z M 22.5,7 C 22.224,7 21.999999,7.2240008 22,7.5 C 22,7.7759993 22.223999,8.0000002 22.5,8 C 22.776,8 23,7.7759994 23,7.5 C 23,7.2240007 22.776,7 22.5,7 z M 24.5,7 C 24.224,7 23.999999,7.2240008 24,7.5 C 24,7.7759993 24.223999,8.0000002 24.5,8 C 24.776,8 25,7.7759994 25,7.5 C 25,7.2240007 24.776,7 24.5,7 z M 26.5,7 C 26.224,7 25.999999,7.2240008 26,7.5 C 26,7.7759993 26.223999,8.0000002 26.5,8 C 26.776,8 27,7.7759994 27,7.5 C 27,7.2240007 26.776,7 26.5,7 z M 28.5,7 C 28.224,7 27.999999,7.2240008 28,7.5 C 28,7.7759993 28.223999,8.0000002 28.5,8 C 28.776,8 29,7.7759994 29,7.5 C 29,7.2240007 28.776,7 28.5,7 z M 30.5,7 C 30.224,7 30,7.224 30,7.5 C 30,7.776 30.224,8 30.5,8 C 30.776,8 31,7.776 31,7.5 C 31,7.224 30.776,7 30.5,7 z M 19.5,8 C 19.224,8 18.999999,8.2240008 19,8.5 C 19,8.7759993 19.223999,9 19.5,9 C 19.776,9 20,8.7759994 20,8.5 C 20,8.2240007 19.776,8 19.5,8 z M 21.5,8 C 21.224,8 20.999999,8.2240008 21,8.5 C 21,8.7759993 21.223999,9 21.5,9 C 21.776,9 22,8.7759994 22,8.5 C 22,8.2240007 21.776,8 21.5,8 z M 23.5,8 C 23.224,8 22.999999,8.2240008 23,8.5 C 23,8.7759993 23.223999,9 23.5,9 C 23.776,9 24,8.7759994 24,8.5 C 24,8.2240007 23.776,8 23.5,8 z M 25.5,8 C 25.224,8 24.999999,8.2240008 25,8.5 C 25,8.7759993 25.223999,9 25.5,9 C 25.776,9 26,8.7759994 26,8.5 C 26,8.2240007 25.776,8 25.5,8 z M 27.5,8 C 27.224,8 26.999999,8.2240008 27,8.5 C 27,8.7759993 27.223999,9 27.5,9 C 27.776,9 28,8.7759994 28,8.5 C 28,8.2240007 27.776,8 27.5,8 z M 29.5,8 C 29.224,8 28.999999,8.2240008 29,8.5 C 29,8.7759993 29.223999,9 29.5,9 C 29.776,9 30,8.7759994 30,8.5 C 30,8.2240007 29.776,8 29.5,8 z M 18.5,9 C 18.224,9 17.999999,9.224001 18,9.5 C 18,9.775999 18.223999,10 18.5,10 C 18.776,10 19,9.775999 19,9.5 C 19,9.224001 18.776,9 18.5,9 z M 20.5,9 C 20.224,9 19.999999,9.224001 20,9.5 C 20,9.775999 20.223999,10 20.5,10 C 20.776,10 21,9.775999 21,9.5 C 21,9.224001 20.776,9 20.5,9 z M 22.5,9 C 22.224,9 21.999999,9.224001 22,9.5 C 22,9.775999 22.223999,10 22.5,10 C 22.776,10 23,9.775999 23,9.5 C 23,9.224001 22.776,9 22.5,9 z M 24.5,9 C 24.224,9 23.999999,9.224001 24,9.5 C 24,9.775999 24.223999,10 24.5,10 C 24.776,10 25,9.775999 25,9.5 C 25,9.224001 24.776,9 24.5,9 z M 26.5,9 C 26.224,9 25.999999,9.224001 26,9.5 C 26,9.775999 26.223999,10 26.5,10 C 26.776,10 27,9.775999 27,9.5 C 27,9.224001 26.776,9 26.5,9 z M 28.5,9 C 28.224,9 27.999999,9.224001 28,9.5 C 28,9.775999 28.223999,10 28.5,10 C 28.776,10 29,9.775999 29,9.5 C 29,9.224001 28.776,9 28.5,9 z M 30.5,9 C 30.224,9 30,9.224 30,9.5 C 30,9.776 30.224,10 30.5,10 C 30.776,10 31,9.776 31,9.5 C 31,9.224 30.776,9 30.5,9 z M 19.5,10 C 19.224,10 18.999999,10.224001 19,10.5 C 19,10.775999 19.223999,11 19.5,11 C 19.776,11 20,10.775999 20,10.5 C 20,10.224001 19.776,10 19.5,10 z M 21.5,10 C 21.224,10 20.999999,10.224001 21,10.5 C 21,10.775999 21.223999,11 21.5,11 C 21.776,11 22,10.775999 22,10.5 C 22,10.224001 21.776,10 21.5,10 z M 23.5,10 C 23.224,10 22.999999,10.224001 23,10.5 C 23,10.775999 23.223999,11 23.5,11 C 23.776,11 24,10.775999 24,10.5 C 24,10.224001 23.776,10 23.5,10 z M 25.5,10 C 25.224,10 24.999999,10.224001 25,10.5 C 25,10.775999 25.223999,11 25.5,11 C 25.776,11 26,10.775999 26,10.5 C 26,10.224001 25.776,10 25.5,10 z M 27.5,10 C 27.224,10 26.999999,10.224001 27,10.5 C 27,10.775999 27.223999,11 27.5,11 C 27.776,11 28,10.775999 28,10.5 C 28,10.224001 27.776,10 27.5,10 z M 29.5,10 C 29.224,10 28.999999,10.224001 29,10.5 C 29,10.775999 29.223999,11 29.5,11 C 29.776,11 30,10.775999 30,10.5 C 30,10.224001 29.776,10 29.5,10 z M 18.5,11 C 18.224,11 17.999999,11.224 18,11.5 C 18,11.775999 18.223999,12 18.5,12 C 18.776,12 19,11.775999 19,11.5 C 19,11.224001 18.776,11 18.5,11 z M 20.5,11 C 20.224,11 19.999999,11.224 20,11.5 C 20,11.775999 20.223999,12 20.5,12 C 20.776,12 21,11.775999 21,11.5 C 21,11.224001 20.776,11 20.5,11 z M 22.5,11 C 22.224,11 21.999999,11.224 22,11.5 C 22,11.775999 22.223999,12 22.5,12 C 22.776,12 23,11.775999 23,11.5 C 23,11.224001 22.776,11 22.5,11 z M 24.5,11 C 24.224,11 23.999999,11.224 24,11.5 C 24,11.775999 24.223999,12 24.5,12 C 24.776,12 25,11.775999 25,11.5 C 25,11.224001 24.776,11 24.5,11 z M 26.5,11 C 26.224,11 25.999999,11.224 26,11.5 C 26,11.775999 26.223999,12 26.5,12 C 26.776,12 27,11.775999 27,11.5 C 27,11.224001 26.776,11 26.5,11 z M 28.5,11 C 28.224,11 27.999999,11.224 28,11.5 C 28,11.775999 28.223999,12 28.5,12 C 28.776,12 29,11.775999 29,11.5 C 29,11.224001 28.776,11 28.5,11 z M 30.5,11 C 30.224,11 30,11.224 30,11.5 C 30,11.776 30.224,12 30.5,12 C 30.776,12 31,11.776 31,11.5 C 31,11.224 30.776,11 30.5,11 z M 19.5,12 C 19.224,12 18.999999,12.224 19,12.5 C 19,12.775999 19.223999,13 19.5,13 C 19.776,13 20,12.775999 20,12.5 C 20,12.224001 19.776,12 19.5,12 z M 21.5,12 C 21.224,12 20.999999,12.224 21,12.5 C 21,12.775999 21.223999,13 21.5,13 C 21.776,13 22,12.775999 22,12.5 C 22,12.224001 21.776,12 21.5,12 z M 23.5,12 C 23.224,12 22.999999,12.224 23,12.5 C 23,12.775999 23.223999,13 23.5,13 C 23.776,13 24,12.775999 24,12.5 C 24,12.224001 23.776,12 23.5,12 z M 25.5,12 C 25.224,12 24.999999,12.224 25,12.5 C 25,12.775999 25.223999,13 25.5,13 C 25.776,13 26,12.775999 26,12.5 C 26,12.224001 25.776,12 25.5,12 z M 27.5,12 C 27.224,12 26.999999,12.224 27,12.5 C 27,12.775999 27.223999,13 27.5,13 C 27.776,13 28,12.775999 28,12.5 C 28,12.224001 27.776,12 27.5,12 z M 29.5,12 C 29.224,12 28.999999,12.224 29,12.5 C 29,12.775999 29.223999,13 29.5,13 C 29.776,13 30,12.775999 30,12.5 C 30,12.224001 29.776,12 29.5,12 z M 18.5,13 C 18.224,13 17.999999,13.224 18,13.5 C 18,13.775999 18.223999,14 18.5,14 C 18.776,14 19,13.775999 19,13.5 C 19,13.224001 18.776,13 18.5,13 z M 20.5,13 C 20.224,13 19.999999,13.224 20,13.5 C 20,13.775999 20.223999,14 20.5,14 C 20.776,14 21,13.775999 21,13.5 C 21,13.224001 20.776,13 20.5,13 z M 22.5,13 C 22.224,13 21.999999,13.224 22,13.5 C 22,13.775999 22.223999,14 22.5,14 C 22.776,14 23,13.775999 23,13.5 C 23,13.224001 22.776,13 22.5,13 z M 24.5,13 C 24.224,13 23.999999,13.224 24,13.5 C 24,13.775999 24.223999,14 24.5,14 C 24.776,14 25,13.775999 25,13.5 C 25,13.224001 24.776,13 24.5,13 z M 26.5,13 C 26.224,13 25.999999,13.224 26,13.5 C 26,13.775999 26.223999,14 26.5,14 C 26.776,14 27,13.775999 27,13.5 C 27,13.224001 26.776,13 26.5,13 z M 28.5,13 C 28.224,13 27.999999,13.224 28,13.5 C 28,13.775999 28.223999,14 28.5,14 C 28.776,14 29,13.775999 29,13.5 C 29,13.224001 28.776,13 28.5,13 z M 30.5,13 C 30.224,13 30,13.224 30,13.5 C 30,13.776 30.224,14 30.5,14 C 30.776,14 31,13.776 31,13.5 C 31,13.224 30.776,13 30.5,13 z M 19.5,14 C 19.224,14 18.999999,14.224 19,14.5 C 19,14.775999 19.223999,15 19.5,15 C 19.776,15 20,14.775999 20,14.5 C 20,14.224001 19.776,14 19.5,14 z M 21.5,14 C 21.224,14 20.999999,14.224 21,14.5 C 21,14.775999 21.223999,15 21.5,15 C 21.776,15 22,14.775999 22,14.5 C 22,14.224001 21.776,14 21.5,14 z M 23.5,14 C 23.224,14 22.999999,14.224 23,14.5 C 23,14.775999 23.223999,15 23.5,15 C 23.776,15 24,14.775999 24,14.5 C 24,14.224001 23.776,14 23.5,14 z M 25.5,14 C 25.224,14 24.999999,14.224 25,14.5 C 25,14.775999 25.223999,15 25.5,15 C 25.776,15 26,14.775999 26,14.5 C 26,14.224001 25.776,14 25.5,14 z M 27.5,14 C 27.224,14 26.999999,14.224 27,14.5 C 27,14.775999 27.223999,15 27.5,15 C 27.776,15 28,14.775999 28,14.5 C 28,14.224001 27.776,14 27.5,14 z M 29.5,14 C 29.224,14 28.999999,14.224 29,14.5 C 29,14.775999 29.223999,15 29.5,15 C 29.776,15 30,14.775999 30,14.5 C 30,14.224001 29.776,14 29.5,14 z M 18.5,15 C 18.224,15 17.999999,15.224 18,15.5 C 18,15.775999 18.223999,16 18.5,16 C 18.776,16 19,15.775999 19,15.5 C 19,15.224001 18.776,15 18.5,15 z M 20.5,15 C 20.224,15 19.999999,15.224 20,15.5 C 20,15.775999 20.223999,16 20.5,16 C 20.776,16 21,15.775999 21,15.5 C 21,15.224001 20.776,15 20.5,15 z M 22.5,15 C 22.224,15 21.999999,15.224 22,15.5 C 22,15.775999 22.223999,16 22.5,16 C 22.776,16 23,15.775999 23,15.5 C 23,15.224001 22.776,15 22.5,15 z M 24.5,15 C 24.224,15 23.999999,15.224 24,15.5 C 24,15.775999 24.223999,16 24.5,16 C 24.776,16 25,15.775999 25,15.5 C 25,15.224001 24.776,15 24.5,15 z M 26.5,15 C 26.224,15 25.999999,15.224 26,15.5 C 26,15.775999 26.223999,16 26.5,16 C 26.776,16 27,15.775999 27,15.5 C 27,15.224001 26.776,15 26.5,15 z M 28.5,15 C 28.224,15 27.999999,15.224 28,15.5 C 28,15.775999 28.223999,16 28.5,16 C 28.776,16 29,15.775999 29,15.5 C 29,15.224001 28.776,15 28.5,15 z M 30.5,15 C 30.224,15 30,15.224 30,15.5 C 30,15.776 30.224,16 30.5,16 C 30.776,16 31,15.776 31,15.5 C 31,15.224 30.776,15 30.5,15 z M 19.5,16 C 19.224,16 18.999999,16.224001 19,16.5 C 19,16.775999 19.223999,17 19.5,17 C 19.776,17 20,16.776 20,16.5 C 20,16.224001 19.776,16 19.5,16 z M 21.5,16 C 21.224,16 20.999999,16.224001 21,16.5 C 21,16.775999 21.223999,17 21.5,17 C 21.776,17 22,16.776 22,16.5 C 22,16.224001 21.776,16 21.5,16 z M 23.5,16 C 23.224,16 22.999999,16.224001 23,16.5 C 23,16.775999 23.223999,17 23.5,17 C 23.776,17 24,16.776 24,16.5 C 24,16.224001 23.776,16 23.5,16 z M 25.5,16 C 25.224,16 24.999999,16.224001 25,16.5 C 25,16.775999 25.223999,17 25.5,17 C 25.776,17 26,16.776 26,16.5 C 26,16.224001 25.776,16 25.5,16 z M 27.5,16 C 27.224,16 26.999999,16.224001 27,16.5 C 27,16.775999 27.223999,17 27.5,17 C 27.776,17 28,16.776 28,16.5 C 28,16.224001 27.776,16 27.5,16 z M 29.5,16 C 29.224,16 28.999999,16.224 29,16.5 C 29,16.775999 29.223999,17 29.5,17 C 29.776,17 30,16.775999 30,16.5 C 30,16.224001 29.776,16 29.5,16 z M 18.5,17 C 18.224,17 17.999999,17.224001 18,17.5 C 18,17.775999 18.223999,18 18.5,18 C 18.776,18 19,17.776 19,17.5 C 19,17.224001 18.776,17 18.5,17 z M 20.5,17 C 20.224,17 19.999999,17.224001 20,17.5 C 20,17.775999 20.223999,18 20.5,18 C 20.776,18 21,17.776 21,17.5 C 21,17.224001 20.776,17 20.5,17 z M 22.5,17 C 22.224,17 21.999999,17.224001 22,17.5 C 22,17.775999 22.223999,18 22.5,18 C 22.776,18 23,17.776 23,17.5 C 23,17.224001 22.776,17 22.5,17 z M 24.5,17 C 24.224,17 23.999999,17.224001 24,17.5 C 24,17.775999 24.223999,18 24.5,18 C 24.776,18 25,17.776 25,17.5 C 25,17.224001 24.776,17 24.5,17 z M 26.5,17 C 26.224,17 25.999999,17.224001 26,17.5 C 26,17.775999 26.223999,18 26.5,18 C 26.776,18 27,17.776 27,17.5 C 27,17.224001 26.776,17 26.5,17 z M 28.5,17 C 28.224,17 27.999999,17.224001 28,17.5 C 28,17.775999 28.223999,18 28.5,18 C 28.776,18 29,17.776 29,17.5 C 29,17.224001 28.776,17 28.5,17 z M 30.5,17 C 30.224,17 30,17.224 30,17.5 C 30,17.776 30.224,18 30.5,18 C 30.776,18 31,17.776 31,17.5 C 31,17.224 30.776,17 30.5,17 z M 19.5,18 C 19.224,18 18.999999,18.224001 19,18.5 C 19,18.775999 19.223999,19 19.5,19 C 19.776,19 20,18.776 20,18.5 C 20,18.224001 19.776,18 19.5,18 z M 21.5,18 C 21.224,18 20.999999,18.224001 21,18.5 C 21,18.775999 21.223999,19 21.5,19 C 21.776,19 22,18.776 22,18.5 C 22,18.224001 21.776,18 21.5,18 z M 23.5,18 C 23.224,18 22.999999,18.224001 23,18.5 C 23,18.775999 23.223999,19 23.5,19 C 23.776,19 24,18.776 24,18.5 C 24,18.224001 23.776,18 23.5,18 z M 25.5,18 C 25.224,18 24.999999,18.224001 25,18.5 C 25,18.775999 25.223999,19 25.5,19 C 25.776,19 26,18.776 26,18.5 C 26,18.224001 25.776,18 25.5,18 z M 27.5,18 C 27.224,18 26.999999,18.224001 27,18.5 C 27,18.775999 27.223999,19 27.5,19 C 27.776,19 28,18.776 28,18.5 C 28,18.224001 27.776,18 27.5,18 z M 29.5,18 C 29.224,18 28.999999,18.224001 29,18.5 C 29,18.775999 29.223999,19 29.5,19 C 29.776,19 30,18.776 30,18.5 C 30,18.224001 29.776,18 29.5,18 z M 18.5,19 C 18.224,19 17.999999,19.224001 18,19.5 C 18,19.775999 18.223999,19.999999 18.5,20 C 18.776,20 19,19.776 19,19.5 C 19,19.224001 18.776,19 18.5,19 z M 20.5,19 C 20.224,19 19.999999,19.224001 20,19.5 C 20,19.775999 20.223999,19.999999 20.5,20 C 20.776,20 21,19.776 21,19.5 C 21,19.224001 20.776,19 20.5,19 z M 22.5,19 C 22.224,19 21.999999,19.224001 22,19.5 C 22,19.775999 22.223999,19.999999 22.5,20 C 22.776,20 23,19.776 23,19.5 C 23,19.224001 22.776,19 22.5,19 z M 24.5,19 C 24.224,19 23.999999,19.224001 24,19.5 C 24,19.775999 24.223999,19.999999 24.5,20 C 24.776,20 25,19.776 25,19.5 C 25,19.224001 24.776,19 24.5,19 z M 26.5,19 C 26.224,19 25.999999,19.224001 26,19.5 C 26,19.775999 26.223999,19.999999 26.5,20 C 26.776,20 27,19.776 27,19.5 C 27,19.224001 26.776,19 26.5,19 z M 28.5,19 C 28.224,19 27.999999,19.224001 28,19.5 C 28,19.775999 28.223999,19.999999 28.5,20 C 28.776,20 29,19.776 29,19.5 C 29,19.224001 28.776,19 28.5,19 z M 30.5,19 C 30.224,19 30,19.224 30,19.5 C 30,19.776 30.224,20 30.5,20 C 30.776,20 31,19.776 31,19.5 C 31,19.224 30.776,19 30.5,19 z M 19.5,20 C 19.224,20 18.999999,20.224001 19,20.5 C 19,20.775999 19.223999,20.999999 19.5,21 C 19.776,21 20,20.776 20,20.5 C 20,20.224001 19.776,20 19.5,20 z M 21.5,20 C 21.224,20 20.999999,20.224001 21,20.5 C 21,20.775999 21.223999,20.999999 21.5,21 C 21.776,21 22,20.776 22,20.5 C 22,20.224001 21.776,20 21.5,20 z M 23.5,20 C 23.224,20 22.999999,20.224001 23,20.5 C 23,20.775999 23.223999,20.999999 23.5,21 C 23.776,21 24,20.776 24,20.5 C 24,20.224001 23.776,20 23.5,20 z M 25.5,20 C 25.224,20 24.999999,20.224001 25,20.5 C 25,20.775999 25.223999,20.999999 25.5,21 C 25.776,21 26,20.776 26,20.5 C 26,20.224001 25.776,20 25.5,20 z M 27.5,20 C 27.224,20 26.999999,20.224001 27,20.5 C 27,20.775999 27.223999,20.999999 27.5,21 C 27.776,21 28,20.776 28,20.5 C 28,20.224001 27.776,20 27.5,20 z M 29.5,20 C 29.224,20 28.999999,20.224001 29,20.5 C 29,20.775999 29.223999,20.999999 29.5,21 C 29.776,21 30,20.776 30,20.5 C 30,20.224001 29.776,20 29.5,20 z M 20.5,21 C 20.224,21 19.999999,21.224001 20,21.5 C 20,21.775999 20.223999,21.999999 20.5,22 C 20.776,22 21,21.776 21,21.5 C 21,21.224001 20.776,21 20.5,21 z M 22.5,21 C 22.224,21 21.999999,21.224001 22,21.5 C 22,21.775999 22.223999,21.999999 22.5,22 C 22.776,22 23,21.776 23,21.5 C 23,21.224001 22.776,21 22.5,21 z M 24.5,21 C 24.224,21 23.999999,21.224001 24,21.5 C 24,21.775999 24.223999,21.999999 24.5,22 C 24.776,22 25,21.776 25,21.5 C 25,21.224001 24.776,21 24.5,21 z M 26.5,21 C 26.224,21 25.999999,21.224001 26,21.5 C 26,21.775999 26.223999,21.999999 26.5,22 C 26.776,22 27,21.776 27,21.5 C 27,21.224001 26.776,21 26.5,21 z M 28.5,21 C 28.224,21 27.999999,21.224001 28,21.5 C 28,21.775999 28.223999,21.999999 28.5,22 C 28.776,22 29,21.776 29,21.5 C 29,21.224001 28.776,21 28.5,21 z M 21.5,22 C 21.224,22 20.999999,22.224001 21,22.5 C 21,22.775999 21.223999,22.999999 21.5,23 C 21.776,23 22,22.776 22,22.5 C 22,22.224001 21.776,22 21.5,22 z M 23.5,22 C 23.224,22 22.999999,22.224001 23,22.5 C 23,22.775999 23.223999,22.999999 23.5,23 C 23.776,23 24,22.776 24,22.5 C 24,22.224001 23.776,22 23.5,22 z M 25.5,22 C 25.224,22 24.999999,22.224001 25,22.5 C 25,22.775999 25.223999,22.999999 25.5,23 C 25.776,23 26,22.776 26,22.5 C 26,22.224001 25.776,22 25.5,22 z M 27.5,22 C 27.224,22 26.999999,22.224001 27,22.5 C 27,22.775999 27.223999,22.999999 27.5,23 C 27.776,23 28,22.776 28,22.5 C 28,22.224001 27.776,22 27.5,22 z M 22.5,23 C 22.224,23 21.999999,23.224001 22,23.5 C 22,23.775999 22.223999,23.999999 22.5,24 C 22.776,24 23,23.776 23,23.5 C 23,23.224001 22.776,23 22.5,23 z M 24.5,23 C 24.224,23 23.999999,23.224001 24,23.5 C 24,23.775999 24.223999,23.999999 24.5,24 C 24.776,24 25,23.776 25,23.5 C 25,23.224001 24.776,23 24.5,23 z M 26.5,23 C 26.224,23 25.999999,23.224001 26,23.5 C 26,23.775999 26.223999,23.999999 26.5,24 C 26.776,24 27,23.776 27,23.5 C 27,23.224001 26.776,23 26.5,23 z M 23.5,24 C 23.224,24 22.999999,24.224001 23,24.5 C 23,24.775999 23.223999,24.999999 23.5,25 C 23.776,25 24,24.776 24,24.5 C 24,24.224001 23.776,24 23.5,24 z M 25.5,24 C 25.224,24 24.999999,24.224001 25,24.5 C 25,24.775999 25.223999,24.999999 25.5,25 C 25.776,25 26,24.776 26,24.5 C 26,24.224001 25.776,24 25.5,24 z" + style="opacity:0.5;fill:url(#linearGradient2573);fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:inline" /> + <rect + ry="6.0500031" + rx="6.0000024" + y="2.5000026" + x="18.500008" + height="22.000008" + width="12.000005" + id="rect2967" + style="opacity:1;fill:none;fill-opacity:1;stroke:url(#linearGradient2575);stroke-width:1.0000006;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:inline" /> + </g> + <g + id="layer4" + inkscape:label="Muted" + style="display:inline" + transform="matrix(1.0828519,0,0,1.0830642,-27.371634,-7.2945649)"> + <g + id="g4694" + transform="translate(-2,0)"> + <rect + ry="1.4868355" + rx="1.4868355" + y="16.498245" + x="31.498245" + height="12.00351" + width="12.00351" + id="rect2021" + style="opacity:1;fill:#ef2929;fill-opacity:1;stroke:#a40000;stroke-width:0.92015547;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1.20000057;stroke-opacity:1;display:inline" /> + <rect + ry="0.49373779" + rx="0.49383482" + y="17.420549" + x="32.420815" + height="10.156369" + width="10.158366" + id="rect3795" + style="opacity:0.3;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:0.92339665;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1.20000057;stroke-opacity:1;display:inline" /> + <path + sodipodi:nodetypes="cc" + id="path4682" + d="M 35,20 L 40,25" + style="fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:1.38509536;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + <path + sodipodi:nodetypes="cc" + id="path4684" + d="M 40,20 L 35,25" + style="fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:1.38509536;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;display:inline" /> + </g> + </g> + </g> +</svg> diff --git a/mate-volume-control/data/mate-volume-control-applet.desktop.in b/mate-volume-control/data/mate-volume-control-applet.desktop.in new file mode 100644 index 0000000..80d11b6 --- /dev/null +++ b/mate-volume-control/data/mate-volume-control-applet.desktop.in @@ -0,0 +1,16 @@ +[Desktop Entry] +_Name=Volume Control +_Comment=Show desktop volume control +Icon=multimedia-volume-control +Exec=mate-volume-control-applet +Terminal=false +Type=Application +Categories= +NoDisplay=true +OnlyShowIn=MATE;XFCE; +X-MATE-Bugzilla-Bugzilla=MATE +X-MATE-Bugzilla-Product=mate-media +X-MATE-Bugzilla-Component=mate-volume-control +# See http://bugzilla.mate.org/show_bug.cgi?id=568320 +#X-MATE-Autostart-Phase=Panel +X-MATE-Autostart-Notify=true diff --git a/mate-volume-control/data/mate-volume-control.desktop.in.in b/mate-volume-control/data/mate-volume-control.desktop.in.in new file mode 100644 index 0000000..7005d13 --- /dev/null +++ b/mate-volume-control/data/mate-volume-control.desktop.in.in @@ -0,0 +1,14 @@ +[Desktop Entry] +_Name=Sound +_Comment=Change sound volume and sound events +Exec=mate-volume-control +Icon=multimedia-volume-control +Terminal=false +Type=Application +StartupNotify=true +Categories=MATE;GTK;Settings;HardwareSettings; +OnlyShowIn=MATE; +X-MATE-Bugzilla-Bugzilla=MATE +X-MATE-Bugzilla-Product=mate-media +X-MATE-Bugzilla-Component=mate-volume-control +X-MATE-Bugzilla-Version=@VERSION@ diff --git a/mate-volume-control/src/Makefile.am b/mate-volume-control/src/Makefile.am new file mode 100644 index 0000000..d750ce7 --- /dev/null +++ b/mate-volume-control/src/Makefile.am @@ -0,0 +1,94 @@ +NULL = + +bin_PROGRAMS = \ + mate-volume-control-applet \ + mate-volume-control \ + $(NULL) + +AM_CPPFLAGS = \ + $(WARN_CFLAGS) \ + -I$(top_srcdir)/sound-theme \ + $(VOLUME_CONTROL_CFLAGS) \ + $(DISABLE_DEPRECATED) \ + $(PULSEAUDIO_CFLAGS) \ + -DLOCALE_DIR=\""$(datadir)/locale"\" \ + -DLIBEXECDIR=\"$(libexecdir)\" \ + -DGLADEDIR=\""$(pkgdatadir)"\" \ + -DICON_DATA_DIR="\"$(pkgdatadir)/icons\"" \ + $(NULL) + +noinst_LTLIBRARIES = libmatevolumecontrol.la +libmatevolumecontrol_la_SOURCES = \ + gvc-mixer-card.h \ + gvc-mixer-card.c \ + gvc-mixer-stream.h \ + gvc-mixer-stream.c \ + gvc-channel-map.h \ + gvc-channel-map.c \ + gvc-mixer-sink.h \ + gvc-mixer-sink.c \ + gvc-mixer-source.h \ + gvc-mixer-source.c \ + gvc-mixer-sink-input.h \ + gvc-mixer-sink-input.c \ + gvc-mixer-source-output.h \ + gvc-mixer-source-output.c \ + gvc-mixer-event-role.h \ + gvc-mixer-event-role.c \ + gvc-mixer-control.h \ + gvc-mixer-control.c \ + gvc-channel-bar.h \ + gvc-channel-bar.c \ + gvc-log.h \ + gvc-log.c \ + $(NULL) + +mate_volume_control_applet_LDADD = \ + -lm \ + libmatevolumecontrol.la \ + $(VOLUME_CONTROL_LIBS) \ + $(PULSEAUDIO_LIBS) \ + $(NULL) + +mate_volume_control_applet_SOURCES = \ + gvc-stream-status-icon.h \ + gvc-stream-status-icon.c \ + gvc-applet.h \ + gvc-applet.c \ + applet-main.c \ + $(NULL) + +mate_volume_control_LDADD = \ + -lm \ + libmatevolumecontrol.la \ + $(top_builddir)/sound-theme/libsoundtheme.la \ + $(VOLUME_CONTROL_LIBS) \ + $(PULSEAUDIO_LIBS) \ + $(NULL) + +mate_volume_control_SOURCES = \ + gvc-balance-bar.h \ + gvc-balance-bar.c \ + gvc-mixer-dialog.h \ + gvc-mixer-dialog.c \ + gvc-level-bar.h \ + gvc-level-bar.c \ + gvc-combo-box.h \ + gvc-combo-box.c \ + gvc-speaker-test.h \ + gvc-speaker-test.c \ + dialog-main.c \ + $(NULL) + +BUILT_SOURCES = \ + $(NULL) + +CLEANFILES = \ + $(BUILT_SOURCES) \ + $(NULL) + +MAINTAINERCLEANFILES = \ + *~ \ + Makefile.in + +-include $(top_srcdir)/git.mk diff --git a/mate-volume-control/src/Makefile.in b/mate-volume-control/src/Makefile.in new file mode 100644 index 0000000..f45544e --- /dev/null +++ b/mate-volume-control/src/Makefile.in @@ -0,0 +1,757 @@ +# Makefile.in generated by automake 1.11.1 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, +# Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + + +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +bin_PROGRAMS = mate-volume-control-applet$(EXEEXT) \ + mate-volume-control$(EXEEXT) $(am__EXEEXT_1) +subdir = mate-volume-control/src +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/as-ac-expand.m4 \ + $(top_srcdir)/m4/as-compiler-flag.m4 \ + $(top_srcdir)/m4/as-version.m4 $(top_srcdir)/m4/intltool.m4 \ + $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ + $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ + $(top_srcdir)/m4/lt~obsolete.m4 \ + $(top_srcdir)/m4/mate-doc-utils.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/build-aux/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LTLIBRARIES = $(noinst_LTLIBRARIES) +libmatevolumecontrol_la_LIBADD = +am__objects_1 = +am_libmatevolumecontrol_la_OBJECTS = gvc-mixer-card.lo \ + gvc-mixer-stream.lo gvc-channel-map.lo gvc-mixer-sink.lo \ + gvc-mixer-source.lo gvc-mixer-sink-input.lo \ + gvc-mixer-source-output.lo gvc-mixer-event-role.lo \ + gvc-mixer-control.lo gvc-channel-bar.lo gvc-log.lo \ + $(am__objects_1) +libmatevolumecontrol_la_OBJECTS = \ + $(am_libmatevolumecontrol_la_OBJECTS) +AM_V_lt = $(am__v_lt_$(V)) +am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) +am__v_lt_0 = --silent +am__EXEEXT_1 = +am__installdirs = "$(DESTDIR)$(bindir)" +PROGRAMS = $(bin_PROGRAMS) +am_mate_volume_control_OBJECTS = gvc-balance-bar.$(OBJEXT) \ + gvc-mixer-dialog.$(OBJEXT) gvc-level-bar.$(OBJEXT) \ + gvc-combo-box.$(OBJEXT) gvc-speaker-test.$(OBJEXT) \ + dialog-main.$(OBJEXT) $(am__objects_1) +mate_volume_control_OBJECTS = $(am_mate_volume_control_OBJECTS) +am__DEPENDENCIES_1 = +mate_volume_control_DEPENDENCIES = libmatevolumecontrol.la \ + $(top_builddir)/sound-theme/libsoundtheme.la \ + $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ + $(am__DEPENDENCIES_1) +am_mate_volume_control_applet_OBJECTS = \ + gvc-stream-status-icon.$(OBJEXT) gvc-applet.$(OBJEXT) \ + applet-main.$(OBJEXT) $(am__objects_1) +mate_volume_control_applet_OBJECTS = \ + $(am_mate_volume_control_applet_OBJECTS) +mate_volume_control_applet_DEPENDENCIES = libmatevolumecontrol.la \ + $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ + $(am__DEPENDENCIES_1) +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/build-aux/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_$(V)) +am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY)) +am__v_CC_0 = @echo " CC " $@; +AM_V_at = $(am__v_at_$(V)) +am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) +am__v_at_0 = @ +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_$(V)) +am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY)) +am__v_CCLD_0 = @echo " CCLD " $@; +AM_V_GEN = $(am__v_GEN_$(V)) +am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) +am__v_GEN_0 = @echo " GEN " $@; +SOURCES = $(libmatevolumecontrol_la_SOURCES) \ + $(mate_volume_control_SOURCES) \ + $(mate_volume_control_applet_SOURCES) +DIST_SOURCES = $(libmatevolumecontrol_la_SOURCES) \ + $(mate_volume_control_SOURCES) \ + $(mate_volume_control_applet_SOURCES) +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +ALL_LINGUAS = @ALL_LINGUAS@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CATALOGS = @CATALOGS@ +CATOBJEXT = @CATOBJEXT@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DATADIRNAME = @DATADIRNAME@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DISABLE_DEPRECATED = @DISABLE_DEPRECATED@ +DISTCHECK_CONFIGURE_FLAGS = @DISTCHECK_CONFIGURE_FLAGS@ +DLLTOOL = @DLLTOOL@ +DOC_USER_FORMATS = @DOC_USER_FORMATS@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ +GLADEUI_CATALOG_DIR = @GLADEUI_CATALOG_DIR@ +GLADEUI_CFLAGS = @GLADEUI_CFLAGS@ +GLADEUI_LIBS = @GLADEUI_LIBS@ +GLADEUI_MODULE_DIR = @GLADEUI_MODULE_DIR@ +GLIB_GENMARSHAL = @GLIB_GENMARSHAL@ +GMOFILES = @GMOFILES@ +GMP_CFLAGS = @GMP_CFLAGS@ +GMP_LIBS = @GMP_LIBS@ +GMSGFMT = @GMSGFMT@ +GREP = @GREP@ +GSR_CFLAGS = @GSR_CFLAGS@ +GSR_LIBS = @GSR_LIBS@ +GSTMIXER_CFLAGS = @GSTMIXER_CFLAGS@ +GSTMIXER_LIBS = @GSTMIXER_LIBS@ +GSTPROPS_CFLAGS = @GSTPROPS_CFLAGS@ +GSTPROPS_LIBS = @GSTPROPS_LIBS@ +GST_MAJORMINOR = @GST_MAJORMINOR@ +HAVE_PULSEAUDIO = @HAVE_PULSEAUDIO@ +HAVE_SOUND_THEME = @HAVE_SOUND_THEME@ +HELP_DIR = @HELP_DIR@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INSTOBJEXT = @INSTOBJEXT@ +INTLLIBS = @INTLLIBS@ +INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@ +INTLTOOL_MERGE = @INTLTOOL_MERGE@ +INTLTOOL_PERL = @INTLTOOL_PERL@ +INTLTOOL_UPDATE = @INTLTOOL_UPDATE@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MATECC_DESKTOP_DIR = @MATECC_DESKTOP_DIR@ +MATECONFTOOL = @MATECONFTOOL@ +MATECONF_SCHEMA_CONFIG_SOURCE = @MATECONF_SCHEMA_CONFIG_SOURCE@ +MATECONF_SCHEMA_FILE_DIR = @MATECONF_SCHEMA_FILE_DIR@ +MKDIR_P = @MKDIR_P@ +MKINSTALLDIRS = @MKINSTALLDIRS@ +MSGFMT = @MSGFMT@ +MSGFMT_OPTS = @MSGFMT_OPTS@ +MSGMERGE = @MSGMERGE@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OMF_DIR = @OMF_DIR@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PACKAGE_VERSION_MAJOR = @PACKAGE_VERSION_MAJOR@ +PACKAGE_VERSION_MICRO = @PACKAGE_VERSION_MICRO@ +PACKAGE_VERSION_MINOR = @PACKAGE_VERSION_MINOR@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +POFILES = @POFILES@ +POSUB = @POSUB@ +PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ +PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@ +PROGRAMS_GSTPROPS = @PROGRAMS_GSTPROPS@ +PULSEAUDIO_CFLAGS = @PULSEAUDIO_CFLAGS@ +PULSEAUDIO_LIBS = @PULSEAUDIO_LIBS@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SOUNDTHEME_CFLAGS = @SOUNDTHEME_CFLAGS@ +SOUNDTHEME_LIBS = @SOUNDTHEME_LIBS@ +SOUND_THEME_CFLAGS = @SOUND_THEME_CFLAGS@ +SOUND_THEME_LIBS = @SOUND_THEME_LIBS@ +STRIP = @STRIP@ +USE_NLS = @USE_NLS@ +VERSION = @VERSION@ +VOLUME_CONTROL_CFLAGS = @VOLUME_CONTROL_CFLAGS@ +VOLUME_CONTROL_LIBS = @VOLUME_CONTROL_LIBS@ +WARN_CFLAGS = @WARN_CFLAGS@ +WARN_CXXFLAGS = @WARN_CXXFLAGS@ +XGETTEXT = @XGETTEXT@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +NULL = +AM_CPPFLAGS = \ + $(WARN_CFLAGS) \ + -I$(top_srcdir)/sound-theme \ + $(VOLUME_CONTROL_CFLAGS) \ + $(DISABLE_DEPRECATED) \ + $(PULSEAUDIO_CFLAGS) \ + -DLOCALE_DIR=\""$(datadir)/locale"\" \ + -DLIBEXECDIR=\"$(libexecdir)\" \ + -DGLADEDIR=\""$(pkgdatadir)"\" \ + -DICON_DATA_DIR="\"$(pkgdatadir)/icons\"" \ + $(NULL) + +noinst_LTLIBRARIES = libmatevolumecontrol.la +libmatevolumecontrol_la_SOURCES = \ + gvc-mixer-card.h \ + gvc-mixer-card.c \ + gvc-mixer-stream.h \ + gvc-mixer-stream.c \ + gvc-channel-map.h \ + gvc-channel-map.c \ + gvc-mixer-sink.h \ + gvc-mixer-sink.c \ + gvc-mixer-source.h \ + gvc-mixer-source.c \ + gvc-mixer-sink-input.h \ + gvc-mixer-sink-input.c \ + gvc-mixer-source-output.h \ + gvc-mixer-source-output.c \ + gvc-mixer-event-role.h \ + gvc-mixer-event-role.c \ + gvc-mixer-control.h \ + gvc-mixer-control.c \ + gvc-channel-bar.h \ + gvc-channel-bar.c \ + gvc-log.h \ + gvc-log.c \ + $(NULL) + +mate_volume_control_applet_LDADD = \ + -lm \ + libmatevolumecontrol.la \ + $(VOLUME_CONTROL_LIBS) \ + $(PULSEAUDIO_LIBS) \ + $(NULL) + +mate_volume_control_applet_SOURCES = \ + gvc-stream-status-icon.h \ + gvc-stream-status-icon.c \ + gvc-applet.h \ + gvc-applet.c \ + applet-main.c \ + $(NULL) + +mate_volume_control_LDADD = \ + -lm \ + libmatevolumecontrol.la \ + $(top_builddir)/sound-theme/libsoundtheme.la \ + $(VOLUME_CONTROL_LIBS) \ + $(PULSEAUDIO_LIBS) \ + $(NULL) + +mate_volume_control_SOURCES = \ + gvc-balance-bar.h \ + gvc-balance-bar.c \ + gvc-mixer-dialog.h \ + gvc-mixer-dialog.c \ + gvc-level-bar.h \ + gvc-level-bar.c \ + gvc-combo-box.h \ + gvc-combo-box.c \ + gvc-speaker-test.h \ + gvc-speaker-test.c \ + dialog-main.c \ + $(NULL) + +BUILT_SOURCES = \ + $(NULL) + +CLEANFILES = \ + $(BUILT_SOURCES) \ + $(NULL) + +MAINTAINERCLEANFILES = \ + *~ \ + Makefile.in + +all: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .o .obj +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign mate-volume-control/src/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign mate-volume-control/src/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstLTLIBRARIES: + -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; for p in $$list; do \ + dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ + test "$$dir" != "$$p" || dir=.; \ + echo "rm -f \"$${dir}/so_locations\""; \ + rm -f "$${dir}/so_locations"; \ + done +libmatevolumecontrol.la: $(libmatevolumecontrol_la_OBJECTS) $(libmatevolumecontrol_la_DEPENDENCIES) + $(AM_V_CCLD)$(LINK) $(libmatevolumecontrol_la_OBJECTS) $(libmatevolumecontrol_la_LIBADD) $(LIBS) +install-binPROGRAMS: $(bin_PROGRAMS) + @$(NORMAL_INSTALL) + test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)" + @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ + for p in $$list; do echo "$$p $$p"; done | \ + sed 's/$(EXEEXT)$$//' | \ + while read p p1; do if test -f $$p || test -f $$p1; \ + then echo "$$p"; echo "$$p"; else :; fi; \ + done | \ + sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \ + -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ + sed 'N;N;N;s,\n, ,g' | \ + $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ + { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ + if ($$2 == $$4) files[d] = files[d] " " $$1; \ + else { print "f", $$3 "/" $$4, $$1; } } \ + END { for (d in files) print "f", d, files[d] }' | \ + while read type dir files; do \ + if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ + test -z "$$files" || { \ + echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \ + $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ + } \ + ; done + +uninstall-binPROGRAMS: + @$(NORMAL_UNINSTALL) + @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ + files=`for p in $$list; do echo "$$p"; done | \ + sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ + -e 's/$$/$(EXEEXT)/' `; \ + test -n "$$list" || exit 0; \ + echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(bindir)" && rm -f $$files + +clean-binPROGRAMS: + @list='$(bin_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list +mate-volume-control$(EXEEXT): $(mate_volume_control_OBJECTS) $(mate_volume_control_DEPENDENCIES) + @rm -f mate-volume-control$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(mate_volume_control_OBJECTS) $(mate_volume_control_LDADD) $(LIBS) +mate-volume-control-applet$(EXEEXT): $(mate_volume_control_applet_OBJECTS) $(mate_volume_control_applet_DEPENDENCIES) + @rm -f mate-volume-control-applet$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(mate_volume_control_applet_OBJECTS) $(mate_volume_control_applet_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/applet-main.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dialog-main.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gvc-applet.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gvc-balance-bar.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gvc-channel-bar.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gvc-channel-map.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gvc-combo-box.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gvc-level-bar.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gvc-log.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gvc-mixer-card.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gvc-mixer-control.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gvc-mixer-dialog.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gvc-mixer-event-role.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gvc-mixer-sink-input.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gvc-mixer-sink.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gvc-mixer-source-output.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gvc-mixer-source.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gvc-mixer-stream.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gvc-speaker-test.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gvc-stream-status-icon.Po@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c $< + +.c.obj: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + set x; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: CTAGS +CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) check-am +all-am: Makefile $(LTLIBRARIES) $(PROGRAMS) +installdirs: + for dir in "$(DESTDIR)$(bindir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." + -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) + -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) +clean: clean-am + +clean-am: clean-binPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: install-binPROGRAMS + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-binPROGRAMS + +.MAKE: all check install install-am install-strip + +.PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \ + clean-generic clean-libtool clean-noinstLTLIBRARIES ctags \ + distclean distclean-compile distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-binPROGRAMS \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-info install-info-am install-man install-pdf \ + install-pdf-am install-ps install-ps-am install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + tags uninstall uninstall-am uninstall-binPROGRAMS + + +-include $(top_srcdir)/git.mk + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/mate-volume-control/src/applet-main.c b/mate-volume-control/src/applet-main.c new file mode 100644 index 0000000..94d0960 --- /dev/null +++ b/mate-volume-control/src/applet-main.c @@ -0,0 +1,102 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*- + * + * Copyright (C) 2008 Red Hat, Inc. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + */ + +#include "config.h" + +#include <libintl.h> +#include <stdlib.h> +#include <string.h> +#include <unistd.h> +#include <errno.h> + +#include <glib/gi18n.h> +#include <glib.h> +#include <gtk/gtk.h> +#include <unique/uniqueapp.h> + +#include "gvc-applet.h" +#include "gvc-log.h" + +#define GVCA_DBUS_NAME "org.mate.VolumeControlApplet" + +static gboolean show_version = FALSE; +static gboolean debug = FALSE; + +int +main (int argc, char **argv) +{ + GError *error; + GvcApplet *applet; + UniqueApp *app = NULL; + static GOptionEntry entries[] = { + { "debug", 0, 0, G_OPTION_ARG_NONE, &debug, N_("Enable debugging code"), NULL }, + { "version", 0, 0, G_OPTION_ARG_NONE, &show_version, N_("Version of this application"), NULL }, + { NULL, 0, 0, 0, NULL, NULL, NULL } + }; + + bindtextdomain (GETTEXT_PACKAGE, LOCALE_DIR); + bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8"); + textdomain (GETTEXT_PACKAGE); + + gvc_log_init (); + + error = NULL; + gtk_init_with_args (&argc, &argv, + (char *) _(" — MATE Volume Control Applet"), + entries, GETTEXT_PACKAGE, + &error); + + if (error != NULL) { + g_warning ("%s", error->message); + exit (1); + } + + if (show_version) { + g_print ("%s %s\n", argv [0], VERSION); + exit (1); + } + + gvc_log_set_debug (debug); + + if (debug == FALSE) { + app = unique_app_new (GVCA_DBUS_NAME, NULL); + if (unique_app_is_running (app)) { + g_warning ("Applet is already running, exiting"); + return 0; + } + } + + gtk_icon_theme_append_search_path (gtk_icon_theme_get_default (), + ICON_DATA_DIR); + + applet = gvc_applet_new (); + gvc_applet_start (applet); + + gtk_main (); + + if (applet != NULL) { + g_object_unref (applet); + } + if (app != NULL) { + g_object_unref (app); + } + + return 0; +} diff --git a/mate-volume-control/src/dialog-main.c b/mate-volume-control/src/dialog-main.c new file mode 100644 index 0000000..21cdd0f --- /dev/null +++ b/mate-volume-control/src/dialog-main.c @@ -0,0 +1,211 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*- + * + * Copyright (C) 2008 Red Hat, Inc. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + */ + +#include "config.h" + +#include <libintl.h> +#include <stdlib.h> +#include <string.h> +#include <unistd.h> +#include <errno.h> + +#include <glib/gi18n.h> +#include <glib.h> +#include <gtk/gtk.h> +#include <unique/uniqueapp.h> + +#include "gvc-mixer-dialog.h" +#include "gvc-log.h" + +#define GVCA_DBUS_NAME "org.mate.VolumeControl" +#define DIALOG_POPUP_TIMEOUT 3 + +static gboolean show_version = FALSE; +static gboolean debug = FALSE; +static gchar* page = NULL; + +static guint popup_id = 0; +static GtkWidget *dialog = NULL; +static GtkWidget *warning_dialog = NULL; + +static void +on_dialog_response (GtkDialog *dialog, + guint response_id, + gpointer data) +{ + gtk_main_quit (); +} + +static void +on_dialog_close (GtkDialog *dialog, + gpointer data) +{ + gtk_main_quit (); +} + +static UniqueResponse +message_received_cb (UniqueApp *app, + int command, + UniqueMessageData *message_data, + guint time_, + gpointer user_data) +{ + gtk_window_present (GTK_WINDOW (user_data)); + + return UNIQUE_RESPONSE_OK; +} + +static void +on_control_ready (GvcMixerControl *control, + UniqueApp *app) +{ + if (popup_id != 0) { + g_source_remove (popup_id); + popup_id = 0; + } + if (warning_dialog != NULL) { + gtk_widget_destroy (warning_dialog); + warning_dialog = NULL; + } + + if (dialog) + return; + + dialog = GTK_WIDGET (gvc_mixer_dialog_new (control)); + g_signal_connect (dialog, + "response", + G_CALLBACK (on_dialog_response), + NULL); + g_signal_connect (dialog, + "close", + G_CALLBACK (on_dialog_close), + NULL); + + gvc_mixer_dialog_set_page(GVC_MIXER_DIALOG (dialog), page); + + g_signal_connect (app, "message-received", + G_CALLBACK (message_received_cb), dialog); + + gtk_widget_show (dialog); +} + +static void +warning_dialog_answered (GtkDialog *d, + gpointer data) +{ + gtk_widget_destroy (warning_dialog); + gtk_main_quit (); +} + +static gboolean +dialog_popup_timeout (gpointer data) +{ + warning_dialog = gtk_message_dialog_new (GTK_WINDOW(dialog), + 0, + GTK_MESSAGE_INFO, + GTK_BUTTONS_CANCEL, + _("Waiting for sound system to respond")); + g_signal_connect (warning_dialog, "response", + G_CALLBACK (warning_dialog_answered), NULL); + g_signal_connect (warning_dialog, "close", + G_CALLBACK (warning_dialog_answered), NULL); + + gtk_widget_show (warning_dialog); + + return FALSE; +} + +static void +on_control_connecting (GvcMixerControl *control, + UniqueApp *app) +{ + if (popup_id != 0) + return; + + popup_id = g_timeout_add_seconds (DIALOG_POPUP_TIMEOUT, + dialog_popup_timeout, + NULL); +} + +int +main (int argc, char **argv) +{ + GError *error; + GvcMixerControl *control; + UniqueApp *app; + static GOptionEntry entries[] = { + { "page", 'p', 0, G_OPTION_ARG_STRING, &page, N_("Startup page"), "effects|hardware|input|output|applications" }, + { "debug", 0, 0, G_OPTION_ARG_NONE, &debug, N_("Enable debugging code"), NULL }, + { "version", 0, 0, G_OPTION_ARG_NONE, &show_version, N_("Version of this application"), NULL }, + { NULL, 0, 0, 0, NULL, NULL, NULL } + }; + + bindtextdomain (GETTEXT_PACKAGE, LOCALE_DIR); + bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8"); + textdomain (GETTEXT_PACKAGE); + + gvc_log_init (); + + error = NULL; + gtk_init_with_args (&argc, &argv, + (char *) _(" — MATE Volume Control"), + entries, GETTEXT_PACKAGE, + &error); + if (error != NULL) { + g_warning ("%s", error->message); + exit (1); + } + + if (show_version) { + g_print ("%s %s\n", argv [0], VERSION); + exit (1); + } + + gvc_log_set_debug (debug); + + app = unique_app_new (GVCA_DBUS_NAME, NULL); + if (unique_app_is_running (app)) { + unique_app_send_message (app, UNIQUE_ACTIVATE, NULL); + exit (0); + } + + gtk_icon_theme_append_search_path (gtk_icon_theme_get_default (), + ICON_DATA_DIR); + gtk_window_set_default_icon_name ("multimedia-volume-control"); + + control = gvc_mixer_control_new ("MATE Volume Control Dialog"); + g_signal_connect (control, + "connecting", + G_CALLBACK (on_control_connecting), + app); + g_signal_connect (control, + "ready", + G_CALLBACK (on_control_ready), + app); + gvc_mixer_control_open (control); + + gtk_main (); + + if (control != NULL) { + g_object_unref (control); + } + + return 0; +} diff --git a/mate-volume-control/src/gvc-applet.c b/mate-volume-control/src/gvc-applet.c new file mode 100644 index 0000000..7562fbe --- /dev/null +++ b/mate-volume-control/src/gvc-applet.c @@ -0,0 +1,310 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*- + * + * Copyright (C) 2008 Red Hat, Inc. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + */ + +#include "config.h" + +#include <stdlib.h> +#include <stdio.h> +#include <fcntl.h> +#include <unistd.h> +#include <string.h> +#include <errno.h> + +#include <glib.h> +#include <glib/gi18n.h> +#include <gtk/gtk.h> + +#include "gvc-applet.h" +#include "gvc-mixer-control.h" +#include "gvc-stream-status-icon.h" + +#define GVC_APPLET_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GVC_TYPE_APPLET, GvcAppletPrivate)) + +#define SCALE_SIZE 128 + +static const char *output_icon_names[] = { + "audio-volume-muted", + "audio-volume-low", + "audio-volume-medium", + "audio-volume-high", + NULL +}; + +static const char *input_icon_names[] = { + "audio-input-microphone-muted", + "audio-input-microphone-low", + "audio-input-microphone-medium", + "audio-input-microphone-high", + NULL +}; + +struct GvcAppletPrivate +{ + GvcStreamStatusIcon *input_status_icon; + GvcStreamStatusIcon *output_status_icon; + GvcMixerControl *control; +}; + +static void gvc_applet_class_init (GvcAppletClass *klass); +static void gvc_applet_init (GvcApplet *applet); +static void gvc_applet_finalize (GObject *object); + +G_DEFINE_TYPE (GvcApplet, gvc_applet, G_TYPE_OBJECT) + +static void +maybe_show_status_icons (GvcApplet *applet) +{ + gboolean show; + GvcMixerStream *stream; + GSList *source_outputs, *l; + + show = TRUE; + stream = gvc_mixer_control_get_default_sink (applet->priv->control); + if (stream == NULL) { + show = FALSE; + } + gtk_status_icon_set_visible (GTK_STATUS_ICON (applet->priv->output_status_icon), show); + + + show = FALSE; + stream = gvc_mixer_control_get_default_source (applet->priv->control); + source_outputs = gvc_mixer_control_get_source_outputs (applet->priv->control); + if (stream != NULL && source_outputs != NULL) { + /* Check that we're not trying to add the peak detector + * as an application doing recording */ + for (l = source_outputs ; l ; l = l->next) { + GvcMixerStream *s = l->data; + const char *id; + + id = gvc_mixer_stream_get_application_id (s); + if (id == NULL) { + show = TRUE; + break; + } + + if (!g_str_equal (id, "org.mate.VolumeControl") && + !g_str_equal (id, "org.PulseAudio.pavucontrol")) { + show = TRUE; + break; + } + } + } + gtk_status_icon_set_visible (GTK_STATUS_ICON (applet->priv->input_status_icon), show); + + g_slist_free (source_outputs); +} + +void +gvc_applet_start (GvcApplet *applet) +{ + g_return_if_fail (GVC_IS_APPLET (applet)); + + maybe_show_status_icons (applet); +} + +static void +gvc_applet_dispose (GObject *object) +{ + GvcApplet *applet = GVC_APPLET (object); + + if (applet->priv->control != NULL) { + g_object_unref (applet->priv->control); + applet->priv->control = NULL; + } + + G_OBJECT_CLASS (gvc_applet_parent_class)->dispose (object); +} + +static void +update_default_source (GvcApplet *applet) +{ + GvcMixerStream *stream; + + stream = gvc_mixer_control_get_default_source (applet->priv->control); + if (stream != NULL) { + gvc_stream_status_icon_set_mixer_stream (applet->priv->input_status_icon, + stream); + maybe_show_status_icons(applet); + } else { + g_debug ("Unable to get default source, or no source available"); + } +} + +static void +update_default_sink (GvcApplet *applet) +{ + GvcMixerStream *stream; + + stream = gvc_mixer_control_get_default_sink (applet->priv->control); + if (stream != NULL) { + gvc_stream_status_icon_set_mixer_stream (applet->priv->output_status_icon, + stream); + maybe_show_status_icons(applet); + } else { + g_warning ("Unable to get default sink"); + } +} + +static void +on_control_ready (GvcMixerControl *control, + GvcApplet *applet) +{ + update_default_sink (applet); + update_default_source (applet); +} + +static void +on_control_connecting (GvcMixerControl *control, + GvcApplet *applet) +{ + g_debug ("Connecting.."); +} + +static void +on_control_default_sink_changed (GvcMixerControl *control, + guint id, + GvcApplet *applet) +{ + update_default_sink (applet); +} + +static void +on_control_default_source_changed (GvcMixerControl *control, + guint id, + GvcApplet *applet) +{ + update_default_source (applet); +} + +static void +on_control_stream_removed (GvcMixerControl *control, + guint id, + GvcApplet *applet) +{ + maybe_show_status_icons (applet); +} + +static void +on_control_stream_added (GvcMixerControl *control, + guint id, + GvcApplet *applet) +{ + maybe_show_status_icons (applet); +} + +static GObject * +gvc_applet_constructor (GType type, + guint n_construct_properties, + GObjectConstructParam *construct_params) +{ + GObject *object; + GvcApplet *self; + + object = G_OBJECT_CLASS (gvc_applet_parent_class)->constructor (type, n_construct_properties, construct_params); + + self = GVC_APPLET (object); + + self->priv->control = gvc_mixer_control_new ("MATE Volume Control Applet"); + g_signal_connect (self->priv->control, + "ready", + G_CALLBACK (on_control_ready), + self); + g_signal_connect (self->priv->control, + "connecting", + G_CALLBACK (on_control_connecting), + self); + g_signal_connect (self->priv->control, + "default-sink-changed", + G_CALLBACK (on_control_default_sink_changed), + self); + g_signal_connect (self->priv->control, + "default-source-changed", + G_CALLBACK (on_control_default_source_changed), + self); + g_signal_connect (self->priv->control, + "stream-added", + G_CALLBACK (on_control_stream_added), + self); + g_signal_connect (self->priv->control, + "stream-removed", + G_CALLBACK (on_control_stream_removed), + self); + + gvc_mixer_control_open (self->priv->control); + + return object; +} + +static void +gvc_applet_class_init (GvcAppletClass *klass) +{ + GObjectClass *object_class = G_OBJECT_CLASS (klass); + + object_class->finalize = gvc_applet_finalize; + object_class->dispose = gvc_applet_dispose; + object_class->constructor = gvc_applet_constructor; + + g_type_class_add_private (klass, sizeof (GvcAppletPrivate)); +} + +static void +gvc_applet_init (GvcApplet *applet) +{ + applet->priv = GVC_APPLET_GET_PRIVATE (applet); + + applet->priv->output_status_icon = gvc_stream_status_icon_new (NULL, + output_icon_names); + gvc_stream_status_icon_set_display_name (applet->priv->output_status_icon, + _("Output")); + gtk_status_icon_set_title (GTK_STATUS_ICON (applet->priv->output_status_icon), + _("Sound Output Volume")); + applet->priv->input_status_icon = gvc_stream_status_icon_new (NULL, + input_icon_names); + gvc_stream_status_icon_set_display_name (applet->priv->input_status_icon, + _("Input")); + gtk_status_icon_set_title (GTK_STATUS_ICON (applet->priv->input_status_icon), + _("Microphone Volume")); +} + +static void +gvc_applet_finalize (GObject *object) +{ + GvcApplet *applet; + + g_return_if_fail (object != NULL); + g_return_if_fail (GVC_IS_APPLET (object)); + + applet = GVC_APPLET (object); + + g_return_if_fail (applet->priv != NULL); + + + G_OBJECT_CLASS (gvc_applet_parent_class)->finalize (object); +} + +GvcApplet * +gvc_applet_new (void) +{ + GObject *applet; + + applet = g_object_new (GVC_TYPE_APPLET, NULL); + + return GVC_APPLET (applet); +} diff --git a/mate-volume-control/src/gvc-applet.h b/mate-volume-control/src/gvc-applet.h new file mode 100644 index 0000000..d9e0311 --- /dev/null +++ b/mate-volume-control/src/gvc-applet.h @@ -0,0 +1,55 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*- + * + * Copyright (C) 2008 Red Hat, Inc. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + */ + +#ifndef __GVC_APPLET_H +#define __GVC_APPLET_H + +#include <glib-object.h> + +G_BEGIN_DECLS + +#define GVC_TYPE_APPLET (gvc_applet_get_type ()) +#define GVC_APPLET(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), GVC_TYPE_APPLET, GvcApplet)) +#define GVC_APPLET_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), GVC_TYPE_APPLET, GvcAppletClass)) +#define GVC_IS_APPLET(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GVC_TYPE_APPLET)) +#define GVC_IS_APPLET_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), GVC_TYPE_APPLET)) +#define GVC_APPLET_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), GVC_TYPE_APPLET, GvcAppletClass)) + +typedef struct GvcAppletPrivate GvcAppletPrivate; + +typedef struct +{ + GObject parent; + GvcAppletPrivate *priv; +} GvcApplet; + +typedef struct +{ + GObjectClass parent_class; +} GvcAppletClass; + +GType gvc_applet_get_type (void); + +GvcApplet * gvc_applet_new (void); +void gvc_applet_start (GvcApplet *applet); + +G_END_DECLS + +#endif /* __GVC_APPLET_H */ diff --git a/mate-volume-control/src/gvc-balance-bar.c b/mate-volume-control/src/gvc-balance-bar.c new file mode 100644 index 0000000..6f5c47f --- /dev/null +++ b/mate-volume-control/src/gvc-balance-bar.c @@ -0,0 +1,548 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*- + * + * Copyright (C) 2008 William Jon McCann + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + */ + +#include "config.h" + +#include <stdlib.h> +#include <stdio.h> +#include <unistd.h> + +#include <glib.h> +#include <glib/gi18n.h> +#include <gtk/gtk.h> +#include <canberra-gtk.h> + +#include "gvc-balance-bar.h" + +#define SCALE_SIZE 128 +#define ADJUSTMENT_MAX_NORMAL 65536.0 /* PA_VOLUME_NORM */ + +#define GVC_BALANCE_BAR_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GVC_TYPE_BALANCE_BAR, GvcBalanceBarPrivate)) + +struct GvcBalanceBarPrivate +{ + GvcChannelMap *channel_map; + GvcBalanceType btype; + GtkWidget *scale_box; + GtkWidget *start_box; + GtkWidget *end_box; + GtkWidget *label; + GtkWidget *scale; + GtkAdjustment *adjustment; + GtkSizeGroup *size_group; + gboolean symmetric; + gboolean click_lock; +}; + +enum +{ + PROP_0, + PROP_CHANNEL_MAP, + PROP_BALANCE_TYPE, +}; + +static void gvc_balance_bar_class_init (GvcBalanceBarClass *klass); +static void gvc_balance_bar_init (GvcBalanceBar *balance_bar); +static void gvc_balance_bar_finalize (GObject *object); + +static gboolean on_scale_button_press_event (GtkWidget *widget, + GdkEventButton *event, + GvcBalanceBar *bar); +static gboolean on_scale_button_release_event (GtkWidget *widget, + GdkEventButton *event, + GvcBalanceBar *bar); +static gboolean on_scale_scroll_event (GtkWidget *widget, + GdkEventScroll *event, + GvcBalanceBar *bar); +static void on_adjustment_value_changed (GtkAdjustment *adjustment, + GvcBalanceBar *bar); + +G_DEFINE_TYPE (GvcBalanceBar, gvc_balance_bar, GTK_TYPE_HBOX) + +static GtkWidget * +_scale_box_new (GvcBalanceBar *bar) +{ + GvcBalanceBarPrivate *priv = bar->priv; + GtkWidget *box; + GtkWidget *sbox; + GtkWidget *ebox; + GtkAdjustment *adjustment = bar->priv->adjustment; + char *str_lower, *str_upper; + gdouble lower, upper; + + bar->priv->scale_box = box = gtk_hbox_new (FALSE, 6); + priv->scale = gtk_hscale_new (priv->adjustment); + gtk_widget_set_size_request (priv->scale, SCALE_SIZE, -1); + + gtk_widget_set_name (priv->scale, "balance-bar-scale"); + gtk_rc_parse_string ("style \"balance-bar-scale-style\" {\n" + " GtkScale::trough-side-details = 0\n" + "}\n" + "widget \"*.balance-bar-scale\" style : rc \"balance-bar-scale-style\"\n"); + + bar->priv->start_box = sbox = gtk_hbox_new (FALSE, 6); + gtk_box_pack_start (GTK_BOX (box), sbox, FALSE, FALSE, 0); + + gtk_box_pack_start (GTK_BOX (sbox), priv->label, FALSE, FALSE, 0); + + gtk_box_pack_start (GTK_BOX (box), priv->scale, TRUE, TRUE, 0); + + switch (bar->priv->btype) { + case BALANCE_TYPE_RL: + str_lower = g_strdup_printf ("<small>%s</small>", C_("balance", "Left")); + str_upper = g_strdup_printf ("<small>%s</small>", C_("balance", "Right")); + break; + case BALANCE_TYPE_FR: + str_lower = g_strdup_printf ("<small>%s</small>", C_("balance", "Rear")); + str_upper = g_strdup_printf ("<small>%s</small>", C_("balance", "Front")); + break; + case BALANCE_TYPE_LFE: + str_lower = g_strdup_printf ("<small>%s</small>", C_("balance", "Minimum")); + str_upper = g_strdup_printf ("<small>%s</small>", C_("balance", "Maximum")); + break; + default: + g_assert_not_reached (); + } + + lower = gtk_adjustment_get_lower (adjustment); + gtk_scale_add_mark (GTK_SCALE (priv->scale), lower, + GTK_POS_BOTTOM, str_lower); + g_free (str_lower); + upper = gtk_adjustment_get_upper (adjustment); + gtk_scale_add_mark (GTK_SCALE (priv->scale), upper, + GTK_POS_BOTTOM, str_upper); + g_free (str_upper); + + if (bar->priv->btype != BALANCE_TYPE_LFE) { + gtk_scale_add_mark (GTK_SCALE (priv->scale), + (upper - lower)/2 + lower, + GTK_POS_BOTTOM, NULL); + } + + bar->priv->end_box = ebox = gtk_hbox_new (FALSE, 6); + gtk_box_pack_start (GTK_BOX (box), ebox, FALSE, FALSE, 0); + + gtk_range_set_update_policy (GTK_RANGE (priv->scale), GTK_UPDATE_CONTINUOUS); + ca_gtk_widget_disable_sounds (bar->priv->scale, FALSE); + gtk_widget_add_events (bar->priv->scale, GDK_SCROLL_MASK); + + g_signal_connect (G_OBJECT (bar->priv->scale), "button-press-event", + G_CALLBACK (on_scale_button_press_event), bar); + g_signal_connect (G_OBJECT (bar->priv->scale), "button-release-event", + G_CALLBACK (on_scale_button_release_event), bar); + g_signal_connect (G_OBJECT (bar->priv->scale), "scroll-event", + G_CALLBACK (on_scale_scroll_event), bar); + + if (bar->priv->size_group != NULL) { + gtk_size_group_add_widget (bar->priv->size_group, sbox); + + if (bar->priv->symmetric) { + gtk_size_group_add_widget (bar->priv->size_group, ebox); + } + } + + gtk_scale_set_draw_value (GTK_SCALE (priv->scale), FALSE); + + return box; +} + +void +gvc_balance_bar_set_size_group (GvcBalanceBar *bar, + GtkSizeGroup *group, + gboolean symmetric) +{ + g_return_if_fail (GVC_IS_BALANCE_BAR (bar)); + + bar->priv->size_group = group; + bar->priv->symmetric = symmetric; + + if (bar->priv->size_group != NULL) { + gtk_size_group_add_widget (bar->priv->size_group, + bar->priv->start_box); + + if (bar->priv->symmetric) { + gtk_size_group_add_widget (bar->priv->size_group, + bar->priv->end_box); + } + } + gtk_widget_queue_draw (GTK_WIDGET (bar)); +} + +static const char * +btype_to_string (guint btype) +{ + switch (btype) { + case BALANCE_TYPE_RL: + return "Balance"; + case BALANCE_TYPE_FR: + return "Fade"; + break; + case BALANCE_TYPE_LFE: + return "LFE"; + default: + g_assert_not_reached (); + } + return NULL; +} + +static void +update_level_from_map (GvcBalanceBar *bar, + GvcChannelMap *map) +{ + const gdouble *volumes; + gdouble val; + + g_debug ("Volume changed (for %s bar)", btype_to_string (bar->priv->btype)); + + volumes = gvc_channel_map_get_volume (map); + switch (bar->priv->btype) { + case BALANCE_TYPE_RL: + val = volumes[BALANCE]; + break; + case BALANCE_TYPE_FR: + val = volumes[FADE]; + break; + case BALANCE_TYPE_LFE: + val = volumes[LFE]; + break; + default: + g_assert_not_reached (); + } + + gtk_adjustment_set_value (bar->priv->adjustment, val); +} + +static void +on_channel_map_volume_changed (GvcChannelMap *map, + gboolean set, + GvcBalanceBar *bar) +{ + update_level_from_map (bar, map); +} + +static void +gvc_balance_bar_set_channel_map (GvcBalanceBar *bar, + GvcChannelMap *map) +{ + g_return_if_fail (GVC_BALANCE_BAR (bar)); + + if (bar->priv->channel_map != NULL) { + g_signal_handlers_disconnect_by_func (G_OBJECT (bar->priv->channel_map), + on_channel_map_volume_changed, bar); + g_object_unref (bar->priv->channel_map); + } + bar->priv->channel_map = g_object_ref (map); + + update_level_from_map (bar, map); + + g_signal_connect (G_OBJECT (map), "volume-changed", + G_CALLBACK (on_channel_map_volume_changed), bar); + + g_object_notify (G_OBJECT (bar), "channel-map"); +} + +static void +gvc_balance_bar_set_balance_type (GvcBalanceBar *bar, + GvcBalanceType btype) +{ + GtkWidget *frame; + + g_return_if_fail (GVC_BALANCE_BAR (bar)); + + bar->priv->btype = btype; + if (bar->priv->btype != BALANCE_TYPE_LFE) { + bar->priv->adjustment = GTK_ADJUSTMENT (gtk_adjustment_new (0.0, + -1.0, + 1.0, + 0.5, + 0.5, + 0.0)); + } else { + bar->priv->adjustment = GTK_ADJUSTMENT (gtk_adjustment_new (0.0, + 0.0, + ADJUSTMENT_MAX_NORMAL, + ADJUSTMENT_MAX_NORMAL/100.0, + ADJUSTMENT_MAX_NORMAL/10.0, + 0.0)); + } + + g_object_ref_sink (bar->priv->adjustment); + g_signal_connect (bar->priv->adjustment, + "value-changed", + G_CALLBACK (on_adjustment_value_changed), + bar); + + switch (btype) { + case BALANCE_TYPE_RL: + bar->priv->label = gtk_label_new_with_mnemonic (_("_Balance:")); + break; + case BALANCE_TYPE_FR: + bar->priv->label = gtk_label_new_with_mnemonic (_("_Fade:")); + break; + case BALANCE_TYPE_LFE: + bar->priv->label = gtk_label_new_with_mnemonic (_("_Subwoofer:")); + break; + default: + g_assert_not_reached (); + } + gtk_misc_set_alignment (GTK_MISC (bar->priv->label), + 0.0, + 0.0); + /* frame */ + frame = gtk_frame_new (NULL); + gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_NONE); + gtk_container_add (GTK_CONTAINER (bar), frame); + + /* box with scale */ + bar->priv->scale_box = _scale_box_new (bar); + gtk_container_add (GTK_CONTAINER (frame), bar->priv->scale_box); + gtk_widget_show_all (frame); + + gtk_widget_set_direction (bar->priv->scale, GTK_TEXT_DIR_LTR); + gtk_label_set_mnemonic_widget (GTK_LABEL (bar->priv->label), + bar->priv->scale); + + g_object_notify (G_OBJECT (bar), "balance-type"); +} + +static void +gvc_balance_bar_set_property (GObject *object, + guint prop_id, + const GValue *value, + GParamSpec *pspec) +{ + GvcBalanceBar *self = GVC_BALANCE_BAR (object); + + switch (prop_id) { + case PROP_CHANNEL_MAP: + gvc_balance_bar_set_channel_map (self, g_value_get_object (value)); + break; + case PROP_BALANCE_TYPE: + gvc_balance_bar_set_balance_type (self, g_value_get_int (value)); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; + } +} + +static void +gvc_balance_bar_get_property (GObject *object, + guint prop_id, + GValue *value, + GParamSpec *pspec) +{ + GvcBalanceBar *self = GVC_BALANCE_BAR (object); + + switch (prop_id) { + case PROP_CHANNEL_MAP: + g_value_set_object (value, self->priv->channel_map); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; + } +} + +static GObject * +gvc_balance_bar_constructor (GType type, + guint n_construct_properties, + GObjectConstructParam *construct_params) +{ + return G_OBJECT_CLASS (gvc_balance_bar_parent_class)->constructor (type, n_construct_properties, construct_params); +} + +static void +gvc_balance_bar_class_init (GvcBalanceBarClass *klass) +{ + GObjectClass *object_class = G_OBJECT_CLASS (klass); + + object_class->constructor = gvc_balance_bar_constructor; + object_class->finalize = gvc_balance_bar_finalize; + object_class->set_property = gvc_balance_bar_set_property; + object_class->get_property = gvc_balance_bar_get_property; + + g_object_class_install_property (object_class, + PROP_CHANNEL_MAP, + g_param_spec_object ("channel-map", + "channel map", + "The channel map", + GVC_TYPE_CHANNEL_MAP, + G_PARAM_READWRITE)); + g_object_class_install_property (object_class, + PROP_BALANCE_TYPE, + g_param_spec_int ("balance-type", + "balance type", + "Whether the balance is right-left or front-rear", + BALANCE_TYPE_RL, NUM_BALANCE_TYPES - 1, BALANCE_TYPE_RL, + G_PARAM_READWRITE|G_PARAM_CONSTRUCT_ONLY)); + + g_type_class_add_private (klass, sizeof (GvcBalanceBarPrivate)); +} + + +static gboolean +on_scale_button_press_event (GtkWidget *widget, + GdkEventButton *event, + GvcBalanceBar *bar) +{ + bar->priv->click_lock = TRUE; + + return FALSE; +} + +static gboolean +on_scale_button_release_event (GtkWidget *widget, + GdkEventButton *event, + GvcBalanceBar *bar) +{ + bar->priv->click_lock = FALSE; + + return FALSE; +} + +static gboolean +on_scale_scroll_event (GtkWidget *widget, + GdkEventScroll *event, + GvcBalanceBar *bar) +{ + gdouble value; + + value = gtk_adjustment_get_value (bar->priv->adjustment); + + if (bar->priv->btype == BALANCE_TYPE_LFE) { + if (event->direction == GDK_SCROLL_UP) { + if (value + ADJUSTMENT_MAX_NORMAL/100.0 > ADJUSTMENT_MAX_NORMAL) + value = ADJUSTMENT_MAX_NORMAL; + else + value = value + ADJUSTMENT_MAX_NORMAL/100.0; + } else if (event->direction == GDK_SCROLL_DOWN) { + if (value - ADJUSTMENT_MAX_NORMAL/100.0 < 0) + value = 0.0; + else + value = value - ADJUSTMENT_MAX_NORMAL/100.0; + } + } else { + if (event->direction == GDK_SCROLL_UP) { + if (value + 0.01 > 1.0) + value = 1.0; + else + value = value + 0.01; + } else if (event->direction == GDK_SCROLL_DOWN) { + if (value - 0.01 < 0) + value = 0.0; + else + value = value - 0.01; + } + } + gtk_adjustment_set_value (bar->priv->adjustment, value); + + return TRUE; +} + +/* FIXME remove when we depend on a newer PA */ +static pa_cvolume * +gvc_pa_cvolume_set_position (pa_cvolume *cv, const pa_channel_map *map, pa_channel_position_t t, pa_volume_t v) { + unsigned c; + gboolean good = FALSE; + + g_assert(cv); + g_assert(map); + + g_return_val_if_fail(pa_cvolume_compatible_with_channel_map(cv, map), NULL); + g_return_val_if_fail(t < PA_CHANNEL_POSITION_MAX, NULL); + + for (c = 0; c < map->channels; c++) + if (map->map[c] == t) { + cv->values[c] = v; + good = TRUE; + } + + return good ? cv : NULL; +} + +static void +on_adjustment_value_changed (GtkAdjustment *adjustment, + GvcBalanceBar *bar) +{ + gdouble val; + pa_cvolume cv; + const pa_channel_map *pa_map; + + if (bar->priv->channel_map == NULL) + return; + + cv = *gvc_channel_map_get_cvolume (bar->priv->channel_map); + val = gtk_adjustment_get_value (adjustment); + + pa_map = gvc_channel_map_get_pa_channel_map (bar->priv->channel_map); + + switch (bar->priv->btype) { + case BALANCE_TYPE_RL: + pa_cvolume_set_balance (&cv, pa_map, val); + break; + case BALANCE_TYPE_FR: + pa_cvolume_set_fade (&cv, pa_map, val); + break; + case BALANCE_TYPE_LFE: + gvc_pa_cvolume_set_position (&cv, pa_map, PA_CHANNEL_POSITION_LFE, val); + break; + } + + gvc_channel_map_volume_changed (bar->priv->channel_map, &cv, TRUE); +} + +static void +gvc_balance_bar_init (GvcBalanceBar *bar) +{ + bar->priv = GVC_BALANCE_BAR_GET_PRIVATE (bar); +} + +static void +gvc_balance_bar_finalize (GObject *object) +{ + GvcBalanceBar *bar; + + g_return_if_fail (object != NULL); + g_return_if_fail (GVC_IS_BALANCE_BAR (object)); + + bar = GVC_BALANCE_BAR (object); + + g_return_if_fail (bar->priv != NULL); + + if (bar->priv->channel_map != NULL) { + g_signal_handlers_disconnect_by_func (G_OBJECT (bar->priv->channel_map), + on_channel_map_volume_changed, bar); + g_object_unref (bar->priv->channel_map); + } + + G_OBJECT_CLASS (gvc_balance_bar_parent_class)->finalize (object); +} + +GtkWidget * +gvc_balance_bar_new (const GvcChannelMap *channel_map, GvcBalanceType btype) +{ + GObject *bar; + bar = g_object_new (GVC_TYPE_BALANCE_BAR, + "channel-map", channel_map, + "balance-type", btype, + NULL); + return GTK_WIDGET (bar); +} diff --git a/mate-volume-control/src/gvc-balance-bar.h b/mate-volume-control/src/gvc-balance-bar.h new file mode 100644 index 0000000..95e96dc --- /dev/null +++ b/mate-volume-control/src/gvc-balance-bar.h @@ -0,0 +1,69 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*- + * + * Copyright (C) 2008 Red Hat, Inc. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + */ + +#ifndef __GVC_BALANCE_BAR_H +#define __GVC_BALANCE_BAR_H + +#include <glib-object.h> + +#include "gvc-channel-map.h" + +G_BEGIN_DECLS + +#define GVC_TYPE_BALANCE_BAR (gvc_balance_bar_get_type ()) +#define GVC_BALANCE_BAR(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), GVC_TYPE_BALANCE_BAR, GvcBalanceBar)) +#define GVC_BALANCE_BAR_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), GVC_TYPE_BALANCE_BAR, GvcBalanceBarClass)) +#define GVC_IS_BALANCE_BAR(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GVC_TYPE_BALANCE_BAR)) +#define GVC_IS_BALANCE_BAR_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), GVC_TYPE_BALANCE_BAR)) +#define GVC_BALANCE_BAR_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), GVC_TYPE_BALANCE_BAR, GvcBalanceBarClass)) + +typedef enum { + BALANCE_TYPE_RL, + BALANCE_TYPE_FR, + BALANCE_TYPE_LFE, +} GvcBalanceType; + +#define NUM_BALANCE_TYPES BALANCE_TYPE_LFE + 1 + +typedef struct GvcBalanceBarPrivate GvcBalanceBarPrivate; + +typedef struct +{ + GtkHBox parent; + GvcBalanceBarPrivate *priv; +} GvcBalanceBar; + +typedef struct +{ + GtkHBoxClass parent_class; +} GvcBalanceBarClass; + +GType gvc_balance_bar_get_type (void); + +GtkWidget * gvc_balance_bar_new (const GvcChannelMap *map, + GvcBalanceType btype); + +void gvc_balance_bar_set_size_group (GvcBalanceBar *bar, + GtkSizeGroup *group, + gboolean symmetric); + +G_END_DECLS + +#endif /* __GVC_BALANCE_BAR_H */ diff --git a/mate-volume-control/src/gvc-channel-bar.c b/mate-volume-control/src/gvc-channel-bar.c new file mode 100644 index 0000000..d750871 --- /dev/null +++ b/mate-volume-control/src/gvc-channel-bar.c @@ -0,0 +1,930 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*- + * + * Copyright (C) 2008 William Jon McCann + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + */ + +#include "config.h" + +#include <stdlib.h> +#include <stdio.h> +#include <unistd.h> + +#include <pulse/pulseaudio.h> + +#include <glib.h> +#include <glib/gi18n.h> +#include <gtk/gtk.h> +#include <canberra-gtk.h> + +#include "gvc-channel-bar.h" + +#define SCALE_SIZE 128 +#define ADJUSTMENT_MAX_NORMAL 65536.0 /* PA_VOLUME_NORM */ +#define ADJUSTMENT_MAX_AMPLIFIED 98304.0 /* 1.5 * ADJUSTMENT_MAX_NORMAL */ +#define ADJUSTMENT_MAX (bar->priv->is_amplified ? ADJUSTMENT_MAX_AMPLIFIED : ADJUSTMENT_MAX_NORMAL) +#define SCROLLSTEP (ADJUSTMENT_MAX / 100.0 * 5.0) + +#define GVC_CHANNEL_BAR_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GVC_TYPE_CHANNEL_BAR, GvcChannelBarPrivate)) + +struct GvcChannelBarPrivate +{ + GtkOrientation orientation; + GtkWidget *scale_box; + GtkWidget *start_box; + GtkWidget *end_box; + GtkWidget *image; + GtkWidget *label; + GtkWidget *low_image; + GtkWidget *scale; + GtkWidget *high_image; + GtkWidget *mute_box; + GtkWidget *mute_button; + GtkAdjustment *adjustment; + GtkAdjustment *zero_adjustment; + gboolean show_mute; + gboolean is_muted; + char *name; + char *icon_name; + char *low_icon_name; + char *high_icon_name; + GtkSizeGroup *size_group; + gboolean symmetric; + gboolean click_lock; + gboolean is_amplified; + guint32 base_volume; +}; + +enum +{ + PROP_0, + PROP_ORIENTATION, + PROP_SHOW_MUTE, + PROP_IS_MUTED, + PROP_ADJUSTMENT, + PROP_NAME, + PROP_ICON_NAME, + PROP_LOW_ICON_NAME, + PROP_HIGH_ICON_NAME, + PROP_IS_AMPLIFIED, +}; + +static void gvc_channel_bar_class_init (GvcChannelBarClass *klass); +static void gvc_channel_bar_init (GvcChannelBar *channel_bar); +static void gvc_channel_bar_finalize (GObject *object); + +static gboolean on_scale_button_press_event (GtkWidget *widget, + GdkEventButton *event, + GvcChannelBar *bar); +static gboolean on_scale_button_release_event (GtkWidget *widget, + GdkEventButton *event, + GvcChannelBar *bar); +static gboolean on_scale_scroll_event (GtkWidget *widget, + GdkEventScroll *event, + GvcChannelBar *bar); + +G_DEFINE_TYPE (GvcChannelBar, gvc_channel_bar, GTK_TYPE_HBOX) + +static GtkWidget * +_scale_box_new (GvcChannelBar *bar) +{ + GvcChannelBarPrivate *priv = bar->priv; + GtkWidget *box; + GtkWidget *sbox; + GtkWidget *ebox; + + if (priv->orientation == GTK_ORIENTATION_VERTICAL) { + bar->priv->scale_box = box = gtk_vbox_new (FALSE, 6); + + priv->scale = gtk_vscale_new (priv->adjustment); + + gtk_widget_set_size_request (priv->scale, -1, SCALE_SIZE); + gtk_range_set_inverted (GTK_RANGE (priv->scale), TRUE); + + bar->priv->start_box = sbox = gtk_vbox_new (FALSE, 6); + gtk_box_pack_start (GTK_BOX (box), sbox, FALSE, FALSE, 0); + + gtk_box_pack_start (GTK_BOX (sbox), priv->image, FALSE, FALSE, 0); + gtk_box_pack_start (GTK_BOX (sbox), priv->label, FALSE, FALSE, 0); + + gtk_box_pack_start (GTK_BOX (sbox), priv->high_image, FALSE, FALSE, 0); + gtk_widget_hide (priv->high_image); + gtk_box_pack_start (GTK_BOX (box), priv->scale, TRUE, TRUE, 0); + + bar->priv->end_box = ebox = gtk_vbox_new (FALSE, 6); + gtk_box_pack_start (GTK_BOX (box), ebox, FALSE, FALSE, 0); + + gtk_box_pack_start (GTK_BOX (ebox), priv->low_image, FALSE, FALSE, 0); + gtk_widget_hide (priv->low_image); + + gtk_box_pack_start (GTK_BOX (ebox), priv->mute_box, FALSE, FALSE, 0); + } else { + bar->priv->scale_box = box = gtk_hbox_new (FALSE, 6); + + priv->scale = gtk_hscale_new (priv->adjustment); + + gtk_widget_set_size_request (priv->scale, SCALE_SIZE, -1); + + bar->priv->start_box = sbox = gtk_hbox_new (FALSE, 6); + gtk_box_pack_start (GTK_BOX (box), sbox, FALSE, FALSE, 0); + + gtk_box_pack_end (GTK_BOX (sbox), priv->low_image, FALSE, FALSE, 0); + gtk_widget_show (priv->low_image); + + gtk_box_pack_start (GTK_BOX (sbox), priv->image, FALSE, FALSE, 0); + gtk_box_pack_start (GTK_BOX (sbox), priv->label, FALSE, FALSE, 0); + gtk_box_pack_start (GTK_BOX (box), priv->scale, TRUE, TRUE, 0); + + bar->priv->end_box = ebox = gtk_hbox_new (FALSE, 6); + gtk_box_pack_start (GTK_BOX (box), ebox, FALSE, FALSE, 0); + + gtk_box_pack_start (GTK_BOX (ebox), priv->high_image, FALSE, FALSE, 0); + gtk_widget_show (priv->high_image); + gtk_box_pack_start (GTK_BOX (ebox), priv->mute_box, FALSE, FALSE, 0); + } + + gtk_range_set_update_policy (GTK_RANGE (priv->scale), GTK_UPDATE_CONTINUOUS); + ca_gtk_widget_disable_sounds (bar->priv->scale, FALSE); + gtk_widget_add_events (bar->priv->scale, GDK_SCROLL_MASK); + + g_signal_connect (G_OBJECT (bar->priv->scale), "button-press-event", + G_CALLBACK (on_scale_button_press_event), bar); + g_signal_connect (G_OBJECT (bar->priv->scale), "button-release-event", + G_CALLBACK (on_scale_button_release_event), bar); + g_signal_connect (G_OBJECT (bar->priv->scale), "scroll-event", + G_CALLBACK (on_scale_scroll_event), bar); + + if (bar->priv->size_group != NULL) { + gtk_size_group_add_widget (bar->priv->size_group, sbox); + + if (bar->priv->symmetric) { + gtk_size_group_add_widget (bar->priv->size_group, ebox); + } + } + + gtk_scale_set_draw_value (GTK_SCALE (priv->scale), FALSE); + + return box; +} + +static void +update_image (GvcChannelBar *bar) +{ + gtk_image_set_from_icon_name (GTK_IMAGE (bar->priv->image), + bar->priv->icon_name, + GTK_ICON_SIZE_DIALOG); + + if (bar->priv->icon_name != NULL) { + gtk_widget_show (bar->priv->image); + } else { + gtk_widget_hide (bar->priv->image); + } +} + +static void +update_label (GvcChannelBar *bar) +{ + if (bar->priv->name != NULL) { + gtk_label_set_text_with_mnemonic (GTK_LABEL (bar->priv->label), + bar->priv->name); + gtk_label_set_mnemonic_widget (GTK_LABEL (bar->priv->label), + bar->priv->scale); + gtk_widget_show (bar->priv->label); + } else { + gtk_label_set_text (GTK_LABEL (bar->priv->label), NULL); + gtk_widget_hide (bar->priv->label); + } +} + +static void +update_layout (GvcChannelBar *bar) +{ + GtkWidget *box; + GtkWidget *frame; + + if (bar->priv->scale == NULL) { + return; + } + + box = bar->priv->scale_box; + frame = gtk_widget_get_parent (box); + + g_object_ref (bar->priv->image); + g_object_ref (bar->priv->label); + g_object_ref (bar->priv->mute_box); + g_object_ref (bar->priv->low_image); + g_object_ref (bar->priv->high_image); + + gtk_container_remove (GTK_CONTAINER (bar->priv->start_box), bar->priv->image); + gtk_container_remove (GTK_CONTAINER (bar->priv->start_box), bar->priv->label); + gtk_container_remove (GTK_CONTAINER (bar->priv->end_box), bar->priv->mute_box); + + if (bar->priv->orientation == GTK_ORIENTATION_VERTICAL) { + gtk_container_remove (GTK_CONTAINER (bar->priv->start_box), bar->priv->low_image); + gtk_container_remove (GTK_CONTAINER (bar->priv->end_box), bar->priv->high_image); + } else { + gtk_container_remove (GTK_CONTAINER (bar->priv->end_box), bar->priv->low_image); + gtk_container_remove (GTK_CONTAINER (bar->priv->start_box), bar->priv->high_image); + } + + gtk_container_remove (GTK_CONTAINER (box), bar->priv->start_box); + gtk_container_remove (GTK_CONTAINER (box), bar->priv->scale); + gtk_container_remove (GTK_CONTAINER (box), bar->priv->end_box); + gtk_container_remove (GTK_CONTAINER (frame), box); + + bar->priv->scale_box = _scale_box_new (bar); + gtk_container_add (GTK_CONTAINER (frame), bar->priv->scale_box); + + g_object_unref (bar->priv->image); + g_object_unref (bar->priv->label); + g_object_unref (bar->priv->mute_box); + g_object_unref (bar->priv->low_image); + g_object_unref (bar->priv->high_image); + + gtk_widget_show_all (frame); +} + +void +gvc_channel_bar_set_size_group (GvcChannelBar *bar, + GtkSizeGroup *group, + gboolean symmetric) +{ + g_return_if_fail (GVC_IS_CHANNEL_BAR (bar)); + + bar->priv->size_group = group; + bar->priv->symmetric = symmetric; + + if (bar->priv->size_group != NULL) { + gtk_size_group_add_widget (bar->priv->size_group, + bar->priv->start_box); + + if (bar->priv->symmetric) { + gtk_size_group_add_widget (bar->priv->size_group, + bar->priv->end_box); + } + } + gtk_widget_queue_draw (GTK_WIDGET (bar)); +} + +void +gvc_channel_bar_set_name (GvcChannelBar *bar, + const char *name) +{ + g_return_if_fail (GVC_IS_CHANNEL_BAR (bar)); + + g_free (bar->priv->name); + bar->priv->name = g_strdup (name); + update_label (bar); + g_object_notify (G_OBJECT (bar), "name"); +} + +void +gvc_channel_bar_set_icon_name (GvcChannelBar *bar, + const char *name) +{ + g_return_if_fail (GVC_IS_CHANNEL_BAR (bar)); + + g_free (bar->priv->icon_name); + bar->priv->icon_name = g_strdup (name); + update_image (bar); + g_object_notify (G_OBJECT (bar), "icon-name"); +} + +void +gvc_channel_bar_set_low_icon_name (GvcChannelBar *bar, + const char *name) +{ + g_return_if_fail (GVC_IS_CHANNEL_BAR (bar)); + + if (name != NULL && strcmp (bar->priv->low_icon_name, name) != 0) { + g_free (bar->priv->low_icon_name); + bar->priv->low_icon_name = g_strdup (name); + gtk_image_set_from_icon_name (GTK_IMAGE (bar->priv->low_image), + bar->priv->low_icon_name, + GTK_ICON_SIZE_BUTTON); + g_object_notify (G_OBJECT (bar), "low-icon-name"); + } +} + +void +gvc_channel_bar_set_high_icon_name (GvcChannelBar *bar, + const char *name) +{ + g_return_if_fail (GVC_IS_CHANNEL_BAR (bar)); + + if (name != NULL && strcmp (bar->priv->high_icon_name, name) != 0) { + g_free (bar->priv->high_icon_name); + bar->priv->high_icon_name = g_strdup (name); + gtk_image_set_from_icon_name (GTK_IMAGE (bar->priv->high_image), + bar->priv->high_icon_name, + GTK_ICON_SIZE_BUTTON); + g_object_notify (G_OBJECT (bar), "high-icon-name"); + } +} + +void +gvc_channel_bar_set_orientation (GvcChannelBar *bar, + GtkOrientation orientation) +{ + g_return_if_fail (GVC_IS_CHANNEL_BAR (bar)); + + if (orientation != bar->priv->orientation) { + bar->priv->orientation = orientation; + update_layout (bar); + g_object_notify (G_OBJECT (bar), "orientation"); + } +} + +static void +gvc_channel_bar_set_adjustment (GvcChannelBar *bar, + GtkAdjustment *adjustment) +{ + g_return_if_fail (GVC_CHANNEL_BAR (bar)); + g_return_if_fail (GTK_IS_ADJUSTMENT (adjustment)); + + if (bar->priv->adjustment != NULL) { + g_object_unref (bar->priv->adjustment); + } + bar->priv->adjustment = g_object_ref_sink (adjustment); + + if (bar->priv->scale != NULL) { + gtk_range_set_adjustment (GTK_RANGE (bar->priv->scale), adjustment); + } + + g_object_notify (G_OBJECT (bar), "adjustment"); +} + +GtkAdjustment * +gvc_channel_bar_get_adjustment (GvcChannelBar *bar) +{ + g_return_val_if_fail (GVC_IS_CHANNEL_BAR (bar), NULL); + + return bar->priv->adjustment; +} + +static gboolean +on_scale_button_press_event (GtkWidget *widget, + GdkEventButton *event, + GvcChannelBar *bar) +{ + /* HACK: we want the behaviour you get with the middle button, so we + * mangle the event. clicking with other buttons moves the slider in + * step increments, clicking with the middle button moves the slider to + * the location of the click. + */ + if (event->button == 1) + event->button = 2; + + bar->priv->click_lock = TRUE; + + return FALSE; +} + +static gboolean +on_scale_button_release_event (GtkWidget *widget, + GdkEventButton *event, + GvcChannelBar *bar) +{ + GtkAdjustment *adj; + gdouble value; + + /* HACK: see on_scale_button_press_event() */ + if (event->button == 1) + event->button = 2; + + bar->priv->click_lock = FALSE; + + adj = gtk_range_get_adjustment (GTK_RANGE (widget)); + + value = gtk_adjustment_get_value (adj); + + /* this means the adjustment moved away from zero and + * therefore we should unmute and set the volume. */ + gvc_channel_bar_set_is_muted (bar, (value == 0.0)); + + /* Play a sound! */ + ca_gtk_play_for_widget (GTK_WIDGET (bar), 0, + CA_PROP_EVENT_ID, "audio-volume-change", + CA_PROP_EVENT_DESCRIPTION, "foobar event happened", + CA_PROP_APPLICATION_ID, "org.mate.VolumeControl", + NULL); + + return FALSE; +} + +gboolean +gvc_channel_bar_scroll (GvcChannelBar *bar, GdkScrollDirection direction) +{ + GtkAdjustment *adj; + gdouble value; + + g_return_val_if_fail (bar != NULL, FALSE); + g_return_val_if_fail (GVC_IS_CHANNEL_BAR (bar), FALSE); + + if (bar->priv->orientation == GTK_ORIENTATION_VERTICAL) { + if (direction != GDK_SCROLL_UP && direction != GDK_SCROLL_DOWN) + return FALSE; + } else { + /* Switch direction for RTL */ + if (gtk_widget_get_direction (GTK_WIDGET (bar)) == GTK_TEXT_DIR_RTL) { + if (direction == GDK_SCROLL_RIGHT) + direction = GDK_SCROLL_LEFT; + else if (direction == GDK_SCROLL_LEFT) + direction = GDK_SCROLL_RIGHT; + } + /* Switch side scroll to vertical */ + if (direction == GDK_SCROLL_RIGHT) + direction = GDK_SCROLL_UP; + else if (GDK_SCROLL_LEFT) + direction = GDK_SCROLL_DOWN; + } + + adj = gtk_range_get_adjustment (GTK_RANGE (bar->priv->scale)); + if (adj == bar->priv->zero_adjustment) { + if (direction == GDK_SCROLL_UP) + gvc_channel_bar_set_is_muted (bar, FALSE); + return TRUE; + } + + value = gtk_adjustment_get_value (adj); + + if (direction == GDK_SCROLL_UP) { + if (value + SCROLLSTEP > ADJUSTMENT_MAX) + value = ADJUSTMENT_MAX; + else + value = value + SCROLLSTEP; + } else if (direction == GDK_SCROLL_DOWN) { + if (value - SCROLLSTEP < 0) + value = 0.0; + else + value = value - SCROLLSTEP; + } + + gvc_channel_bar_set_is_muted (bar, (value == 0.0)); + adj = gtk_range_get_adjustment (GTK_RANGE (bar->priv->scale)); + gtk_adjustment_set_value (adj, value); + + return TRUE; +} + +static gboolean +on_scale_scroll_event (GtkWidget *widget, + GdkEventScroll *event, + GvcChannelBar *bar) +{ + return gvc_channel_bar_scroll (bar, event->direction); +} + +static void +on_zero_adjustment_value_changed (GtkAdjustment *adjustment, + GvcChannelBar *bar) +{ + gdouble value; + + if (bar->priv->click_lock != FALSE) { + return; + } + + value = gtk_adjustment_get_value (bar->priv->zero_adjustment); + gtk_adjustment_set_value (bar->priv->adjustment, value); + + + if (bar->priv->show_mute == FALSE) { + /* this means the adjustment moved away from zero and + * therefore we should unmute and set the volume. */ + gvc_channel_bar_set_is_muted (bar, value > 0.0); + } +} + +static void +update_mute_button (GvcChannelBar *bar) +{ + if (bar->priv->show_mute) { + gtk_widget_show (bar->priv->mute_button); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (bar->priv->mute_button), + bar->priv->is_muted); + } else { + gtk_widget_hide (bar->priv->mute_button); + + if (bar->priv->is_muted) { + /* If we aren't showing the mute button then + * move slider to the zero. But we don't want to + * change the adjustment. */ + g_signal_handlers_block_by_func (bar->priv->zero_adjustment, + on_zero_adjustment_value_changed, + bar); + gtk_adjustment_set_value (bar->priv->zero_adjustment, 0); + g_signal_handlers_unblock_by_func (bar->priv->zero_adjustment, + on_zero_adjustment_value_changed, + bar); + gtk_range_set_adjustment (GTK_RANGE (bar->priv->scale), + bar->priv->zero_adjustment); + } else { + /* no longer muted so restore the original adjustment + * and tell the front-end that the value changed */ + gtk_range_set_adjustment (GTK_RANGE (bar->priv->scale), + bar->priv->adjustment); + gtk_adjustment_value_changed (bar->priv->adjustment); + } + } +} + +void +gvc_channel_bar_set_is_muted (GvcChannelBar *bar, + gboolean is_muted) +{ + g_return_if_fail (GVC_IS_CHANNEL_BAR (bar)); + + if (is_muted != bar->priv->is_muted) { + /* Update our internal state before telling the + * front-end about our changes */ + bar->priv->is_muted = is_muted; + update_mute_button (bar); + g_object_notify (G_OBJECT (bar), "is-muted"); + } +} + +gboolean +gvc_channel_bar_get_is_muted (GvcChannelBar *bar) +{ + g_return_val_if_fail (GVC_IS_CHANNEL_BAR (bar), FALSE); + return bar->priv->is_muted; +} + +void +gvc_channel_bar_set_show_mute (GvcChannelBar *bar, + gboolean show_mute) +{ + g_return_if_fail (GVC_IS_CHANNEL_BAR (bar)); + + if (show_mute != bar->priv->show_mute) { + bar->priv->show_mute = show_mute; + g_object_notify (G_OBJECT (bar), "show-mute"); + update_mute_button (bar); + } +} + +gboolean +gvc_channel_bar_get_show_mute (GvcChannelBar *bar) +{ + g_return_val_if_fail (GVC_IS_CHANNEL_BAR (bar), FALSE); + return bar->priv->show_mute; +} + +void +gvc_channel_bar_set_is_amplified (GvcChannelBar *bar, gboolean amplified) +{ + g_return_if_fail (GVC_IS_CHANNEL_BAR (bar)); + + bar->priv->is_amplified = amplified; + gtk_adjustment_set_upper (bar->priv->adjustment, ADJUSTMENT_MAX); + gtk_adjustment_set_upper (bar->priv->zero_adjustment, ADJUSTMENT_MAX); + gtk_scale_clear_marks (GTK_SCALE (bar->priv->scale)); + + if (amplified) { + char *str; + + if (bar->priv->base_volume == ADJUSTMENT_MAX_NORMAL) { + str = g_strdup_printf ("<small>%s</small>", C_("volume", "100%")); + gtk_scale_add_mark (GTK_SCALE (bar->priv->scale), ADJUSTMENT_MAX_NORMAL, + GTK_POS_BOTTOM, str); + } else { + str = g_strdup_printf ("<small>%s</small>", C_("volume", "Unamplified")); + gtk_scale_add_mark (GTK_SCALE (bar->priv->scale), bar->priv->base_volume, + GTK_POS_BOTTOM, str); + /* Only show 100% if it's higher than the base volume */ + if (bar->priv->base_volume < ADJUSTMENT_MAX_NORMAL) { + str = g_strdup_printf ("<small>%s</small>", C_("volume", "100%")); + gtk_scale_add_mark (GTK_SCALE (bar->priv->scale), ADJUSTMENT_MAX_NORMAL, + GTK_POS_BOTTOM, str); + } + } + + g_free (str); + gtk_alignment_set (GTK_ALIGNMENT (bar->priv->mute_box), 0.5, 0, 0, 0); + gtk_misc_set_alignment (GTK_MISC (bar->priv->low_image), 0.5, 0); + gtk_misc_set_alignment (GTK_MISC (bar->priv->high_image), 0.5, 0); + gtk_misc_set_alignment (GTK_MISC (bar->priv->label), 0, 0); + } else { + gtk_alignment_set (GTK_ALIGNMENT (bar->priv->mute_box), 0.5, 0.5, 0, 0); + gtk_misc_set_alignment (GTK_MISC (bar->priv->low_image), 0.5, 0.5); + gtk_misc_set_alignment (GTK_MISC (bar->priv->high_image), 0.5, 0.5); + gtk_misc_set_alignment (GTK_MISC (bar->priv->label), 0, 0.5); + } +} + +void +gvc_channel_bar_set_base_volume (GvcChannelBar *bar, + pa_volume_t base_volume) +{ + g_return_if_fail (GVC_IS_CHANNEL_BAR (bar)); + + if (base_volume == 0) { + bar->priv->base_volume = ADJUSTMENT_MAX_NORMAL; + return; + } + + /* Note that you need to call _is_amplified() afterwards to update the marks */ + bar->priv->base_volume = base_volume; +} + +static void +gvc_channel_bar_set_property (GObject *object, + guint prop_id, + const GValue *value, + GParamSpec *pspec) +{ + GvcChannelBar *self = GVC_CHANNEL_BAR (object); + + switch (prop_id) { + case PROP_ORIENTATION: + gvc_channel_bar_set_orientation (self, g_value_get_enum (value)); + break; + case PROP_IS_MUTED: + gvc_channel_bar_set_is_muted (self, g_value_get_boolean (value)); + break; + case PROP_SHOW_MUTE: + gvc_channel_bar_set_show_mute (self, g_value_get_boolean (value)); + break; + case PROP_NAME: + gvc_channel_bar_set_name (self, g_value_get_string (value)); + break; + case PROP_ICON_NAME: + gvc_channel_bar_set_icon_name (self, g_value_get_string (value)); + break; + case PROP_LOW_ICON_NAME: + gvc_channel_bar_set_low_icon_name (self, g_value_get_string (value)); + break; + case PROP_HIGH_ICON_NAME: + gvc_channel_bar_set_high_icon_name (self, g_value_get_string (value)); + break; + case PROP_ADJUSTMENT: + gvc_channel_bar_set_adjustment (self, g_value_get_object (value)); + break; + case PROP_IS_AMPLIFIED: + gvc_channel_bar_set_is_amplified (self, g_value_get_boolean (value)); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; + } +} + +static void +gvc_channel_bar_get_property (GObject *object, + guint prop_id, + GValue *value, + GParamSpec *pspec) +{ + GvcChannelBar *self = GVC_CHANNEL_BAR (object); + GvcChannelBarPrivate *priv = self->priv; + + switch (prop_id) { + case PROP_ORIENTATION: + g_value_set_enum (value, priv->orientation); + break; + case PROP_IS_MUTED: + g_value_set_boolean (value, priv->is_muted); + break; + case PROP_SHOW_MUTE: + g_value_set_boolean (value, priv->show_mute); + break; + case PROP_NAME: + g_value_set_string (value, priv->name); + break; + case PROP_ICON_NAME: + g_value_set_string (value, priv->icon_name); + break; + case PROP_LOW_ICON_NAME: + g_value_set_string (value, priv->low_icon_name); + break; + case PROP_HIGH_ICON_NAME: + g_value_set_string (value, priv->high_icon_name); + break; + case PROP_ADJUSTMENT: + g_value_set_object (value, gvc_channel_bar_get_adjustment (self)); + break; + case PROP_IS_AMPLIFIED: + g_value_set_boolean (value, priv->is_amplified); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; + } +} + +static GObject * +gvc_channel_bar_constructor (GType type, + guint n_construct_properties, + GObjectConstructParam *construct_params) +{ + GObject *object; + GvcChannelBar *self; + + object = G_OBJECT_CLASS (gvc_channel_bar_parent_class)->constructor (type, n_construct_properties, construct_params); + + self = GVC_CHANNEL_BAR (object); + + update_mute_button (self); + + return object; +} + +static void +gvc_channel_bar_class_init (GvcChannelBarClass *klass) +{ + GObjectClass *object_class = G_OBJECT_CLASS (klass); + + object_class->constructor = gvc_channel_bar_constructor; + object_class->finalize = gvc_channel_bar_finalize; + object_class->set_property = gvc_channel_bar_set_property; + object_class->get_property = gvc_channel_bar_get_property; + + g_object_class_install_property (object_class, + PROP_ORIENTATION, + g_param_spec_enum ("orientation", + "Orientation", + "The orientation of the scale", + GTK_TYPE_ORIENTATION, + GTK_ORIENTATION_VERTICAL, + G_PARAM_READWRITE)); + g_object_class_install_property (object_class, + PROP_IS_MUTED, + g_param_spec_boolean ("is-muted", + "is muted", + "Whether stream is muted", + FALSE, + G_PARAM_READWRITE|G_PARAM_CONSTRUCT)); + g_object_class_install_property (object_class, + PROP_SHOW_MUTE, + g_param_spec_boolean ("show-mute", + "show mute", + "Whether stream is muted", + FALSE, + G_PARAM_READWRITE|G_PARAM_CONSTRUCT)); + + g_object_class_install_property (object_class, + PROP_ADJUSTMENT, + g_param_spec_object ("adjustment", + "Adjustment", + "The GtkAdjustment that contains the current value of this scale button object", + GTK_TYPE_ADJUSTMENT, + G_PARAM_READWRITE)); + g_object_class_install_property (object_class, + PROP_NAME, + g_param_spec_string ("name", + "Name", + "Name to display for this stream", + NULL, + G_PARAM_READWRITE|G_PARAM_CONSTRUCT)); + g_object_class_install_property (object_class, + PROP_ICON_NAME, + g_param_spec_string ("icon-name", + "Icon Name", + "Name of icon to display for this stream", + NULL, + G_PARAM_READWRITE|G_PARAM_CONSTRUCT)); + g_object_class_install_property (object_class, + PROP_LOW_ICON_NAME, + g_param_spec_string ("low-icon-name", + "Icon Name", + "Name of icon to display for this stream", + "audio-volume-low", + G_PARAM_READWRITE|G_PARAM_CONSTRUCT)); + g_object_class_install_property (object_class, + PROP_HIGH_ICON_NAME, + g_param_spec_string ("high-icon-name", + "Icon Name", + "Name of icon to display for this stream", + "audio-volume-high", + G_PARAM_READWRITE|G_PARAM_CONSTRUCT)); + g_object_class_install_property (object_class, + PROP_IS_AMPLIFIED, + g_param_spec_boolean ("is-amplified", + "is amplified", + "Whether the stream is digitally amplified", + FALSE, + G_PARAM_READWRITE|G_PARAM_CONSTRUCT)); + + g_type_class_add_private (klass, sizeof (GvcChannelBarPrivate)); +} + +static void +on_mute_button_toggled (GtkToggleButton *button, + GvcChannelBar *bar) +{ + gboolean is_muted; + is_muted = gtk_toggle_button_get_active (button); + gvc_channel_bar_set_is_muted (bar, is_muted); +} + +static void +gvc_channel_bar_init (GvcChannelBar *bar) +{ + GtkWidget *frame; + + bar->priv = GVC_CHANNEL_BAR_GET_PRIVATE (bar); + + bar->priv->base_volume = ADJUSTMENT_MAX_NORMAL; + bar->priv->low_icon_name = g_strdup ("audio-volume-low"); + bar->priv->high_icon_name = g_strdup ("audio-volume-high"); + + bar->priv->orientation = GTK_ORIENTATION_VERTICAL; + bar->priv->adjustment = GTK_ADJUSTMENT (gtk_adjustment_new (0.0, + 0.0, + ADJUSTMENT_MAX_NORMAL, + ADJUSTMENT_MAX_NORMAL/100.0, + ADJUSTMENT_MAX_NORMAL/10.0, + 0.0)); + g_object_ref_sink (bar->priv->adjustment); + + bar->priv->zero_adjustment = GTK_ADJUSTMENT (gtk_adjustment_new (0.0, + 0.0, + ADJUSTMENT_MAX_NORMAL, + ADJUSTMENT_MAX_NORMAL/100.0, + ADJUSTMENT_MAX_NORMAL/10.0, + 0.0)); + g_object_ref_sink (bar->priv->zero_adjustment); + + g_signal_connect (bar->priv->zero_adjustment, + "value-changed", + G_CALLBACK (on_zero_adjustment_value_changed), + bar); + + bar->priv->mute_button = gtk_check_button_new_with_label (_("Mute")); + gtk_widget_set_no_show_all (bar->priv->mute_button, TRUE); + g_signal_connect (bar->priv->mute_button, + "toggled", + G_CALLBACK (on_mute_button_toggled), + bar); + bar->priv->mute_box = gtk_alignment_new (0.5, 0.5, 0, 0); + gtk_container_add (GTK_CONTAINER (bar->priv->mute_box), bar->priv->mute_button); + + bar->priv->low_image = gtk_image_new_from_icon_name ("audio-volume-low", + GTK_ICON_SIZE_BUTTON); + gtk_widget_set_no_show_all (bar->priv->low_image, TRUE); + bar->priv->high_image = gtk_image_new_from_icon_name ("audio-volume-high", + GTK_ICON_SIZE_BUTTON); + gtk_widget_set_no_show_all (bar->priv->high_image, TRUE); + + bar->priv->image = gtk_image_new (); + gtk_widget_set_no_show_all (bar->priv->image, TRUE); + + bar->priv->label = gtk_label_new (NULL); + gtk_misc_set_alignment (GTK_MISC (bar->priv->label), 0.0, 0.5); + gtk_widget_set_no_show_all (bar->priv->label, TRUE); + + /* frame */ + frame = gtk_frame_new (NULL); + gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_NONE); + gtk_container_add (GTK_CONTAINER (bar), frame); + gtk_widget_show_all (frame); + + /* box with scale */ + bar->priv->scale_box = _scale_box_new (bar); + + gtk_container_add (GTK_CONTAINER (frame), bar->priv->scale_box); +} + +static void +gvc_channel_bar_finalize (GObject *object) +{ + GvcChannelBar *channel_bar; + + g_return_if_fail (object != NULL); + g_return_if_fail (GVC_IS_CHANNEL_BAR (object)); + + channel_bar = GVC_CHANNEL_BAR (object); + + g_return_if_fail (channel_bar->priv != NULL); + + g_free (channel_bar->priv->name); + g_free (channel_bar->priv->icon_name); + g_free (channel_bar->priv->low_icon_name); + g_free (channel_bar->priv->high_icon_name); + + G_OBJECT_CLASS (gvc_channel_bar_parent_class)->finalize (object); +} + +GtkWidget * +gvc_channel_bar_new (void) +{ + GObject *bar; + bar = g_object_new (GVC_TYPE_CHANNEL_BAR, + NULL); + return GTK_WIDGET (bar); +} diff --git a/mate-volume-control/src/gvc-channel-bar.h b/mate-volume-control/src/gvc-channel-bar.h new file mode 100644 index 0000000..d405038 --- /dev/null +++ b/mate-volume-control/src/gvc-channel-bar.h @@ -0,0 +1,86 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*- + * + * Copyright (C) 2008 Red Hat, Inc. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + */ + +#ifndef __GVC_CHANNEL_BAR_H +#define __GVC_CHANNEL_BAR_H + +#include <glib-object.h> + +G_BEGIN_DECLS + +#define GVC_TYPE_CHANNEL_BAR (gvc_channel_bar_get_type ()) +#define GVC_CHANNEL_BAR(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), GVC_TYPE_CHANNEL_BAR, GvcChannelBar)) +#define GVC_CHANNEL_BAR_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), GVC_TYPE_CHANNEL_BAR, GvcChannelBarClass)) +#define GVC_IS_CHANNEL_BAR(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GVC_TYPE_CHANNEL_BAR)) +#define GVC_IS_CHANNEL_BAR_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), GVC_TYPE_CHANNEL_BAR)) +#define GVC_CHANNEL_BAR_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), GVC_TYPE_CHANNEL_BAR, GvcChannelBarClass)) + +typedef struct GvcChannelBarPrivate GvcChannelBarPrivate; + +typedef struct +{ + GtkHBox parent; + GvcChannelBarPrivate *priv; +} GvcChannelBar; + +typedef struct +{ + GtkHBoxClass parent_class; +} GvcChannelBarClass; + +GType gvc_channel_bar_get_type (void); + +GtkWidget * gvc_channel_bar_new (void); + +void gvc_channel_bar_set_name (GvcChannelBar *bar, + const char *name); +void gvc_channel_bar_set_icon_name (GvcChannelBar *bar, + const char *icon_name); +void gvc_channel_bar_set_low_icon_name (GvcChannelBar *bar, + const char *icon_name); +void gvc_channel_bar_set_high_icon_name (GvcChannelBar *bar, + const char *icon_name); + +void gvc_channel_bar_set_orientation (GvcChannelBar *bar, + GtkOrientation orientation); +GtkOrientation gvc_channel_bar_get_orientation (GvcChannelBar *bar); + +GtkAdjustment * gvc_channel_bar_get_adjustment (GvcChannelBar *bar); + +gboolean gvc_channel_bar_get_is_muted (GvcChannelBar *bar); +void gvc_channel_bar_set_is_muted (GvcChannelBar *bar, + gboolean is_muted); +gboolean gvc_channel_bar_get_show_mute (GvcChannelBar *bar); +void gvc_channel_bar_set_show_mute (GvcChannelBar *bar, + gboolean show_mute); +void gvc_channel_bar_set_size_group (GvcChannelBar *bar, + GtkSizeGroup *group, + gboolean symmetric); +void gvc_channel_bar_set_is_amplified (GvcChannelBar *bar, + gboolean amplified); +void gvc_channel_bar_set_base_volume (GvcChannelBar *bar, + guint32 base_volume); + +gboolean gvc_channel_bar_scroll (GvcChannelBar *bar, + GdkScrollDirection direction); + +G_END_DECLS + +#endif /* __GVC_CHANNEL_BAR_H */ diff --git a/mate-volume-control/src/gvc-channel-map.c b/mate-volume-control/src/gvc-channel-map.c new file mode 100644 index 0000000..a7a412c --- /dev/null +++ b/mate-volume-control/src/gvc-channel-map.c @@ -0,0 +1,245 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*- + * + * Copyright (C) 2008 William Jon McCann + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + */ + +#include "config.h" + +#include <stdlib.h> +#include <stdio.h> +#include <unistd.h> + +#include <glib.h> +#include <glib/gi18n.h> + +#include <pulse/pulseaudio.h> + +#include "gvc-channel-map.h" + +#define GVC_CHANNEL_MAP_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GVC_TYPE_CHANNEL_MAP, GvcChannelMapPrivate)) + +struct GvcChannelMapPrivate +{ + pa_channel_map pa_map; + gboolean pa_volume_is_set; + pa_cvolume pa_volume; + gdouble extern_volume[NUM_TYPES]; /* volume, balance, fade, lfe */ + gboolean can_balance; + gboolean can_fade; +}; + +enum { + VOLUME_CHANGED, + LAST_SIGNAL +}; + +static guint signals [LAST_SIGNAL] = { 0, }; + +static void gvc_channel_map_class_init (GvcChannelMapClass *klass); +static void gvc_channel_map_init (GvcChannelMap *channel_map); +static void gvc_channel_map_finalize (GObject *object); + +G_DEFINE_TYPE (GvcChannelMap, gvc_channel_map, G_TYPE_OBJECT) + +guint +gvc_channel_map_get_num_channels (const GvcChannelMap *map) +{ + g_return_val_if_fail (GVC_IS_CHANNEL_MAP (map), 0); + + if (!pa_channel_map_valid(&map->priv->pa_map)) + return 0; + + return map->priv->pa_map.channels; +} + +const gdouble * +gvc_channel_map_get_volume (GvcChannelMap *map) +{ + g_return_val_if_fail (GVC_IS_CHANNEL_MAP (map), NULL); + + if (!pa_channel_map_valid(&map->priv->pa_map)) + return NULL; + + map->priv->extern_volume[VOLUME] = (gdouble) pa_cvolume_max (&map->priv->pa_volume); + if (gvc_channel_map_can_balance (map)) + map->priv->extern_volume[BALANCE] = (gdouble) pa_cvolume_get_balance (&map->priv->pa_volume, &map->priv->pa_map); + else + map->priv->extern_volume[BALANCE] = 0; + if (gvc_channel_map_can_fade (map)) + map->priv->extern_volume[FADE] = (gdouble) pa_cvolume_get_fade (&map->priv->pa_volume, &map->priv->pa_map); + else + map->priv->extern_volume[FADE] = 0; + if (gvc_channel_map_has_lfe (map)) + map->priv->extern_volume[LFE] = (gdouble) pa_cvolume_get_position (&map->priv->pa_volume, &map->priv->pa_map, PA_CHANNEL_POSITION_LFE); + else + map->priv->extern_volume[LFE] = 0; + + return map->priv->extern_volume; +} + +gboolean +gvc_channel_map_can_balance (const GvcChannelMap *map) +{ + g_return_val_if_fail (GVC_IS_CHANNEL_MAP (map), FALSE); + + return map->priv->can_balance; +} + +gboolean +gvc_channel_map_can_fade (const GvcChannelMap *map) +{ + g_return_val_if_fail (GVC_IS_CHANNEL_MAP (map), FALSE); + + return map->priv->can_fade; +} + +const char * +gvc_channel_map_get_mapping (const GvcChannelMap *map) +{ + g_return_val_if_fail (GVC_IS_CHANNEL_MAP (map), NULL); + + if (!pa_channel_map_valid(&map->priv->pa_map)) + return NULL; + + return pa_channel_map_to_pretty_name (&map->priv->pa_map); +} + +gboolean +gvc_channel_map_has_position (const GvcChannelMap *map, + pa_channel_position_t position) +{ + g_return_val_if_fail (GVC_IS_CHANNEL_MAP (map), FALSE); + + return pa_channel_map_has_position (&(map->priv->pa_map), position); +} + +const pa_channel_map * +gvc_channel_map_get_pa_channel_map (const GvcChannelMap *map) +{ + g_return_val_if_fail (GVC_IS_CHANNEL_MAP (map), NULL); + + if (!pa_channel_map_valid(&map->priv->pa_map)) + return NULL; + + return &map->priv->pa_map; +} + +const pa_cvolume * +gvc_channel_map_get_cvolume (const GvcChannelMap *map) +{ + g_return_val_if_fail (GVC_IS_CHANNEL_MAP (map), NULL); + + if (!pa_channel_map_valid(&map->priv->pa_map)) + return NULL; + + return &map->priv->pa_volume; +} + +static void +gvc_channel_map_class_init (GvcChannelMapClass *klass) +{ + GObjectClass *gobject_class = G_OBJECT_CLASS (klass); + + gobject_class->finalize = gvc_channel_map_finalize; + + signals [VOLUME_CHANGED] = + g_signal_new ("volume-changed", + G_TYPE_FROM_CLASS (klass), + G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET (GvcChannelMapClass, volume_changed), + NULL, NULL, + g_cclosure_marshal_VOID__BOOLEAN, + G_TYPE_NONE, 1, G_TYPE_BOOLEAN); + + g_type_class_add_private (klass, sizeof (GvcChannelMapPrivate)); +} + +void +gvc_channel_map_volume_changed (GvcChannelMap *map, + const pa_cvolume *cv, + gboolean set) +{ + g_return_if_fail (GVC_IS_CHANNEL_MAP (map)); + g_return_if_fail (cv != NULL); + g_return_if_fail (pa_cvolume_compatible_with_channel_map(cv, &map->priv->pa_map)); + + if (pa_cvolume_equal(cv, &map->priv->pa_volume)) + return; + + map->priv->pa_volume = *cv; + + if (map->priv->pa_volume_is_set == FALSE) { + map->priv->pa_volume_is_set = TRUE; + return; + } + g_signal_emit (map, signals[VOLUME_CHANGED], 0, set); +} + +static void +gvc_channel_map_init (GvcChannelMap *map) +{ + map->priv = GVC_CHANNEL_MAP_GET_PRIVATE (map); + map->priv->pa_volume_is_set = FALSE; +} + +static void +gvc_channel_map_finalize (GObject *object) +{ + GvcChannelMap *channel_map; + + g_return_if_fail (object != NULL); + g_return_if_fail (GVC_IS_CHANNEL_MAP (object)); + + channel_map = GVC_CHANNEL_MAP (object); + + g_return_if_fail (channel_map->priv != NULL); + + G_OBJECT_CLASS (gvc_channel_map_parent_class)->finalize (object); +} + +GvcChannelMap * +gvc_channel_map_new (void) +{ + GObject *map; + map = g_object_new (GVC_TYPE_CHANNEL_MAP, NULL); + return GVC_CHANNEL_MAP (map); +} + +static void +set_from_pa_map (GvcChannelMap *map, + const pa_channel_map *pa_map) +{ + g_assert (pa_channel_map_valid(pa_map)); + + map->priv->can_balance = pa_channel_map_can_balance (pa_map); + map->priv->can_fade = pa_channel_map_can_fade (pa_map); + + map->priv->pa_map = *pa_map; + pa_cvolume_set(&map->priv->pa_volume, pa_map->channels, PA_VOLUME_NORM); +} + +GvcChannelMap * +gvc_channel_map_new_from_pa_channel_map (const pa_channel_map *pa_map) +{ + GObject *map; + map = g_object_new (GVC_TYPE_CHANNEL_MAP, NULL); + + set_from_pa_map (GVC_CHANNEL_MAP (map), pa_map); + + return GVC_CHANNEL_MAP (map); +} diff --git a/mate-volume-control/src/gvc-channel-map.h b/mate-volume-control/src/gvc-channel-map.h new file mode 100644 index 0000000..a149ee3 --- /dev/null +++ b/mate-volume-control/src/gvc-channel-map.h @@ -0,0 +1,81 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*- + * + * Copyright (C) 2008 Red Hat, Inc. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + */ + +#ifndef __GVC_CHANNEL_MAP_H +#define __GVC_CHANNEL_MAP_H + +#include <glib-object.h> +#include <pulse/pulseaudio.h> + +G_BEGIN_DECLS + +#define GVC_TYPE_CHANNEL_MAP (gvc_channel_map_get_type ()) +#define GVC_CHANNEL_MAP(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), GVC_TYPE_CHANNEL_MAP, GvcChannelMap)) +#define GVC_CHANNEL_MAP_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), GVC_TYPE_CHANNEL_MAP, GvcChannelMapClass)) +#define GVC_IS_CHANNEL_MAP(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GVC_TYPE_CHANNEL_MAP)) +#define GVC_IS_CHANNEL_MAP_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), GVC_TYPE_CHANNEL_MAP)) +#define GVC_CHANNEL_MAP_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), GVC_TYPE_CHANNEL_MAP, GvcChannelMapClass)) + +typedef struct GvcChannelMapPrivate GvcChannelMapPrivate; + +typedef struct +{ + GObject parent; + GvcChannelMapPrivate *priv; +} GvcChannelMap; + +typedef struct +{ + GObjectClass parent_class; + void (*volume_changed) (GvcChannelMap *channel_map, gboolean set); +} GvcChannelMapClass; + +enum { + VOLUME, + BALANCE, + FADE, + LFE, +}; + +#define NUM_TYPES LFE + 1 + +GType gvc_channel_map_get_type (void); + +GvcChannelMap * gvc_channel_map_new (void); +GvcChannelMap * gvc_channel_map_new_from_pa_channel_map (const pa_channel_map *map); +guint gvc_channel_map_get_num_channels (const GvcChannelMap *map); +const gdouble * gvc_channel_map_get_volume (GvcChannelMap *map); +gboolean gvc_channel_map_can_balance (const GvcChannelMap *map); +gboolean gvc_channel_map_can_fade (const GvcChannelMap *map); +gboolean gvc_channel_map_has_position (const GvcChannelMap *map, + pa_channel_position_t position); +#define gvc_channel_map_has_lfe(x) gvc_channel_map_has_position (x, PA_CHANNEL_POSITION_LFE) + +void gvc_channel_map_volume_changed (GvcChannelMap *map, + const pa_cvolume *cv, + gboolean set); +const char * gvc_channel_map_get_mapping (const GvcChannelMap *map); + +/* private */ +const pa_cvolume * gvc_channel_map_get_cvolume (const GvcChannelMap *map); +const pa_channel_map * gvc_channel_map_get_pa_channel_map (const GvcChannelMap *map); +G_END_DECLS + +#endif /* __GVC_CHANNEL_MAP_H */ diff --git a/mate-volume-control/src/gvc-combo-box.c b/mate-volume-control/src/gvc-combo-box.c new file mode 100644 index 0000000..5e0d82c --- /dev/null +++ b/mate-volume-control/src/gvc-combo-box.c @@ -0,0 +1,394 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*- + * + * Copyright (C) 2009 Bastien Nocera + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + */ + +#include "config.h" + +#include <stdlib.h> +#include <stdio.h> +#include <unistd.h> + +#include <glib.h> +#include <glib/gi18n.h> +#include <gtk/gtk.h> +#include <canberra-gtk.h> + +#include "gvc-combo-box.h" +#include "gvc-mixer-stream.h" +#include "gvc-mixer-card.h" + +#define GVC_COMBO_BOX_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GVC_TYPE_COMBO_BOX, GvcComboBoxPrivate)) + +struct GvcComboBoxPrivate +{ + GtkWidget *drop_box; + GtkWidget *start_box; + GtkWidget *end_box; + GtkWidget *label; + GtkWidget *button; + GtkTreeModel *model; + GtkWidget *combobox; + gboolean set_called; + GtkSizeGroup *size_group; + gboolean symmetric; +}; + +enum { + COL_NAME, + COL_HUMAN_NAME, + NUM_COLS +}; + +enum { + CHANGED, + BUTTON_CLICKED, + LAST_SIGNAL +}; + +enum { + PROP_0, + PROP_LABEL, + PROP_SHOW_BUTTON, + PROP_BUTTON_LABEL +}; + +static guint signals [LAST_SIGNAL] = { 0, }; + +static void gvc_combo_box_class_init (GvcComboBoxClass *klass); +static void gvc_combo_box_init (GvcComboBox *combo_box); +static void gvc_combo_box_finalize (GObject *object); + +G_DEFINE_TYPE (GvcComboBox, gvc_combo_box, GTK_TYPE_HBOX) + +void +gvc_combo_box_set_size_group (GvcComboBox *combo_box, + GtkSizeGroup *group, + gboolean symmetric) +{ + g_return_if_fail (GVC_IS_COMBO_BOX (combo_box)); + + combo_box->priv->size_group = group; + combo_box->priv->symmetric = symmetric; + + if (combo_box->priv->size_group != NULL) { + gtk_size_group_add_widget (combo_box->priv->size_group, + combo_box->priv->start_box); + + if (combo_box->priv->symmetric) { + gtk_size_group_add_widget (combo_box->priv->size_group, + combo_box->priv->end_box); + } + } + gtk_widget_queue_draw (GTK_WIDGET (combo_box)); +} + +static void +gvc_combo_box_set_property (GObject *object, + guint prop_id, + const GValue *value, + GParamSpec *pspec) +{ + GvcComboBox *self = GVC_COMBO_BOX (object); + + switch (prop_id) { + case PROP_LABEL: + gtk_label_set_text_with_mnemonic (GTK_LABEL (self->priv->label), g_value_get_string (value)); + break; + case PROP_BUTTON_LABEL: + gtk_button_set_label (GTK_BUTTON (self->priv->button), g_value_get_string (value)); + break; + case PROP_SHOW_BUTTON: + gtk_widget_set_visible (self->priv->button, g_value_get_boolean (value)); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; + } +} + +static void +gvc_combo_box_get_property (GObject *object, + guint prop_id, + GValue *value, + GParamSpec *pspec) +{ + GvcComboBox *self = GVC_COMBO_BOX (object); + + switch (prop_id) { + case PROP_LABEL: + g_value_set_string (value, + gtk_label_get_text (GTK_LABEL (self->priv->label))); + break; + case PROP_BUTTON_LABEL: + g_value_set_string (value, + gtk_button_get_label (GTK_BUTTON (self->priv->button))); + break; + case PROP_SHOW_BUTTON: + g_value_set_boolean (value, + gtk_widget_get_visible (self->priv->button)); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; + } +} + +static void +gvc_combo_box_class_init (GvcComboBoxClass *klass) +{ + GObjectClass *object_class = G_OBJECT_CLASS (klass); + + object_class->finalize = gvc_combo_box_finalize; + object_class->set_property = gvc_combo_box_set_property; + object_class->get_property = gvc_combo_box_get_property; + + g_object_class_install_property (object_class, + PROP_LABEL, + g_param_spec_string ("label", + "label", + "The combo box label", + _("_Profile:"), + G_PARAM_READWRITE|G_PARAM_CONSTRUCT)); + g_object_class_install_property (object_class, + PROP_SHOW_BUTTON, + g_param_spec_boolean ("show-button", + "show-button", + "Whether to show the button", + FALSE, + G_PARAM_READWRITE|G_PARAM_CONSTRUCT)); + g_object_class_install_property (object_class, + PROP_BUTTON_LABEL, + g_param_spec_string ("button-label", + "button-label", + "The button's label", + "APPLICATION BUG", + G_PARAM_READWRITE|G_PARAM_CONSTRUCT)); + signals [CHANGED] = + g_signal_new ("changed", + G_TYPE_FROM_CLASS (klass), + G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET (GvcComboBoxClass, changed), + NULL, NULL, + g_cclosure_marshal_VOID__STRING, + G_TYPE_NONE, 1, G_TYPE_STRING); + signals [BUTTON_CLICKED] = + g_signal_new ("button-clicked", + G_TYPE_FROM_CLASS (klass), + G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET (GvcComboBoxClass, button_clicked), + NULL, NULL, + g_cclosure_marshal_VOID__VOID, + G_TYPE_NONE, 0, G_TYPE_NONE); + + g_type_class_add_private (klass, sizeof (GvcComboBoxPrivate)); +} + +void +gvc_combo_box_set_profiles (GvcComboBox *combo_box, + const GList *profiles) +{ + const GList *l; + + g_return_if_fail (GVC_IS_COMBO_BOX (combo_box)); + g_return_if_fail (combo_box->priv->set_called == FALSE); + + for (l = profiles; l != NULL; l = l->next) { + GvcMixerCardProfile *p = l->data; + + gtk_list_store_insert_with_values (GTK_LIST_STORE (combo_box->priv->model), + NULL, + G_MAXINT, + COL_NAME, p->profile, + COL_HUMAN_NAME, p->human_profile, + -1); + } + combo_box->priv->set_called = TRUE; +} + +void +gvc_combo_box_set_ports (GvcComboBox *combo_box, + const GList *ports) +{ + const GList *l; + + g_return_if_fail (GVC_IS_COMBO_BOX (combo_box)); + g_return_if_fail (combo_box->priv->set_called == FALSE); + + for (l = ports; l != NULL; l = l->next) { + GvcMixerStreamPort *p = l->data; + + gtk_list_store_insert_with_values (GTK_LIST_STORE (combo_box->priv->model), + NULL, + G_MAXINT, + COL_NAME, p->port, + COL_HUMAN_NAME, p->human_port, + -1); + } + combo_box->priv->set_called = TRUE; +} + +void +gvc_combo_box_set_active (GvcComboBox *combo_box, + const char *id) +{ + GtkTreeIter iter; + gboolean cont; + + cont = gtk_tree_model_get_iter_first (combo_box->priv->model, &iter); + while (cont != FALSE) { + char *name; + + gtk_tree_model_get (combo_box->priv->model, &iter, + COL_NAME, &name, + -1); + if (g_strcmp0 (name, id) == 0) { + gtk_combo_box_set_active_iter (GTK_COMBO_BOX (combo_box->priv->combobox), &iter); + return; + } + gtk_tree_model_iter_next (combo_box->priv->model, &iter); + } + g_warning ("Could not find id '%s' in combo box", id); +} + +static void +on_combo_box_changed (GtkComboBox *widget, + GvcComboBox *combo_box) +{ + GtkTreeIter iter; + char *profile; + + if (gtk_combo_box_get_active_iter (GTK_COMBO_BOX (widget), &iter) == FALSE) { + g_warning ("Could not find an active profile or port"); + return; + } + + gtk_tree_model_get (combo_box->priv->model, &iter, + COL_NAME, &profile, + -1); + g_signal_emit (combo_box, signals[CHANGED], 0, profile); + g_free (profile); +} + +static void +on_combo_box_button_clicked (GtkButton *button, + GvcComboBox *combo_box) +{ + g_signal_emit (combo_box, signals[BUTTON_CLICKED], 0); +} + +static void +gvc_combo_box_init (GvcComboBox *combo_box) +{ + GtkWidget *frame; + GtkWidget *box; + GtkWidget *sbox; + GtkWidget *ebox; + GtkCellRenderer *renderer; + + + combo_box->priv = GVC_COMBO_BOX_GET_PRIVATE (combo_box); + + combo_box->priv->model = GTK_TREE_MODEL (gtk_list_store_new (NUM_COLS, + G_TYPE_STRING, + G_TYPE_STRING)); + + combo_box->priv->label = gtk_label_new (NULL); + gtk_misc_set_alignment (GTK_MISC (combo_box->priv->label), + 0.0, + 0.5); + + /* frame */ + frame = gtk_frame_new (NULL); + gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_NONE); + gtk_container_add (GTK_CONTAINER (combo_box), frame); + + combo_box->priv->drop_box = box = gtk_hbox_new (FALSE, 6); + combo_box->priv->combobox = gtk_combo_box_new_with_model (combo_box->priv->model); + renderer = gtk_cell_renderer_text_new (); + gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (combo_box->priv->combobox), + renderer, FALSE); + gtk_cell_layout_add_attribute (GTK_CELL_LAYOUT (combo_box->priv->combobox), + renderer, + "text", COL_HUMAN_NAME); + +/* gtk_widget_set_size_request (combo_box->priv->combobox, 128, -1); */ + + combo_box->priv->start_box = sbox = gtk_hbox_new (FALSE, 6); + gtk_box_pack_start (GTK_BOX (box), sbox, FALSE, FALSE, 0); + + gtk_box_pack_start (GTK_BOX (sbox), combo_box->priv->label, FALSE, FALSE, 0); + + gtk_box_pack_start (GTK_BOX (box), combo_box->priv->combobox, TRUE, TRUE, 0); + + combo_box->priv->button = gtk_button_new_with_label ("APPLICATION BUG"); + gtk_widget_set_no_show_all (combo_box->priv->button, TRUE); + gtk_box_pack_start (GTK_BOX (box), combo_box->priv->button, FALSE, FALSE, 0); + + + combo_box->priv->end_box = ebox = gtk_hbox_new (FALSE, 6); + gtk_box_pack_start (GTK_BOX (box), ebox, FALSE, FALSE, 0); + + if (combo_box->priv->size_group != NULL) { + gtk_size_group_add_widget (combo_box->priv->size_group, sbox); + + if (combo_box->priv->symmetric) { + gtk_size_group_add_widget (combo_box->priv->size_group, ebox); + } + } + + gtk_container_add (GTK_CONTAINER (frame), combo_box->priv->drop_box); + gtk_widget_show_all (frame); + + gtk_label_set_mnemonic_widget (GTK_LABEL (combo_box->priv->label), + combo_box->priv->combobox); + + g_signal_connect (G_OBJECT (combo_box->priv->combobox), "changed", + G_CALLBACK (on_combo_box_changed), combo_box); + g_signal_connect (G_OBJECT (combo_box->priv->button), "clicked", + G_CALLBACK (on_combo_box_button_clicked), combo_box); +} + +static void +gvc_combo_box_finalize (GObject *object) +{ + GvcComboBox *combo_box; + + g_return_if_fail (object != NULL); + g_return_if_fail (GVC_IS_COMBO_BOX (object)); + + combo_box = GVC_COMBO_BOX (object); + + g_return_if_fail (combo_box->priv != NULL); + + g_object_unref (combo_box->priv->model); + combo_box->priv->model = NULL; + + G_OBJECT_CLASS (gvc_combo_box_parent_class)->finalize (object); +} + +GtkWidget * +gvc_combo_box_new (const char *label) +{ + GObject *combo_box; + combo_box = g_object_new (GVC_TYPE_COMBO_BOX, + "label", label, + NULL); + return GTK_WIDGET (combo_box); +} + diff --git a/mate-volume-control/src/gvc-combo-box.h b/mate-volume-control/src/gvc-combo-box.h new file mode 100644 index 0000000..f1ffc0d --- /dev/null +++ b/mate-volume-control/src/gvc-combo-box.h @@ -0,0 +1,67 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*- + * + * Copyright (C) 2009 Red Hat, Inc. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + */ + +#ifndef __GVC_COMBO_BOX_H +#define __GVC_COMBO_BOX_H + +#include <glib-object.h> + +G_BEGIN_DECLS + +#define GVC_TYPE_COMBO_BOX (gvc_combo_box_get_type ()) +#define GVC_COMBO_BOX(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), GVC_TYPE_COMBO_BOX, GvcComboBox)) +#define GVC_COMBO_BOX_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), GVC_TYPE_COMBO_BOX, GvcComboBoxClass)) +#define GVC_IS_COMBO_BOX(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GVC_TYPE_COMBO_BOX)) +#define GVC_IS_COMBO_BOX_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), GVC_TYPE_COMBO_BOX)) +#define GVC_COMBO_BOX_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), GVC_TYPE_COMBO_BOX, GvcComboBoxClass)) + +typedef struct GvcComboBoxPrivate GvcComboBoxPrivate; + +typedef struct +{ + GtkHBox parent; + GvcComboBoxPrivate *priv; +} GvcComboBox; + +typedef struct +{ + GtkHBoxClass parent_class; + void (* changed) (GvcComboBox *combobox, const char *name); + void (* button_clicked) (GvcComboBox *combobox); +} GvcComboBoxClass; + +GType gvc_combo_box_get_type (void); + +GtkWidget * gvc_combo_box_new (const char *label); + +void gvc_combo_box_set_size_group (GvcComboBox *combo_box, + GtkSizeGroup *group, + gboolean symmetric); + +void gvc_combo_box_set_profiles (GvcComboBox *combo_box, + const GList *profiles); +void gvc_combo_box_set_ports (GvcComboBox *combo_box, + const GList *ports); +void gvc_combo_box_set_active (GvcComboBox *combo_box, + const char *id); + +G_END_DECLS + +#endif /* __GVC_COMBO_BOX_H */ diff --git a/mate-volume-control/src/gvc-level-bar.c b/mate-volume-control/src/gvc-level-bar.c new file mode 100644 index 0000000..12e2f1f --- /dev/null +++ b/mate-volume-control/src/gvc-level-bar.c @@ -0,0 +1,753 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*- + * + * Copyright (C) 2008 William Jon McCann <[email protected]> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + */ + +#include "config.h" + +#include <stdlib.h> +#include <stdio.h> +#include <unistd.h> +#include <math.h> + +#include <glib.h> +#include <glib/gi18n.h> +#include <gtk/gtk.h> + +#include "gvc-level-bar.h" + +#define NUM_BOXES 15 + +#define GVC_LEVEL_BAR_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GVC_TYPE_LEVEL_BAR, GvcLevelBarPrivate)) + +#define MIN_HORIZONTAL_BAR_WIDTH 150 +#define HORIZONTAL_BAR_HEIGHT 6 +#define VERTICAL_BAR_WIDTH 6 +#define MIN_VERTICAL_BAR_HEIGHT 400 + +typedef struct { + int peak_num; + int max_peak_num; + + GdkRectangle area; + int delta; + int box_width; + int box_height; + int box_radius; + double bg_r; + double bg_g; + double bg_b; + double bdr_r; + double bdr_g; + double bdr_b; + double fl_r; + double fl_g; + double fl_b; +} LevelBarLayout; + +struct GvcLevelBarPrivate +{ + GtkOrientation orientation; + GtkAdjustment *peak_adjustment; + GtkAdjustment *rms_adjustment; + int scale; + gdouble peak_fraction; + gdouble rms_fraction; + gdouble max_peak; + guint max_peak_id; + LevelBarLayout layout; +}; + +enum +{ + PROP_0, + PROP_PEAK_ADJUSTMENT, + PROP_RMS_ADJUSTMENT, + PROP_SCALE, + PROP_ORIENTATION, +}; + +static void gvc_level_bar_class_init (GvcLevelBarClass *klass); +static void gvc_level_bar_init (GvcLevelBar *level_bar); +static void gvc_level_bar_finalize (GObject *object); + +G_DEFINE_TYPE (GvcLevelBar, gvc_level_bar, GTK_TYPE_HBOX) + +#define check_rectangle(rectangle1, rectangle2) \ + { \ + if (rectangle1.x != rectangle2.x) return TRUE; \ + if (rectangle1.y != rectangle2.y) return TRUE; \ + if (rectangle1.width != rectangle2.width) return TRUE; \ + if (rectangle1.height != rectangle2.height) return TRUE; \ + } + +static gboolean +layout_changed (LevelBarLayout *layout1, + LevelBarLayout *layout2) +{ + check_rectangle (layout1->area, layout2->area); + if (layout1->delta != layout2->delta) return TRUE; + if (layout1->peak_num != layout2->peak_num) return TRUE; + if (layout1->max_peak_num != layout2->max_peak_num) return TRUE; + if (layout1->bg_r != layout2->bg_r + || layout1->bg_g != layout2->bg_g + || layout1->bg_b != layout2->bg_b) + return TRUE; + if (layout1->bdr_r != layout2->bdr_r + || layout1->bdr_g != layout2->bdr_g + || layout1->bdr_b != layout2->bdr_b) + return TRUE; + if (layout1->fl_r != layout2->fl_r + || layout1->fl_g != layout2->fl_g + || layout1->fl_b != layout2->fl_b) + return TRUE; + + return FALSE; +} + +static gdouble +fraction_from_adjustment (GvcLevelBar *bar, + GtkAdjustment *adjustment) +{ + gdouble level; + gdouble fraction; + gdouble min; + gdouble max; + + level = gtk_adjustment_get_value (adjustment); + + min = gtk_adjustment_get_lower (adjustment); + max = gtk_adjustment_get_upper (adjustment); + + switch (bar->priv->scale) { + case GVC_LEVEL_SCALE_LINEAR: + fraction = (level - min) / (max - min); + break; + case GVC_LEVEL_SCALE_LOG: + fraction = log10 ((level - min + 1) / (max - min + 1)); + break; + default: + g_assert_not_reached (); + } + + return fraction; +} + +static gboolean +reset_max_peak (GvcLevelBar *bar) +{ + gdouble min; + + min = gtk_adjustment_get_lower (bar->priv->peak_adjustment); + bar->priv->max_peak = min; + bar->priv->layout.max_peak_num = 0; + gtk_widget_queue_draw (GTK_WIDGET (bar)); + bar->priv->max_peak_id = 0; + return FALSE; +} + +static void +bar_calc_layout (GvcLevelBar *bar) +{ + GdkColor color; + int peak_level; + int max_peak_level; + GtkAllocation allocation; + GtkStyle *style; + + gtk_widget_get_allocation (GTK_WIDGET (bar), &allocation); + bar->priv->layout.area.width = allocation.width - 2; + bar->priv->layout.area.height = allocation.height - 2; + + style = gtk_widget_get_style (GTK_WIDGET (bar)); + color = style->bg [GTK_STATE_NORMAL]; + bar->priv->layout.bg_r = (float)color.red / 65535.0; + bar->priv->layout.bg_g = (float)color.green / 65535.0; + bar->priv->layout.bg_b = (float)color.blue / 65535.0; + color = style->dark [GTK_STATE_NORMAL]; + bar->priv->layout.bdr_r = (float)color.red / 65535.0; + bar->priv->layout.bdr_g = (float)color.green / 65535.0; + bar->priv->layout.bdr_b = (float)color.blue / 65535.0; + color = style->bg [GTK_STATE_SELECTED]; + bar->priv->layout.fl_r = (float)color.red / 65535.0; + bar->priv->layout.fl_g = (float)color.green / 65535.0; + bar->priv->layout.fl_b = (float)color.blue / 65535.0; + + if (bar->priv->orientation == GTK_ORIENTATION_VERTICAL) { + peak_level = bar->priv->peak_fraction * bar->priv->layout.area.height; + max_peak_level = bar->priv->max_peak * bar->priv->layout.area.height; + + bar->priv->layout.delta = bar->priv->layout.area.height / NUM_BOXES; + bar->priv->layout.area.x = 0; + bar->priv->layout.area.y = 0; + bar->priv->layout.box_height = bar->priv->layout.delta / 2; + bar->priv->layout.box_width = bar->priv->layout.area.width; + bar->priv->layout.box_radius = bar->priv->layout.box_width / 2; + } else { + peak_level = bar->priv->peak_fraction * bar->priv->layout.area.width; + max_peak_level = bar->priv->max_peak * bar->priv->layout.area.width; + + bar->priv->layout.delta = bar->priv->layout.area.width / NUM_BOXES; + bar->priv->layout.area.x = 0; + bar->priv->layout.area.y = 0; + bar->priv->layout.box_width = bar->priv->layout.delta / 2; + bar->priv->layout.box_height = bar->priv->layout.area.height; + bar->priv->layout.box_radius = bar->priv->layout.box_height / 2; + } + + bar->priv->layout.peak_num = peak_level / bar->priv->layout.delta; + bar->priv->layout.max_peak_num = max_peak_level / bar->priv->layout.delta; +} + +static void +update_peak_value (GvcLevelBar *bar) +{ + gdouble val; + LevelBarLayout layout; + + layout = bar->priv->layout; + + val = fraction_from_adjustment (bar, bar->priv->peak_adjustment); + bar->priv->peak_fraction = val; + + if (val > bar->priv->max_peak) { + if (bar->priv->max_peak_id > 0) { + g_source_remove (bar->priv->max_peak_id); + } + bar->priv->max_peak_id = g_timeout_add_seconds (1, (GSourceFunc)reset_max_peak, bar); + bar->priv->max_peak = val; + } + + bar_calc_layout (bar); + + if (layout_changed (&bar->priv->layout, &layout)) { + gtk_widget_queue_draw (GTK_WIDGET (bar)); + } +} + +static void +update_rms_value (GvcLevelBar *bar) +{ + gdouble val; + + val = fraction_from_adjustment (bar, bar->priv->rms_adjustment); + bar->priv->rms_fraction = val; +} + +GtkOrientation +gvc_level_bar_get_orientation (GvcLevelBar *bar) +{ + g_return_val_if_fail (GVC_IS_LEVEL_BAR (bar), 0); + return bar->priv->orientation; +} + +void +gvc_level_bar_set_orientation (GvcLevelBar *bar, + GtkOrientation orientation) +{ + g_return_if_fail (GVC_IS_LEVEL_BAR (bar)); + + if (orientation != bar->priv->orientation) { + bar->priv->orientation = orientation; + gtk_widget_queue_draw (GTK_WIDGET (bar)); + g_object_notify (G_OBJECT (bar), "orientation"); + } +} + +static void +on_peak_adjustment_value_changed (GtkAdjustment *adjustment, + GvcLevelBar *bar) +{ + update_peak_value (bar); +} + +static void +on_rms_adjustment_value_changed (GtkAdjustment *adjustment, + GvcLevelBar *bar) +{ + update_rms_value (bar); +} + +void +gvc_level_bar_set_peak_adjustment (GvcLevelBar *bar, + GtkAdjustment *adjustment) +{ + g_return_if_fail (GVC_LEVEL_BAR (bar)); + g_return_if_fail (GTK_IS_ADJUSTMENT (adjustment)); + + if (bar->priv->peak_adjustment != NULL) { + g_signal_handlers_disconnect_by_func (bar->priv->peak_adjustment, + G_CALLBACK (on_peak_adjustment_value_changed), + bar); + g_object_unref (bar->priv->peak_adjustment); + } + + bar->priv->peak_adjustment = g_object_ref_sink (adjustment); + + g_signal_connect (bar->priv->peak_adjustment, + "value-changed", + G_CALLBACK (on_peak_adjustment_value_changed), + bar); + + update_peak_value (bar); + + g_object_notify (G_OBJECT (bar), "peak-adjustment"); +} + +void +gvc_level_bar_set_rms_adjustment (GvcLevelBar *bar, + GtkAdjustment *adjustment) +{ + g_return_if_fail (GVC_LEVEL_BAR (bar)); + g_return_if_fail (GTK_IS_ADJUSTMENT (adjustment)); + + if (bar->priv->rms_adjustment != NULL) { + g_signal_handlers_disconnect_by_func (bar->priv->peak_adjustment, + G_CALLBACK (on_rms_adjustment_value_changed), + bar); + g_object_unref (bar->priv->rms_adjustment); + } + + bar->priv->rms_adjustment = g_object_ref_sink (adjustment); + + + g_signal_connect (bar->priv->peak_adjustment, + "value-changed", + G_CALLBACK (on_peak_adjustment_value_changed), + bar); + + update_rms_value (bar); + + g_object_notify (G_OBJECT (bar), "rms-adjustment"); +} + +GtkAdjustment * +gvc_level_bar_get_peak_adjustment (GvcLevelBar *bar) +{ + g_return_val_if_fail (GVC_IS_LEVEL_BAR (bar), NULL); + + return bar->priv->peak_adjustment; +} + +GtkAdjustment * +gvc_level_bar_get_rms_adjustment (GvcLevelBar *bar) +{ + g_return_val_if_fail (GVC_IS_LEVEL_BAR (bar), NULL); + + return bar->priv->rms_adjustment; +} + +void +gvc_level_bar_set_scale (GvcLevelBar *bar, + GvcLevelScale scale) +{ + g_return_if_fail (GVC_IS_LEVEL_BAR (bar)); + + if (scale != bar->priv->scale) { + bar->priv->scale = scale; + + update_peak_value (bar); + update_rms_value (bar); + + g_object_notify (G_OBJECT (bar), "scale"); + } +} + +static void +gvc_level_bar_set_property (GObject *object, + guint prop_id, + const GValue *value, + GParamSpec *pspec) +{ + GvcLevelBar *self = GVC_LEVEL_BAR (object); + + switch (prop_id) { + case PROP_SCALE: + gvc_level_bar_set_scale (self, g_value_get_int (value)); + break; + case PROP_ORIENTATION: + gvc_level_bar_set_orientation (self, g_value_get_enum (value)); + break; + case PROP_PEAK_ADJUSTMENT: + gvc_level_bar_set_peak_adjustment (self, g_value_get_object (value)); + break; + case PROP_RMS_ADJUSTMENT: + gvc_level_bar_set_rms_adjustment (self, g_value_get_object (value)); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; + } +} + +static void +gvc_level_bar_get_property (GObject *object, + guint prop_id, + GValue *value, + GParamSpec *pspec) +{ + GvcLevelBar *self = GVC_LEVEL_BAR (object); + + switch (prop_id) { + case PROP_SCALE: + g_value_set_int (value, self->priv->scale); + break; + case PROP_ORIENTATION: + g_value_set_enum (value, self->priv->orientation); + break; + case PROP_PEAK_ADJUSTMENT: + g_value_set_object (value, self->priv->peak_adjustment); + break; + case PROP_RMS_ADJUSTMENT: + g_value_set_object (value, self->priv->rms_adjustment); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; + } +} + +static GObject * +gvc_level_bar_constructor (GType type, + guint n_construct_properties, + GObjectConstructParam *construct_params) +{ + return G_OBJECT_CLASS (gvc_level_bar_parent_class)->constructor (type, n_construct_properties, construct_params); +} + +static void +gvc_level_bar_size_request (GtkWidget *widget, + GtkRequisition *requisition) +{ + GvcLevelBar *bar; + + g_return_if_fail (GVC_IS_LEVEL_BAR (widget)); + g_return_if_fail (requisition != NULL); + + bar = GVC_LEVEL_BAR (widget); + + switch (bar->priv->orientation) { + case GTK_ORIENTATION_VERTICAL: + requisition->width = VERTICAL_BAR_WIDTH; + requisition->height = MIN_VERTICAL_BAR_HEIGHT; + break; + case GTK_ORIENTATION_HORIZONTAL: + requisition->width = MIN_HORIZONTAL_BAR_WIDTH; + requisition->height = HORIZONTAL_BAR_HEIGHT; + break; + default: + g_assert_not_reached (); + break; + } +} + +static void +gvc_level_bar_size_allocate (GtkWidget *widget, + GtkAllocation *allocation) +{ + GvcLevelBar *bar; + + g_return_if_fail (GVC_IS_LEVEL_BAR (widget)); + g_return_if_fail (allocation != NULL); + + bar = GVC_LEVEL_BAR (widget); + + /* FIXME: add height property, labels, etc */ + GTK_WIDGET_CLASS (gvc_level_bar_parent_class)->size_allocate (widget, allocation); + + gtk_widget_set_allocation (widget, allocation); + gtk_widget_get_allocation (widget, allocation); + + if (bar->priv->orientation == GTK_ORIENTATION_VERTICAL) { + allocation->height = MIN (allocation->height, MIN_VERTICAL_BAR_HEIGHT); + allocation->width = MAX (allocation->width, VERTICAL_BAR_WIDTH); + } else { + allocation->width = MIN (allocation->width, MIN_HORIZONTAL_BAR_WIDTH); + allocation->height = MAX (allocation->height, HORIZONTAL_BAR_HEIGHT); + } + + bar_calc_layout (bar); +} + +static void +curved_rectangle (cairo_t *cr, + double x0, + double y0, + double width, + double height, + double radius) +{ + double x1; + double y1; + + x1 = x0 + width; + y1 = y0 + height; + + if (!width || !height) { + return; + } + + if (width / 2 < radius) { + if (height / 2 < radius) { + cairo_move_to (cr, x0, (y0 + y1) / 2); + cairo_curve_to (cr, x0 ,y0, x0, y0, (x0 + x1) / 2, y0); + cairo_curve_to (cr, x1, y0, x1, y0, x1, (y0 + y1) / 2); + cairo_curve_to (cr, x1, y1, x1, y1, (x1 + x0) / 2, y1); + cairo_curve_to (cr, x0, y1, x0, y1, x0, (y0 + y1) / 2); + } else { + cairo_move_to (cr, x0, y0 + radius); + cairo_curve_to (cr, x0, y0, x0, y0, (x0 + x1) / 2, y0); + cairo_curve_to (cr, x1, y0, x1, y0, x1, y0 + radius); + cairo_line_to (cr, x1, y1 - radius); + cairo_curve_to (cr, x1, y1, x1, y1, (x1 + x0) / 2, y1); + cairo_curve_to (cr, x0, y1, x0, y1, x0, y1 - radius); + } + } else { + if (height / 2 < radius) { + cairo_move_to (cr, x0, (y0 + y1) / 2); + cairo_curve_to (cr, x0, y0, x0 , y0, x0 + radius, y0); + cairo_line_to (cr, x1 - radius, y0); + cairo_curve_to (cr, x1, y0, x1, y0, x1, (y0 + y1) / 2); + cairo_curve_to (cr, x1, y1, x1, y1, x1 - radius, y1); + cairo_line_to (cr, x0 + radius, y1); + cairo_curve_to (cr, x0, y1, x0, y1, x0, (y0 + y1) / 2); + } else { + cairo_move_to (cr, x0, y0 + radius); + cairo_curve_to (cr, x0 , y0, x0 , y0, x0 + radius, y0); + cairo_line_to (cr, x1 - radius, y0); + cairo_curve_to (cr, x1, y0, x1, y0, x1, y0 + radius); + cairo_line_to (cr, x1, y1 - radius); + cairo_curve_to (cr, x1, y1, x1, y1, x1 - radius, y1); + cairo_line_to (cr, x0 + radius, y1); + cairo_curve_to (cr, x0, y1, x0, y1, x0, y1 - radius); + } + } + + cairo_close_path (cr); +} + +static int +gvc_level_bar_expose (GtkWidget *widget, + GdkEventExpose *event) +{ + GvcLevelBar *bar; + cairo_t *cr; + GtkAllocation allocation; + + g_return_val_if_fail (GVC_IS_LEVEL_BAR (widget), FALSE); + g_return_val_if_fail (event != NULL, FALSE); + + /* event queue compression */ + if (event->count > 0) { + return FALSE; + } + + bar = GVC_LEVEL_BAR (widget); + + cr = gdk_cairo_create (gtk_widget_get_window (widget)); + + gtk_widget_get_allocation (widget, &allocation); + cairo_translate (cr, + allocation.x, + allocation.y); + + if (bar->priv->orientation == GTK_ORIENTATION_VERTICAL) { + int i; + int by; + + for (i = 0; i < NUM_BOXES; i++) { + by = i * bar->priv->layout.delta; + curved_rectangle (cr, + bar->priv->layout.area.x + 0.5, + by + 0.5, + bar->priv->layout.box_width - 1, + bar->priv->layout.box_height - 1, + bar->priv->layout.box_radius); + if ((bar->priv->layout.max_peak_num - 1) == i) { + /* fill peak foreground */ + cairo_set_source_rgb (cr, bar->priv->layout.fl_r, bar->priv->layout.fl_g, bar->priv->layout.fl_b); + cairo_fill_preserve (cr); + } else if ((bar->priv->layout.peak_num - 1) >= i) { + /* fill background */ + cairo_set_source_rgb (cr, bar->priv->layout.bg_r, bar->priv->layout.bg_g, bar->priv->layout.bg_b); + cairo_fill_preserve (cr); + /* fill foreground */ + cairo_set_source_rgba (cr, bar->priv->layout.fl_r, bar->priv->layout.fl_g, bar->priv->layout.fl_b, 0.5); + cairo_fill_preserve (cr); + } else { + /* fill background */ + cairo_set_source_rgb (cr, bar->priv->layout.bg_r, bar->priv->layout.bg_g, bar->priv->layout.bg_b); + cairo_fill_preserve (cr); + } + + /* stroke border */ + cairo_set_source_rgb (cr, bar->priv->layout.bdr_r, bar->priv->layout.bdr_g, bar->priv->layout.bdr_b); + cairo_set_line_width (cr, 1); + cairo_stroke (cr); + } + + } else { + int i; + int bx; + + for (i = 0; i < NUM_BOXES; i++) { + bx = i * bar->priv->layout.delta; + curved_rectangle (cr, + bx + 0.5, + bar->priv->layout.area.y + 0.5, + bar->priv->layout.box_width - 1, + bar->priv->layout.box_height - 1, + bar->priv->layout.box_radius); + + if ((bar->priv->layout.max_peak_num - 1) == i) { + /* fill peak foreground */ + cairo_set_source_rgb (cr, bar->priv->layout.fl_r, bar->priv->layout.fl_g, bar->priv->layout.fl_b); + cairo_fill_preserve (cr); + } else if ((bar->priv->layout.peak_num - 1) >= i) { + /* fill background */ + cairo_set_source_rgb (cr, bar->priv->layout.bg_r, bar->priv->layout.bg_g, bar->priv->layout.bg_b); + cairo_fill_preserve (cr); + /* fill foreground */ + cairo_set_source_rgba (cr, bar->priv->layout.fl_r, bar->priv->layout.fl_g, bar->priv->layout.fl_b, 0.5); + cairo_fill_preserve (cr); + } else { + /* fill background */ + cairo_set_source_rgb (cr, bar->priv->layout.bg_r, bar->priv->layout.bg_g, bar->priv->layout.bg_b); + cairo_fill_preserve (cr); + } + + /* stroke border */ + cairo_set_source_rgb (cr, bar->priv->layout.bdr_r, bar->priv->layout.bdr_g, bar->priv->layout.bdr_b); + cairo_set_line_width (cr, 1); + cairo_stroke (cr); + } + } + cairo_destroy (cr); + + return FALSE; +} + +static void +gvc_level_bar_class_init (GvcLevelBarClass *klass) +{ + GObjectClass *object_class = G_OBJECT_CLASS (klass); + GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); + + object_class->constructor = gvc_level_bar_constructor; + object_class->finalize = gvc_level_bar_finalize; + object_class->set_property = gvc_level_bar_set_property; + object_class->get_property = gvc_level_bar_get_property; + + widget_class->expose_event = gvc_level_bar_expose; + widget_class->size_request = gvc_level_bar_size_request; + widget_class->size_allocate = gvc_level_bar_size_allocate; + + g_object_class_install_property (object_class, + PROP_ORIENTATION, + g_param_spec_enum ("orientation", + "Orientation", + "The orientation of the bar", + GTK_TYPE_ORIENTATION, + GTK_ORIENTATION_HORIZONTAL, + G_PARAM_READWRITE)); + g_object_class_install_property (object_class, + PROP_PEAK_ADJUSTMENT, + g_param_spec_object ("peak-adjustment", + "Peak Adjustment", + "The GtkAdjustment that contains the current peak value", + GTK_TYPE_ADJUSTMENT, + G_PARAM_READWRITE)); + g_object_class_install_property (object_class, + PROP_RMS_ADJUSTMENT, + g_param_spec_object ("rms-adjustment", + "RMS Adjustment", + "The GtkAdjustment that contains the current rms value", + GTK_TYPE_ADJUSTMENT, + G_PARAM_READWRITE)); + g_object_class_install_property (object_class, + PROP_SCALE, + g_param_spec_int ("scale", + "Scale", + "Scale", + 0, + G_MAXINT, + GVC_LEVEL_SCALE_LINEAR, + G_PARAM_READWRITE|G_PARAM_CONSTRUCT)); + + g_type_class_add_private (klass, sizeof (GvcLevelBarPrivate)); +} + +static void +gvc_level_bar_init (GvcLevelBar *bar) +{ + bar->priv = GVC_LEVEL_BAR_GET_PRIVATE (bar); + + bar->priv->peak_adjustment = GTK_ADJUSTMENT (gtk_adjustment_new (0.0, + 0.0, + 1.0, + 0.05, + 0.1, + 0.1)); + g_object_ref_sink (bar->priv->peak_adjustment); + g_signal_connect (bar->priv->peak_adjustment, + "value-changed", + G_CALLBACK (on_peak_adjustment_value_changed), + bar); + + bar->priv->rms_adjustment = GTK_ADJUSTMENT (gtk_adjustment_new (0.0, + 0.0, + 1.0, + 0.05, + 0.1, + 0.1)); + g_object_ref_sink (bar->priv->rms_adjustment); + g_signal_connect (bar->priv->rms_adjustment, + "value-changed", + G_CALLBACK (on_rms_adjustment_value_changed), + bar); + + gtk_widget_set_has_window (GTK_WIDGET (bar), FALSE); +} + +static void +gvc_level_bar_finalize (GObject *object) +{ + GvcLevelBar *bar; + + g_return_if_fail (object != NULL); + g_return_if_fail (GVC_IS_LEVEL_BAR (object)); + + bar = GVC_LEVEL_BAR (object); + + if (bar->priv->max_peak_id > 0) { + g_source_remove (bar->priv->max_peak_id); + } + + g_return_if_fail (bar->priv != NULL); + + G_OBJECT_CLASS (gvc_level_bar_parent_class)->finalize (object); +} + +GtkWidget * +gvc_level_bar_new (void) +{ + GObject *bar; + bar = g_object_new (GVC_TYPE_LEVEL_BAR, + NULL); + return GTK_WIDGET (bar); +} diff --git a/mate-volume-control/src/gvc-level-bar.h b/mate-volume-control/src/gvc-level-bar.h new file mode 100644 index 0000000..917b415 --- /dev/null +++ b/mate-volume-control/src/gvc-level-bar.h @@ -0,0 +1,75 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*- + * + * Copyright (C) 2008 William Jon McCann <[email protected]> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + */ + +#ifndef __GVC_LEVEL_BAR_H +#define __GVC_LEVEL_BAR_H + +#include <glib-object.h> +#include <gtk/gtk.h> + +G_BEGIN_DECLS + +#define GVC_TYPE_LEVEL_BAR (gvc_level_bar_get_type ()) +#define GVC_LEVEL_BAR(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), GVC_TYPE_LEVEL_BAR, GvcLevelBar)) +#define GVC_LEVEL_BAR_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), GVC_TYPE_LEVEL_BAR, GvcLevelBarClass)) +#define GVC_IS_LEVEL_BAR(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GVC_TYPE_LEVEL_BAR)) +#define GVC_IS_LEVEL_BAR_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), GVC_TYPE_LEVEL_BAR)) +#define GVC_LEVEL_BAR_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), GVC_TYPE_LEVEL_BAR, GvcLevelBarClass)) + +typedef struct GvcLevelBarPrivate GvcLevelBarPrivate; + +typedef struct +{ + GtkHBox parent; + GvcLevelBarPrivate *priv; +} GvcLevelBar; + +typedef struct +{ + GtkHBoxClass parent_class; +} GvcLevelBarClass; + +typedef enum +{ + GVC_LEVEL_SCALE_LINEAR, + GVC_LEVEL_SCALE_LOG, + GVC_LEVEL_SCALE_LAST +} GvcLevelScale; + +GType gvc_level_bar_get_type (void); + +GtkWidget * gvc_level_bar_new (void); +void gvc_level_bar_set_orientation (GvcLevelBar *bar, + GtkOrientation orientation); +GtkOrientation gvc_level_bar_get_orientation (GvcLevelBar *bar); + +void gvc_level_bar_set_peak_adjustment (GvcLevelBar *bar, + GtkAdjustment *adjustment); +GtkAdjustment * gvc_level_bar_get_peak_adjustment (GvcLevelBar *bar); +void gvc_level_bar_set_rms_adjustment (GvcLevelBar *bar, + GtkAdjustment *adjustment); +GtkAdjustment * gvc_level_bar_get_rms_adjustment (GvcLevelBar *bar); +void gvc_level_bar_set_scale (GvcLevelBar *bar, + GvcLevelScale scale); + + +G_END_DECLS + +#endif /* __GVC_LEVEL_BAR_H */ diff --git a/mate-volume-control/src/gvc-log.c b/mate-volume-control/src/gvc-log.c new file mode 100644 index 0000000..03a9486 --- /dev/null +++ b/mate-volume-control/src/gvc-log.c @@ -0,0 +1,62 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*- + * + * Copyright (C) 2009 Red Hat, Inc. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + */ + + +#include "config.h" + +#include <glib.h> +#include <glib/gstdio.h> + +#include "gvc-log.h" + + +static int log_levels = G_LOG_LEVEL_CRITICAL | + G_LOG_LEVEL_ERROR | + G_LOG_LEVEL_WARNING | + G_LOG_LEVEL_DEBUG; + +static void +gvc_log_default_handler (const gchar *log_domain, + GLogLevelFlags log_level, + const gchar *message, + gpointer unused_data) +{ + if ((log_level & log_levels) == 0) + return; + + g_log_default_handler (log_domain, log_level, message, unused_data); +} + +void +gvc_log_init (void) +{ + g_log_set_default_handler (gvc_log_default_handler, NULL); +} + +void +gvc_log_set_debug (gboolean debug) +{ + if (debug) { + log_levels |= G_LOG_LEVEL_DEBUG; + g_debug ("Enabling debugging"); + } else { + log_levels &= ~G_LOG_LEVEL_DEBUG; + } +} diff --git a/mate-volume-control/src/gvc-log.h b/mate-volume-control/src/gvc-log.h new file mode 100644 index 0000000..bc1cdd5 --- /dev/null +++ b/mate-volume-control/src/gvc-log.h @@ -0,0 +1,35 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*- + * + * Copyright (C) 2009 Red Hat, Inc. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + */ + +#ifndef __GVC_LOG_H +#define __GVC_LOG_H + +#include <glib.h> + +G_BEGIN_DECLS + + +void gvc_log_init (void); +void gvc_log_set_debug (gboolean debug); + + +G_END_DECLS + +#endif /* __GVC_LOG_H */ diff --git a/mate-volume-control/src/gvc-mixer-card.c b/mate-volume-control/src/gvc-mixer-card.c new file mode 100644 index 0000000..dc4ccca --- /dev/null +++ b/mate-volume-control/src/gvc-mixer-card.c @@ -0,0 +1,498 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*- + * + * Copyright (C) 2008 William Jon McCann + * Copyright (C) 2009 Bastien Nocera + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + */ + +#include "config.h" + +#include <stdlib.h> +#include <stdio.h> +#include <unistd.h> + +#include <glib.h> +#include <glib/gi18n.h> + +#include <pulse/pulseaudio.h> + +#include "gvc-mixer-card.h" + +#define GVC_MIXER_CARD_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GVC_TYPE_MIXER_CARD, GvcMixerCardPrivate)) + +static guint32 card_serial = 1; + +struct GvcMixerCardPrivate +{ + pa_context *pa_context; + guint id; + guint index; + char *name; + char *icon_name; + char *profile; + char *target_profile; + char *human_profile; + GList *profiles; + pa_operation *profile_op; +}; + +enum +{ + PROP_0, + PROP_ID, + PROP_PA_CONTEXT, + PROP_INDEX, + PROP_NAME, + PROP_ICON_NAME, + PROP_PROFILE, + PROP_HUMAN_PROFILE, +}; + +static void gvc_mixer_card_class_init (GvcMixerCardClass *klass); +static void gvc_mixer_card_init (GvcMixerCard *mixer_card); +static void gvc_mixer_card_finalize (GObject *object); + +G_DEFINE_TYPE (GvcMixerCard, gvc_mixer_card, G_TYPE_OBJECT) + +static guint32 +get_next_card_serial (void) +{ + guint32 serial; + + serial = card_serial++; + + if ((gint32)card_serial < 0) { + card_serial = 1; + } + + return serial; +} + +pa_context * +gvc_mixer_card_get_pa_context (GvcMixerCard *card) +{ + g_return_val_if_fail (GVC_IS_MIXER_CARD (card), 0); + return card->priv->pa_context; +} + +guint +gvc_mixer_card_get_index (GvcMixerCard *card) +{ + g_return_val_if_fail (GVC_IS_MIXER_CARD (card), 0); + return card->priv->index; +} + +guint +gvc_mixer_card_get_id (GvcMixerCard *card) +{ + g_return_val_if_fail (GVC_IS_MIXER_CARD (card), 0); + return card->priv->id; +} + +const char * +gvc_mixer_card_get_name (GvcMixerCard *card) +{ + g_return_val_if_fail (GVC_IS_MIXER_CARD (card), NULL); + return card->priv->name; +} + +gboolean +gvc_mixer_card_set_name (GvcMixerCard *card, + const char *name) +{ + g_return_val_if_fail (GVC_IS_MIXER_CARD (card), FALSE); + + g_free (card->priv->name); + card->priv->name = g_strdup (name); + g_object_notify (G_OBJECT (card), "name"); + + return TRUE; +} + +const char * +gvc_mixer_card_get_icon_name (GvcMixerCard *card) +{ + g_return_val_if_fail (GVC_IS_MIXER_CARD (card), NULL); + return card->priv->icon_name; +} + +gboolean +gvc_mixer_card_set_icon_name (GvcMixerCard *card, + const char *icon_name) +{ + g_return_val_if_fail (GVC_IS_MIXER_CARD (card), FALSE); + + g_free (card->priv->icon_name); + card->priv->icon_name = g_strdup (icon_name); + g_object_notify (G_OBJECT (card), "icon-name"); + + return TRUE; +} + +GvcMixerCardProfile * +gvc_mixer_card_get_profile (GvcMixerCard *card) +{ + GList *l; + + g_return_val_if_fail (GVC_IS_MIXER_CARD (card), NULL); + g_return_val_if_fail (card->priv->profiles != NULL, FALSE); + + for (l = card->priv->profiles; l != NULL; l = l->next) { + GvcMixerCardProfile *p = l->data; + if (g_str_equal (card->priv->profile, p->profile)) { + return p; + } + } + + g_assert_not_reached (); + + return NULL; +} + +gboolean +gvc_mixer_card_set_profile (GvcMixerCard *card, + const char *profile) +{ + GList *l; + + g_return_val_if_fail (GVC_IS_MIXER_CARD (card), FALSE); + g_return_val_if_fail (card->priv->profiles != NULL, FALSE); + + g_free (card->priv->profile); + card->priv->profile = g_strdup (profile); + + g_free (card->priv->human_profile); + card->priv->human_profile = NULL; + + for (l = card->priv->profiles; l != NULL; l = l->next) { + GvcMixerCardProfile *p = l->data; + if (g_str_equal (card->priv->profile, p->profile)) { + card->priv->human_profile = g_strdup (p->human_profile); + break; + } + } + + g_object_notify (G_OBJECT (card), "profile"); + + return TRUE; +} + +static void +_pa_context_set_card_profile_by_index_cb (pa_context *context, + int success, + void *userdata) +{ + GvcMixerCard *card = GVC_MIXER_CARD (userdata); + + g_assert (card->priv->target_profile); + + if (success > 0) { + gvc_mixer_card_set_profile (card, card->priv->target_profile); + } else { + g_debug ("Failed to switch profile on '%s' from '%s' to '%s'", + card->priv->name, + card->priv->profile, + card->priv->target_profile); + } + g_free (card->priv->target_profile); + card->priv->target_profile = NULL; + + pa_operation_unref (card->priv->profile_op); + card->priv->profile_op = NULL; +} + +gboolean +gvc_mixer_card_change_profile (GvcMixerCard *card, + const char *profile) +{ + g_return_val_if_fail (GVC_IS_MIXER_CARD (card), FALSE); + g_return_val_if_fail (card->priv->profiles != NULL, FALSE); + + /* Same profile, or already requested? */ + if (g_strcmp0 (card->priv->profile, profile) == 0) + return TRUE; + if (g_strcmp0 (profile, card->priv->target_profile) == 0) + return TRUE; + if (card->priv->profile_op != NULL) { + pa_operation_cancel (card->priv->profile_op); + pa_operation_unref (card->priv->profile_op); + card->priv->profile_op = NULL; + } + + if (card->priv->profile != NULL) { + g_free (card->priv->target_profile); + card->priv->target_profile = g_strdup (profile); + + card->priv->profile_op = pa_context_set_card_profile_by_index (card->priv->pa_context, + card->priv->index, + card->priv->target_profile, + _pa_context_set_card_profile_by_index_cb, + card); + + if (card->priv->profile_op == NULL) { + g_warning ("pa_context_set_card_profile_by_index() failed"); + return FALSE; + } + } else { + g_assert (card->priv->human_profile == NULL); + card->priv->profile = g_strdup (profile); + } + + return TRUE; +} + +const GList * +gvc_mixer_card_get_profiles (GvcMixerCard *card) +{ + g_return_val_if_fail (GVC_IS_MIXER_CARD (card), FALSE); + return card->priv->profiles; +} + +static int +sort_profiles (GvcMixerCardProfile *a, + GvcMixerCardProfile *b) +{ + if (a->priority == b->priority) + return 0; + if (a->priority > b->priority) + return 1; + return -1; +} + +gboolean +gvc_mixer_card_set_profiles (GvcMixerCard *card, + GList *profiles) +{ + g_return_val_if_fail (GVC_IS_MIXER_CARD (card), FALSE); + g_return_val_if_fail (card->priv->profiles == NULL, FALSE); + + card->priv->profiles = g_list_sort (profiles, (GCompareFunc) sort_profiles); + + return TRUE; +} + +static void +gvc_mixer_card_set_property (GObject *object, + guint prop_id, + const GValue *value, + GParamSpec *pspec) +{ + GvcMixerCard *self = GVC_MIXER_CARD (object); + + switch (prop_id) { + case PROP_PA_CONTEXT: + self->priv->pa_context = g_value_get_pointer (value); + break; + case PROP_INDEX: + self->priv->index = g_value_get_ulong (value); + break; + case PROP_ID: + self->priv->id = g_value_get_ulong (value); + break; + case PROP_NAME: + gvc_mixer_card_set_name (self, g_value_get_string (value)); + break; + case PROP_ICON_NAME: + gvc_mixer_card_set_icon_name (self, g_value_get_string (value)); + break; + case PROP_PROFILE: + gvc_mixer_card_set_profile (self, g_value_get_string (value)); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; + } +} + +static void +gvc_mixer_card_get_property (GObject *object, + guint prop_id, + GValue *value, + GParamSpec *pspec) +{ + GvcMixerCard *self = GVC_MIXER_CARD (object); + + switch (prop_id) { + case PROP_PA_CONTEXT: + g_value_set_pointer (value, self->priv->pa_context); + break; + case PROP_INDEX: + g_value_set_ulong (value, self->priv->index); + break; + case PROP_ID: + g_value_set_ulong (value, self->priv->id); + break; + case PROP_NAME: + g_value_set_string (value, self->priv->name); + break; + case PROP_ICON_NAME: + g_value_set_string (value, self->priv->icon_name); + break; + case PROP_PROFILE: + g_value_set_string (value, self->priv->profile); + break; + case PROP_HUMAN_PROFILE: + g_value_set_string (value, self->priv->human_profile); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; + } +} + +static GObject * +gvc_mixer_card_constructor (GType type, + guint n_construct_properties, + GObjectConstructParam *construct_params) +{ + GObject *object; + GvcMixerCard *self; + + object = G_OBJECT_CLASS (gvc_mixer_card_parent_class)->constructor (type, n_construct_properties, construct_params); + + self = GVC_MIXER_CARD (object); + + self->priv->id = get_next_card_serial (); + + return object; +} + +static void +gvc_mixer_card_class_init (GvcMixerCardClass *klass) +{ + GObjectClass *gobject_class = G_OBJECT_CLASS (klass); + + gobject_class->constructor = gvc_mixer_card_constructor; + gobject_class->finalize = gvc_mixer_card_finalize; + + gobject_class->set_property = gvc_mixer_card_set_property; + gobject_class->get_property = gvc_mixer_card_get_property; + + g_object_class_install_property (gobject_class, + PROP_INDEX, + g_param_spec_ulong ("index", + "Index", + "The index for this card", + 0, G_MAXULONG, 0, + G_PARAM_READWRITE|G_PARAM_CONSTRUCT_ONLY)); + g_object_class_install_property (gobject_class, + PROP_ID, + g_param_spec_ulong ("id", + "id", + "The id for this card", + 0, G_MAXULONG, 0, + G_PARAM_READWRITE|G_PARAM_CONSTRUCT_ONLY)); + g_object_class_install_property (gobject_class, + PROP_PA_CONTEXT, + g_param_spec_pointer ("pa-context", + "PulseAudio context", + "The PulseAudio context for this card", + G_PARAM_READWRITE|G_PARAM_CONSTRUCT_ONLY)); + g_object_class_install_property (gobject_class, + PROP_NAME, + g_param_spec_string ("name", + "Name", + "Name to display for this card", + NULL, + G_PARAM_READWRITE|G_PARAM_CONSTRUCT)); + g_object_class_install_property (gobject_class, + PROP_ICON_NAME, + g_param_spec_string ("icon-name", + "Icon Name", + "Name of icon to display for this card", + NULL, + G_PARAM_READWRITE|G_PARAM_CONSTRUCT)); + g_object_class_install_property (gobject_class, + PROP_PROFILE, + g_param_spec_string ("profile", + "Profile", + "Name of current profile for this card", + NULL, + G_PARAM_READWRITE)); + g_object_class_install_property (gobject_class, + PROP_HUMAN_PROFILE, + g_param_spec_string ("human-profile", + "Profile (Human readable)", + "Name of current profile for this card in human readable form", + NULL, + G_PARAM_READABLE)); + + g_type_class_add_private (klass, sizeof (GvcMixerCardPrivate)); +} + +static void +gvc_mixer_card_init (GvcMixerCard *card) +{ + card->priv = GVC_MIXER_CARD_GET_PRIVATE (card); +} + +GvcMixerCard * +gvc_mixer_card_new (pa_context *context, + guint index) +{ + GObject *object; + + object = g_object_new (GVC_TYPE_MIXER_CARD, + "index", index, + "pa-context", context, + NULL); + return GVC_MIXER_CARD (object); +} + +static void +free_profile (GvcMixerCardProfile *p) +{ + g_free (p->profile); + g_free (p->human_profile); + g_free (p->status); + g_free (p); +} + +static void +gvc_mixer_card_finalize (GObject *object) +{ + GvcMixerCard *mixer_card; + + g_return_if_fail (object != NULL); + g_return_if_fail (GVC_IS_MIXER_CARD (object)); + + mixer_card = GVC_MIXER_CARD (object); + + g_return_if_fail (mixer_card->priv != NULL); + + g_free (mixer_card->priv->name); + mixer_card->priv->name = NULL; + + g_free (mixer_card->priv->icon_name); + mixer_card->priv->icon_name = NULL; + + g_free (mixer_card->priv->target_profile); + mixer_card->priv->target_profile = NULL; + + g_free (mixer_card->priv->profile); + mixer_card->priv->profile = NULL; + + g_free (mixer_card->priv->human_profile); + mixer_card->priv->human_profile = NULL; + + g_list_foreach (mixer_card->priv->profiles, (GFunc) free_profile, NULL); + g_list_free (mixer_card->priv->profiles); + mixer_card->priv->profiles = NULL; + + G_OBJECT_CLASS (gvc_mixer_card_parent_class)->finalize (object); +} + diff --git a/mate-volume-control/src/gvc-mixer-card.h b/mate-volume-control/src/gvc-mixer-card.h new file mode 100644 index 0000000..ad24cd6 --- /dev/null +++ b/mate-volume-control/src/gvc-mixer-card.h @@ -0,0 +1,87 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*- + * + * Copyright (C) 2008-2009 Red Hat, Inc. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + */ + +#ifndef __GVC_MIXER_CARD_H +#define __GVC_MIXER_CARD_H + +#include <glib-object.h> +#include <pulse/pulseaudio.h> + +G_BEGIN_DECLS + +#define GVC_TYPE_MIXER_CARD (gvc_mixer_card_get_type ()) +#define GVC_MIXER_CARD(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), GVC_TYPE_MIXER_CARD, GvcMixerCard)) +#define GVC_MIXER_CARD_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), GVC_TYPE_MIXER_CARD, GvcMixerCardClass)) +#define GVC_IS_MIXER_CARD(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GVC_TYPE_MIXER_CARD)) +#define GVC_IS_MIXER_CARD_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), GVC_TYPE_MIXER_CARD)) +#define GVC_MIXER_CARD_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), GVC_TYPE_MIXER_CARD, GvcMixerCardClass)) + +typedef struct GvcMixerCardPrivate GvcMixerCardPrivate; + +typedef struct +{ + GObject parent; + GvcMixerCardPrivate *priv; +} GvcMixerCard; + +typedef struct +{ + GObjectClass parent_class; + + /* vtable */ +} GvcMixerCardClass; + +typedef struct +{ + char *profile; + char *human_profile; + char *status; + guint priority; + guint n_sinks, n_sources; +} GvcMixerCardProfile; + +GType gvc_mixer_card_get_type (void); +GvcMixerCard * gvc_mixer_card_new (pa_context *context, + guint index); + +guint gvc_mixer_card_get_id (GvcMixerCard *card); +guint gvc_mixer_card_get_index (GvcMixerCard *card); +const char * gvc_mixer_card_get_name (GvcMixerCard *card); +const char * gvc_mixer_card_get_icon_name (GvcMixerCard *card); +GvcMixerCardProfile * gvc_mixer_card_get_profile (GvcMixerCard *card); +const GList * gvc_mixer_card_get_profiles (GvcMixerCard *card); + +pa_context * gvc_mixer_card_get_pa_context (GvcMixerCard *card); +gboolean gvc_mixer_card_change_profile (GvcMixerCard *card, + const char *profile); + +/* private */ +gboolean gvc_mixer_card_set_name (GvcMixerCard *card, + const char *name); +gboolean gvc_mixer_card_set_icon_name (GvcMixerCard *card, + const char *name); +gboolean gvc_mixer_card_set_profile (GvcMixerCard *card, + const char *profile); +gboolean gvc_mixer_card_set_profiles (GvcMixerCard *card, + GList *profiles); + +G_END_DECLS + +#endif /* __GVC_MIXER_CARD_H */ diff --git a/mate-volume-control/src/gvc-mixer-control.c b/mate-volume-control/src/gvc-mixer-control.c new file mode 100644 index 0000000..b504427 --- /dev/null +++ b/mate-volume-control/src/gvc-mixer-control.c @@ -0,0 +1,2150 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*- + * + * Copyright (C) 2006-2008 Lennart Poettering + * Copyright (C) 2008 Sjoerd Simons <[email protected]> + * Copyright (C) 2008 William Jon McCann + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + */ + +#include "config.h" + +#include <stdlib.h> +#include <stdio.h> +#include <unistd.h> + +#include <glib.h> +#include <glib/gi18n.h> + +#include <pulse/pulseaudio.h> +#include <pulse/glib-mainloop.h> +#include <pulse/ext-stream-restore.h> + +#include "gvc-mixer-control.h" +#include "gvc-mixer-sink.h" +#include "gvc-mixer-source.h" +#include "gvc-mixer-sink-input.h" +#include "gvc-mixer-source-output.h" +#include "gvc-mixer-event-role.h" +#include "gvc-mixer-card.h" + +#define GVC_MIXER_CONTROL_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GVC_TYPE_MIXER_CONTROL, GvcMixerControlPrivate)) + +#define RECONNECT_DELAY 5 + +enum { + PROP_0, + PROP_NAME +}; + +struct GvcMixerControlPrivate +{ + pa_glib_mainloop *pa_mainloop; + pa_mainloop_api *pa_api; + pa_context *pa_context; + int n_outstanding; + guint reconnect_id; + char *name; + + gboolean default_sink_is_set; + guint default_sink_id; + char *default_sink_name; + gboolean default_source_is_set; + guint default_source_id; + char *default_source_name; + + gboolean event_sink_input_is_set; + guint event_sink_input_id; + + GHashTable *all_streams; + GHashTable *sinks; /* fixed outputs */ + GHashTable *sources; /* fixed inputs */ + GHashTable *sink_inputs; /* routable output streams */ + GHashTable *source_outputs; /* routable input streams */ + GHashTable *clients; + GHashTable *cards; + + GvcMixerStream *new_default_stream; /* new default stream, used in gvc_mixer_control_set_default_sink () */ +}; + +enum { + CONNECTING, + READY, + STREAM_ADDED, + STREAM_REMOVED, + CARD_ADDED, + CARD_REMOVED, + DEFAULT_SINK_CHANGED, + DEFAULT_SOURCE_CHANGED, + LAST_SIGNAL +}; + +static guint signals [LAST_SIGNAL] = { 0, }; + +static void gvc_mixer_control_class_init (GvcMixerControlClass *klass); +static void gvc_mixer_control_init (GvcMixerControl *mixer_control); +static void gvc_mixer_control_finalize (GObject *object); + +G_DEFINE_TYPE (GvcMixerControl, gvc_mixer_control, G_TYPE_OBJECT) + +pa_context * +gvc_mixer_control_get_pa_context (GvcMixerControl *control) +{ + g_return_val_if_fail (GVC_IS_MIXER_CONTROL (control), NULL); + return control->priv->pa_context; +} + +GvcMixerStream * +gvc_mixer_control_get_event_sink_input (GvcMixerControl *control) +{ + GvcMixerStream *stream; + + g_return_val_if_fail (GVC_IS_MIXER_CONTROL (control), NULL); + + stream = g_hash_table_lookup (control->priv->all_streams, + GUINT_TO_POINTER (control->priv->event_sink_input_id)); + + return stream; +} + +static void +gvc_mixer_control_stream_restore_cb (pa_context *c, + const pa_ext_stream_restore_info *info, + int eol, + void *userdata) +{ + pa_operation *o; + GvcMixerControl *control = (GvcMixerControl *) userdata; + pa_ext_stream_restore_info new_info; + + if (eol || control->priv->new_default_stream == NULL) + return; + + new_info.name = info->name; + new_info.channel_map = info->channel_map; + new_info.volume = info->volume; + new_info.mute = info->mute; + + new_info.device = gvc_mixer_stream_get_name (control->priv->new_default_stream); + + o = pa_ext_stream_restore_write (control->priv->pa_context, + PA_UPDATE_REPLACE, + &new_info, 1, + TRUE, NULL, NULL); + + if (o == NULL) { + g_warning ("pa_ext_stream_restore_write() failed: %s", + pa_strerror (pa_context_errno (control->priv->pa_context))); + return; + } + + g_debug ("Changed default device for %s to %s", info->name, info->device); + + pa_operation_unref (o); +} + +gboolean +gvc_mixer_control_set_default_sink (GvcMixerControl *control, + GvcMixerStream *stream) +{ + pa_operation *o; + + g_return_val_if_fail (GVC_IS_MIXER_CONTROL (control), FALSE); + g_return_val_if_fail (GVC_IS_MIXER_STREAM (stream), FALSE); + + o = pa_context_set_default_sink (control->priv->pa_context, + gvc_mixer_stream_get_name (stream), + NULL, + NULL); + if (o == NULL) { + g_warning ("pa_context_set_default_sink() failed: %s", + pa_strerror (pa_context_errno (control->priv->pa_context))); + return FALSE; + } + + pa_operation_unref (o); + + control->priv->new_default_stream = stream; + g_object_add_weak_pointer (G_OBJECT (stream), (gpointer *) &control->priv->new_default_stream); + + o = pa_ext_stream_restore_read (control->priv->pa_context, + gvc_mixer_control_stream_restore_cb, + control); + + if (o == NULL) { + g_warning ("pa_ext_stream_restore_read() failed: %s", + pa_strerror (pa_context_errno (control->priv->pa_context))); + return FALSE; + } + + pa_operation_unref (o); + + return TRUE; +} + +gboolean +gvc_mixer_control_set_default_source (GvcMixerControl *control, + GvcMixerStream *stream) +{ + pa_operation *o; + + g_return_val_if_fail (GVC_IS_MIXER_CONTROL (control), FALSE); + g_return_val_if_fail (GVC_IS_MIXER_STREAM (stream), FALSE); + + o = pa_context_set_default_source (control->priv->pa_context, + gvc_mixer_stream_get_name (stream), + NULL, + NULL); + if (o == NULL) { + g_warning ("pa_context_set_default_source() failed"); + return FALSE; + } + + pa_operation_unref (o); + + return TRUE; +} + +GvcMixerStream * +gvc_mixer_control_get_default_sink (GvcMixerControl *control) +{ + GvcMixerStream *stream; + + g_return_val_if_fail (GVC_IS_MIXER_CONTROL (control), NULL); + + if (control->priv->default_sink_is_set) { + stream = g_hash_table_lookup (control->priv->all_streams, + GUINT_TO_POINTER (control->priv->default_sink_id)); + } else { + stream = NULL; + } + + return stream; +} + +GvcMixerStream * +gvc_mixer_control_get_default_source (GvcMixerControl *control) +{ + GvcMixerStream *stream; + + g_return_val_if_fail (GVC_IS_MIXER_CONTROL (control), NULL); + + if (control->priv->default_source_is_set) { + stream = g_hash_table_lookup (control->priv->all_streams, + GUINT_TO_POINTER (control->priv->default_source_id)); + } else { + stream = NULL; + } + + return stream; +} + +static gpointer +gvc_mixer_control_lookup_id (GHashTable *hash_table, + guint id) +{ + return g_hash_table_lookup (hash_table, + GUINT_TO_POINTER (id)); +} + +GvcMixerStream * +gvc_mixer_control_lookup_stream_id (GvcMixerControl *control, + guint id) +{ + g_return_val_if_fail (GVC_IS_MIXER_CONTROL (control), NULL); + + return gvc_mixer_control_lookup_id (control->priv->all_streams, id); +} + +GvcMixerCard * +gvc_mixer_control_lookup_card_id (GvcMixerControl *control, + guint id) +{ + g_return_val_if_fail (GVC_IS_MIXER_CONTROL (control), NULL); + + return gvc_mixer_control_lookup_id (control->priv->cards, id); +} + +static void +listify_hash_values_hfunc (gpointer key, + gpointer value, + gpointer user_data) +{ + GSList **list = user_data; + + *list = g_slist_prepend (*list, value); +} + +static int +gvc_name_collate (const char *namea, + const char *nameb) +{ + if (nameb == NULL && namea == NULL) + return 0; + if (nameb == NULL) + return 1; + if (namea == NULL) + return -1; + + return g_utf8_collate (namea, nameb); +} + +static int +gvc_card_collate (GvcMixerCard *a, + GvcMixerCard *b) +{ + const char *namea; + const char *nameb; + + g_return_val_if_fail (a == NULL || GVC_IS_MIXER_CARD (a), 0); + g_return_val_if_fail (b == NULL || GVC_IS_MIXER_CARD (b), 0); + + namea = gvc_mixer_card_get_name (a); + nameb = gvc_mixer_card_get_name (b); + + return gvc_name_collate (namea, nameb); +} + +GSList * +gvc_mixer_control_get_cards (GvcMixerControl *control) +{ + GSList *retval; + + g_return_val_if_fail (GVC_IS_MIXER_CONTROL (control), NULL); + + retval = NULL; + g_hash_table_foreach (control->priv->cards, + listify_hash_values_hfunc, + &retval); + return g_slist_sort (retval, (GCompareFunc) gvc_card_collate); +} + +static int +gvc_stream_collate (GvcMixerStream *a, + GvcMixerStream *b) +{ + const char *namea; + const char *nameb; + + g_return_val_if_fail (a == NULL || GVC_IS_MIXER_STREAM (a), 0); + g_return_val_if_fail (b == NULL || GVC_IS_MIXER_STREAM (b), 0); + + namea = gvc_mixer_stream_get_name (a); + nameb = gvc_mixer_stream_get_name (b); + + return gvc_name_collate (namea, nameb); +} + +GSList * +gvc_mixer_control_get_streams (GvcMixerControl *control) +{ + GSList *retval; + + g_return_val_if_fail (GVC_IS_MIXER_CONTROL (control), NULL); + + retval = NULL; + g_hash_table_foreach (control->priv->all_streams, + listify_hash_values_hfunc, + &retval); + return g_slist_sort (retval, (GCompareFunc) gvc_stream_collate); +} + +GSList * +gvc_mixer_control_get_sinks (GvcMixerControl *control) +{ + GSList *retval; + + g_return_val_if_fail (GVC_IS_MIXER_CONTROL (control), NULL); + + retval = NULL; + g_hash_table_foreach (control->priv->sinks, + listify_hash_values_hfunc, + &retval); + return g_slist_sort (retval, (GCompareFunc) gvc_stream_collate); +} + +GSList * +gvc_mixer_control_get_sources (GvcMixerControl *control) +{ + GSList *retval; + + g_return_val_if_fail (GVC_IS_MIXER_CONTROL (control), NULL); + + retval = NULL; + g_hash_table_foreach (control->priv->sources, + listify_hash_values_hfunc, + &retval); + return g_slist_sort (retval, (GCompareFunc) gvc_stream_collate); +} + +GSList * +gvc_mixer_control_get_sink_inputs (GvcMixerControl *control) +{ + GSList *retval; + + g_return_val_if_fail (GVC_IS_MIXER_CONTROL (control), NULL); + + retval = NULL; + g_hash_table_foreach (control->priv->sink_inputs, + listify_hash_values_hfunc, + &retval); + return g_slist_sort (retval, (GCompareFunc) gvc_stream_collate); +} + +GSList * +gvc_mixer_control_get_source_outputs (GvcMixerControl *control) +{ + GSList *retval; + + g_return_val_if_fail (GVC_IS_MIXER_CONTROL (control), NULL); + + retval = NULL; + g_hash_table_foreach (control->priv->source_outputs, + listify_hash_values_hfunc, + &retval); + return g_slist_sort (retval, (GCompareFunc) gvc_stream_collate); +} + +static void +dec_outstanding (GvcMixerControl *control) +{ + if (control->priv->n_outstanding <= 0) { + return; + } + + if (--control->priv->n_outstanding <= 0) { + g_signal_emit (G_OBJECT (control), signals[READY], 0); + } +} + +gboolean +gvc_mixer_control_is_ready (GvcMixerControl *control) +{ + g_return_val_if_fail (GVC_IS_MIXER_CONTROL (control), FALSE); + + return (control->priv->n_outstanding == 0); +} + + +static void +_set_default_source (GvcMixerControl *control, + GvcMixerStream *stream) +{ + guint new_id; + + if (stream == NULL) { + control->priv->default_source_id = 0; + control->priv->default_source_is_set = FALSE; + g_signal_emit (control, + signals[DEFAULT_SOURCE_CHANGED], + 0, + PA_INVALID_INDEX); + return; + } + + new_id = gvc_mixer_stream_get_id (stream); + + if (control->priv->default_source_id != new_id) { + control->priv->default_source_id = new_id; + control->priv->default_source_is_set = TRUE; + g_signal_emit (control, + signals[DEFAULT_SOURCE_CHANGED], + 0, + new_id); + } +} + +static void +_set_default_sink (GvcMixerControl *control, + GvcMixerStream *stream) +{ + guint new_id; + + if (stream == NULL) { + /* Don't tell front-ends about an unset default + * sink if it's already unset */ + if (control->priv->default_sink_is_set == FALSE) + return; + control->priv->default_sink_id = 0; + control->priv->default_sink_is_set = FALSE; + g_signal_emit (control, + signals[DEFAULT_SINK_CHANGED], + 0, + PA_INVALID_INDEX); + return; + } + + new_id = gvc_mixer_stream_get_id (stream); + + if (control->priv->default_sink_id != new_id) { + control->priv->default_sink_id = new_id; + control->priv->default_sink_is_set = TRUE; + g_signal_emit (control, + signals[DEFAULT_SINK_CHANGED], + 0, + new_id); + } +} + +static gboolean +_stream_has_name (gpointer key, + GvcMixerStream *stream, + const char *name) +{ + const char *t_name; + + t_name = gvc_mixer_stream_get_name (stream); + + if (t_name != NULL + && name != NULL + && strcmp (t_name, name) == 0) { + return TRUE; + } + + return FALSE; +} + +static GvcMixerStream * +find_stream_for_name (GvcMixerControl *control, + const char *name) +{ + GvcMixerStream *stream; + + stream = g_hash_table_find (control->priv->all_streams, + (GHRFunc)_stream_has_name, + (char *)name); + return stream; +} + +static void +update_default_source_from_name (GvcMixerControl *control, + const char *name) +{ + gboolean changed; + + if ((control->priv->default_source_name == NULL + && name != NULL) + || (control->priv->default_source_name != NULL + && name == NULL) + || strcmp (control->priv->default_source_name, name) != 0) { + changed = TRUE; + } + + if (changed) { + GvcMixerStream *stream; + + g_free (control->priv->default_source_name); + control->priv->default_source_name = g_strdup (name); + + stream = find_stream_for_name (control, name); + _set_default_source (control, stream); + } +} + +static void +update_default_sink_from_name (GvcMixerControl *control, + const char *name) +{ + gboolean changed; + + if ((control->priv->default_sink_name == NULL + && name != NULL) + || (control->priv->default_sink_name != NULL + && name == NULL) + || strcmp (control->priv->default_sink_name, name) != 0) { + changed = TRUE; + } + + if (changed) { + GvcMixerStream *stream; + g_free (control->priv->default_sink_name); + control->priv->default_sink_name = g_strdup (name); + + stream = find_stream_for_name (control, name); + _set_default_sink (control, stream); + } +} + +static void +update_server (GvcMixerControl *control, + const pa_server_info *info) +{ + if (info->default_source_name != NULL) { + update_default_source_from_name (control, info->default_source_name); + } + if (info->default_sink_name != NULL) { + update_default_sink_from_name (control, info->default_sink_name); + } +} + +static void +remove_stream (GvcMixerControl *control, + GvcMixerStream *stream) +{ + guint id; + + g_object_ref (stream); + + id = gvc_mixer_stream_get_id (stream); + + if (id == control->priv->default_sink_id) { + _set_default_sink (control, NULL); + } else if (id == control->priv->default_source_id) { + _set_default_source (control, NULL); + } + + g_hash_table_remove (control->priv->all_streams, + GUINT_TO_POINTER (id)); + g_signal_emit (G_OBJECT (control), + signals[STREAM_REMOVED], + 0, + gvc_mixer_stream_get_id (stream)); + g_object_unref (stream); +} + +static void +add_stream (GvcMixerControl *control, + GvcMixerStream *stream) +{ + g_hash_table_insert (control->priv->all_streams, + GUINT_TO_POINTER (gvc_mixer_stream_get_id (stream)), + stream); + g_signal_emit (G_OBJECT (control), + signals[STREAM_ADDED], + 0, + gvc_mixer_stream_get_id (stream)); +} + +static void +update_sink (GvcMixerControl *control, + const pa_sink_info *info) +{ + GvcMixerStream *stream; + gboolean is_new; + pa_volume_t max_volume; + GvcChannelMap *map; + char map_buff[PA_CHANNEL_MAP_SNPRINT_MAX]; + + pa_channel_map_snprint (map_buff, PA_CHANNEL_MAP_SNPRINT_MAX, &info->channel_map); +#if 1 + g_debug ("Updating sink: index=%u name='%s' description='%s' map='%s'", + info->index, + info->name, + info->description, + map_buff); +#endif + + map = NULL; + is_new = FALSE; + stream = g_hash_table_lookup (control->priv->sinks, + GUINT_TO_POINTER (info->index)); + if (stream == NULL) { +#if PA_MICRO > 15 + GList *list = NULL; + guint i; +#endif /* PA_MICRO > 15 */ + + map = gvc_channel_map_new_from_pa_channel_map (&info->channel_map); + stream = gvc_mixer_sink_new (control->priv->pa_context, + info->index, + map); +#if PA_MICRO > 15 + for (i = 0; i < info->n_ports; i++) { + GvcMixerStreamPort *port; + + port = g_new0 (GvcMixerStreamPort, 1); + port->port = g_strdup (info->ports[i]->name); + port->human_port = g_strdup (info->ports[i]->description); + port->priority = info->ports[i]->priority; + list = g_list_prepend (list, port); + } + gvc_mixer_stream_set_ports (stream, list); +#endif /* PA_MICRO > 15 */ + g_object_unref (map); + is_new = TRUE; + } else if (gvc_mixer_stream_is_running (stream)) { + /* Ignore events if volume changes are outstanding */ + g_debug ("Ignoring event, volume changes are outstanding"); + return; + } + + max_volume = pa_cvolume_max (&info->volume); + gvc_mixer_stream_set_name (stream, info->name); + gvc_mixer_stream_set_card_index (stream, info->card); + gvc_mixer_stream_set_description (stream, info->description); + gvc_mixer_stream_set_icon_name (stream, "audio-card"); + gvc_mixer_stream_set_volume (stream, (guint)max_volume); + gvc_mixer_stream_set_is_muted (stream, info->mute); + gvc_mixer_stream_set_can_decibel (stream, !!(info->flags & PA_SINK_DECIBEL_VOLUME)); + gvc_mixer_stream_set_base_volume (stream, (guint32) info->base_volume); +#if PA_MICRO > 15 + if (info->active_port != NULL) + gvc_mixer_stream_set_port (stream, info->active_port->name); +#endif /* PA_MICRO > 15 */ + + if (is_new) { + g_hash_table_insert (control->priv->sinks, + GUINT_TO_POINTER (info->index), + g_object_ref (stream)); + add_stream (control, stream); + } + + if (control->priv->default_sink_name != NULL + && info->name != NULL + && strcmp (control->priv->default_sink_name, info->name) == 0) { + _set_default_sink (control, stream); + } + + if (map == NULL) + map = (GvcChannelMap *) gvc_mixer_stream_get_channel_map (stream); + gvc_channel_map_volume_changed (map, &info->volume, FALSE); +} + +static void +update_source (GvcMixerControl *control, + const pa_source_info *info) +{ + GvcMixerStream *stream; + gboolean is_new; + pa_volume_t max_volume; + +#if 1 + g_debug ("Updating source: index=%u name='%s' description='%s'", + info->index, + info->name, + info->description); +#endif + + /* completely ignore monitors, they're not real sources */ + if (info->monitor_of_sink != PA_INVALID_INDEX) { + return; + } + + is_new = FALSE; + + stream = g_hash_table_lookup (control->priv->sources, + GUINT_TO_POINTER (info->index)); + if (stream == NULL) { +#if PA_MICRO > 15 + GList *list = NULL; + guint i; +#endif /* PA_MICRO > 15 */ + GvcChannelMap *map; + + map = gvc_channel_map_new_from_pa_channel_map (&info->channel_map); + stream = gvc_mixer_source_new (control->priv->pa_context, + info->index, + map); +#if PA_MICRO > 15 + for (i = 0; i < info->n_ports; i++) { + GvcMixerStreamPort *port; + + port = g_new0 (GvcMixerStreamPort, 1); + port->port = g_strdup (info->ports[i]->name); + port->human_port = g_strdup (info->ports[i]->description); + port->priority = info->ports[i]->priority; + list = g_list_prepend (list, port); + } + gvc_mixer_stream_set_ports (stream, list); +#endif /* PA_MICRO > 15 */ + + g_object_unref (map); + is_new = TRUE; + } else if (gvc_mixer_stream_is_running (stream)) { + /* Ignore events if volume changes are outstanding */ + g_debug ("Ignoring event, volume changes are outstanding"); + return; + } + + max_volume = pa_cvolume_max (&info->volume); + + gvc_mixer_stream_set_name (stream, info->name); + gvc_mixer_stream_set_card_index (stream, info->card); + gvc_mixer_stream_set_description (stream, info->description); + gvc_mixer_stream_set_icon_name (stream, "audio-input-microphone"); + gvc_mixer_stream_set_volume (stream, (guint)max_volume); + gvc_mixer_stream_set_is_muted (stream, info->mute); + gvc_mixer_stream_set_can_decibel (stream, !!(info->flags & PA_SOURCE_DECIBEL_VOLUME)); + gvc_mixer_stream_set_base_volume (stream, (guint32) info->base_volume); +#if PA_MICRO > 15 + if (info->active_port != NULL) + gvc_mixer_stream_set_port (stream, info->active_port->name); +#endif /* PA_MICRO > 15 */ + + if (is_new) { + g_hash_table_insert (control->priv->sources, + GUINT_TO_POINTER (info->index), + g_object_ref (stream)); + add_stream (control, stream); + } + + if (control->priv->default_source_name != NULL + && info->name != NULL + && strcmp (control->priv->default_source_name, info->name) == 0) { + _set_default_source (control, stream); + } +} + +static void +set_icon_name_from_proplist (GvcMixerStream *stream, + pa_proplist *l, + const char *default_icon_name) +{ + const char *t; + + if ((t = pa_proplist_gets (l, PA_PROP_MEDIA_ICON_NAME))) { + goto finish; + } + + if ((t = pa_proplist_gets (l, PA_PROP_WINDOW_ICON_NAME))) { + goto finish; + } + + if ((t = pa_proplist_gets (l, PA_PROP_APPLICATION_ICON_NAME))) { + goto finish; + } + + if ((t = pa_proplist_gets (l, PA_PROP_MEDIA_ROLE))) { + + if (strcmp (t, "video") == 0 || + strcmp (t, "phone") == 0) { + goto finish; + } + + if (strcmp (t, "music") == 0) { + t = "audio"; + goto finish; + } + + if (strcmp (t, "game") == 0) { + t = "applications-games"; + goto finish; + } + + if (strcmp (t, "event") == 0) { + t = "dialog-information"; + goto finish; + } + } + + t = default_icon_name; + + finish: + gvc_mixer_stream_set_icon_name (stream, t); +} + +static void +set_is_event_stream_from_proplist (GvcMixerStream *stream, + pa_proplist *l) +{ + const char *t; + gboolean is_event_stream; + + is_event_stream = FALSE; + + if ((t = pa_proplist_gets (l, PA_PROP_MEDIA_ROLE))) { + if (g_str_equal (t, "event")) + is_event_stream = TRUE; + } + + gvc_mixer_stream_set_is_event_stream (stream, is_event_stream); +} + +static void +set_application_id_from_proplist (GvcMixerStream *stream, + pa_proplist *l) +{ + const char *t; + + if ((t = pa_proplist_gets (l, PA_PROP_APPLICATION_ID))) { + gvc_mixer_stream_set_application_id (stream, t); + } +} + +static void +update_sink_input (GvcMixerControl *control, + const pa_sink_input_info *info) +{ + GvcMixerStream *stream; + gboolean is_new; + pa_volume_t max_volume; + const char *name; + +#if 0 + g_debug ("Updating sink input: index=%u name='%s' client=%u sink=%u", + info->index, + info->name, + info->client, + info->sink); +#endif + + is_new = FALSE; + + stream = g_hash_table_lookup (control->priv->sink_inputs, + GUINT_TO_POINTER (info->index)); + if (stream == NULL) { + GvcChannelMap *map; + map = gvc_channel_map_new_from_pa_channel_map (&info->channel_map); + stream = gvc_mixer_sink_input_new (control->priv->pa_context, + info->index, + map); + g_object_unref (map); + is_new = TRUE; + } else if (gvc_mixer_stream_is_running (stream)) { + /* Ignore events if volume changes are outstanding */ + g_debug ("Ignoring event, volume changes are outstanding"); + return; + } + + max_volume = pa_cvolume_max (&info->volume); + + name = (const char *)g_hash_table_lookup (control->priv->clients, + GUINT_TO_POINTER (info->client)); + gvc_mixer_stream_set_name (stream, name); + gvc_mixer_stream_set_description (stream, info->name); + + set_application_id_from_proplist (stream, info->proplist); + set_is_event_stream_from_proplist (stream, info->proplist); + set_icon_name_from_proplist (stream, info->proplist, "applications-multimedia"); + gvc_mixer_stream_set_volume (stream, (guint)max_volume); + gvc_mixer_stream_set_is_muted (stream, info->mute); + gvc_mixer_stream_set_is_virtual (stream, info->client == PA_INVALID_INDEX); + + if (is_new) { + g_hash_table_insert (control->priv->sink_inputs, + GUINT_TO_POINTER (info->index), + g_object_ref (stream)); + add_stream (control, stream); + } +} + +static void +update_source_output (GvcMixerControl *control, + const pa_source_output_info *info) +{ + GvcMixerStream *stream; + gboolean is_new; + const char *name; + +#if 1 + g_debug ("Updating source output: index=%u name='%s' client=%u source=%u", + info->index, + info->name, + info->client, + info->source); +#endif + + is_new = FALSE; + stream = g_hash_table_lookup (control->priv->source_outputs, + GUINT_TO_POINTER (info->index)); + if (stream == NULL) { + GvcChannelMap *map; + map = gvc_channel_map_new_from_pa_channel_map (&info->channel_map); + stream = gvc_mixer_source_output_new (control->priv->pa_context, + info->index, + map); + g_object_unref (map); + is_new = TRUE; + } + + name = (const char *)g_hash_table_lookup (control->priv->clients, + GUINT_TO_POINTER (info->client)); + + gvc_mixer_stream_set_name (stream, name); + gvc_mixer_stream_set_description (stream, info->name); + set_application_id_from_proplist (stream, info->proplist); + set_is_event_stream_from_proplist (stream, info->proplist); + set_icon_name_from_proplist (stream, info->proplist, "audio-input-microphone"); + + if (is_new) { + g_hash_table_insert (control->priv->source_outputs, + GUINT_TO_POINTER (info->index), + g_object_ref (stream)); + add_stream (control, stream); + } +} + +static void +update_client (GvcMixerControl *control, + const pa_client_info *info) +{ +#if 1 + g_debug ("Updating client: index=%u name='%s'", + info->index, + info->name); +#endif + g_hash_table_insert (control->priv->clients, + GUINT_TO_POINTER (info->index), + g_strdup (info->name)); +} + +static char * +card_num_streams_to_status (guint sinks, + guint sources) +{ + char *sinks_str; + char *sources_str; + char *ret; + + if (sinks == 0 && sources == 0) { + /* translators: + * The device has been disabled */ + return g_strdup (_("Disabled")); + } + if (sinks == 0) { + sinks_str = NULL; + } else { + /* translators: + * The number of sound outputs on a particular device */ + sinks_str = g_strdup_printf (ngettext ("%u Output", + "%u Outputs", + sinks), + sinks); + } + if (sources == 0) { + sources_str = NULL; + } else { + /* translators: + * The number of sound inputs on a particular device */ + sources_str = g_strdup_printf (ngettext ("%u Input", + "%u Inputs", + sources), + sources); + } + if (sources_str == NULL) + return sinks_str; + if (sinks_str == NULL) + return sources_str; + ret = g_strdup_printf ("%s / %s", sinks_str, sources_str); + g_free (sinks_str); + g_free (sources_str); + return ret; +} + +static void +update_card (GvcMixerControl *control, + const pa_card_info *info) +{ + GvcMixerCard *card; + gboolean is_new; +#if 1 + guint i; + const char *key; + void *state; + + g_debug ("Udpating card %s (index: %u driver: %s):", + info->name, info->index, info->driver); + + for (i = 0; i < info->n_profiles; i++) { + struct pa_card_profile_info pi = info->profiles[i]; + gboolean is_default; + + is_default = (g_strcmp0 (pi.name, info->active_profile->name) == 0); + g_debug ("\tProfile '%s': %d sources %d sinks%s", + pi.name, pi.n_sources, pi.n_sinks, + is_default ? " (Current)" : ""); + } + state = NULL; + key = pa_proplist_iterate (info->proplist, &state); + while (key != NULL) { + g_debug ("\tProperty: '%s' = '%s'", + key, pa_proplist_gets (info->proplist, key)); + key = pa_proplist_iterate (info->proplist, &state); + } +#endif + card = g_hash_table_lookup (control->priv->cards, + GUINT_TO_POINTER (info->index)); + if (card == NULL) { + GList *list = NULL; + + for (i = 0; i < info->n_profiles; i++) { + struct pa_card_profile_info pi = info->profiles[i]; + GvcMixerCardProfile *profile; + + profile = g_new0 (GvcMixerCardProfile, 1); + profile->profile = g_strdup (pi.name); + profile->human_profile = g_strdup (pi.description); + profile->status = card_num_streams_to_status (pi.n_sinks, pi.n_sources); + profile->n_sinks = pi.n_sinks; + profile->n_sources = pi.n_sources; + profile->priority = pi.priority; + list = g_list_prepend (list, profile); + } + card = gvc_mixer_card_new (control->priv->pa_context, + info->index); + gvc_mixer_card_set_profiles (card, list); + is_new = TRUE; + } + + gvc_mixer_card_set_name (card, pa_proplist_gets (info->proplist, "device.description")); + gvc_mixer_card_set_icon_name (card, pa_proplist_gets (info->proplist, "device.icon_name")); + gvc_mixer_card_set_profile (card, info->active_profile->name); + + if (is_new) { + g_hash_table_insert (control->priv->cards, + GUINT_TO_POINTER (info->index), + g_object_ref (card)); + } + g_signal_emit (G_OBJECT (control), + signals[CARD_ADDED], + 0, + info->index); +} + +static void +_pa_context_get_sink_info_cb (pa_context *context, + const pa_sink_info *i, + int eol, + void *userdata) +{ + GvcMixerControl *control = GVC_MIXER_CONTROL (userdata); + + if (eol < 0) { + if (pa_context_errno (context) == PA_ERR_NOENTITY) { + return; + } + + g_warning ("Sink callback failure"); + return; + } + + if (eol > 0) { + dec_outstanding (control); + return; + } + + update_sink (control, i); +} + +static void +_pa_context_get_source_info_cb (pa_context *context, + const pa_source_info *i, + int eol, + void *userdata) +{ + GvcMixerControl *control = GVC_MIXER_CONTROL (userdata); + + if (eol < 0) { + if (pa_context_errno (context) == PA_ERR_NOENTITY) { + return; + } + + g_warning ("Source callback failure"); + return; + } + + if (eol > 0) { + dec_outstanding (control); + return; + } + + update_source (control, i); +} + +static void +_pa_context_get_sink_input_info_cb (pa_context *context, + const pa_sink_input_info *i, + int eol, + void *userdata) +{ + GvcMixerControl *control = GVC_MIXER_CONTROL (userdata); + + if (eol < 0) { + if (pa_context_errno (context) == PA_ERR_NOENTITY) { + return; + } + + g_warning ("Sink input callback failure"); + return; + } + + if (eol > 0) { + dec_outstanding (control); + return; + } + + update_sink_input (control, i); +} + +static void +_pa_context_get_source_output_info_cb (pa_context *context, + const pa_source_output_info *i, + int eol, + void *userdata) +{ + GvcMixerControl *control = GVC_MIXER_CONTROL (userdata); + + if (eol < 0) { + if (pa_context_errno (context) == PA_ERR_NOENTITY) { + return; + } + + g_warning ("Source output callback failure"); + return; + } + + if (eol > 0) { + dec_outstanding (control); + return; + } + + update_source_output (control, i); +} + +static void +_pa_context_get_client_info_cb (pa_context *context, + const pa_client_info *i, + int eol, + void *userdata) +{ + GvcMixerControl *control = GVC_MIXER_CONTROL (userdata); + + if (eol < 0) { + if (pa_context_errno (context) == PA_ERR_NOENTITY) { + return; + } + + g_warning ("Client callback failure"); + return; + } + + if (eol > 0) { + dec_outstanding (control); + return; + } + + update_client (control, i); +} + +static void +_pa_context_get_card_info_by_index_cb (pa_context *context, + const pa_card_info *i, + int eol, + void *userdata) +{ + GvcMixerControl *control = GVC_MIXER_CONTROL (userdata); + + if (eol < 0) { + if (pa_context_errno (context) == PA_ERR_NOENTITY) + return; + + g_warning ("Card callback failure"); + return; + } + + if (eol > 0) { + dec_outstanding (control); + return; + } + + update_card (control, i); +} + +static void +_pa_context_get_server_info_cb (pa_context *context, + const pa_server_info *i, + void *userdata) +{ + GvcMixerControl *control = GVC_MIXER_CONTROL (userdata); + + if (i == NULL) { + g_warning ("Server info callback failure"); + return; + } + + update_server (control, i); + dec_outstanding (control); +} + +static void +remove_event_role_stream (GvcMixerControl *control) +{ + g_debug ("Removing event role"); +} + +static void +update_event_role_stream (GvcMixerControl *control, + const pa_ext_stream_restore_info *info) +{ + GvcMixerStream *stream; + gboolean is_new; + pa_volume_t max_volume; + + if (strcmp (info->name, "sink-input-by-media-role:event") != 0) { + return; + } + +#if 0 + g_debug ("Updating event role: name='%s' device='%s'", + info->name, + info->device); +#endif + + is_new = FALSE; + + if (!control->priv->event_sink_input_is_set) { + pa_channel_map pa_map; + GvcChannelMap *map; + + pa_map.channels = 1; + pa_map.map[0] = PA_CHANNEL_POSITION_MONO; + map = gvc_channel_map_new_from_pa_channel_map (&pa_map); + + stream = gvc_mixer_event_role_new (control->priv->pa_context, + info->device, + map); + control->priv->event_sink_input_id = gvc_mixer_stream_get_id (stream); + control->priv->event_sink_input_is_set = TRUE; + + is_new = TRUE; + } else { + stream = g_hash_table_lookup (control->priv->all_streams, + GUINT_TO_POINTER (control->priv->event_sink_input_id)); + } + + max_volume = pa_cvolume_max (&info->volume); + + gvc_mixer_stream_set_name (stream, _("System Sounds")); + gvc_mixer_stream_set_icon_name (stream, "multimedia-volume-control"); + gvc_mixer_stream_set_volume (stream, (guint)max_volume); + gvc_mixer_stream_set_is_muted (stream, info->mute); + + if (is_new) { + add_stream (control, stream); + } +} + +static void +_pa_ext_stream_restore_read_cb (pa_context *context, + const pa_ext_stream_restore_info *i, + int eol, + void *userdata) +{ + GvcMixerControl *control = GVC_MIXER_CONTROL (userdata); + + if (eol < 0) { + g_debug ("Failed to initialized stream_restore extension: %s", + pa_strerror (pa_context_errno (context))); + remove_event_role_stream (control); + return; + } + + if (eol > 0) { + dec_outstanding (control); + /* If we don't have an event stream to restore, then + * set one up with a default 100% volume */ + if (!control->priv->event_sink_input_is_set) { + pa_ext_stream_restore_info info; + + memset (&info, 0, sizeof(info)); + info.name = "sink-input-by-media-role:event"; + info.volume.channels = 1; + info.volume.values[0] = PA_VOLUME_NORM; + update_event_role_stream (control, &info); + } + return; + } + + update_event_role_stream (control, i); +} + +static void +_pa_ext_stream_restore_subscribe_cb (pa_context *context, + void *userdata) +{ + GvcMixerControl *control = GVC_MIXER_CONTROL (userdata); + pa_operation *o; + + o = pa_ext_stream_restore_read (context, + _pa_ext_stream_restore_read_cb, + control); + if (o == NULL) { + g_warning ("pa_ext_stream_restore_read() failed"); + return; + } + + pa_operation_unref (o); +} + +static void +req_update_server_info (GvcMixerControl *control, + int index) +{ + pa_operation *o; + + o = pa_context_get_server_info (control->priv->pa_context, + _pa_context_get_server_info_cb, + control); + if (o == NULL) { + g_warning ("pa_context_get_server_info() failed"); + return; + } + pa_operation_unref (o); +} + +static void +req_update_client_info (GvcMixerControl *control, + int index) +{ + pa_operation *o; + + if (index < 0) { + o = pa_context_get_client_info_list (control->priv->pa_context, + _pa_context_get_client_info_cb, + control); + } else { + o = pa_context_get_client_info (control->priv->pa_context, + index, + _pa_context_get_client_info_cb, + control); + } + + if (o == NULL) { + g_warning ("pa_context_client_info_list() failed"); + return; + } + pa_operation_unref (o); +} + +static void +req_update_card (GvcMixerControl *control, + int index) +{ + pa_operation *o; + + if (index < 0) { + o = pa_context_get_card_info_list (control->priv->pa_context, + _pa_context_get_card_info_by_index_cb, + control); + } else { + o = pa_context_get_card_info_by_index (control->priv->pa_context, + index, + _pa_context_get_card_info_by_index_cb, + control); + } + + if (o == NULL) { + g_warning ("pa_context_get_card_info_by_index() failed"); + return; + } + pa_operation_unref (o); +} + +static void +req_update_sink_info (GvcMixerControl *control, + int index) +{ + pa_operation *o; + + if (index < 0) { + o = pa_context_get_sink_info_list (control->priv->pa_context, + _pa_context_get_sink_info_cb, + control); + } else { + o = pa_context_get_sink_info_by_index (control->priv->pa_context, + index, + _pa_context_get_sink_info_cb, + control); + } + + if (o == NULL) { + g_warning ("pa_context_get_sink_info_list() failed"); + return; + } + pa_operation_unref (o); +} + +static void +req_update_source_info (GvcMixerControl *control, + int index) +{ + pa_operation *o; + + if (index < 0) { + o = pa_context_get_source_info_list (control->priv->pa_context, + _pa_context_get_source_info_cb, + control); + } else { + o = pa_context_get_source_info_by_index(control->priv->pa_context, + index, + _pa_context_get_source_info_cb, + control); + } + + if (o == NULL) { + g_warning ("pa_context_get_source_info_list() failed"); + return; + } + pa_operation_unref (o); +} + +static void +req_update_sink_input_info (GvcMixerControl *control, + int index) +{ + pa_operation *o; + + if (index < 0) { + o = pa_context_get_sink_input_info_list (control->priv->pa_context, + _pa_context_get_sink_input_info_cb, + control); + } else { + o = pa_context_get_sink_input_info (control->priv->pa_context, + index, + _pa_context_get_sink_input_info_cb, + control); + } + + if (o == NULL) { + g_warning ("pa_context_get_sink_input_info_list() failed"); + return; + } + pa_operation_unref (o); +} + +static void +req_update_source_output_info (GvcMixerControl *control, + int index) +{ + pa_operation *o; + + if (index < 0) { + o = pa_context_get_source_output_info_list (control->priv->pa_context, + _pa_context_get_source_output_info_cb, + control); + } else { + o = pa_context_get_source_output_info (control->priv->pa_context, + index, + _pa_context_get_source_output_info_cb, + control); + } + + if (o == NULL) { + g_warning ("pa_context_get_source_output_info_list() failed"); + return; + } + pa_operation_unref (o); +} + +static void +remove_client (GvcMixerControl *control, + guint index) +{ + g_hash_table_remove (control->priv->clients, + GUINT_TO_POINTER (index)); +} + +static void +remove_card (GvcMixerControl *control, + guint index) +{ + g_hash_table_remove (control->priv->cards, + GUINT_TO_POINTER (index)); + + g_signal_emit (G_OBJECT (control), + signals[CARD_REMOVED], + 0, + index); +} + +static void +remove_sink (GvcMixerControl *control, + guint index) +{ + GvcMixerStream *stream; + +#if 0 + g_debug ("Removing sink: index=%u", index); +#endif + + stream = g_hash_table_lookup (control->priv->sinks, + GUINT_TO_POINTER (index)); + if (stream == NULL) { + return; + } + g_hash_table_remove (control->priv->sinks, + GUINT_TO_POINTER (index)); + + remove_stream (control, stream); +} + +static void +remove_source (GvcMixerControl *control, + guint index) +{ + GvcMixerStream *stream; + +#if 0 + g_debug ("Removing source: index=%u", index); +#endif + + stream = g_hash_table_lookup (control->priv->sources, + GUINT_TO_POINTER (index)); + if (stream == NULL) { + return; + } + g_hash_table_remove (control->priv->sources, + GUINT_TO_POINTER (index)); + + remove_stream (control, stream); +} + +static void +remove_sink_input (GvcMixerControl *control, + guint index) +{ + GvcMixerStream *stream; + +#if 0 + g_debug ("Removing sink input: index=%u", index); +#endif + stream = g_hash_table_lookup (control->priv->sink_inputs, + GUINT_TO_POINTER (index)); + if (stream == NULL) { + return; + } + g_hash_table_remove (control->priv->sink_inputs, + GUINT_TO_POINTER (index)); + + remove_stream (control, stream); +} + +static void +remove_source_output (GvcMixerControl *control, + guint index) +{ + GvcMixerStream *stream; + +#if 0 + g_debug ("Removing source output: index=%u", index); +#endif + + stream = g_hash_table_lookup (control->priv->source_outputs, + GUINT_TO_POINTER (index)); + if (stream == NULL) { + return; + } + g_hash_table_remove (control->priv->source_outputs, + GUINT_TO_POINTER (index)); + + remove_stream (control, stream); +} + +static void +_pa_context_subscribe_cb (pa_context *context, + pa_subscription_event_type_t t, + uint32_t index, + void *userdata) +{ + GvcMixerControl *control = GVC_MIXER_CONTROL (userdata); + + switch (t & PA_SUBSCRIPTION_EVENT_FACILITY_MASK) { + case PA_SUBSCRIPTION_EVENT_SINK: + if ((t & PA_SUBSCRIPTION_EVENT_TYPE_MASK) == PA_SUBSCRIPTION_EVENT_REMOVE) { + remove_sink (control, index); + } else { + req_update_sink_info (control, index); + } + break; + + case PA_SUBSCRIPTION_EVENT_SOURCE: + if ((t & PA_SUBSCRIPTION_EVENT_TYPE_MASK) == PA_SUBSCRIPTION_EVENT_REMOVE) { + remove_source (control, index); + } else { + req_update_source_info (control, index); + } + break; + + case PA_SUBSCRIPTION_EVENT_SINK_INPUT: + if ((t & PA_SUBSCRIPTION_EVENT_TYPE_MASK) == PA_SUBSCRIPTION_EVENT_REMOVE) { + remove_sink_input (control, index); + } else { + req_update_sink_input_info (control, index); + } + break; + + case PA_SUBSCRIPTION_EVENT_SOURCE_OUTPUT: + if ((t & PA_SUBSCRIPTION_EVENT_TYPE_MASK) == PA_SUBSCRIPTION_EVENT_REMOVE) { + remove_source_output (control, index); + } else { + req_update_source_output_info (control, index); + } + break; + + case PA_SUBSCRIPTION_EVENT_CLIENT: + if ((t & PA_SUBSCRIPTION_EVENT_TYPE_MASK) == PA_SUBSCRIPTION_EVENT_REMOVE) { + remove_client (control, index); + } else { + req_update_client_info (control, index); + } + break; + + case PA_SUBSCRIPTION_EVENT_SERVER: + req_update_server_info (control, index); + break; + + case PA_SUBSCRIPTION_EVENT_CARD: + if ((t & PA_SUBSCRIPTION_EVENT_TYPE_MASK) == PA_SUBSCRIPTION_EVENT_REMOVE) { + remove_card (control, index); + } else { + req_update_card (control, index); + } + break; + } +} + +static void +gvc_mixer_control_ready (GvcMixerControl *control) +{ + pa_operation *o; + + pa_context_set_subscribe_callback (control->priv->pa_context, + _pa_context_subscribe_cb, + control); + o = pa_context_subscribe (control->priv->pa_context, + (pa_subscription_mask_t) + (PA_SUBSCRIPTION_MASK_SINK| + PA_SUBSCRIPTION_MASK_SOURCE| + PA_SUBSCRIPTION_MASK_SINK_INPUT| + PA_SUBSCRIPTION_MASK_SOURCE_OUTPUT| + PA_SUBSCRIPTION_MASK_CLIENT| + PA_SUBSCRIPTION_MASK_SERVER| + PA_SUBSCRIPTION_MASK_CARD), + NULL, + NULL); + + if (o == NULL) { + g_warning ("pa_context_subscribe() failed"); + return; + } + pa_operation_unref (o); + + req_update_server_info (control, -1); + req_update_client_info (control, -1); + req_update_sink_info (control, -1); + req_update_source_info (control, -1); + req_update_sink_input_info (control, -1); + req_update_source_output_info (control, -1); + req_update_card (control, -1); + + control->priv->n_outstanding = 6; + + /* This call is not always supported */ + o = pa_ext_stream_restore_read (control->priv->pa_context, + _pa_ext_stream_restore_read_cb, + control); + if (o != NULL) { + pa_operation_unref (o); + control->priv->n_outstanding++; + + pa_ext_stream_restore_set_subscribe_cb (control->priv->pa_context, + _pa_ext_stream_restore_subscribe_cb, + control); + + o = pa_ext_stream_restore_subscribe (control->priv->pa_context, + 1, + NULL, + NULL); + if (o != NULL) { + pa_operation_unref (o); + } + + } else { + g_debug ("Failed to initialized stream_restore extension: %s", + pa_strerror (pa_context_errno (control->priv->pa_context))); + } +} + +static void +gvc_mixer_new_pa_context (GvcMixerControl *self) +{ + pa_proplist *proplist; + + g_return_if_fail (self); + g_return_if_fail (!self->priv->pa_context); + + proplist = pa_proplist_new (); + pa_proplist_sets (proplist, + PA_PROP_APPLICATION_NAME, + self->priv->name); + pa_proplist_sets (proplist, + PA_PROP_APPLICATION_ID, + "org.mate.VolumeControl"); + pa_proplist_sets (proplist, + PA_PROP_APPLICATION_ICON_NAME, + "multimedia-volume-control"); + pa_proplist_sets (proplist, + PA_PROP_APPLICATION_VERSION, + PACKAGE_VERSION); + + self->priv->pa_context = pa_context_new_with_proplist (self->priv->pa_api, NULL, proplist); + + pa_proplist_free (proplist); + g_assert (self->priv->pa_context); +} + +static void +remove_all_streams (GvcMixerControl *control, GHashTable *hash_table) +{ + GHashTableIter iter; + gpointer key, value; + + g_hash_table_iter_init (&iter, hash_table); + while (g_hash_table_iter_next (&iter, &key, &value)) { + remove_stream (control, value); + g_hash_table_iter_remove (&iter); + } +} + +static gboolean +idle_reconnect (gpointer data) +{ + GvcMixerControl *control = GVC_MIXER_CONTROL (data); + GHashTableIter iter; + gpointer key, value; + + g_return_val_if_fail (control, FALSE); + + if (control->priv->pa_context) { + pa_context_unref (control->priv->pa_context); + control->priv->pa_context = NULL; + gvc_mixer_new_pa_context (control); + } + + remove_all_streams (control, control->priv->sinks); + remove_all_streams (control, control->priv->sources); + remove_all_streams (control, control->priv->sink_inputs); + remove_all_streams (control, control->priv->source_outputs); + + g_hash_table_iter_init (&iter, control->priv->clients); + while (g_hash_table_iter_next (&iter, &key, &value)) + g_hash_table_iter_remove (&iter); + + gvc_mixer_control_open (control); /* cannot fail */ + + control->priv->reconnect_id = 0; + return FALSE; +} + +static void +_pa_context_state_cb (pa_context *context, + void *userdata) +{ + GvcMixerControl *control = GVC_MIXER_CONTROL (userdata); + + switch (pa_context_get_state (context)) { + case PA_CONTEXT_UNCONNECTED: + case PA_CONTEXT_CONNECTING: + case PA_CONTEXT_AUTHORIZING: + case PA_CONTEXT_SETTING_NAME: + break; + + case PA_CONTEXT_READY: + gvc_mixer_control_ready (control); + break; + + case PA_CONTEXT_FAILED: + g_warning ("Connection failed, reconnecting..."); + if (control->priv->reconnect_id == 0) + control->priv->reconnect_id = g_timeout_add_seconds (RECONNECT_DELAY, idle_reconnect, control); + break; + + case PA_CONTEXT_TERMINATED: + default: + /* FIXME: */ + break; + } +} + +gboolean +gvc_mixer_control_open (GvcMixerControl *control) +{ + int res; + + g_return_val_if_fail (GVC_IS_MIXER_CONTROL (control), FALSE); + g_return_val_if_fail (control->priv->pa_context != NULL, FALSE); + g_return_val_if_fail (pa_context_get_state (control->priv->pa_context) == PA_CONTEXT_UNCONNECTED, FALSE); + + pa_context_set_state_callback (control->priv->pa_context, + _pa_context_state_cb, + control); + + g_signal_emit (G_OBJECT (control), signals[CONNECTING], 0); + res = pa_context_connect (control->priv->pa_context, NULL, (pa_context_flags_t) PA_CONTEXT_NOFAIL, NULL); + if (res < 0) { + g_warning ("Failed to connect context: %s", + pa_strerror (pa_context_errno (control->priv->pa_context))); + } + + return res; +} + +gboolean +gvc_mixer_control_close (GvcMixerControl *control) +{ + g_return_val_if_fail (GVC_IS_MIXER_CONTROL (control), FALSE); + g_return_val_if_fail (control->priv->pa_context != NULL, FALSE); + + pa_context_disconnect (control->priv->pa_context); + return TRUE; +} + +static void +gvc_mixer_control_dispose (GObject *object) +{ + GvcMixerControl *control = GVC_MIXER_CONTROL (object); + + if (control->priv->pa_context != NULL) { + pa_context_unref (control->priv->pa_context); + control->priv->pa_context = NULL; + } + + if (control->priv->default_source_name != NULL) { + g_free (control->priv->default_source_name); + control->priv->default_source_name = NULL; + } + if (control->priv->default_sink_name != NULL) { + g_free (control->priv->default_sink_name); + control->priv->default_sink_name = NULL; + } + + if (control->priv->pa_mainloop != NULL) { + pa_glib_mainloop_free (control->priv->pa_mainloop); + control->priv->pa_mainloop = NULL; + } + + if (control->priv->all_streams != NULL) { + g_hash_table_destroy (control->priv->all_streams); + control->priv->all_streams = NULL; + } + + if (control->priv->sinks != NULL) { + g_hash_table_destroy (control->priv->sinks); + control->priv->sinks = NULL; + } + if (control->priv->sources != NULL) { + g_hash_table_destroy (control->priv->sources); + control->priv->sources = NULL; + } + if (control->priv->sink_inputs != NULL) { + g_hash_table_destroy (control->priv->sink_inputs); + control->priv->sink_inputs = NULL; + } + if (control->priv->source_outputs != NULL) { + g_hash_table_destroy (control->priv->source_outputs); + control->priv->source_outputs = NULL; + } + if (control->priv->clients != NULL) { + g_hash_table_destroy (control->priv->clients); + control->priv->clients = NULL; + } + if (control->priv->cards != NULL) { + g_hash_table_destroy (control->priv->cards); + control->priv->cards = NULL; + } + + G_OBJECT_CLASS (gvc_mixer_control_parent_class)->dispose (object); +} + +static void +gvc_mixer_control_set_property (GObject *object, + guint prop_id, + const GValue *value, + GParamSpec *pspec) +{ + GvcMixerControl *self = GVC_MIXER_CONTROL (object); + + switch (prop_id) { + case PROP_NAME: + g_free (self->priv->name); + self->priv->name = g_value_dup_string (value); + g_object_notify (G_OBJECT (self), "name"); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; + } +} + +static void +gvc_mixer_control_get_property (GObject *object, + guint prop_id, + GValue *value, + GParamSpec *pspec) +{ + GvcMixerControl *self = GVC_MIXER_CONTROL (object); + + switch (prop_id) { + case PROP_NAME: + g_value_set_string (value, self->priv->name); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; + } +} + + +static GObject * +gvc_mixer_control_constructor (GType type, + guint n_construct_properties, + GObjectConstructParam *construct_params) +{ + GObject *object; + GvcMixerControl *self; + + object = G_OBJECT_CLASS (gvc_mixer_control_parent_class)->constructor (type, n_construct_properties, construct_params); + + self = GVC_MIXER_CONTROL (object); + + gvc_mixer_new_pa_context (self); + + return object; +} + +static void +gvc_mixer_control_class_init (GvcMixerControlClass *klass) +{ + GObjectClass *object_class = G_OBJECT_CLASS (klass); + + object_class->constructor = gvc_mixer_control_constructor; + object_class->dispose = gvc_mixer_control_dispose; + object_class->finalize = gvc_mixer_control_finalize; + object_class->set_property = gvc_mixer_control_set_property; + object_class->get_property = gvc_mixer_control_get_property; + + g_object_class_install_property (object_class, + PROP_NAME, + g_param_spec_string ("name", + "Name", + "Name to display for this mixer control", + NULL, + G_PARAM_READWRITE|G_PARAM_CONSTRUCT_ONLY)); + + signals [CONNECTING] = + g_signal_new ("connecting", + G_TYPE_FROM_CLASS (klass), + G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET (GvcMixerControlClass, connecting), + NULL, NULL, + g_cclosure_marshal_VOID__VOID, + G_TYPE_NONE, 0); + signals [READY] = + g_signal_new ("ready", + G_TYPE_FROM_CLASS (klass), + G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET (GvcMixerControlClass, ready), + NULL, NULL, + g_cclosure_marshal_VOID__VOID, + G_TYPE_NONE, 0); + signals [STREAM_ADDED] = + g_signal_new ("stream-added", + G_TYPE_FROM_CLASS (klass), + G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET (GvcMixerControlClass, stream_added), + NULL, NULL, + g_cclosure_marshal_VOID__UINT, + G_TYPE_NONE, 1, G_TYPE_UINT); + signals [STREAM_REMOVED] = + g_signal_new ("stream-removed", + G_TYPE_FROM_CLASS (klass), + G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET (GvcMixerControlClass, stream_removed), + NULL, NULL, + g_cclosure_marshal_VOID__UINT, + G_TYPE_NONE, 1, G_TYPE_UINT); + signals [CARD_ADDED] = + g_signal_new ("card-added", + G_TYPE_FROM_CLASS (klass), + G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET (GvcMixerControlClass, card_added), + NULL, NULL, + g_cclosure_marshal_VOID__UINT, + G_TYPE_NONE, 1, G_TYPE_UINT); + signals [CARD_REMOVED] = + g_signal_new ("card-removed", + G_TYPE_FROM_CLASS (klass), + G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET (GvcMixerControlClass, card_removed), + NULL, NULL, + g_cclosure_marshal_VOID__UINT, + G_TYPE_NONE, 1, G_TYPE_UINT); + signals [DEFAULT_SINK_CHANGED] = + g_signal_new ("default-sink-changed", + G_TYPE_FROM_CLASS (klass), + G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET (GvcMixerControlClass, default_sink_changed), + NULL, NULL, + g_cclosure_marshal_VOID__UINT, + G_TYPE_NONE, 1, G_TYPE_UINT); + signals [DEFAULT_SOURCE_CHANGED] = + g_signal_new ("default-source-changed", + G_TYPE_FROM_CLASS (klass), + G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET (GvcMixerControlClass, default_source_changed), + NULL, NULL, + g_cclosure_marshal_VOID__UINT, + G_TYPE_NONE, 1, G_TYPE_UINT); + + g_type_class_add_private (klass, sizeof (GvcMixerControlPrivate)); +} + +static void +gvc_mixer_control_init (GvcMixerControl *control) +{ + control->priv = GVC_MIXER_CONTROL_GET_PRIVATE (control); + + control->priv->pa_mainloop = pa_glib_mainloop_new (g_main_context_default ()); + g_assert (control->priv->pa_mainloop); + + control->priv->pa_api = pa_glib_mainloop_get_api (control->priv->pa_mainloop); + g_assert (control->priv->pa_api); + + control->priv->all_streams = g_hash_table_new_full (NULL, NULL, NULL, (GDestroyNotify)g_object_unref); + control->priv->sinks = g_hash_table_new_full (NULL, NULL, NULL, (GDestroyNotify)g_object_unref); + control->priv->sources = g_hash_table_new_full (NULL, NULL, NULL, (GDestroyNotify)g_object_unref); + control->priv->sink_inputs = g_hash_table_new_full (NULL, NULL, NULL, (GDestroyNotify)g_object_unref); + control->priv->source_outputs = g_hash_table_new_full (NULL, NULL, NULL, (GDestroyNotify)g_object_unref); + control->priv->cards = g_hash_table_new_full (NULL, NULL, NULL, (GDestroyNotify)g_object_unref); + + control->priv->clients = g_hash_table_new_full (NULL, NULL, NULL, (GDestroyNotify)g_free); +} + +static void +gvc_mixer_control_finalize (GObject *object) +{ + GvcMixerControl *mixer_control; + + g_return_if_fail (object != NULL); + g_return_if_fail (GVC_IS_MIXER_CONTROL (object)); + + mixer_control = GVC_MIXER_CONTROL (object); + g_free (mixer_control->priv->name); + mixer_control->priv->name = NULL; + + g_return_if_fail (mixer_control->priv != NULL); + G_OBJECT_CLASS (gvc_mixer_control_parent_class)->finalize (object); +} + +GvcMixerControl * +gvc_mixer_control_new (const char *name) +{ + GObject *control; + control = g_object_new (GVC_TYPE_MIXER_CONTROL, + "name", name, + NULL); + return GVC_MIXER_CONTROL (control); +} diff --git a/mate-volume-control/src/gvc-mixer-control.h b/mate-volume-control/src/gvc-mixer-control.h new file mode 100644 index 0000000..d49e5a3 --- /dev/null +++ b/mate-volume-control/src/gvc-mixer-control.h @@ -0,0 +1,98 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*- + * + * Copyright (C) 2008 Red Hat, Inc. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + */ + +#ifndef __GVC_MIXER_CONTROL_H +#define __GVC_MIXER_CONTROL_H + +#include <glib-object.h> +#include <pulse/pulseaudio.h> +#include "gvc-mixer-stream.h" +#include "gvc-mixer-card.h" + +G_BEGIN_DECLS + +#define GVC_TYPE_MIXER_CONTROL (gvc_mixer_control_get_type ()) +#define GVC_MIXER_CONTROL(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), GVC_TYPE_MIXER_CONTROL, GvcMixerControl)) +#define GVC_MIXER_CONTROL_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), GVC_TYPE_MIXER_CONTROL, GvcMixerControlClass)) +#define GVC_IS_MIXER_CONTROL(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GVC_TYPE_MIXER_CONTROL)) +#define GVC_IS_MIXER_CONTROL_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), GVC_TYPE_MIXER_CONTROL)) +#define GVC_MIXER_CONTROL_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), GVC_TYPE_MIXER_CONTROL, GvcMixerControlClass)) + +typedef struct GvcMixerControlPrivate GvcMixerControlPrivate; + +typedef struct +{ + GObject parent; + GvcMixerControlPrivate *priv; +} GvcMixerControl; + +typedef struct +{ + GObjectClass parent_class; + + void (*connecting) (GvcMixerControl *control); + void (*ready) (GvcMixerControl *control); + void (*stream_added) (GvcMixerControl *control, + guint id); + void (*stream_removed) (GvcMixerControl *control, + guint id); + void (*card_added) (GvcMixerControl *control, + guint id); + void (*card_removed) (GvcMixerControl *control, + guint id); + void (*default_sink_changed) (GvcMixerControl *control, + guint id); + void (*default_source_changed) (GvcMixerControl *control, + guint id); +} GvcMixerControlClass; + +GType gvc_mixer_control_get_type (void); + +GvcMixerControl * gvc_mixer_control_new (const char *name); + +gboolean gvc_mixer_control_open (GvcMixerControl *control); +gboolean gvc_mixer_control_close (GvcMixerControl *control); +gboolean gvc_mixer_control_is_ready (GvcMixerControl *control); + +pa_context * gvc_mixer_control_get_pa_context (GvcMixerControl *control); +GSList * gvc_mixer_control_get_cards (GvcMixerControl *control); +GSList * gvc_mixer_control_get_streams (GvcMixerControl *control); +GSList * gvc_mixer_control_get_sinks (GvcMixerControl *control); +GSList * gvc_mixer_control_get_sources (GvcMixerControl *control); +GSList * gvc_mixer_control_get_sink_inputs (GvcMixerControl *control); +GSList * gvc_mixer_control_get_source_outputs (GvcMixerControl *control); + +GvcMixerStream * gvc_mixer_control_lookup_stream_id (GvcMixerControl *control, + guint id); +GvcMixerCard * gvc_mixer_control_lookup_card_id (GvcMixerControl *control, + guint id); + +GvcMixerStream * gvc_mixer_control_get_default_sink (GvcMixerControl *control); +GvcMixerStream * gvc_mixer_control_get_default_source (GvcMixerControl *control); +GvcMixerStream * gvc_mixer_control_get_event_sink_input (GvcMixerControl *control); + +gboolean gvc_mixer_control_set_default_sink (GvcMixerControl *control, + GvcMixerStream *stream); +gboolean gvc_mixer_control_set_default_source (GvcMixerControl *control, + GvcMixerStream *stream); + +G_END_DECLS + +#endif /* __GVC_MIXER_CONTROL_H */ diff --git a/mate-volume-control/src/gvc-mixer-dialog.c b/mate-volume-control/src/gvc-mixer-dialog.c new file mode 100644 index 0000000..cf8fcc1 --- /dev/null +++ b/mate-volume-control/src/gvc-mixer-dialog.c @@ -0,0 +1,2134 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*- + * + * Copyright (C) 2008 William Jon McCann + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + */ + +#include "config.h" + +#include <stdlib.h> +#include <stdio.h> +#include <unistd.h> + +#include <glib.h> +#include <glib/gi18n.h> +#include <gdk/gdkkeysyms.h> +#include <gtk/gtk.h> + +#include "gvc-channel-bar.h" +#include "gvc-balance-bar.h" +#include "gvc-combo-box.h" +#include "gvc-mixer-control.h" +#include "gvc-mixer-card.h" +#include "gvc-mixer-sink.h" +#include "gvc-mixer-source.h" +#include "gvc-mixer-source-output.h" +#include "gvc-mixer-dialog.h" +#include "gvc-sound-theme-chooser.h" +#include "gvc-level-bar.h" +#include "gvc-speaker-test.h" + +#define SCALE_SIZE 128 + +#define GVC_MIXER_DIALOG_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GVC_TYPE_MIXER_DIALOG, GvcMixerDialogPrivate)) + +struct GvcMixerDialogPrivate +{ + GvcMixerControl *mixer_control; + GHashTable *bars; + GtkWidget *notebook; + GtkWidget *output_bar; + GtkWidget *input_bar; + GtkWidget *input_level_bar; + GtkWidget *effects_bar; + GtkWidget *output_stream_box; + GtkWidget *sound_effects_box; + GtkWidget *hw_box; + GtkWidget *hw_treeview; + GtkWidget *hw_settings_box; + GtkWidget *hw_profile_combo; + GtkWidget *input_box; + GtkWidget *output_box; + GtkWidget *applications_box; + GtkWidget *no_apps_label; + GtkWidget *output_treeview; + GtkWidget *output_settings_box; + GtkWidget *output_balance_bar; + GtkWidget *output_fade_bar; + GtkWidget *output_lfe_bar; + GtkWidget *output_port_combo; + GtkWidget *input_treeview; + GtkWidget *input_port_combo; + GtkWidget *input_settings_box; + GtkWidget *sound_theme_chooser; + GtkWidget *click_feedback_button; + GtkWidget *audible_bell_button; + GtkSizeGroup *size_group; + GtkSizeGroup *apps_size_group; + + gdouble last_input_peak; + guint num_apps; +}; + +enum { + NAME_COLUMN, + DEVICE_COLUMN, + ACTIVE_COLUMN, + ID_COLUMN, + SPEAKERS_COLUMN, + NUM_COLUMNS +}; + +enum { + HW_ID_COLUMN, + HW_ICON_COLUMN, + HW_NAME_COLUMN, + HW_STATUS_COLUMN, + HW_PROFILE_COLUMN, + HW_PROFILE_HUMAN_COLUMN, + HW_SENSITIVE_COLUMN, + HW_NUM_COLUMNS +}; + +enum +{ + PROP_0, + PROP_MIXER_CONTROL +}; + +static void gvc_mixer_dialog_class_init (GvcMixerDialogClass *klass); +static void gvc_mixer_dialog_init (GvcMixerDialog *mixer_dialog); +static void gvc_mixer_dialog_finalize (GObject *object); + +static void bar_set_stream (GvcMixerDialog *dialog, + GtkWidget *bar, + GvcMixerStream *stream); + +static void on_adjustment_value_changed (GtkAdjustment *adjustment, + GvcMixerDialog *dialog); + +G_DEFINE_TYPE (GvcMixerDialog, gvc_mixer_dialog, GTK_TYPE_DIALOG) + +static void +update_default_input (GvcMixerDialog *dialog) +{ + GtkTreeModel *model; + GtkTreeIter iter; + gboolean ret; + + model = gtk_tree_view_get_model (GTK_TREE_VIEW (dialog->priv->input_treeview)); + ret = gtk_tree_model_get_iter_first (model, &iter); + if (ret == FALSE) { + g_debug ("No default input selected or available"); + return; + } + do { + gboolean toggled; + gboolean is_default; + guint id; + GvcMixerStream *stream; + + gtk_tree_model_get (model, &iter, + ID_COLUMN, &id, + ACTIVE_COLUMN, &toggled, + -1); + + stream = gvc_mixer_control_lookup_stream_id (dialog->priv->mixer_control, id); + if (stream == NULL) { + g_warning ("Unable to find stream for id: %u", id); + continue; + } + + is_default = FALSE; + if (stream == gvc_mixer_control_get_default_source (dialog->priv->mixer_control)) { + is_default = TRUE; + } + + gtk_list_store_set (GTK_LIST_STORE (model), + &iter, + ACTIVE_COLUMN, is_default, + -1); + } while (gtk_tree_model_iter_next (model, &iter)); +} + +static void +update_description (GvcMixerDialog *dialog, + guint column, + const char *value, + GvcMixerStream *stream) +{ + GtkTreeModel *model; + GtkTreeIter iter; + guint id; + + if (GVC_IS_MIXER_SOURCE (stream)) + model = gtk_tree_view_get_model (GTK_TREE_VIEW (dialog->priv->input_treeview)); + else if (GVC_IS_MIXER_SINK (stream)) + model = gtk_tree_view_get_model (GTK_TREE_VIEW (dialog->priv->output_treeview)); + else + g_assert_not_reached (); + gtk_tree_model_get_iter_first (model, &iter); + + id = gvc_mixer_stream_get_id (stream); + do { + guint current_id; + + gtk_tree_model_get (model, &iter, + ID_COLUMN, ¤t_id, + -1); + if (id != current_id) + continue; + + gtk_list_store_set (GTK_LIST_STORE (model), + &iter, + column, value, + -1); + break; + } while (gtk_tree_model_iter_next (model, &iter)); +} + +static void +port_selection_changed (GvcComboBox *combo_box, + const char *port, + GvcMixerDialog *dialog) +{ + GvcMixerStream *stream; + + stream = g_object_get_data (G_OBJECT (combo_box), "stream"); + if (stream == NULL) { + g_warning ("Could not find stream for port combo box"); + return; + } + if (gvc_mixer_stream_change_port (stream, port) == FALSE) { + g_warning ("Could not change port for stream"); + } +} + +static void +update_output_settings (GvcMixerDialog *dialog) +{ + GvcMixerStream *stream; + const GvcChannelMap *map; + const GList *ports; + + g_debug ("Updating output settings"); + if (dialog->priv->output_balance_bar != NULL) { + gtk_container_remove (GTK_CONTAINER (dialog->priv->output_settings_box), + dialog->priv->output_balance_bar); + dialog->priv->output_balance_bar = NULL; + } + if (dialog->priv->output_fade_bar != NULL) { + gtk_container_remove (GTK_CONTAINER (dialog->priv->output_settings_box), + dialog->priv->output_fade_bar); + dialog->priv->output_fade_bar = NULL; + } + if (dialog->priv->output_lfe_bar != NULL) { + gtk_container_remove (GTK_CONTAINER (dialog->priv->output_settings_box), + dialog->priv->output_lfe_bar); + dialog->priv->output_lfe_bar = NULL; + } + if (dialog->priv->output_port_combo != NULL) { + gtk_container_remove (GTK_CONTAINER (dialog->priv->output_settings_box), + dialog->priv->output_port_combo); + dialog->priv->output_port_combo = NULL; + } + + stream = gvc_mixer_control_get_default_sink (dialog->priv->mixer_control); + if (stream == NULL) { + g_warning ("Default sink stream not found"); + return; + } + + gvc_channel_bar_set_base_volume (GVC_CHANNEL_BAR (dialog->priv->output_bar), + gvc_mixer_stream_get_base_volume (stream)); + gvc_channel_bar_set_is_amplified (GVC_CHANNEL_BAR (dialog->priv->output_bar), + gvc_mixer_stream_get_can_decibel (stream)); + + map = gvc_mixer_stream_get_channel_map (stream); + if (map == NULL) { + g_warning ("Default sink stream has no channel map"); + return; + } + + dialog->priv->output_balance_bar = gvc_balance_bar_new (map, BALANCE_TYPE_RL); + if (dialog->priv->size_group != NULL) { + gvc_balance_bar_set_size_group (GVC_BALANCE_BAR (dialog->priv->output_balance_bar), + dialog->priv->size_group, + TRUE); + } + gtk_box_pack_start (GTK_BOX (dialog->priv->output_settings_box), + dialog->priv->output_balance_bar, + FALSE, FALSE, 6); + gtk_widget_show (dialog->priv->output_balance_bar); + + if (gvc_channel_map_can_fade (map)) { + dialog->priv->output_fade_bar = gvc_balance_bar_new (map, BALANCE_TYPE_FR); + if (dialog->priv->size_group != NULL) { + gvc_balance_bar_set_size_group (GVC_BALANCE_BAR (dialog->priv->output_fade_bar), + dialog->priv->size_group, + TRUE); + } + gtk_box_pack_start (GTK_BOX (dialog->priv->output_settings_box), + dialog->priv->output_fade_bar, + FALSE, FALSE, 6); + gtk_widget_show (dialog->priv->output_fade_bar); + } + + if (gvc_channel_map_has_lfe (map)) { + dialog->priv->output_lfe_bar = gvc_balance_bar_new (map, BALANCE_TYPE_LFE); + if (dialog->priv->size_group != NULL) { + gvc_balance_bar_set_size_group (GVC_BALANCE_BAR (dialog->priv->output_lfe_bar), + dialog->priv->size_group, + TRUE); + } + gtk_box_pack_start (GTK_BOX (dialog->priv->output_settings_box), + dialog->priv->output_lfe_bar, + FALSE, FALSE, 6); + gtk_widget_show (dialog->priv->output_lfe_bar); + } + + ports = gvc_mixer_stream_get_ports (stream); + if (ports != NULL) { + const GvcMixerStreamPort *port; + port = gvc_mixer_stream_get_port (stream); + + dialog->priv->output_port_combo = gvc_combo_box_new (_("Co_nnector:")); + gvc_combo_box_set_ports (GVC_COMBO_BOX (dialog->priv->output_port_combo), + ports); + gvc_combo_box_set_active (GVC_COMBO_BOX (dialog->priv->output_port_combo), port->port); + g_object_set_data (G_OBJECT (dialog->priv->output_port_combo), "stream", stream); + g_signal_connect (G_OBJECT (dialog->priv->output_port_combo), "changed", + G_CALLBACK (port_selection_changed), dialog); + + gtk_box_pack_start (GTK_BOX (dialog->priv->output_settings_box), + dialog->priv->output_port_combo, + TRUE, FALSE, 6); + + gvc_combo_box_set_size_group (GVC_COMBO_BOX (dialog->priv->output_port_combo), dialog->priv->size_group, FALSE); + + gtk_widget_show (dialog->priv->output_port_combo); + } + + /* FIXME: We could make this into a "No settings" label instead */ + gtk_widget_set_sensitive (dialog->priv->output_balance_bar, gvc_channel_map_can_balance (map)); +} + +static void +update_default_output (GvcMixerDialog *dialog) +{ + GtkTreeModel *model; + GtkTreeIter iter; + + model = gtk_tree_view_get_model (GTK_TREE_VIEW (dialog->priv->output_treeview)); + gtk_tree_model_get_iter_first (model, &iter); + do { + gboolean toggled; + gboolean is_default; + guint id; + GvcMixerStream *stream; + + gtk_tree_model_get (model, &iter, + ID_COLUMN, &id, + ACTIVE_COLUMN, &toggled, + -1); + + stream = gvc_mixer_control_lookup_stream_id (dialog->priv->mixer_control, id); + if (stream == NULL) { + g_warning ("Unable to find stream for id: %u", id); + continue; + } + + is_default = FALSE; + if (stream == gvc_mixer_control_get_default_sink (dialog->priv->mixer_control)) { + is_default = TRUE; + } + + gtk_list_store_set (GTK_LIST_STORE (model), + &iter, + ACTIVE_COLUMN, is_default, + -1); + } while (gtk_tree_model_iter_next (model, &iter)); +} + +static void +on_mixer_control_default_sink_changed (GvcMixerControl *control, + guint id, + GvcMixerDialog *dialog) +{ + GvcMixerStream *stream; + + g_debug ("GvcMixerDialog: default sink changed: %u", id); + + if (id == PA_INVALID_INDEX) + stream = NULL; + else + stream = gvc_mixer_control_lookup_stream_id (dialog->priv->mixer_control, + id); + bar_set_stream (dialog, dialog->priv->output_bar, stream); + + update_output_settings (dialog); + + update_default_output (dialog); +} + + +#define DECAY_STEP .15 + +static void +update_input_peak (GvcMixerDialog *dialog, + gdouble v) +{ + GtkAdjustment *adj; + + if (dialog->priv->last_input_peak >= DECAY_STEP) { + if (v < dialog->priv->last_input_peak - DECAY_STEP) { + v = dialog->priv->last_input_peak - DECAY_STEP; + } + } + + dialog->priv->last_input_peak = v; + + adj = gvc_level_bar_get_peak_adjustment (GVC_LEVEL_BAR (dialog->priv->input_level_bar)); + if (v >= 0) { + gtk_adjustment_set_value (adj, v); + } else { + gtk_adjustment_set_value (adj, 0.0); + } +} + +static void +update_input_meter (GvcMixerDialog *dialog, + uint32_t source_index, + uint32_t sink_input_idx, + double v) +{ + update_input_peak (dialog, v); +} + +static void +on_monitor_suspended_callback (pa_stream *s, + void *userdata) +{ + GvcMixerDialog *dialog; + + dialog = userdata; + + if (pa_stream_is_suspended (s)) { + g_debug ("Stream suspended"); + update_input_meter (dialog, + pa_stream_get_device_index (s), + PA_INVALID_INDEX, + -1); + } +} + +static void +on_monitor_read_callback (pa_stream *s, + size_t length, + void *userdata) +{ + GvcMixerDialog *dialog; + const void *data; + double v; + + dialog = userdata; + + if (pa_stream_peek (s, &data, &length) < 0) { + g_warning ("Failed to read data from stream"); + return; + } + + assert (length > 0); + assert (length % sizeof (float) == 0); + + v = ((const float *) data)[length / sizeof (float) -1]; + + pa_stream_drop (s); + + if (v < 0) { + v = 0; + } + if (v > 1) { + v = 1; + } + + update_input_meter (dialog, + pa_stream_get_device_index (s), + pa_stream_get_monitor_stream (s), + v); +} + +static void +create_monitor_stream_for_source (GvcMixerDialog *dialog, + GvcMixerStream *stream) +{ + pa_stream *s; + char t[16]; + pa_buffer_attr attr; + pa_sample_spec ss; + pa_context *context; + int res; + pa_proplist *proplist; + gboolean has_monitor; + + if (stream == NULL) { + return; + } + has_monitor = GPOINTER_TO_INT (g_object_get_data (G_OBJECT (stream), "has-monitor")); + if (has_monitor != FALSE) { + return; + } + + g_debug ("Create monitor for %u", + gvc_mixer_stream_get_index (stream)); + + context = gvc_mixer_control_get_pa_context (dialog->priv->mixer_control); + + if (pa_context_get_server_protocol_version (context) < 13) { + return; + } + + ss.channels = 1; + ss.format = PA_SAMPLE_FLOAT32; + ss.rate = 25; + + memset (&attr, 0, sizeof (attr)); + attr.fragsize = sizeof (float); + attr.maxlength = (uint32_t) -1; + + snprintf (t, sizeof (t), "%u", gvc_mixer_stream_get_index (stream)); + + proplist = pa_proplist_new (); + pa_proplist_sets (proplist, PA_PROP_APPLICATION_ID, "org.mate.VolumeControl"); + s = pa_stream_new_with_proplist (context, _("Peak detect"), &ss, NULL, proplist); + pa_proplist_free (proplist); + if (s == NULL) { + g_warning ("Failed to create monitoring stream"); + return; + } + + pa_stream_set_read_callback (s, on_monitor_read_callback, dialog); + pa_stream_set_suspended_callback (s, on_monitor_suspended_callback, dialog); + + res = pa_stream_connect_record (s, + t, + &attr, + (pa_stream_flags_t) (PA_STREAM_DONT_MOVE + |PA_STREAM_PEAK_DETECT + |PA_STREAM_ADJUST_LATENCY)); + if (res < 0) { + g_warning ("Failed to connect monitoring stream"); + pa_stream_unref (s); + } else { + g_object_set_data (G_OBJECT (stream), "has-monitor", GINT_TO_POINTER (TRUE)); + g_object_set_data (G_OBJECT (dialog->priv->input_level_bar), "pa_stream", s); + g_object_set_data (G_OBJECT (dialog->priv->input_level_bar), "stream", stream); + } +} + +static void +stop_monitor_stream_for_source (GvcMixerDialog *dialog) +{ + pa_stream *s; + pa_context *context; + int res; + GvcMixerStream *stream; + + s = g_object_get_data (G_OBJECT (dialog->priv->input_level_bar), "pa_stream"); + if (s == NULL) + return; + stream = g_object_get_data (G_OBJECT (dialog->priv->input_level_bar), "stream"); + g_assert (stream != NULL); + + g_debug ("Stopping monitor for %u", pa_stream_get_index (s)); + + context = gvc_mixer_control_get_pa_context (dialog->priv->mixer_control); + + if (pa_context_get_server_protocol_version (context) < 13) { + return; + } + + res = pa_stream_disconnect (s); + if (res == 0) + g_object_set_data (G_OBJECT (stream), "has-monitor", GINT_TO_POINTER (FALSE)); + g_object_set_data (G_OBJECT (dialog->priv->input_level_bar), "pa_stream", NULL); + g_object_set_data (G_OBJECT (dialog->priv->input_level_bar), "stream", NULL); +} + +static void +update_input_settings (GvcMixerDialog *dialog) +{ + const GList *ports; + GvcMixerStream *stream; + + g_debug ("Updating input settings"); + + stop_monitor_stream_for_source (dialog); + + if (dialog->priv->input_port_combo != NULL) { + gtk_container_remove (GTK_CONTAINER (dialog->priv->input_settings_box), + dialog->priv->input_port_combo); + dialog->priv->input_port_combo = NULL; + } + + stream = gvc_mixer_control_get_default_source (dialog->priv->mixer_control); + if (stream == NULL) { + g_debug ("Default source stream not found"); + return; + } + + gvc_channel_bar_set_base_volume (GVC_CHANNEL_BAR (dialog->priv->input_bar), + gvc_mixer_stream_get_base_volume (stream)); + gvc_channel_bar_set_is_amplified (GVC_CHANNEL_BAR (dialog->priv->input_bar), + gvc_mixer_stream_get_can_decibel (stream)); + + ports = gvc_mixer_stream_get_ports (stream); + if (ports != NULL) { + const GvcMixerStreamPort *port; + port = gvc_mixer_stream_get_port (stream); + + dialog->priv->input_port_combo = gvc_combo_box_new (_("Co_nnector:")); + gvc_combo_box_set_ports (GVC_COMBO_BOX (dialog->priv->input_port_combo), + ports); + gvc_combo_box_set_active (GVC_COMBO_BOX (dialog->priv->input_port_combo), port->port); + g_object_set_data (G_OBJECT (dialog->priv->input_port_combo), "stream", stream); + g_signal_connect (G_OBJECT (dialog->priv->input_port_combo), "changed", + G_CALLBACK (port_selection_changed), dialog); + + gvc_combo_box_set_size_group (GVC_COMBO_BOX (dialog->priv->input_port_combo), dialog->priv->size_group, FALSE); + gtk_box_pack_start (GTK_BOX (dialog->priv->input_settings_box), + dialog->priv->input_port_combo, + TRUE, TRUE, 0); + gtk_widget_show (dialog->priv->input_port_combo); + } + + create_monitor_stream_for_source (dialog, stream); +} + +static void +on_mixer_control_default_source_changed (GvcMixerControl *control, + guint id, + GvcMixerDialog *dialog) +{ + GvcMixerStream *stream; + GtkAdjustment *adj; + + g_debug ("GvcMixerDialog: default source changed: %u", id); + + if (id == PA_INVALID_INDEX) + stream = NULL; + else + stream = gvc_mixer_control_lookup_stream_id (dialog->priv->mixer_control, id); + + /* Disconnect the adj, otherwise it might change if is_amplified changes */ + adj = GTK_ADJUSTMENT (gvc_channel_bar_get_adjustment (GVC_CHANNEL_BAR (dialog->priv->input_bar))); + g_signal_handlers_disconnect_by_func(adj, on_adjustment_value_changed, dialog); + + bar_set_stream (dialog, dialog->priv->input_bar, stream); + update_input_settings (dialog); + + g_signal_connect (adj, + "value-changed", + G_CALLBACK (on_adjustment_value_changed), + dialog); + + update_default_input (dialog); +} + +static void +gvc_mixer_dialog_set_mixer_control (GvcMixerDialog *dialog, + GvcMixerControl *control) +{ + g_return_if_fail (GVC_MIXER_DIALOG (dialog)); + g_return_if_fail (GVC_IS_MIXER_CONTROL (control)); + + g_object_ref (control); + + if (dialog->priv->mixer_control != NULL) { + g_signal_handlers_disconnect_by_func (dialog->priv->mixer_control, + G_CALLBACK (on_mixer_control_default_sink_changed), + dialog); + g_signal_handlers_disconnect_by_func (dialog->priv->mixer_control, + G_CALLBACK (on_mixer_control_default_source_changed), + dialog); + g_object_unref (dialog->priv->mixer_control); + } + + dialog->priv->mixer_control = control; + + g_signal_connect (dialog->priv->mixer_control, + "default-sink-changed", + G_CALLBACK (on_mixer_control_default_sink_changed), + dialog); + g_signal_connect (dialog->priv->mixer_control, + "default-source-changed", + G_CALLBACK (on_mixer_control_default_source_changed), + dialog); + + g_object_notify (G_OBJECT (dialog), "mixer-control"); +} + +static GvcMixerControl * +gvc_mixer_dialog_get_mixer_control (GvcMixerDialog *dialog) +{ + g_return_val_if_fail (GVC_IS_MIXER_DIALOG (dialog), NULL); + + return dialog->priv->mixer_control; +} + +static void +gvc_mixer_dialog_set_property (GObject *object, + guint prop_id, + const GValue *value, + GParamSpec *pspec) +{ + GvcMixerDialog *self = GVC_MIXER_DIALOG (object); + + switch (prop_id) { + case PROP_MIXER_CONTROL: + gvc_mixer_dialog_set_mixer_control (self, g_value_get_object (value)); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; + } +} + +static void +gvc_mixer_dialog_get_property (GObject *object, + guint prop_id, + GValue *value, + GParamSpec *pspec) +{ + GvcMixerDialog *self = GVC_MIXER_DIALOG (object); + + switch (prop_id) { + case PROP_MIXER_CONTROL: + g_value_set_object (value, gvc_mixer_dialog_get_mixer_control (self)); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; + } +} + +static void +on_adjustment_value_changed (GtkAdjustment *adjustment, + GvcMixerDialog *dialog) +{ + GvcMixerStream *stream; + + stream = g_object_get_data (G_OBJECT (adjustment), "gvc-mixer-dialog-stream"); + if (stream != NULL) { + GObject *bar; + gdouble volume, rounded; + char *name; + + volume = gtk_adjustment_get_value (adjustment); + rounded = round (volume); + + bar = g_object_get_data (G_OBJECT (adjustment), "gvc-mixer-dialog-bar"); + g_object_get (bar, "name", &name, NULL); + g_debug ("Setting stream volume %lf (rounded: %lf) for bar '%s'", volume, rounded, name); + g_free (name); + + /* FIXME would need to do that in the balance bar really... */ + /* Make sure we do not unmute muted streams, there's a button for that */ + if (volume == 0.0) + gvc_mixer_stream_set_is_muted (stream, TRUE); + /* Only push the volume if it's actually changed */ + if (gvc_mixer_stream_set_volume(stream, (pa_volume_t) rounded) != FALSE) + gvc_mixer_stream_push_volume (stream); + } +} + +static void +on_bar_is_muted_notify (GObject *object, + GParamSpec *pspec, + GvcMixerDialog *dialog) +{ + gboolean is_muted; + GvcMixerStream *stream; + + is_muted = gvc_channel_bar_get_is_muted (GVC_CHANNEL_BAR (object)); + + stream = g_object_get_data (object, "gvc-mixer-dialog-stream"); + if (stream != NULL) { + gvc_mixer_stream_change_is_muted (stream, is_muted); + } else { + char *name; + g_object_get (object, "name", &name, NULL); + g_warning ("Unable to find stream for bar '%s'", name); + g_free (name); + } +} + +static GtkWidget * +lookup_bar_for_stream (GvcMixerDialog *dialog, + GvcMixerStream *stream) +{ + GtkWidget *bar; + + bar = g_hash_table_lookup (dialog->priv->bars, GUINT_TO_POINTER (gvc_mixer_stream_get_id (stream))); + + return bar; +} + +static GtkWidget * +lookup_combo_box_for_stream (GvcMixerDialog *dialog, + GvcMixerStream *stream) +{ + GvcMixerStream *combo_stream; + guint id; + + id = gvc_mixer_stream_get_id (stream); + + if (dialog->priv->output_port_combo != NULL) { + combo_stream = g_object_get_data (G_OBJECT (dialog->priv->output_port_combo), + "stream"); + if (combo_stream != NULL) { + if (id == gvc_mixer_stream_get_id (combo_stream)) + return dialog->priv->output_port_combo; + } + } + + if (dialog->priv->input_port_combo != NULL) { + combo_stream = g_object_get_data (G_OBJECT (dialog->priv->input_port_combo), + "stream"); + if (combo_stream != NULL) { + if (id == gvc_mixer_stream_get_id (combo_stream)) + return dialog->priv->input_port_combo; + } + } + + return NULL; +} + +static void +on_stream_description_notify (GvcMixerStream *stream, + GParamSpec *pspec, + GvcMixerDialog *dialog) +{ + update_description (dialog, NAME_COLUMN, + gvc_mixer_stream_get_description (stream), + stream); +} + +static void +on_stream_port_notify (GObject *object, + GParamSpec *pspec, + GvcMixerDialog *dialog) +{ + GvcComboBox *combo_box; + char *port; + + combo_box = GVC_COMBO_BOX (lookup_combo_box_for_stream (dialog, GVC_MIXER_STREAM (object))); + if (combo_box == NULL) + return; + + g_signal_handlers_block_by_func (G_OBJECT (combo_box), + port_selection_changed, + dialog); + + g_object_get (object, "port", &port, NULL); + gvc_combo_box_set_active (GVC_COMBO_BOX (combo_box), port); + + g_signal_handlers_unblock_by_func (G_OBJECT (combo_box), + port_selection_changed, + dialog); +} + +static void +on_stream_volume_notify (GObject *object, + GParamSpec *pspec, + GvcMixerDialog *dialog) +{ + GvcMixerStream *stream; + GtkWidget *bar; + GtkAdjustment *adj; + + stream = GVC_MIXER_STREAM (object); + + bar = lookup_bar_for_stream (dialog, stream); + + if (bar == NULL) { + g_warning ("Unable to find bar for stream %s in on_stream_volume_notify()", + gvc_mixer_stream_get_name (stream)); + return; + } + + adj = GTK_ADJUSTMENT (gvc_channel_bar_get_adjustment (GVC_CHANNEL_BAR (bar))); + + g_signal_handlers_block_by_func (adj, + on_adjustment_value_changed, + dialog); + + gtk_adjustment_set_value (adj, + gvc_mixer_stream_get_volume (stream)); + + g_signal_handlers_unblock_by_func (adj, + on_adjustment_value_changed, + dialog); +} + +static void +on_stream_is_muted_notify (GObject *object, + GParamSpec *pspec, + GvcMixerDialog *dialog) +{ + GvcMixerStream *stream; + GtkWidget *bar; + gboolean is_muted; + + stream = GVC_MIXER_STREAM (object); + bar = lookup_bar_for_stream (dialog, stream); + + if (bar == NULL) { + g_warning ("Unable to find bar for stream %s in on_stream_is_muted_notify()", + gvc_mixer_stream_get_name (stream)); + return; + } + + is_muted = gvc_mixer_stream_get_is_muted (stream); + gvc_channel_bar_set_is_muted (GVC_CHANNEL_BAR (bar), + is_muted); + + if (stream == gvc_mixer_control_get_default_sink (dialog->priv->mixer_control)) { + gtk_widget_set_sensitive (dialog->priv->applications_box, + !is_muted); + } + +} + +static void +save_bar_for_stream (GvcMixerDialog *dialog, + GvcMixerStream *stream, + GtkWidget *bar) +{ + g_hash_table_insert (dialog->priv->bars, + GUINT_TO_POINTER (gvc_mixer_stream_get_id (stream)), + bar); +} + +static GtkWidget * +create_bar (GvcMixerDialog *dialog, + GtkSizeGroup *size_group, + gboolean symmetric) +{ + GtkWidget *bar; + + bar = gvc_channel_bar_new (); + gtk_widget_set_sensitive (bar, FALSE); + if (size_group != NULL) { + gvc_channel_bar_set_size_group (GVC_CHANNEL_BAR (bar), + size_group, + symmetric); + } + gvc_channel_bar_set_orientation (GVC_CHANNEL_BAR (bar), + GTK_ORIENTATION_HORIZONTAL); + gvc_channel_bar_set_show_mute (GVC_CHANNEL_BAR (bar), + TRUE); + g_signal_connect (bar, + "notify::is-muted", + G_CALLBACK (on_bar_is_muted_notify), + dialog); + return bar; +} + +static void +bar_set_stream (GvcMixerDialog *dialog, + GtkWidget *bar, + GvcMixerStream *stream) +{ + GtkAdjustment *adj; + GvcMixerStream *old_stream; + + g_assert (bar != NULL); + + old_stream = g_object_get_data (G_OBJECT (bar), "gvc-mixer-dialog-stream"); + if (old_stream != NULL) { + char *name; + + g_object_get (bar, "name", &name, NULL); + g_debug ("Disconnecting old stream '%s' from bar '%s'", + gvc_mixer_stream_get_name (old_stream), name); + g_free (name); + + g_signal_handlers_disconnect_by_func (old_stream, on_stream_is_muted_notify, dialog); + g_signal_handlers_disconnect_by_func (old_stream, on_stream_volume_notify, dialog); + g_signal_handlers_disconnect_by_func (old_stream, on_stream_port_notify, dialog); + g_hash_table_remove (dialog->priv->bars, GUINT_TO_POINTER (gvc_mixer_stream_get_id (old_stream))); + } + + gtk_widget_set_sensitive (bar, (stream != NULL)); + + adj = GTK_ADJUSTMENT (gvc_channel_bar_get_adjustment (GVC_CHANNEL_BAR (bar))); + + g_signal_handlers_disconnect_by_func (adj, on_adjustment_value_changed, dialog); + + g_object_set_data (G_OBJECT (bar), "gvc-mixer-dialog-stream", stream); + g_object_set_data (G_OBJECT (adj), "gvc-mixer-dialog-stream", stream); + g_object_set_data (G_OBJECT (adj), "gvc-mixer-dialog-bar", bar); + + if (stream != NULL) { + gboolean is_muted; + + is_muted = gvc_mixer_stream_get_is_muted (stream); + gvc_channel_bar_set_is_muted (GVC_CHANNEL_BAR (bar), is_muted); + + save_bar_for_stream (dialog, stream, bar); + + gtk_adjustment_set_value (adj, + gvc_mixer_stream_get_volume (stream)); + + g_signal_connect (stream, + "notify::is-muted", + G_CALLBACK (on_stream_is_muted_notify), + dialog); + g_signal_connect (stream, + "notify::volume", + G_CALLBACK (on_stream_volume_notify), + dialog); + g_signal_connect (stream, + "notify::port", + G_CALLBACK (on_stream_port_notify), + dialog); + g_signal_connect (adj, + "value-changed", + G_CALLBACK (on_adjustment_value_changed), + dialog); + } +} + +static void +add_stream (GvcMixerDialog *dialog, + GvcMixerStream *stream) +{ + GtkWidget *bar; + gboolean is_muted; + gboolean is_default; + GtkAdjustment *adj; + const char *id; + + g_assert (stream != NULL); + + if (gvc_mixer_stream_is_event_stream (stream) != FALSE) + return; + + bar = NULL; + is_default = FALSE; + id = gvc_mixer_stream_get_application_id (stream); + + if (stream == gvc_mixer_control_get_default_sink (dialog->priv->mixer_control)) { + bar = dialog->priv->output_bar; + is_muted = gvc_mixer_stream_get_is_muted (stream); + is_default = TRUE; + gtk_widget_set_sensitive (dialog->priv->applications_box, + !is_muted); + adj = GTK_ADJUSTMENT (gvc_channel_bar_get_adjustment (GVC_CHANNEL_BAR (bar))); + g_signal_handlers_disconnect_by_func(adj, on_adjustment_value_changed, dialog); + update_output_settings (dialog); + } else if (stream == gvc_mixer_control_get_default_source (dialog->priv->mixer_control)) { + bar = dialog->priv->input_bar; + adj = GTK_ADJUSTMENT (gvc_channel_bar_get_adjustment (GVC_CHANNEL_BAR (bar))); + g_signal_handlers_disconnect_by_func(adj, on_adjustment_value_changed, dialog); + update_input_settings (dialog); + is_default = TRUE; + } else if (stream == gvc_mixer_control_get_event_sink_input (dialog->priv->mixer_control)) { + bar = dialog->priv->effects_bar; + g_debug ("Adding effects stream"); + } else if (! GVC_IS_MIXER_SOURCE (stream) + && !GVC_IS_MIXER_SINK (stream) + && !gvc_mixer_stream_is_virtual (stream) + && g_strcmp0 (id, "org.mate.VolumeControl") != 0 + && g_strcmp0 (id, "org.PulseAudio.pavucontrol") != 0) { + const char *name; + + bar = create_bar (dialog, dialog->priv->apps_size_group, FALSE); + + name = gvc_mixer_stream_get_name (stream); + if (name == NULL || strchr (name, '_') == NULL) { + gvc_channel_bar_set_name (GVC_CHANNEL_BAR (bar), name); + } else { + char **tokens, *escaped; + + tokens = g_strsplit (name, "_", -1); + escaped = g_strjoinv ("__", tokens); + g_strfreev (tokens); + gvc_channel_bar_set_name (GVC_CHANNEL_BAR (bar), escaped); + g_free (escaped); + } + + gvc_channel_bar_set_icon_name (GVC_CHANNEL_BAR (bar), + gvc_mixer_stream_get_icon_name (stream)); + + gtk_box_pack_start (GTK_BOX (dialog->priv->applications_box), bar, FALSE, FALSE, 12); + dialog->priv->num_apps++; + gtk_widget_hide (dialog->priv->no_apps_label); + } + + if (GVC_IS_MIXER_SOURCE (stream)) { + GtkTreeModel *model; + GtkTreeIter iter; + + model = gtk_tree_view_get_model (GTK_TREE_VIEW (dialog->priv->input_treeview)); + gtk_list_store_append (GTK_LIST_STORE (model), &iter); + gtk_list_store_set (GTK_LIST_STORE (model), + &iter, + NAME_COLUMN, gvc_mixer_stream_get_description (stream), + DEVICE_COLUMN, "", + ACTIVE_COLUMN, is_default, + ID_COLUMN, gvc_mixer_stream_get_id (stream), + -1); + g_signal_connect (stream, + "notify::description", + G_CALLBACK (on_stream_description_notify), + dialog); + } else if (GVC_IS_MIXER_SINK (stream)) { + GtkTreeModel *model; + GtkTreeIter iter; + const GvcChannelMap *map; + + model = gtk_tree_view_get_model (GTK_TREE_VIEW (dialog->priv->output_treeview)); + gtk_list_store_append (GTK_LIST_STORE (model), &iter); + map = gvc_mixer_stream_get_channel_map (stream); + gtk_list_store_set (GTK_LIST_STORE (model), + &iter, + NAME_COLUMN, gvc_mixer_stream_get_description (stream), + DEVICE_COLUMN, "", + ACTIVE_COLUMN, is_default, + ID_COLUMN, gvc_mixer_stream_get_id (stream), + SPEAKERS_COLUMN, gvc_channel_map_get_mapping (map), + -1); + g_signal_connect (stream, + "notify::description", + G_CALLBACK (on_stream_description_notify), + dialog); + } + + if (bar != NULL) { + bar_set_stream (dialog, bar, stream); + gtk_widget_show (bar); + } +} + +static void +on_control_stream_added (GvcMixerControl *control, + guint id, + GvcMixerDialog *dialog) +{ + GvcMixerStream *stream; + GtkWidget *bar; + + bar = g_hash_table_lookup (dialog->priv->bars, GUINT_TO_POINTER (id)); + if (bar != NULL) { + g_debug ("GvcMixerDialog: Stream %u already added", id); + return; + } + + stream = gvc_mixer_control_lookup_stream_id (control, id); + if (stream != NULL) { + add_stream (dialog, stream); + } +} + +static gboolean +find_item_by_id (GtkTreeModel *model, + guint id, + guint column, + GtkTreeIter *iter) +{ + gboolean found_item; + + found_item = FALSE; + + if (!gtk_tree_model_get_iter_first (model, iter)) { + return FALSE; + } + + do { + guint t_id; + + gtk_tree_model_get (model, iter, + column, &t_id, -1); + + if (id == t_id) { + found_item = TRUE; + } + } while (!found_item && gtk_tree_model_iter_next (model, iter)); + + return found_item; +} + +static void +remove_stream (GvcMixerDialog *dialog, + guint id) +{ + GtkWidget *bar; + gboolean found; + GtkTreeIter iter; + GtkTreeModel *model; + + /* remove bars for applications and reset fixed bars */ + bar = g_hash_table_lookup (dialog->priv->bars, GUINT_TO_POINTER (id)); + if (bar == dialog->priv->output_bar + || bar == dialog->priv->input_bar + || bar == dialog->priv->effects_bar) { + char *name; + g_object_get (bar, "name", &name, NULL); + g_debug ("Removing stream for bar '%s'", name); + g_free (name); + bar_set_stream (dialog, bar, NULL); + } else if (bar != NULL) { + g_hash_table_remove (dialog->priv->bars, GUINT_TO_POINTER (id)); + gtk_container_remove (GTK_CONTAINER (gtk_widget_get_parent (bar)), + bar); + dialog->priv->num_apps--; + if (dialog->priv->num_apps == 0) { + gtk_widget_show (dialog->priv->no_apps_label); + } + } + + /* remove from any models */ + model = gtk_tree_view_get_model (GTK_TREE_VIEW (dialog->priv->output_treeview)); + found = find_item_by_id (GTK_TREE_MODEL (model), id, ID_COLUMN, &iter); + if (found) { + gtk_list_store_remove (GTK_LIST_STORE (model), &iter); + } + model = gtk_tree_view_get_model (GTK_TREE_VIEW (dialog->priv->input_treeview)); + found = find_item_by_id (GTK_TREE_MODEL (model), id, ID_COLUMN, &iter); + if (found) { + gtk_list_store_remove (GTK_LIST_STORE (model), &iter); + } +} + +static void +on_control_stream_removed (GvcMixerControl *control, + guint id, + GvcMixerDialog *dialog) +{ + remove_stream (dialog, id); +} + +static void +add_card (GvcMixerDialog *dialog, + GvcMixerCard *card) +{ + GtkTreeModel *model; + GtkTreeIter iter; + GtkTreeSelection *selection; + GvcMixerCardProfile *profile; + GIcon *icon; + guint index; + + model = gtk_tree_view_get_model (GTK_TREE_VIEW (dialog->priv->hw_treeview)); + index = gvc_mixer_card_get_index (card); + if (find_item_by_id (GTK_TREE_MODEL (model), index, HW_ID_COLUMN, &iter) == FALSE) + gtk_list_store_append (GTK_LIST_STORE (model), &iter); + profile = gvc_mixer_card_get_profile (card); + g_assert (profile != NULL); + icon = g_themed_icon_new_with_default_fallbacks (gvc_mixer_card_get_icon_name (card)); + //FIXME we need the status (default for a profile?) here + gtk_list_store_set (GTK_LIST_STORE (model), + &iter, + HW_NAME_COLUMN, gvc_mixer_card_get_name (card), + HW_ID_COLUMN, index, + HW_ICON_COLUMN, icon, + HW_PROFILE_COLUMN, profile->profile, + HW_PROFILE_HUMAN_COLUMN, profile->human_profile, + HW_STATUS_COLUMN, profile->status, + HW_SENSITIVE_COLUMN, g_strcmp0 (profile->profile, "off") != 0, + -1); + + selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (dialog->priv->hw_treeview)); + if (gtk_tree_selection_get_selected (selection, NULL, NULL) == FALSE) { + gtk_tree_selection_select_iter (selection, &iter); + } else if (dialog->priv->hw_profile_combo != NULL) { + GvcMixerCard *selected; + + /* Set the current profile if it changed for the selected card */ + selected = g_object_get_data (G_OBJECT (dialog->priv->hw_profile_combo), "card"); + if (gvc_mixer_card_get_index (selected) == gvc_mixer_card_get_index (card)) { + gvc_combo_box_set_active (GVC_COMBO_BOX (dialog->priv->hw_profile_combo), + profile->profile); + g_object_set (G_OBJECT (dialog->priv->hw_profile_combo), + "show-button", profile->n_sinks == 1, + NULL); + } + } +} + +static void +on_control_card_added (GvcMixerControl *control, + guint id, + GvcMixerDialog *dialog) +{ + GvcMixerCard *card; + + card = gvc_mixer_control_lookup_card_id (control, id); + if (card != NULL) { + add_card (dialog, card); + } +} + +static void +remove_card (GvcMixerDialog *dialog, + guint id) +{ + gboolean found; + GtkTreeIter iter; + GtkTreeModel *model; + + /* remove from any models */ + model = gtk_tree_view_get_model (GTK_TREE_VIEW (dialog->priv->hw_treeview)); + found = find_item_by_id (GTK_TREE_MODEL (model), id, HW_ID_COLUMN, &iter); + if (found) { + gtk_list_store_remove (GTK_LIST_STORE (model), &iter); + } +} +static void +on_control_card_removed (GvcMixerControl *control, + guint id, + GvcMixerDialog *dialog) +{ + remove_card (dialog, id); +} + +static void +_gtk_label_make_bold (GtkLabel *label) +{ + PangoFontDescription *font_desc; + + font_desc = pango_font_description_new (); + + pango_font_description_set_weight (font_desc, + PANGO_WEIGHT_BOLD); + + /* This will only affect the weight of the font, the rest is + * from the current state of the widget, which comes from the + * theme or user prefs, since the font desc only has the + * weight flag turned on. + */ + gtk_widget_modify_font (GTK_WIDGET (label), font_desc); + + pango_font_description_free (font_desc); +} + +static void +on_input_radio_toggled (GtkCellRendererToggle *renderer, + char *path_str, + GvcMixerDialog *dialog) +{ + GtkTreeModel *model; + GtkTreeIter iter; + GtkTreePath *path; + gboolean toggled; + guint id; + + model = gtk_tree_view_get_model (GTK_TREE_VIEW (dialog->priv->input_treeview)); + + path = gtk_tree_path_new_from_string (path_str); + gtk_tree_model_get_iter (model, &iter, path); + gtk_tree_path_free (path); + + gtk_tree_model_get (model, &iter, + ID_COLUMN, &id, + ACTIVE_COLUMN, &toggled, + -1); + + toggled ^= 1; + if (toggled) { + GvcMixerStream *stream; + + g_debug ("Default input selected: %u", id); + stream = gvc_mixer_control_lookup_stream_id (dialog->priv->mixer_control, id); + if (stream == NULL) { + g_warning ("Unable to find stream for id: %u", id); + return; + } + + gvc_mixer_control_set_default_source (dialog->priv->mixer_control, stream); + } +} + +static void +on_output_radio_toggled (GtkCellRendererToggle *renderer, + char *path_str, + GvcMixerDialog *dialog) +{ + GtkTreeModel *model; + GtkTreeIter iter; + GtkTreePath *path; + gboolean toggled; + guint id; + + model = gtk_tree_view_get_model (GTK_TREE_VIEW (dialog->priv->output_treeview)); + + path = gtk_tree_path_new_from_string (path_str); + gtk_tree_model_get_iter (model, &iter, path); + gtk_tree_path_free (path); + + gtk_tree_model_get (model, &iter, + ID_COLUMN, &id, + ACTIVE_COLUMN, &toggled, + -1); + + toggled ^= 1; + if (toggled) { + GvcMixerStream *stream; + + g_debug ("Default output selected: %u", id); + stream = gvc_mixer_control_lookup_stream_id (dialog->priv->mixer_control, id); + if (stream == NULL) { + g_warning ("Unable to find stream for id: %u", id); + return; + } + + gvc_mixer_control_set_default_sink (dialog->priv->mixer_control, stream); + } +} + +static void +name_to_text (GtkTreeViewColumn *column, + GtkCellRenderer *cell, + GtkTreeModel *model, + GtkTreeIter *iter, + gpointer user_data) +{ + char *name, *mapping; + + gtk_tree_model_get(model, iter, + NAME_COLUMN, &name, + SPEAKERS_COLUMN, &mapping, + -1); + + if (mapping == NULL) { + g_object_set (cell, "text", name, NULL); + } else { + char *str; + + str = g_strdup_printf ("%s\n<i>%s</i>", + name, mapping); + g_object_set (cell, "markup", str, NULL); + g_free (str); + } + + g_free (name); + g_free (mapping); +} + +static GtkWidget * +create_stream_treeview (GvcMixerDialog *dialog, + GCallback on_toggled) +{ + GtkWidget *treeview; + GtkListStore *store; + GtkCellRenderer *renderer; + GtkTreeViewColumn *column; + + treeview = gtk_tree_view_new (); + gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (treeview), FALSE); + + store = gtk_list_store_new (NUM_COLUMNS, + G_TYPE_STRING, + G_TYPE_STRING, + G_TYPE_BOOLEAN, + G_TYPE_UINT, + G_TYPE_STRING); + gtk_tree_view_set_model (GTK_TREE_VIEW (treeview), + GTK_TREE_MODEL (store)); + + renderer = gtk_cell_renderer_toggle_new (); + gtk_cell_renderer_toggle_set_radio (GTK_CELL_RENDERER_TOGGLE (renderer), + TRUE); + column = gtk_tree_view_column_new_with_attributes (NULL, + renderer, + "active", ACTIVE_COLUMN, + NULL); + gtk_tree_view_append_column (GTK_TREE_VIEW (treeview), column); + g_signal_connect (renderer, + "toggled", + G_CALLBACK (on_toggled), + dialog); + + gtk_tree_view_insert_column_with_data_func (GTK_TREE_VIEW (treeview), -1, + _("Name"), gtk_cell_renderer_text_new (), + name_to_text, NULL, NULL); + +#if 0 + renderer = gtk_cell_renderer_text_new (); + column = gtk_tree_view_column_new_with_attributes (_("Device"), + renderer, + "text", DEVICE_COLUMN, + NULL); + gtk_tree_view_append_column (GTK_TREE_VIEW (treeview), column); +#endif + return treeview; +} + +static void +on_profile_changed (GvcComboBox *widget, + const char *profile, + gpointer user_data) +{ + GvcMixerCard *card; + + card = g_object_get_data (G_OBJECT (widget), "card"); + if (card == NULL) { + g_warning ("Could not find card for combobox"); + return; + } + + g_debug ("Profile changed to %s for card %s", profile, + gvc_mixer_card_get_name (card)); + + gvc_mixer_card_change_profile (card, profile); +} + +static void +on_test_speakers_clicked (GvcComboBox *widget, + gpointer user_data) +{ + GvcMixerDialog *dialog = GVC_MIXER_DIALOG (user_data); + GvcMixerCard *card; + GvcMixerCardProfile *profile; + GtkWidget *d, *speaker_test, *container; + char *title; + + card = g_object_get_data (G_OBJECT (widget), "card"); + if (card == NULL) { + g_warning ("Could not find card for combobox"); + return; + } + profile = gvc_mixer_card_get_profile (card); + + g_debug ("XXX Start speaker testing for profile '%s', card %s XXX", + profile->profile, gvc_mixer_card_get_name (card)); + + title = g_strdup_printf (_("Speaker Testing for %s"), gvc_mixer_card_get_name (card)); + d = gtk_dialog_new_with_buttons (title, + GTK_WINDOW (dialog), + GTK_DIALOG_MODAL | +#if !GTK_CHECK_VERSION (2, 21, 8) + GTK_DIALOG_NO_SEPARATOR | +#endif + GTK_DIALOG_DESTROY_WITH_PARENT, + NULL); + g_free (title); + speaker_test = gvc_speaker_test_new (dialog->priv->mixer_control, + card); + gtk_widget_show (speaker_test); + container = gtk_dialog_get_content_area (GTK_DIALOG (d)); + gtk_container_add (GTK_CONTAINER (container), speaker_test); + + gtk_dialog_run (GTK_DIALOG (d)); + gtk_widget_destroy (d); +} + +static void +on_card_selection_changed (GtkTreeSelection *selection, + gpointer user_data) +{ + GvcMixerDialog *dialog = GVC_MIXER_DIALOG (user_data); + GtkTreeModel *model; + GtkTreeIter iter; + const GList *profiles; + guint id; + GvcMixerCard *card; + GvcMixerCardProfile *current_profile; + + g_debug ("Card selection changed"); + + if (dialog->priv->hw_profile_combo != NULL) { + gtk_container_remove (GTK_CONTAINER (dialog->priv->hw_settings_box), + dialog->priv->hw_profile_combo); + dialog->priv->hw_profile_combo = NULL; + } + + if (gtk_tree_selection_get_selected (selection, + NULL, + &iter) == FALSE) { + return; + } + + model = gtk_tree_view_get_model (GTK_TREE_VIEW (dialog->priv->hw_treeview)); + gtk_tree_model_get (model, &iter, + HW_ID_COLUMN, &id, + -1); + card = gvc_mixer_control_lookup_card_id (dialog->priv->mixer_control, id); + if (card == NULL) { + g_warning ("Unable to find card for id: %u", id); + return; + } + + current_profile = gvc_mixer_card_get_profile (card); + profiles = gvc_mixer_card_get_profiles (card); + dialog->priv->hw_profile_combo = gvc_combo_box_new (_("_Profile:")); + g_object_set (G_OBJECT (dialog->priv->hw_profile_combo), "button-label", _("Test Speakers"), NULL); + gvc_combo_box_set_profiles (GVC_COMBO_BOX (dialog->priv->hw_profile_combo), profiles); + gvc_combo_box_set_active (GVC_COMBO_BOX (dialog->priv->hw_profile_combo), current_profile->profile); + + gtk_box_pack_start (GTK_BOX (dialog->priv->hw_settings_box), + dialog->priv->hw_profile_combo, + TRUE, TRUE, 6); + g_object_set (G_OBJECT (dialog->priv->hw_profile_combo), + "show-button", current_profile->n_sinks == 1, + NULL); + gtk_widget_show (dialog->priv->hw_profile_combo); + + g_object_set_data (G_OBJECT (dialog->priv->hw_profile_combo), "card", card); + g_signal_connect (G_OBJECT (dialog->priv->hw_profile_combo), "changed", + G_CALLBACK (on_profile_changed), dialog); + g_signal_connect (G_OBJECT (dialog->priv->hw_profile_combo), "button-clicked", + G_CALLBACK (on_test_speakers_clicked), dialog); +} + +static void +card_to_text (GtkTreeViewColumn *column, + GtkCellRenderer *cell, + GtkTreeModel *model, + GtkTreeIter *iter, + gpointer user_data) +{ + char *name, *status, *profile, *str; + gboolean sensitive; + + gtk_tree_model_get(model, iter, + HW_NAME_COLUMN, &name, + HW_STATUS_COLUMN, &status, + HW_PROFILE_HUMAN_COLUMN, &profile, + HW_SENSITIVE_COLUMN, &sensitive, + -1); + + str = g_strdup_printf ("%s\n<i>%s</i>\n<i>%s</i>", + name, status, profile); + g_object_set (cell, + "markup", str, + "sensitive", sensitive, + NULL); + g_free (str); + + g_free (name); + g_free (status); + g_free (profile); +} + +static GtkWidget * +create_cards_treeview (GvcMixerDialog *dialog, + GCallback on_changed) +{ + GtkWidget *treeview; + GtkListStore *store; + GtkCellRenderer *renderer; + GtkTreeViewColumn *column; + GtkTreeSelection *selection; + + treeview = gtk_tree_view_new (); + gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (treeview), FALSE); + + selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (treeview)); + g_signal_connect (G_OBJECT (selection), "changed", + on_changed, dialog); + + store = gtk_list_store_new (HW_NUM_COLUMNS, + G_TYPE_UINT, + G_TYPE_ICON, + G_TYPE_STRING, + G_TYPE_STRING, + G_TYPE_STRING, + G_TYPE_STRING, + G_TYPE_BOOLEAN); + gtk_tree_view_set_model (GTK_TREE_VIEW (treeview), + GTK_TREE_MODEL (store)); + + renderer = gtk_cell_renderer_pixbuf_new (); + g_object_set (G_OBJECT (renderer), "stock-size", GTK_ICON_SIZE_DIALOG, NULL); + column = gtk_tree_view_column_new_with_attributes (NULL, + renderer, + "gicon", HW_ICON_COLUMN, + "sensitive", HW_SENSITIVE_COLUMN, + NULL); + gtk_tree_view_append_column (GTK_TREE_VIEW (treeview), column); + + gtk_tree_view_insert_column_with_data_func (GTK_TREE_VIEW (treeview), -1, + _("Name"), gtk_cell_renderer_text_new (), + card_to_text, NULL, NULL); + + return treeview; +} + +static const guint tab_accel_keys[] = { + GDK_1, GDK_2, GDK_3, GDK_4, GDK_5 +}; + +static void +dialog_accel_cb (GtkAccelGroup *accelgroup, + GObject *object, + guint key, + GdkModifierType mod, + GvcMixerDialog *self) +{ + gint num = -1; + gint i; + + for (i = 0; i < G_N_ELEMENTS (tab_accel_keys); i++) { + if (tab_accel_keys[i] == key) { + num = i; + break; + } + } + + if (num != -1) { + gtk_notebook_set_current_page (GTK_NOTEBOOK (self->priv->notebook), num); + } +} + +static GObject * +gvc_mixer_dialog_constructor (GType type, + guint n_construct_properties, + GObjectConstructParam *construct_params) +{ + GObject *object; + GvcMixerDialog *self; + GtkWidget *main_vbox; + GtkWidget *label; + GtkWidget *alignment; + GtkWidget *box; + GtkWidget *sbox; + GtkWidget *ebox; + GSList *streams; + GSList *cards; + GSList *l; + GvcMixerStream *stream; + GvcMixerCard *card; + GtkTreeSelection *selection; + GtkAccelGroup *accel_group; + GClosure *closure; + gint i; + + object = G_OBJECT_CLASS (gvc_mixer_dialog_parent_class)->constructor (type, n_construct_properties, construct_params); + + self = GVC_MIXER_DIALOG (object); + gtk_dialog_add_button (GTK_DIALOG (self), "gtk-close", GTK_RESPONSE_OK); + + main_vbox = gtk_dialog_get_content_area (GTK_DIALOG (self)); + gtk_box_set_spacing (GTK_BOX (main_vbox), 2); + + gtk_container_set_border_width (GTK_CONTAINER (self), 6); + + self->priv->output_stream_box = gtk_hbox_new (FALSE, 12); + alignment = gtk_alignment_new (0, 0, 1, 1); + gtk_alignment_set_padding (GTK_ALIGNMENT (alignment), 12, 0, 0, 0); + gtk_container_add (GTK_CONTAINER (alignment), self->priv->output_stream_box); + gtk_box_pack_start (GTK_BOX (main_vbox), + alignment, + FALSE, FALSE, 0); + self->priv->output_bar = create_bar (self, self->priv->size_group, TRUE); + gvc_channel_bar_set_name (GVC_CHANNEL_BAR (self->priv->output_bar), + _("_Output volume: ")); + gtk_widget_set_sensitive (self->priv->output_bar, FALSE); + gtk_box_pack_start (GTK_BOX (self->priv->output_stream_box), + self->priv->output_bar, TRUE, TRUE, 12); + + self->priv->notebook = gtk_notebook_new (); + gtk_box_pack_start (GTK_BOX (main_vbox), + self->priv->notebook, + TRUE, TRUE, 0); + gtk_container_set_border_width (GTK_CONTAINER (self->priv->notebook), 5); + + /* Set up accels (borrowed from Empathy) */ + accel_group = gtk_accel_group_new (); + gtk_window_add_accel_group (GTK_WINDOW (self), accel_group); + + for (i = 0; i < G_N_ELEMENTS (tab_accel_keys); i++) { + closure = g_cclosure_new (G_CALLBACK (dialog_accel_cb), + self, + NULL); + gtk_accel_group_connect (accel_group, + tab_accel_keys[i], + GDK_MOD1_MASK, + 0, + closure); + } + + g_object_unref (accel_group); + + /* Effects page */ + self->priv->sound_effects_box = gtk_vbox_new (FALSE, 6); + gtk_container_set_border_width (GTK_CONTAINER (self->priv->sound_effects_box), 12); + label = gtk_label_new (_("Sound Effects")); + gtk_notebook_append_page (GTK_NOTEBOOK (self->priv->notebook), + self->priv->sound_effects_box, + label); + + self->priv->effects_bar = create_bar (self, self->priv->size_group, TRUE); + gvc_channel_bar_set_name (GVC_CHANNEL_BAR (self->priv->effects_bar), + _("_Alert volume: ")); + gtk_widget_set_sensitive (self->priv->effects_bar, FALSE); + gtk_box_pack_start (GTK_BOX (self->priv->sound_effects_box), + self->priv->effects_bar, FALSE, FALSE, 0); + + self->priv->sound_theme_chooser = gvc_sound_theme_chooser_new (); + gtk_box_pack_start (GTK_BOX (self->priv->sound_effects_box), + self->priv->sound_theme_chooser, + TRUE, TRUE, 6); + + /* Hardware page */ + self->priv->hw_box = gtk_vbox_new (FALSE, 12); + gtk_container_set_border_width (GTK_CONTAINER (self->priv->hw_box), 12); + label = gtk_label_new (_("Hardware")); + gtk_notebook_append_page (GTK_NOTEBOOK (self->priv->notebook), + self->priv->hw_box, + label); + + box = gtk_frame_new (_("C_hoose a device to configure:")); + label = gtk_frame_get_label_widget (GTK_FRAME (box)); + _gtk_label_make_bold (GTK_LABEL (label)); + gtk_label_set_use_underline (GTK_LABEL (label), TRUE); + gtk_frame_set_shadow_type (GTK_FRAME (box), GTK_SHADOW_NONE); + gtk_box_pack_start (GTK_BOX (self->priv->hw_box), box, TRUE, TRUE, 0); + + alignment = gtk_alignment_new (0, 0, 1, 1); + gtk_container_add (GTK_CONTAINER (box), alignment); + gtk_alignment_set_padding (GTK_ALIGNMENT (alignment), 6, 0, 0, 0); + + self->priv->hw_treeview = create_cards_treeview (self, + G_CALLBACK (on_card_selection_changed)); + gtk_label_set_mnemonic_widget (GTK_LABEL (label), self->priv->hw_treeview); + + box = gtk_scrolled_window_new (NULL, NULL); + gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (box), + GTK_POLICY_NEVER, + GTK_POLICY_AUTOMATIC); + gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (box), + GTK_SHADOW_IN); + gtk_container_add (GTK_CONTAINER (box), self->priv->hw_treeview); + gtk_container_add (GTK_CONTAINER (alignment), box); + + selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (self->priv->hw_treeview)); + gtk_tree_selection_set_mode (selection, GTK_SELECTION_SINGLE); + + box = gtk_frame_new (_("Settings for the selected device:")); + label = gtk_frame_get_label_widget (GTK_FRAME (box)); + _gtk_label_make_bold (GTK_LABEL (label)); + gtk_frame_set_shadow_type (GTK_FRAME (box), GTK_SHADOW_NONE); + gtk_box_pack_start (GTK_BOX (self->priv->hw_box), box, FALSE, TRUE, 12); + self->priv->hw_settings_box = gtk_vbox_new (FALSE, 12); + gtk_container_add (GTK_CONTAINER (box), self->priv->hw_settings_box); + + /* Input page */ + self->priv->input_box = gtk_vbox_new (FALSE, 12); + gtk_container_set_border_width (GTK_CONTAINER (self->priv->input_box), 12); + label = gtk_label_new (_("Input")); + gtk_notebook_append_page (GTK_NOTEBOOK (self->priv->notebook), + self->priv->input_box, + label); + + self->priv->input_bar = create_bar (self, self->priv->size_group, TRUE); + gvc_channel_bar_set_name (GVC_CHANNEL_BAR (self->priv->input_bar), + _("_Input volume: ")); + gvc_channel_bar_set_low_icon_name (GVC_CHANNEL_BAR (self->priv->input_bar), + "audio-input-microphone-low"); + gvc_channel_bar_set_high_icon_name (GVC_CHANNEL_BAR (self->priv->input_bar), + "audio-input-microphone-high"); + gtk_widget_set_sensitive (self->priv->input_bar, FALSE); + alignment = gtk_alignment_new (0, 0, 1, 1); + gtk_alignment_set_padding (GTK_ALIGNMENT (alignment), 6, 0, 0, 0); + gtk_container_add (GTK_CONTAINER (alignment), self->priv->input_bar); + gtk_box_pack_start (GTK_BOX (self->priv->input_box), + alignment, + FALSE, FALSE, 0); + + box = gtk_hbox_new (FALSE, 6); + gtk_box_pack_start (GTK_BOX (self->priv->input_box), + box, + FALSE, FALSE, 6); + + sbox = gtk_hbox_new (FALSE, 6); + gtk_box_pack_start (GTK_BOX (box), + sbox, + FALSE, FALSE, 0); + + label = gtk_label_new (_("Input level:")); + gtk_box_pack_start (GTK_BOX (sbox), + label, + FALSE, FALSE, 0); + gtk_size_group_add_widget (self->priv->size_group, sbox); + + self->priv->input_level_bar = gvc_level_bar_new (); + gvc_level_bar_set_orientation (GVC_LEVEL_BAR (self->priv->input_level_bar), + GTK_ORIENTATION_HORIZONTAL); + gvc_level_bar_set_scale (GVC_LEVEL_BAR (self->priv->input_level_bar), + GVC_LEVEL_SCALE_LINEAR); + gtk_box_pack_start (GTK_BOX (box), + self->priv->input_level_bar, + TRUE, TRUE, 6); + + ebox = gtk_hbox_new (FALSE, 6); + gtk_box_pack_start (GTK_BOX (box), + ebox, + FALSE, FALSE, 0); + gtk_size_group_add_widget (self->priv->size_group, ebox); + + self->priv->input_settings_box = gtk_hbox_new (FALSE, 6); + gtk_box_pack_start (GTK_BOX (self->priv->input_box), + self->priv->input_settings_box, + FALSE, FALSE, 0); + + box = gtk_frame_new (_("C_hoose a device for sound input:")); + label = gtk_frame_get_label_widget (GTK_FRAME (box)); + _gtk_label_make_bold (GTK_LABEL (label)); + gtk_label_set_use_underline (GTK_LABEL (label), TRUE); + gtk_frame_set_shadow_type (GTK_FRAME (box), GTK_SHADOW_NONE); + gtk_box_pack_start (GTK_BOX (self->priv->input_box), box, TRUE, TRUE, 0); + + alignment = gtk_alignment_new (0, 0, 1, 1); + gtk_container_add (GTK_CONTAINER (box), alignment); + gtk_alignment_set_padding (GTK_ALIGNMENT (alignment), 6, 0, 0, 0); + + self->priv->input_treeview = create_stream_treeview (self, + G_CALLBACK (on_input_radio_toggled)); + gtk_label_set_mnemonic_widget (GTK_LABEL (label), self->priv->input_treeview); + + box = gtk_scrolled_window_new (NULL, NULL); + gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (box), + GTK_POLICY_NEVER, + GTK_POLICY_AUTOMATIC); + gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (box), + GTK_SHADOW_IN); + gtk_container_add (GTK_CONTAINER (box), self->priv->input_treeview); + gtk_container_add (GTK_CONTAINER (alignment), box); + + selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (self->priv->input_treeview)); + gtk_tree_selection_set_mode (selection, GTK_SELECTION_SINGLE); + + /* Output page */ + self->priv->output_box = gtk_vbox_new (FALSE, 12); + gtk_container_set_border_width (GTK_CONTAINER (self->priv->output_box), 12); + label = gtk_label_new (_("Output")); + gtk_notebook_append_page (GTK_NOTEBOOK (self->priv->notebook), + self->priv->output_box, + label); + + box = gtk_frame_new (_("C_hoose a device for sound output:")); + label = gtk_frame_get_label_widget (GTK_FRAME (box)); + _gtk_label_make_bold (GTK_LABEL (label)); + gtk_label_set_use_underline (GTK_LABEL (label), TRUE); + gtk_frame_set_shadow_type (GTK_FRAME (box), GTK_SHADOW_NONE); + gtk_box_pack_start (GTK_BOX (self->priv->output_box), box, TRUE, TRUE, 0); + + alignment = gtk_alignment_new (0, 0, 1, 1); + gtk_container_add (GTK_CONTAINER (box), alignment); + gtk_alignment_set_padding (GTK_ALIGNMENT (alignment), 6, 0, 0, 0); + + self->priv->output_treeview = create_stream_treeview (self, + G_CALLBACK (on_output_radio_toggled)); + gtk_label_set_mnemonic_widget (GTK_LABEL (label), self->priv->output_treeview); + + box = gtk_scrolled_window_new (NULL, NULL); + gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (box), + GTK_POLICY_NEVER, + GTK_POLICY_AUTOMATIC); + gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (box), + GTK_SHADOW_IN); + gtk_container_add (GTK_CONTAINER (box), self->priv->output_treeview); + gtk_container_add (GTK_CONTAINER (alignment), box); + + selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (self->priv->output_treeview)); + gtk_tree_selection_set_mode (selection, GTK_SELECTION_SINGLE); + + box = gtk_frame_new (_("Settings for the selected device:")); + label = gtk_frame_get_label_widget (GTK_FRAME (box)); + _gtk_label_make_bold (GTK_LABEL (label)); + gtk_frame_set_shadow_type (GTK_FRAME (box), GTK_SHADOW_NONE); + gtk_box_pack_start (GTK_BOX (self->priv->output_box), box, FALSE, FALSE, 12); + self->priv->output_settings_box = gtk_vbox_new (FALSE, 0); + gtk_container_add (GTK_CONTAINER (box), self->priv->output_settings_box); + + /* Applications */ + self->priv->applications_box = gtk_vbox_new (FALSE, 12); + gtk_container_set_border_width (GTK_CONTAINER (self->priv->applications_box), 12); + label = gtk_label_new (_("Applications")); + gtk_notebook_append_page (GTK_NOTEBOOK (self->priv->notebook), + self->priv->applications_box, + label); + self->priv->no_apps_label = gtk_label_new (_("No application is currently playing or recording audio.")); + gtk_box_pack_start (GTK_BOX (self->priv->applications_box), + self->priv->no_apps_label, + TRUE, TRUE, 0); + + g_signal_connect (self->priv->mixer_control, + "stream-added", + G_CALLBACK (on_control_stream_added), + self); + g_signal_connect (self->priv->mixer_control, + "stream-removed", + G_CALLBACK (on_control_stream_removed), + self); + g_signal_connect (self->priv->mixer_control, + "card-added", + G_CALLBACK (on_control_card_added), + self); + g_signal_connect (self->priv->mixer_control, + "card-removed", + G_CALLBACK (on_control_card_removed), + self); + + gtk_widget_show_all (main_vbox); + + streams = gvc_mixer_control_get_streams (self->priv->mixer_control); + for (l = streams; l != NULL; l = l->next) { + stream = l->data; + add_stream (self, stream); + } + g_slist_free (streams); + + cards = gvc_mixer_control_get_cards (self->priv->mixer_control); + for (l = cards; l != NULL; l = l->next) { + card = l->data; + add_card (self, card); + } + g_slist_free (cards); + + return object; +} + +static void +gvc_mixer_dialog_dispose (GObject *object) +{ + GvcMixerDialog *dialog = GVC_MIXER_DIALOG (object); + + if (dialog->priv->mixer_control != NULL) { + g_signal_handlers_disconnect_by_func (dialog->priv->mixer_control, + on_control_stream_added, + dialog); + g_signal_handlers_disconnect_by_func (dialog->priv->mixer_control, + on_control_stream_removed, + dialog); + g_signal_handlers_disconnect_by_func (dialog->priv->mixer_control, + on_control_card_added, + dialog); + g_signal_handlers_disconnect_by_func (dialog->priv->mixer_control, + on_control_card_removed, + dialog); + + g_object_unref (dialog->priv->mixer_control); + dialog->priv->mixer_control = NULL; + } + + if (dialog->priv->bars != NULL) { + g_hash_table_destroy (dialog->priv->bars); + dialog->priv->bars = NULL; + } + + G_OBJECT_CLASS (gvc_mixer_dialog_parent_class)->dispose (object); +} + +static void +gvc_mixer_dialog_class_init (GvcMixerDialogClass *klass) +{ + GObjectClass *object_class = G_OBJECT_CLASS (klass); + + object_class->constructor = gvc_mixer_dialog_constructor; + object_class->dispose = gvc_mixer_dialog_dispose; + object_class->finalize = gvc_mixer_dialog_finalize; + object_class->set_property = gvc_mixer_dialog_set_property; + object_class->get_property = gvc_mixer_dialog_get_property; + + g_object_class_install_property (object_class, + PROP_MIXER_CONTROL, + g_param_spec_object ("mixer-control", + "mixer control", + "mixer control", + GVC_TYPE_MIXER_CONTROL, + G_PARAM_READWRITE|G_PARAM_CONSTRUCT)); + + g_type_class_add_private (klass, sizeof (GvcMixerDialogPrivate)); +} + + +static void +gvc_mixer_dialog_init (GvcMixerDialog *dialog) +{ + dialog->priv = GVC_MIXER_DIALOG_GET_PRIVATE (dialog); + dialog->priv->bars = g_hash_table_new (NULL, NULL); + dialog->priv->size_group = gtk_size_group_new (GTK_SIZE_GROUP_HORIZONTAL); + dialog->priv->apps_size_group = gtk_size_group_new (GTK_SIZE_GROUP_HORIZONTAL); +} + +static void +gvc_mixer_dialog_finalize (GObject *object) +{ + GvcMixerDialog *mixer_dialog; + + g_return_if_fail (object != NULL); + g_return_if_fail (GVC_IS_MIXER_DIALOG (object)); + + mixer_dialog = GVC_MIXER_DIALOG (object); + + g_return_if_fail (mixer_dialog->priv != NULL); + G_OBJECT_CLASS (gvc_mixer_dialog_parent_class)->finalize (object); +} + +GvcMixerDialog * +gvc_mixer_dialog_new (GvcMixerControl *control) +{ + GObject *dialog; + dialog = g_object_new (GVC_TYPE_MIXER_DIALOG, + "icon-name", "multimedia-volume-control", + "title", _("Sound Preferences"), + "has-separator", FALSE, + "mixer-control", control, + NULL); + return GVC_MIXER_DIALOG (dialog); +} + +enum { + PAGE_EVENTS, + PAGE_HARDWARE, + PAGE_INPUT, + PAGE_OUTPUT, + PAGE_APPLICATIONS +}; + +gboolean +gvc_mixer_dialog_set_page (GvcMixerDialog *self, + const char *page) +{ + guint num; + + g_return_val_if_fail (self != NULL, FALSE); + + if (page == NULL) + num = 0; + else if (g_str_equal (page, "effects")) + num = PAGE_EVENTS; + else if (g_str_equal (page, "hardware")) + num = PAGE_HARDWARE; + else if (g_str_equal (page, "input")) + num = PAGE_INPUT; + else if (g_str_equal (page, "output")) + num = PAGE_OUTPUT; + else if (g_str_equal (page, "applications")) + num = PAGE_APPLICATIONS; + else + num = 0; + + gtk_notebook_set_current_page (GTK_NOTEBOOK (self->priv->notebook), num); + + return TRUE; +} diff --git a/mate-volume-control/src/gvc-mixer-dialog.h b/mate-volume-control/src/gvc-mixer-dialog.h new file mode 100644 index 0000000..64857b3 --- /dev/null +++ b/mate-volume-control/src/gvc-mixer-dialog.h @@ -0,0 +1,56 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*- + * + * Copyright (C) 2008 Red Hat, Inc. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + */ + +#ifndef __GVC_MIXER_DIALOG_H +#define __GVC_MIXER_DIALOG_H + +#include <glib-object.h> +#include "gvc-mixer-control.h" + +G_BEGIN_DECLS + +#define GVC_TYPE_MIXER_DIALOG (gvc_mixer_dialog_get_type ()) +#define GVC_MIXER_DIALOG(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), GVC_TYPE_MIXER_DIALOG, GvcMixerDialog)) +#define GVC_MIXER_DIALOG_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), GVC_TYPE_MIXER_DIALOG, GvcMixerDialogClass)) +#define GVC_IS_MIXER_DIALOG(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GVC_TYPE_MIXER_DIALOG)) +#define GVC_IS_MIXER_DIALOG_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), GVC_TYPE_MIXER_DIALOG)) +#define GVC_MIXER_DIALOG_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), GVC_TYPE_MIXER_DIALOG, GvcMixerDialogClass)) + +typedef struct GvcMixerDialogPrivate GvcMixerDialogPrivate; + +typedef struct +{ + GtkDialog parent; + GvcMixerDialogPrivate *priv; +} GvcMixerDialog; + +typedef struct +{ + GtkDialogClass parent_class; +} GvcMixerDialogClass; + +GType gvc_mixer_dialog_get_type (void); + +GvcMixerDialog * gvc_mixer_dialog_new (GvcMixerControl *control); +gboolean gvc_mixer_dialog_set_page (GvcMixerDialog *dialog, const gchar* page); + +G_END_DECLS + +#endif /* __GVC_MIXER_DIALOG_H */ diff --git a/mate-volume-control/src/gvc-mixer-event-role.c b/mate-volume-control/src/gvc-mixer-event-role.c new file mode 100644 index 0000000..6166d1d --- /dev/null +++ b/mate-volume-control/src/gvc-mixer-event-role.c @@ -0,0 +1,239 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*- + * + * Copyright (C) 2008 William Jon McCann + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + */ + +#include "config.h" + +#include <stdlib.h> +#include <stdio.h> +#include <unistd.h> + +#include <glib.h> +#include <glib/gi18n.h> + +#include <pulse/pulseaudio.h> +#include <pulse/ext-stream-restore.h> + +#include "gvc-mixer-event-role.h" + +#define GVC_MIXER_EVENT_ROLE_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GVC_TYPE_MIXER_EVENT_ROLE, GvcMixerEventRolePrivate)) + +struct GvcMixerEventRolePrivate +{ + char *device; +}; + +enum +{ + PROP_0, + PROP_DEVICE +}; + +static void gvc_mixer_event_role_class_init (GvcMixerEventRoleClass *klass); +static void gvc_mixer_event_role_init (GvcMixerEventRole *mixer_event_role); +static void gvc_mixer_event_role_finalize (GObject *object); + +G_DEFINE_TYPE (GvcMixerEventRole, gvc_mixer_event_role, GVC_TYPE_MIXER_STREAM) + +static gboolean +update_settings (GvcMixerEventRole *role, + gboolean is_muted, + gpointer *op) +{ + pa_operation *o; + guint index; + const GvcChannelMap *map; + pa_context *context; + pa_ext_stream_restore_info info; + + index = gvc_mixer_stream_get_index (GVC_MIXER_STREAM (role)); + + map = gvc_mixer_stream_get_channel_map (GVC_MIXER_STREAM(role)); + + info.volume = *gvc_channel_map_get_cvolume(map); + info.name = "sink-input-by-media-role:event"; + info.channel_map = *gvc_channel_map_get_pa_channel_map(map); + info.device = role->priv->device; + info.mute = is_muted; + + context = gvc_mixer_stream_get_pa_context (GVC_MIXER_STREAM (role)); + + o = pa_ext_stream_restore_write (context, + PA_UPDATE_REPLACE, + &info, + 1, + TRUE, + NULL, + NULL); + + if (o == NULL) { + g_warning ("pa_ext_stream_restore_write() failed"); + return FALSE; + } + + if (op != NULL) + *op = o; + + return TRUE; +} + +static gboolean +gvc_mixer_event_role_push_volume (GvcMixerStream *stream, gpointer *op) +{ + return update_settings (GVC_MIXER_EVENT_ROLE (stream), + gvc_mixer_stream_get_is_muted (stream), op); +} + +static gboolean +gvc_mixer_event_role_change_is_muted (GvcMixerStream *stream, + gboolean is_muted) +{ + return update_settings (GVC_MIXER_EVENT_ROLE (stream), + is_muted, NULL); +} + +static gboolean +gvc_mixer_event_role_set_device (GvcMixerEventRole *role, + const char *device) +{ + g_return_val_if_fail (GVC_IS_MIXER_EVENT_ROLE (role), FALSE); + + g_free (role->priv->device); + role->priv->device = g_strdup (device); + g_object_notify (G_OBJECT (role), "device"); + + return TRUE; +} + +static void +gvc_mixer_event_role_set_property (GObject *object, + guint prop_id, + const GValue *value, + GParamSpec *pspec) +{ + GvcMixerEventRole *self = GVC_MIXER_EVENT_ROLE (object); + + switch (prop_id) { + case PROP_DEVICE: + gvc_mixer_event_role_set_device (self, g_value_get_string (value)); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; + } +} + +static void +gvc_mixer_event_role_get_property (GObject *object, + guint prop_id, + GValue *value, + GParamSpec *pspec) +{ + GvcMixerEventRole *self = GVC_MIXER_EVENT_ROLE (object); + + switch (prop_id) { + case PROP_DEVICE: + g_value_set_string (value, self->priv->device); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; + } +} + +static GObject * +gvc_mixer_event_role_constructor (GType type, + guint n_construct_properties, + GObjectConstructParam *construct_params) +{ + GObject *object; + GvcMixerEventRole *self; + + object = G_OBJECT_CLASS (gvc_mixer_event_role_parent_class)->constructor (type, n_construct_properties, construct_params); + + self = GVC_MIXER_EVENT_ROLE (object); + + return object; +} + +static void +gvc_mixer_event_role_class_init (GvcMixerEventRoleClass *klass) +{ + GObjectClass *object_class = G_OBJECT_CLASS (klass); + GvcMixerStreamClass *stream_class = GVC_MIXER_STREAM_CLASS (klass); + + object_class->constructor = gvc_mixer_event_role_constructor; + object_class->finalize = gvc_mixer_event_role_finalize; + object_class->set_property = gvc_mixer_event_role_set_property; + object_class->get_property = gvc_mixer_event_role_get_property; + + stream_class->push_volume = gvc_mixer_event_role_push_volume; + stream_class->change_is_muted = gvc_mixer_event_role_change_is_muted; + + g_object_class_install_property (object_class, + PROP_DEVICE, + g_param_spec_string ("device", + "Device", + "Device", + NULL, + G_PARAM_READWRITE|G_PARAM_CONSTRUCT)); + + g_type_class_add_private (klass, sizeof (GvcMixerEventRolePrivate)); +} + +static void +gvc_mixer_event_role_init (GvcMixerEventRole *event_role) +{ + event_role->priv = GVC_MIXER_EVENT_ROLE_GET_PRIVATE (event_role); + +} + +static void +gvc_mixer_event_role_finalize (GObject *object) +{ + GvcMixerEventRole *mixer_event_role; + + g_return_if_fail (object != NULL); + g_return_if_fail (GVC_IS_MIXER_EVENT_ROLE (object)); + + mixer_event_role = GVC_MIXER_EVENT_ROLE (object); + + g_return_if_fail (mixer_event_role->priv != NULL); + + g_free (mixer_event_role->priv->device); + + G_OBJECT_CLASS (gvc_mixer_event_role_parent_class)->finalize (object); +} + +GvcMixerStream * +gvc_mixer_event_role_new (pa_context *context, + const char *device, + GvcChannelMap *channel_map) +{ + GObject *object; + + object = g_object_new (GVC_TYPE_MIXER_EVENT_ROLE, + "pa-context", context, + "index", 0, + "device", device, + "channel-map", channel_map, + NULL); + + return GVC_MIXER_STREAM (object); +} diff --git a/mate-volume-control/src/gvc-mixer-event-role.h b/mate-volume-control/src/gvc-mixer-event-role.h new file mode 100644 index 0000000..ab4c509 --- /dev/null +++ b/mate-volume-control/src/gvc-mixer-event-role.h @@ -0,0 +1,57 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*- + * + * Copyright (C) 2008 Red Hat, Inc. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + */ + +#ifndef __GVC_MIXER_EVENT_ROLE_H +#define __GVC_MIXER_EVENT_ROLE_H + +#include <glib-object.h> +#include "gvc-mixer-stream.h" + +G_BEGIN_DECLS + +#define GVC_TYPE_MIXER_EVENT_ROLE (gvc_mixer_event_role_get_type ()) +#define GVC_MIXER_EVENT_ROLE(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), GVC_TYPE_MIXER_EVENT_ROLE, GvcMixerEventRole)) +#define GVC_MIXER_EVENT_ROLE_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), GVC_TYPE_MIXER_EVENT_ROLE, GvcMixerEventRoleClass)) +#define GVC_IS_MIXER_EVENT_ROLE(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GVC_TYPE_MIXER_EVENT_ROLE)) +#define GVC_IS_MIXER_EVENT_ROLE_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), GVC_TYPE_MIXER_EVENT_ROLE)) +#define GVC_MIXER_EVENT_ROLE_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), GVC_TYPE_MIXER_EVENT_ROLE, GvcMixerEventRoleClass)) + +typedef struct GvcMixerEventRolePrivate GvcMixerEventRolePrivate; + +typedef struct +{ + GvcMixerStream parent; + GvcMixerEventRolePrivate *priv; +} GvcMixerEventRole; + +typedef struct +{ + GvcMixerStreamClass parent_class; +} GvcMixerEventRoleClass; + +GType gvc_mixer_event_role_get_type (void); + +GvcMixerStream * gvc_mixer_event_role_new (pa_context *context, + const char *device, + GvcChannelMap *channel_map); + +G_END_DECLS + +#endif /* __GVC_MIXER_EVENT_ROLE_H */ diff --git a/mate-volume-control/src/gvc-mixer-sink-input.c b/mate-volume-control/src/gvc-mixer-sink-input.c new file mode 100644 index 0000000..9d4ad2a --- /dev/null +++ b/mate-volume-control/src/gvc-mixer-sink-input.c @@ -0,0 +1,188 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*- + * + * Copyright (C) 2008 William Jon McCann + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + */ + +#include "config.h" + +#include <stdlib.h> +#include <stdio.h> +#include <unistd.h> + +#include <glib.h> +#include <glib/gi18n.h> + +#include <pulse/pulseaudio.h> + +#include "gvc-mixer-sink-input.h" + +#define GVC_MIXER_SINK_INPUT_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GVC_TYPE_MIXER_SINK_INPUT, GvcMixerSinkInputPrivate)) + +struct GvcMixerSinkInputPrivate +{ + gpointer dummy; +}; + +static void gvc_mixer_sink_input_class_init (GvcMixerSinkInputClass *klass); +static void gvc_mixer_sink_input_init (GvcMixerSinkInput *mixer_sink_input); +static void gvc_mixer_sink_input_finalize (GObject *object); +static void gvc_mixer_sink_input_dispose (GObject *object); + +G_DEFINE_TYPE (GvcMixerSinkInput, gvc_mixer_sink_input, GVC_TYPE_MIXER_STREAM) + +static gboolean +gvc_mixer_sink_input_push_volume (GvcMixerStream *stream, gpointer *op) +{ + pa_operation *o; + guint index; + const GvcChannelMap *map; + pa_context *context; + const pa_cvolume *cv; + guint num_channels; + + index = gvc_mixer_stream_get_index (stream); + + map = gvc_mixer_stream_get_channel_map (stream); + num_channels = gvc_channel_map_get_num_channels (map); + + cv = gvc_channel_map_get_cvolume(map); + + context = gvc_mixer_stream_get_pa_context (stream); + + o = pa_context_set_sink_input_volume (context, + index, + cv, + NULL, + NULL); + + if (o == NULL) { + g_warning ("pa_context_set_sink_input_volume() failed"); + return FALSE; + } + + *op = o; + + return TRUE; +} + +static gboolean +gvc_mixer_sink_input_change_is_muted (GvcMixerStream *stream, + gboolean is_muted) +{ + pa_operation *o; + guint index; + pa_context *context; + + index = gvc_mixer_stream_get_index (stream); + context = gvc_mixer_stream_get_pa_context (stream); + + o = pa_context_set_sink_input_mute (context, + index, + is_muted, + NULL, + NULL); + + if (o == NULL) { + g_warning ("pa_context_set_sink_input_mute_by_index() failed"); + return FALSE; + } + + pa_operation_unref(o); + + return TRUE; +} + +static GObject * +gvc_mixer_sink_input_constructor (GType type, + guint n_construct_properties, + GObjectConstructParam *construct_params) +{ + GObject *object; + GvcMixerSinkInput *self; + + object = G_OBJECT_CLASS (gvc_mixer_sink_input_parent_class)->constructor (type, n_construct_properties, construct_params); + + self = GVC_MIXER_SINK_INPUT (object); + + return object; +} + +static void +gvc_mixer_sink_input_class_init (GvcMixerSinkInputClass *klass) +{ + GObjectClass *object_class = G_OBJECT_CLASS (klass); + GvcMixerStreamClass *stream_class = GVC_MIXER_STREAM_CLASS (klass); + + object_class->constructor = gvc_mixer_sink_input_constructor; + object_class->dispose = gvc_mixer_sink_input_dispose; + object_class->finalize = gvc_mixer_sink_input_finalize; + + stream_class->push_volume = gvc_mixer_sink_input_push_volume; + stream_class->change_is_muted = gvc_mixer_sink_input_change_is_muted; + + g_type_class_add_private (klass, sizeof (GvcMixerSinkInputPrivate)); +} + +static void +gvc_mixer_sink_input_init (GvcMixerSinkInput *sink_input) +{ + sink_input->priv = GVC_MIXER_SINK_INPUT_GET_PRIVATE (sink_input); +} + +static void +gvc_mixer_sink_input_dispose (GObject *object) +{ + GvcMixerSinkInput *mixer_sink_input; + + g_return_if_fail (object != NULL); + g_return_if_fail (GVC_IS_MIXER_SINK_INPUT (object)); + + mixer_sink_input = GVC_MIXER_SINK_INPUT (object); + + G_OBJECT_CLASS (gvc_mixer_sink_input_parent_class)->dispose (object); +} + +static void +gvc_mixer_sink_input_finalize (GObject *object) +{ + GvcMixerSinkInput *mixer_sink_input; + + g_return_if_fail (object != NULL); + g_return_if_fail (GVC_IS_MIXER_SINK_INPUT (object)); + + mixer_sink_input = GVC_MIXER_SINK_INPUT (object); + + g_return_if_fail (mixer_sink_input->priv != NULL); + G_OBJECT_CLASS (gvc_mixer_sink_input_parent_class)->finalize (object); +} + +GvcMixerStream * +gvc_mixer_sink_input_new (pa_context *context, + guint index, + GvcChannelMap *channel_map) +{ + GObject *object; + + object = g_object_new (GVC_TYPE_MIXER_SINK_INPUT, + "pa-context", context, + "index", index, + "channel-map", channel_map, + NULL); + + return GVC_MIXER_STREAM (object); +} diff --git a/mate-volume-control/src/gvc-mixer-sink-input.h b/mate-volume-control/src/gvc-mixer-sink-input.h new file mode 100644 index 0000000..8a4b714 --- /dev/null +++ b/mate-volume-control/src/gvc-mixer-sink-input.h @@ -0,0 +1,57 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*- + * + * Copyright (C) 2008 Red Hat, Inc. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + */ + +#ifndef __GVC_MIXER_SINK_INPUT_H +#define __GVC_MIXER_SINK_INPUT_H + +#include <glib-object.h> +#include "gvc-mixer-stream.h" + +G_BEGIN_DECLS + +#define GVC_TYPE_MIXER_SINK_INPUT (gvc_mixer_sink_input_get_type ()) +#define GVC_MIXER_SINK_INPUT(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), GVC_TYPE_MIXER_SINK_INPUT, GvcMixerSinkInput)) +#define GVC_MIXER_SINK_INPUT_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), GVC_TYPE_MIXER_SINK_INPUT, GvcMixerSinkInputClass)) +#define GVC_IS_MIXER_SINK_INPUT(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GVC_TYPE_MIXER_SINK_INPUT)) +#define GVC_IS_MIXER_SINK_INPUT_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), GVC_TYPE_MIXER_SINK_INPUT)) +#define GVC_MIXER_SINK_INPUT_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), GVC_TYPE_MIXER_SINK_INPUT, GvcMixerSinkInputClass)) + +typedef struct GvcMixerSinkInputPrivate GvcMixerSinkInputPrivate; + +typedef struct +{ + GvcMixerStream parent; + GvcMixerSinkInputPrivate *priv; +} GvcMixerSinkInput; + +typedef struct +{ + GvcMixerStreamClass parent_class; +} GvcMixerSinkInputClass; + +GType gvc_mixer_sink_input_get_type (void); + +GvcMixerStream * gvc_mixer_sink_input_new (pa_context *context, + guint index, + GvcChannelMap *map); + +G_END_DECLS + +#endif /* __GVC_MIXER_SINK_INPUT_H */ diff --git a/mate-volume-control/src/gvc-mixer-sink.c b/mate-volume-control/src/gvc-mixer-sink.c new file mode 100644 index 0000000..649b840 --- /dev/null +++ b/mate-volume-control/src/gvc-mixer-sink.c @@ -0,0 +1,220 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*- + * + * Copyright (C) 2008 William Jon McCann + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + */ + +#include "config.h" + +#include <stdlib.h> +#include <stdio.h> +#include <unistd.h> + +#include <glib.h> +#include <glib/gi18n.h> + +#include <pulse/pulseaudio.h> + +#include "gvc-mixer-sink.h" + +#define GVC_MIXER_SINK_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GVC_TYPE_MIXER_SINK, GvcMixerSinkPrivate)) + +struct GvcMixerSinkPrivate +{ + gpointer dummy; +}; + +static void gvc_mixer_sink_class_init (GvcMixerSinkClass *klass); +static void gvc_mixer_sink_init (GvcMixerSink *mixer_sink); +static void gvc_mixer_sink_finalize (GObject *object); +static void gvc_mixer_sink_dispose (GObject *object); + +G_DEFINE_TYPE (GvcMixerSink, gvc_mixer_sink, GVC_TYPE_MIXER_STREAM) + +static gboolean +gvc_mixer_sink_push_volume (GvcMixerStream *stream, gpointer *op) +{ + pa_operation *o; + guint index; + const GvcChannelMap *map; + pa_context *context; + const pa_cvolume *cv; + + index = gvc_mixer_stream_get_index (stream); + + map = gvc_mixer_stream_get_channel_map (stream); + + /* set the volume */ + cv = gvc_channel_map_get_cvolume(map); + + context = gvc_mixer_stream_get_pa_context (stream); + + o = pa_context_set_sink_volume_by_index (context, + index, + cv, + NULL, + NULL); + + if (o == NULL) { + g_warning ("pa_context_set_sink_volume_by_index() failed: %s", pa_strerror(pa_context_errno(context))); + return FALSE; + } + + *op = o; + + return TRUE; +} + +static gboolean +gvc_mixer_sink_change_is_muted (GvcMixerStream *stream, + gboolean is_muted) +{ + pa_operation *o; + guint index; + pa_context *context; + + index = gvc_mixer_stream_get_index (stream); + context = gvc_mixer_stream_get_pa_context (stream); + + o = pa_context_set_sink_mute_by_index (context, + index, + is_muted, + NULL, + NULL); + + if (o == NULL) { + g_warning ("pa_context_set_sink_mute_by_index() failed: %s", pa_strerror(pa_context_errno(context))); + return FALSE; + } + + pa_operation_unref(o); + + return TRUE; +} + +static gboolean +gvc_mixer_sink_change_port (GvcMixerStream *stream, + const char *port) +{ +#if PA_MICRO > 15 + pa_operation *o; + guint index; + pa_context *context; + + index = gvc_mixer_stream_get_index (stream); + context = gvc_mixer_stream_get_pa_context (stream); + + o = pa_context_set_sink_port_by_index (context, + index, + port, + NULL, + NULL); + + if (o == NULL) { + g_warning ("pa_context_set_sink_port_by_index() failed: %s", pa_strerror(pa_context_errno(context))); + return FALSE; + } + + pa_operation_unref(o); + + return TRUE; +#else + return FALSE; +#endif /* PA_MICRO > 15 */ +} + +static GObject * +gvc_mixer_sink_constructor (GType type, + guint n_construct_properties, + GObjectConstructParam *construct_params) +{ + GObject *object; + GvcMixerSink *self; + + object = G_OBJECT_CLASS (gvc_mixer_sink_parent_class)->constructor (type, n_construct_properties, construct_params); + + self = GVC_MIXER_SINK (object); + + return object; +} + +static void +gvc_mixer_sink_class_init (GvcMixerSinkClass *klass) +{ + GObjectClass *object_class = G_OBJECT_CLASS (klass); + GvcMixerStreamClass *stream_class = GVC_MIXER_STREAM_CLASS (klass); + + object_class->constructor = gvc_mixer_sink_constructor; + object_class->dispose = gvc_mixer_sink_dispose; + object_class->finalize = gvc_mixer_sink_finalize; + + stream_class->push_volume = gvc_mixer_sink_push_volume; + stream_class->change_port = gvc_mixer_sink_change_port; + stream_class->change_is_muted = gvc_mixer_sink_change_is_muted; + + g_type_class_add_private (klass, sizeof (GvcMixerSinkPrivate)); +} + +static void +gvc_mixer_sink_init (GvcMixerSink *sink) +{ + sink->priv = GVC_MIXER_SINK_GET_PRIVATE (sink); +} + +static void +gvc_mixer_sink_dispose (GObject *object) +{ + GvcMixerSink *mixer_sink; + + g_return_if_fail (object != NULL); + g_return_if_fail (GVC_IS_MIXER_SINK (object)); + + mixer_sink = GVC_MIXER_SINK (object); + + G_OBJECT_CLASS (gvc_mixer_sink_parent_class)->dispose (object); +} + +static void +gvc_mixer_sink_finalize (GObject *object) +{ + GvcMixerSink *mixer_sink; + + g_return_if_fail (object != NULL); + g_return_if_fail (GVC_IS_MIXER_SINK (object)); + + mixer_sink = GVC_MIXER_SINK (object); + + g_return_if_fail (mixer_sink->priv != NULL); + G_OBJECT_CLASS (gvc_mixer_sink_parent_class)->finalize (object); +} + +GvcMixerStream * +gvc_mixer_sink_new (pa_context *context, + guint index, + GvcChannelMap *channel_map) + +{ + GObject *object; + + object = g_object_new (GVC_TYPE_MIXER_SINK, + "pa-context", context, + "index", index, + "channel-map", channel_map, + NULL); + + return GVC_MIXER_STREAM (object); +} diff --git a/mate-volume-control/src/gvc-mixer-sink.h b/mate-volume-control/src/gvc-mixer-sink.h new file mode 100644 index 0000000..2a4a4ba --- /dev/null +++ b/mate-volume-control/src/gvc-mixer-sink.h @@ -0,0 +1,57 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*- + * + * Copyright (C) 2008 Red Hat, Inc. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + */ + +#ifndef __GVC_MIXER_SINK_H +#define __GVC_MIXER_SINK_H + +#include <glib-object.h> +#include "gvc-mixer-stream.h" + +G_BEGIN_DECLS + +#define GVC_TYPE_MIXER_SINK (gvc_mixer_sink_get_type ()) +#define GVC_MIXER_SINK(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), GVC_TYPE_MIXER_SINK, GvcMixerSink)) +#define GVC_MIXER_SINK_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), GVC_TYPE_MIXER_SINK, GvcMixerSinkClass)) +#define GVC_IS_MIXER_SINK(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GVC_TYPE_MIXER_SINK)) +#define GVC_IS_MIXER_SINK_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), GVC_TYPE_MIXER_SINK)) +#define GVC_MIXER_SINK_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), GVC_TYPE_MIXER_SINK, GvcMixerSinkClass)) + +typedef struct GvcMixerSinkPrivate GvcMixerSinkPrivate; + +typedef struct +{ + GvcMixerStream parent; + GvcMixerSinkPrivate *priv; +} GvcMixerSink; + +typedef struct +{ + GvcMixerStreamClass parent_class; +} GvcMixerSinkClass; + +GType gvc_mixer_sink_get_type (void); + +GvcMixerStream * gvc_mixer_sink_new (pa_context *context, + guint index, + GvcChannelMap *map); + +G_END_DECLS + +#endif /* __GVC_MIXER_SINK_H */ diff --git a/mate-volume-control/src/gvc-mixer-source-output.c b/mate-volume-control/src/gvc-mixer-source-output.c new file mode 100644 index 0000000..b4cc34d --- /dev/null +++ b/mate-volume-control/src/gvc-mixer-source-output.c @@ -0,0 +1,128 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*- + * + * Copyright (C) 2008 William Jon McCann + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + */ + +#include "config.h" + +#include <stdlib.h> +#include <stdio.h> +#include <unistd.h> + +#include <glib.h> +#include <glib/gi18n.h> + +#include <pulse/pulseaudio.h> + +#include "gvc-mixer-source-output.h" + +#define GVC_MIXER_SOURCE_OUTPUT_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GVC_TYPE_MIXER_SOURCE_OUTPUT, GvcMixerSourceOutputPrivate)) + +struct GvcMixerSourceOutputPrivate +{ + gpointer dummy; +}; + +static void gvc_mixer_source_output_class_init (GvcMixerSourceOutputClass *klass); +static void gvc_mixer_source_output_init (GvcMixerSourceOutput *mixer_source_output); +static void gvc_mixer_source_output_finalize (GObject *object); + +G_DEFINE_TYPE (GvcMixerSourceOutput, gvc_mixer_source_output, GVC_TYPE_MIXER_STREAM) + +static gboolean +gvc_mixer_source_output_push_volume (GvcMixerStream *stream, gpointer *op) +{ + /* FIXME: */ + *op = NULL; + return TRUE; +} + +static gboolean +gvc_mixer_source_output_change_is_muted (GvcMixerStream *stream, + gboolean is_muted) +{ + /* FIXME: */ + return TRUE; +} + +static GObject * +gvc_mixer_source_output_constructor (GType type, + guint n_construct_properties, + GObjectConstructParam *construct_params) +{ + GObject *object; + GvcMixerSourceOutput *self; + + object = G_OBJECT_CLASS (gvc_mixer_source_output_parent_class)->constructor (type, n_construct_properties, construct_params); + + self = GVC_MIXER_SOURCE_OUTPUT (object); + + return object; +} + +static void +gvc_mixer_source_output_class_init (GvcMixerSourceOutputClass *klass) +{ + GObjectClass *object_class = G_OBJECT_CLASS (klass); + GvcMixerStreamClass *stream_class = GVC_MIXER_STREAM_CLASS (klass); + + object_class->constructor = gvc_mixer_source_output_constructor; + object_class->finalize = gvc_mixer_source_output_finalize; + + stream_class->push_volume = gvc_mixer_source_output_push_volume; + stream_class->change_is_muted = gvc_mixer_source_output_change_is_muted; + + g_type_class_add_private (klass, sizeof (GvcMixerSourceOutputPrivate)); +} + +static void +gvc_mixer_source_output_init (GvcMixerSourceOutput *source_output) +{ + source_output->priv = GVC_MIXER_SOURCE_OUTPUT_GET_PRIVATE (source_output); + +} + +static void +gvc_mixer_source_output_finalize (GObject *object) +{ + GvcMixerSourceOutput *mixer_source_output; + + g_return_if_fail (object != NULL); + g_return_if_fail (GVC_IS_MIXER_SOURCE_OUTPUT (object)); + + mixer_source_output = GVC_MIXER_SOURCE_OUTPUT (object); + + g_return_if_fail (mixer_source_output->priv != NULL); + G_OBJECT_CLASS (gvc_mixer_source_output_parent_class)->finalize (object); +} + +GvcMixerStream * +gvc_mixer_source_output_new (pa_context *context, + guint index, + GvcChannelMap *channel_map) +{ + GObject *object; + + object = g_object_new (GVC_TYPE_MIXER_SOURCE_OUTPUT, + "pa-context", context, + "index", index, + "channel-map", channel_map, + NULL); + + return GVC_MIXER_STREAM (object); +} diff --git a/mate-volume-control/src/gvc-mixer-source-output.h b/mate-volume-control/src/gvc-mixer-source-output.h new file mode 100644 index 0000000..2283e3b --- /dev/null +++ b/mate-volume-control/src/gvc-mixer-source-output.h @@ -0,0 +1,57 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*- + * + * Copyright (C) 2008 Red Hat, Inc. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + */ + +#ifndef __GVC_MIXER_SOURCE_OUTPUT_H +#define __GVC_MIXER_SOURCE_OUTPUT_H + +#include <glib-object.h> +#include "gvc-mixer-stream.h" + +G_BEGIN_DECLS + +#define GVC_TYPE_MIXER_SOURCE_OUTPUT (gvc_mixer_source_output_get_type ()) +#define GVC_MIXER_SOURCE_OUTPUT(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), GVC_TYPE_MIXER_SOURCE_OUTPUT, GvcMixerSourceOutput)) +#define GVC_MIXER_SOURCE_OUTPUT_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), GVC_TYPE_MIXER_SOURCE_OUTPUT, GvcMixerSourceOutputClass)) +#define GVC_IS_MIXER_SOURCE_OUTPUT(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GVC_TYPE_MIXER_SOURCE_OUTPUT)) +#define GVC_IS_MIXER_SOURCE_OUTPUT_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), GVC_TYPE_MIXER_SOURCE_OUTPUT)) +#define GVC_MIXER_SOURCE_OUTPUT_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), GVC_TYPE_MIXER_SOURCE_OUTPUT, GvcMixerSourceOutputClass)) + +typedef struct GvcMixerSourceOutputPrivate GvcMixerSourceOutputPrivate; + +typedef struct +{ + GvcMixerStream parent; + GvcMixerSourceOutputPrivate *priv; +} GvcMixerSourceOutput; + +typedef struct +{ + GvcMixerStreamClass parent_class; +} GvcMixerSourceOutputClass; + +GType gvc_mixer_source_output_get_type (void); + +GvcMixerStream * gvc_mixer_source_output_new (pa_context *context, + guint index, + GvcChannelMap *map); + +G_END_DECLS + +#endif /* __GVC_MIXER_SOURCE_OUTPUT_H */ diff --git a/mate-volume-control/src/gvc-mixer-source.c b/mate-volume-control/src/gvc-mixer-source.c new file mode 100644 index 0000000..309bcb9 --- /dev/null +++ b/mate-volume-control/src/gvc-mixer-source.c @@ -0,0 +1,220 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*- + * + * Copyright (C) 2008 William Jon McCann + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + */ + +#include "config.h" + +#include <stdlib.h> +#include <stdio.h> +#include <unistd.h> + +#include <glib.h> +#include <glib/gi18n.h> + +#include <pulse/pulseaudio.h> + +#include "gvc-mixer-source.h" + +#define GVC_MIXER_SOURCE_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GVC_TYPE_MIXER_SOURCE, GvcMixerSourcePrivate)) + +struct GvcMixerSourcePrivate +{ + gpointer dummy; +}; + +static void gvc_mixer_source_class_init (GvcMixerSourceClass *klass); +static void gvc_mixer_source_init (GvcMixerSource *mixer_source); +static void gvc_mixer_source_finalize (GObject *object); +static void gvc_mixer_source_dispose (GObject *object); + +G_DEFINE_TYPE (GvcMixerSource, gvc_mixer_source, GVC_TYPE_MIXER_STREAM) + +static gboolean +gvc_mixer_source_push_volume (GvcMixerStream *stream, gpointer *op) +{ + pa_operation *o; + guint index; + const GvcChannelMap *map; + pa_context *context; + const pa_cvolume *cv; + + index = gvc_mixer_stream_get_index (stream); + + map = gvc_mixer_stream_get_channel_map (stream); + + /* set the volume */ + cv = gvc_channel_map_get_cvolume (map); + + context = gvc_mixer_stream_get_pa_context (stream); + + o = pa_context_set_source_volume_by_index (context, + index, + cv, + NULL, + NULL); + + if (o == NULL) { + g_warning ("pa_context_set_source_volume_by_index() failed: %s", pa_strerror(pa_context_errno(context))); + return FALSE; + } + + *op = o; + + return TRUE; +} + +static gboolean +gvc_mixer_source_change_is_muted (GvcMixerStream *stream, + gboolean is_muted) +{ + pa_operation *o; + guint index; + pa_context *context; + + index = gvc_mixer_stream_get_index (stream); + context = gvc_mixer_stream_get_pa_context (stream); + + o = pa_context_set_source_mute_by_index (context, + index, + is_muted, + NULL, + NULL); + + if (o == NULL) { + g_warning ("pa_context_set_source_mute_by_index() failed: %s", pa_strerror(pa_context_errno(context))); + return FALSE; + } + + pa_operation_unref(o); + + return TRUE; +} + +static gboolean +gvc_mixer_source_change_port (GvcMixerStream *stream, + const char *port) +{ +#if PA_MICRO > 15 + pa_operation *o; + guint index; + pa_context *context; + + index = gvc_mixer_stream_get_index (stream); + context = gvc_mixer_stream_get_pa_context (stream); + + o = pa_context_set_source_port_by_index (context, + index, + port, + NULL, + NULL); + + if (o == NULL) { + g_warning ("pa_context_set_source_port_by_index() failed: %s", pa_strerror(pa_context_errno(context))); + return FALSE; + } + + pa_operation_unref(o); + + return TRUE; +#else + return FALSE; +#endif /* PA_MICRO > 15 */ +} + +static GObject * +gvc_mixer_source_constructor (GType type, + guint n_construct_properties, + GObjectConstructParam *construct_params) +{ + GObject *object; + GvcMixerSource *self; + + object = G_OBJECT_CLASS (gvc_mixer_source_parent_class)->constructor (type, n_construct_properties, construct_params); + + self = GVC_MIXER_SOURCE (object); + + return object; +} + +static void +gvc_mixer_source_class_init (GvcMixerSourceClass *klass) +{ + GObjectClass *object_class = G_OBJECT_CLASS (klass); + GvcMixerStreamClass *stream_class = GVC_MIXER_STREAM_CLASS (klass); + + object_class->constructor = gvc_mixer_source_constructor; + object_class->dispose = gvc_mixer_source_dispose; + object_class->finalize = gvc_mixer_source_finalize; + + stream_class->push_volume = gvc_mixer_source_push_volume; + stream_class->change_is_muted = gvc_mixer_source_change_is_muted; + stream_class->change_port = gvc_mixer_source_change_port; + + g_type_class_add_private (klass, sizeof (GvcMixerSourcePrivate)); +} + +static void +gvc_mixer_source_init (GvcMixerSource *source) +{ + source->priv = GVC_MIXER_SOURCE_GET_PRIVATE (source); +} + +static void +gvc_mixer_source_dispose (GObject *object) +{ + GvcMixerSource *mixer_source; + + g_return_if_fail (object != NULL); + g_return_if_fail (GVC_IS_MIXER_SOURCE (object)); + + mixer_source = GVC_MIXER_SOURCE (object); + + G_OBJECT_CLASS (gvc_mixer_source_parent_class)->dispose (object); +} + +static void +gvc_mixer_source_finalize (GObject *object) +{ + GvcMixerSource *mixer_source; + + g_return_if_fail (object != NULL); + g_return_if_fail (GVC_IS_MIXER_SOURCE (object)); + + mixer_source = GVC_MIXER_SOURCE (object); + + g_return_if_fail (mixer_source->priv != NULL); + G_OBJECT_CLASS (gvc_mixer_source_parent_class)->finalize (object); +} + +GvcMixerStream * +gvc_mixer_source_new (pa_context *context, + guint index, + GvcChannelMap *channel_map) + +{ + GObject *object; + + object = g_object_new (GVC_TYPE_MIXER_SOURCE, + "pa-context", context, + "index", index, + "channel-map", channel_map, + NULL); + + return GVC_MIXER_STREAM (object); +} diff --git a/mate-volume-control/src/gvc-mixer-source.h b/mate-volume-control/src/gvc-mixer-source.h new file mode 100644 index 0000000..503f1b5 --- /dev/null +++ b/mate-volume-control/src/gvc-mixer-source.h @@ -0,0 +1,57 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*- + * + * Copyright (C) 2008 Red Hat, Inc. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + */ + +#ifndef __GVC_MIXER_SOURCE_H +#define __GVC_MIXER_SOURCE_H + +#include <glib-object.h> +#include "gvc-mixer-stream.h" + +G_BEGIN_DECLS + +#define GVC_TYPE_MIXER_SOURCE (gvc_mixer_source_get_type ()) +#define GVC_MIXER_SOURCE(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), GVC_TYPE_MIXER_SOURCE, GvcMixerSource)) +#define GVC_MIXER_SOURCE_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), GVC_TYPE_MIXER_SOURCE, GvcMixerSourceClass)) +#define GVC_IS_MIXER_SOURCE(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GVC_TYPE_MIXER_SOURCE)) +#define GVC_IS_MIXER_SOURCE_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), GVC_TYPE_MIXER_SOURCE)) +#define GVC_MIXER_SOURCE_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), GVC_TYPE_MIXER_SOURCE, GvcMixerSourceClass)) + +typedef struct GvcMixerSourcePrivate GvcMixerSourcePrivate; + +typedef struct +{ + GvcMixerStream parent; + GvcMixerSourcePrivate *priv; +} GvcMixerSource; + +typedef struct +{ + GvcMixerStreamClass parent_class; +} GvcMixerSourceClass; + +GType gvc_mixer_source_get_type (void); + +GvcMixerStream * gvc_mixer_source_new (pa_context *context, + guint index, + GvcChannelMap *map); + +G_END_DECLS + +#endif /* __GVC_MIXER_SOURCE_H */ diff --git a/mate-volume-control/src/gvc-mixer-stream.c b/mate-volume-control/src/gvc-mixer-stream.c new file mode 100644 index 0000000..243d773 --- /dev/null +++ b/mate-volume-control/src/gvc-mixer-stream.c @@ -0,0 +1,912 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*- + * + * Copyright (C) 2008 William Jon McCann + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + */ + +#include "config.h" + +#include <stdlib.h> +#include <stdio.h> +#include <unistd.h> + +#include <glib.h> +#include <glib/gi18n.h> + +#include <pulse/pulseaudio.h> + +#include "gvc-mixer-stream.h" + +#define GVC_MIXER_STREAM_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GVC_TYPE_MIXER_STREAM, GvcMixerStreamPrivate)) + +static guint32 stream_serial = 1; + +struct GvcMixerStreamPrivate +{ + pa_context *pa_context; + guint id; + guint index; + gint card_index; + GvcChannelMap *channel_map; + char *name; + char *description; + char *application_id; + char *icon_name; + gboolean is_muted; + gboolean can_decibel; + gboolean is_event_stream; + gboolean is_virtual; + pa_volume_t base_volume; + pa_operation *change_volume_op; + char *port; + char *human_port; + GList *ports; +}; + +enum +{ + PROP_0, + PROP_ID, + PROP_PA_CONTEXT, + PROP_CHANNEL_MAP, + PROP_INDEX, + PROP_NAME, + PROP_DESCRIPTION, + PROP_APPLICATION_ID, + PROP_ICON_NAME, + PROP_VOLUME, + PROP_DECIBEL, + PROP_IS_MUTED, + PROP_CAN_DECIBEL, + PROP_IS_EVENT_STREAM, + PROP_IS_VIRTUAL, + PROP_CARD_INDEX, + PROP_PORT, +}; + +static void gvc_mixer_stream_class_init (GvcMixerStreamClass *klass); +static void gvc_mixer_stream_init (GvcMixerStream *mixer_stream); +static void gvc_mixer_stream_finalize (GObject *object); + +G_DEFINE_ABSTRACT_TYPE (GvcMixerStream, gvc_mixer_stream, G_TYPE_OBJECT) + +static guint32 +get_next_stream_serial (void) +{ + guint32 serial; + + serial = stream_serial++; + + if ((gint32)stream_serial < 0) { + stream_serial = 1; + } + + return serial; +} + +pa_context * +gvc_mixer_stream_get_pa_context (GvcMixerStream *stream) +{ + g_return_val_if_fail (GVC_IS_MIXER_STREAM (stream), 0); + return stream->priv->pa_context; +} + +guint +gvc_mixer_stream_get_index (GvcMixerStream *stream) +{ + g_return_val_if_fail (GVC_IS_MIXER_STREAM (stream), 0); + return stream->priv->index; +} + +guint +gvc_mixer_stream_get_id (GvcMixerStream *stream) +{ + g_return_val_if_fail (GVC_IS_MIXER_STREAM (stream), 0); + return stream->priv->id; +} + +const GvcChannelMap * +gvc_mixer_stream_get_channel_map (GvcMixerStream *stream) +{ + g_return_val_if_fail (GVC_IS_MIXER_STREAM (stream), NULL); + return stream->priv->channel_map; +} + +pa_volume_t +gvc_mixer_stream_get_volume (GvcMixerStream *stream) +{ + g_return_val_if_fail (GVC_IS_MIXER_STREAM (stream), 0); + + return (pa_volume_t) gvc_channel_map_get_volume(stream->priv->channel_map)[VOLUME]; +} + +gdouble +gvc_mixer_stream_get_decibel (GvcMixerStream *stream) +{ + g_return_val_if_fail (GVC_IS_MIXER_STREAM (stream), 0); + + return pa_sw_volume_to_dB( + (pa_volume_t) gvc_channel_map_get_volume(stream->priv->channel_map)[VOLUME]); +} + +gboolean +gvc_mixer_stream_set_volume (GvcMixerStream *stream, + pa_volume_t volume) +{ + pa_cvolume cv; + + g_return_val_if_fail (GVC_IS_MIXER_STREAM (stream), FALSE); + + cv = *gvc_channel_map_get_cvolume(stream->priv->channel_map); + pa_cvolume_scale(&cv, volume); + + if (!pa_cvolume_equal(gvc_channel_map_get_cvolume(stream->priv->channel_map), &cv)) { + gvc_channel_map_volume_changed(stream->priv->channel_map, &cv, FALSE); + g_object_notify (G_OBJECT (stream), "volume"); + return TRUE; + } + + return FALSE; +} + +gboolean +gvc_mixer_stream_set_decibel (GvcMixerStream *stream, + gdouble db) +{ + pa_cvolume cv; + + g_return_val_if_fail (GVC_IS_MIXER_STREAM (stream), FALSE); + + cv = *gvc_channel_map_get_cvolume(stream->priv->channel_map); + pa_cvolume_scale(&cv, pa_sw_volume_from_dB(db)); + + if (!pa_cvolume_equal(gvc_channel_map_get_cvolume(stream->priv->channel_map), &cv)) { + gvc_channel_map_volume_changed(stream->priv->channel_map, &cv, FALSE); + g_object_notify (G_OBJECT (stream), "volume"); + } + + return TRUE; +} + +gboolean +gvc_mixer_stream_get_is_muted (GvcMixerStream *stream) +{ + g_return_val_if_fail (GVC_IS_MIXER_STREAM (stream), FALSE); + return stream->priv->is_muted; +} + +gboolean +gvc_mixer_stream_get_can_decibel (GvcMixerStream *stream) +{ + g_return_val_if_fail (GVC_IS_MIXER_STREAM (stream), FALSE); + return stream->priv->can_decibel; +} + +gboolean +gvc_mixer_stream_set_is_muted (GvcMixerStream *stream, + gboolean is_muted) +{ + g_return_val_if_fail (GVC_IS_MIXER_STREAM (stream), FALSE); + + if (is_muted != stream->priv->is_muted) { + stream->priv->is_muted = is_muted; + g_object_notify (G_OBJECT (stream), "is-muted"); + } + + return TRUE; +} + +gboolean +gvc_mixer_stream_set_can_decibel (GvcMixerStream *stream, + gboolean can_decibel) +{ + g_return_val_if_fail (GVC_IS_MIXER_STREAM (stream), FALSE); + + if (can_decibel != stream->priv->can_decibel) { + stream->priv->can_decibel = can_decibel; + g_object_notify (G_OBJECT (stream), "can-decibel"); + } + + return TRUE; +} + +const char * +gvc_mixer_stream_get_name (GvcMixerStream *stream) +{ + g_return_val_if_fail (GVC_IS_MIXER_STREAM (stream), NULL); + return stream->priv->name; +} + +const char * +gvc_mixer_stream_get_description (GvcMixerStream *stream) +{ + g_return_val_if_fail (GVC_IS_MIXER_STREAM (stream), NULL); + return stream->priv->description; +} + +gboolean +gvc_mixer_stream_set_name (GvcMixerStream *stream, + const char *name) +{ + g_return_val_if_fail (GVC_IS_MIXER_STREAM (stream), FALSE); + + g_free (stream->priv->name); + stream->priv->name = g_strdup (name); + g_object_notify (G_OBJECT (stream), "name"); + + return TRUE; +} + +gboolean +gvc_mixer_stream_set_description (GvcMixerStream *stream, + const char *description) +{ + g_return_val_if_fail (GVC_IS_MIXER_STREAM (stream), FALSE); + + g_free (stream->priv->description); + stream->priv->description = g_strdup (description); + g_object_notify (G_OBJECT (stream), "description"); + + return TRUE; +} + +gboolean +gvc_mixer_stream_is_event_stream (GvcMixerStream *stream) +{ + g_return_val_if_fail (GVC_IS_MIXER_STREAM (stream), FALSE); + + return stream->priv->is_event_stream; +} + +gboolean +gvc_mixer_stream_set_is_event_stream (GvcMixerStream *stream, + gboolean is_event_stream) +{ + g_return_val_if_fail (GVC_IS_MIXER_STREAM (stream), FALSE); + + stream->priv->is_event_stream = is_event_stream; + g_object_notify (G_OBJECT (stream), "is-event-stream"); + + return TRUE; +} + +gboolean +gvc_mixer_stream_is_virtual (GvcMixerStream *stream) +{ + g_return_val_if_fail (GVC_IS_MIXER_STREAM (stream), FALSE); + + return stream->priv->is_virtual; +} + +gboolean +gvc_mixer_stream_set_is_virtual (GvcMixerStream *stream, + gboolean is_virtual) +{ + g_return_val_if_fail (GVC_IS_MIXER_STREAM (stream), FALSE); + + stream->priv->is_virtual = is_virtual; + g_object_notify (G_OBJECT (stream), "is-virtual"); + + return TRUE; +} + +const char * +gvc_mixer_stream_get_application_id (GvcMixerStream *stream) +{ + g_return_val_if_fail (GVC_IS_MIXER_STREAM (stream), NULL); + return stream->priv->application_id; +} + +gboolean +gvc_mixer_stream_set_application_id (GvcMixerStream *stream, + const char *application_id) +{ + g_return_val_if_fail (GVC_IS_MIXER_STREAM (stream), FALSE); + + g_free (stream->priv->application_id); + stream->priv->application_id = g_strdup (application_id); + g_object_notify (G_OBJECT (stream), "application-id"); + + return TRUE; +} + +static void +on_channel_map_volume_changed (GvcChannelMap *channel_map, + gboolean set, + GvcMixerStream *stream) +{ + if (set == TRUE) + gvc_mixer_stream_push_volume (stream); + + g_object_notify (G_OBJECT (stream), "volume"); +} + +static gboolean +gvc_mixer_stream_set_channel_map (GvcMixerStream *stream, + GvcChannelMap *channel_map) +{ + g_return_val_if_fail (GVC_IS_MIXER_STREAM (stream), FALSE); + + if (channel_map != NULL) { + g_object_ref (channel_map); + } + + if (stream->priv->channel_map != NULL) { + g_signal_handlers_disconnect_by_func (stream->priv->channel_map, + on_channel_map_volume_changed, + stream); + g_object_unref (stream->priv->channel_map); + } + + stream->priv->channel_map = channel_map; + + if (stream->priv->channel_map != NULL) { + g_signal_connect (stream->priv->channel_map, + "volume-changed", + G_CALLBACK (on_channel_map_volume_changed), + stream); + + g_object_notify (G_OBJECT (stream), "channel-map"); + } + + return TRUE; +} + +const char * +gvc_mixer_stream_get_icon_name (GvcMixerStream *stream) +{ + g_return_val_if_fail (GVC_IS_MIXER_STREAM (stream), NULL); + return stream->priv->icon_name; +} + +gboolean +gvc_mixer_stream_set_icon_name (GvcMixerStream *stream, + const char *icon_name) +{ + g_return_val_if_fail (GVC_IS_MIXER_STREAM (stream), FALSE); + + g_free (stream->priv->icon_name); + stream->priv->icon_name = g_strdup (icon_name); + g_object_notify (G_OBJECT (stream), "icon-name"); + + return TRUE; +} + +pa_volume_t +gvc_mixer_stream_get_base_volume (GvcMixerStream *stream) +{ + g_return_val_if_fail (GVC_IS_MIXER_STREAM (stream), 0); + + return stream->priv->base_volume; +} + +gboolean +gvc_mixer_stream_set_base_volume (GvcMixerStream *stream, + pa_volume_t base_volume) +{ + g_return_val_if_fail (GVC_IS_MIXER_STREAM (stream), FALSE); + + stream->priv->base_volume = base_volume; + + return TRUE; +} + +const GvcMixerStreamPort * +gvc_mixer_stream_get_port (GvcMixerStream *stream) +{ + GList *l; + + g_return_val_if_fail (GVC_IS_MIXER_STREAM (stream), NULL); + g_return_val_if_fail (stream->priv->ports != NULL, NULL); + + for (l = stream->priv->ports; l != NULL; l = l->next) { + GvcMixerStreamPort *p = l->data; + if (g_strcmp0 (stream->priv->port, p->port) == 0) { + return p; + } + } + + g_assert_not_reached (); + + return NULL; +} + +gboolean +gvc_mixer_stream_set_port (GvcMixerStream *stream, + const char *port) +{ + GList *l; + + g_return_val_if_fail (GVC_IS_MIXER_STREAM (stream), FALSE); + g_return_val_if_fail (stream->priv->ports != NULL, FALSE); + + g_free (stream->priv->port); + stream->priv->port = g_strdup (port); + + g_free (stream->priv->human_port); + stream->priv->human_port = NULL; + + for (l = stream->priv->ports; l != NULL; l = l->next) { + GvcMixerStreamPort *p = l->data; + if (g_str_equal (stream->priv->port, p->port)) { + stream->priv->human_port = g_strdup (p->human_port); + break; + } + } + + g_object_notify (G_OBJECT (stream), "port"); + + return TRUE; +} + +gboolean +gvc_mixer_stream_change_port (GvcMixerStream *stream, + const char *port) +{ + g_return_val_if_fail (GVC_IS_MIXER_STREAM (stream), FALSE); + return GVC_MIXER_STREAM_GET_CLASS (stream)->change_port (stream, port); +} + +const GList * +gvc_mixer_stream_get_ports (GvcMixerStream *stream) +{ + g_return_val_if_fail (GVC_IS_MIXER_STREAM (stream), FALSE); + return stream->priv->ports; +} + +static int +sort_ports (GvcMixerStreamPort *a, + GvcMixerStreamPort *b) +{ + if (a->priority == b->priority) + return 0; + if (a->priority > b->priority) + return 1; + return -1; +} + +gboolean +gvc_mixer_stream_set_ports (GvcMixerStream *stream, + GList *ports) +{ + g_return_val_if_fail (GVC_IS_MIXER_STREAM (stream), FALSE); + g_return_val_if_fail (stream->priv->ports == NULL, FALSE); + + stream->priv->ports = g_list_sort (ports, (GCompareFunc) sort_ports); + + return TRUE; +} + +gint +gvc_mixer_stream_get_card_index (GvcMixerStream *stream) +{ + g_return_val_if_fail (GVC_IS_MIXER_STREAM (stream), PA_INVALID_INDEX); + return stream->priv->card_index; +} + +gboolean +gvc_mixer_stream_set_card_index (GvcMixerStream *stream, + gint card_index) +{ + g_return_val_if_fail (GVC_IS_MIXER_STREAM (stream), FALSE); + + stream->priv->card_index = card_index; + g_object_notify (G_OBJECT (stream), "card-index"); + + return TRUE; +} + +static void +gvc_mixer_stream_set_property (GObject *object, + guint prop_id, + const GValue *value, + GParamSpec *pspec) +{ + GvcMixerStream *self = GVC_MIXER_STREAM (object); + + switch (prop_id) { + case PROP_PA_CONTEXT: + self->priv->pa_context = g_value_get_pointer (value); + break; + case PROP_INDEX: + self->priv->index = g_value_get_ulong (value); + break; + case PROP_ID: + self->priv->id = g_value_get_ulong (value); + break; + case PROP_CHANNEL_MAP: + gvc_mixer_stream_set_channel_map (self, g_value_get_object (value)); + break; + case PROP_NAME: + gvc_mixer_stream_set_name (self, g_value_get_string (value)); + break; + case PROP_DESCRIPTION: + gvc_mixer_stream_set_description (self, g_value_get_string (value)); + break; + case PROP_APPLICATION_ID: + gvc_mixer_stream_set_application_id (self, g_value_get_string (value)); + break; + case PROP_ICON_NAME: + gvc_mixer_stream_set_icon_name (self, g_value_get_string (value)); + break; + case PROP_VOLUME: + gvc_mixer_stream_set_volume (self, g_value_get_ulong (value)); + break; + case PROP_DECIBEL: + gvc_mixer_stream_set_decibel (self, g_value_get_double (value)); + break; + case PROP_IS_MUTED: + gvc_mixer_stream_set_is_muted (self, g_value_get_boolean (value)); + break; + case PROP_IS_EVENT_STREAM: + gvc_mixer_stream_set_is_event_stream (self, g_value_get_boolean (value)); + break; + case PROP_IS_VIRTUAL: + gvc_mixer_stream_set_is_virtual (self, g_value_get_boolean (value)); + break; + case PROP_CAN_DECIBEL: + gvc_mixer_stream_set_can_decibel (self, g_value_get_boolean (value)); + break; + case PROP_PORT: + gvc_mixer_stream_set_port (self, g_value_get_string (value)); + break; + case PROP_CARD_INDEX: + self->priv->card_index = g_value_get_long (value); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; + } +} + +static void +gvc_mixer_stream_get_property (GObject *object, + guint prop_id, + GValue *value, + GParamSpec *pspec) +{ + GvcMixerStream *self = GVC_MIXER_STREAM (object); + + switch (prop_id) { + case PROP_PA_CONTEXT: + g_value_set_pointer (value, self->priv->pa_context); + break; + case PROP_INDEX: + g_value_set_ulong (value, self->priv->index); + break; + case PROP_ID: + g_value_set_ulong (value, self->priv->id); + break; + case PROP_CHANNEL_MAP: + g_value_set_object (value, self->priv->channel_map); + break; + case PROP_NAME: + g_value_set_string (value, self->priv->name); + break; + case PROP_DESCRIPTION: + g_value_set_string (value, self->priv->description); + break; + case PROP_APPLICATION_ID: + g_value_set_string (value, self->priv->application_id); + break; + case PROP_ICON_NAME: + g_value_set_string (value, self->priv->icon_name); + break; + case PROP_VOLUME: + g_value_set_ulong (value, + pa_cvolume_max(gvc_channel_map_get_cvolume(self->priv->channel_map))); + break; + case PROP_DECIBEL: + g_value_set_double (value, + pa_sw_volume_to_dB(pa_cvolume_max(gvc_channel_map_get_cvolume(self->priv->channel_map)))); + break; + case PROP_IS_MUTED: + g_value_set_boolean (value, self->priv->is_muted); + break; + case PROP_IS_EVENT_STREAM: + g_value_set_boolean (value, self->priv->is_event_stream); + break; + case PROP_IS_VIRTUAL: + g_value_set_boolean (value, self->priv->is_virtual); + break; + case PROP_CAN_DECIBEL: + g_value_set_boolean (value, self->priv->can_decibel); + break; + case PROP_PORT: + g_value_set_string (value, self->priv->port); + break; + case PROP_CARD_INDEX: + g_value_set_long (value, self->priv->card_index); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; + } +} + +static GObject * +gvc_mixer_stream_constructor (GType type, + guint n_construct_properties, + GObjectConstructParam *construct_params) +{ + GObject *object; + GvcMixerStream *self; + + object = G_OBJECT_CLASS (gvc_mixer_stream_parent_class)->constructor (type, n_construct_properties, construct_params); + + self = GVC_MIXER_STREAM (object); + + self->priv->id = get_next_stream_serial (); + + return object; +} + +static gboolean +gvc_mixer_stream_real_change_port (GvcMixerStream *stream, + const char *port) +{ + return FALSE; +} + +static gboolean +gvc_mixer_stream_real_push_volume (GvcMixerStream *stream, gpointer *op) +{ + return FALSE; +} + +static gboolean +gvc_mixer_stream_real_change_is_muted (GvcMixerStream *stream, + gboolean is_muted) +{ + return FALSE; +} + +gboolean +gvc_mixer_stream_push_volume (GvcMixerStream *stream) +{ + pa_operation *op; + gboolean ret; + + g_return_val_if_fail (GVC_IS_MIXER_STREAM (stream), FALSE); + + if (stream->priv->is_event_stream != FALSE) + return TRUE; + + g_debug ("Pushing new volume to stream '%s' (%s)", + stream->priv->description, stream->priv->name); + + ret = GVC_MIXER_STREAM_GET_CLASS (stream)->push_volume (stream, (gpointer *) &op); + if (ret) { + if (stream->priv->change_volume_op != NULL) + pa_operation_unref (stream->priv->change_volume_op); + stream->priv->change_volume_op = op; + } + return ret; +} + +gboolean +gvc_mixer_stream_change_is_muted (GvcMixerStream *stream, + gboolean is_muted) +{ + gboolean ret; + g_return_val_if_fail (GVC_IS_MIXER_STREAM (stream), FALSE); + ret = GVC_MIXER_STREAM_GET_CLASS (stream)->change_is_muted (stream, is_muted); + return ret; +} + +gboolean +gvc_mixer_stream_is_running (GvcMixerStream *stream) +{ + if (stream->priv->change_volume_op == NULL) + return FALSE; + + if ((pa_operation_get_state(stream->priv->change_volume_op) == PA_OPERATION_RUNNING)) + return TRUE; + + pa_operation_unref(stream->priv->change_volume_op); + stream->priv->change_volume_op = NULL; + + return FALSE; +} + +static void +gvc_mixer_stream_class_init (GvcMixerStreamClass *klass) +{ + GObjectClass *gobject_class = G_OBJECT_CLASS (klass); + + gobject_class->constructor = gvc_mixer_stream_constructor; + gobject_class->finalize = gvc_mixer_stream_finalize; + gobject_class->set_property = gvc_mixer_stream_set_property; + gobject_class->get_property = gvc_mixer_stream_get_property; + + klass->push_volume = gvc_mixer_stream_real_push_volume; + klass->change_port = gvc_mixer_stream_real_change_port; + klass->change_is_muted = gvc_mixer_stream_real_change_is_muted; + + g_object_class_install_property (gobject_class, + PROP_INDEX, + g_param_spec_ulong ("index", + "Index", + "The index for this stream", + 0, G_MAXULONG, 0, + G_PARAM_READWRITE|G_PARAM_CONSTRUCT_ONLY)); + g_object_class_install_property (gobject_class, + PROP_ID, + g_param_spec_ulong ("id", + "id", + "The id for this stream", + 0, G_MAXULONG, 0, + G_PARAM_READWRITE|G_PARAM_CONSTRUCT_ONLY)); + g_object_class_install_property (gobject_class, + PROP_CHANNEL_MAP, + g_param_spec_object ("channel-map", + "channel map", + "The channel map for this stream", + GVC_TYPE_CHANNEL_MAP, + G_PARAM_READWRITE|G_PARAM_CONSTRUCT)); + g_object_class_install_property (gobject_class, + PROP_PA_CONTEXT, + g_param_spec_pointer ("pa-context", + "PulseAudio context", + "The PulseAudio context for this stream", + G_PARAM_READWRITE|G_PARAM_CONSTRUCT_ONLY)); + g_object_class_install_property (gobject_class, + PROP_VOLUME, + g_param_spec_ulong ("volume", + "Volume", + "The volume for this stream", + 0, G_MAXULONG, 0, + G_PARAM_READWRITE)); + g_object_class_install_property (gobject_class, + PROP_DECIBEL, + g_param_spec_double ("decibel", + "Decibel", + "The decibel level for this stream", + -G_MAXDOUBLE, G_MAXDOUBLE, 0, + G_PARAM_READWRITE|G_PARAM_CONSTRUCT)); + + g_object_class_install_property (gobject_class, + PROP_NAME, + g_param_spec_string ("name", + "Name", + "Name to display for this stream", + NULL, + G_PARAM_READWRITE|G_PARAM_CONSTRUCT)); + g_object_class_install_property (gobject_class, + PROP_DESCRIPTION, + g_param_spec_string ("description", + "Description", + "Description to display for this stream", + NULL, + G_PARAM_READWRITE|G_PARAM_CONSTRUCT)); + g_object_class_install_property (gobject_class, + PROP_APPLICATION_ID, + g_param_spec_string ("application-id", + "Application identifier", + "Application identifier for this stream", + NULL, + G_PARAM_READWRITE|G_PARAM_CONSTRUCT)); + g_object_class_install_property (gobject_class, + PROP_ICON_NAME, + g_param_spec_string ("icon-name", + "Icon Name", + "Name of icon to display for this stream", + NULL, + G_PARAM_READWRITE|G_PARAM_CONSTRUCT)); + g_object_class_install_property (gobject_class, + PROP_IS_MUTED, + g_param_spec_boolean ("is-muted", + "is muted", + "Whether stream is muted", + FALSE, + G_PARAM_READWRITE|G_PARAM_CONSTRUCT)); + g_object_class_install_property (gobject_class, + PROP_CAN_DECIBEL, + g_param_spec_boolean ("can-decibel", + "can decibel", + "Whether stream volume can be converted to decibel units", + FALSE, + G_PARAM_READWRITE|G_PARAM_CONSTRUCT)); + g_object_class_install_property (gobject_class, + PROP_IS_EVENT_STREAM, + g_param_spec_boolean ("is-event-stream", + "is event stream", + "Whether stream's role is to play an event", + FALSE, + G_PARAM_READWRITE|G_PARAM_CONSTRUCT)); + g_object_class_install_property (gobject_class, + PROP_IS_VIRTUAL, + g_param_spec_boolean ("is-virtual", + "is virtual stream", + "Whether the stream is virtual", + FALSE, + G_PARAM_READWRITE|G_PARAM_CONSTRUCT)); + g_object_class_install_property (gobject_class, + PROP_PORT, + g_param_spec_string ("port", + "Port", + "The name of the current port for this stream", + NULL, + G_PARAM_READWRITE)); + g_object_class_install_property (gobject_class, + PROP_CARD_INDEX, + g_param_spec_long ("card-index", + "Card index", + "The index of the card for this stream", + PA_INVALID_INDEX, G_MAXLONG, PA_INVALID_INDEX, + G_PARAM_READWRITE|G_PARAM_CONSTRUCT)); + g_type_class_add_private (klass, sizeof (GvcMixerStreamPrivate)); +} + +static void +gvc_mixer_stream_init (GvcMixerStream *stream) +{ + stream->priv = GVC_MIXER_STREAM_GET_PRIVATE (stream); +} + +static void +free_port (GvcMixerStreamPort *p) +{ + g_free (p->port); + g_free (p->human_port); + g_free (p); +} + +static void +gvc_mixer_stream_finalize (GObject *object) +{ + GvcMixerStream *mixer_stream; + + g_return_if_fail (object != NULL); + g_return_if_fail (GVC_IS_MIXER_STREAM (object)); + + mixer_stream = GVC_MIXER_STREAM (object); + + g_return_if_fail (mixer_stream->priv != NULL); + + g_object_unref (mixer_stream->priv->channel_map); + mixer_stream->priv->channel_map = NULL; + + g_free (mixer_stream->priv->name); + mixer_stream->priv->name = NULL; + + g_free (mixer_stream->priv->description); + mixer_stream->priv->description = NULL; + + g_free (mixer_stream->priv->application_id); + mixer_stream->priv->application_id = NULL; + + g_free (mixer_stream->priv->icon_name); + mixer_stream->priv->icon_name = NULL; + + g_free (mixer_stream->priv->port); + mixer_stream->priv->port = NULL; + + g_free (mixer_stream->priv->human_port); + mixer_stream->priv->human_port = NULL; + + g_list_foreach (mixer_stream->priv->ports, (GFunc) free_port, NULL); + g_list_free (mixer_stream->priv->ports); + mixer_stream->priv->ports = NULL; + + if (mixer_stream->priv->change_volume_op) { + pa_operation_unref(mixer_stream->priv->change_volume_op); + mixer_stream->priv->change_volume_op = NULL; + } + + G_OBJECT_CLASS (gvc_mixer_stream_parent_class)->finalize (object); +} diff --git a/mate-volume-control/src/gvc-mixer-stream.h b/mate-volume-control/src/gvc-mixer-stream.h new file mode 100644 index 0000000..bbeb8a3 --- /dev/null +++ b/mate-volume-control/src/gvc-mixer-stream.h @@ -0,0 +1,127 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*- + * + * Copyright (C) 2008 Red Hat, Inc. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + */ + +#ifndef __GVC_MIXER_STREAM_H +#define __GVC_MIXER_STREAM_H + +#include <glib-object.h> +#include <pulse/pulseaudio.h> + +#include "gvc-channel-map.h" + +G_BEGIN_DECLS + +#define GVC_TYPE_MIXER_STREAM (gvc_mixer_stream_get_type ()) +#define GVC_MIXER_STREAM(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), GVC_TYPE_MIXER_STREAM, GvcMixerStream)) +#define GVC_MIXER_STREAM_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), GVC_TYPE_MIXER_STREAM, GvcMixerStreamClass)) +#define GVC_IS_MIXER_STREAM(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GVC_TYPE_MIXER_STREAM)) +#define GVC_IS_MIXER_STREAM_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), GVC_TYPE_MIXER_STREAM)) +#define GVC_MIXER_STREAM_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), GVC_TYPE_MIXER_STREAM, GvcMixerStreamClass)) + +typedef struct GvcMixerStreamPrivate GvcMixerStreamPrivate; + +typedef struct +{ + GObject parent; + GvcMixerStreamPrivate *priv; +} GvcMixerStream; + +typedef struct +{ + GObjectClass parent_class; + + /* vtable */ + gboolean (*push_volume) (GvcMixerStream *stream, + gpointer *operation); + gboolean (*change_is_muted) (GvcMixerStream *stream, + gboolean is_muted); + gboolean (*change_port) (GvcMixerStream *stream, + const char *port); +} GvcMixerStreamClass; + +typedef struct +{ + char *port; + char *human_port; + guint priority; +} GvcMixerStreamPort; + +GType gvc_mixer_stream_get_type (void); + +pa_context * gvc_mixer_stream_get_pa_context (GvcMixerStream *stream); +guint gvc_mixer_stream_get_index (GvcMixerStream *stream); +guint gvc_mixer_stream_get_id (GvcMixerStream *stream); +const GvcChannelMap *gvc_mixer_stream_get_channel_map(GvcMixerStream *stream); +const GvcMixerStreamPort *gvc_mixer_stream_get_port (GvcMixerStream *stream); +const GList * gvc_mixer_stream_get_ports (GvcMixerStream *stream); +gboolean gvc_mixer_stream_change_port (GvcMixerStream *stream, + const char *port); + +pa_volume_t gvc_mixer_stream_get_volume (GvcMixerStream *stream); +gdouble gvc_mixer_stream_get_decibel (GvcMixerStream *stream); +gboolean gvc_mixer_stream_push_volume (GvcMixerStream *stream); +pa_volume_t gvc_mixer_stream_get_base_volume (GvcMixerStream *stream); + +gboolean gvc_mixer_stream_get_is_muted (GvcMixerStream *stream); +gboolean gvc_mixer_stream_get_can_decibel (GvcMixerStream *stream); +gboolean gvc_mixer_stream_change_is_muted (GvcMixerStream *stream, + gboolean is_muted); +gboolean gvc_mixer_stream_is_running (GvcMixerStream *stream); +const char * gvc_mixer_stream_get_name (GvcMixerStream *stream); +const char * gvc_mixer_stream_get_icon_name (GvcMixerStream *stream); +const char * gvc_mixer_stream_get_description (GvcMixerStream *stream); +const char * gvc_mixer_stream_get_application_id (GvcMixerStream *stream); +gboolean gvc_mixer_stream_is_event_stream (GvcMixerStream *stream); +gboolean gvc_mixer_stream_is_virtual (GvcMixerStream *stream); +gint gvc_mixer_stream_get_card_index (GvcMixerStream *stream); + +/* private */ +gboolean gvc_mixer_stream_set_volume (GvcMixerStream *stream, + pa_volume_t volume); +gboolean gvc_mixer_stream_set_decibel (GvcMixerStream *stream, + gdouble db); +gboolean gvc_mixer_stream_set_is_muted (GvcMixerStream *stream, + gboolean is_muted); +gboolean gvc_mixer_stream_set_can_decibel (GvcMixerStream *stream, + gboolean can_decibel); +gboolean gvc_mixer_stream_set_name (GvcMixerStream *stream, + const char *name); +gboolean gvc_mixer_stream_set_description (GvcMixerStream *stream, + const char *description); +gboolean gvc_mixer_stream_set_icon_name (GvcMixerStream *stream, + const char *name); +gboolean gvc_mixer_stream_set_is_event_stream (GvcMixerStream *stream, + gboolean is_event_stream); +gboolean gvc_mixer_stream_set_is_virtual (GvcMixerStream *stream, + gboolean is_event_stream); +gboolean gvc_mixer_stream_set_application_id (GvcMixerStream *stream, + const char *application_id); +gboolean gvc_mixer_stream_set_base_volume (GvcMixerStream *stream, + pa_volume_t base_volume); +gboolean gvc_mixer_stream_set_port (GvcMixerStream *stream, + const char *port); +gboolean gvc_mixer_stream_set_ports (GvcMixerStream *stream, + GList *ports); +gboolean gvc_mixer_stream_set_card_index (GvcMixerStream *stream, + gint card_index); + +G_END_DECLS + +#endif /* __GVC_MIXER_STREAM_H */ diff --git a/mate-volume-control/src/gvc-speaker-test.c b/mate-volume-control/src/gvc-speaker-test.c new file mode 100644 index 0000000..b3bb99c --- /dev/null +++ b/mate-volume-control/src/gvc-speaker-test.c @@ -0,0 +1,499 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*- + * + * Copyright (C) 2009 Bastien Nocera + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + */ + +#include "config.h" + +#include <stdlib.h> +#include <stdio.h> +#include <unistd.h> + +#include <glib.h> +#include <glib/gi18n.h> +#include <gtk/gtk.h> +#include <canberra.h> +#include <canberra-gtk.h> + +#include "gvc-speaker-test.h" +#include "gvc-mixer-stream.h" +#include "gvc-mixer-card.h" + +#define GVC_SPEAKER_TEST_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GVC_TYPE_SPEAKER_TEST, GvcSpeakerTestPrivate)) + +struct GvcSpeakerTestPrivate +{ + GtkWidget *channel_controls[PA_CHANNEL_POSITION_MAX]; + ca_context *canberra; + GvcMixerCard *card; + GvcMixerControl *control; +}; + +enum { + COL_NAME, + COL_HUMAN_NAME, + NUM_COLS +}; + +enum { + PROP_0, + PROP_CARD, + PROP_CONTROL +}; + +static void gvc_speaker_test_class_init (GvcSpeakerTestClass *klass); +static void gvc_speaker_test_init (GvcSpeakerTest *speaker_test); +static void gvc_speaker_test_finalize (GObject *object); +static void update_channel_map (GvcSpeakerTest *speaker_test); + +G_DEFINE_TYPE (GvcSpeakerTest, gvc_speaker_test, GTK_TYPE_TABLE) + +static const int position_table[] = { + /* Position, X, Y */ + PA_CHANNEL_POSITION_FRONT_LEFT, 0, 0, + PA_CHANNEL_POSITION_FRONT_LEFT_OF_CENTER, 1, 0, + PA_CHANNEL_POSITION_FRONT_CENTER, 2, 0, + PA_CHANNEL_POSITION_MONO, 2, 0, + PA_CHANNEL_POSITION_FRONT_RIGHT_OF_CENTER, 3, 0, + PA_CHANNEL_POSITION_FRONT_RIGHT, 4, 0, + PA_CHANNEL_POSITION_SIDE_LEFT, 0, 1, + PA_CHANNEL_POSITION_SIDE_RIGHT, 4, 1, + PA_CHANNEL_POSITION_REAR_LEFT, 0, 2, + PA_CHANNEL_POSITION_REAR_CENTER, 2, 2, + PA_CHANNEL_POSITION_REAR_RIGHT, 4, 2, + PA_CHANNEL_POSITION_LFE, 3, 2 +}; + +static void +gvc_speaker_test_set_property (GObject *object, + guint prop_id, + const GValue *value, + GParamSpec *pspec) +{ + GvcSpeakerTest *self = GVC_SPEAKER_TEST (object); + + switch (prop_id) { + case PROP_CARD: + self->priv->card = g_value_dup_object (value); + if (self->priv->control != NULL) + update_channel_map (self); + break; + case PROP_CONTROL: + self->priv->control = g_value_dup_object (value); + if (self->priv->card != NULL) + update_channel_map (self); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; + } +} + +static void +gvc_speaker_test_get_property (GObject *object, + guint prop_id, + GValue *value, + GParamSpec *pspec) +{ + GvcSpeakerTest *self = GVC_SPEAKER_TEST (object); + + switch (prop_id) { + case PROP_CARD: + g_value_set_object (value, self->priv->card); + break; + case PROP_CONTROL: + g_value_set_object (value, self->priv->control); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; + } +} + +static void +gvc_speaker_test_class_init (GvcSpeakerTestClass *klass) +{ + GObjectClass *object_class = G_OBJECT_CLASS (klass); + + object_class->finalize = gvc_speaker_test_finalize; + object_class->set_property = gvc_speaker_test_set_property; + object_class->get_property = gvc_speaker_test_get_property; + + g_object_class_install_property (object_class, + PROP_CARD, + g_param_spec_object ("card", + "card", + "The card", + GVC_TYPE_MIXER_CARD, + G_PARAM_READWRITE|G_PARAM_CONSTRUCT)); + g_object_class_install_property (object_class, + PROP_CONTROL, + g_param_spec_object ("control", + "control", + "The mixer controller", + GVC_TYPE_MIXER_CONTROL, + G_PARAM_READWRITE|G_PARAM_CONSTRUCT_ONLY)); + g_type_class_add_private (klass, sizeof (GvcSpeakerTestPrivate)); +} + +static const char * +sound_name (pa_channel_position_t position) +{ + switch (position) { + case PA_CHANNEL_POSITION_FRONT_LEFT: + return "audio-channel-front-left"; + case PA_CHANNEL_POSITION_FRONT_RIGHT: + return "audio-channel-front-right"; + case PA_CHANNEL_POSITION_FRONT_CENTER: + return "audio-channel-front-center"; + case PA_CHANNEL_POSITION_REAR_LEFT: + return "audio-channel-rear-left"; + case PA_CHANNEL_POSITION_REAR_RIGHT: + return "audio-channel-rear-right"; + case PA_CHANNEL_POSITION_REAR_CENTER: + return "audio-channel-rear-center"; + case PA_CHANNEL_POSITION_LFE: + return "audio-channel-lfe"; + case PA_CHANNEL_POSITION_SIDE_LEFT: + return "audio-channel-side-left"; + case PA_CHANNEL_POSITION_SIDE_RIGHT: + return "audio-channel-side-right"; + default: + return NULL; + } +} + +static const char * +icon_name (pa_channel_position_t position, gboolean playing) +{ + switch (position) { + case PA_CHANNEL_POSITION_FRONT_LEFT: + return playing ? "audio-speaker-left-testing" : "audio-speaker-left"; + case PA_CHANNEL_POSITION_FRONT_RIGHT: + return playing ? "audio-speaker-right-testing" : "audio-speaker-right"; + case PA_CHANNEL_POSITION_FRONT_CENTER: + return playing ? "audio-speaker-center-testing" : "audio-speaker-center"; + case PA_CHANNEL_POSITION_REAR_LEFT: + return playing ? "audio-speaker-left-back-testing" : "audio-speaker-left-back"; + case PA_CHANNEL_POSITION_REAR_RIGHT: + return playing ? "audio-speaker-right-back-testing" : "audio-speaker-right-back"; + case PA_CHANNEL_POSITION_REAR_CENTER: + return playing ? "audio-speaker-center-back-testing" : "audio-speaker-center-back"; + case PA_CHANNEL_POSITION_LFE: + return playing ? "audio-subwoofer-testing" : "audio-subwoofer"; + case PA_CHANNEL_POSITION_SIDE_LEFT: + return playing ? "audio-speaker-left-side-testing" : "audio-speaker-left-side"; + case PA_CHANNEL_POSITION_SIDE_RIGHT: + return playing ? "audio-speaker-right-side-testing" : "audio-speaker-right-side"; + default: + return NULL; + } +} + +static void +update_button (GtkWidget *control) +{ + GtkWidget *button; + GtkWidget *image; + pa_channel_position_t position; + gboolean playing; + + button = g_object_get_data (G_OBJECT (control), "button"); + image = g_object_get_data (G_OBJECT (control), "image"); + position = GPOINTER_TO_INT (g_object_get_data (G_OBJECT (control), "position")); + playing = GPOINTER_TO_INT (g_object_get_data (G_OBJECT (control), "playing")); + gtk_button_set_label (GTK_BUTTON (button), playing ? _("Stop") : _("Test")); + gtk_image_set_from_icon_name (GTK_IMAGE (image), icon_name (position, playing), GTK_ICON_SIZE_DIALOG); +} + +static const char * +pretty_position (pa_channel_position_t position) +{ + if (position == PA_CHANNEL_POSITION_LFE) + return N_("Subwoofer"); + + return pa_channel_position_to_pretty_string (position); +} + +static gboolean +idle_cb (GtkWidget *control) +{ + if (control == NULL) + return FALSE; + + /* This is called in the background thread, hence + * forward to main thread via idle callback */ + g_object_set_data (G_OBJECT (control), "playing", GINT_TO_POINTER(FALSE)); + update_button (control); + + return FALSE; +} + +static void +finish_cb (ca_context *c, uint32_t id, int error_code, void *userdata) +{ + GtkWidget *control = (GtkWidget *) userdata; + + if (error_code == CA_ERROR_DESTROYED || control == NULL) + return; + g_idle_add ((GSourceFunc) idle_cb, control); +} + +static void +on_test_button_clicked (GtkButton *button, + GtkWidget *control) +{ + gboolean playing; + ca_context *canberra; + + canberra = g_object_get_data (G_OBJECT (control), "canberra"); + + ca_context_cancel (canberra, 1); + + playing = GPOINTER_TO_INT (g_object_get_data (G_OBJECT (control), "playing")); + + if (playing) { + g_object_set_data (G_OBJECT (control), "playing", GINT_TO_POINTER(FALSE)); + } else { + pa_channel_position_t position; + const char *name; + ca_proplist *proplist; + + position = GPOINTER_TO_INT (g_object_get_data (G_OBJECT (control), "position")); + + ca_proplist_create (&proplist); + ca_proplist_sets (proplist, CA_PROP_MEDIA_ROLE, "test"); + ca_proplist_sets (proplist, CA_PROP_MEDIA_NAME, pretty_position (position)); + ca_proplist_sets (proplist, CA_PROP_CANBERRA_FORCE_CHANNEL, + pa_channel_position_to_string (position)); + ca_proplist_sets (proplist, CA_PROP_CANBERRA_ENABLE, "1"); + + name = sound_name (position); + if (name != NULL) { + ca_proplist_sets (proplist, CA_PROP_EVENT_ID, name); + playing = ca_context_play_full (canberra, 1, proplist, finish_cb, control) >= 0; + } + + if (!playing) { + ca_proplist_sets (proplist, CA_PROP_EVENT_ID, "audio-test-signal"); + playing = ca_context_play_full (canberra, 1, proplist, finish_cb, control) >= 0; + } + + if (!playing) { + ca_proplist_sets(proplist, CA_PROP_EVENT_ID, "bell-window-system"); + playing = ca_context_play_full (canberra, 1, proplist, finish_cb, control) >= 0; + } + g_object_set_data (G_OBJECT (control), "playing", GINT_TO_POINTER(playing)); + } + + update_button (control); +} + +static GtkWidget * +channel_control_new (ca_context *canberra, pa_channel_position_t position) +{ + GtkWidget *control; + GtkWidget *box; + GtkWidget *label; + GtkWidget *image; + GtkWidget *test_button; + const char *name; + + control = gtk_vbox_new (FALSE, 6); + g_object_set_data (G_OBJECT (control), "playing", GINT_TO_POINTER(FALSE)); + g_object_set_data (G_OBJECT (control), "position", GINT_TO_POINTER(position)); + g_object_set_data (G_OBJECT (control), "canberra", canberra); + + name = icon_name (position, FALSE); + if (name == NULL) + name = "audio-volume-medium"; + image = gtk_image_new_from_icon_name (name, GTK_ICON_SIZE_DIALOG); + g_object_set_data (G_OBJECT (control), "image", image); + gtk_box_pack_start (GTK_BOX (control), image, FALSE, FALSE, 0); + + label = gtk_label_new (pretty_position (position)); + gtk_box_pack_start (GTK_BOX (control), label, FALSE, FALSE, 0); + + test_button = gtk_button_new_with_label (_("Test")); + g_signal_connect (G_OBJECT (test_button), "clicked", + G_CALLBACK (on_test_button_clicked), control); + g_object_set_data (G_OBJECT (control), "button", test_button); + + box = gtk_hbox_new (FALSE, 0); + gtk_box_pack_start (GTK_BOX (box), test_button, TRUE, FALSE, 0); + gtk_box_pack_start (GTK_BOX (control), box, FALSE, FALSE, 0); + + gtk_widget_show_all (control); + + return control; +} + +static void +create_channel_controls (GvcSpeakerTest *speaker_test) +{ + guint i; + + for (i = 0; i < G_N_ELEMENTS (position_table); i += 3) { + speaker_test->priv->channel_controls[position_table[i]] = channel_control_new (speaker_test->priv->canberra, (pa_channel_position_t) position_table[i]); + gtk_table_attach (GTK_TABLE (speaker_test), + speaker_test->priv->channel_controls[position_table[i]], + position_table[i+1], + position_table[i+1]+1, + position_table[i+2], + position_table[i+2]+1, + GTK_EXPAND, GTK_EXPAND, 0, 0); + } +} + +static const GvcChannelMap * +get_channel_map_for_card (GvcMixerControl *control, + GvcMixerCard *card, + char **output_name) +{ + int card_index; + GSList *sinks, *l; + GvcMixerStream *stream; + const GvcChannelMap *map; + + /* This gets the channel map for the only + * output for the card */ + + card_index = gvc_mixer_card_get_index (card); + if (card_index == PA_INVALID_INDEX) + return NULL; + sinks = gvc_mixer_control_get_sinks (control); + stream = NULL; + for (l = sinks; l != NULL; l = l->next) { + GvcMixerStream *s = l->data; + if (gvc_mixer_stream_get_card_index (s) == card_index) { + stream = g_object_ref (s); + break; + } + } + g_slist_free (sinks); + + g_assert (stream); + + g_debug ("Found stream '%s' for card '%s'", + gvc_mixer_stream_get_name (stream), + gvc_mixer_card_get_name (card)); + + *output_name = g_strdup (gvc_mixer_stream_get_name (stream)); + map = gvc_mixer_stream_get_channel_map (stream); + + g_debug ("Got channel map '%s' for port '%s'", + gvc_channel_map_get_mapping (map), *output_name); + + return map; +} + +static void +update_channel_map (GvcSpeakerTest *speaker_test) +{ + guint i; + const GvcChannelMap *map; + char *output_name; + + g_return_if_fail (speaker_test->priv->control != NULL); + g_return_if_fail (speaker_test->priv->card != NULL); + + g_debug ("XXX update_channel_map called XXX"); + + map = get_channel_map_for_card (speaker_test->priv->control, + speaker_test->priv->card, + &output_name); + + g_return_if_fail (map != NULL); + + ca_context_change_device (speaker_test->priv->canberra, output_name); + g_free (output_name); + + for (i = 0; i < G_N_ELEMENTS (position_table); i += 3) { + gtk_widget_set_visible (speaker_test->priv->channel_controls[position_table[i]], + gvc_channel_map_has_position(map, position_table[i])); + } +} + +static void +gvc_speaker_test_init (GvcSpeakerTest *speaker_test) +{ + GtkWidget *face; + + speaker_test->priv = GVC_SPEAKER_TEST_GET_PRIVATE (speaker_test); + + ca_context_create (&speaker_test->priv->canberra); + ca_context_set_driver (speaker_test->priv->canberra, "pulse"); + ca_context_change_props (speaker_test->priv->canberra, + CA_PROP_APPLICATION_ID, "org.mate.VolumeControl", + NULL); + + gtk_table_resize (GTK_TABLE (speaker_test), 3, 5); + gtk_container_set_border_width (GTK_CONTAINER (speaker_test), 12); + gtk_table_set_homogeneous (GTK_TABLE (speaker_test), TRUE); + gtk_table_set_row_spacings (GTK_TABLE (speaker_test), 12); + gtk_table_set_col_spacings (GTK_TABLE (speaker_test), 12); + + create_channel_controls (speaker_test); + + face = gtk_image_new_from_icon_name ("face-smile", GTK_ICON_SIZE_DIALOG); + gtk_table_attach (GTK_TABLE (speaker_test), face, + 2, 3, 1, 2, GTK_EXPAND, GTK_EXPAND, 0, 0); + gtk_widget_show (face); +} + +static void +gvc_speaker_test_finalize (GObject *object) +{ + GvcSpeakerTest *speaker_test; + + g_return_if_fail (object != NULL); + g_return_if_fail (GVC_IS_SPEAKER_TEST (object)); + + speaker_test = GVC_SPEAKER_TEST (object); + + g_return_if_fail (speaker_test->priv != NULL); + + g_object_unref (speaker_test->priv->card); + speaker_test->priv->card = NULL; + + g_object_unref (speaker_test->priv->control); + speaker_test->priv->control = NULL; + + ca_context_destroy (speaker_test->priv->canberra); + speaker_test->priv->canberra = NULL; + + G_OBJECT_CLASS (gvc_speaker_test_parent_class)->finalize (object); +} + +GtkWidget * +gvc_speaker_test_new (GvcMixerControl *control, + GvcMixerCard *card) +{ + GObject *speaker_test; + + g_return_val_if_fail (card != NULL, NULL); + g_return_val_if_fail (control != NULL, NULL); + + speaker_test = g_object_new (GVC_TYPE_SPEAKER_TEST, + "card", card, + "control", control, + NULL); + + return GTK_WIDGET (speaker_test); +} + diff --git a/mate-volume-control/src/gvc-speaker-test.h b/mate-volume-control/src/gvc-speaker-test.h new file mode 100644 index 0000000..912c594 --- /dev/null +++ b/mate-volume-control/src/gvc-speaker-test.h @@ -0,0 +1,57 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*- + * + * Copyright (C) 2009 Red Hat, Inc. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + */ + +#ifndef __GVC_SPEAKER_TEST_H +#define __GVC_SPEAKER_TEST_H + +#include <glib-object.h> +#include <gvc-mixer-card.h> +#include <gvc-mixer-control.h> + +G_BEGIN_DECLS + +#define GVC_TYPE_SPEAKER_TEST (gvc_speaker_test_get_type ()) +#define GVC_SPEAKER_TEST(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), GVC_TYPE_SPEAKER_TEST, GvcSpeakerTest)) +#define GVC_SPEAKER_TEST_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), GVC_TYPE_SPEAKER_TEST, GvcSpeakerTestClass)) +#define GVC_IS_SPEAKER_TEST(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GVC_TYPE_SPEAKER_TEST)) +#define GVC_IS_SPEAKER_TEST_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), GVC_TYPE_SPEAKER_TEST)) +#define GVC_SPEAKER_TEST_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), GVC_TYPE_SPEAKER_TEST, GvcSpeakerTestClass)) + +typedef struct GvcSpeakerTestPrivate GvcSpeakerTestPrivate; + +typedef struct +{ + GtkNotebook parent; + GvcSpeakerTestPrivate *priv; +} GvcSpeakerTest; + +typedef struct +{ + GtkNotebookClass parent_class; +} GvcSpeakerTestClass; + +GType gvc_speaker_test_get_type (void); + +GtkWidget * gvc_speaker_test_new (GvcMixerControl *control, + GvcMixerCard *card); + +G_END_DECLS + +#endif /* __GVC_SPEAKER_TEST_H */ diff --git a/mate-volume-control/src/gvc-stream-status-icon.c b/mate-volume-control/src/gvc-stream-status-icon.c new file mode 100644 index 0000000..f89d39e --- /dev/null +++ b/mate-volume-control/src/gvc-stream-status-icon.c @@ -0,0 +1,825 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*- + * + * Copyright (C) 2008 William Jon McCann + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + */ + +#include "config.h" + +#include <stdlib.h> +#include <stdio.h> +#include <unistd.h> + +#include <glib.h> +#include <glib/gi18n.h> +#include <gtk/gtk.h> +#if GTK_CHECK_VERSION (2, 21, 8) +#include <gdk/gdkkeysyms-compat.h> +#else +#include <gdk/gdkkeysyms.h> +#endif + +#include "gvc-mixer-stream.h" +#include "gvc-channel-bar.h" +#include "gvc-stream-status-icon.h" + +#define GVC_STREAM_STATUS_ICON_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GVC_TYPE_STREAM_STATUS_ICON, GvcStreamStatusIconPrivate)) + +struct GvcStreamStatusIconPrivate +{ + char **icon_names; + GvcMixerStream *mixer_stream; + GtkWidget *dock; + GtkWidget *bar; + guint current_icon; + char *display_name; + gboolean thaw; +}; + +enum +{ + PROP_0, + PROP_DISPLAY_NAME, + PROP_MIXER_STREAM, + PROP_ICON_NAMES, +}; + +static void gvc_stream_status_icon_class_init (GvcStreamStatusIconClass *klass); +static void gvc_stream_status_icon_init (GvcStreamStatusIcon *stream_status_icon); +static void gvc_stream_status_icon_finalize (GObject *object); + +G_DEFINE_TYPE (GvcStreamStatusIcon, gvc_stream_status_icon, GTK_TYPE_STATUS_ICON) + +static void +on_adjustment_value_changed (GtkAdjustment *adjustment, + GvcStreamStatusIcon *icon) +{ + gdouble volume; + + if (icon->priv->thaw) + return; + + volume = gtk_adjustment_get_value (adjustment); + + /* Only push the volume if it's actually changed */ + if (gvc_mixer_stream_set_volume(icon->priv->mixer_stream, + (pa_volume_t) round (volume)) != FALSE) { + gvc_mixer_stream_push_volume(icon->priv->mixer_stream); + } +} + +static void +update_dock (GvcStreamStatusIcon *icon) +{ + GtkAdjustment *adj; + gboolean is_muted; + + g_return_if_fail (icon); + + adj = GTK_ADJUSTMENT (gvc_channel_bar_get_adjustment (GVC_CHANNEL_BAR (icon->priv->bar))); + + icon->priv->thaw = TRUE; + gtk_adjustment_set_value (adj, + gvc_mixer_stream_get_volume (icon->priv->mixer_stream)); + is_muted = gvc_mixer_stream_get_is_muted (icon->priv->mixer_stream); + gvc_channel_bar_set_is_muted (GVC_CHANNEL_BAR (icon->priv->bar), is_muted); + icon->priv->thaw = FALSE; +} + +static gboolean +popup_dock (GvcStreamStatusIcon *icon, + guint time) +{ + GdkRectangle area; + GtkOrientation orientation; + GdkDisplay *display; + GdkScreen *screen; + gboolean res; + int x; + int y; + int monitor_num; + GdkRectangle monitor; + GtkRequisition dock_req; + + update_dock (icon); + + screen = gtk_status_icon_get_screen (GTK_STATUS_ICON (icon)); + res = gtk_status_icon_get_geometry (GTK_STATUS_ICON (icon), + &screen, + &area, + &orientation); + if (! res) { + g_warning ("Unable to determine geometry of status icon"); + return FALSE; + } + + /* position roughly */ + gtk_window_set_screen (GTK_WINDOW (icon->priv->dock), screen); + gvc_channel_bar_set_orientation (GVC_CHANNEL_BAR (icon->priv->bar), + 1 - orientation); + + monitor_num = gdk_screen_get_monitor_at_point (screen, area.x, area.y); + gdk_screen_get_monitor_geometry (screen, monitor_num, &monitor); + + gtk_container_foreach (GTK_CONTAINER (icon->priv->dock), + (GtkCallback) gtk_widget_show_all, NULL); + gtk_widget_size_request (icon->priv->dock, &dock_req); + + if (orientation == GTK_ORIENTATION_VERTICAL) { + if (area.x + area.width + dock_req.width <= monitor.x + monitor.width) { + x = area.x + area.width; + } else { + x = area.x - dock_req.width; + } + if (area.y + dock_req.height <= monitor.y + monitor.height) { + y = area.y; + } else { + y = monitor.y + monitor.height - dock_req.height; + } + } else { + if (area.y + area.height + dock_req.height <= monitor.y + monitor.height) { + y = area.y + area.height; + } else { + y = area.y - dock_req.height; + } + if (area.x + dock_req.width <= monitor.x + monitor.width) { + x = area.x; + } else { + x = monitor.x + monitor.width - dock_req.width; + } + } + + gtk_window_move (GTK_WINDOW (icon->priv->dock), x, y); + + /* FIXME: without this, the popup window appears as a square + * after changing the orientation + */ + gtk_window_resize (GTK_WINDOW (icon->priv->dock), 1, 1); + + gtk_widget_show_all (icon->priv->dock); + + + /* grab focus */ + gtk_grab_add (icon->priv->dock); + + if (gdk_pointer_grab (gtk_widget_get_window (icon->priv->dock), TRUE, + GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | + GDK_POINTER_MOTION_MASK | GDK_SCROLL_MASK, NULL, NULL, + time) + != GDK_GRAB_SUCCESS) { + gtk_grab_remove (icon->priv->dock); + gtk_widget_hide (icon->priv->dock); + return FALSE; + } + + if (gdk_keyboard_grab (gtk_widget_get_window (icon->priv->dock), TRUE, time) != GDK_GRAB_SUCCESS) { + display = gtk_widget_get_display (icon->priv->dock); + gdk_display_pointer_ungrab (display, time); + gtk_grab_remove (icon->priv->dock); + gtk_widget_hide (icon->priv->dock); + return FALSE; + } + + gtk_widget_grab_focus (icon->priv->dock); + + return TRUE; +} + +static void +on_status_icon_activate (GtkStatusIcon *status_icon, + GvcStreamStatusIcon *icon) +{ + popup_dock (icon, GDK_CURRENT_TIME); +} + +static void +on_menu_mute_toggled (GtkMenuItem *item, + GvcStreamStatusIcon *icon) +{ + gboolean is_muted; + is_muted = gtk_check_menu_item_get_active (GTK_CHECK_MENU_ITEM (item)); + gvc_channel_bar_set_is_muted (GVC_CHANNEL_BAR (icon->priv->bar), is_muted); +} + +static void +on_menu_activate_open_volume_control (GtkMenuItem *item, + GvcStreamStatusIcon *icon) +{ + GError *error; + + error = NULL; + gdk_spawn_command_line_on_screen (gtk_widget_get_screen (icon->priv->dock), + "mate-volume-control", + &error); + + if (error != NULL) { + GtkWidget *dialog; + + dialog = gtk_message_dialog_new (NULL, + 0, + GTK_MESSAGE_ERROR, + GTK_BUTTONS_CLOSE, + _("Failed to start Sound Preferences: %s"), + error->message); + g_signal_connect (dialog, + "response", + G_CALLBACK (gtk_widget_destroy), + NULL); + gtk_widget_show (dialog); + g_error_free (error); + } +} + +static void +on_status_icon_popup_menu (GtkStatusIcon *status_icon, + guint button, + guint activate_time, + GvcStreamStatusIcon *icon) +{ + GtkWidget *menu; + GtkWidget *item; + GtkWidget *image; + + menu = gtk_menu_new (); + + item = gtk_check_menu_item_new_with_mnemonic (_("_Mute")); + gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (item), + gvc_mixer_stream_get_is_muted (icon->priv->mixer_stream)); + g_signal_connect (item, + "toggled", + G_CALLBACK (on_menu_mute_toggled), + icon); + gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); + + item = gtk_image_menu_item_new_with_mnemonic (_("_Sound Preferences")); + image = gtk_image_new_from_icon_name ("multimedia-volume-control", + GTK_ICON_SIZE_MENU); + gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (item), image); + g_signal_connect (item, + "activate", + G_CALLBACK (on_menu_activate_open_volume_control), + icon); + gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); + + gtk_widget_show_all (menu); + gtk_menu_popup (GTK_MENU (menu), + NULL, + NULL, + gtk_status_icon_position_menu, + status_icon, + button, + activate_time); +} + +static gboolean +on_status_icon_scroll_event (GtkStatusIcon *status_icon, + GdkEventScroll *event, + GvcStreamStatusIcon *icon) +{ + return gvc_channel_bar_scroll (GVC_CHANNEL_BAR (icon->priv->bar), event->direction); +} + +static void +gvc_icon_release_grab (GvcStreamStatusIcon *icon, + GdkEventButton *event) +{ + GdkDisplay *display; + + /* ungrab focus */ + display = gtk_widget_get_display (GTK_WIDGET (icon->priv->dock)); + gdk_display_keyboard_ungrab (display, event->time); + gdk_display_pointer_ungrab (display, event->time); + gtk_grab_remove (icon->priv->dock); + + /* hide again */ + gtk_widget_hide (icon->priv->dock); +} + +static gboolean +on_dock_button_press (GtkWidget *widget, + GdkEventButton *event, + GvcStreamStatusIcon *icon) +{ + if (event->type == GDK_BUTTON_PRESS) { + gvc_icon_release_grab (icon, event); + return TRUE; + } + + return FALSE; +} + +static void +popdown_dock (GvcStreamStatusIcon *icon) +{ + GdkDisplay *display; + + /* ungrab focus */ + display = gtk_widget_get_display (icon->priv->dock); + gdk_display_keyboard_ungrab (display, GDK_CURRENT_TIME); + gdk_display_pointer_ungrab (display, GDK_CURRENT_TIME); + gtk_grab_remove (icon->priv->dock); + + /* hide again */ + gtk_widget_hide (icon->priv->dock); +} + +/* This is called when the grab is broken for + * either the dock, or the scale itself */ +static void +gvc_icon_grab_notify (GvcStreamStatusIcon *icon, + gboolean was_grabbed) +{ + if (was_grabbed != FALSE) { + return; + } + + if (!gtk_widget_has_grab (icon->priv->dock)) { + return; + } + + if (gtk_widget_is_ancestor (gtk_grab_get_current (), icon->priv->dock)) { + return; + } + + popdown_dock (icon); +} + +static void +on_dock_grab_notify (GtkWidget *widget, + gboolean was_grabbed, + GvcStreamStatusIcon *icon) +{ + gvc_icon_grab_notify (icon, was_grabbed); +} + +static gboolean +on_dock_grab_broken_event (GtkWidget *widget, + gboolean was_grabbed, + GvcStreamStatusIcon *icon) +{ + gvc_icon_grab_notify (icon, FALSE); + + return FALSE; +} + +static gboolean +on_dock_key_release (GtkWidget *widget, + GdkEventKey *event, + GvcStreamStatusIcon *icon) +{ + if (event->keyval == GDK_Escape) { + popdown_dock (icon); + return TRUE; + } + +#if 0 + if (!gtk_bindings_activate_event (GTK_OBJECT (widget), event)) { + /* The popup hasn't managed the event, pass onto the button */ + gtk_bindings_activate_event (GTK_OBJECT (user_data), event); + } +#endif + return TRUE; +} + +static gboolean +on_dock_scroll_event (GtkWidget *widget, + GdkEventScroll *event, + GvcStreamStatusIcon *icon) +{ + /* Forward event to the status icon */ + on_status_icon_scroll_event (NULL, event, icon); + return TRUE; +} + +static void +update_icon (GvcStreamStatusIcon *icon) +{ + guint volume; + gboolean is_muted; + guint n; + char *markup; + gboolean can_decibel; + gdouble db; + + if (icon->priv->mixer_stream == NULL) { + return; + } + + volume = gvc_mixer_stream_get_volume (icon->priv->mixer_stream); + is_muted = gvc_mixer_stream_get_is_muted (icon->priv->mixer_stream); + db = gvc_mixer_stream_get_decibel (icon->priv->mixer_stream); + can_decibel = gvc_mixer_stream_get_can_decibel (icon->priv->mixer_stream); + + /* select image */ + if (volume <= 0 || is_muted) { + n = 0; + } else { + n = 3 * volume / PA_VOLUME_NORM + 1; + if (n < 1) { + n = 1; + } else if (n > 3) { + n = 3; + } + } + + /* apparently status icon will reset icon even if + * if doesn't change */ + if (icon->priv->current_icon != n) { + gtk_status_icon_set_from_icon_name (GTK_STATUS_ICON (icon), + icon->priv->icon_names [n]); + icon->priv->current_icon = n; + } + + + if (is_muted) { + markup = g_strdup_printf ( + "<b>%s: %s</b>\n<small>%s</small>", + icon->priv->display_name, + _("Muted"), + gvc_mixer_stream_get_description (icon->priv->mixer_stream)); + } else if (can_decibel && (db > PA_DECIBEL_MININFTY)) { + markup = g_strdup_printf ( + "<b>%s: %.0f%%</b>\n<small>%0.2f dB\n%s</small>", + icon->priv->display_name, + 100 * (float)volume / PA_VOLUME_NORM, + db, + gvc_mixer_stream_get_description (icon->priv->mixer_stream)); + } else if (can_decibel) { + markup = g_strdup_printf ( + "<b>%s: %.0f%%</b>\n<small>-∞ dB\n%s</small>", + icon->priv->display_name, + 100 * (float)volume / PA_VOLUME_NORM, + gvc_mixer_stream_get_description (icon->priv->mixer_stream)); + } else { + markup = g_strdup_printf ( + "<b>%s: %.0f%%</b>\n<small>%s</small>", + icon->priv->display_name, + 100 * (float)volume / PA_VOLUME_NORM, + gvc_mixer_stream_get_description (icon->priv->mixer_stream)); + } + gtk_status_icon_set_tooltip_markup (GTK_STATUS_ICON (icon), markup); + g_free (markup); +} + +void +gvc_stream_status_icon_set_icon_names (GvcStreamStatusIcon *icon, + const char **names) +{ + g_return_if_fail (GVC_IS_STREAM_STATUS_ICON (icon)); + + g_strfreev (icon->priv->icon_names); + icon->priv->icon_names = g_strdupv ((char **)names); + update_icon (icon); + g_object_notify (G_OBJECT (icon), "icon-names"); +} + +static void +on_stream_volume_notify (GObject *object, + GParamSpec *pspec, + GvcStreamStatusIcon *icon) +{ + update_icon (icon); + update_dock (icon); +} + +static void +on_stream_is_muted_notify (GObject *object, + GParamSpec *pspec, + GvcStreamStatusIcon *icon) +{ + update_icon (icon); + update_dock (icon); +} + +void +gvc_stream_status_icon_set_display_name (GvcStreamStatusIcon *icon, + const char *name) +{ + g_return_if_fail (GVC_STREAM_STATUS_ICON (icon)); + + g_free (icon->priv->display_name); + icon->priv->display_name = g_strdup (name); + update_icon (icon); + g_object_notify (G_OBJECT (icon), "display-name"); +} + +void +gvc_stream_status_icon_set_mixer_stream (GvcStreamStatusIcon *icon, + GvcMixerStream *stream) +{ + g_return_if_fail (GVC_STREAM_STATUS_ICON (icon)); + + if (stream != NULL) { + g_object_ref (stream); + } + + if (icon->priv->mixer_stream != NULL) { + g_signal_handlers_disconnect_by_func (icon->priv->mixer_stream, + G_CALLBACK (on_stream_volume_notify), + icon); + g_signal_handlers_disconnect_by_func (icon->priv->mixer_stream, + G_CALLBACK (on_stream_is_muted_notify), + icon); + g_object_unref (icon->priv->mixer_stream); + icon->priv->mixer_stream = NULL; + } + + icon->priv->mixer_stream = stream; + + if (icon->priv->mixer_stream != NULL) { + GtkAdjustment *adj; + + g_object_ref (icon->priv->mixer_stream); + + icon->priv->thaw = TRUE; + adj = GTK_ADJUSTMENT (gvc_channel_bar_get_adjustment (GVC_CHANNEL_BAR (icon->priv->bar))); + gtk_adjustment_set_value (adj, + gvc_mixer_stream_get_volume (icon->priv->mixer_stream)); + icon->priv->thaw = FALSE; + + g_signal_connect (icon->priv->mixer_stream, + "notify::volume", + G_CALLBACK (on_stream_volume_notify), + icon); + g_signal_connect (icon->priv->mixer_stream, + "notify::is-muted", + G_CALLBACK (on_stream_is_muted_notify), + icon); + } + + update_icon (icon); + + g_object_notify (G_OBJECT (icon), "mixer-stream"); +} + +static void +gvc_stream_status_icon_set_property (GObject *object, + guint prop_id, + const GValue *value, + GParamSpec *pspec) +{ + GvcStreamStatusIcon *self = GVC_STREAM_STATUS_ICON (object); + + switch (prop_id) { + case PROP_MIXER_STREAM: + gvc_stream_status_icon_set_mixer_stream (self, g_value_get_object (value)); + break; + case PROP_DISPLAY_NAME: + gvc_stream_status_icon_set_display_name (self, g_value_get_string (value)); + break; + case PROP_ICON_NAMES: + gvc_stream_status_icon_set_icon_names (self, g_value_get_boxed (value)); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; + } +} + +static void +gvc_stream_status_icon_get_property (GObject *object, + guint prop_id, + GValue *value, + GParamSpec *pspec) +{ + GvcStreamStatusIcon *self = GVC_STREAM_STATUS_ICON (object); + GvcStreamStatusIconPrivate *priv = self->priv; + + switch (prop_id) { + case PROP_MIXER_STREAM: + g_value_set_object (value, priv->mixer_stream); + break; + case PROP_DISPLAY_NAME: + g_value_set_string (value, priv->display_name); + break; + case PROP_ICON_NAMES: + g_value_set_boxed (value, priv->icon_names); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; + } +} + +static void +on_bar_is_muted_notify (GObject *object, + GParamSpec *pspec, + GvcStreamStatusIcon *icon) +{ + gboolean is_muted; + + is_muted = gvc_channel_bar_get_is_muted (GVC_CHANNEL_BAR (object)); + + if (gvc_mixer_stream_get_is_muted (icon->priv->mixer_stream) != is_muted) { + /* Update the stream before pushing the change */ + gvc_mixer_stream_set_is_muted (icon->priv->mixer_stream, is_muted); + gvc_mixer_stream_change_is_muted (icon->priv->mixer_stream, + is_muted); + } +} + +static GObject * +gvc_stream_status_icon_constructor (GType type, + guint n_construct_properties, + GObjectConstructParam *construct_params) +{ + GObject *object; + GvcStreamStatusIcon *icon; + GtkWidget *frame; + GtkWidget *box; + GtkAdjustment *adj; + + object = G_OBJECT_CLASS (gvc_stream_status_icon_parent_class)->constructor (type, n_construct_properties, construct_params); + + icon = GVC_STREAM_STATUS_ICON (object); + + gtk_status_icon_set_from_icon_name (GTK_STATUS_ICON (icon), + icon->priv->icon_names[0]); + + /* window */ + icon->priv->dock = gtk_window_new (GTK_WINDOW_POPUP); + gtk_widget_set_name (icon->priv->dock, "gvc-stream-status-icon-popup-window"); + g_signal_connect (icon->priv->dock, + "button-press-event", + G_CALLBACK (on_dock_button_press), + icon); + g_signal_connect (icon->priv->dock, + "key-release-event", + G_CALLBACK (on_dock_key_release), + icon); + g_signal_connect (icon->priv->dock, + "scroll-event", + G_CALLBACK (on_dock_scroll_event), + icon); + g_signal_connect (icon->priv->dock, + "grab-notify", + G_CALLBACK (on_dock_grab_notify), + icon); + g_signal_connect (icon->priv->dock, + "grab-broken-event", + G_CALLBACK (on_dock_grab_broken_event), + icon); + + gtk_window_set_decorated (GTK_WINDOW (icon->priv->dock), FALSE); + + frame = gtk_frame_new (NULL); + gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_OUT); + gtk_container_add (GTK_CONTAINER (icon->priv->dock), frame); + + box = gtk_vbox_new (FALSE, 6); + gtk_container_set_border_width (GTK_CONTAINER (box), 2); + gtk_container_add (GTK_CONTAINER (frame), box); + + icon->priv->bar = gvc_channel_bar_new (); + gvc_channel_bar_set_orientation (GVC_CHANNEL_BAR (icon->priv->bar), + GTK_ORIENTATION_VERTICAL); + + gtk_box_pack_start (GTK_BOX (box), icon->priv->bar, TRUE, FALSE, 0); + g_signal_connect (icon->priv->bar, + "notify::is-muted", + G_CALLBACK (on_bar_is_muted_notify), + icon); + + adj = GTK_ADJUSTMENT (gvc_channel_bar_get_adjustment (GVC_CHANNEL_BAR (icon->priv->bar))); + g_signal_connect (adj, + "value-changed", + G_CALLBACK (on_adjustment_value_changed), + icon); + + return object; +} + +static void +gvc_stream_status_icon_dispose (GObject *object) +{ + GvcStreamStatusIcon *icon = GVC_STREAM_STATUS_ICON (object); + + if (icon->priv->dock != NULL) { + gtk_widget_destroy (icon->priv->dock); + icon->priv->dock = NULL; + } + + if (icon->priv->mixer_stream != NULL) { + g_object_unref (icon->priv->mixer_stream); + icon->priv->mixer_stream = NULL; + } + + G_OBJECT_CLASS (gvc_stream_status_icon_parent_class)->dispose (object); +} + +static void +gvc_stream_status_icon_class_init (GvcStreamStatusIconClass *klass) +{ + GObjectClass *object_class = G_OBJECT_CLASS (klass); + + object_class->constructor = gvc_stream_status_icon_constructor; + object_class->finalize = gvc_stream_status_icon_finalize; + object_class->dispose = gvc_stream_status_icon_dispose; + object_class->set_property = gvc_stream_status_icon_set_property; + object_class->get_property = gvc_stream_status_icon_get_property; + + g_object_class_install_property (object_class, + PROP_MIXER_STREAM, + g_param_spec_object ("mixer-stream", + "mixer stream", + "mixer stream", + GVC_TYPE_MIXER_STREAM, + G_PARAM_READWRITE|G_PARAM_CONSTRUCT)); + g_object_class_install_property (object_class, + PROP_DISPLAY_NAME, + g_param_spec_string ("display-name", + "Display Name", + "Name to display for this stream", + NULL, + G_PARAM_READWRITE|G_PARAM_CONSTRUCT)); + g_object_class_install_property (object_class, + PROP_ICON_NAMES, + g_param_spec_boxed ("icon-names", + "Icon Names", + "Name of icon to display for this stream", + G_TYPE_STRV, + G_PARAM_READWRITE|G_PARAM_CONSTRUCT)); + + g_type_class_add_private (klass, sizeof (GvcStreamStatusIconPrivate)); +} + +static void +on_status_icon_visible_notify (GvcStreamStatusIcon *icon) +{ + gboolean visible; + + g_object_get (icon, "visible", &visible, NULL); + if (! visible) { + if (icon->priv->dock != NULL) { + gtk_widget_hide (icon->priv->dock); + } + } +} + +static void +gvc_stream_status_icon_init (GvcStreamStatusIcon *icon) +{ + icon->priv = GVC_STREAM_STATUS_ICON_GET_PRIVATE (icon); + + g_signal_connect (icon, + "activate", + G_CALLBACK (on_status_icon_activate), + icon); + g_signal_connect (icon, + "popup-menu", + G_CALLBACK (on_status_icon_popup_menu), + icon); + g_signal_connect (icon, + "scroll-event", + G_CALLBACK (on_status_icon_scroll_event), + icon); + g_signal_connect (icon, + "notify::visible", + G_CALLBACK (on_status_icon_visible_notify), + NULL); + + icon->priv->thaw = FALSE; +} + +static void +gvc_stream_status_icon_finalize (GObject *object) +{ + GvcStreamStatusIcon *stream_status_icon; + + g_return_if_fail (object != NULL); + g_return_if_fail (GVC_IS_STREAM_STATUS_ICON (object)); + + stream_status_icon = GVC_STREAM_STATUS_ICON (object); + + g_return_if_fail (stream_status_icon->priv != NULL); + + g_strfreev (stream_status_icon->priv->icon_names); + + G_OBJECT_CLASS (gvc_stream_status_icon_parent_class)->finalize (object); +} + +GvcStreamStatusIcon * +gvc_stream_status_icon_new (GvcMixerStream *stream, + const char **icon_names) +{ + GObject *icon; + icon = g_object_new (GVC_TYPE_STREAM_STATUS_ICON, + "mixer-stream", stream, + "icon-names", icon_names, + NULL); + return GVC_STREAM_STATUS_ICON (icon); +} diff --git a/mate-volume-control/src/gvc-stream-status-icon.h b/mate-volume-control/src/gvc-stream-status-icon.h new file mode 100644 index 0000000..55887f3 --- /dev/null +++ b/mate-volume-control/src/gvc-stream-status-icon.h @@ -0,0 +1,63 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*- + * + * Copyright (C) 2008 Red Hat, Inc. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + */ + +#ifndef __GVC_STREAM_STATUS_ICON_H +#define __GVC_STREAM_STATUS_ICON_H + +#include <glib-object.h> +#include "gvc-mixer-stream.h" + +G_BEGIN_DECLS + +#define GVC_TYPE_STREAM_STATUS_ICON (gvc_stream_status_icon_get_type ()) +#define GVC_STREAM_STATUS_ICON(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), GVC_TYPE_STREAM_STATUS_ICON, GvcStreamStatusIcon)) +#define GVC_STREAM_STATUS_ICON_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), GVC_TYPE_STREAM_STATUS_ICON, GvcStreamStatusIconClass)) +#define GVC_IS_STREAM_STATUS_ICON(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GVC_TYPE_STREAM_STATUS_ICON)) +#define GVC_IS_STREAM_STATUS_ICON_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), GVC_TYPE_STREAM_STATUS_ICON)) +#define GVC_STREAM_STATUS_ICON_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), GVC_TYPE_STREAM_STATUS_ICON, GvcStreamStatusIconClass)) + +typedef struct GvcStreamStatusIconPrivate GvcStreamStatusIconPrivate; + +typedef struct +{ + GtkStatusIcon parent; + GvcStreamStatusIconPrivate *priv; +} GvcStreamStatusIcon; + +typedef struct +{ + GtkStatusIconClass parent_class; +} GvcStreamStatusIconClass; + +GType gvc_stream_status_icon_get_type (void); + +GvcStreamStatusIcon * gvc_stream_status_icon_new (GvcMixerStream *stream, + const char **icon_names); + +void gvc_stream_status_icon_set_icon_names (GvcStreamStatusIcon *icon, + const char **icon_names); +void gvc_stream_status_icon_set_display_name (GvcStreamStatusIcon *icon, + const char *display_name); +void gvc_stream_status_icon_set_mixer_stream (GvcStreamStatusIcon *icon, + GvcMixerStream *stream); + +G_END_DECLS + +#endif /* __GVC_STREAM_STATUS_ICON_H */ |