diff options
Diffstat (limited to 'plugins/gtkui')
-rw-r--r-- | plugins/gtkui/callbacks.c | 10 | ||||
-rw-r--r-- | plugins/gtkui/callbacks.h | 8 | ||||
-rw-r--r-- | plugins/gtkui/deadbeef.glade | 320 | ||||
-rw-r--r-- | plugins/gtkui/gtkui.c | 19 | ||||
-rw-r--r-- | plugins/gtkui/interface.c | 141 | ||||
-rw-r--r-- | plugins/gtkui/prefwin.c | 85 | ||||
-rw-r--r-- | plugins/gtkui/support.h | 2 |
7 files changed, 282 insertions, 303 deletions
diff --git a/plugins/gtkui/callbacks.c b/plugins/gtkui/callbacks.c index 9c95c29d..1fe82216 100644 --- a/plugins/gtkui/callbacks.c +++ b/plugins/gtkui/callbacks.c @@ -1194,3 +1194,13 @@ on_sortfmt_activate (GtkEntry *entry, } + +GtkWidget* +create_plugin_weblink (gchar *widget_name, gchar *string1, gchar *string2, + gint int1, gint int2) +{ + GtkWidget *link = gtk_link_button_new_with_label ("", "WWW"); + gtk_widget_set_sensitive (link, FALSE); + return link; +} + diff --git a/plugins/gtkui/callbacks.h b/plugins/gtkui/callbacks.h index 2de5e663..297a605a 100644 --- a/plugins/gtkui/callbacks.h +++ b/plugins/gtkui/callbacks.h @@ -1058,3 +1058,11 @@ on_dsp_preset_save_clicked (GtkButton *button, void on_dsp_preset_load_clicked (GtkButton *button, gpointer user_data); + +void +on_plug_copyright_clicked (GtkButton *button, + gpointer user_data); + +GtkWidget* +create_plugin_weblink (gchar *widget_name, gchar *string1, gchar *string2, + gint int1, gint int2); diff --git a/plugins/gtkui/deadbeef.glade b/plugins/gtkui/deadbeef.glade index 1b320bd6..c9ef1312 100644 --- a/plugins/gtkui/deadbeef.glade +++ b/plugins/gtkui/deadbeef.glade @@ -5102,249 +5102,138 @@ SOCKS5_HOSTNAME</property> <property name="spacing">8</property> <child> - <widget class="GtkHBox" id="hbox16"> + <widget class="GtkScrolledWindow" id="scrolledwindow8"> <property name="visible">True</property> - <property name="homogeneous">False</property> - <property name="spacing">8</property> - - <child> - <widget class="GtkLabel" id="label11"> - <property name="visible">True</property> - <property name="label" translatable="yes">Description:</property> - <property name="use_underline">False</property> - <property name="use_markup">False</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">0</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> - <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> + <property name="can_focus">True</property> + <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property> + <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property> + <property name="shadow_type">GTK_SHADOW_IN</property> + <property name="window_placement">GTK_CORNER_TOP_LEFT</property> <child> - <widget class="GtkEntry" id="pref_plugin_descr"> + <widget class="GtkTextView" id="plug_description"> <property name="visible">True</property> <property name="can_focus">True</property> <property name="editable">False</property> - <property name="visibility">True</property> - <property name="max_length">0</property> + <property name="overwrite">False</property> + <property name="accepts_tab">True</property> + <property name="justification">GTK_JUSTIFY_LEFT</property> + <property name="wrap_mode">GTK_WRAP_NONE</property> + <property name="cursor_visible">False</property> + <property name="pixels_above_lines">0</property> + <property name="pixels_below_lines">0</property> + <property name="pixels_inside_wrap">0</property> + <property name="left_margin">0</property> + <property name="right_margin">0</property> + <property name="indent">0</property> <property name="text" translatable="yes"></property> - <property name="has_frame">True</property> - <property name="invisible_char">●</property> - <property name="activates_default">False</property> </widget> - <packing> - <property name="padding">0</property> - <property name="expand">True</property> - <property name="fill">True</property> - </packing> </child> </widget> <packing> <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> + <property name="expand">True</property> + <property name="fill">True</property> </packing> </child> <child> - <widget class="GtkHBox" id="hbox17"> + <widget class="GtkHBox" id="hbox20"> <property name="visible">True</property> <property name="homogeneous">False</property> - <property name="spacing">8</property> - - <child> - <widget class="GtkLabel" id="label12"> - <property name="visible">True</property> - <property name="label" translatable="yes">Author(s):</property> - <property name="use_underline">False</property> - <property name="use_markup">False</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">0</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> - <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> + <property name="spacing">0</property> <child> - <widget class="GtkEntry" id="pref_plugin_author"> + <widget class="GtkButton" id="configure_plugin"> <property name="visible">True</property> + <property name="sensitive">False</property> <property name="can_focus">True</property> - <property name="editable">False</property> - <property name="visibility">True</property> - <property name="max_length">0</property> - <property name="text" translatable="yes"></property> - <property name="has_frame">True</property> - <property name="invisible_char">●</property> - <property name="activates_default">False</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">True</property> - <property name="fill">True</property> - </packing> - </child> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - - <child> - <widget class="GtkHBox" id="hbox18"> - <property name="visible">True</property> - <property name="homogeneous">False</property> - <property name="spacing">8</property> - - <child> - <widget class="GtkLabel" id="label13"> - <property name="visible">True</property> - <property name="label" translatable="yes">Email:</property> - <property name="use_underline">False</property> - <property name="use_markup">False</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">0</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> - <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> + <property name="relief">GTK_RELIEF_NORMAL</property> + <property name="focus_on_click">True</property> + <signal name="clicked" handler="on_configure_plugin_clicked" last_modification_time="Tue, 01 Dec 2009 16:54:36 GMT"/> - <child> - <widget class="GtkEntry" id="pref_plugin_email"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="editable">False</property> - <property name="visibility">True</property> - <property name="max_length">0</property> - <property name="text" translatable="yes"></property> - <property name="has_frame">True</property> - <property name="invisible_char">●</property> - <property name="activates_default">False</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">True</property> - <property name="fill">True</property> - </packing> - </child> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> + <child> + <widget class="GtkAlignment" id="alignment15"> + <property name="visible">True</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xscale">0</property> + <property name="yscale">0</property> + <property name="top_padding">0</property> + <property name="bottom_padding">0</property> + <property name="left_padding">0</property> + <property name="right_padding">0</property> - <child> - <widget class="GtkHBox" id="hbox19"> - <property name="visible">True</property> - <property name="homogeneous">False</property> - <property name="spacing">8</property> + <child> + <widget class="GtkHBox" id="hbox56"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">2</property> - <child> - <widget class="GtkLabel" id="label14"> - <property name="visible">True</property> - <property name="label" translatable="yes">Website:</property> - <property name="use_underline">False</property> - <property name="use_markup">False</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">0</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> - <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> + <child> + <widget class="GtkImage" id="image394"> + <property name="visible">True</property> + <property name="stock">gtk-preferences</property> + <property name="icon_size">4</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> - <child> - <widget class="GtkEntry" id="pref_plugin_website"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="editable">False</property> - <property name="visibility">True</property> - <property name="max_length">0</property> - <property name="text" translatable="yes"></property> - <property name="has_frame">True</property> - <property name="invisible_char">●</property> - <property name="activates_default">False</property> + <child> + <widget class="GtkLabel" id="label92"> + <property name="visible">True</property> + <property name="label" translatable="yes">Configure</property> + <property name="use_underline">True</property> + <property name="use_markup">False</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0.5</property> + <property name="yalign">0.5</property> + <property name="xpad">0</property> + <property name="ypad">0</property> + <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> + <property name="width_chars">-1</property> + <property name="single_line_mode">False</property> + <property name="angle">0</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + </widget> + </child> + </widget> + </child> </widget> <packing> <property name="padding">0</property> <property name="expand">True</property> - <property name="fill">True</property> + <property name="fill">False</property> </packing> </child> - </widget> - <packing> - <property name="padding">0</property> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - - <child> - <widget class="GtkHBox" id="hbox20"> - <property name="visible">True</property> - <property name="homogeneous">False</property> - <property name="spacing">0</property> <child> - <widget class="GtkButton" id="configure_plugin"> + <widget class="GtkButton" id="plug_copyright"> <property name="visible">True</property> + <property name="sensitive">False</property> <property name="can_focus">True</property> <property name="relief">GTK_RELIEF_NORMAL</property> <property name="focus_on_click">True</property> - <signal name="clicked" handler="on_configure_plugin_clicked" last_modification_time="Tue, 01 Dec 2009 16:54:36 GMT"/> + <signal name="clicked" handler="on_plug_copyright_clicked" last_modification_time="Sun, 27 Feb 2011 10:24:22 GMT"/> <child> - <widget class="GtkAlignment" id="alignment15"> + <widget class="GtkAlignment" id="alignment20"> <property name="visible">True</property> <property name="xalign">0.5</property> <property name="yalign">0.5</property> @@ -5356,15 +5245,15 @@ SOCKS5_HOSTNAME</property> <property name="right_padding">0</property> <child> - <widget class="GtkHBox" id="hbox56"> + <widget class="GtkHBox" id="hbox88"> <property name="visible">True</property> <property name="homogeneous">False</property> <property name="spacing">2</property> <child> - <widget class="GtkImage" id="image394"> + <widget class="GtkImage" id="image521"> <property name="visible">True</property> - <property name="stock">gtk-preferences</property> + <property name="stock">gtk-about</property> <property name="icon_size">4</property> <property name="xalign">0.5</property> <property name="yalign">0.5</property> @@ -5379,9 +5268,9 @@ SOCKS5_HOSTNAME</property> </child> <child> - <widget class="GtkLabel" id="label92"> + <widget class="GtkLabel" id="label117"> <property name="visible">True</property> - <property name="label" translatable="yes">Configure</property> + <property name="label" translatable="yes">Copyright</property> <property name="use_underline">True</property> <property name="use_markup">False</property> <property name="justify">GTK_JUSTIFY_LEFT</property> @@ -5413,6 +5302,21 @@ SOCKS5_HOSTNAME</property> <property name="fill">False</property> </packing> </child> + + <child> + <widget class="Custom" id="weblink"> + <property name="visible">True</property> + <property name="creation_function">create_plugin_weblink</property> + <property name="int1">0</property> + <property name="int2">0</property> + <property name="last_modification_time">Sun, 27 Feb 2011 11:39:00 GMT</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">True</property> + <property name="fill">False</property> + </packing> + </child> </widget> <packing> <property name="padding">0</property> diff --git a/plugins/gtkui/gtkui.c b/plugins/gtkui/gtkui.c index d49be24c..a5a6c696 100644 --- a/plugins/gtkui/gtkui.c +++ b/plugins/gtkui/gtkui.c @@ -1272,8 +1272,23 @@ static ddb_gtkui_t plugin = { .gui.plugin.id = "gtkui", .gui.plugin.name = "Standard GTK2 user interface", .gui.plugin.descr = "Default DeaDBeeF GUI", - .gui.plugin.author = "Alexey Yakovenko", - .gui.plugin.email = "waker@users.sourceforge.net", + .gui.plugin.copyright = + "Copyright (C) 2009-2011 Alexey Yakovenko <waker@users.sourceforge.net>\n" + "\n" + "This program is free software; you can redistribute it and/or\n" + "modify it under the terms of the GNU General Public License\n" + "as published by the Free Software Foundation; either version 2\n" + "of the License, or (at your option) any later version.\n" + "\n" + "This program is distributed in the hope that it will be useful,\n" + "but WITHOUT ANY WARRANTY; without even the implied warranty of\n" + "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" + "GNU General Public License for more details.\n" + "\n" + "You should have received a copy of the GNU General Public License\n" + "along with this program; if not, write to the Free Software\n" + "Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n" + , .gui.plugin.website = "http://deadbeef.sf.net", .gui.plugin.start = gtkui_start, .gui.plugin.stop = gtkui_stop, diff --git a/plugins/gtkui/interface.c b/plugins/gtkui/interface.c index b694214a..214cca9b 100644 --- a/plugins/gtkui/interface.c +++ b/plugins/gtkui/interface.c @@ -1751,24 +1751,20 @@ create_prefwin (void) GtkWidget *scrolledwindow2; GtkWidget *pref_pluginlist; GtkWidget *vbox12; - GtkWidget *hbox16; - GtkWidget *label11; - GtkWidget *pref_plugin_descr; - GtkWidget *hbox17; - GtkWidget *label12; - GtkWidget *pref_plugin_author; - GtkWidget *hbox18; - GtkWidget *label13; - GtkWidget *pref_plugin_email; - GtkWidget *hbox19; - GtkWidget *label14; - GtkWidget *pref_plugin_website; + GtkWidget *scrolledwindow8; + GtkWidget *plug_description; GtkWidget *hbox20; GtkWidget *configure_plugin; GtkWidget *alignment15; GtkWidget *hbox56; GtkWidget *image394; GtkWidget *label92; + GtkWidget *plug_copyright; + GtkWidget *alignment20; + GtkWidget *hbox88; + GtkWidget *image521; + GtkWidget *label117; + GtkWidget *weblink; GtkWidget *label3; GtkWidget *dialog_action_area2; GtkWidget *closebutton1; @@ -2513,65 +2509,17 @@ create_prefwin (void) gtk_paned_pack2 (GTK_PANED (hpaned1), vbox12, TRUE, TRUE); gtk_container_set_border_width (GTK_CONTAINER (vbox12), 12); - hbox16 = gtk_hbox_new (FALSE, 8); - gtk_widget_show (hbox16); - gtk_box_pack_start (GTK_BOX (vbox12), hbox16, FALSE, FALSE, 0); - - label11 = gtk_label_new (_("Description:")); - gtk_widget_show (label11); - gtk_box_pack_start (GTK_BOX (hbox16), label11, FALSE, FALSE, 0); - gtk_misc_set_alignment (GTK_MISC (label11), 0, 0.5); - - pref_plugin_descr = gtk_entry_new (); - gtk_widget_show (pref_plugin_descr); - gtk_box_pack_start (GTK_BOX (hbox16), pref_plugin_descr, TRUE, TRUE, 0); - gtk_editable_set_editable (GTK_EDITABLE (pref_plugin_descr), FALSE); - gtk_entry_set_invisible_char (GTK_ENTRY (pref_plugin_descr), 9679); - - hbox17 = gtk_hbox_new (FALSE, 8); - gtk_widget_show (hbox17); - gtk_box_pack_start (GTK_BOX (vbox12), hbox17, FALSE, FALSE, 0); - - label12 = gtk_label_new (_("Author(s):")); - gtk_widget_show (label12); - gtk_box_pack_start (GTK_BOX (hbox17), label12, FALSE, FALSE, 0); - gtk_misc_set_alignment (GTK_MISC (label12), 0, 0.5); - - pref_plugin_author = gtk_entry_new (); - gtk_widget_show (pref_plugin_author); - gtk_box_pack_start (GTK_BOX (hbox17), pref_plugin_author, TRUE, TRUE, 0); - gtk_editable_set_editable (GTK_EDITABLE (pref_plugin_author), FALSE); - gtk_entry_set_invisible_char (GTK_ENTRY (pref_plugin_author), 9679); - - hbox18 = gtk_hbox_new (FALSE, 8); - gtk_widget_show (hbox18); - gtk_box_pack_start (GTK_BOX (vbox12), hbox18, FALSE, FALSE, 0); - - label13 = gtk_label_new (_("Email:")); - gtk_widget_show (label13); - gtk_box_pack_start (GTK_BOX (hbox18), label13, FALSE, FALSE, 0); - gtk_misc_set_alignment (GTK_MISC (label13), 0, 0.5); - - pref_plugin_email = gtk_entry_new (); - gtk_widget_show (pref_plugin_email); - gtk_box_pack_start (GTK_BOX (hbox18), pref_plugin_email, TRUE, TRUE, 0); - gtk_editable_set_editable (GTK_EDITABLE (pref_plugin_email), FALSE); - gtk_entry_set_invisible_char (GTK_ENTRY (pref_plugin_email), 9679); - - hbox19 = gtk_hbox_new (FALSE, 8); - gtk_widget_show (hbox19); - gtk_box_pack_start (GTK_BOX (vbox12), hbox19, FALSE, FALSE, 0); - - label14 = gtk_label_new (_("Website:")); - gtk_widget_show (label14); - gtk_box_pack_start (GTK_BOX (hbox19), label14, FALSE, FALSE, 0); - gtk_misc_set_alignment (GTK_MISC (label14), 0, 0.5); - - pref_plugin_website = gtk_entry_new (); - gtk_widget_show (pref_plugin_website); - gtk_box_pack_start (GTK_BOX (hbox19), pref_plugin_website, TRUE, TRUE, 0); - gtk_editable_set_editable (GTK_EDITABLE (pref_plugin_website), FALSE); - gtk_entry_set_invisible_char (GTK_ENTRY (pref_plugin_website), 9679); + scrolledwindow8 = gtk_scrolled_window_new (NULL, NULL); + gtk_widget_show (scrolledwindow8); + gtk_box_pack_start (GTK_BOX (vbox12), scrolledwindow8, TRUE, TRUE, 0); + gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolledwindow8), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); + gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrolledwindow8), GTK_SHADOW_IN); + + plug_description = gtk_text_view_new (); + gtk_widget_show (plug_description); + gtk_container_add (GTK_CONTAINER (scrolledwindow8), plug_description); + gtk_text_view_set_editable (GTK_TEXT_VIEW (plug_description), FALSE); + gtk_text_view_set_cursor_visible (GTK_TEXT_VIEW (plug_description), FALSE); hbox20 = gtk_hbox_new (FALSE, 0); gtk_widget_show (hbox20); @@ -2580,6 +2528,7 @@ create_prefwin (void) configure_plugin = gtk_button_new (); gtk_widget_show (configure_plugin); gtk_box_pack_start (GTK_BOX (hbox20), configure_plugin, TRUE, FALSE, 0); + gtk_widget_set_sensitive (configure_plugin, FALSE); alignment15 = gtk_alignment_new (0.5, 0.5, 0, 0); gtk_widget_show (alignment15); @@ -2597,6 +2546,33 @@ create_prefwin (void) gtk_widget_show (label92); gtk_box_pack_start (GTK_BOX (hbox56), label92, FALSE, FALSE, 0); + plug_copyright = gtk_button_new (); + gtk_widget_show (plug_copyright); + gtk_box_pack_start (GTK_BOX (hbox20), plug_copyright, TRUE, FALSE, 0); + gtk_widget_set_sensitive (plug_copyright, FALSE); + + alignment20 = gtk_alignment_new (0.5, 0.5, 0, 0); + gtk_widget_show (alignment20); + gtk_container_add (GTK_CONTAINER (plug_copyright), alignment20); + + hbox88 = gtk_hbox_new (FALSE, 2); + gtk_widget_show (hbox88); + gtk_container_add (GTK_CONTAINER (alignment20), hbox88); + + image521 = gtk_image_new_from_stock ("gtk-about", GTK_ICON_SIZE_BUTTON); + gtk_widget_show (image521); + gtk_box_pack_start (GTK_BOX (hbox88), image521, FALSE, FALSE, 0); + + label117 = gtk_label_new_with_mnemonic (_("Copyright")); + gtk_widget_show (label117); + gtk_box_pack_start (GTK_BOX (hbox88), label117, FALSE, FALSE, 0); + + weblink = create_plugin_weblink ("weblink", "", "", 0, 0); + gtk_widget_show (weblink); + gtk_box_pack_start (GTK_BOX (hbox20), weblink, TRUE, FALSE, 0); + GTK_WIDGET_UNSET_FLAGS (weblink, GTK_CAN_FOCUS); + GTK_WIDGET_UNSET_FLAGS (weblink, GTK_CAN_DEFAULT); + label3 = gtk_label_new (_("Plugins")); gtk_widget_show (label3); gtk_notebook_set_tab_label (GTK_NOTEBOOK (notebook), gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook), 7), label3); @@ -2791,6 +2767,9 @@ create_prefwin (void) g_signal_connect ((gpointer) configure_plugin, "clicked", G_CALLBACK (on_configure_plugin_clicked), NULL); + g_signal_connect ((gpointer) plug_copyright, "clicked", + G_CALLBACK (on_plug_copyright_clicked), + NULL); /* Store pointers to all widgets, for use by lookup_widget(). */ GLADE_HOOKUP_OBJECT_NO_REF (prefwin, prefwin, "prefwin"); @@ -2946,24 +2925,20 @@ create_prefwin (void) GLADE_HOOKUP_OBJECT (prefwin, scrolledwindow2, "scrolledwindow2"); GLADE_HOOKUP_OBJECT (prefwin, pref_pluginlist, "pref_pluginlist"); GLADE_HOOKUP_OBJECT (prefwin, vbox12, "vbox12"); - GLADE_HOOKUP_OBJECT (prefwin, hbox16, "hbox16"); - GLADE_HOOKUP_OBJECT (prefwin, label11, "label11"); - GLADE_HOOKUP_OBJECT (prefwin, pref_plugin_descr, "pref_plugin_descr"); - GLADE_HOOKUP_OBJECT (prefwin, hbox17, "hbox17"); - GLADE_HOOKUP_OBJECT (prefwin, label12, "label12"); - GLADE_HOOKUP_OBJECT (prefwin, pref_plugin_author, "pref_plugin_author"); - GLADE_HOOKUP_OBJECT (prefwin, hbox18, "hbox18"); - GLADE_HOOKUP_OBJECT (prefwin, label13, "label13"); - GLADE_HOOKUP_OBJECT (prefwin, pref_plugin_email, "pref_plugin_email"); - GLADE_HOOKUP_OBJECT (prefwin, hbox19, "hbox19"); - GLADE_HOOKUP_OBJECT (prefwin, label14, "label14"); - GLADE_HOOKUP_OBJECT (prefwin, pref_plugin_website, "pref_plugin_website"); + GLADE_HOOKUP_OBJECT (prefwin, scrolledwindow8, "scrolledwindow8"); + GLADE_HOOKUP_OBJECT (prefwin, plug_description, "plug_description"); GLADE_HOOKUP_OBJECT (prefwin, hbox20, "hbox20"); GLADE_HOOKUP_OBJECT (prefwin, configure_plugin, "configure_plugin"); GLADE_HOOKUP_OBJECT (prefwin, alignment15, "alignment15"); GLADE_HOOKUP_OBJECT (prefwin, hbox56, "hbox56"); GLADE_HOOKUP_OBJECT (prefwin, image394, "image394"); GLADE_HOOKUP_OBJECT (prefwin, label92, "label92"); + GLADE_HOOKUP_OBJECT (prefwin, plug_copyright, "plug_copyright"); + GLADE_HOOKUP_OBJECT (prefwin, alignment20, "alignment20"); + GLADE_HOOKUP_OBJECT (prefwin, hbox88, "hbox88"); + GLADE_HOOKUP_OBJECT (prefwin, image521, "image521"); + GLADE_HOOKUP_OBJECT (prefwin, label117, "label117"); + GLADE_HOOKUP_OBJECT (prefwin, weblink, "weblink"); GLADE_HOOKUP_OBJECT (prefwin, label3, "label3"); GLADE_HOOKUP_OBJECT_NO_REF (prefwin, dialog_action_area2, "dialog_action_area2"); GLADE_HOOKUP_OBJECT (prefwin, closebutton1, "closebutton1"); diff --git a/plugins/gtkui/prefwin.c b/plugins/gtkui/prefwin.c index b27af570..09fb62eb 100644 --- a/plugins/gtkui/prefwin.c +++ b/plugins/gtkui/prefwin.c @@ -758,23 +758,41 @@ on_pref_pluginlist_cursor_changed (GtkTreeView *treeview, DB_plugin_t *p = plugins[*indices]; g_free (indices); assert (p); - GtkWidget *w = prefwin;//GTK_WIDGET (gtk_widget_get_parent_window (GTK_WIDGET (treeview))); + GtkWidget *w = prefwin; assert (w); - GtkEntry *e = GTK_ENTRY (lookup_widget (w, "pref_plugin_descr")); - gtk_entry_set_text (e, p->descr ? p->descr : ""); - e = GTK_ENTRY (lookup_widget (w, "pref_plugin_author")); - gtk_entry_set_text (e, p->author ? p->author : ""); - e = GTK_ENTRY (lookup_widget (w, "pref_plugin_email")); - gtk_entry_set_text (e, p->email ? p->email : ""); - e = GTK_ENTRY (lookup_widget (w, "pref_plugin_website")); - gtk_entry_set_text (e, p->website ? p->website : ""); + if (p->descr) { + GtkTextView *tv = GTK_TEXT_VIEW (lookup_widget (w, "plug_description")); + + GtkTextBuffer *buffer = gtk_text_buffer_new (NULL); + + gtk_text_buffer_set_text (buffer, p->descr, strlen(p->descr)); + gtk_text_view_set_buffer (GTK_TEXT_VIEW (tv), buffer); + g_object_unref (buffer); + } + + GtkWidget *link = lookup_widget (w, "weblink"); + if (p->website) { + gtk_link_button_set_uri (GTK_LINK_BUTTON(link), p->website); + gtk_widget_set_sensitive (link, TRUE); + } + else { + gtk_link_button_set_uri (GTK_LINK_BUTTON(link), ""); + gtk_widget_set_sensitive (link, FALSE); + } + + GtkWidget *cpr = lookup_widget (w, "plug_copyright"); + if (p->copyright) { + gtk_widget_set_sensitive (cpr, TRUE); + } + else { + gtk_widget_set_sensitive (cpr, FALSE); + } gtk_widget_set_sensitive (lookup_widget (prefwin, "configure_plugin"), p->configdialog ? TRUE : FALSE); } void gtkui_conf_get_str (const char *key, char *value, int len, const char *def) { - // FIXME: conf_get_str must be changed strcpy (value, deadbeef->conf_get_str (key, def)); } @@ -1327,3 +1345,50 @@ on_auto_name_playlist_from_folder_toggled deadbeef->conf_set_int ("gtkui.name_playlist_from_folder", active); } +void +on_info_window_delete (GtkWidget *widget, GtkTextDirection previous_direction, GtkWidget **pwindow); + +static void +show_copyright_window (const char *text, const char *title, GtkWidget **pwindow) { + if (*pwindow) { + return; + } + GtkWidget *widget = *pwindow = create_helpwindow (); + g_object_set_data (G_OBJECT (widget), "pointer", pwindow); + g_signal_connect (widget, "delete_event", G_CALLBACK (on_info_window_delete), pwindow); + gtk_window_set_title (GTK_WINDOW (widget), title); + gtk_window_set_transient_for (GTK_WINDOW (widget), GTK_WINDOW (prefwin)); + GtkWidget *txt = lookup_widget (widget, "helptext"); + GtkTextBuffer *buffer = gtk_text_buffer_new (NULL); + + gtk_text_buffer_set_text (buffer, text, strlen(text)); + gtk_text_view_set_buffer (GTK_TEXT_VIEW (txt), buffer); + g_object_unref (buffer); + gtk_widget_show (widget); +} + +static GtkWidget *copyright_window; + +void +on_plug_copyright_clicked (GtkButton *button, + gpointer user_data) +{ + GtkTreeView *treeview = GTK_TREE_VIEW(lookup_widget (prefwin, "pref_pluginlist")); + GtkTreePath *path; + GtkTreeViewColumn *col; + gtk_tree_view_get_cursor (treeview, &path, &col); + if (!path || !col) { + // reset + return; + } + int *indices = gtk_tree_path_get_indices (path); + DB_plugin_t **plugins = deadbeef->plug_get_list (); + DB_plugin_t *p = plugins[*indices]; + g_free (indices); + assert (p); + + if (p->copyright) { + show_copyright_window (p->copyright, "Copyright", ©right_window); + } +} + diff --git a/plugins/gtkui/support.h b/plugins/gtkui/support.h index a32649e5..b4b0ace3 100644 --- a/plugins/gtkui/support.h +++ b/plugins/gtkui/support.h @@ -27,7 +27,9 @@ # define dgettext(Domain,Message) (Message) # define dcgettext(Domain,Message,Type) (Message) # define bindtextdomain(Domain,Directory) (Domain) +#ifndef _ # define _(String) (String) +#endif # define Q_(String) g_strip_context ((String), (String)) # define N_(String) (String) #endif |