annotate audacious/ui_playlist.c @ 1062:b727849e2128 trunk

[svn] - Add the ability to easily save to playlist.m3u from the list menu. (For those who hate having to restart Audacious in order to save the playlist).
author nhjm449
date Mon, 15 May 2006 20:55:19 -0700
parents 91f6db060a8b
children 73be9df33f30
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1 /* BMP - Cross-platform multimedia player
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
2 * Copyright (C) 2003-2004 BMP development team.
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
3 *
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
4 * Based on XMMS:
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
5 * Copyright (C) 1998-2003 XMMS development team.
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
6 *
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
7 * This program is free software; you can redistribute it and/or modify
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
8 * it under the terms of the GNU General Public License as published by
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
9 * the Free Software Foundation; either version 2 of the License, or
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
10 * (at your option) any later version.
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
11 *
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
12 * This program is distributed in the hope that it will be useful,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
15 * GNU General Public License for more details.
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
16 *
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
17 * You should have received a copy of the GNU General Public License
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
18 * along with this program; if not, write to the Free Software
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
19 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
20 */
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
21
383
5c457dac866a [svn] - Rename playlistwin stuff to ui_playlist.*
nenolod
parents: 376
diff changeset
22 #include "ui_playlist.h"
0
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
23
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
24 #include <glib.h>
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
25 #include <glib/gi18n.h>
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
26 #include <gdk/gdk.h>
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
27 #include <gdk/gdkkeysyms.h>
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
28 #include <gtk/gtk.h>
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
29 #include <string.h>
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
30
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
31 #include <gdk/gdkx.h>
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
32
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
33 #include <X11/Xlib.h>
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
34 #include <unistd.h>
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
35 #include <errno.h>
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
36
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
37 #include "libaudacious/util.h"
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
38
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
39 #include "dnd.h"
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
40 #include "equalizer.h"
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
41 #include "hints.h"
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
42 #include "input.h"
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
43 #include "main.h"
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
44 #include "mainwin.h"
538
e4e897d20791 [svn] remove libaudcore, we never did anything with it
nenolod
parents: 489
diff changeset
45 #include "playback.h"
0
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
46 #include "playlist.h"
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
47 #include "playlist_list.h"
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
48 #include "playlist_slider.h"
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
49 #include "playlist_popup.h"
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
50 #include "pbutton.h"
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
51 #include "sbutton.h"
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
52 #include "skin.h"
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
53 #include "textbox.h"
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
54 #include "util.h"
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
55
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
56 #include "pixmaps.h"
120
2309d450ed2d [svn] Merge icons from NhJm.
nenolod
parents: 79
diff changeset
57 #include "images/audacious_playlist.xpm"
0
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
58
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
59
625
0a73d1faeb4e [svn] GCC 4.1 warning fixes by Diego 'Flameeyes' Petteno from Gentoo.
chainsaw
parents: 561
diff changeset
60 #define ITEM_SEPARATOR {"/-", NULL, NULL, 0, "<Separator>", NULL}
0
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
61
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
62
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
63 enum {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
64 ADD_URL, ADD_DIR, ADD_FILES,
852
bcff46a2558d [svn] added multiple 'remove duplicates' (by title, by filename, by path+filename)
giacomo
parents: 846
diff changeset
65 SUB_MISC, SUB_ALL, SUB_CROP, SUB_SELECTED,
bcff46a2558d [svn] added multiple 'remove duplicates' (by title, by filename, by path+filename)
giacomo
parents: 846
diff changeset
66 SUB_DUPLICATE_BYTITLE, SUB_DUPLICATE_BYFILENAME, SUB_DUPLICATE_BYPATH,
0
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
67 SEL_INV, SEL_ZERO, SEL_ALL,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
68 MISC_SORT, MISC_FILEINFO, MISC_MISCOPTS,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
69 PLIST_NEW, PLIST_SAVE_AS, PLIST_LOAD,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
70 SEL_LOOKUP, CLOSE_PL_WINDOW, MOVE_UP, PLIST_SAVE,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
71 MISC_QUEUE, PLIST_CQUEUE, PLIST_JTF, PLIST_JTT,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
72 PLAYLISTWIN_REMOVE_DEAD_FILES,
1062
b727849e2128 [svn] - Add the ability to easily save to playlist.m3u from the list menu. (For
nhjm449
parents: 1047
diff changeset
73 PLAYLISTWIN_REFRESH, PLIST_DEFAULTSAVE
0
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
74 };
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
75
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
76 enum {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
77 PLAYLISTWIN_SORT_BYTITLE, PLAYLISTWIN_SORT_BYFILENAME,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
78 PLAYLISTWIN_SORT_BYPATH, PLAYLISTWIN_SORT_BYDATE,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
79 PLAYLISTWIN_SORT_SEL_BYTITLE, PLAYLISTWIN_SORT_SEL_BYFILENAME,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
80 PLAYLISTWIN_SORT_SEL_BYPATH, PLAYLISTWIN_SORT_SEL_BYDATE,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
81 PLAYLISTWIN_SORT_RANDOMIZE, PLAYLISTWIN_SORT_REVERSE
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
82 };
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
83
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
84 GtkWidget *playlistwin;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
85
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
86 PlayList_List *playlistwin_list = NULL;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
87 PButton *playlistwin_shade, *playlistwin_close;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
88
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
89 static gboolean playlistwin_resizing = FALSE;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
90
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
91 static GtkItemFactory *playlistwin_popup_menu;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
92 static GtkItemFactory *pladd_menu, *pldel_menu;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
93 static GtkItemFactory *plsel_menu, *plsort_menu;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
94 static GtkItemFactory *pllist_menu;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
95
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
96 static GdkPixmap *playlistwin_bg;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
97 static GdkBitmap *playlistwin_mask = NULL;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
98 static GdkGC *playlistwin_gc;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
99
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
100 static GtkAccelGroup *playlistwin_accel;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
101
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
102 static gboolean playlistwin_hint_flag = FALSE;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
103
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
104 static PlaylistSlider *playlistwin_slider = NULL;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
105 static TextBox *playlistwin_time_min, *playlistwin_time_sec;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
106 static TextBox *playlistwin_info, *playlistwin_sinfo;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
107 static SButton *playlistwin_srew, *playlistwin_splay;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
108 static SButton *playlistwin_spause, *playlistwin_sstop;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
109 static SButton *playlistwin_sfwd, *playlistwin_seject;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
110 static SButton *playlistwin_sscroll_up, *playlistwin_sscroll_down;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
111
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
112 static GList *playlistwin_wlist = NULL;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
113
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
114 static void plsort_menu_callback(gpointer cb_data, guint action,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
115 GtkWidget * w);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
116 static void playlistwin_sub_menu_callback(gpointer cb_data, guint action,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
117 GtkWidget * w);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
118 static void playlistwin_popup_menu_callback(gpointer cb_data, guint action,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
119 GtkWidget * w);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
120
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
121 static GtkItemFactoryEntry playlistwin_popup_menu_entries[] = {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
122 {N_("/View Track Details"), NULL,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
123 playlistwin_popup_menu_callback,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
124 MISC_FILEINFO, "<ImageItem>", my_pixbuf},
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
125
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
126 ITEM_SEPARATOR,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
127
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
128 {N_("/Remove Selected"), "Delete",
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
129 playlistwin_sub_menu_callback,
841
b2e62b6c452b [svn] started to add more icons for the playlist menu entries; others are going to be drawn and added
giacomo
parents: 840
diff changeset
130 SUB_SELECTED, "<StockItem>", GTK_STOCK_REMOVE},
0
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
131
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
132 {N_("/Remove Unselected"), NULL,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
133 playlistwin_sub_menu_callback,
841
b2e62b6c452b [svn] started to add more icons for the playlist menu entries; others are going to be drawn and added
giacomo
parents: 840
diff changeset
134 SUB_CROP, "<StockItem>", GTK_STOCK_REMOVE},
0
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
135
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
136 {N_("/Remove All"), NULL,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
137 playlistwin_sub_menu_callback,
841
b2e62b6c452b [svn] started to add more icons for the playlist menu entries; others are going to be drawn and added
giacomo
parents: 840
diff changeset
138 SUB_ALL, "<StockItem>", GTK_STOCK_CLEAR},
0
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
139
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
140 ITEM_SEPARATOR,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
141
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
142 {N_("/Queue Toggle"), "q",
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
143 playlistwin_popup_menu_callback,
846
3344dd3f2bf6 [svn] added many new icons for the playlist menus (some drawn from scratch and others derived from the gtk stock ones)
giacomo
parents: 841
diff changeset
144 MISC_QUEUE, "<ImageItem>", queuetoggle_pixbuf},
0
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
145 };
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
146
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
147 static GtkItemFactoryEntry pladd_menu_entries[] = {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
148 {N_("/Add CD..."), "<shift>c",
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
149 mainwin_general_menu_callback,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
150 MAINWIN_GENERAL_ADDCD, "<StockItem>", GTK_STOCK_CDROM},
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
151
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
152 {N_("/Add Internet Address..."), "<control>h",
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
153 mainwin_general_menu_callback,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
154 MAINWIN_GENERAL_PLAYLOCATION, "<StockItem>", GTK_STOCK_NETWORK},
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
155
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
156 {N_("/Add Files..."), "f",
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
157 mainwin_general_menu_callback,
841
b2e62b6c452b [svn] started to add more icons for the playlist menu entries; others are going to be drawn and added
giacomo
parents: 840
diff changeset
158 MAINWIN_GENERAL_PLAYFILE, "<StockItem>", GTK_STOCK_ADD},
0
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
159 };
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
160
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
161 static GtkItemFactoryEntry pldel_menu_entries[] = {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
162 {N_("/Clear Queue"), "<shift>Q",
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
163 playlistwin_popup_menu_callback,
841
b2e62b6c452b [svn] started to add more icons for the playlist menu entries; others are going to be drawn and added
giacomo
parents: 840
diff changeset
164 PLIST_CQUEUE, "<StockItem>", GTK_STOCK_CANCEL},
0
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
165
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
166 ITEM_SEPARATOR,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
167
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
168 {N_("/Remove Unavailable Files"), NULL,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
169 playlistwin_sub_menu_callback,
846
3344dd3f2bf6 [svn] added many new icons for the playlist menus (some drawn from scratch and others derived from the gtk stock ones)
giacomo
parents: 841
diff changeset
170 PLAYLISTWIN_REMOVE_DEAD_FILES, "<ImageItem>", removeunavail_pixbuf},
841
b2e62b6c452b [svn] started to add more icons for the playlist menu entries; others are going to be drawn and added
giacomo
parents: 840
diff changeset
171
852
bcff46a2558d [svn] added multiple 'remove duplicates' (by title, by filename, by path+filename)
giacomo
parents: 846
diff changeset
172 {N_("/Remove Duplicates"), NULL, NULL, 0, "<Branch>", NULL},
bcff46a2558d [svn] added multiple 'remove duplicates' (by title, by filename, by path+filename)
giacomo
parents: 846
diff changeset
173 {N_("/Remove Duplicates/By Title"), NULL,
841
b2e62b6c452b [svn] started to add more icons for the playlist menu entries; others are going to be drawn and added
giacomo
parents: 840
diff changeset
174 playlistwin_sub_menu_callback,
852
bcff46a2558d [svn] added multiple 'remove duplicates' (by title, by filename, by path+filename)
giacomo
parents: 846
diff changeset
175 SUB_DUPLICATE_BYTITLE, "<ImageItem>", removedups_pixbuf},
bcff46a2558d [svn] added multiple 'remove duplicates' (by title, by filename, by path+filename)
giacomo
parents: 846
diff changeset
176 {N_("/Remove Duplicates/By Filename"), NULL,
bcff46a2558d [svn] added multiple 'remove duplicates' (by title, by filename, by path+filename)
giacomo
parents: 846
diff changeset
177 playlistwin_sub_menu_callback,
bcff46a2558d [svn] added multiple 'remove duplicates' (by title, by filename, by path+filename)
giacomo
parents: 846
diff changeset
178 SUB_DUPLICATE_BYFILENAME, "<ImageItem>", removedups_pixbuf},
bcff46a2558d [svn] added multiple 'remove duplicates' (by title, by filename, by path+filename)
giacomo
parents: 846
diff changeset
179 {N_("/Remove Duplicates/By Path + Filename"), NULL,
bcff46a2558d [svn] added multiple 'remove duplicates' (by title, by filename, by path+filename)
giacomo
parents: 846
diff changeset
180 playlistwin_sub_menu_callback,
bcff46a2558d [svn] added multiple 'remove duplicates' (by title, by filename, by path+filename)
giacomo
parents: 846
diff changeset
181 SUB_DUPLICATE_BYPATH, "<ImageItem>", removedups_pixbuf},
0
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
182
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
183 ITEM_SEPARATOR,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
184
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
185 {N_("/Remove All"), NULL,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
186 playlistwin_sub_menu_callback,
841
b2e62b6c452b [svn] started to add more icons for the playlist menu entries; others are going to be drawn and added
giacomo
parents: 840
diff changeset
187 SUB_ALL, "<StockItem>", GTK_STOCK_CLEAR},
0
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
188
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
189 {N_("/Remove Unselected"), NULL,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
190 playlistwin_sub_menu_callback,
841
b2e62b6c452b [svn] started to add more icons for the playlist menu entries; others are going to be drawn and added
giacomo
parents: 840
diff changeset
191 SUB_CROP, "<StockItem>", GTK_STOCK_REMOVE},
0
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
192
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
193 {N_("/Remove Selected"), "Delete",
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
194 playlistwin_sub_menu_callback,
841
b2e62b6c452b [svn] started to add more icons for the playlist menu entries; others are going to be drawn and added
giacomo
parents: 840
diff changeset
195 SUB_SELECTED, "<StockItem>", GTK_STOCK_REMOVE}
0
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
196 };
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
197
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
198 static GtkItemFactoryEntry pllist_menu_entries[] = {
1001
9189b80b6bea [svn] Assign new shortcuts that no longer conflict. Patch by mokoshi, closes bug #478.
chainsaw
parents: 999
diff changeset
199 {N_("/New List"), "<shift>N",
0
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
200 playlistwin_sub_menu_callback,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
201 PLIST_NEW, "<StockItem>", GTK_STOCK_NEW},
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
202
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
203 ITEM_SEPARATOR,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
204
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
205 {N_("/Load List"), "o",
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
206 playlistwin_sub_menu_callback,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
207 PLIST_LOAD, "<StockItem>", GTK_STOCK_OPEN},
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
208
1001
9189b80b6bea [svn] Assign new shortcuts that no longer conflict. Patch by mokoshi, closes bug #478.
chainsaw
parents: 999
diff changeset
209 {N_("/Save List"), "<shift>S",
0
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
210 playlistwin_sub_menu_callback,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
211 PLIST_SAVE, "<StockItem>", GTK_STOCK_SAVE},
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
212
1062
b727849e2128 [svn] - Add the ability to easily save to playlist.m3u from the list menu. (For
nhjm449
parents: 1047
diff changeset
213 {N_("/Save Default List"), "<alt>S",
b727849e2128 [svn] - Add the ability to easily save to playlist.m3u from the list menu. (For
nhjm449
parents: 1047
diff changeset
214 playlistwin_sub_menu_callback,
b727849e2128 [svn] - Add the ability to easily save to playlist.m3u from the list menu. (For
nhjm449
parents: 1047
diff changeset
215 PLIST_DEFAULTSAVE, "<StockItem>", GTK_STOCK_SAVE},
b727849e2128 [svn] - Add the ability to easily save to playlist.m3u from the list menu. (For
nhjm449
parents: 1047
diff changeset
216
0
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
217 ITEM_SEPARATOR,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
218
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
219 {N_("/Update View"), "F5",
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
220 playlistwin_sub_menu_callback,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
221 PLAYLISTWIN_REFRESH, "<StockItem>", GTK_STOCK_REFRESH}
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
222 };
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
223
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
224 static GtkItemFactoryEntry plsel_menu_entries[] = {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
225 {N_("/Invert Selection"), NULL,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
226 playlistwin_sub_menu_callback,
846
3344dd3f2bf6 [svn] added many new icons for the playlist menus (some drawn from scratch and others derived from the gtk stock ones)
giacomo
parents: 841
diff changeset
227 SEL_INV, "<ImageItem>", selectinvert_pixbuf},
0
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
228
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
229 ITEM_SEPARATOR,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
230
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
231 {N_("/Select None"),"<Ctrl><Shift>A",
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
232 playlistwin_sub_menu_callback,
846
3344dd3f2bf6 [svn] added many new icons for the playlist menus (some drawn from scratch and others derived from the gtk stock ones)
giacomo
parents: 841
diff changeset
233 SEL_ZERO, "<ImageItem>", selectnone_pixbuf},
0
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
234
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
235 {N_("/Select All"), "<Ctrl>A",
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
236 playlistwin_sub_menu_callback,
846
3344dd3f2bf6 [svn] added many new icons for the playlist menus (some drawn from scratch and others derived from the gtk stock ones)
giacomo
parents: 841
diff changeset
237 SEL_ALL, "<ImageItem>", selectall_pixbuf},
0
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
238 };
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
239
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
240 static GtkItemFactoryEntry plsort_menu_entries[] = {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
241 {N_("/Randomize List"), NULL, plsort_menu_callback,
846
3344dd3f2bf6 [svn] added many new icons for the playlist menus (some drawn from scratch and others derived from the gtk stock ones)
giacomo
parents: 841
diff changeset
242 PLAYLISTWIN_SORT_RANDOMIZE, "<ImageItem>", randomizepl_pixbuf},
0
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
243 {N_("/Reverse List"), NULL, plsort_menu_callback,
846
3344dd3f2bf6 [svn] added many new icons for the playlist menus (some drawn from scratch and others derived from the gtk stock ones)
giacomo
parents: 841
diff changeset
244 PLAYLISTWIN_SORT_REVERSE, "<ImageItem>", invertpl_pixbuf},
0
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
245 ITEM_SEPARATOR,
625
0a73d1faeb4e [svn] GCC 4.1 warning fixes by Diego 'Flameeyes' Petteno from Gentoo.
chainsaw
parents: 561
diff changeset
246 {N_("/Sort List"), NULL, NULL, 0, "<Branch>", NULL},
0
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
247 {N_("/Sort List/By Title"), NULL, plsort_menu_callback,
846
3344dd3f2bf6 [svn] added many new icons for the playlist menus (some drawn from scratch and others derived from the gtk stock ones)
giacomo
parents: 841
diff changeset
248 PLAYLISTWIN_SORT_BYTITLE, "<ImageItem>", sortbytitle_pixbuf},
0
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
249 {N_("/Sort List/By Filename"), NULL, plsort_menu_callback,
846
3344dd3f2bf6 [svn] added many new icons for the playlist menus (some drawn from scratch and others derived from the gtk stock ones)
giacomo
parents: 841
diff changeset
250 PLAYLISTWIN_SORT_BYFILENAME, "<ImageItem>", sortbyfilename_pixbuf},
0
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
251 {N_("/Sort List/By Path + Filename"), NULL, plsort_menu_callback,
846
3344dd3f2bf6 [svn] added many new icons for the playlist menus (some drawn from scratch and others derived from the gtk stock ones)
giacomo
parents: 841
diff changeset
252 PLAYLISTWIN_SORT_BYPATH, "<ImageItem>", sortbypathfile_pixbuf},
0
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
253 {N_("/Sort List/By Date"), NULL, plsort_menu_callback,
846
3344dd3f2bf6 [svn] added many new icons for the playlist menus (some drawn from scratch and others derived from the gtk stock ones)
giacomo
parents: 841
diff changeset
254 PLAYLISTWIN_SORT_BYDATE, "<ImageItem>", sortbydate_pixbuf},
625
0a73d1faeb4e [svn] GCC 4.1 warning fixes by Diego 'Flameeyes' Petteno from Gentoo.
chainsaw
parents: 561
diff changeset
255 {N_("/Sort Selection"), NULL, NULL, 0, "<Branch>", NULL},
0
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
256 {N_("/Sort Selection/By Title"), NULL, plsort_menu_callback,
846
3344dd3f2bf6 [svn] added many new icons for the playlist menus (some drawn from scratch and others derived from the gtk stock ones)
giacomo
parents: 841
diff changeset
257 PLAYLISTWIN_SORT_SEL_BYTITLE, "<ImageItem>", sortbytitle_pixbuf},
0
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
258 {N_("/Sort Selection/By Filename"), NULL, plsort_menu_callback,
846
3344dd3f2bf6 [svn] added many new icons for the playlist menus (some drawn from scratch and others derived from the gtk stock ones)
giacomo
parents: 841
diff changeset
259 PLAYLISTWIN_SORT_SEL_BYFILENAME, "<ImageItem>", sortbyfilename_pixbuf},
0
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
260 {N_("/Sort Selection/By Path + Filename"), NULL, plsort_menu_callback,
846
3344dd3f2bf6 [svn] added many new icons for the playlist menus (some drawn from scratch and others derived from the gtk stock ones)
giacomo
parents: 841
diff changeset
261 PLAYLISTWIN_SORT_SEL_BYPATH, "<ImageItem>", sortbypathfile_pixbuf},
0
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
262 {N_("/Sort Selection/By Date"), NULL, plsort_menu_callback,
846
3344dd3f2bf6 [svn] added many new icons for the playlist menus (some drawn from scratch and others derived from the gtk stock ones)
giacomo
parents: 841
diff changeset
263 PLAYLISTWIN_SORT_SEL_BYDATE, "<ImageItem>", sortbydate_pixbuf}
0
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
264 };
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
265
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
266
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
267 static void playlistwin_draw_frame(void);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
268
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
269
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
270 gboolean
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
271 playlistwin_is_shaded(void)
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
272 {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
273 return cfg.playlist_shaded;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
274 }
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
275
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
276 gint
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
277 playlistwin_get_width(void)
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
278 {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
279 return cfg.playlist_width;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
280 }
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
281
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
282 gint
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
283 playlistwin_get_height_unshaded(void)
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
284 {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
285 gint height = cfg.playlist_height;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
286 return height;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
287 }
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
288
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
289 gint
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
290 playlistwin_get_height_shaded(void)
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
291 {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
292 return PLAYLISTWIN_SHADED_HEIGHT;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
293 }
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
294
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
295 gint
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
296 playlistwin_get_height(void)
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
297 {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
298 if (playlistwin_is_shaded())
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
299 return playlistwin_get_height_shaded();
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
300 else
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
301 return playlistwin_get_height_unshaded();
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
302 }
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
303
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
304 void
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
305 playlistwin_get_size(gint * width, gint * height)
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
306 {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
307 if (width)
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
308 *width = playlistwin_get_width();
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
309
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
310 if (height)
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
311 *height = playlistwin_get_height();
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
312 }
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
313
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
314 static void
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
315 playlistwin_update_info(void)
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
316 {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
317 gchar *text, *sel_text, *tot_text;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
318 gulong selection, total;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
319 gboolean selection_more, total_more;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
320
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
321 playlist_get_total_time(&total, &selection, &total_more, &selection_more);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
322
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
323 if (selection > 0 || (selection == 0 && !selection_more)) {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
324 if (selection > 3600)
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
325 sel_text =
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
326 g_strdup_printf("%lu:%-2.2lu:%-2.2lu%s", selection / 3600,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
327 (selection / 60) % 60, selection % 60,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
328 (selection_more ? "+" : ""));
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
329 else
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
330 sel_text =
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
331 g_strdup_printf("%lu:%-2.2lu%s", selection / 60,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
332 selection % 60, (selection_more ? "+" : ""));
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
333 }
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
334 else
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
335 sel_text = g_strdup("?");
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
336 if (total > 0 || (total == 0 && !total_more)) {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
337 if (total > 3600)
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
338 tot_text =
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
339 g_strdup_printf("%lu:%-2.2lu:%-2.2lu%s", total / 3600,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
340 (total / 60) % 60, total % 60,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
341 total_more ? "+" : "");
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
342 else
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
343 tot_text =
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
344 g_strdup_printf("%lu:%-2.2lu%s", total / 60, total % 60,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
345 total_more ? "+" : "");
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
346 }
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
347 else
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
348 tot_text = g_strdup("?");
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
349 text = g_strconcat(sel_text, "/", tot_text, NULL);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
350 textbox_set_text(playlistwin_info, text);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
351 g_free(text);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
352 g_free(tot_text);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
353 g_free(sel_text);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
354 }
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
355
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
356 static void
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
357 playlistwin_update_sinfo(void)
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
358 {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
359 gchar *posstr, *timestr, *title, *info, *dots;
625
0a73d1faeb4e [svn] GCC 4.1 warning fixes by Diego 'Flameeyes' Petteno from Gentoo.
chainsaw
parents: 561
diff changeset
360 gint pos, time;
0a73d1faeb4e [svn] GCC 4.1 warning fixes by Diego 'Flameeyes' Petteno from Gentoo.
chainsaw
parents: 561
diff changeset
361 guint max_len;
0
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
362
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
363 pos = playlist_get_position();
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
364 title = playlist_get_songtitle(pos);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
365 time = playlist_get_songtime(pos);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
366
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
367 if (!title) {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
368 textbox_set_text(playlistwin_sinfo, "");
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
369 return;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
370 }
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
371
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
372 if (cfg.show_numbers_in_pl)
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
373 posstr = g_strdup_printf("%d. ", pos + 1);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
374 else
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
375 posstr = g_strdup("");
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
376
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
377 max_len = (playlistwin_get_width() - 35) / 5 - strlen(posstr);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
378
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
379 if (time != -1) {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
380 timestr = g_strdup_printf(" %d:%-2.2d", time / 60000,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
381 (time / 1000) % 60);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
382 max_len -= strlen(timestr);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
383 }
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
384 else
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
385 timestr = g_strdup("");
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
386
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
387 convert_title_text(title);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
388
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
389 if (strlen(title) > max_len) {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
390 max_len -= 3;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
391 dots = "...";
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
392 }
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
393 else
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
394 dots = "";
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
395
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
396 info = g_strdup_printf("%s%-*.*s%s%s", posstr, max_len, max_len,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
397 title, dots, timestr);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
398 g_free(posstr);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
399 g_free(title);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
400 g_free(timestr);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
401
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
402 textbox_set_text(playlistwin_sinfo, info);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
403 g_free(info);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
404 }
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
405
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
406 gboolean
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
407 playlistwin_item_visible(gint index)
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
408 {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
409 if (index >= playlistwin_list->pl_first
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
410 && index <
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
411 (playlistwin_list->pl_first + playlistwin_list->pl_num_visible))
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
412 return TRUE;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
413 return FALSE;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
414 }
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
415
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
416 gint
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
417 playlistwin_get_toprow(void)
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
418 {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
419 if (playlistwin_list)
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
420 return (playlistwin_list->pl_first);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
421 return (-1);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
422 }
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
423
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
424 void
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
425 playlistwin_set_toprow(gint toprow)
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
426 {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
427 if (playlistwin_list)
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
428 playlistwin_list->pl_first = toprow;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
429 playlistwin_update_list();
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
430 }
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
431
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
432 void
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
433 playlistwin_update_list(void)
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
434 {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
435 g_return_if_fail(playlistwin_list != NULL);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
436
239
ac4c3da7c263 [svn] Don't use widget_draw_quick() in playlistwin_update_list().
nenolod
parents: 238
diff changeset
437 widget_draw(WIDGET(playlistwin_list));
ac4c3da7c263 [svn] Don't use widget_draw_quick() in playlistwin_update_list().
nenolod
parents: 238
diff changeset
438 widget_draw(WIDGET(playlistwin_slider));
0
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
439 playlistwin_update_info();
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
440 playlistwin_update_sinfo();
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
441 /* mainwin_update_jtf(); */
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
442 }
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
443
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
444 #if 0
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
445 static void
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
446 playlistwin_redraw_list(void)
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
447 {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
448 g_return_if_fail(playlistwin_list != NULL);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
449
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
450 draw_widget(playlistwin_list);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
451 draw_widget(playlistwin_slider);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
452 }
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
453 #endif
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
454
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
455 static void
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
456 playlistwin_set_mask(void)
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
457 {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
458 GdkGC *gc;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
459 GdkColor pattern;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
460
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
461 if (playlistwin_mask)
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
462 g_object_unref(playlistwin_mask);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
463
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
464 playlistwin_mask =
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
465 gdk_pixmap_new(playlistwin->window, playlistwin_get_width(),
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
466 playlistwin_get_height(), 1);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
467 gc = gdk_gc_new(playlistwin_mask);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
468 pattern.pixel = 1;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
469 gdk_gc_set_foreground(gc, &pattern);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
470 gdk_draw_rectangle(playlistwin_mask, gc, TRUE, 0, 0,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
471 playlistwin_get_width(), playlistwin_get_height());
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
472 gdk_gc_destroy(gc);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
473
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
474 gtk_widget_shape_combine_mask(playlistwin, playlistwin_mask, 0, 0);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
475 }
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
476
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
477 static void
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
478 playlistwin_set_geometry_hints(gboolean shaded)
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
479 {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
480 GdkGeometry geometry;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
481 GdkWindowHints mask;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
482
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
483 geometry.min_width = PLAYLISTWIN_MIN_WIDTH;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
484 geometry.max_width = G_MAXUINT16;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
485 geometry.base_width = cfg.playlist_width;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
486
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
487 geometry.width_inc = PLAYLISTWIN_WIDTH_SNAP;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
488 geometry.height_inc = PLAYLISTWIN_HEIGHT_SNAP;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
489
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
490 if (shaded) {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
491 geometry.min_height = PLAYLISTWIN_SHADED_HEIGHT;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
492 geometry.max_height = PLAYLISTWIN_SHADED_HEIGHT;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
493 geometry.base_height = PLAYLISTWIN_SHADED_HEIGHT;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
494 }
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
495 else {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
496 geometry.min_height = PLAYLISTWIN_MIN_HEIGHT;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
497 geometry.max_height = G_MAXUINT16;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
498 geometry.base_height = cfg.playlist_height;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
499 }
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
500
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
501 mask = GDK_HINT_MIN_SIZE | GDK_HINT_MAX_SIZE | GDK_HINT_RESIZE_INC |
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
502 GDK_HINT_BASE_SIZE;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
503
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
504 gtk_window_set_geometry_hints(GTK_WINDOW(playlistwin),
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
505 playlistwin, &geometry, mask);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
506 }
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
507
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
508 void
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
509 playlistwin_set_shade(gboolean shaded)
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
510 {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
511 cfg.playlist_shaded = shaded;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
512
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
513 if (shaded) {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
514 widget_show(WIDGET(playlistwin_sinfo));
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
515 playlistwin_shade->pb_nx = 128;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
516 playlistwin_shade->pb_ny = 45;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
517 playlistwin_shade->pb_px = 150;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
518 playlistwin_shade->pb_py = 42;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
519 playlistwin_close->pb_nx = 138;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
520 playlistwin_close->pb_ny = 45;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
521 }
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
522 else {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
523 widget_hide(WIDGET(playlistwin_sinfo));
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
524 playlistwin_shade->pb_nx = 157;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
525 playlistwin_shade->pb_ny = 3;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
526 playlistwin_shade->pb_px = 62;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
527 playlistwin_shade->pb_py = 42;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
528 playlistwin_close->pb_nx = 167;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
529 playlistwin_close->pb_ny = 3;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
530 }
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
531
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
532 playlistwin_set_geometry_hints(cfg.playlist_shaded);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
533
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
534 gtk_window_resize(GTK_WINDOW(playlistwin),
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
535 cfg.playlist_width,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
536 playlistwin_get_height());
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
537
79
38ddde5b0f13 [svn] Fix #129 by using playlistwin_set_mask() in playlistwin_set_shade()
msameer
parents: 0
diff changeset
538 playlistwin_set_mask();
237
02c17a5c99e3 [svn] - Implement widget_draw_quick(widget_t *) for doing an immediate draw
nenolod
parents: 236
diff changeset
539
242
32d7260f413e [svn] Check for lrintf. Fixed by ahuillet.
nenolod
parents: 239
diff changeset
540 widget_draw(WIDGET(playlistwin_list));
32d7260f413e [svn] Check for lrintf. Fixed by ahuillet.
nenolod
parents: 239
diff changeset
541 widget_draw(WIDGET(playlistwin_slider));
32d7260f413e [svn] Check for lrintf. Fixed by ahuillet.
nenolod
parents: 239
diff changeset
542
0
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
543 draw_playlist_window(TRUE);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
544 }
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
545
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
546 static void
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
547 playlistwin_set_shade_menu(gboolean shaded)
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
548 {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
549 GtkWidget *item;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
550
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
551 item = gtk_item_factory_get_widget(mainwin_view_menu,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
552 "/Roll up Playlist Editor");
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
553 gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(item), shaded);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
554
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
555 playlistwin_set_shade(shaded);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
556 }
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
557
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
558 void
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
559 playlistwin_shade_toggle(void)
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
560 {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
561 playlistwin_set_shade_menu(!cfg.playlist_shaded);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
562 }
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
563
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
564 static void
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
565 playlistwin_release(GtkWidget * widget,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
566 GdkEventButton * event,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
567 gpointer callback_data)
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
568 {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
569 if (event->button == 3)
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
570 return;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
571
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
572 gdk_pointer_ungrab(GDK_CURRENT_TIME);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
573 playlistwin_resizing = FALSE;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
574 gdk_flush();
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
575
1047
91f6db060a8b [svn] - initial playlist_transparent patch. (you will need to edit your audacious config manually, either by gconf or texteditor to enable)
nenolod
parents: 1046
diff changeset
576 if (cfg.playlist_transparent)
91f6db060a8b [svn] - initial playlist_transparent patch. (you will need to edit your audacious config manually, either by gconf or texteditor to enable)
nenolod
parents: 1046
diff changeset
577 playlistwin_update_list();
91f6db060a8b [svn] - initial playlist_transparent patch. (you will need to edit your audacious config manually, either by gconf or texteditor to enable)
nenolod
parents: 1046
diff changeset
578
1045
238cd31c1512 [svn] - make playlist moveable again
nenolod
parents: 1042
diff changeset
579 gtk_object_remove_data(GTK_OBJECT(playlistwin), "is_moving");
238cd31c1512 [svn] - make playlist moveable again
nenolod
parents: 1042
diff changeset
580 gtk_object_remove_data(GTK_OBJECT(playlistwin), "offset_x");
238cd31c1512 [svn] - make playlist moveable again
nenolod
parents: 1042
diff changeset
581 gtk_object_remove_data(GTK_OBJECT(playlistwin), "offset_y");
238cd31c1512 [svn] - make playlist moveable again
nenolod
parents: 1042
diff changeset
582
1042
286156196e16 [svn] - remove X11-incompliant dock.c, dock.h (sorry)
nenolod
parents: 1040
diff changeset
583 handle_release_cb(playlistwin_wlist, widget, event);
286156196e16 [svn] - remove X11-incompliant dock.c, dock.h (sorry)
nenolod
parents: 1040
diff changeset
584 playlist_popup_destroy();
286156196e16 [svn] - remove X11-incompliant dock.c, dock.h (sorry)
nenolod
parents: 1040
diff changeset
585 draw_playlist_window(FALSE);
0
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
586 }
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
587
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
588 void
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
589 playlistwin_scroll(gint num)
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
590 {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
591 playlistwin_list->pl_first += num;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
592 playlistwin_update_list();
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
593 }
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
594
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
595 void
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
596 playlistwin_scroll_up_pushed(void)
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
597 {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
598 playlistwin_list->pl_first -= 3;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
599 playlistwin_update_list();
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
600 }
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
601
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
602 void
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
603 playlistwin_scroll_down_pushed(void)
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
604 {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
605 playlistwin_list->pl_first += 3;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
606 playlistwin_update_list();
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
607 }
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
608
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
609 static void
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
610 playlistwin_select_all(void)
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
611 {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
612 playlist_select_all(TRUE);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
613 playlistwin_list->pl_prev_selected = 0;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
614 playlistwin_list->pl_prev_min = 0;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
615 playlistwin_list->pl_prev_max = playlist_get_length() - 1;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
616 playlistwin_update_list();
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
617 }
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
618
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
619 static void
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
620 playlistwin_select_none(void)
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
621 {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
622 playlist_select_all(FALSE);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
623 playlistwin_list->pl_prev_selected = -1;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
624 playlistwin_list->pl_prev_min = -1;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
625 playlistwin_update_list();
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
626 }
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
627
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
628 static void
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
629 playlistwin_inverse_selection(void)
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
630 {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
631 playlist_select_invert_all();
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
632 playlistwin_list->pl_prev_selected = -1;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
633 playlistwin_list->pl_prev_min = -1;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
634 playlistwin_update_list();
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
635 }
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
636
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
637 static void
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
638 playlistwin_resize(gint width, gint height)
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
639 {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
640 gboolean redraw;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
641
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
642 g_return_if_fail(width > 0 && height > 0);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
643
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
644 cfg.playlist_width = width;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
645
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
646 if (!cfg.playlist_shaded)
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
647 cfg.playlist_height = height;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
648 else
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
649 height = cfg.playlist_height;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
650
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
651 /* FIXME: why the fsck are we doing this manually? */
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
652 /* adjust widget positions and sizes */
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
653
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
654 widget_resize(WIDGET(playlistwin_list), width - 31, height - 58);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
655
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
656 widget_move(WIDGET(playlistwin_slider), width - 15, 20);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
657 widget_resize(WIDGET(playlistwin_slider), 8, height - 58);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
658
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
659 widget_resize(WIDGET(playlistwin_sinfo), width - 35, 14);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
660 playlistwin_update_sinfo();
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
661
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
662 widget_move(WIDGET(playlistwin_shade), width - 21, 3);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
663 widget_move(WIDGET(playlistwin_close), width - 11, 3);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
664 widget_move(WIDGET(playlistwin_time_min), width - 82, height - 15);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
665 widget_move(WIDGET(playlistwin_time_sec), width - 64, height - 15);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
666 widget_move(WIDGET(playlistwin_info), width - 143, height - 28);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
667 widget_move(WIDGET(playlistwin_srew), width - 144, height - 16);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
668 widget_move(WIDGET(playlistwin_splay), width - 138, height - 16);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
669 widget_move(WIDGET(playlistwin_spause), width - 128, height - 16);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
670 widget_move(WIDGET(playlistwin_sstop), width - 118, height - 16);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
671 widget_move(WIDGET(playlistwin_sfwd), width - 109, height - 16);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
672 widget_move(WIDGET(playlistwin_seject), width - 100, height - 16);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
673 widget_move(WIDGET(playlistwin_sscroll_up), width - 14, height - 35);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
674 widget_move(WIDGET(playlistwin_sscroll_down), width - 14, height - 30);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
675
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
676 g_object_unref(playlistwin_bg);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
677 playlistwin_bg = gdk_pixmap_new(playlistwin->window, width, height, -1);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
678 playlistwin_set_mask();
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
679
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
680 widget_list_lock(playlistwin_wlist);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
681
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
682 widget_list_change_pixmap(playlistwin_wlist, playlistwin_bg);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
683 playlistwin_draw_frame();
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
684 widget_list_draw(playlistwin_wlist, &redraw, TRUE);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
685 widget_list_clear_redraw(playlistwin_wlist);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
686
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
687 widget_list_unlock(playlistwin_wlist);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
688
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
689 gdk_window_set_back_pixmap(playlistwin->window, playlistwin_bg, 0);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
690 gdk_window_clear(playlistwin->window);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
691 }
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
692
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
693
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
694
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
695 static void
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
696 playlistwin_motion(GtkWidget * widget,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
697 GdkEventMotion * event,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
698 gpointer callback_data)
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
699 {
489
e0ee28a14570 [svn] Do not process redundant XEvents... just throw them away. Crude
nenolod
parents: 484
diff changeset
700 GdkEvent *gevent;
e0ee28a14570 [svn] Do not process redundant XEvents... just throw them away. Crude
nenolod
parents: 484
diff changeset
701
1045
238cd31c1512 [svn] - make playlist moveable again
nenolod
parents: 1042
diff changeset
702 if (gtk_object_get_data(GTK_OBJECT(playlistwin), "is_moving"))
238cd31c1512 [svn] - make playlist moveable again
nenolod
parents: 1042
diff changeset
703 {
238cd31c1512 [svn] - make playlist moveable again
nenolod
parents: 1042
diff changeset
704 gint offset_x, offset_y, mx, my, x, y;
238cd31c1512 [svn] - make playlist moveable again
nenolod
parents: 1042
diff changeset
705
238cd31c1512 [svn] - make playlist moveable again
nenolod
parents: 1042
diff changeset
706 offset_x = GPOINTER_TO_INT(gtk_object_get_data(GTK_OBJECT(playlistwin), "offset_x"));
238cd31c1512 [svn] - make playlist moveable again
nenolod
parents: 1042
diff changeset
707 offset_y = GPOINTER_TO_INT(gtk_object_get_data(GTK_OBJECT(playlistwin), "offset_y"));
238cd31c1512 [svn] - make playlist moveable again
nenolod
parents: 1042
diff changeset
708
238cd31c1512 [svn] - make playlist moveable again
nenolod
parents: 1042
diff changeset
709 gdk_window_get_pointer(NULL, &mx, &my, NULL);
238cd31c1512 [svn] - make playlist moveable again
nenolod
parents: 1042
diff changeset
710
238cd31c1512 [svn] - make playlist moveable again
nenolod
parents: 1042
diff changeset
711 x = mx - offset_x;
238cd31c1512 [svn] - make playlist moveable again
nenolod
parents: 1042
diff changeset
712 y = my - offset_y;
238cd31c1512 [svn] - make playlist moveable again
nenolod
parents: 1042
diff changeset
713
238cd31c1512 [svn] - make playlist moveable again
nenolod
parents: 1042
diff changeset
714 gtk_window_move(GTK_WINDOW(playlistwin), x, y);
238cd31c1512 [svn] - make playlist moveable again
nenolod
parents: 1042
diff changeset
715 }
238cd31c1512 [svn] - make playlist moveable again
nenolod
parents: 1042
diff changeset
716 else
238cd31c1512 [svn] - make playlist moveable again
nenolod
parents: 1042
diff changeset
717 {
238cd31c1512 [svn] - make playlist moveable again
nenolod
parents: 1042
diff changeset
718 handle_motion_cb(playlistwin_wlist, widget, event);
238cd31c1512 [svn] - make playlist moveable again
nenolod
parents: 1042
diff changeset
719 draw_playlist_window(FALSE);
238cd31c1512 [svn] - make playlist moveable again
nenolod
parents: 1042
diff changeset
720 }
1042
286156196e16 [svn] - remove X11-incompliant dock.c, dock.h (sorry)
nenolod
parents: 1040
diff changeset
721
0
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
722 gdk_flush();
489
e0ee28a14570 [svn] Do not process redundant XEvents... just throw them away. Crude
nenolod
parents: 484
diff changeset
723
e0ee28a14570 [svn] Do not process redundant XEvents... just throw them away. Crude
nenolod
parents: 484
diff changeset
724 while ((gevent = gdk_event_get()) != NULL) gdk_event_free(gevent);
0
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
725 }
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
726
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
727 static void
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
728 playlistwin_show_filebrowser(void)
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
729 {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
730 util_run_filebrowser(NO_PLAY_BUTTON);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
731 }
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
732
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
733 #if 0
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
734 static void
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
735 playlistwin_add_dir_handler(const gchar * dir)
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
736 {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
737 g_free(cfg.filesel_path);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
738 cfg.filesel_path = g_strdup(dir);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
739 playlist_add_dir(dir);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
740 }
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
741 #endif
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
742
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
743 static void
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
744 playlistwin_fileinfo(void)
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
745 {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
746 /* Show the first selected file, or the current file if nothing is
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
747 * selected */
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
748 GList *list = playlist_get_selected();
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
749 if (list) {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
750 playlist_fileinfo(GPOINTER_TO_INT(list->data));
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
751 g_list_free(list);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
752 }
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
753 else
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
754 playlist_fileinfo_current();
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
755 }
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
756
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
757 static void
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
758 menu_set_item_sensitive(GtkItemFactory * item_factory,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
759 const gchar * path,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
760 gboolean sensitive)
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
761 {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
762 GtkWidget *item = gtk_item_factory_get_widget(item_factory, path);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
763 gtk_widget_set_sensitive(item, sensitive);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
764 }
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
765
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
766 /* FIXME: broken */
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
767 static void
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
768 playlistwin_set_sensitive_sortmenu(void)
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
769 {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
770 gboolean set = playlist_get_num_selected() > 1;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
771 menu_set_item_sensitive(plsort_menu, "/Sort Selection/By Title", set);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
772 menu_set_item_sensitive(plsort_menu, "/Sort Selection/By Filename", set);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
773 menu_set_item_sensitive(plsort_menu, "/Sort Selection/By Path + Filename", set);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
774 menu_set_item_sensitive(plsort_menu, "/Sort Selection/By Date", set);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
775 }
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
776
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
777 static void
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
778 show_playlist_save_error(GtkWindow * parent,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
779 const gchar * filename)
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
780 {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
781 GtkWidget *dialog;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
782
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
783 g_return_if_fail(GTK_IS_WINDOW(parent));
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
784 g_return_if_fail(filename != NULL);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
785
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
786 dialog = gtk_message_dialog_new(GTK_WINDOW(parent),
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
787 GTK_DIALOG_DESTROY_WITH_PARENT,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
788 GTK_MESSAGE_ERROR,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
789 GTK_BUTTONS_OK,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
790 _("Error writing playlist \"%s\": %s"),
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
791 filename, strerror(errno));
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
792
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
793 gtk_dialog_run(GTK_DIALOG(dialog));
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
794 gtk_widget_destroy(dialog);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
795 }
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
796
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
797 static gboolean
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
798 show_playlist_overwrite_prompt(GtkWindow * parent,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
799 const gchar * filename)
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
800 {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
801 GtkWidget *dialog;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
802 gint result;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
803
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
804 g_return_val_if_fail(GTK_IS_WINDOW(parent), FALSE);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
805 g_return_val_if_fail(filename != NULL, FALSE);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
806
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
807 dialog = gtk_message_dialog_new(GTK_WINDOW(parent),
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
808 GTK_DIALOG_DESTROY_WITH_PARENT,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
809 GTK_MESSAGE_QUESTION,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
810 GTK_BUTTONS_YES_NO,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
811 _("%s already exist. Continue?"),
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
812 filename);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
813
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
814 result = gtk_dialog_run(GTK_DIALOG(dialog));
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
815 gtk_widget_destroy(dialog);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
816
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
817 return (result == GTK_RESPONSE_YES);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
818 }
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
819
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
820 static void
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
821 show_playlist_save_format_error(GtkWindow * parent,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
822 const gchar * filename)
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
823 {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
824 const gchar *markup =
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
825 N_("<b><big>Unable to save playlist.</big></b>\n\n"
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
826 "Unknown file type for '%s'.\n");
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
827
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
828 GtkWidget *dialog;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
829
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
830 g_return_if_fail(GTK_IS_WINDOW(parent));
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
831 g_return_if_fail(filename != NULL);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
832
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
833 dialog =
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
834 gtk_message_dialog_new_with_markup(GTK_WINDOW(parent),
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
835 GTK_DIALOG_DESTROY_WITH_PARENT,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
836 GTK_MESSAGE_ERROR,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
837 GTK_BUTTONS_OK,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
838 _(markup),
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
839 filename);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
840 gtk_dialog_run(GTK_DIALOG(dialog));
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
841 gtk_widget_destroy(dialog);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
842 }
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
843
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
844 static void
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
845 playlistwin_save_playlist(const gchar * filename)
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
846 {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
847 PlaylistFormat format;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
848
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
849 format = playlist_format_get_from_name(filename);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
850 if (format == PLAYLIST_FORMAT_UNKNOWN) {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
851 show_playlist_save_format_error(GTK_WINDOW(playlistwin), filename);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
852 return;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
853 }
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
854
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
855 str_replace_in(&cfg.playlist_path, g_path_get_dirname(filename));
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
856
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
857 if (g_file_test(filename, G_FILE_TEST_IS_REGULAR))
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
858 if (!show_playlist_overwrite_prompt(GTK_WINDOW(playlistwin), filename))
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
859 return;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
860
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
861 if (!playlist_save(filename, format))
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
862 show_playlist_save_error(GTK_WINDOW(playlistwin), filename);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
863 }
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
864
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
865 #if 0
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
866 static void
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
867 playlistwin_save_current(void)
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
868 {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
869 const gchar *filename;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
870
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
871 if (!(filename = playlist_get_current_name()))
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
872 return;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
873
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
874 playlistwin_save_playlist(filename);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
875 }
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
876 #endif
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
877
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
878 static void
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
879 playlistwin_load_playlist(const gchar * filename)
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
880 {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
881 g_return_if_fail(filename != NULL);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
882
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
883 str_replace_in(&cfg.playlist_path, g_strdup(filename));
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
884
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
885 playlist_clear();
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
886 mainwin_clear_song_info();
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
887 mainwin_set_info_text();
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
888
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
889 playlist_load(filename);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
890 playlist_set_current_name(filename);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
891 }
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
892
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
893 static gchar *
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
894 playlist_file_selection(const gchar * title,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
895 gboolean save,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
896 const gchar * default_filename)
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
897 {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
898 GtkWidget *dialog, *button;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
899 gchar *filename;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
900
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
901 g_return_val_if_fail(title != NULL, NULL);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
902
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
903 dialog = gtk_file_chooser_dialog_new(title, GTK_WINDOW(mainwin),
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
904 save ? GTK_FILE_CHOOSER_ACTION_SAVE :
376
94507b102cdb [svn] Sentinel fix; extra NULL required.
chainsaw
parents: 331
diff changeset
905 GTK_FILE_CHOOSER_ACTION_OPEN, NULL, NULL);
0
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
906 if (default_filename)
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
907 gtk_file_chooser_set_filename(GTK_FILE_CHOOSER(dialog),
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
908 default_filename);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
909
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
910 button = gtk_dialog_add_button(GTK_DIALOG(dialog), GTK_STOCK_CANCEL,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
911 GTK_RESPONSE_REJECT);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
912 gtk_button_set_use_stock(GTK_BUTTON(button), TRUE);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
913 GTK_WIDGET_SET_FLAGS(button, GTK_CAN_DEFAULT);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
914
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
915 button = gtk_dialog_add_button(GTK_DIALOG(dialog),
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
916 save ? GTK_STOCK_SAVE : GTK_STOCK_OPEN,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
917 GTK_RESPONSE_ACCEPT);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
918 gtk_button_set_use_stock(GTK_BUTTON(button), TRUE);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
919 gtk_dialog_set_default_response(GTK_DIALOG(dialog), GTK_RESPONSE_ACCEPT);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
920
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
921 if (gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_ACCEPT)
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
922 filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dialog));
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
923 else
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
924 filename = NULL;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
925
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
926 gtk_widget_destroy(dialog);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
927
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
928 return filename;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
929 }
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
930
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
931 void
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
932 playlistwin_select_playlist_to_load(const gchar * default_filename)
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
933 {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
934 gchar *filename =
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
935 playlist_file_selection(_("Load Playlist"), FALSE, default_filename);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
936
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
937 if (filename) {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
938 playlistwin_load_playlist(filename);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
939 g_free(filename);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
940 }
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
941 }
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
942
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
943 static void
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
944 playlistwin_select_playlist_to_save(const gchar * default_filename)
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
945 {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
946 gchar *filename =
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
947 playlist_file_selection(_("Save Playlist"), TRUE, default_filename);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
948
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
949 if (filename) {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
950 /* Default to M3U if no filename has extension */
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
951
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
952 /* NOTE: This doesn't work correctly for hidden files
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
953 - descender */
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
954 if (!strchr(filename, '.')) {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
955 gchar *tmpstr = filename;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
956 filename = g_strconcat(filename, ".m3u", NULL);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
957 g_free(tmpstr);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
958 }
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
959
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
960 playlistwin_save_playlist(filename);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
961 g_free(filename);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
962 }
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
963 }
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
964
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
965 static gboolean
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
966 inside_sensitive_widgets(gint x, gint y)
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
967 {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
968 return (widget_contains(WIDGET(playlistwin_list), x, y) ||
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
969 widget_contains(WIDGET(playlistwin_slider), x, y) ||
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
970 widget_contains(WIDGET(playlistwin_close), x, y) ||
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
971 widget_contains(WIDGET(playlistwin_shade), x, y) ||
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
972 widget_contains(WIDGET(playlistwin_time_min), x, y) ||
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
973 widget_contains(WIDGET(playlistwin_time_sec), x, y) ||
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
974 widget_contains(WIDGET(playlistwin_info), x, y) ||
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
975 widget_contains(WIDGET(playlistwin_srew), x, y) ||
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
976 widget_contains(WIDGET(playlistwin_splay), x, y) ||
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
977 widget_contains(WIDGET(playlistwin_spause), x, y) ||
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
978 widget_contains(WIDGET(playlistwin_sstop), x, y) ||
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
979 widget_contains(WIDGET(playlistwin_sfwd), x, y) ||
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
980 widget_contains(WIDGET(playlistwin_seject), x, y) ||
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
981 widget_contains(WIDGET(playlistwin_sscroll_up), x, y) ||
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
982 widget_contains(WIDGET(playlistwin_sscroll_down), x, y));
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
983 }
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
984
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
985 #define REGION_L(x1,x2,y1,y2) \
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
986 (event->x >= (x1) && event->x < (x2) && \
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
987 event->y >= cfg.playlist_height - (y1) && \
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
988 event->y < cfg.playlist_height - (y2))
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
989
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
990 #define REGION_R(x1,x2,y1,y2) \
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
991 (event->x >= playlistwin_get_width() - (x1) && \
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
992 event->x < playlistwin_get_width() - (x2) && \
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
993 event->y >= cfg.playlist_height - (y1) && \
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
994 event->y < cfg.playlist_height - (y2))
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
995
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
996 static void
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
997 playlistwin_scrolled(GtkWidget * widget,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
998 GdkEventScroll * event,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
999 gpointer callback_data)
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1000 {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1001
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1002 if (event->direction == GDK_SCROLL_DOWN)
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1003 playlistwin_scroll(cfg.scroll_pl_by);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1004
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1005 if (event->direction == GDK_SCROLL_UP)
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1006 playlistwin_scroll(-cfg.scroll_pl_by);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1007
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1008 }
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1009
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1010
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1011
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1012
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1013 static gboolean
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1014 playlistwin_press(GtkWidget * widget,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1015 GdkEventButton * event,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1016 gpointer callback_data)
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1017 {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1018 gboolean grab = TRUE;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1019 gint xpos, ypos;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1020 GtkWidget *_menu;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1021 GtkRequisition req;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1022
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1023 gtk_window_get_position(GTK_WINDOW(playlistwin), &xpos, &ypos);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1024
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1025 if (event->button == 1 && !cfg.show_wm_decorations &&
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1026 ((!cfg.playlist_shaded &&
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1027 event->x > playlistwin_get_width() - 20 &&
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1028 event->y > cfg.playlist_height - 20) ||
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1029 (cfg.playlist_shaded &&
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1030 event->x >= playlistwin_get_width() - 31 &&
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1031 event->x < playlistwin_get_width() - 22))) {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1032
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1033 /* NOTE: Workaround for bug #214 */
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1034 if (event->type != GDK_2BUTTON_PRESS &&
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1035 event->type != GDK_3BUTTON_PRESS) {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1036 /* resize area */
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1037 playlistwin_resizing = TRUE;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1038 gtk_window_begin_resize_drag(GTK_WINDOW(widget),
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1039 GDK_WINDOW_EDGE_SOUTH_EAST,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1040 event->button,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1041 event->x + xpos, event->y + ypos,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1042 event->time);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1043 }
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1044 grab = FALSE;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1045 }
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1046 else if (event->button == 1 && REGION_L(12, 37, 29, 11)) {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1047 /* ADD button menu */
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1048
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1049 _menu = GTK_WIDGET(pladd_menu->widget);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1050 if (!GTK_WIDGET_REALIZED(_menu)) gtk_widget_realize(_menu);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1051 gtk_widget_size_request(_menu, &req);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1052 gtk_item_factory_popup_with_data(pladd_menu,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1053 NULL, NULL,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1054 xpos+12,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1055 (ypos + playlistwin_get_height()) - 8 - req.height, 1, event->time);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1056 grab = FALSE;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1057 }
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1058 else if (event->button == 1 && REGION_L(41, 66, 29, 11)) {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1059 /* SUB button menu */
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1060 _menu = GTK_WIDGET(pldel_menu->widget);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1061 if (!GTK_WIDGET_REALIZED(_menu)) gtk_widget_realize(_menu);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1062 gtk_widget_size_request(_menu, &req);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1063 gtk_item_factory_popup_with_data(pldel_menu,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1064 NULL, NULL,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1065 xpos+40,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1066 (ypos + playlistwin_get_height()) - 8 - req.height, 1, event->time);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1067 grab = FALSE;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1068 }
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1069 else if (event->button == 1 && REGION_L(70, 95, 29, 11)) {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1070 /* SEL button menu */
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1071 _menu = GTK_WIDGET(plsel_menu->widget);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1072 if (!GTK_WIDGET_REALIZED(_menu)) gtk_widget_realize(_menu);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1073 gtk_widget_size_request(_menu, &req);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1074 gtk_item_factory_popup_with_data(plsel_menu,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1075 NULL, NULL,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1076 xpos+68,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1077 (ypos + playlistwin_get_height()) - 8 - req.height, 1, event->time);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1078
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1079 grab = FALSE;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1080 }
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1081 else if (event->button == 1 && REGION_L(99, 124, 29, 11)) {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1082 /* MISC button menu */
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1083 _menu = GTK_WIDGET(plsort_menu->widget);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1084 if (!GTK_WIDGET_REALIZED(_menu)) gtk_widget_realize(_menu);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1085 gtk_widget_size_request(_menu, &req);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1086 gtk_item_factory_popup_with_data(plsort_menu,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1087 NULL, NULL,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1088 xpos+100,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1089 (ypos + playlistwin_get_height()) - 8 - req.height, 1, event->time);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1090 grab = FALSE;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1091 }
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1092 else if (event->button == 1 && REGION_R(46, 23, 29, 11)) {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1093 /* LIST button menu */
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1094 _menu = GTK_WIDGET(pllist_menu->widget);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1095 if (!GTK_WIDGET_REALIZED(_menu)) gtk_widget_realize(_menu);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1096 gtk_widget_size_request(_menu, &req);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1097 gtk_item_factory_popup_with_data(pllist_menu,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1098 NULL, NULL,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1099 xpos + playlistwin_get_width() - req.width - 12,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1100 (ypos + playlistwin_get_height()) - 8 - req.height, 1, event->time);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1101 grab = FALSE;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1102 }
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1103 else if (event->button == 1 && REGION_R(82, 54, 15, 9)) {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1104 if (cfg.timer_mode == TIMER_ELAPSED)
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1105 cfg.timer_mode = TIMER_REMAINING;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1106 else
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1107 cfg.timer_mode = TIMER_ELAPSED;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1108 }
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1109 else if (event->button == 2 && (event->type == GDK_BUTTON_PRESS) &&
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1110 widget_contains(WIDGET(playlistwin_list), event->x, event->y)) {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1111 gtk_selection_convert(widget, GDK_SELECTION_PRIMARY,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1112 GDK_TARGET_STRING, event->time);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1113 }
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1114 else if (event->button == 1 && event->type == GDK_BUTTON_PRESS &&
1045
238cd31c1512 [svn] - make playlist moveable again
nenolod
parents: 1042
diff changeset
1115 !inside_sensitive_widgets(event->x, event->y) && event->y < 14)
238cd31c1512 [svn] - make playlist moveable again
nenolod
parents: 1042
diff changeset
1116 {
238cd31c1512 [svn] - make playlist moveable again
nenolod
parents: 1042
diff changeset
1117 gint mx, my;
238cd31c1512 [svn] - make playlist moveable again
nenolod
parents: 1042
diff changeset
1118
238cd31c1512 [svn] - make playlist moveable again
nenolod
parents: 1042
diff changeset
1119 gdk_window_get_pointer(GDK_WINDOW(playlistwin->window), &mx, &my, NULL);
238cd31c1512 [svn] - make playlist moveable again
nenolod
parents: 1042
diff changeset
1120
238cd31c1512 [svn] - make playlist moveable again
nenolod
parents: 1042
diff changeset
1121 gtk_object_set_data(GTK_OBJECT(playlistwin), "offset_x", GINT_TO_POINTER(mx));
238cd31c1512 [svn] - make playlist moveable again
nenolod
parents: 1042
diff changeset
1122 gtk_object_set_data(GTK_OBJECT(playlistwin), "offset_y", GINT_TO_POINTER(my));
238cd31c1512 [svn] - make playlist moveable again
nenolod
parents: 1042
diff changeset
1123
238cd31c1512 [svn] - make playlist moveable again
nenolod
parents: 1042
diff changeset
1124 gtk_object_set_data(GTK_OBJECT(playlistwin), "is_moving", GINT_TO_POINTER(1));
238cd31c1512 [svn] - make playlist moveable again
nenolod
parents: 1042
diff changeset
1125 gtk_window_present(GTK_WINDOW(playlistwin));
0
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1126 }
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1127 else if (event->button == 1 && event->type == GDK_2BUTTON_PRESS &&
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1128 !inside_sensitive_widgets(event->x, event->y)
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1129 && event->y < 14) {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1130 /* double click on title bar */
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1131 playlistwin_shade_toggle();
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1132 return TRUE;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1133 }
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1134 else if (event->button == 3 &&
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1135 !(widget_contains(WIDGET(playlistwin_list), event->x, event->y) ||
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1136 (event->y >= cfg.playlist_height - 29 &&
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1137 event->y < cfg.playlist_height - 11 &&
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1138 ((event->x >= 12 && event->x < 37) ||
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1139 (event->x >= 41 && event->x < 66) ||
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1140 (event->x >= 70 && event->x < 95) ||
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1141 (event->x >= 99 && event->x < 124) ||
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1142 (event->x >= playlistwin_get_width() - 46 &&
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1143 event->x < playlistwin_get_width() - 23))))) {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1144 /*
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1145 * Pop up the main menu a few pixels down to avoid
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1146 * anything to be selected initially.
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1147 */
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1148 util_item_factory_popup(mainwin_general_menu, event->x_root,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1149 event->y_root + 2, 3, event->time);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1150 grab = FALSE;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1151 }
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1152 else if (event->button == 3 &&
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1153 widget_contains(WIDGET(playlistwin_list), event->x, event->y)) {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1154 /* popup menu */
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1155 playlistwin_set_sensitive_sortmenu();
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1156 gtk_item_factory_popup(playlistwin_popup_menu,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1157 event->x_root, event->y_root + 5,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1158 3, event->time);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1159 grab = FALSE;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1160 }
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1161 else {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1162 handle_press_cb(playlistwin_wlist, widget, event);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1163 draw_playlist_window(FALSE);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1164 }
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1165
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1166 if (grab)
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1167 gdk_pointer_grab(playlistwin->window, FALSE,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1168 GDK_BUTTON_MOTION_MASK | GDK_BUTTON_RELEASE_MASK |
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1169 GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK |
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1170 GDK_BUTTON1_MOTION_MASK, NULL, NULL,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1171 GDK_CURRENT_TIME);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1172
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1173 return FALSE;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1174 }
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1175
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1176 static gboolean
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1177 playlistwin_focus_in(GtkWidget * widget, GdkEvent * event, gpointer data)
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1178 {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1179 playlistwin_close->pb_allow_draw = TRUE;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1180 playlistwin_shade->pb_allow_draw = TRUE;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1181 draw_playlist_window(TRUE);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1182 return FALSE;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1183 }
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1184
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1185 static gboolean
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1186 playlistwin_focus_out(GtkWidget * widget,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1187 GdkEventButton * event, gpointer data)
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1188 {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1189 playlistwin_close->pb_allow_draw = FALSE;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1190 playlistwin_shade->pb_allow_draw = FALSE;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1191 draw_playlist_window(TRUE);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1192 return FALSE;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1193 }
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1194
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1195 static gboolean
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1196 playlistwin_configure(GtkWidget * window,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1197 GdkEventConfigure * event, gpointer data)
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1198 {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1199 if (!GTK_WIDGET_VISIBLE(window))
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1200 return FALSE;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1201
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1202 cfg.playlist_x = event->x;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1203 cfg.playlist_y = event->y;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1204
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1205 if (playlistwin_resizing) {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1206 if (event->width != playlistwin_get_width() ||
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1207 event->height != playlistwin_get_height())
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1208 playlistwin_resize(event->width, event->height);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1209 }
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1210 return TRUE;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1211 }
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1212
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1213 void
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1214 playlistwin_set_back_pixmap(void)
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1215 {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1216 gdk_window_set_back_pixmap(playlistwin->window, playlistwin_bg, 0);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1217 gdk_window_clear(playlistwin->window);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1218 }
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1219
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1220 static gboolean
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1221 playlistwin_delete(GtkWidget * w, gpointer data)
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1222 {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1223 playlistwin_hide();
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1224 return TRUE;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1225 }
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1226
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1227 static void
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1228 playlistwin_keypress_up_down_handler(PlayList_List * pl,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1229 gboolean up, guint state)
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1230 {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1231 if ((state & GDK_MOD1_MASK) && (state & GDK_SHIFT_MASK))
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1232 return;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1233 if (!(state & GDK_MOD1_MASK))
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1234 playlist_select_all(FALSE);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1235
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1236 if (pl->pl_prev_selected == -1 ||
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1237 (!playlistwin_item_visible(pl->pl_prev_selected) &&
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1238 !(state & GDK_SHIFT_MASK && pl->pl_prev_min != -1))) {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1239 pl->pl_prev_selected = pl->pl_first;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1240 }
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1241 else if (state & GDK_SHIFT_MASK) {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1242 if (pl->pl_prev_min == -1) {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1243 pl->pl_prev_max = pl->pl_prev_selected;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1244 pl->pl_prev_min = pl->pl_prev_selected;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1245 }
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1246 pl->pl_prev_max += (up ? -1 : 1);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1247 pl->pl_prev_max =
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1248 CLAMP(pl->pl_prev_max, 0, playlist_get_length() - 1);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1249
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1250 pl->pl_first = MIN(pl->pl_first, pl->pl_prev_max);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1251 pl->pl_first = MAX(pl->pl_first, pl->pl_prev_max -
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1252 pl->pl_num_visible + 1);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1253 playlist_select_range(pl->pl_prev_min, pl->pl_prev_max, TRUE);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1254 return;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1255 }
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1256 else if (state & GDK_MOD1_MASK) {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1257 if (up)
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1258 playlist_list_move_up(pl);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1259 else
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1260 playlist_list_move_down(pl);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1261 if (pl->pl_prev_min < pl->pl_first)
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1262 pl->pl_first = pl->pl_prev_min;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1263 else if (pl->pl_prev_max >= (pl->pl_first + pl->pl_num_visible))
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1264 pl->pl_first = pl->pl_prev_max - pl->pl_num_visible + 1;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1265 return;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1266 }
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1267 else if (up)
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1268 pl->pl_prev_selected--;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1269 else
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1270 pl->pl_prev_selected++;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1271
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1272 pl->pl_prev_selected =
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1273 CLAMP(pl->pl_prev_selected, 0, playlist_get_length() - 1);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1274
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1275 if (pl->pl_prev_selected < pl->pl_first)
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1276 pl->pl_first--;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1277 else if (pl->pl_prev_selected >= (pl->pl_first + pl->pl_num_visible))
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1278 pl->pl_first++;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1279
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1280 playlist_select_range(pl->pl_prev_selected, pl->pl_prev_selected, TRUE);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1281 pl->pl_prev_min = -1;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1282
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1283 }
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1284
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1285 /* FIXME: Handle the keys through menu */
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1286
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1287 static gboolean
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1288 playlistwin_keypress(GtkWidget * w, GdkEventKey * event, gpointer data)
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1289 {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1290 guint keyval;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1291 gboolean refresh = FALSE;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1292
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1293 if (cfg.playlist_shaded)
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1294 return FALSE;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1295
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1296 switch (keyval = event->keyval) {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1297 case GDK_KP_Up:
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1298 case GDK_KP_Down:
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1299 case GDK_Up:
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1300 case GDK_Down:
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1301 playlistwin_keypress_up_down_handler(playlistwin_list,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1302 keyval == GDK_Up
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1303 || keyval == GDK_KP_Up,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1304 event->state);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1305 refresh = TRUE;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1306 break;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1307 case GDK_Page_Up:
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1308 playlistwin_scroll(-playlistwin_list->pl_num_visible);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1309 refresh = TRUE;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1310 break;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1311 case GDK_Page_Down:
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1312 playlistwin_scroll(playlistwin_list->pl_num_visible);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1313 refresh = TRUE;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1314 break;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1315 case GDK_Home:
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1316 playlistwin_list->pl_first = 0;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1317 refresh = TRUE;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1318 break;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1319 case GDK_End:
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1320 playlistwin_list->pl_first =
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1321 playlist_get_length() - playlistwin_list->pl_num_visible;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1322 refresh = TRUE;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1323 break;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1324 case GDK_Return:
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1325 if (playlistwin_list->pl_prev_selected > -1
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1326 && playlistwin_item_visible(playlistwin_list->pl_prev_selected)) {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1327 playlist_set_position(playlistwin_list->pl_prev_selected);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1328 if (!bmp_playback_get_playing())
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1329 bmp_playback_initiate();
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1330 }
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1331 break;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1332 case GDK_3:
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1333 if (event->state & GDK_CONTROL_MASK)
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1334 playlistwin_fileinfo();
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1335 break;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1336 case GDK_Delete:
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1337 if (event->state & GDK_CONTROL_MASK)
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1338 playlist_delete(TRUE);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1339 else
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1340 playlist_delete(FALSE);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1341 break;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1342 case GDK_Insert:
331
ac6389064cf9 [svn] Remove Add Directory option as it is broken. Patch by laci, closes bug #377.
chainsaw
parents: 284
diff changeset
1343 if (event->state & GDK_MOD1_MASK)
0
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1344 mainwin_show_add_url_window();
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1345 else
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1346 playlistwin_show_filebrowser();
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1347 break;
226
f6ad670bb500 [svn] Make the left and right keys work when the playlist window has focus.
nenolod
parents: 224
diff changeset
1348 case GDK_Left:
f6ad670bb500 [svn] Make the left and right keys work when the playlist window has focus.
nenolod
parents: 224
diff changeset
1349 case GDK_KP_Left:
f6ad670bb500 [svn] Make the left and right keys work when the playlist window has focus.
nenolod
parents: 224
diff changeset
1350 case GDK_KP_7:
f6ad670bb500 [svn] Make the left and right keys work when the playlist window has focus.
nenolod
parents: 224
diff changeset
1351 if (playlist_get_current_length() != -1)
f6ad670bb500 [svn] Make the left and right keys work when the playlist window has focus.
nenolod
parents: 224
diff changeset
1352 bmp_playback_seek(CLAMP
436
29abdef30cc6 [svn] Ditto for playlist window.
nenolod
parents: 383
diff changeset
1353 (bmp_playback_get_time() - 1000, 0,
226
f6ad670bb500 [svn] Make the left and right keys work when the playlist window has focus.
nenolod
parents: 224
diff changeset
1354 playlist_get_current_length()) / 1000);
f6ad670bb500 [svn] Make the left and right keys work when the playlist window has focus.
nenolod
parents: 224
diff changeset
1355 break;
f6ad670bb500 [svn] Make the left and right keys work when the playlist window has focus.
nenolod
parents: 224
diff changeset
1356 case GDK_Right:
f6ad670bb500 [svn] Make the left and right keys work when the playlist window has focus.
nenolod
parents: 224
diff changeset
1357 case GDK_KP_Right:
f6ad670bb500 [svn] Make the left and right keys work when the playlist window has focus.
nenolod
parents: 224
diff changeset
1358 case GDK_KP_9:
f6ad670bb500 [svn] Make the left and right keys work when the playlist window has focus.
nenolod
parents: 224
diff changeset
1359 if (playlist_get_current_length() != -1)
f6ad670bb500 [svn] Make the left and right keys work when the playlist window has focus.
nenolod
parents: 224
diff changeset
1360 bmp_playback_seek(CLAMP
436
29abdef30cc6 [svn] Ditto for playlist window.
nenolod
parents: 383
diff changeset
1361 (bmp_playback_get_time() + 1000, 0,
226
f6ad670bb500 [svn] Make the left and right keys work when the playlist window has focus.
nenolod
parents: 224
diff changeset
1362 playlist_get_current_length()) / 1000);
f6ad670bb500 [svn] Make the left and right keys work when the playlist window has focus.
nenolod
parents: 224
diff changeset
1363 break;
f6ad670bb500 [svn] Make the left and right keys work when the playlist window has focus.
nenolod
parents: 224
diff changeset
1364
0
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1365 case GDK_Escape:
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1366 mainwin_minimize_cb();
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1367 break;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1368 default:
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1369 return FALSE;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1370 }
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1371
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1372 if (refresh)
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1373 playlistwin_update_list();
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1374
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1375 return TRUE;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1376 }
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1377
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1378 static void
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1379 playlistwin_draw_frame(void)
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1380 {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1381 gboolean focus =
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1382 gtk_window_has_toplevel_focus(GTK_WINDOW(playlistwin)) ||
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1383 !cfg.dim_titlebar;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1384
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1385 if (cfg.playlist_shaded) {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1386 skin_draw_playlistwin_shaded(bmp_active_skin,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1387 playlistwin_bg, playlistwin_gc,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1388 playlistwin_get_width(), focus);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1389 }
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1390 else {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1391 skin_draw_playlistwin_frame(bmp_active_skin,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1392 playlistwin_bg, playlistwin_gc,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1393 playlistwin_get_width(),
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1394 cfg.playlist_height, focus);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1395 }
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1396 }
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1397
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1398 void
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1399 draw_playlist_window(gboolean force)
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1400 {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1401 gboolean redraw;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1402 GList *wl;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1403 Widget *w;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1404
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1405 if (force)
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1406 playlistwin_draw_frame();
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1407
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1408 widget_list_lock(playlistwin_wlist);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1409 widget_list_draw(playlistwin_wlist, &redraw, force);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1410
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1411 if (redraw || force) {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1412 if (force) {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1413 gdk_window_clear(playlistwin->window);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1414 }
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1415 else {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1416 for (wl = playlistwin_wlist; wl; wl = g_list_next(wl)) {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1417 w = WIDGET(wl->data);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1418 if (w->redraw && w->visible) {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1419 gdk_window_clear_area(playlistwin->window, w->x, w->y,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1420 w->width, w->height);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1421 w->redraw = FALSE;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1422 }
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1423 }
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1424 }
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1425
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1426 gdk_flush();
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1427 }
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1428
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1429 widget_list_unlock(playlistwin_wlist);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1430 }
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1431
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1432
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1433 void
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1434 playlistwin_hide_timer(void)
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1435 {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1436 textbox_set_text(playlistwin_time_min, " ");
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1437 textbox_set_text(playlistwin_time_sec, " ");
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1438 }
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1439
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1440 void
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1441 playlistwin_set_time(gint time, gint length, TimerMode mode)
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1442 {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1443 gchar *text, sign;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1444
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1445 if (mode == TIMER_REMAINING && length != -1) {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1446 time = length - time;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1447 sign = '-';
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1448 }
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1449 else
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1450 sign = ' ';
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1451
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1452 time /= 1000;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1453
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1454 if (time < 0)
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1455 time = 0;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1456 if (time > 99 * 60)
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1457 time /= 60;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1458
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1459 text = g_strdup_printf("%c%-2.2d", sign, time / 60);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1460 textbox_set_text(playlistwin_time_min, text);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1461 g_free(text);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1462
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1463 text = g_strdup_printf("%-2.2d", time % 60);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1464 textbox_set_text(playlistwin_time_sec, text);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1465 g_free(text);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1466 }
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1467
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1468 static void
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1469 playlistwin_drag_motion(GtkWidget * widget,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1470 GdkDragContext * context,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1471 gint x, gint y,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1472 GtkSelectionData * selection_data,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1473 guint info, guint time, gpointer user_data)
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1474 {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1475 playlistwin_list->pl_drag_motion = TRUE;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1476 playlistwin_list->drag_motion_x = x;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1477 playlistwin_list->drag_motion_y = y;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1478 playlistwin_update_list();
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1479 playlistwin_hint_flag = TRUE;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1480 }
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1481
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1482 static void
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1483 playlistwin_drag_end(GtkWidget * widget,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1484 GdkDragContext * context, gpointer user_data)
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1485 {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1486 playlistwin_list->pl_drag_motion = FALSE;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1487 playlistwin_hint_flag = FALSE;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1488 playlistwin_update_list();
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1489 }
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1490
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1491 static void
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1492 playlistwin_drag_data_received(GtkWidget * widget,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1493 GdkDragContext * context,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1494 gint x, gint y,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1495 GtkSelectionData *
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1496 selection_data, guint info,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1497 guint time, gpointer user_data)
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1498 {
625
0a73d1faeb4e [svn] GCC 4.1 warning fixes by Diego 'Flameeyes' Petteno from Gentoo.
chainsaw
parents: 561
diff changeset
1499 gint pos;
0
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1500
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1501 g_return_if_fail(selection_data != NULL);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1502
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1503 if (!selection_data->data) {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1504 g_message("Received no DND data!");
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1505 return;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1506 }
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1507
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1508 if (widget_contains(WIDGET(playlistwin_list), x, y)) {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1509 pos = (y - WIDGET(playlistwin_list)->y) /
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1510 playlistwin_list->pl_fheight + playlistwin_list->pl_first;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1511
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1512 pos = MIN(pos, playlist_get_length());
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1513 playlist_ins_url((gchar *) selection_data->data, pos);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1514 }
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1515 else
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1516 playlist_add_url((gchar *) selection_data->data);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1517 }
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1518
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1519 static void
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1520 playlistwin_create_widgets(void)
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1521 {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1522 /* This function creates the custom widgets used by the playlist editor */
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1523
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1524 /* text box for displaying song title in shaded mode */
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1525 playlistwin_sinfo =
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1526 create_textbox(&playlistwin_wlist, playlistwin_bg, playlistwin_gc,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1527 4, 4, playlistwin_get_width() - 35, FALSE, SKIN_TEXT);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1528
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1529 if (!cfg.playlist_shaded)
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1530 widget_hide(WIDGET(playlistwin_sinfo));
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1531
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1532 /* shade/unshade window push button */
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1533 if (cfg.playlist_shaded)
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1534 playlistwin_shade =
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1535 create_pbutton(&playlistwin_wlist, playlistwin_bg,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1536 playlistwin_gc, playlistwin_get_width() - 21, 3,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1537 9, 9, 128, 45, 150, 42,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1538 playlistwin_shade_toggle, SKIN_PLEDIT);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1539 else
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1540 playlistwin_shade =
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1541 create_pbutton(&playlistwin_wlist, playlistwin_bg,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1542 playlistwin_gc, playlistwin_get_width() - 21, 3,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1543 9, 9, 157, 3, 62, 42, playlistwin_shade_toggle,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1544 SKIN_PLEDIT);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1545
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1546 playlistwin_shade->pb_allow_draw = FALSE;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1547
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1548 /* close window push button */
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1549 playlistwin_close =
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1550 create_pbutton(&playlistwin_wlist, playlistwin_bg, playlistwin_gc,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1551 playlistwin_get_width() - 11, 3, 9, 9,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1552 cfg.playlist_shaded ? 138 : 167,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1553 cfg.playlist_shaded ? 45 : 3, 52, 42,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1554 playlistwin_hide, SKIN_PLEDIT);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1555 playlistwin_close->pb_allow_draw = FALSE;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1556
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1557 /* playlist list box */
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1558 playlistwin_list =
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1559 create_playlist_list(&playlistwin_wlist, playlistwin_bg,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1560 playlistwin_gc, 12, 20,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1561 playlistwin_get_width() - 31,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1562 cfg.playlist_height - 58);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1563 playlist_list_set_font(cfg.playlist_font);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1564
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1565 /* playlist list box slider */
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1566 playlistwin_slider =
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1567 create_playlistslider(&playlistwin_wlist, playlistwin_bg,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1568 playlistwin_gc, playlistwin_get_width() - 15,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1569 20, cfg.playlist_height - 58, playlistwin_list);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1570 /* track time (minute) */
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1571 playlistwin_time_min =
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1572 create_textbox(&playlistwin_wlist, playlistwin_bg, playlistwin_gc,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1573 playlistwin_get_width() - 82,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1574 cfg.playlist_height - 15, 15, FALSE, SKIN_TEXT);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1575
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1576 /* track time (second) */
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1577 playlistwin_time_sec =
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1578 create_textbox(&playlistwin_wlist, playlistwin_bg, playlistwin_gc,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1579 playlistwin_get_width() - 64,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1580 cfg.playlist_height - 15, 10, FALSE, SKIN_TEXT);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1581
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1582 /* playlist information (current track length / total track length) */
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1583 playlistwin_info =
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1584 create_textbox(&playlistwin_wlist, playlistwin_bg, playlistwin_gc,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1585 playlistwin_get_width() - 143,
1040
f866da587845 [svn] mainwin.c:
nhjm449
parents: 1001
diff changeset
1586 cfg.playlist_height - 28, 90, FALSE, SKIN_TEXT);
0
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1587
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1588 /* mini play control buttons at right bottom corner */
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1589
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1590 /* rewind button */
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1591 playlistwin_srew =
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1592 create_sbutton(&playlistwin_wlist, playlistwin_bg, playlistwin_gc,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1593 playlistwin_get_width() - 144,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1594 cfg.playlist_height - 16, 8, 7, playlist_prev);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1595
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1596 /* play button */
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1597 playlistwin_splay =
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1598 create_sbutton(&playlistwin_wlist, playlistwin_bg, playlistwin_gc,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1599 playlistwin_get_width() - 138,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1600 cfg.playlist_height - 16, 10, 7, mainwin_play_pushed);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1601
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1602 /* pause button */
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1603 playlistwin_spause =
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1604 create_sbutton(&playlistwin_wlist, playlistwin_bg, playlistwin_gc,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1605 playlistwin_get_width() - 128,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1606 cfg.playlist_height - 16, 10, 7, bmp_playback_pause);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1607
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1608 /* stop button */
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1609 playlistwin_sstop =
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1610 create_sbutton(&playlistwin_wlist, playlistwin_bg, playlistwin_gc,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1611 playlistwin_get_width() - 118,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1612 cfg.playlist_height - 16, 9, 7, mainwin_stop_pushed);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1613
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1614 /* forward button */
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1615 playlistwin_sfwd =
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1616 create_sbutton(&playlistwin_wlist, playlistwin_bg, playlistwin_gc,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1617 playlistwin_get_width() - 109,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1618 cfg.playlist_height - 16, 8, 7, playlist_next);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1619
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1620 /* eject button */
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1621 playlistwin_seject =
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1622 create_sbutton(&playlistwin_wlist, playlistwin_bg, playlistwin_gc,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1623 playlistwin_get_width() - 100,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1624 cfg.playlist_height - 16, 9, 7, mainwin_eject_pushed);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1625
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1626
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1627 playlistwin_sscroll_up =
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1628 create_sbutton(&playlistwin_wlist, playlistwin_bg, playlistwin_gc,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1629 playlistwin_get_width() - 14,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1630 cfg.playlist_height - 35, 8, 5,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1631 playlistwin_scroll_up_pushed);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1632 playlistwin_sscroll_down =
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1633 create_sbutton(&playlistwin_wlist, playlistwin_bg, playlistwin_gc,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1634 playlistwin_get_width() - 14,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1635 cfg.playlist_height - 30, 8, 5,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1636 playlistwin_scroll_down_pushed);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1637
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1638 }
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1639
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1640 static void
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1641 selection_received(GtkWidget * widget,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1642 GtkSelectionData * selection_data, gpointer data)
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1643 {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1644 if (selection_data->type == GDK_SELECTION_TYPE_STRING &&
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1645 selection_data->length > 0)
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1646 playlist_add_url((gchar *) selection_data->data);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1647 }
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1648
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1649 static void
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1650 playlistwin_create_window(void)
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1651 {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1652 GdkPixbuf *icon;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1653
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1654 playlistwin = gtk_window_new(GTK_WINDOW_TOPLEVEL);
187
878f66ff13c6 [svn] Titling updates.
nenolod
parents: 120
diff changeset
1655 gtk_window_set_title(GTK_WINDOW(playlistwin), _("Audacious Playlist Editor"));
999
386cda529c28 [svn] Add wmclass information to the playlist and equalizer. Patch by cha0smaster, closes bug #481.
chainsaw
parents: 852
diff changeset
1656 gtk_window_set_wmclass(GTK_WINDOW(playlistwin), "playlist", "Audacious");
0
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1657 gtk_window_set_role(GTK_WINDOW(playlistwin), "playlist");
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1658 gtk_window_set_default_size(GTK_WINDOW(playlistwin),
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1659 playlistwin_get_width(),
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1660 playlistwin_get_height());
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1661 gtk_window_set_resizable(GTK_WINDOW(playlistwin), TRUE);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1662 playlistwin_set_geometry_hints(cfg.playlist_shaded);
1046
18ef6f3089d4 [svn] - gtk_window_set_decorated()
nenolod
parents: 1045
diff changeset
1663 gtk_window_set_decorated(GTK_WINDOW(playlistwin), cfg.show_wm_decorations);
0
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1664
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1665 gtk_window_set_transient_for(GTK_WINDOW(playlistwin),
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1666 GTK_WINDOW(mainwin));
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1667 gtk_window_set_skip_taskbar_hint(GTK_WINDOW(playlistwin), TRUE);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1668
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1669 icon = gdk_pixbuf_new_from_xpm_data((const gchar **) bmp_playlist_icon);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1670 gtk_window_set_icon(GTK_WINDOW(playlistwin), icon);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1671 g_object_unref(icon);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1672
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1673 gtk_widget_set_app_paintable(playlistwin, TRUE);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1674
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1675 if (cfg.playlist_x != -1 && cfg.save_window_position)
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1676 gtk_window_move(GTK_WINDOW(playlistwin),
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1677 cfg.playlist_x, cfg.playlist_y);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1678
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1679 gtk_widget_add_events(playlistwin,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1680 GDK_FOCUS_CHANGE_MASK | GDK_BUTTON_MOTION_MASK |
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1681 GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK |
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1682 GDK_SCROLL_MASK | GDK_VISIBILITY_NOTIFY_MASK);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1683 gtk_widget_realize(playlistwin);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1684
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1685 util_set_cursor(playlistwin);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1686
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1687 g_signal_connect(playlistwin, "delete_event",
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1688 G_CALLBACK(playlistwin_delete), NULL);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1689 g_signal_connect(playlistwin, "button_press_event",
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1690 G_CALLBACK(playlistwin_press), NULL);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1691 g_signal_connect(playlistwin, "button_release_event",
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1692 G_CALLBACK(playlistwin_release), NULL);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1693 g_signal_connect(playlistwin, "scroll_event",
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1694 G_CALLBACK(playlistwin_scrolled), NULL);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1695 g_signal_connect(playlistwin, "motion_notify_event",
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1696 G_CALLBACK(playlistwin_motion), NULL);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1697 g_signal_connect_after(playlistwin, "focus_in_event",
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1698 G_CALLBACK(playlistwin_focus_in), NULL);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1699 g_signal_connect_after(playlistwin, "focus_out_event",
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1700 G_CALLBACK(playlistwin_focus_out), NULL);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1701 g_signal_connect(playlistwin, "configure_event",
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1702 G_CALLBACK(playlistwin_configure), NULL);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1703 g_signal_connect(playlistwin, "style_set",
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1704 G_CALLBACK(playlistwin_set_back_pixmap), NULL);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1705
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1706 bmp_drag_dest_set(playlistwin);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1707
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1708 /* DnD stuff */
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1709 g_signal_connect(playlistwin, "drag-leave",
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1710 G_CALLBACK(playlistwin_drag_end), NULL);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1711 g_signal_connect(playlistwin, "drag-data-delete",
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1712 G_CALLBACK(playlistwin_drag_end), NULL);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1713 g_signal_connect(playlistwin, "drag-end",
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1714 G_CALLBACK(playlistwin_drag_end), NULL);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1715 g_signal_connect(playlistwin, "drag-drop",
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1716 G_CALLBACK(playlistwin_drag_end), NULL);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1717 g_signal_connect(playlistwin, "drag-data-received",
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1718 G_CALLBACK(playlistwin_drag_data_received), NULL);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1719 g_signal_connect(playlistwin, "drag-motion",
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1720 G_CALLBACK(playlistwin_drag_motion), NULL);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1721
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1722 g_signal_connect(playlistwin, "key_press_event",
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1723 G_CALLBACK(playlistwin_keypress), NULL);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1724 g_signal_connect(playlistwin, "selection_received",
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1725 G_CALLBACK(selection_received), NULL);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1726
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1727 playlistwin_set_mask();
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1728 }
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1729
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1730 void
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1731 playlistwin_create_popup_menus(void)
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1732 {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1733 playlistwin_accel = gtk_accel_group_new();
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1734
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1735 /* playlist window popup menu */
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1736 playlistwin_popup_menu = create_menu(playlistwin_popup_menu_entries,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1737 G_N_ELEMENTS(playlistwin_popup_menu_entries),
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1738 playlistwin_accel);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1739
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1740 pladd_menu = create_menu(pladd_menu_entries, G_N_ELEMENTS(pladd_menu_entries),
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1741 playlistwin_accel);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1742 pldel_menu = create_menu(pldel_menu_entries, G_N_ELEMENTS(pldel_menu_entries),
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1743 playlistwin_accel);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1744 plsel_menu = create_menu(plsel_menu_entries, G_N_ELEMENTS(plsel_menu_entries),
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1745 playlistwin_accel);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1746 plsort_menu = create_menu(plsort_menu_entries,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1747 G_N_ELEMENTS(plsort_menu_entries),
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1748 playlistwin_accel);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1749 pllist_menu = create_menu(pllist_menu_entries, G_N_ELEMENTS(pllist_menu_entries),
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1750 playlistwin_accel);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1751
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1752 #if 0
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1753 make_submenu(playlistwin_popup_menu, "/Playlist",
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1754 playlistwin_playlist_menu);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1755 make_submenu(playlistwin_popup_menu, "/Playback",
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1756 playlistwin_playback_menu);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1757 make_submenu(playlistwin_popup_menu, "/Add",
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1758 pladd_menu);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1759 #endif
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1760 }
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1761
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1762 void
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1763 playlistwin_create(void)
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1764 {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1765 playlistwin_create_window();
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1766 playlistwin_create_popup_menus();
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1767
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1768 /* create GC and back pixmap for custom widget to draw on */
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1769 playlistwin_gc = gdk_gc_new(playlistwin->window);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1770 playlistwin_bg = gdk_pixmap_new(playlistwin->window,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1771 playlistwin_get_width(),
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1772 playlistwin_get_height_unshaded(), -1);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1773 gdk_window_set_back_pixmap(playlistwin->window, playlistwin_bg, 0);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1774
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1775 playlistwin_create_widgets();
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1776 playlistwin_update_info();
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1777
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1778 gtk_window_add_accel_group(GTK_WINDOW(playlistwin), playlistwin_accel);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1779 gtk_window_add_accel_group(GTK_WINDOW(playlistwin), mainwin_accel);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1780 }
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1781
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1782
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1783 void
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1784 playlistwin_show(void)
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1785 {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1786 GtkWidget *item;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1787
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1788 item = gtk_item_factory_get_widget(mainwin_view_menu,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1789 "/Show Playlist Editor");
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1790 gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(item), TRUE);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1791
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1792 tbutton_set_toggled(mainwin_pl, TRUE);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1793 cfg.playlist_visible = TRUE;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1794
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1795 playlistwin_set_toprow(0);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1796 playlist_check_pos_current();
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1797
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1798 gtk_widget_show(playlistwin);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1799 }
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1800
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1801 void
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1802 playlistwin_hide(void)
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1803 {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1804 GtkWidget *item;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1805
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1806 item = gtk_item_factory_get_widget(mainwin_view_menu,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1807 "/Show Playlist Editor");
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1808 gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(item), FALSE);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1809
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1810 gtk_widget_hide(playlistwin);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1811 tbutton_set_toggled(mainwin_pl, FALSE);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1812 cfg.playlist_visible = FALSE;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1813
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1814 gtk_window_present(GTK_WINDOW(mainwin));
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1815 gtk_widget_grab_focus(mainwin);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1816 }
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1817
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1818
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1819 static void
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1820 plsort_menu_callback(gpointer data,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1821 guint action,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1822 GtkWidget * widget)
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1823 {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1824 switch (action) {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1825 case PLAYLISTWIN_SORT_BYTITLE:
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1826 playlist_sort(PLAYLIST_SORT_TITLE);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1827 playlistwin_update_list();
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1828 break;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1829 case PLAYLISTWIN_SORT_BYPATH:
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1830 playlist_sort(PLAYLIST_SORT_PATH);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1831 playlistwin_update_list();
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1832 break;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1833 case PLAYLISTWIN_SORT_BYDATE:
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1834 playlist_sort(PLAYLIST_SORT_DATE);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1835 playlistwin_update_list();
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1836 break;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1837 case PLAYLISTWIN_SORT_BYFILENAME:
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1838 playlist_sort(PLAYLIST_SORT_FILENAME);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1839 playlistwin_update_list();
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1840 break;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1841 case PLAYLISTWIN_SORT_SEL_BYTITLE:
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1842 playlist_sort_selected(PLAYLIST_SORT_TITLE);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1843 playlistwin_update_list();
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1844 break;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1845 case PLAYLISTWIN_SORT_SEL_BYFILENAME:
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1846 playlist_sort_selected(PLAYLIST_SORT_FILENAME);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1847 playlistwin_update_list();
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1848 break;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1849 case PLAYLISTWIN_SORT_SEL_BYPATH:
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1850 playlist_sort_selected(PLAYLIST_SORT_PATH);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1851 playlistwin_update_list();
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1852 break;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1853 case PLAYLISTWIN_SORT_SEL_BYDATE:
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1854 playlist_sort_selected(PLAYLIST_SORT_DATE);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1855 playlistwin_update_list();
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1856 break;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1857 case PLAYLISTWIN_SORT_REVERSE:
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1858 playlist_reverse();
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1859 playlistwin_update_list();
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1860 break;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1861 case PLAYLISTWIN_SORT_RANDOMIZE:
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1862 playlist_random();
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1863 playlistwin_update_list();
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1864 break;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1865 }
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1866 }
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1867
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1868 static void
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1869 playlistwin_sub_menu_callback(gpointer data,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1870 guint action,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1871 GtkWidget * widget)
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1872 {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1873 switch (action) {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1874 case PLIST_NEW:
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1875 playlist_set_current_name(NULL);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1876 playlist_clear();
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1877 mainwin_clear_song_info();
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1878 mainwin_set_info_text();
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1879 break;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1880 case PLIST_SAVE:
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1881 playlistwin_select_playlist_to_save(playlist_get_current_name());
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1882 break;
1062
b727849e2128 [svn] - Add the ability to easily save to playlist.m3u from the list menu. (For
nhjm449
parents: 1047
diff changeset
1883 case PLIST_DEFAULTSAVE:
b727849e2128 [svn] - Add the ability to easily save to playlist.m3u from the list menu. (For
nhjm449
parents: 1047
diff changeset
1884 playlist_save(bmp_paths[BMP_PATH_PLAYLIST_FILE], FALSE);
b727849e2128 [svn] - Add the ability to easily save to playlist.m3u from the list menu. (For
nhjm449
parents: 1047
diff changeset
1885 break;
0
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1886 case PLIST_SAVE_AS:
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1887 playlistwin_select_playlist_to_save(playlist_get_current_name());
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1888 break;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1889 case PLIST_LOAD:
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1890 playlistwin_select_playlist_to_load(playlist_get_current_name());
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1891 break;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1892 case SEL_INV:
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1893 playlistwin_inverse_selection();
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1894 break;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1895 case SEL_ZERO:
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1896 playlistwin_select_none();
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1897 break;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1898 case SEL_ALL:
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1899 playlistwin_select_all();
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1900 break;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1901 case SUB_ALL:
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1902 playlist_clear();
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1903 mainwin_clear_song_info();
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1904 mainwin_set_info_text();
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1905 break;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1906 case SUB_CROP:
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1907 playlist_delete(TRUE);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1908 break;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1909 case SUB_SELECTED:
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1910 playlist_delete(FALSE);
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1911 break;
852
bcff46a2558d [svn] added multiple 'remove duplicates' (by title, by filename, by path+filename)
giacomo
parents: 846
diff changeset
1912 case SUB_DUPLICATE_BYTITLE:
bcff46a2558d [svn] added multiple 'remove duplicates' (by title, by filename, by path+filename)
giacomo
parents: 846
diff changeset
1913 playlist_remove_duplicates(PLAYLIST_DUPS_TITLE);
bcff46a2558d [svn] added multiple 'remove duplicates' (by title, by filename, by path+filename)
giacomo
parents: 846
diff changeset
1914 break;
bcff46a2558d [svn] added multiple 'remove duplicates' (by title, by filename, by path+filename)
giacomo
parents: 846
diff changeset
1915 case SUB_DUPLICATE_BYFILENAME:
bcff46a2558d [svn] added multiple 'remove duplicates' (by title, by filename, by path+filename)
giacomo
parents: 846
diff changeset
1916 playlist_remove_duplicates(PLAYLIST_DUPS_FILENAME);
bcff46a2558d [svn] added multiple 'remove duplicates' (by title, by filename, by path+filename)
giacomo
parents: 846
diff changeset
1917 break;
bcff46a2558d [svn] added multiple 'remove duplicates' (by title, by filename, by path+filename)
giacomo
parents: 846
diff changeset
1918 case SUB_DUPLICATE_BYPATH:
bcff46a2558d [svn] added multiple 'remove duplicates' (by title, by filename, by path+filename)
giacomo
parents: 846
diff changeset
1919 playlist_remove_duplicates(PLAYLIST_DUPS_PATH);
840
ffc5ab7b4b2c [svn] added a 'remove duplicates' option to the playlist removal menu
giacomo
parents: 625
diff changeset
1920 break;
0
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1921 case PLAYLISTWIN_REMOVE_DEAD_FILES:
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1922 playlist_remove_dead_files();
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1923 break;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1924 case PLAYLISTWIN_REFRESH:
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1925 playlist_read_info_selection();
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1926 playlistwin_update_list();
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1927 break;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1928 }
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1929 }
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1930
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1931 static void
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1932 playlistwin_popup_menu_callback(gpointer data,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1933 guint action,
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1934 GtkWidget * widget)
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1935 {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1936 switch (action) {
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1937 case ADD_FILES:
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1938 playlistwin_show_filebrowser();
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1939 break;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1940 case CLOSE_PL_WINDOW:
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1941 playlistwin_hide();
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1942 break;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1943 case MISC_FILEINFO:
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1944 playlistwin_fileinfo();
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1945 break;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1946 case SEL_LOOKUP:
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1947 playlist_read_info_selection();
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1948 break;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1949 case MISC_QUEUE:
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1950 playlist_queue();
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1951 break;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1952 case PLIST_CQUEUE:
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1953 playlist_clear_queue();
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1954 break;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1955 case PLIST_JTT:
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1956 mainwin_jump_to_time();
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1957 break;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1958 case PLIST_JTF:
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1959 mainwin_jump_to_file();
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1960 break;
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1961 }
cb178e5ad177 [svn] Import audacious source.
nenolod
parents:
diff changeset
1962 }