You can subscribe to this list here.
2003 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
(52) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2004 |
Jan
(315) |
Feb
(50) |
Mar
(36) |
Apr
(200) |
May
(65) |
Jun
(100) |
Jul
(110) |
Aug
(115) |
Sep
(52) |
Oct
(20) |
Nov
(27) |
Dec
(42) |
2005 |
Jan
(19) |
Feb
(11) |
Mar
(58) |
Apr
(3) |
May
(10) |
Jun
(38) |
Jul
(44) |
Aug
(106) |
Sep
(36) |
Oct
(35) |
Nov
|
Dec
|
From: <ms...@us...> - 2004-01-06 17:09:22
|
Update of /cvsroot/beepmp/bmp/libbeep In directory sc8-pr-cvs1:/tmp/cvs-serv13691 Modified Files: Makefile.am Log Message: Changed beepincluddir to bmp/. Index: Makefile.am =================================================================== RCS file: /cvsroot/beepmp/bmp/libbeep/Makefile.am,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** Makefile.am 1 Dec 2003 09:02:36 -0000 1.2 --- Makefile.am 6 Jan 2004 17:09:19 -0000 1.3 *************** *** 2,6 **** AUTOMAKE_OPTIONS = foreign ! beepincludedir = $(includedir)/beep lib_LTLIBRARIES = libbeep.la --- 2,6 ---- AUTOMAKE_OPTIONS = foreign ! beepincludedir = $(includedir)/bmp lib_LTLIBRARIES = libbeep.la |
From: <mde...@us...> - 2004-01-04 23:50:28
|
Update of /cvsroot/beepmp/bmp/beep In directory sc8-pr-cvs1:/tmp/cvs-serv17440 Modified Files: dirbrowser.c playlist_list.c Log Message: playlist_list.c: rendering changes dirbrowser.c: removed debug g_message() Index: dirbrowser.c =================================================================== RCS file: /cvsroot/beepmp/bmp/beep/dirbrowser.c,v retrieving revision 1.45 retrieving revision 1.46 diff -C2 -d -r1.45 -r1.46 *** dirbrowser.c 4 Jan 2004 13:53:30 -0000 1.45 --- dirbrowser.c 4 Jan 2004 23:50:23 -0000 1.46 *************** *** 1264,1269 **** gtk_tree_model_get(model, b, 3, &cmp_b, -1); ! g_message("%s [::] %s", cmp_a, cmp_b); ! /* FIXME: Is this here right? */ if (cmp_a) { --- 1264,1268 ---- gtk_tree_model_get(model, b, 3, &cmp_b, -1); ! /* FIXME: Is this here right? */ if (cmp_a) { Index: playlist_list.c =================================================================== RCS file: /cvsroot/beepmp/bmp/beep/playlist_list.c,v retrieving revision 1.22 retrieving revision 1.23 diff -C2 -d -r1.22 -r1.23 *** playlist_list.c 31 Dec 2003 11:41:45 -0000 1.22 --- playlist_list.c 4 Jan 2004 23:50:23 -0000 1.23 *************** *** 307,327 **** pango_layout_set_width(layout, plist_length_int * 100); ! if (ppos == 1) { ! pango_layout_set_alignment(layout, PANGO_ALIGN_LEFT); ! gdk_draw_layout(pl->pl_widget.parent, pl->pl_widget.gc, ! pl->pl_widget.x + (width_delta_digit_one/2) + (width_approx_digits * ! (-1 + plist_length_int - strlen(pos_string))), pl->pl_widget.y + (line - 1) * pl->pl_fheight + ! ascent + abs(descent), layout); } else { pango_layout_set_alignment(layout, PANGO_ALIGN_LEFT); ! gdk_draw_layout(pl->pl_widget.parent, pl->pl_widget.gc, pl->pl_widget.x + (width_approx_digits * ! (-1 + plist_length_int - strlen(pos_string))), pl->pl_widget.y + (line - 1) * pl->pl_fheight + ascent + abs(descent), layout); ! } g_free(pos_string); g_object_unref(layout); --- 307,328 ---- pango_layout_set_width(layout, plist_length_int * 100); ! if (ppos <10) { ! pango_layout_set_alignment(layout, PANGO_ALIGN_CENTER); ! /* gdk_draw_layout(pl->pl_widget.parent, pl->pl_widget.gc, ! pl->pl_widget.x + (width_delta_digit_one/3) + (width_approx_digits * ! (-1 + plist_length_int - strlen(pos_string))) + (width_approx_digits/4), pl->pl_widget.y + (line - 1) * pl->pl_fheight + ! ascent + abs(descent), layout); */ } else { pango_layout_set_alignment(layout, PANGO_ALIGN_LEFT); ! } ! gdk_draw_layout(pl->pl_widget.parent, pl->pl_widget.gc, pl->pl_widget.x + (width_approx_digits * ! (-1 + plist_length_int - strlen(pos_string))) + (width_approx_digits/4), pl->pl_widget.y + (line - 1) * pl->pl_fheight + ascent + abs(descent), layout); ! /* } */ g_free(pos_string); g_object_unref(layout); |
From: <mde...@us...> - 2004-01-04 13:53:34
|
Update of /cvsroot/beepmp/bmp/beep In directory sc8-pr-cvs1:/tmp/cvs-serv899 Modified Files: beep_logo.xpm dirbrowser.c Log Message: beep_logo.xpm: Updated "about" logo dirbrowser.c: memleak fixes Index: beep_logo.xpm =================================================================== RCS file: /cvsroot/beepmp/bmp/beep/beep_logo.xpm,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** beep_logo.xpm 24 Dec 2003 03:19:58 -0000 1.2 --- beep_logo.xpm 4 Jan 2004 13:53:30 -0000 1.3 *************** *** 172,260 **** ". . . . . . . . . . . . . . . . . . . . . . . . + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # ", ". . . . . . . . . . . . . . . . . . . . . . . . + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # ", ! ". . . . . . . . . . . . . . . . . . . . . . . . + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # $ $ $ $ $ $ $ $ $ $ % # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # ", ! ". . . . . . . . . . . . . . . . . . . . . . . . + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # $ $ $ $ $ $ $ $ $ $ % # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # ", ! ". . . . . . . . . . . . . . . . . . . . . . . . + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # $ $ $ $ $ $ $ $ $ $ % # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # ", ! ". . . . . . . . . . . . . . . . . . . . . . . . + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # $ $ $ $ $ $ $ $ $ $ % # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # ", ! ". . . . . . . . . . . . . . . . . . . . . . . . + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # $ $ $ $ $ $ $ $ $ $ % # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # ", ! ". . . . . . . . . . . . . . . . . . . . . . . . + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # $ $ $ $ $ $ $ $ $ $ % # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # ", ! ". . . . . . . . . . . . . . . . . . . . . . . . + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # $ $ $ $ $ $ $ $ $ $ % # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # ", ! ". . . . . . . . . . . . . . . . . . . . . . . . + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # $ $ $ $ $ $ $ $ $ $ % # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # ", ! ". . . . . . . . . . . . . . . . . . . . . . . . + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # $ $ $ $ $ $ $ $ $ $ % # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # ", ! ". . . . . . . . . . . . . . . . . . . . . . . . + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # $ $ $ $ $ $ $ $ $ $ % # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # ", ! ". . . . . . . . . . . . . . . . . . . . . . . . + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # $ $ $ $ $ $ $ $ $ $ % # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # ", ! ". . . . . . . . . . . . . . . . . . . . . . . . + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # $ $ $ $ $ $ $ $ $ $ % # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # ", ! ". . . . . . . . . . . . . . . . . . . . . . . . + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # $ $ $ $ $ $ $ $ $ $ % # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # ", ! ". . . . . . . . . . . . . . . . . . . . . . . . + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # $ $ $ $ $ $ $ $ $ $ % # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # ", ! ". . . . . . . . . . . . . . . . . . . . . . . . + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # $ $ $ $ $ $ $ $ $ $ % # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # ", ! ". . . . . . . . . . . . . . . . . . . . . . . . + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # $ $ $ $ $ $ $ $ $ $ % # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # ", ! ". . . . . . . . . . . . . . . . . . . . . . . . + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # $ $ $ $ $ $ $ $ $ $ % # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # ", ! ". . . . . . . . . . . . . . . . . . . . . . . . + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # $ $ $ $ $ $ $ $ $ $ % # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # ", ! ". . . . . . . . . . . . . . . . . . . . . . . . + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # $ $ $ $ $ $ $ $ $ $ & * * * * * * * * * * * * * * * * * * * * * * * * * * + = # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # ", ! ". . . . . . . . . . . . . . . . . . . . . . . . + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ - ; # # # # # # # # # # # # # # # # # # # # # # # # # # # # # > $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ , # # # # # # # # # # # # # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ ' ) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # ", ! ". . . . . . . . . . . . . . . . . . . . . . . . + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ ! ~ # # # # # # # # # # # # # # # # # # # # # # # # # # # { $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ ] # # # # # # # # # # # # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ ^ / # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # ", ! ". . . . . . . . . . . . . . . . . . . . . . . . + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ ( _ # # # # # # # # # # # # # # # # # # # # # # # # # : $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ < # # # # # # # # # # # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ [ } # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # ", ! ". . . . . . . . . . . . . . . . . . . . . . . . + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ | 1 # # # # # # # # # # # # # # # # # # # # # # # 2 $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ { # # # # # # # # # # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ 3 4 # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # ", ! ". . . . . . . . . . . . . . . . . . . . . . . . + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ 5 6 # # # # # # # # # # # # # # # # # # # # # 7 $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ * # # # # # # # # # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ 8 9 # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # ", ! ". . . . . . . . . . . . . . . . . . . . . . . . + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ 0 a # # # # # # # # # # # # # # # # # # # b $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ c # # # # # # # # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ d # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # ", ! ". . . . . . . . . . . . . . . . . . . . . . . . + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ e f # # # # # # # # # # # # # # # # # g $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ h # # # # # # # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ i # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # ", ! ". . . . . . . . . . . . . . . . . . . . . . . . + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ j k # # # # # # # # # # # # # # l m $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ g # # # # # # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ > # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # ", ! ". . . . . . . . . . . . . . . . . . . . . . . . + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ n o # # # # # # # # # # # # p q $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ r l # # # # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ s # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # ", ! ". . . . . . . . . . . . . . . . . . . . . . . . + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ t # # # # # # # # # # # # u $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ v # # # # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ : # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # ", ! ". . . . . . . . . . . . . . . . . . . . . . . . + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ % # # # # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ # # # # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ % # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # ", ! ". . . . . . . . . . . . . . . . . . . . . . . . + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ % # # # # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ & * * * * * * * * * $ $ $ $ $ $ $ $ $ $ $ & * * * * * * * * & $ $ $ $ $ $ $ $ $ $ $ # # # # # # # # # # # # * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * $ $ $ $ $ $ $ $ $ $ $ % # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # ", ! ". . . . . . . . . . . . . . . . . . . . . . . . + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ % # # # # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ % # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ % # # # # # # # # % $ $ $ $ $ $ $ $ $ $ $ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ % # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # ", ! ". . . . . . . . . . . . . . . . . . . . . . . . + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ % # # # # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ % # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ % # # # # # # # # % $ $ $ $ $ $ $ $ $ $ $ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ % # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # ", ! ". . . . . . . . . . . . . . . . . . . . . . . . + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ % # # # # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ % # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ % # # # # # # # # % $ $ $ $ $ $ $ $ $ $ $ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ % # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # ", ! ". . . . . . . . . . . . . . . . . . . . . . . . + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ % # # # # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ % # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ % # # # # # # # # % $ $ $ $ $ $ $ $ $ $ $ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ % # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # ", ! ". . . . . . . . . . . . . . . . . . . . . . . . + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ % # # # # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ % # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ % # # # # # # # # % $ $ $ $ $ $ $ $ $ $ $ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ % # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # ", ! ". . . . . . . . . . . . . . . . . . . . . . . . + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ % # # # # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ % # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ % # # # # # # # # % $ $ $ $ $ $ $ $ $ $ $ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ % # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # ", ! ". . . . . . . . . . . . . . . . . . . . . . . . + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ % # # # # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ % # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ % # # # # # # # # % $ $ $ $ $ $ $ $ $ $ $ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ % # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # ", ! ". . . . . . . . . . . . . . . . . . . . . . . . + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ % # # # # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ % # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ % # # # # # # # # % $ $ $ $ $ $ $ $ $ $ $ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ % # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # ", ! ". . . . . . . . . . . . . . . . . . . . . . . . + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ % # # # # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ % # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ % # # # # # # # # % $ $ $ $ $ $ $ $ $ $ $ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ % # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # ", ! ". . . . . . . . . . . . . . . . . . . . . . . . + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ % # # # # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ % # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ % # # # # # # # # % $ $ $ $ $ $ $ $ $ $ $ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ % # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # ", ! ". . . . . . . . . . . . . . . . . . . . . . . . + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ % # # # # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ % # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ % # # # # # # # # % $ $ $ $ $ $ $ $ $ $ $ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ % # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # ", ! ". . . . . . . . . . . . . . . . . . . . . . . . + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ % # # # # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ % # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ % # # # # # # # # % $ $ $ $ $ $ $ $ $ $ $ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ % # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # ", ! ". . . . . . . . . . . . . . . . . . . . . . . . + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ % # # # # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ % # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ % # # # # # # # # % $ $ $ $ $ $ $ $ $ $ $ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ % # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # ", ! ". . . . . . . . . . . . . . . . . . . . . . . . + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ % # # # # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ % # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ % # # # # # # # # % $ $ $ $ $ $ $ $ $ $ $ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ % # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # ", ! ". . . . . . . . . . . . . . . . . . . . . . . . + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ % # # # # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ % # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ % # # # # # # # # % $ $ $ $ $ $ $ $ $ $ $ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ % # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # ", ! ". . . . . . . . . . . . . . . . . . . . . . . . + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ % # # # # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ % # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ % # # # # # # # # % $ $ $ $ $ $ $ $ $ $ $ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ % # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # ", ! ". . . . . . . . . . . . . . . . . . . . . . . . + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ % # # # # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ % # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ % # # # # # # # # % $ $ $ $ $ $ $ $ $ $ $ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ % # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # ", ! ". . . . . . . . . . . . . . . . . . . . . . . . + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ % # # # # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ % # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ % # # # # # # # # % $ $ $ $ $ $ $ $ $ $ $ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ % # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # ", ! ". . . . . . . . . . . . . . . . . . . . . . . . + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ % # # # # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ % # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ % # # # # # # # # % $ $ $ $ $ $ $ $ $ $ $ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ % # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # ", ! ". . . . . . . . . . . . . . . . . . . . . . . . + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ % # # # # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ % # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ % # # # # # # # # % $ $ $ $ $ $ $ $ $ $ $ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ % # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # ", ! ". . . . . . . . . . . . . . . . . . . . . . . . + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ % # # # # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ % # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ % # # # # # # # # % $ $ $ $ $ $ $ $ $ $ $ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ % # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # ", ! ". . . . . . . . . . . . . . . . . . . . . . . . + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ % # # # # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ % # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ % # # # # # # # # % $ $ $ $ $ $ $ $ $ $ $ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ % # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # ", ! ". . . . . . . . . . . . . . . . . . . . . . . . + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # 1 # # # # # # # $ $ $ $ $ $ $ $ $ $ $ % # # # # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ % # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ % # # # # # # # # % $ $ $ $ $ $ $ $ $ $ $ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ % # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # ", ! ". . . . . . . . . . . . . . . . . . . . . . . . + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ % # # # # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ % # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ % # # # # # # # # % $ $ $ $ $ $ $ $ $ $ $ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ % # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # ", ! ". . . . . . . . . . . . . . . . . . . . . . . . + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ % # # # # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ % # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ % # # # # # # # # % $ $ $ $ $ $ $ $ $ $ $ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ % # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # ", ! ". . . . . . . . . . . . . . . . . . . . . . . . + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * $ $ $ $ $ $ $ $ $ $ $ % # # # # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ % # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ % # # # # # # # # % $ $ $ $ $ $ $ $ $ $ $ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ % # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # ", ! ". . . . . . . . . . . . . . . . . . . . . . . . + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ % # # # # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ % # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ % # # # # # # # # % $ $ $ $ $ $ $ $ $ $ $ # # # # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ % # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # ", ! ". . . . . . . . . . . . . . . . . . . . . . . . + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ : # # # # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ % # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ % # # # # # # # # % $ $ $ $ $ $ $ $ $ $ $ # # # # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ w # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # ", ! ". . . . . . . . . . . . . . . . . . . . . . . . + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ s # # # # # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ % # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ % # # # # # # # # % $ $ $ $ $ $ $ $ $ $ $ # # # # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ x y # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # ", ! ". . . . . . . . . . . . . . . . . . . . . . . . + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ > # # # # # # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ % # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ % # # # # # # # # % $ $ $ $ $ $ $ $ $ $ $ # # # # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ z A # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # ", ! ". . . . . . . . . . . . . . . . . . . . . . . . + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ B # # # # # # # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ % # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ % # # # # # # # # % $ $ $ $ $ $ $ $ $ $ $ # # # # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ 0 C # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # ", ! ". . . . . . . . . . . . . . . . . . . . . . . . + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ , # # # # # # # # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ % # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ % # # # # # # # # % $ $ $ $ $ $ $ $ $ $ $ # # # # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ % 6 # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # ", ! ". . . . . . . . . . . . . . . . . . . . . . . . + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ 8 D # # # # # # # # # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ % # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ % # # # # # # # # % $ $ $ $ $ $ $ $ $ $ $ # # # # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ E 1 # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # ", ! ". . . . . . . . . . . . . . . . . . . . . . . . + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ 3 F # # # # # # # # # # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ % # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ % # # # # # # # # % $ $ $ $ $ $ $ $ $ $ $ # # # # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ G H # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # ", ! ". . . . . . . . . . . . . . . . . . . . . . . . + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ [ I # # # # # # # # # # # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ % # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ % # # # # # # # # % $ $ $ $ $ $ $ $ $ $ $ # # # # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ ( _ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # ", ! ". . . . . . . . . . . . . . . . . . . . . . . . + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ J K # # # # # # # # # # # # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ % # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ % # # # # # # # # % $ $ $ $ $ $ $ $ $ $ $ # # # # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ L M # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # ", ! ". . . . . . . . . . . . . . . . . . . . . . . . + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ ' N # # # # # # # # # # # # # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ % # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ % # # # # # # # # % $ $ $ $ $ $ $ $ $ $ $ # # # # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ O ; # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # ", ! ". . . . . . . . . . . . . . . . . . . . . . . . + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ & * * * * * * * * * * * * * * * * * * * * * * * * * * { P # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # ", ! ". . . . . . . . . . . . . . . . . . . . . . . . + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ % # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # ", ! ". . . . . . . . . . . . . . . . . . . . . . . . + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ % # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # ", ! ". . . . . . . . . . . . . . . . . . . . . . . . + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # $ $ $ $ $ $ $ $ $ $ $ % # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # ", ! ". . . . . . . . . . . . . . . . . . . . . . . . + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #... [truncated message content] |
From: <mde...@us...> - 2004-01-03 15:42:55
|
Update of /cvsroot/beepmp/bmp/beep In directory sc8-pr-cvs1:/tmp/cvs-serv25976/beep Modified Files: dirbrowser.c Log Message: More mem leak fixes Index: dirbrowser.c =================================================================== RCS file: /cvsroot/beepmp/bmp/beep/dirbrowser.c,v retrieving revision 1.43 retrieving revision 1.44 diff -C2 -d -r1.43 -r1.44 *** dirbrowser.c 3 Jan 2004 11:27:35 -0000 1.43 --- dirbrowser.c 3 Jan 2004 15:42:52 -0000 1.44 *************** *** 106,110 **** static GtkTreeModel *bmp_db_return_filestore_model_fresh(GList * paths); ! GList * file_list = NULL; /* The function adds a track to the model, specified by artist, album --- 106,110 ---- static GtkTreeModel *bmp_db_return_filestore_model_fresh(GList * paths); ! GList *file_list = NULL; /* The function adds a track to the model, specified by artist, album *************** *** 112,118 **** * needed. Think of it as a "mkdir -p". */ static void bmp_db_mdb_add_track(const gchar * arg_artist_p, ! const gchar * arg_album_p, const gchar * arg_track_p, ! guint arg_tracknum, const gchar * arg_path, GtkTreeModel * model_sort) --- 112,118 ---- * needed. Think of it as a "mkdir -p". */ static void bmp_db_mdb_add_track(const gchar * arg_artist_p, ! const gchar * arg_album_p, const gchar * arg_track_p, ! guint arg_tracknum, const gchar * arg_path, GtkTreeModel * model_sort) *************** *** 173,177 **** g_object_unref(buf_artist); ! g_free(arg_artist); } /* Reset/re-use found status */ --- 173,177 ---- g_object_unref(buf_artist); ! g_free(arg_artist); } /* Reset/re-use found status */ *************** *** 281,285 **** path_str = gtk_tree_path_to_string(path); ! branches = g_strsplit( path_str, ":", 0); node_idx = g_ascii_strtoull(branches[nodehidx], NULL, 10); --- 281,285 ---- path_str = gtk_tree_path_to_string(path); ! branches = g_strsplit(path_str, ":", 0); node_idx = g_ascii_strtoull(branches[nodehidx], NULL, 10); *************** *** 301,305 **** } ! static gchar *bmp_db_get_path_real(const gchar * path, GtkTreeModel * model, GtkTreeIter * iter) { --- 301,306 ---- } ! static gchar *bmp_db_get_path_real(const gchar * path, ! GtkTreeModel * model, GtkTreeIter * iter) { *************** *** 336,341 **** root_real = bmp_db_get_path_real(root, model, &parent_iter); ! if (!g_file_test(root_real, G_FILE_TEST_IS_DIR)) ! { g_free(root_utf8); g_free(root_real); --- 337,341 ---- root_real = bmp_db_get_path_real(root, model, &parent_iter); ! if (!g_file_test(root_real, G_FILE_TEST_IS_DIR)) { g_free(root_utf8); g_free(root_real); *************** *** 376,381 **** continue; ! name_real = ! g_build_filename(root_real, dirent, NULL); if (g_file_test(name_real, G_FILE_TEST_IS_DIR)) { --- 376,380 ---- continue; ! name_real = g_build_filename(root_real, dirent, NULL); if (g_file_test(name_real, G_FILE_TEST_IS_DIR)) { *************** *** 470,483 **** if (nodes != NULL) { ! guint i; DbNode *node; for (i = 0; i <= ctr_array; i++) { node = g_ptr_array_index(nodes, i); ! g_free(node->name); ! g_free(node->path_real); ! g_object_unref(node->image); ! g_free(node); ! } ! g_free(nodes); } --- 469,482 ---- if (nodes != NULL) { ! guint i; DbNode *node; for (i = 0; i <= ctr_array; i++) { node = g_ptr_array_index(nodes, i); ! g_free(node->name); ! g_free(node->path_real); ! g_object_unref(node->image); ! g_free(node); ! } ! g_free(nodes); } *************** *** 487,498 **** g_build_filename(g_get_home_dir(), BMP_RCPATH, "dbrc", NULL); ! if (!g_file_test(filename, G_FILE_TEST_EXISTS)) ! { g_free(filename); return NULL; } ! if (!g_file_get_contents(filename, &buffer, &filesize, NULL)) ! { /* FIXME: The file should be actually recreated here! */ buffer = g_strdup("/:/"); --- 486,495 ---- g_build_filename(g_get_home_dir(), BMP_RCPATH, "dbrc", NULL); ! if (!g_file_test(filename, G_FILE_TEST_EXISTS)) { g_free(filename); return NULL; } ! if (!g_file_get_contents(filename, &buffer, &filesize, NULL)) { /* FIXME: The file should be actually recreated here! */ buffer = g_strdup("/:/"); *************** *** 577,581 **** if (node) { str_parent = g_strdup(node->path_real); ! } } else { --- 574,578 ---- if (node) { str_parent = g_strdup(node->path_real); ! } } else { *************** *** 586,598 **** if (str_parent[0] == '/') { g_free(str_parent); ! return g_build_filename("/", path, NULL); ! } else { gchar *path_full = bmp_db_path_get_full ! (model, str_parent, iter_parent); ! gchar *filename = g_build_filename(path_full, path, NULL); g_free(str_parent); ! g_free(path_full); ! return filename; ! } } } --- 583,595 ---- if (str_parent[0] == '/') { g_free(str_parent); ! return g_build_filename("/", path, NULL); ! } else { gchar *path_full = bmp_db_path_get_full ! (model, str_parent, iter_parent); ! gchar *filename = g_build_filename(path_full, path, NULL); g_free(str_parent); ! g_free(path_full); ! return filename; ! } } } *************** *** 638,642 **** g_free(path); } else { ! g_free(str); } --- 635,639 ---- g_free(path); } else { ! g_free(str); } *************** *** 677,682 **** gtk_tree_model_get(GTK_TREE_MODEL(model), &iter, 1, &node_name, -1); ! tmp = ! bmp_db_path_get_full(GTK_TREE_MODEL(model), node_name, iter); path = g_locale_from_utf8(tmp, -1, NULL, NULL, NULL); --- 674,678 ---- gtk_tree_model_get(GTK_TREE_MODEL(model), &iter, 1, &node_name, -1); ! tmp = bmp_db_path_get_full(GTK_TREE_MODEL(model), node_name, iter); path = g_locale_from_utf8(tmp, -1, NULL, NULL, NULL); *************** *** 685,692 **** g_free(tmp); g_free(path); ! g_free(node_name); paths_f = g_list_append(paths_f, path_real); ! paths = paths->next; } --- 681,688 ---- g_free(tmp); g_free(path); ! g_free(node_name); paths_f = g_list_append(paths_f, path_real); ! paths = paths->next; } *************** *** 705,710 **** ! static void bmp_db_mdb_enq_play(GtkButton * button, gpointer treeview, gboolean do_play) { ! GtkTreeIter iter; GtkTreeIter iter_child; --- 701,708 ---- ! static void bmp_db_mdb_enq_play(GtkButton * button, gpointer treeview, ! gboolean do_play) ! { ! GtkTreeIter iter; GtkTreeIter iter_child; *************** *** 718,779 **** if (do_play) ! playlist_clear(); while (paths) { ! gtk_tree_model_get_iter(GTK_TREE_MODEL(model), &iter, paths->data); ! gtk_tree_model_get(GTK_TREE_MODEL(model), &iter, 3, ! &data_name_nonutf8, -1); ! ! if (data_name_nonutf8) { if (g_file_test(data_name_nonutf8, G_FILE_TEST_IS_REGULAR)) { ! playlist_add_url_string(data_name_nonutf8); ! } ! g_free(data_name_nonutf8); ! } paths = paths->next; } ! gtk_tree_selection_unselect_all(gtk_tree_view_get_selection ! (treeview)); if (do_play) ! playlist_play(); ! } ! static void bmp_db_mdb_enqueue(GtkButton * button, gpointer treeview) { ! ! bmp_db_mdb_enq_play(button, treeview, FALSE); ! } ! static void bmp_db_mdb_play(GtkButton * button, gpointer treeview) { ! ! bmp_db_mdb_enq_play(button, treeview, TRUE); ! } ! static void bmp_db_mdb_add_all(GtkButton * button, gpointer treeview) { ! ! gtk_tree_selection_select_all(gtk_tree_view_get_selection ! (treeview)); ! bmp_db_mdb_enq_play(button, treeview, FALSE); ! } ! static void bmp_db_mdb_add_all_wrapper(GtkEntry * widget, gpointer treeview) { ! ! gtk_tree_selection_select_all(gtk_tree_view_get_selection ! (treeview)); ! bmp_db_mdb_enq_play(NULL, treeview, FALSE); ! gtk_entry_set_text(widget, ""); } static void bmp_db_mdb_row_activated(GtkTreeView * treeview, ! GtkTreePath * arg1, ! GtkTreeViewColumn * arg2, ! gpointer user_data) { ! bmp_db_mdb_enq_play(NULL, treeview, click_play); } --- 716,780 ---- if (do_play) ! playlist_clear(); while (paths) { ! gtk_tree_model_get_iter(GTK_TREE_MODEL(model), &iter, paths->data); ! gtk_tree_model_get(GTK_TREE_MODEL(model), &iter, 3, ! &data_name_nonutf8, -1); ! ! if (data_name_nonutf8) { if (g_file_test(data_name_nonutf8, G_FILE_TEST_IS_REGULAR)) { ! playlist_add_url_string(data_name_nonutf8); ! } ! g_free(data_name_nonutf8); ! } paths = paths->next; } ! gtk_tree_selection_unselect_all(gtk_tree_view_get_selection(treeview)); if (do_play) ! playlist_play(); ! } ! static void bmp_db_mdb_enqueue(GtkButton * button, gpointer treeview) ! { ! ! bmp_db_mdb_enq_play(button, treeview, FALSE); ! } ! static void bmp_db_mdb_play(GtkButton * button, gpointer treeview) ! { ! ! bmp_db_mdb_enq_play(button, treeview, TRUE); ! } ! static void bmp_db_mdb_add_all(GtkButton * button, gpointer treeview) ! { ! ! gtk_tree_selection_select_all(gtk_tree_view_get_selection(treeview)); ! bmp_db_mdb_enq_play(button, treeview, FALSE); ! } ! static void bmp_db_mdb_add_all_wrapper(GtkEntry * widget, ! gpointer treeview) ! { ! ! gtk_tree_selection_select_all(gtk_tree_view_get_selection(treeview)); ! bmp_db_mdb_enq_play(NULL, treeview, FALSE); ! gtk_entry_set_text(widget, ""); } static void bmp_db_mdb_row_activated(GtkTreeView * treeview, ! GtkTreePath * arg1, ! GtkTreeViewColumn * arg2, ! gpointer user_data) ! { ! bmp_db_mdb_enq_play(NULL, treeview, click_play); } *************** *** 812,816 **** g_free(path); g_free(path_real); ! g_free(node_name); paths = paths->next; --- 813,817 ---- g_free(path); g_free(path_real); ! g_free(node_name); paths = paths->next; *************** *** 914,918 **** bmp_db_path_get_full(GTK_TREE_MODEL(model), node_name, iter); path_real = bmp_db_get_path_real(path, model, &iter); ! g_free(node_name); if (g_file_test(path_real, G_FILE_TEST_IS_DIR)) { --- 915,919 ---- bmp_db_path_get_full(GTK_TREE_MODEL(model), node_name, iter); path_real = bmp_db_get_path_real(path, model, &iter); ! g_free(node_name); if (g_file_test(path_real, G_FILE_TEST_IS_DIR)) { *************** *** 924,928 **** node->path_real = g_strdup(path_real); ! gchar *tmp = g_strconcat(_("Choose a Name for:\n"), name, NULL); gtk_label_set_text(variable, tmp); g_free(tmp); --- 925,930 ---- node->path_real = g_strdup(path_real); ! gchar *tmp = ! g_strconcat(_("Choose a Name for:\n"), name, NULL); gtk_label_set_text(variable, tmp); g_free(tmp); *************** *** 940,944 **** if (gtk_tree_model_get_iter_from_string(model, &iter, "0")) { gtk_tree_store_append(GTK_TREE_STORE(model), &iter, NULL); ! gtk_tree_store_set(GTK_TREE_STORE(model), &iter, 0, node->image, 1, node->name, -1); bmp_db_create_dirtree(GTK_TREE_MODEL(model), /* starting at */ "/", iter); --- 942,947 ---- if (gtk_tree_model_get_iter_from_string(model, &iter, "0")) { gtk_tree_store_append(GTK_TREE_STORE(model), &iter, NULL); ! gtk_tree_store_set(GTK_TREE_STORE(model), &iter, 0, ! node->image, 1, node->name, -1); bmp_db_create_dirtree(GTK_TREE_MODEL(model), /* starting at */ "/", iter); *************** *** 947,951 **** } ! g_free(path_real); } else { --- 950,954 ---- } ! g_free(path_real); } else { *************** *** 963,967 **** ! static void bmp_db_remove_attached(GtkWidget * data) { GtkTreeIter iter; --- 966,971 ---- ! static void bmp_db_remove_attached(GtkWidget * data) ! { GtkTreeIter iter; *************** *** 971,979 **** gboolean error; gchar *path_str; ! selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(data)); model = gtk_tree_view_get_model(GTK_TREE_VIEW(data)); ! paths = gtk_tree_selection_get_selected_rows(GTK_TREE_SELECTION(selection), &model); while (paths) { --- 975,985 ---- gboolean error; gchar *path_str; ! selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(data)); model = gtk_tree_view_get_model(GTK_TREE_VIEW(data)); ! paths = ! gtk_tree_selection_get_selected_rows(GTK_TREE_SELECTION(selection), ! &model); while (paths) { *************** *** 1068,1072 **** bmp_db_path_get_full(GTK_TREE_MODEL(model), node_name, iter); path_real = bmp_db_get_path_real(path, model, &iter); ! g_free(node_name); if (g_file_test(path, G_FILE_TEST_IS_DIR)) { --- 1074,1078 ---- bmp_db_path_get_full(GTK_TREE_MODEL(model), node_name, iter); path_real = bmp_db_get_path_real(path, model, &iter); ! g_free(node_name); if (g_file_test(path, G_FILE_TEST_IS_DIR)) { *************** *** 1131,1135 **** i++; } ! g_ptr_array_free(nodes, TRUE); fclose(file); --- 1137,1141 ---- i++; } ! g_ptr_array_free(nodes, TRUE); fclose(file); *************** *** 1235,1239 **** static gint bmp_db_keypress(GtkWidget * grab_widget, ! GdkEventKey * event, gpointer data) { if (event && (event->keyval == GDK_Escape)) { gtk_widget_hide(data); --- 1241,1246 ---- static gint bmp_db_keypress(GtkWidget * grab_widget, ! GdkEventKey * event, gpointer data) ! { if (event && (event->keyval == GDK_Escape)) { gtk_widget_hide(data); *************** *** 1253,1285 **** gchar *cmp_a; gchar *cmp_b; gtk_tree_model_get(model, a, 2, &cmp_a, -1); gtk_tree_model_get(model, b, 2, &cmp_b, -1); - gint r_value = 0; - gboolean precheck = FALSE; - /* FIXME: Is this here right? */ if ((cmp_a == NULL) && (cmp_b == NULL)) { ! r_value = 0; ! precheck = TRUE; } if ((cmp_a == NULL) && (cmp_b != NULL)) { ! r_value = 1; ! precheck = TRUE; } if ((cmp_a != NULL) && (cmp_b == NULL)) { ! r_value = -1; ! precheck = TRUE; } ! ! if (!precheck) { ! r_value = g_ascii_strcasecmp(cmp_a, cmp_b); } ! g_free(cmp_a); g_free(cmp_b); ! return r_value; } --- 1260,1286 ---- gchar *cmp_a; gchar *cmp_b; + gint result = 0; gtk_tree_model_get(model, a, 2, &cmp_a, -1); gtk_tree_model_get(model, b, 2, &cmp_b, -1); /* FIXME: Is this here right? */ if ((cmp_a == NULL) && (cmp_b == NULL)) { ! result = 0; } if ((cmp_a == NULL) && (cmp_b != NULL)) { ! result = 1; } if ((cmp_a != NULL) && (cmp_b == NULL)) { ! result = -1; } ! if (cmp_a && cmp_b) { ! result = g_ascii_strcasecmp(cmp_a, cmp_b); } ! g_free(cmp_a); g_free(cmp_b); ! return result; } *************** *** 1292,1296 **** GList *list = NULL; GList *files = NULL; ! if (!g_file_test(path, G_FILE_TEST_IS_DIR)) /* FIXME: Add action for no directory */ --- 1293,1297 ---- GList *list = NULL; GList *files = NULL; ! if (!g_file_test(path, G_FILE_TEST_IS_DIR)) /* FIXME: Add action for no directory */ *************** *** 1317,1332 **** if (g_file_test(name_real, G_FILE_TEST_IS_REGULAR)) { if (bmp_db_check_file(name_real)) { ! files = g_list_append(files, name_real); } } else if (g_file_test(name_real, G_FILE_TEST_IS_DIR)) { ! /* DO_NOT_FIXME ;) ! * ! * There's no memory leak here because g_list_concat() docs say: ! * "Note that the elements of the second GList are not copied. ! * They are used directly." ! */ ! files = g_list_concat(files, bmp_db_return_files_from_path(name_real)); ! } ! } g_dir_close(dir); } --- 1318,1336 ---- if (g_file_test(name_real, G_FILE_TEST_IS_REGULAR)) { if (bmp_db_check_file(name_real)) { ! files = g_list_append(files, name_real); } } else if (g_file_test(name_real, G_FILE_TEST_IS_DIR)) { ! /* DO_NOT_FIXME ;) ! * ! * There's no memory leak here because g_list_concat() docs say: ! * "Note that the elements of the second GList are not copied. ! * They are used directly." ! */ ! files = ! g_list_concat(files, ! bmp_db_return_files_from_path ! (name_real)); ! } ! } g_dir_close(dir); } *************** *** 1366,1371 **** ! static void bmp_db_mdb_editable_changed(GtkWidget * widget, ! gpointer data) { gchar **words; --- 1370,1375 ---- ! static void bmp_db_mdb_editable_changed(GtkWidget * widget, gpointer data) ! { gchar **words; *************** *** 1380,1386 **** gchar *basename, *pathname, *basename_utf8, *pathname_utf8; ! model = ! /* filename */ /* path */ /* full non-UTF-8 path */ ! gtk_tree_store_new(4, GDK_TYPE_PIXBUF, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING); GtkTreeModel *sort_model = --- 1384,1391 ---- gchar *basename, *pathname, *basename_utf8, *pathname_utf8; ! model = ! /* filename *//* path *//* full non-UTF-8 path */ ! gtk_tree_store_new(4, GDK_TYPE_PIXBUF, G_TYPE_STRING, ! G_TYPE_STRING, G_TYPE_STRING); GtkTreeModel *sort_model = *************** *** 1390,1395 **** bmp_db_mdb_sort_func, NULL, NULL); ! buf_file = gdk_pixbuf_new_from_inline(sizeof (audio_pixbuf), ! audio_pixbuf, TRUE, NULL); playlist = file_list; --- 1395,1400 ---- bmp_db_mdb_sort_func, NULL, NULL); ! buf_file = gdk_pixbuf_new_from_inline(sizeof(audio_pixbuf), ! audio_pixbuf, TRUE, NULL); playlist = file_list; *************** *** 1397,1404 **** if (strlen(key) == 1) { ! g_free(key); ! gtk_widget_set_sensitive(data, TRUE); ! return; ! } /* Chop the key string into ' '-separeted key words */ --- 1402,1409 ---- if (strlen(key) == 1) { ! g_free(key); ! gtk_widget_set_sensitive(data, TRUE); ! return; ! } /* Chop the key string into ' '-separeted key words */ *************** *** 1409,1413 **** gtk_widget_set_sensitive(data, FALSE); ! if (GTK_IS_TREE_STORE(gtk_tree_view_get_model(data))) gtk_tree_store_clear(gtk_tree_view_get_model(data)); /* lowercase the key string */ --- 1414,1419 ---- gtk_widget_set_sensitive(data, FALSE); ! if (GTK_IS_TREE_STORE(gtk_tree_view_get_model(data))) ! gtk_tree_store_clear(gtk_tree_view_get_model(data)); /* lowercase the key string */ *************** *** 1433,1456 **** ! gtk_tree_store_append(GTK_TREE_STORE(model), &iter, NULL); basename = g_path_get_basename(filename); ! pathname = g_path_get_dirname(filename); ! basename_utf8 = g_filename_to_utf8(basename, -1, NULL, NULL, NULL); ! pathname_utf8 = g_filename_to_utf8(pathname, -1, NULL, NULL, NULL); gtk_tree_store_set(GTK_TREE_STORE(model), &iter, ! /* FIXME: We ignore conversion errors */ ! 0, buf_file, ! 1, basename_utf8, ! 2, pathname_utf8, ! 3, filename, ! -1); ! g_free(pathname_utf8); ! g_free(basename_utf8); ! g_free(pathname); ! g_free(basename); } --- 1439,1462 ---- ! gtk_tree_store_append(GTK_TREE_STORE(model), &iter, NULL); basename = g_path_get_basename(filename); ! pathname = g_path_get_dirname(filename); ! basename_utf8 = ! g_filename_to_utf8(basename, -1, NULL, NULL, NULL); ! pathname_utf8 = ! g_filename_to_utf8(pathname, -1, NULL, NULL, NULL); gtk_tree_store_set(GTK_TREE_STORE(model), &iter, ! /* FIXME: We ignore conversion errors */ ! 0, buf_file, ! 1, basename_utf8, ! 2, pathname_utf8, 3, filename, -1); ! g_free(pathname_utf8); ! g_free(basename_utf8); ! g_free(pathname); ! g_free(basename); } *************** *** 1473,1478 **** model = ! /* filename */ /* path */ /* full non-UTF-8 path */ ! gtk_tree_store_new(4, GDK_TYPE_PIXBUF, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING); GtkTreeModel *sort_model = --- 1479,1485 ---- model = ! /* filename *//* path *//* full non-UTF-8 path */ ! gtk_tree_store_new(4, GDK_TYPE_PIXBUF, G_TYPE_STRING, ! G_TYPE_STRING, G_TYPE_STRING); GtkTreeModel *sort_model = *************** *** 1487,1497 **** gint ctr = 0; ! buf_file = gdk_pixbuf_new_from_inline(sizeof (audio_pixbuf), ! audio_pixbuf, TRUE, NULL); if (file_list != NULL) { file_list = g_list_first(file_list); g_list_foreach(file_list, (GFunc) g_free, NULL); ! g_list_free(file_list); file_list = NULL; } --- 1494,1504 ---- gint ctr = 0; ! buf_file = gdk_pixbuf_new_from_inline(sizeof(audio_pixbuf), ! audio_pixbuf, TRUE, NULL); if (file_list != NULL) { file_list = g_list_first(file_list); g_list_foreach(file_list, (GFunc) g_free, NULL); ! g_list_free(file_list); file_list = NULL; } *************** *** 1503,1524 **** while (files) { ! gtk_tree_store_append(GTK_TREE_STORE(model), &iter, NULL); ! basename = g_path_get_basename(files->data); ! pathname = g_path_get_dirname(files->data); ! gtk_tree_store_set(GTK_TREE_STORE(model), &iter, ! /* FIXME: We ignore conversion errors */ ! 0, buf_file, ! 1, g_filename_to_utf8( basename , -1, NULL, NULL, NULL), ! 2, g_filename_to_utf8( pathname , -1, NULL, NULL, NULL ), ! 3, files->data, ! -1); file_list = g_list_append(file_list, files->data); files = files->next; ! ! g_free(basename); ! g_free(pathname); } --- 1510,1532 ---- while (files) { ! gtk_tree_store_append(GTK_TREE_STORE(model), &iter, NULL); ! basename = g_path_get_basename(files->data); ! pathname = g_path_get_dirname(files->data); ! gtk_tree_store_set(GTK_TREE_STORE(model), &iter, ! /* FIXME: We ignore conversion errors */ ! 0, buf_file, ! 1, g_filename_to_utf8(basename, -1, NULL, ! NULL, NULL), 2, ! g_filename_to_utf8(pathname, -1, NULL, NULL, ! NULL), 3, files->data, ! -1); file_list = g_list_append(file_list, files->data); files = files->next; ! ! g_free(basename); ! g_free(pathname); } *************** *** 1559,1563 **** l_selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(treeview)); gtk_tree_selection_set_mode(l_selection, GTK_SELECTION_MULTIPLE); ! renderer = gtk_cell_renderer_pixbuf_new(); column = gtk_tree_view_column_new(); --- 1567,1571 ---- l_selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(treeview)); gtk_tree_selection_set_mode(l_selection, GTK_SELECTION_MULTIPLE); ! renderer = gtk_cell_renderer_pixbuf_new(); column = gtk_tree_view_column_new(); *************** *** 1583,1588 **** gtk_tree_view_column_set_sizing(column, GTK_TREE_VIEW_COLUMN_AUTOSIZE); gtk_tree_view_column_pack_start(column, renderer, TRUE); ! gtk_tree_view_column_set_attributes(column, renderer, "text", 2, ! NULL); gtk_tree_view_append_column(GTK_TREE_VIEW(treeview), column); --- 1591,1595 ---- gtk_tree_view_column_set_sizing(column, GTK_TREE_VIEW_COLUMN_AUTOSIZE); gtk_tree_view_column_pack_start(column, renderer, TRUE); ! gtk_tree_view_column_set_attributes(column, renderer, "text", 2, NULL); gtk_tree_view_append_column(GTK_TREE_VIEW(treeview), column); *************** *** 1610,1614 **** GtkWidget *fstore; GList *paths = NULL; ! if (!window) { --- 1617,1621 ---- GtkWidget *fstore; GList *paths = NULL; ! if (!window) { *************** *** 1691,1698 **** button_enqueue = gtk_button_new_from_stock(GTK_STOCK_ADD); ! button_all = gtk_button_new_with_label("Add all"); ! button_play = gtk_button_new_with_label("Play"); button_box = gtk_hbutton_box_new(); ! gtk_button_box_set_layout(button_box, GTK_BUTTONBOX_START); gtk_box_pack_start(GTK_BOX(vbox_right), progressbar_db, FALSE, --- 1698,1705 ---- button_enqueue = gtk_button_new_from_stock(GTK_STOCK_ADD); ! button_all = gtk_button_new_with_label("Add all"); ! button_play = gtk_button_new_with_label("Play"); button_box = gtk_hbutton_box_new(); ! gtk_button_box_set_layout(button_box, GTK_BUTTONBOX_START); gtk_box_pack_start(GTK_BOX(vbox_right), progressbar_db, FALSE, *************** *** 1707,1714 **** gtk_label_set_mnemonic_widget(label_header, editable); ! gtk_box_pack_start(GTK_BOX(vbox_right), button_box, FALSE, FALSE, 4); ! gtk_box_pack_start(GTK_CONTAINER(button_box), button_enqueue, FALSE, FALSE, 4); ! gtk_box_pack_start(GTK_CONTAINER(button_box), button_all, FALSE, FALSE, 4); ! gtk_box_pack_start(GTK_CONTAINER(button_box), button_play, FALSE, FALSE, 4); g_signal_connect(G_OBJECT(button_enqueue), "clicked", --- 1714,1725 ---- gtk_label_set_mnemonic_widget(label_header, editable); ! gtk_box_pack_start(GTK_BOX(vbox_right), button_box, FALSE, FALSE, ! 4); ! gtk_box_pack_start(GTK_CONTAINER(button_box), button_enqueue, ! FALSE, FALSE, 4); ! gtk_box_pack_start(GTK_CONTAINER(button_box), button_all, FALSE, ! FALSE, 4); ! gtk_box_pack_start(GTK_CONTAINER(button_box), button_play, FALSE, ! FALSE, 4); g_signal_connect(G_OBJECT(button_enqueue), "clicked", *************** *** 1732,1737 **** G_CALLBACK(bmp_db_mdb_row_activated), NULL); ! g_signal_connect(G_OBJECT(editable), "changed", G_CALLBACK(bmp_db_mdb_editable_changed), fstore); ! g_signal_connect(G_OBJECT(editable), "activate", G_CALLBACK(bmp_db_mdb_add_all_wrapper), fstore); /* bmp_db_apply_setup(GTK_TREE_VIEW(treeview)); */ --- 1743,1750 ---- G_CALLBACK(bmp_db_mdb_row_activated), NULL); ! g_signal_connect(G_OBJECT(editable), "changed", ! G_CALLBACK(bmp_db_mdb_editable_changed), fstore); ! g_signal_connect(G_OBJECT(editable), "activate", ! G_CALLBACK(bmp_db_mdb_add_all_wrapper), fstore); /* bmp_db_apply_setup(GTK_TREE_VIEW(treeview)); */ *************** *** 1755,1760 **** gtk_window_add_accel_group(GTK_WINDOW(window), db_accel); ! ! return window; } --- 1768,1773 ---- gtk_window_add_accel_group(GTK_WINDOW(window), db_accel); ! ! return window; } |
From: <mde...@us...> - 2004-01-03 11:27:38
|
Update of /cvsroot/beepmp/bmp/beep In directory sc8-pr-cvs1:/tmp/cvs-serv20833 Modified Files: dirbrowser.c Log Message: Fixed messed up bmp_db_mdb_sort_func Index: dirbrowser.c =================================================================== RCS file: /cvsroot/beepmp/bmp/beep/dirbrowser.c,v retrieving revision 1.42 retrieving revision 1.43 diff -C2 -d -r1.42 -r1.43 *** dirbrowser.c 3 Jan 2004 11:17:51 -0000 1.42 --- dirbrowser.c 3 Jan 2004 11:27:35 -0000 1.43 *************** *** 1257,1272 **** gtk_tree_model_get(model, b, 2, &cmp_b, -1); /* FIXME: Is this here right? */ ! if ((cmp_a == NULL) && (cmp_b == NULL)) ! return 0; ! if ((cmp_a == NULL) && (cmp_b != NULL)) ! return 1; ! if ((cmp_a != NULL) && (cmp_b == NULL)) ! return -1; g_free(cmp_a); g_free(cmp_b); ! return g_ascii_strcasecmp(cmp_a, cmp_b); } --- 1257,1285 ---- gtk_tree_model_get(model, b, 2, &cmp_b, -1); + gint r_value = 0; + gboolean precheck = FALSE; + /* FIXME: Is this here right? */ ! if ((cmp_a == NULL) && (cmp_b == NULL)) { ! r_value = 0; ! precheck = TRUE; ! } ! if ((cmp_a == NULL) && (cmp_b != NULL)) { ! r_value = 1; ! precheck = TRUE; ! } ! if ((cmp_a != NULL) && (cmp_b == NULL)) { ! r_value = -1; ! precheck = TRUE; ! } ! ! if (!precheck) { ! r_value = g_ascii_strcasecmp(cmp_a, cmp_b); ! } g_free(cmp_a); g_free(cmp_b); ! return r_value; } |
From: <mde...@us...> - 2004-01-03 11:17:55
|
Update of /cvsroot/beepmp/bmp/beep In directory sc8-pr-cvs1:/tmp/cvs-serv19680 Modified Files: dirbrowser.c Log Message: More memleak fixes Index: dirbrowser.c =================================================================== RCS file: /cvsroot/beepmp/bmp/beep/dirbrowser.c,v retrieving revision 1.41 retrieving revision 1.42 diff -C2 -d -r1.41 -r1.42 *** dirbrowser.c 3 Jan 2004 10:03:03 -0000 1.41 --- dirbrowser.c 3 Jan 2004 11:17:51 -0000 1.42 *************** *** 173,176 **** --- 173,177 ---- g_object_unref(buf_artist); + g_free(arg_artist); } /* Reset/re-use found status */ *************** *** 283,286 **** --- 284,288 ---- node_idx = g_ascii_strtoull(branches[nodehidx], NULL, 10); + gtk_tree_path_free(path); g_free(path_str); g_strfreev(branches); *************** *** 303,312 **** { ! GtkTreePath *current; guint64 node_idx; DbNode *node; gboolean error; ! current = gtk_tree_model_get_path(model, iter); node_idx = bmp_db_get_nodeidx_from_iter(model, iter, 0, &error); node = g_ptr_array_index(nodes, node_idx); --- 305,314 ---- { ! /* GtkTreePath *current; */ guint64 node_idx; DbNode *node; gboolean error; ! /* current = gtk_tree_model_get_path(model, iter); */ node_idx = bmp_db_get_nodeidx_from_iter(model, iter, 0, &error); node = g_ptr_array_index(nodes, node_idx); *************** *** 574,578 **** if (node) { ! str_parent = node->path_real; } --- 576,580 ---- if (node) { ! str_parent = g_strdup(node->path_real); } *************** *** 583,586 **** --- 585,589 ---- if (str_parent) { if (str_parent[0] == '/') { + g_free(str_parent); return g_build_filename("/", path, NULL); } else { *************** *** 588,591 **** --- 591,595 ---- (model, str_parent, iter_parent); gchar *filename = g_build_filename(path_full, path, NULL); + g_free(str_parent); g_free(path_full); return filename; *************** *** 633,636 **** --- 637,642 ---- iter_current); g_free(path); + } else { + g_free(str); } *************** *** 679,682 **** --- 685,689 ---- g_free(tmp); g_free(path); + g_free(node_name); paths_f = g_list_append(paths_f, path_real); *************** *** 719,725 **** if (data_name_nonutf8) { ! if (g_file_test(data_name_nonutf8, G_FILE_TEST_IS_REGULAR)) playlist_add_url_string(data_name_nonutf8); ! } paths = paths->next; --- 726,733 ---- if (data_name_nonutf8) { ! if (g_file_test(data_name_nonutf8, G_FILE_TEST_IS_REGULAR)) { playlist_add_url_string(data_name_nonutf8); ! } ! g_free(data_name_nonutf8); } paths = paths->next; *************** *** 804,808 **** g_free(path); g_free(path_real); ! paths = paths->next; --- 812,817 ---- g_free(path); g_free(path_real); ! g_free(node_name); ! paths = paths->next; *************** *** 905,908 **** --- 914,918 ---- bmp_db_path_get_full(GTK_TREE_MODEL(model), node_name, iter); path_real = bmp_db_get_path_real(path, model, &iter); + g_free(node_name); if (g_file_test(path_real, G_FILE_TEST_IS_DIR)) { *************** *** 1058,1061 **** --- 1068,1072 ---- bmp_db_path_get_full(GTK_TREE_MODEL(model), node_name, iter); path_real = bmp_db_get_path_real(path, model, &iter); + g_free(node_name); if (g_file_test(path, G_FILE_TEST_IS_DIR)) { *************** *** 1071,1074 **** --- 1082,1086 ---- g_list_free(paths); + bmp_db_clear_clicked(NULL, data); playlist_play(); *************** *** 1252,1255 **** --- 1264,1270 ---- if ((cmp_a != NULL) && (cmp_b == NULL)) return -1; + + g_free(cmp_a); + g_free(cmp_b); return g_ascii_strcasecmp(cmp_a, cmp_b); |
From: <mde...@us...> - 2004-01-03 10:03:06
|
Update of /cvsroot/beepmp/bmp/beep In directory sc8-pr-cvs1:/tmp/cvs-serv10047/beep Modified Files: dirbrowser.c Log Message: Memory usage cleanups (memleak fixes) Index: dirbrowser.c =================================================================== RCS file: /cvsroot/beepmp/bmp/beep/dirbrowser.c,v retrieving revision 1.40 retrieving revision 1.41 diff -C2 -d -r1.40 -r1.41 *** dirbrowser.c 3 Jan 2004 04:29:51 -0000 1.40 --- dirbrowser.c 3 Jan 2004 10:03:03 -0000 1.41 *************** *** 1350,1354 **** gchar *desc_buf; ! gchar *basename, *pathname; model = --- 1350,1354 ---- gchar *desc_buf; ! gchar *basename, *pathname, *basename_utf8, *pathname_utf8; model = *************** *** 1410,1421 **** pathname = g_path_get_dirname(filename); gtk_tree_store_set(GTK_TREE_STORE(model), &iter, /* FIXME: We ignore conversion errors */ 0, buf_file, ! 1, g_filename_to_utf8(basename, -1, NULL, NULL, NULL), ! 2, g_filename_to_utf8(pathname, -1, NULL, NULL, NULL ), 3, filename, -1); g_free(pathname); g_free(basename); --- 1410,1426 ---- pathname = g_path_get_dirname(filename); + basename_utf8 = g_filename_to_utf8(basename, -1, NULL, NULL, NULL); + pathname_utf8 = g_filename_to_utf8(pathname, -1, NULL, NULL, NULL); + gtk_tree_store_set(GTK_TREE_STORE(model), &iter, /* FIXME: We ignore conversion errors */ 0, buf_file, ! 1, basename_utf8, ! 2, pathname_utf8, 3, filename, -1); + g_free(pathname_utf8); + g_free(basename_utf8); g_free(pathname); g_free(basename); |
From: <mde...@us...> - 2004-01-03 04:29:53
|
Update of /cvsroot/beepmp/bmp/beep In directory sc8-pr-cvs1:/tmp/cvs-serv1656/beep Modified Files: dirbrowser.c Log Message: memleak fixes Index: dirbrowser.c =================================================================== RCS file: /cvsroot/beepmp/bmp/beep/dirbrowser.c,v retrieving revision 1.39 retrieving revision 1.40 diff -C2 -d -r1.39 -r1.40 *** dirbrowser.c 3 Jan 2004 04:04:56 -0000 1.39 --- dirbrowser.c 3 Jan 2004 04:29:51 -0000 1.40 *************** *** 583,587 **** if (str_parent) { if (str_parent[0] == '/') { - g_free(str_parent); return g_build_filename("/", path, NULL); } else { --- 583,586 ---- *************** *** 589,593 **** (model, str_parent, iter_parent); gchar *filename = g_build_filename(path_full, path, NULL); - g_free(str_parent); g_free(path_full); return filename; --- 588,591 ---- |
From: <mde...@us...> - 2004-01-03 04:05:17
|
Update of /cvsroot/beepmp/bmp/beep In directory sc8-pr-cvs1:/tmp/cvs-serv30904/beep Modified Files: dirbrowser.c Log Message: leak fix in bmp_db_path_get_full() Index: dirbrowser.c =================================================================== RCS file: /cvsroot/beepmp/bmp/beep/dirbrowser.c,v retrieving revision 1.38 retrieving revision 1.39 diff -C2 -d -r1.38 -r1.39 *** dirbrowser.c 2 Jan 2004 18:55:18 -0000 1.38 --- dirbrowser.c 3 Jan 2004 04:04:56 -0000 1.39 *************** *** 10,13 **** --- 10,14 ---- #include <gdk/gdk.h> #include <gdk/gdkkeysyms.h> + #include <glib/garray.h> #include <stdio.h> #include <string.h> *************** *** 466,469 **** --- 467,483 ---- /* add data to the tree store */ + if (nodes != NULL) { + guint i; + DbNode *node; + for (i = 0; i <= ctr_array; i++) { + node = g_ptr_array_index(nodes, i); + g_free(node->name); + g_free(node->path_real); + g_object_unref(node->image); + g_free(node); + } + g_free(nodes); + } + nodes = g_ptr_array_new(); *************** *** 560,564 **** if (node) { ! str_parent = g_strdup(node->path_real); } --- 574,578 ---- if (node) { ! str_parent = node->path_real; } *************** *** 569,573 **** if (str_parent) { if (str_parent[0] == '/') { ! g_free(str_parent); return g_build_filename("/", path, NULL); } else { --- 583,587 ---- if (str_parent) { if (str_parent[0] == '/') { ! g_free(str_parent); return g_build_filename("/", path, NULL); } else { *************** *** 575,579 **** (model, str_parent, iter_parent); gchar *filename = g_build_filename(path_full, path, NULL); ! g_free(path_full); return filename; } --- 589,594 ---- (model, str_parent, iter_parent); gchar *filename = g_build_filename(path_full, path, NULL); ! g_free(str_parent); ! g_free(path_full); return filename; } *************** *** 896,904 **** DbNode *node; - gchar *dir = g_strdup(path_real); gchar *name = g_strdup(path_real); node = g_malloc0(sizeof(DbNode)); ! node->path_real = dir; gchar *tmp = g_strconcat(_("Choose a Name for:\n"), name, NULL); --- 911,918 ---- DbNode *node; gchar *name = g_strdup(path_real); node = g_malloc0(sizeof(DbNode)); ! node->path_real = g_strdup(path_real); gchar *tmp = g_strconcat(_("Choose a Name for:\n"), name, NULL); *************** *** 925,928 **** --- 939,944 ---- } + g_free(path_real); + } else { /* FIXME: response to is a file, not dir */ *************** *** 932,935 **** --- 948,952 ---- } + g_list_foreach(paths, (GFunc) g_free, NULL); g_free(paths); g_object_unref(buf); *************** *** 989,992 **** --- 1006,1012 ---- } + g_list_foreach(paths, (GFunc) g_free, NULL); + g_free(paths); + } *************** *** 1096,1102 **** node = g_ptr_array_index(nodes, i); fprintf(file, "%s:%s\n", node->name, node->path_real); i++; } ! g_ptr_array_free(nodes, TRUE); fclose(file); --- 1116,1125 ---- node = g_ptr_array_index(nodes, i); fprintf(file, "%s:%s\n", node->name, node->path_real); + g_free(node->name); + g_free(node->path_real); + g_object_unref(node->image); i++; } ! g_ptr_array_free(nodes, TRUE); fclose(file); |
From: <des...@us...> - 2004-01-03 01:18:32
|
Update of /cvsroot/beepmp/bmp/beep In directory sc8-pr-cvs1:/tmp/cvs-serv6245 Modified Files: main.c sm.c Log Message: - fixed missing save_config() errors Index: main.c =================================================================== RCS file: /cvsroot/beepmp/bmp/beep/main.c,v retrieving revision 1.32 retrieving revision 1.33 diff -C2 -d -r1.32 -r1.33 *** main.c 28 Dec 2003 21:11:46 -0000 1.32 --- main.c 3 Jan 2004 01:18:29 -0000 1.33 *************** *** 892,896 **** if (cme->message_type == protocols && (Atom) cme->data.l[0] == save_yourself) { ! save_config(); XSetCommand(GDK_DISPLAY(), GDK_WINDOW_XWINDOW(mainwin->window), --- 892,896 ---- if (cme->message_type == protocols && (Atom) cme->data.l[0] == save_yourself) { ! bmp_config_save(); XSetCommand(GDK_DISPLAY(), GDK_WINDOW_XWINDOW(mainwin->window), Index: sm.c =================================================================== RCS file: /cvsroot/beepmp/bmp/beep/sm.c,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** sm.c 26 Dec 2003 08:30:16 -0000 1.3 --- sm.c 3 Jan 2004 01:18:29 -0000 1.4 *************** *** 41,45 **** { GDK_THREADS_ENTER(); ! save_config(); SmcSaveYourselfDone(c, TRUE); GDK_THREADS_LEAVE(); --- 41,45 ---- { GDK_THREADS_ENTER(); ! bmp_config_save(); SmcSaveYourselfDone(c, TRUE); GDK_THREADS_LEAVE(); |
From: <mde...@us...> - 2004-01-02 18:55:22
|
Update of /cvsroot/beepmp/bmp/beep In directory sc8-pr-cvs1:/tmp/cvs-serv30756 Modified Files: dirbrowser.c Log Message: Memory fixes Index: dirbrowser.c =================================================================== RCS file: /cvsroot/beepmp/bmp/beep/dirbrowser.c,v retrieving revision 1.37 retrieving revision 1.38 diff -C2 -d -r1.37 -r1.38 *** dirbrowser.c 2 Jan 2004 15:41:35 -0000 1.37 --- dirbrowser.c 2 Jan 2004 18:55:18 -0000 1.38 *************** *** 507,510 **** --- 507,511 ---- /* starting at */ "/", iter); + g_strfreev(frags); } *************** *** 970,973 **** --- 971,977 ---- g_ptr_array_remove_index(nodes, node_idx); ctr_array--; + g_free(node->name); + g_free(node->path_real); + g_object_unref(node->image); g_free(node); *************** *** 1190,1194 **** gtk_tree_view_expand_row(GTK_TREE_VIEW(treeview), path, FALSE); g_free(path_str); ! g_free(path); gtk_tree_view_set_rules_hint(GTK_TREE_VIEW(treeview), FALSE); --- 1194,1198 ---- gtk_tree_view_expand_row(GTK_TREE_VIEW(treeview), path, FALSE); g_free(path_str); ! gtk_tree_path_free(path); gtk_tree_view_set_rules_hint(GTK_TREE_VIEW(treeview), FALSE); |
From: <mde...@us...> - 2004-01-02 15:41:39
|
Update of /cvsroot/beepmp/bmp/beep In directory sc8-pr-cvs1:/tmp/cvs-serv25820/beep Modified Files: dirbrowser.c input.c skinwin.c util.c Log Message: Memleak fixes Index: dirbrowser.c =================================================================== RCS file: /cvsroot/beepmp/bmp/beep/dirbrowser.c,v retrieving revision 1.36 retrieving revision 1.37 diff -C2 -d -r1.36 -r1.37 *** dirbrowser.c 31 Dec 2003 13:49:33 -0000 1.36 --- dirbrowser.c 2 Jan 2004 15:41:35 -0000 1.37 *************** *** 275,335 **** guint64 node_idx; gchar **branches; error = FALSE; ! branches = g_strsplit(gtk_tree_path_to_string(path), ":", 0); node_idx = g_ascii_strtoull(branches[nodehidx], NULL, 10); ! return node_idx; ! } ! ! static gchar *bmp_db_sanify_tag(const gchar * value) ! { ! gchar *frag = NULL; ! gchar **branches; ! gchar *retval = NULL; ! gchar *tmp; ! guint ctr = 0; ! gboolean bracket_open = FALSE; ! ! GString *chunk; ! ! if (!value) ! /* tag field unknown */ ! return g_strdup(_("(unknown)")); ! ! tmp = g_strstrip(g_strdup(value)); ! branches = g_strsplit(tmp, " ", 0); ! g_free(tmp); ! ! chunk = g_string_new(NULL); ! ! while (frag || !ctr) { ! ! if (ctr) ! g_string_append_c(chunk, ' '); ! ! frag = branches[ctr]; ! ! if (frag) { ! tmp = g_ascii_strdown(frag, -1); ! tmp[0] = g_ascii_toupper(tmp[0]); ! ! if ((bracket_open) ! && (g_strstr_len(tmp, strlen(tmp), ")") != NULL)) { ! bracket_open = FALSE; ! } else if (g_strstr_len(tmp, strlen(tmp), "(") == NULL) { ! g_string_append(chunk, tmp); ! } else { ! bracket_open = TRUE; ! } ! } ! ! ctr++; ! } ! ! retval = g_strstrip(chunk->str); ! g_string_free(chunk, FALSE); ! return retval; } --- 275,289 ---- guint64 node_idx; gchar **branches; + gchar *path_str; error = FALSE; ! path_str = gtk_tree_path_to_string(path); ! branches = g_strsplit( path_str, ":", 0); node_idx = g_ascii_strtoull(branches[nodehidx], NULL, 10); ! g_free(path_str); ! g_strfreev(branches); ! return node_idx; } *************** *** 604,609 **** node = g_ptr_array_index(nodes, 0); ! if (node) str_parent = g_strdup(node->path_real); } else { --- 558,564 ---- node = g_ptr_array_index(nodes, 0); ! if (node) { str_parent = g_strdup(node->path_real); + } } else { *************** *** 612,622 **** if (str_parent) { ! if (str_parent[0] == '/') ! return g_build_filename("/", path, NULL); ! else ! return ! g_build_filename(bmp_db_path_get_full ! (model, str_parent, iter_parent), ! path, NULL); } } --- 567,580 ---- if (str_parent) { ! if (str_parent[0] == '/') { ! g_free(str_parent); ! return g_build_filename("/", path, NULL); ! } else { ! gchar *path_full = bmp_db_path_get_full ! (model, str_parent, iter_parent); ! gchar *filename = g_build_filename(path_full, path, NULL); ! g_free(path_full); ! return filename; ! } } } *************** *** 660,663 **** --- 618,622 ---- bmp_db_create_dirtree(GTK_TREE_MODEL(model), path, iter_current); + g_free(path); } *************** *** 785,789 **** (treeview)); bmp_db_mdb_enq_play(NULL, treeview, FALSE); ! gtk_entry_set_text(widget, g_strdup("")); } --- 744,748 ---- (treeview)); bmp_db_mdb_enq_play(NULL, treeview, FALSE); ! gtk_entry_set_text(widget, ""); } *************** *** 958,963 **** if (gtk_tree_model_get_iter_from_string(model, &iter, "0")) { gtk_tree_store_append(GTK_TREE_STORE(model), &iter, NULL); ! gtk_tree_store_set(GTK_TREE_STORE(model), &iter, ! 0, node->image, 1, node->name, -1); bmp_db_create_dirtree(GTK_TREE_MODEL(model), /* starting at */ "/", iter); --- 917,921 ---- if (gtk_tree_model_get_iter_from_string(model, &iter, "0")) { gtk_tree_store_append(GTK_TREE_STORE(model), &iter, NULL); ! gtk_tree_store_set(GTK_TREE_STORE(model), &iter, 0, node->image, 1, node->name, -1); bmp_db_create_dirtree(GTK_TREE_MODEL(model), /* starting at */ "/", iter); *************** *** 979,984 **** ! static void bmp_db_remove_attached(GtkWidget * data) ! { GtkTreeIter iter; --- 937,941 ---- ! static void bmp_db_remove_attached(GtkWidget * data) { GtkTreeIter iter; *************** *** 987,997 **** GtkTreeModel *model; gboolean error; ! selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(data)); model = gtk_tree_view_get_model(GTK_TREE_VIEW(data)); ! paths = ! gtk_tree_selection_get_selected_rows(GTK_TREE_SELECTION(selection), ! &model); while (paths) { --- 944,953 ---- GtkTreeModel *model; gboolean error; ! gchar *path_str; ! selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(data)); model = gtk_tree_view_get_model(GTK_TREE_VIEW(data)); ! paths = gtk_tree_selection_get_selected_rows(GTK_TREE_SELECTION(selection), &model); while (paths) { *************** *** 1005,1013 **** if (!gtk_tree_model_iter_parent(model, &parent, &iter)) { if (gtk_tree_model_get_iter_from_string ! (model, &iter, gtk_tree_path_to_string(paths->data))) { DbNode *node; gtk_tree_store_remove(GTK_TREE_STORE(model), &iter); - node = g_ptr_array_index(nodes, node_idx); g_ptr_array_remove_index(nodes, node_idx); --- 961,970 ---- if (!gtk_tree_model_iter_parent(model, &parent, &iter)) { + path_str = gtk_tree_path_to_string(paths->data); + if (gtk_tree_model_get_iter_from_string ! (model, &iter, path_str)) { DbNode *node; gtk_tree_store_remove(GTK_TREE_STORE(model), &iter); node = g_ptr_array_index(nodes, node_idx); g_ptr_array_remove_index(nodes, node_idx); *************** *** 1019,1022 **** --- 976,981 ---- } + g_free(path_str); + } else { /* FIXME: response to is not a root node */ *************** *** 1108,1112 **** GtkTreePath * path, gpointer data) { ! data = g_list_append(data, gtk_tree_path_to_string(path)); } --- 1067,1073 ---- GtkTreePath * path, gpointer data) { ! gchar *path_str = gtk_tree_path_to_string(path); ! data = g_list_append(data, path_str); ! g_free(path_str); } *************** *** 1204,1209 **** --- 1165,1172 ---- GtkTreeModel *model; + GtkTreePath *path; GtkWidget *treeview; GtkTreeSelection *l_selection; + gchar *path_str; model = bmp_db_create_model(); *************** *** 1223,1228 **** G_CALLBACK(bmp_db_popup_menu), treeview); ! gtk_tree_view_expand_row(GTK_TREE_VIEW(treeview), ! gtk_tree_path_new_from_string("0"), FALSE); gtk_tree_view_set_rules_hint(GTK_TREE_VIEW(treeview), FALSE); --- 1186,1194 ---- G_CALLBACK(bmp_db_popup_menu), treeview); ! path_str = g_strdup("0"); ! path = gtk_tree_path_new_from_string(path_str); ! gtk_tree_view_expand_row(GTK_TREE_VIEW(treeview), path, FALSE); ! g_free(path_str); ! g_free(path); gtk_tree_view_set_rules_hint(GTK_TREE_VIEW(treeview), FALSE); *************** *** 1378,1381 **** --- 1344,1348 ---- if (strlen(key) == 1) { + g_free(key); gtk_widget_set_sensitive(data, TRUE); return; *************** *** 1384,1387 **** --- 1351,1355 ---- /* Chop the key string into ' '-separeted key words */ words = g_strsplit(key, " ", 0); + g_free(key); /* FIXME: Remove the connected signals before clearing (row-selected will still eventually arrive once) */ *************** *** 1414,1418 **** gtk_tree_store_append(GTK_TREE_STORE(model), &iter, NULL); ! basename = g_basename(filename); pathname = g_path_get_dirname(filename); --- 1382,1386 ---- gtk_tree_store_append(GTK_TREE_STORE(model), &iter, NULL); ! basename = g_path_get_basename(filename); pathname = g_path_get_dirname(filename); *************** *** 1424,1427 **** --- 1392,1398 ---- 3, filename, -1); + + g_free(pathname); + g_free(basename); } *************** *** 1432,1436 **** gtk_widget_set_sensitive(data, TRUE); g_strfreev(words); - g_free(key); } --- 1403,1406 ---- *************** *** 1477,1481 **** gtk_tree_store_append(GTK_TREE_STORE(model), &iter, NULL); ! basename = g_basename(files->data); pathname = g_path_get_dirname(files->data); --- 1447,1451 ---- gtk_tree_store_append(GTK_TREE_STORE(model), &iter, NULL); ! basename = g_path_get_basename(files->data); pathname = g_path_get_dirname(files->data); *************** *** 1490,1493 **** --- 1460,1467 ---- file_list = g_list_append(file_list, files->data); files = files->next; + + g_free(basename); + g_free(pathname); + } *************** *** 1635,1642 **** gtk_paned_add2(GTK_PANED(paned), vbox_right); gtk_container_add(GTK_CONTAINER(frame), paned); - - gtk_container_add(GTK_CONTAINER(window), frame); gtk_widget_set_events(window, --- 1609,1615 ---- gtk_paned_add2(GTK_PANED(paned), vbox_right); gtk_container_add(GTK_CONTAINER(frame), paned); gtk_container_add(GTK_CONTAINER(window), frame); + gtk_widget_set_size_request(treeview, 240, -1); gtk_widget_set_events(window, Index: input.c =================================================================== RCS file: /cvsroot/beepmp/bmp/beep/input.c,v retrieving revision 1.18 retrieving revision 1.19 diff -C2 -d -r1.18 -r1.19 *** input.c 1 Jan 2004 22:13:37 -0000 1.18 --- input.c 2 Jan 2004 15:41:36 -0000 1.19 *************** *** 322,325 **** --- 322,326 ---- if (ip && !g_list_find(disabled_iplugins, ip) && ip->is_our_file(filename)) { + g_free(filename); return TRUE; } Index: skinwin.c =================================================================== RCS file: /cvsroot/beepmp/bmp/beep/skinwin.c,v retrieving revision 1.11 retrieving revision 1.12 diff -C2 -d -r1.11 -r1.12 *** skinwin.c 26 Dec 2003 08:30:16 -0000 1.11 --- skinwin.c 2 Jan 2004 15:41:36 -0000 1.12 *************** *** 285,289 **** g_free(tmp); tmp = tmptmp; - } } --- 285,288 ---- *************** *** 313,320 **** } - g_object_unref(buf); } - g_free(tmp); } gtk_widget_set_sensitive(scrolled_win, TRUE); --- 312,320 ---- } } + g_object_unref(buf); + g_free(tmp); + } gtk_widget_set_sensitive(scrolled_win, TRUE); Index: util.c =================================================================== RCS file: /cvsroot/beepmp/bmp/beep/util.c,v retrieving revision 1.15 retrieving revision 1.16 diff -C2 -d -r1.15 -r1.16 *** util.c 31 Dec 2003 11:41:45 -0000 1.15 --- util.c 2 Jan 2004 15:41:36 -0000 1.16 *************** *** 531,536 **** GArray *a; ! if ((temp = read_ini_string(filename, section, key)) == NULL) return NULL; a = string_to_garray(temp); g_free(temp); --- 531,538 ---- GArray *a; ! if ((temp = read_ini_string(filename, section, key)) == NULL) { ! g_free(temp); return NULL; + } a = string_to_garray(temp); g_free(temp); *************** *** 931,937 **** if (play_button) ! title = _("Play files"); else ! title = _("Load files"); dialog = gtk_file_selection_new(title); --- 933,939 ---- if (play_button) ! title = _("bmp: Play files"); else ! title = _("bmp: Load files"); dialog = gtk_file_selection_new(title); |
From: <des...@us...> - 2004-01-02 12:38:53
|
Update of /cvsroot/beepmp/bmp In directory sc8-pr-cvs1:/tmp/cvs-serv27855 Modified Files: configure.in beep.spec.in Log Message: - restore configure script version to 0.9.6.2 (got reverted somehow) - install SVG icon in /usr/share/icons - updated RPM spec file Index: configure.in =================================================================== RCS file: /cvsroot/beepmp/bmp/configure.in,v retrieving revision 1.17 retrieving revision 1.18 diff -C2 -d -r1.17 -r1.18 *** configure.in 29 Dec 2003 00:33:27 -0000 1.17 --- configure.in 2 Jan 2004 12:38:50 -0000 1.18 *************** *** 2,6 **** AC_INIT(beep/main.c) ! VERSION=0.9.6.1 PACKAGE=bmp AM_INIT_AUTOMAKE($PACKAGE, $VERSION) --- 2,6 ---- AC_INIT(beep/main.c) ! VERSION=0.9.6.2 PACKAGE=bmp AM_INIT_AUTOMAKE($PACKAGE, $VERSION) Index: beep.spec.in =================================================================== RCS file: /cvsroot/beepmp/bmp/beep.spec.in,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** beep.spec.in 24 Dec 2003 17:29:17 -0000 1.6 --- beep.spec.in 2 Jan 2004 12:38:50 -0000 1.7 *************** *** 82,85 **** --- 82,86 ---- %{_bindir}/beep-media-player %{_datadir}/bmp/* + %{_datadir}/icons/* %{_datadir}/applications/beep.desktop %{_libdir}/libbeep.so.* |
From: <des...@us...> - 2004-01-02 12:38:53
|
Update of /cvsroot/beepmp/bmp/icons In directory sc8-pr-cvs1:/tmp/cvs-serv27855/icons Modified Files: Makefile.am Log Message: - restore configure script version to 0.9.6.2 (got reverted somehow) - install SVG icon in /usr/share/icons - updated RPM spec file Index: Makefile.am =================================================================== RCS file: /cvsroot/beepmp/bmp/icons/Makefile.am,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** Makefile.am 24 Dec 2003 05:37:23 -0000 1.5 --- Makefile.am 2 Jan 2004 12:38:50 -0000 1.6 *************** *** 1,3 **** ! svgiconsdir = $(pkgdatadir) svgicons_DATA = beep.svg --- 1,3 ---- ! svgiconsdir = $(datadir)/icons svgicons_DATA = beep.svg |
From: <mde...@us...> - 2004-01-01 22:15:11
|
Update of /cvsroot/beepmp/bmp In directory sc8-pr-cvs1:/tmp/cvs-serv22397 Modified Files: TODO Log Message: Updated TODO Index: TODO =================================================================== RCS file: /cvsroot/beepmp/bmp/TODO,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** TODO 1 Jan 2004 22:13:37 -0000 1.3 --- TODO 1 Jan 2004 22:14:51 -0000 1.4 *************** *** 14,18 **** Priority I: ! * Write development docs about what has changed and what potential plugin devs should be aware of Priority II: --- 14,19 ---- Priority I: ! (DELETED! Not applicable anymore) * Write development docs about what ! has changed and what potential plugin devs should be aware of Priority II: |
From: <mde...@us...> - 2004-01-01 22:13:56
|
Update of /cvsroot/beepmp/bmp/beep In directory sc8-pr-cvs1:/tmp/cvs-serv22178/beep Modified Files: input.c mainwin.c playlistwin.c Log Message: Updated TODO mainwin.c: touched (actually changes, then reverted) playlistwin.c: touched Index: input.c =================================================================== RCS file: /cvsroot/beepmp/bmp/beep/input.c,v retrieving revision 1.17 retrieving revision 1.18 diff -C2 -d -r1.17 -r1.18 *** input.c 26 Dec 2003 23:59:38 -0000 1.17 --- input.c 1 Jan 2004 22:13:37 -0000 1.18 *************** *** 308,335 **** } - void input_return_tag_value_by_name(gchar * filename, gchar ** artist, - gchar ** title, gchar ** album, - gchar ** genre, guint * tracknum) - { - - GList *node; - InputPlugin *ip; - /* - gchar * tag_value = NULL; - gchar * tag_temp = NULL; - */ - node = get_input_list(); - while (node) { - ip = (InputPlugin *) node->data; - if (ip && !g_list_find(disabled_iplugins, ip) - && ip->is_our_file(filename)) { - (void) ip->return_tag_value_by_name(filename, artist, title, - album, genre, tracknum); - } - node = node->next; - } - - } - gboolean input_check_file(const gchar * filename_p, gboolean show_warning) --- 308,311 ---- Index: mainwin.c =================================================================== RCS file: /cvsroot/beepmp/bmp/beep/mainwin.c,v retrieving revision 1.14 retrieving revision 1.15 diff -C2 -d -r1.14 -r1.15 *** mainwin.c 31 Dec 2003 11:41:45 -0000 1.14 --- mainwin.c 1 Jan 2004 22:13:37 -0000 1.15 *************** *** 1237,1241 **** return TRUE; }; ! if (event && (event->keyval == GDK_Return)) { --- 1237,1241 ---- return TRUE; }; ! if (event && (event->keyval == GDK_Return)) { Index: playlistwin.c =================================================================== RCS file: /cvsroot/beepmp/bmp/beep/playlistwin.c,v retrieving revision 1.16 retrieving revision 1.17 diff -C2 -d -r1.16 -r1.17 *** playlistwin.c 29 Dec 2003 23:12:33 -0000 1.16 --- playlistwin.c 1 Jan 2004 22:13:37 -0000 1.17 *************** *** 1653,1656 **** --- 1653,1657 ---- } + /* FIXME: Handle the keys trough menu */ gboolean playlistwin_keypress(GtkWidget * w, GdkEventKey * event, |
From: <mde...@us...> - 2004-01-01 22:13:56
|
Update of /cvsroot/beepmp/bmp In directory sc8-pr-cvs1:/tmp/cvs-serv22178 Modified Files: TODO Log Message: Updated TODO mainwin.c: touched (actually changes, then reverted) playlistwin.c: touched Index: TODO =================================================================== RCS file: /cvsroot/beepmp/bmp/TODO,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** TODO 29 Dec 2003 00:33:27 -0000 1.2 --- TODO 1 Jan 2004 22:13:37 -0000 1.3 *************** *** 11,13 **** --- 11,20 ---- * Add libmodplug + + Priority I: + * Write development docs about what has changed and what potential plugin devs should be aware of + + Priority II: + + * Add options to JTF "queue", "play", "jump in playlist" |
From: <mde...@us...> - 2003-12-31 13:49:36
|
Update of /cvsroot/beepmp/bmp/beep In directory sc8-pr-cvs1:/tmp/cvs-serv22027 Modified Files: dirbrowser.c Log Message: Index: dirbrowser.c =================================================================== RCS file: /cvsroot/beepmp/bmp/beep/dirbrowser.c,v retrieving revision 1.35 retrieving revision 1.36 diff -C2 -d -r1.35 -r1.36 *** dirbrowser.c 31 Dec 2003 13:07:53 -0000 1.35 --- dirbrowser.c 31 Dec 2003 13:49:33 -0000 1.36 *************** *** 1654,1658 **** gtk_container_add(GTK_CONTAINER(sw), treeview); ! paths = g_list_append(paths, g_strdup("/reiser4/completed")); fstore = bmp_db_return_filestore_fresh(paths); --- 1654,1658 ---- gtk_container_add(GTK_CONTAINER(sw), treeview); ! paths = g_list_append(paths, g_strdup("")); fstore = bmp_db_return_filestore_fresh(paths); |
From: <mde...@us...> - 2003-12-31 13:07:56
|
Update of /cvsroot/beepmp/bmp/beep In directory sc8-pr-cvs1:/tmp/cvs-serv15006/beep Modified Files: dirbrowser.c Log Message: Fixed empty browser on non-existant $HOME/.bmp/dbrc Index: dirbrowser.c =================================================================== RCS file: /cvsroot/beepmp/bmp/beep/dirbrowser.c,v retrieving revision 1.34 retrieving revision 1.35 diff -C2 -d -r1.34 -r1.35 *** dirbrowser.c 31 Dec 2003 10:06:10 -0000 1.34 --- dirbrowser.c 31 Dec 2003 13:07:53 -0000 1.35 *************** *** 525,530 **** if (!g_file_get_contents(filename, &buffer, &filesize, NULL)) { ! g_free(filename); ! return NULL; } --- 525,530 ---- if (!g_file_get_contents(filename, &buffer, &filesize, NULL)) { ! /* FIXME: The file should be actually recreated here! */ ! buffer = g_strdup("/:/"); } |
From: <mde...@us...> - 2003-12-31 11:41:48
|
Update of /cvsroot/beepmp/bmp/beep In directory sc8-pr-cvs1:/tmp/cvs-serv2137 Modified Files: mainwin.c playlist_list.c util.c Log Message: mainwin.c: Fixed mainwin.c JTF always jumps to first file only playlist_list.c: Rendering changes util.c: No actual changes Index: mainwin.c =================================================================== RCS file: /cvsroot/beepmp/bmp/beep/mainwin.c,v retrieving revision 1.13 retrieving revision 1.14 diff -C2 -d -r1.13 -r1.14 *** mainwin.c 29 Dec 2003 23:12:33 -0000 1.13 --- mainwin.c 31 Dec 2003 11:41:45 -0000 1.14 *************** *** 1229,1235 **** ! static gboolean mainwin_jump_to_file_keypress_cb(GtkWidget * widget, GdkEventKey * event, ! gpointer userdata) { if (event && (event->keyval == GDK_Escape)) { --- 1229,1235 ---- ! static gboolean mainwin_jump_to_file_keypress_cb(GtkWidget * object, GdkEventKey * event, ! gpointer widget) { if (event && (event->keyval == GDK_Escape)) { *************** *** 1240,1292 **** if (event && (event->keyval == GDK_Return)) { ! GtkTreeIter iter; ! gchar *pos; ! gint64 pos_gint = -1; ! ! GtkTreeModel *model; ! model = gtk_tree_view_get_model(userdata); ! if (gtk_tree_model_get_iter_first(model, &iter)) { ! gtk_tree_model_get(model, &iter, 0, &pos, -1); ! // This *is* kinda retarded, yeah.. ! // FIXME: The whole column should be integer not text ! pos_gint = g_ascii_strtoull(pos, NULL, 10); ! if (pos_gint >= 0) { ! if (get_input_playing()) { input_stop(); ! } ! playlist_set_position(pos_gint - 1); playlist_play(); - } - } ! return TRUE; }; - return FALSE; } - - /* - static gboolean mainwin_jump_to_file_entry_keypress_cb(GtkWidget * widget, GdkEventKey * event, gpointer userdata) - { - if (!event) - return FALSE; - - switch (event->keyval) - { - case GDK_Escape: - gtk_widget_destroy(mainwin_jtf); - break; - default: - return FALSE; - } - - return TRUE; - } - */ static void mainwin_jump_to_file_jump_cb(GtkButton * widget, --- 1240,1267 ---- if (event && (event->keyval == GDK_Return)) { ! gchar *pos; ! GtkTreeIter iter; ! guint64 pos_guint; ! GtkTreeSelection *selection; ! GtkTreeModel *model; ! model = gtk_tree_view_get_model(GTK_TREE_VIEW(widget)); ! selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(widget)); ! gtk_tree_selection_get_selected(selection, NULL, &iter); ! gtk_tree_model_get(model, &iter, 0, &pos, -1); ! pos_guint = g_ascii_strtoull(pos, NULL, 10); ! if (get_input_playing()) input_stop(); ! playlist_set_position(pos_guint - 1); playlist_play(); ! return TRUE; }; return FALSE; } static void mainwin_jump_to_file_jump_cb(GtkButton * widget, Index: playlist_list.c =================================================================== RCS file: /cvsroot/beepmp/bmp/beep/playlist_list.c,v retrieving revision 1.21 retrieving revision 1.22 diff -C2 -d -r1.21 -r1.22 *** playlist_list.c 29 Dec 2003 14:00:55 -0000 1.21 --- playlist_list.c 31 Dec 2003 11:41:45 -0000 1.22 *************** *** 419,423 **** } ! convert_title_text(title); pos = playlist_get_queue_position(entry); --- 419,423 ---- } ! // convert_title_text(title); pos = playlist_get_queue_position(entry); Index: util.c =================================================================== RCS file: /cvsroot/beepmp/bmp/beep/util.c,v retrieving revision 1.14 retrieving revision 1.15 diff -C2 -d -r1.14 -r1.15 *** util.c 26 Dec 2003 15:47:45 -0000 1.14 --- util.c 31 Dec 2003 11:41:45 -0000 1.15 *************** *** 1152,1155 **** --- 1152,1157 ---- *match = '\0'; } + + } |
From: <mde...@us...> - 2003-12-31 10:06:13
|
Update of /cvsroot/beepmp/bmp/beep In directory sc8-pr-cvs1:/tmp/cvs-serv20721 Modified Files: dirbrowser.c Log Message: Added label to filter, leak & structural cleanups Index: dirbrowser.c =================================================================== RCS file: /cvsroot/beepmp/bmp/beep/dirbrowser.c,v retrieving revision 1.33 retrieving revision 1.34 diff -C2 -d -r1.33 -r1.34 *** dirbrowser.c 31 Dec 2003 00:01:56 -0000 1.33 --- dirbrowser.c 31 Dec 2003 10:06:10 -0000 1.34 *************** *** 428,431 **** --- 428,432 ---- NULL, NULL, NULL)); } + g_free(name_real); } *************** *** 476,481 **** --- 477,487 ---- } + g_list_foreach(list, (GFunc) g_free, NULL); g_list_free(list); + + g_list_foreach(files, (GFunc) g_free, NULL); g_list_free(files); + + g_list_foreach(dirs, (GFunc) g_free, NULL); g_list_free(dirs); *************** *** 523,526 **** --- 529,535 ---- } + + g_free(filename); + lines = g_strsplit(buffer, "\n", 0); g_free(buffer); *************** *** 763,766 **** --- 772,791 ---- } + static void bmp_db_mdb_add_all(GtkButton * button, gpointer treeview) { + + gtk_tree_selection_select_all(gtk_tree_view_get_selection + (treeview)); + bmp_db_mdb_enq_play(button, treeview, FALSE); + + } + + static void bmp_db_mdb_add_all_wrapper(GtkEntry * widget, gpointer treeview) { + + gtk_tree_selection_select_all(gtk_tree_view_get_selection + (treeview)); + bmp_db_mdb_enq_play(NULL, treeview, FALSE); + gtk_entry_set_text(widget, g_strdup("")); + } + static void bmp_db_mdb_row_activated(GtkTreeView * treeview, *************** *** 1207,1212 **** static gint bmp_db_keypress(GtkWidget * grab_widget, ! GdkEventKey * event, gpointer data) ! { if (event && (event->keyval == GDK_Escape)) { gtk_widget_hide(data); --- 1232,1236 ---- static gint bmp_db_keypress(GtkWidget * grab_widget, ! GdkEventKey * event, gpointer data) { if (event && (event->keyval == GDK_Escape)) { gtk_widget_hide(data); *************** *** 1364,1368 **** gtk_widget_set_sensitive(data, FALSE); ! gtk_tree_store_clear(gtk_tree_view_get_model(data)); /* lowercase the key string */ --- 1388,1392 ---- gtk_widget_set_sensitive(data, FALSE); ! if (GTK_IS_TREE_STORE(gtk_tree_view_get_model(data))) gtk_tree_store_clear(gtk_tree_view_get_model(data)); /* lowercase the key string */ *************** *** 1379,1408 **** desc_buf = filename; - /* words[0] = NULL equiv nw = 0 */ - /* words[1] = NULL equiv nw = 1 */ - if (words[0] == NULL) { match = TRUE; } else { - /* - * FIXME: The search string should be adapted to the - * current display setting, e.g. if the user has set it to - * "%p - %t" then build the match string like that too, or - * even better, search for each of the tags seperatly. - * - * In any case the string to match should _never_ contain - * something the user can't actually see in the playlist. - */ - - /* I've moved the code to do lowercasing and stuff because - IMO that should be up to the implementation of the - match algorithm. */ - - /* Compare the key words to the string - if all the words - match, add to the ListStore */ - - /* FIXME: This shouldn't be handled here, but rather in - the playlist functions, which should return the - filename instead of the title if title == NULL. */ match = bmp_db_match(filename, words); } --- 1403,1409 ---- *************** *** 1423,1430 **** 3, filename, -1); - - // g_free(basename); - // g_free(pathname); - // g_free(filename); } --- 1424,1427 ---- *************** *** 1465,1468 **** --- 1462,1471 ---- audio_pixbuf, TRUE, NULL); + if (file_list != NULL) { + file_list = g_list_first(file_list); + g_list_foreach(file_list, (GFunc) g_free, NULL); + g_list_free(file_list); + file_list = NULL; + } while (paths) { *************** *** 1570,1574 **** GtkWidget *label_header; GtkWidget *paned; ! GtkWidget *button_enqueue, *button_play; GtkWidget *button_box; GtkWidget *editable; --- 1573,1577 ---- GtkWidget *label_header; GtkWidget *paned; ! GtkWidget *button_enqueue, *button_play, *button_all; GtkWidget *button_box; GtkWidget *editable; *************** *** 1600,1604 **** pango_attr_list_insert(attrs, attr); ! label_header = gtk_label_new(_("Filesystem:")); gtk_label_set_attributes(GTK_LABEL(label_header), attrs); gtk_misc_set_alignment(GTK_MISC(label_header), 0.0, 0.0); --- 1603,1607 ---- pango_attr_list_insert(attrs, attr); ! label_header = gtk_label_new_with_mnemonic("_Filter:"); gtk_label_set_attributes(GTK_LABEL(label_header), attrs); gtk_misc_set_alignment(GTK_MISC(label_header), 0.0, 0.0); *************** *** 1648,1653 **** G_CALLBACK(bmp_db_keypress), window); - gtk_container_add(GTK_CONTAINER(sw), treeview); paths = g_list_append(paths, g_strdup("/reiser4/completed")); --- 1651,1656 ---- G_CALLBACK(bmp_db_keypress), window); + gtk_container_add(GTK_CONTAINER(sw), treeview); paths = g_list_append(paths, g_strdup("/reiser4/completed")); *************** *** 1657,1660 **** --- 1660,1664 ---- button_enqueue = gtk_button_new_from_stock(GTK_STOCK_ADD); + button_all = gtk_button_new_with_label("Add all"); button_play = gtk_button_new_with_label("Play"); button_box = gtk_hbutton_box_new(); *************** *** 1664,1674 **** FALSE, 4); ! editable = gtk_entry_new(); ! gtk_box_pack_start(GTK_BOX(vbox_right), editable, FALSE, FALSE, 8); gtk_box_pack_start(GTK_BOX(vbox_right), button_box, FALSE, FALSE, 4); gtk_box_pack_start(GTK_CONTAINER(button_box), button_enqueue, FALSE, FALSE, 4); gtk_box_pack_start(GTK_CONTAINER(button_box), button_play, FALSE, FALSE, 4); --- 1668,1682 ---- FALSE, 4); ! gtk_box_pack_start(GTK_BOX(vbox_right), label_header, FALSE, ! FALSE, 0); ! editable = gtk_entry_new(); ! gtk_box_pack_start(GTK_BOX(vbox_right), editable, FALSE, FALSE, 4); + gtk_label_set_mnemonic_widget(label_header, editable); gtk_box_pack_start(GTK_BOX(vbox_right), button_box, FALSE, FALSE, 4); gtk_box_pack_start(GTK_CONTAINER(button_box), button_enqueue, FALSE, FALSE, 4); + gtk_box_pack_start(GTK_CONTAINER(button_box), button_all, FALSE, FALSE, 4); gtk_box_pack_start(GTK_CONTAINER(button_box), button_play, FALSE, FALSE, 4); *************** *** 1676,1679 **** --- 1684,1691 ---- G_CALLBACK(bmp_db_mdb_enqueue), fstore); + g_signal_connect(G_OBJECT(button_all), "clicked", + G_CALLBACK(bmp_db_mdb_add_all), fstore); + + g_signal_connect(G_OBJECT(button_play), "clicked", G_CALLBACK(bmp_db_mdb_play), fstore); *************** *** 1690,1693 **** --- 1702,1706 ---- g_signal_connect(G_OBJECT(editable), "changed", G_CALLBACK(bmp_db_mdb_editable_changed), fstore); + g_signal_connect(G_OBJECT(editable), "activate", G_CALLBACK(bmp_db_mdb_add_all_wrapper), fstore); /* bmp_db_apply_setup(GTK_TREE_VIEW(treeview)); */ |
From: <mde...@us...> - 2003-12-31 00:02:00
|
Update of /cvsroot/beepmp/bmp/beep In directory sc8-pr-cvs1:/tmp/cvs-serv27966 Modified Files: dirbrowser.c Log Message: dirbrowser.c: Added optimizations to filter Index: dirbrowser.c =================================================================== RCS file: /cvsroot/beepmp/bmp/beep/dirbrowser.c,v retrieving revision 1.32 retrieving revision 1.33 diff -C2 -d -r1.32 -r1.33 *** dirbrowser.c 30 Dec 2003 23:42:07 -0000 1.32 --- dirbrowser.c 31 Dec 2003 00:01:56 -0000 1.33 *************** *** 1299,1308 **** --- 1299,1312 ---- gchar *key; gchar *song_lc; + gchar *song_lc_base; while (keys[i] != NULL) { key = g_ascii_strdown(keys[i], strlen(keys[i])); song_lc = g_ascii_strdown(song, strlen(song)); + song_lc_base = g_path_get_basename(song_lc); if (!g_strrstr(song_lc, key)) { + g_free(song_lc); + g_free(song_lc_base); return FALSE; } *************** *** 1311,1314 **** --- 1315,1321 ---- } + g_free(song_lc); + g_free(song_lc_base); + return TRUE; } *************** *** 1343,1352 **** audio_pixbuf, TRUE, NULL); - gtk_widget_set_sensitive(data, FALSE); - - playlist = file_list; key = g_strdup(gtk_entry_get_text(GTK_ENTRY(widget))); /* Chop the key string into ' '-separeted key words */ words = g_strsplit(key, " ", 0); --- 1350,1361 ---- audio_pixbuf, TRUE, NULL); playlist = file_list; key = g_strdup(gtk_entry_get_text(GTK_ENTRY(widget))); + if (strlen(key) == 1) { + gtk_widget_set_sensitive(data, TRUE); + return; + } + /* Chop the key string into ' '-separeted key words */ words = g_strsplit(key, " ", 0); *************** *** 1373,1379 **** /* words[1] = NULL equiv nw = 1 */ ! if (words[0] == NULL) match = TRUE; ! else { /* * FIXME: The search string should be adapted to the --- 1382,1388 ---- /* words[1] = NULL equiv nw = 1 */ ! if (words[0] == NULL) { match = TRUE; ! } else { /* * FIXME: The search string should be adapted to the *************** *** 1476,1480 **** -1); ! file_list = g_list_append(file_list, basename); files = files->next; } --- 1485,1489 ---- -1); ! file_list = g_list_append(file_list, files->data); files = files->next; } |
From: <mde...@us...> - 2003-12-30 23:42:11
|
Update of /cvsroot/beepmp/bmp/beep In directory sc8-pr-cvs1:/tmp/cvs-serv23743 Modified Files: dirbrowser.c Log Message: dirbrowser.c: Structural cleanups in dirbrowser filtering code Index: dirbrowser.c =================================================================== RCS file: /cvsroot/beepmp/bmp/beep/dirbrowser.c,v retrieving revision 1.31 retrieving revision 1.32 diff -C2 -d -r1.31 -r1.32 *** dirbrowser.c 30 Dec 2003 23:20:48 -0000 1.31 --- dirbrowser.c 30 Dec 2003 23:42:07 -0000 1.32 *************** *** 706,711 **** g_list_free(paths); ! GtkWidget *store = ! GTK_WIDGET(bmp_db_return_filestore_model_fresh(paths_f)); gtk_tree_view_set_model(user_data, GTK_TREE_MODEL(store)); --- 706,710 ---- g_list_free(paths); ! GtkWidget *store = bmp_db_return_filestore_model_fresh(paths_f); gtk_tree_view_set_model(user_data, GTK_TREE_MODEL(store)); *************** *** 1329,1332 **** --- 1328,1333 ---- gchar *desc_buf; + gchar *basename, *pathname; + model = /* filename */ /* path */ /* full non-UTF-8 path */ *************** *** 1352,1356 **** /* FIXME: Remove the connected signals before clearing (row-selected will still eventually arrive once) */ ! // gtk_tree_store_clear(gtk_tree_view_get_model(data)); /* lowercase the key string */ --- 1353,1359 ---- /* FIXME: Remove the connected signals before clearing (row-selected will still eventually arrive once) */ ! gtk_widget_set_sensitive(data, FALSE); ! ! gtk_tree_store_clear(gtk_tree_view_get_model(data)); /* lowercase the key string */ *************** *** 1397,1411 **** if (match) { gtk_tree_store_append(GTK_TREE_STORE(model), &iter, NULL); gtk_tree_store_set(GTK_TREE_STORE(model), &iter, /* FIXME: We ignore conversion errors */ 0, buf_file, ! 1, g_filename_to_utf8(g_basename(filename), -1, NULL, NULL, NULL), ! 2, g_filename_to_utf8(g_path_get_dirname(filename), -1, NULL, NULL, NULL ), 3, filename, -1); ! ! } --- 1400,1421 ---- if (match) { + + gtk_tree_store_append(GTK_TREE_STORE(model), &iter, NULL); + + basename = g_basename(filename); + pathname = g_path_get_dirname(filename); + gtk_tree_store_set(GTK_TREE_STORE(model), &iter, /* FIXME: We ignore conversion errors */ 0, buf_file, ! 1, g_filename_to_utf8(basename, -1, NULL, NULL, NULL), ! 2, g_filename_to_utf8(pathname, -1, NULL, NULL, NULL ), 3, filename, -1); ! // g_free(basename); ! // g_free(pathname); ! // g_free(filename); } *************** *** 1425,1429 **** GtkTreeModel *model; GtkTreeIter iter; ! GList * files; model = --- 1435,1440 ---- GtkTreeModel *model; GtkTreeIter iter; ! GList *files; ! gchar *basename, *pathname; model = *************** *** 1445,1448 **** --- 1456,1460 ---- audio_pixbuf, TRUE, NULL); + while (paths) { gchar *path = paths->data; *************** *** 1452,1464 **** gtk_tree_store_append(GTK_TREE_STORE(model), &iter, NULL); gtk_tree_store_set(GTK_TREE_STORE(model), &iter, /* FIXME: We ignore conversion errors */ 0, buf_file, ! 1, g_filename_to_utf8(g_basename(files->data), -1, NULL, NULL, NULL), ! 2, g_filename_to_utf8(g_path_get_dirname(files->data), -1, NULL, NULL, NULL ), 3, files->data, -1); ! file_list = g_list_append(file_list, g_strdup(files->data)); files = files->next; } --- 1464,1480 ---- gtk_tree_store_append(GTK_TREE_STORE(model), &iter, NULL); + + basename = g_basename(files->data); + pathname = g_path_get_dirname(files->data); + gtk_tree_store_set(GTK_TREE_STORE(model), &iter, /* FIXME: We ignore conversion errors */ 0, buf_file, ! 1, g_filename_to_utf8( basename , -1, NULL, NULL, NULL), ! 2, g_filename_to_utf8( pathname , -1, NULL, NULL, NULL ), 3, files->data, -1); ! file_list = g_list_append(file_list, basename); files = files->next; } |
From: <mde...@us...> - 2003-12-30 23:20:55
|
Update of /cvsroot/beepmp/bmp/beep In directory sc8-pr-cvs1:/tmp/cvs-serv17853 Modified Files: dirbrowser.c Log Message: Replaced filtering algorithms with those from mainwin.c JTF Index: dirbrowser.c =================================================================== RCS file: /cvsroot/beepmp/bmp/beep/dirbrowser.c,v retrieving revision 1.30 retrieving revision 1.31 diff -C2 -d -r1.30 -r1.31 *** dirbrowser.c 30 Dec 2003 23:03:26 -0000 1.30 --- dirbrowser.c 30 Dec 2003 23:20:48 -0000 1.31 *************** *** 1294,1310 **** } - static void *bmp_db_mdb_editable_changed(GtkWidget *editable, gpointer data) { ! /* Yes this is partially duplicate functionality with bmp_db_return_filestore_model_fresh, ! but currently this makes sense to be faster, we don't want to re-read all the ! directories. ! Best however would be to rewrite everything so the duplicate functionality ! is removed or strictly minimized. */ ! GtkTreeModel *model; GdkPixbuf *buf_file; ! GtkTreeIter iter; ! GList * files = g_list_copy(file_list); ! gchar * key = g_strdup(gtk_entry_get_text(GTK_ENTRY(editable))); model = --- 1294,1331 ---- } ! static gboolean bmp_db_match(gchar * song, gchar ** keys) ! { ! gint i = 0; ! gchar *key; ! gchar *song_lc; ! ! while (keys[i] != NULL) { ! key = g_ascii_strdown(keys[i], strlen(keys[i])); ! song_lc = g_ascii_strdown(song, strlen(song)); ! ! if (!g_strrstr(song_lc, key)) { ! return FALSE; ! } ! ! i++; ! } ! ! return TRUE; ! } ! ! ! ! static void bmp_db_mdb_editable_changed(GtkWidget * widget, ! gpointer data) { ! ! gchar **words; ! GList *playlist; ! gchar *key; ! GtkTreeIter iter; GtkTreeModel *model; + gboolean match = FALSE; GdkPixbuf *buf_file; ! gchar *desc_buf; model = *************** *** 1323,1346 **** gtk_widget_set_sensitive(data, FALSE); - while (files) { ! if (g_strstr_len(g_ascii_strdown(g_basename(files->data), strlen(g_basename(files->data))), ! strlen(g_basename(files->data)), ! g_ascii_strdown(key,strlen(key))) != NULL) { gtk_tree_store_append(GTK_TREE_STORE(model), &iter, NULL); gtk_tree_store_set(GTK_TREE_STORE(model), &iter, /* FIXME: We ignore conversion errors */ 0, buf_file, ! 1, g_filename_to_utf8(g_basename(files->data), -1, NULL, NULL, NULL), ! 2, g_filename_to_utf8(g_path_get_dirname(files->data), -1, NULL, NULL, NULL ), ! 3, files->data, -1); ! } ! files = files->next; } ! gtk_tree_view_set_model(data, sort_model); gtk_widget_set_sensitive(data, TRUE); } --- 1344,1420 ---- gtk_widget_set_sensitive(data, FALSE); ! playlist = file_list; ! key = g_strdup(gtk_entry_get_text(GTK_ENTRY(widget))); ! ! /* Chop the key string into ' '-separeted key words */ ! words = g_strsplit(key, " ", 0); ! ! /* FIXME: Remove the connected signals before clearing (row-selected will still eventually arrive once) */ ! // gtk_tree_store_clear(gtk_tree_view_get_model(data)); ! ! /* lowercase the key string */ ! ! while (playlist) { ! ! gchar *filename; ! ! filename = playlist->data; ! ! if (strchr(filename, '/')) ! desc_buf = strrchr(filename, '/') + 1; ! else ! desc_buf = filename; ! ! /* words[0] = NULL equiv nw = 0 */ ! /* words[1] = NULL equiv nw = 1 */ ! ! if (words[0] == NULL) ! match = TRUE; ! else { ! /* ! * FIXME: The search string should be adapted to the ! * current display setting, e.g. if the user has set it to ! * "%p - %t" then build the match string like that too, or ! * even better, search for each of the tags seperatly. ! * ! * In any case the string to match should _never_ contain ! * something the user can't actually see in the playlist. ! */ ! ! /* I've moved the code to do lowercasing and stuff because ! IMO that should be up to the implementation of the ! match algorithm. */ ! ! /* Compare the key words to the string - if all the words ! match, add to the ListStore */ ! ! /* FIXME: This shouldn't be handled here, but rather in ! the playlist functions, which should return the ! filename instead of the title if title == NULL. */ ! match = bmp_db_match(filename, words); ! } ! ! if (match) { gtk_tree_store_append(GTK_TREE_STORE(model), &iter, NULL); gtk_tree_store_set(GTK_TREE_STORE(model), &iter, /* FIXME: We ignore conversion errors */ 0, buf_file, ! 1, g_filename_to_utf8(g_basename(filename), -1, NULL, NULL, NULL), ! 2, g_filename_to_utf8(g_path_get_dirname(filename), -1, NULL, NULL, NULL ), ! 3, filename, -1); ! ! ! } ! ! playlist = playlist->next; } ! gtk_tree_view_set_model(data, model); gtk_widget_set_sensitive(data, TRUE); + g_strfreev(words); + g_free(key); } |
From: <mde...@us...> - 2003-12-30 23:03:33
|
Update of /cvsroot/beepmp/bmp/beep In directory sc8-pr-cvs1:/tmp/cvs-serv14451 Modified Files: dirbrowser.c Log Message: Added filter to dirbrowser (WIP) Index: dirbrowser.c =================================================================== RCS file: /cvsroot/beepmp/bmp/beep/dirbrowser.c,v retrieving revision 1.29 retrieving revision 1.30 diff -C2 -d -r1.29 -r1.30 *** dirbrowser.c 30 Dec 2003 12:49:57 -0000 1.29 --- dirbrowser.c 30 Dec 2003 23:03:26 -0000 1.30 *************** *** 105,108 **** --- 105,109 ---- static GtkTreeModel *bmp_db_return_filestore_model_fresh(GList * paths); + GList * file_list = NULL; /* The function adds a track to the model, specified by artist, album *************** *** 1283,1287 **** * They are used directly." */ ! g_list_concat(files, bmp_db_return_files_from_path(name_real)); } } --- 1284,1288 ---- * They are used directly." */ ! files = g_list_concat(files, bmp_db_return_files_from_path(name_real)); } } *************** *** 1293,1312 **** } static GtkTreeModel *bmp_db_return_filestore_model_fresh(GList * paths) { - GtkTreeStore *file_store; GdkPixbuf *buf_file; ! ! file_store = ! /* filename */ /* path */ /* full non-UTF-8 path */ gtk_tree_store_new(4, GDK_TYPE_PIXBUF, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING); GtkTreeModel *sort_model = ! gtk_tree_model_sort_new_with_model(GTK_TREE_MODEL(file_store)); ! GtkTreeModel *model = ! gtk_tree_model_sort_get_model(GTK_TREE_MODEL_SORT(sort_model)); ! gtk_tree_sortable_set_default_sort_func(GTK_TREE_SORTABLE(sort_model), bmp_db_mdb_sort_func, NULL, --- 1294,1362 ---- } + static void *bmp_db_mdb_editable_changed(GtkWidget *editable, gpointer data) { + + /* Yes this is partially duplicate functionality with bmp_db_return_filestore_model_fresh, + but currently this makes sense to be faster, we don't want to re-read all the + directories. + Best however would be to rewrite everything so the duplicate functionality + is removed or strictly minimized. */ + + GtkTreeModel *model; + GdkPixbuf *buf_file; + GtkTreeIter iter; + GList * files = g_list_copy(file_list); + gchar * key = g_strdup(gtk_entry_get_text(GTK_ENTRY(editable))); + + model = + /* filename */ /* path */ /* full non-UTF-8 path */ + gtk_tree_store_new(4, GDK_TYPE_PIXBUF, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING); + + GtkTreeModel *sort_model = + gtk_tree_model_sort_new_with_model(GTK_TREE_MODEL(model)); + + gtk_tree_sortable_set_default_sort_func(GTK_TREE_SORTABLE(sort_model), + bmp_db_mdb_sort_func, NULL, + NULL); + buf_file = gdk_pixbuf_new_from_inline(sizeof (audio_pixbuf), + audio_pixbuf, TRUE, NULL); + + gtk_widget_set_sensitive(data, FALSE); + + while (files) { + + if (g_strstr_len(g_ascii_strdown(g_basename(files->data), strlen(g_basename(files->data))), + strlen(g_basename(files->data)), + g_ascii_strdown(key,strlen(key))) != NULL) { + gtk_tree_store_append(GTK_TREE_STORE(model), &iter, NULL); + gtk_tree_store_set(GTK_TREE_STORE(model), &iter, + /* FIXME: We ignore conversion errors */ + 0, buf_file, + 1, g_filename_to_utf8(g_basename(files->data), -1, NULL, NULL, NULL), + 2, g_filename_to_utf8(g_path_get_dirname(files->data), -1, NULL, NULL, NULL ), + 3, files->data, + -1); + + } + files = files->next; + } + + gtk_tree_view_set_model(data, sort_model); + gtk_widget_set_sensitive(data, TRUE); + } + static GtkTreeModel *bmp_db_return_filestore_model_fresh(GList * paths) { GdkPixbuf *buf_file; + GtkTreeModel *model; + GtkTreeIter iter; + GList * files; ! model = ! /* filename */ /* path */ /* full non-UTF-8 path */ gtk_tree_store_new(4, GDK_TYPE_PIXBUF, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING); GtkTreeModel *sort_model = ! gtk_tree_model_sort_new_with_model(GTK_TREE_MODEL(model)); gtk_tree_sortable_set_default_sort_func(GTK_TREE_SORTABLE(sort_model), bmp_db_mdb_sort_func, NULL, *************** *** 1318,1332 **** gint ctr = 0; ! buf_file = gdk_pixbuf_new_from_inline(sizeof(audio_pixbuf), audio_pixbuf, TRUE, NULL); - while (paths) { gchar *path = paths->data; ! GList *files = bmp_db_return_files_from_path(path); ! ! GtkTreeIter iter; ! GtkTreeIter iter_albums; ! GtkTreeIter iter_tracks; while (files) { --- 1368,1377 ---- gint ctr = 0; ! buf_file = gdk_pixbuf_new_from_inline(sizeof (audio_pixbuf), audio_pixbuf, TRUE, NULL); while (paths) { gchar *path = paths->data; ! files = bmp_db_return_files_from_path(path); while (files) { *************** *** 1340,1345 **** 3, files->data, -1); ! ! g_free(files->data); files = files->next; } --- 1385,1390 ---- 3, files->data, -1); ! ! file_list = g_list_append(file_list, g_strdup(files->data)); files = files->next; } *************** *** 1357,1360 **** --- 1402,1408 ---- gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(progressbar_db), 1.0); g_object_unref(buf_file); + + file_list = g_list_first(file_list); + return sort_model; } *************** *** 1425,1429 **** GtkWidget *button_enqueue, *button_play; GtkWidget *button_box; ! if (!window) { --- 1473,1479 ---- GtkWidget *button_enqueue, *button_play; GtkWidget *button_box; ! GtkWidget *editable; ! GtkWidget *fstore; ! GList *paths = NULL; if (!window) { *************** *** 1455,1462 **** gtk_misc_set_alignment(GTK_MISC(label_header), 0.0, 0.0); - treeview = bmp_db_return_treeview_fresh(); - sw = gtk_scrolled_window_new(NULL, NULL); sw_right = gtk_scrolled_window_new(NULL, NULL); --- 1505,1510 ---- *************** *** 1502,1511 **** gtk_container_add(GTK_CONTAINER(sw), treeview); - GtkWidget *fstore; - /* FIXME: clean up variables, move them to start */ ! GList *paths = NULL; ! paths = g_list_append(paths, ""); fstore = bmp_db_return_filestore_fresh(paths); --- 1550,1556 ---- gtk_container_add(GTK_CONTAINER(sw), treeview); ! paths = g_list_append(paths, g_strdup("/reiser4/completed")); fstore = bmp_db_return_filestore_fresh(paths); *************** *** 1519,1522 **** --- 1564,1573 ---- gtk_box_pack_start(GTK_BOX(vbox_right), progressbar_db, FALSE, FALSE, 4); + + editable = gtk_entry_new(); + + gtk_box_pack_start(GTK_BOX(vbox_right), editable, FALSE, FALSE, 8); + + gtk_box_pack_start(GTK_BOX(vbox_right), button_box, FALSE, FALSE, 4); gtk_box_pack_start(GTK_CONTAINER(button_box), button_enqueue, FALSE, FALSE, 4); *************** *** 1529,1534 **** G_CALLBACK(bmp_db_mdb_play), fstore); ! /* FIXME: Uncommenting this gives us a SEGV? */ ! // g_list_foreach(paths, (GFunc) g_free, NULL); g_list_free(paths); --- 1580,1584 ---- G_CALLBACK(bmp_db_mdb_play), fstore); ! g_list_foreach(paths, (GFunc) g_free, NULL); g_list_free(paths); *************** *** 1539,1542 **** --- 1589,1594 ---- g_signal_connect(G_OBJECT(fstore), "row-activated", G_CALLBACK(bmp_db_mdb_row_activated), NULL); + + g_signal_connect(G_OBJECT(editable), "changed", G_CALLBACK(bmp_db_mdb_editable_changed), fstore); /* bmp_db_apply_setup(GTK_TREE_VIEW(treeview)); */ |