1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1111 1112 1113 1114 1115 1116 1117 1118 1119 1120 1121 1122 1123 1124 1125 1126 1127 1128 1129 1130 1131 1132 1133 1134 1135 1136 1137 1138 1139 1140 1141 1142 1143 1144 1145 1146 1147 1148 1149 1150 1151 1152 1153 1154 1155 1156 1157 1158 1159 1160 1161 1162 1163 1164 1165 1166 1167 1168 1169 1170 1171 1172 1173 1174 1175 1176 1177 1178 1179 1180 1181 1182 1183 1184 1185 1186 1187 1188 1189 1190 1191 1192 1193 1194 1195 1196 1197 1198 1199 1200 1201 1202 1203 1204 1205 1206 1207 1208 1209 1210 1211 1212 1213 1214 1215 1216 1217 1218 1219 1220 1221 1222 1223 1224 1225 1226 1227 1228 1229 1230 1231 1232 1233 1234 1235 1236 1237 1238 1239 1240 1241 1242 1243 1244 1245 1246 1247 1248 1249 1250 1251 1252 1253 1254 1255 1256 1257 1258 1259 1260 1261 1262 1263 1264 1265 1266 1267 1268 1269 1270 1271 1272 1273 1274 1275 1276 1277 1278 1279 1280 1281 1282 1283 1284 1285 1286 1287 1288 1289 1290 1291 1292 1293 1294 1295 1296 1297 1298 1299 1300 1301 1302 1303 1304 1305 1306 1307 1308 1309 1310 1311 1312 1313 1314 1315 1316 1317 1318 1319 1320 1321 1322 1323 1324 1325 1326 1327 1328 1329 1330 1331 1332 1333 1334 1335 1336 1337 1338 1339 1340 1341 1342 1343 1344 1345 1346 1347 1348 1349 1350 1351 1352 1353 1354 1355 1356 1357 1358 1359 1360 1361 1362 1363 1364 1365 1366 1367 1368 1369 1370 1371 1372 1373 1374 1375 1376 1377 1378 1379 1380 1381 1382 1383 1384 1385 1386 1387 1388 1389 1390 1391 1392 1393 1394 1395 1396 1397 1398 1399 1400 1401 1402 1403 1404 1405 1406 1407 1408 1409 1410 1411 1412 1413 1414 1415 1416 1417 1418 1419 1420 1421 1422 1423 1424 1425 1426 1427 1428 1429 1430 1431 1432 1433 1434 1435 1436 1437 1438 1439 1440 1441 1442 1443 1444 1445 1446 1447 1448 1449 1450 1451 1452 1453 1454 1455 1456 1457 1458 1459 1460 1461 1462 1463 1464 1465 1466 1467 1468 1469 1470 1471 1472 1473 1474 1475 1476 1477 1478 1479 1480 1481 1482 1483 1484 1485 1486 1487 1488 1489 1490 1491 1492 1493 1494 1495 1496 1497 1498 1499 1500 1501 1502 1503 1504 1505 1506 1507 1508 1509 1510 1511 1512 1513 1514 1515 1516 1517 1518 1519 1520 1521 1522 1523 1524 1525 1526 1527 1528 1529 1530 1531 1532 1533 1534 1535 1536 1537 1538 1539 1540 1541 1542 1543 1544 1545 1546 1547 1548 1549 1550 1551 1552 1553 1554 1555 1556 1557 1558 1559 1560 1561 1562 1563 1564 1565 1566 1567 1568 1569 1570 1571 1572 1573 1574 1575 1576 1577 1578 1579 1580 1581 1582 1583 1584 1585 1586 1587 1588 1589 1590 1591 1592 1593 1594 1595 1596 1597 1598 1599 1600 1601 1602 1603 1604 1605 1606 1607 1608 1609 1610 1611 1612 1613 1614 1615 1616 1617 1618 1619 1620 1621 1622 1623 1624 1625 1626 1627 1628 1629 1630 1631 1632 1633 1634 1635 1636 1637 1638 1639 1640 1641 1642 1643 1644 1645 1646 1647 1648 1649 1650 1651 1652 1653 1654 1655 1656 1657 1658 1659 1660 1661 1662 1663 1664 1665 1666 1667 1668 1669 1670 1671 1672 1673 1674 1675 1676 1677 1678 1679 1680 1681 1682 1683 1684 1685 1686 1687 1688 1689 1690 1691 1692 1693 1694 1695 1696 1697 1698 1699 1700 1701 1702 1703 1704 1705 1706 1707 1708 1709 1710 1711 1712 1713 1714 1715 1716 1717 1718 1719 1720 1721 1722 1723 1724 1725 1726 1727 1728 1729 1730 1731 1732 1733 1734 1735 1736 1737 1738 1739 1740 1741 1742 1743 1744 1745 1746 1747 1748 1749 1750 1751 1752 1753 1754 1755 1756 1757 1758 1759 1760 1761 1762 1763 1764 1765 1766 1767 1768 1769 1770 1771 1772 1773 1774 1775 1776 1777 1778 1779 1780 1781 1782 1783 1784 1785 1786 1787 1788 1789 1790 1791 1792 1793 1794 1795 1796 1797 1798 1799 1800 1801 1802 1803 1804 1805 1806 1807 1808 1809 1810 1811 1812 1813 1814 1815 1816 1817 1818 1819 1820 1821 1822 1823 1824 1825 1826 1827 1828 1829 1830 1831 1832 1833 1834 1835 1836 1837 1838 1839 1840 1841 1842 1843 1844 1845 1846 1847 1848 1849 1850 1851 1852 1853 1854 1855 1856 1857 1858 1859 1860 1861 1862 1863 1864 1865 1866 1867 1868 1869 1870 1871 1872 1873 1874 1875 1876 1877 1878 1879 1880 1881 1882 1883 1884 1885 1886 1887 1888 1889 1890 1891 1892 1893 1894 1895 1896 1897 1898 1899 1900 1901 1902 1903 1904 1905 1906 1907 1908 1909 1910 1911 1912 1913 1914 1915 1916 1917 1918 1919 1920 1921 1922 1923 1924 1925 1926 1927 1928 1929 1930 1931 1932 1933 1934 1935 1936 1937 1938 1939 1940 1941 1942 1943 1944 1945 1946 1947 1948 1949 1950 1951 1952 1953 1954 1955 1956 1957 1958 1959 1960 1961 1962 1963 1964 1965 1966 1967 1968 1969 1970 1971 1972 1973 1974 1975 1976 1977 1978 1979 1980 1981 1982 1983 1984 1985 1986 1987 1988 1989 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040 2041 2042 2043 2044 2045 2046 2047 2048 2049 2050 2051 2052 2053 2054 2055 2056 2057 2058 2059 2060 2061 2062 2063 2064 2065 2066 2067 2068 2069 2070 2071 2072 2073 2074 2075 2076 2077 2078 2079 2080 2081 2082 2083 2084 2085 2086 2087 2088 2089 2090 2091 2092 2093 2094 2095 2096 2097 2098 2099 2100 2101 2102 2103 2104 2105 2106 2107 2108 2109 2110 2111 2112 2113 2114 2115 2116 2117 2118 2119 2120 2121 2122 2123 2124 2125 2126 2127 2128 2129 2130 2131 2132 2133 2134 2135 2136 2137 2138 2139 2140 2141 2142 2143 2144 2145 2146 2147 2148 2149 2150 2151 2152 2153 2154 2155 2156 2157 2158 2159 2160 2161 2162 2163 2164 2165 2166 2167 2168 2169 2170 2171 2172 2173 2174 2175 2176 2177 2178 2179 2180 2181 2182 2183 2184 2185 2186 2187 2188 2189 2190 2191 2192 2193 2194 2195 2196 2197 2198 2199 2200 2201 2202 2203 2204 2205 2206 2207 2208 2209 2210 2211 2212 2213 2214 2215 2216 2217 2218 2219 2220 2221 2222 2223 2224 2225 2226 2227 2228 2229 2230 2231 2232 2233 2234 2235 2236 2237 2238 2239 2240 2241 2242 2243 2244 2245 2246 2247 2248 2249 2250 2251 2252 2253 2254 2255 2256 2257 2258 2259 2260 2261 2262 2263 2264 2265 2266 2267 2268 2269 2270 2271 2272 2273 2274 2275 2276 2277 2278 2279 2280 2281 2282 2283 2284 2285 2286 2287 2288 2289 2290 2291 2292 2293 2294 2295 2296 2297 2298 2299 2300 2301 2302 2303 2304 2305 2306 2307 2308 2309 2310 2311 2312 2313 2314 2315 2316 2317 2318 2319 2320 2321 2322 2323 2324 2325 2326 2327 2328 2329 2330 2331 2332 2333 2334 2335 2336 2337 2338 2339 2340 2341 2342 2343 2344 2345 2346 2347 2348 2349 2350 2351 2352 2353 2354 2355 2356 2357 2358 2359 2360 2361 2362 2363 2364 2365 2366 2367 2368 2369 2370 2371 2372 2373 2374 2375 2376 2377 2378 2379 2380 2381 2382 2383 2384 2385 2386 2387 2388 2389 2390 2391 2392 2393 2394 2395 2396 2397 2398 2399
|
2007-08-01 Jrg Lehmann <joerg@luga.de>
* network.py, pytonectl.py, item.py: Make pytonectl work again, in particular
update allowed modules for unpickling and prevent metadata fetches during
unpickling.
* item.py: Implement podcast and deleted songs filtering
* config.py: New keybindings for (un)deletion of songs
2007-03-11 Jrg Lehmann <joerg@luga.de>
* services/songdb.py: Introduce upper cutoff for automatic rating according
to times played minus skipped.
2007-03-10 Jrg Lehmann <joerg@luga.de>
* config.py: Remove tags_* options and replace them by postprocessors
lists
* metadata.py: Add postprocessors for metadata (including registry to
allow plugins to register their own postprocessors) and move old tags_*
code and decade adding code to the new system
2007-01-21 Jrg Lehmann <joerg@luga.de>
* config.py: Fix check for local song databases (thanks to Alexander
Wirt <formorer at formorer dot de> for reporting this bug).
2006-09-04 Jrg Lehmann <joerg@luga.de>
* Use platform byte order for ao devices.
2006-08-28 Jrg Lehmann <joerg@luga.de>
* Merge changes from Rothsee version:
- Set correct version for new databases
- Output correct versions during db upgrade
2006-08-20 Jrg Lehmann <joerg@luga.de>
* Database version 6: Store bitrate, samplerate, vbr, size, tracknumber, trackcount,
disknumber, diskccount, and replaygain information in database.
* item.py: Display song information as suggested by Dag Wieers
<dag at wieers dot com>.
* metadata.py: Add replaygain support to eyeD3 decoder
* services/players/internal.py: Take disk number into account.
2006-08-15 Jrg Lehmann <joerg@luga.de>
* metadata.py: Use mutagen as default ID3 reader from MP3 files.
* metadata.py, dbitem.py: Store replaygain information and calculate
replaygain scale factor.
* pcm.c: Add function which allows scaling of the buffer by a factor.
* decoder.py: Store replaygain scale factor
* services/players/internal.py: Use track gain for replaygain information.
2006-08-12 Jrg Lehmann <joerg@luga.de>
* Version 2.3.1 released.
2006-08-08 Jrg Lehmann <joerg@luga.de>
* Make keybindings for rating of currently playing songs configurable
via playerratecurrentsong1, ... playerratecurrentsong5 in the
keybindings.general section of the pytonerc file (thanks to Alexander
Wirt <formorer at formorer dot de> for suggesting this).
2005-12-05 Jrg Lehmann <joerg@luga.de>
* services/player.py: Start player only after the playlist service has
been started since playlist requests may already be issued during the
player startup. This fixes an long-standing problem reported by several
people on the mailing list.
2005-11-07 Jrg Lehmann <joerg@luga.de>
* filelist.py: Update top after changing back into a directory as the
window size may have changed in the meantime (thanks to Martin Fenelon
<fenm at freeuk dot com> for reporting this problem).
2005-09-19 Jrg Lehmann <joerg@luga.de>
* mainscreen.py: Call correct getmaxyx method fixing problem with
small terminals during startup (thanks to Dag Wieers
<dag at wieers dot com> for reporting this problem).
* services/player.py: Move closing of audiodevice right before
blocking process() call (hopefully fixing a problem reported
by Dag Wieers <dag at wieers dot com>).
2005-09-13 Jrg Lehmann <joerg@luga.de>
* Version 2.3.0 released.
2005-09-11 Jrg Lehmann <joerg@luga.de>
* plugings/osdtitle.py, plugins/termtitle.py: Apply
patch by Dag Wieers <dag at wieers dot com> which adds
checking for no song being played.
2005-09-08 Jrg Lehmann <joerg@luga.de>
* services/songdbs/local.py: Rewrite db upgrade code to allow
non-atomic upgrade, as well. Prompt the user before an upgrade to
ask whether a non-atomic or atomic upgrade has to be performed.
2005-08-24 Jrg Lehmann <joerg@luga.de>
* Check earlier for dbfile != "db".
* item.py: Fix filters handling in songs class.
2005-08-23 Jrg Lehmann <joerg@luga.de>
* Add error reporting to bufferedao extension module.
2005-08-22 Jrg Lehmann <joerg@luga.de>
* Disabled automatic closing of help window by default.
* Added changeable play speed support (many thanks to Richard A. Smith
<smithbone at gmail dot com> for providing the patch).
2005-08-21 Jrg Lehmann <joerg@luga.de>
* Merged item-rework branch, which contains a new filter code.
The new code makes the unfiltered case a special case of the filtered
one. As a result, more than one filter can be applied, e.g., filtering
for all songs in a certain genre of a given decade and with a given
rating is now possible. Furthermore, every index now contains a
(nearly) full directory hierarchy, thus allowing things like showing
the top-played songs of a certain genre.
2005-08-19 Jrg Lehmann <joerg@luga.de>
* Get rid of multi-file database layout:
- convert old layout automatically
- leave configuration file switches basename and dbfile intact but
warn the user when they are non-empty
- in a next step, we will set the default value of the basename
switch to an empty value (when presumably all databases have been
converted)
- finally as a final step, we remove the switches and require
that the users change their config files
* Database version 5: do not longer index by years but by decades
which removes many special code paths at various places in the db
code.
2005-08-11 Jrg Lehmann <joerg@luga.de>
* bufferedao.c: New C extension module corresponding to
services/players/interal/buffereddevice with an ao device. The
advantage of the C module is that it does not have to rely on holding
the GIL when doing the output, which should help preventing sound
dropouts.
* services/players/internal.py: Make use of new extension module
bufferedao.
2005-08-10 Jrg Lehmann <joerg@luga.de>
* services/songdbs/internal.py: Checkpoint database regularly during
registering of songs to prevent oversized transaction logs.
* services/songdbs/internal.py: Replace quadratic in number of songs
algorithm by a linear in time version to avoid huge system loads
at the end of the song registering process.
* services/players/internal.py: Do not open audiodevice without need.
2005-08-09 Jrg Lehmann <joerg@luga.de>
* help.py, helpwin.py, statusbar.py: Introduced getkeyname function
which has a fallback solution for unnamed keys (thanks to Troels
Vognsen <bashfalcon at gmail dot com> for reporting this problem).
2005-08-03 Jrg Lehmann <joerg@luga.de>
* Normalize all paths in config files.
* Rework dbstats system.
2005-08-02 Jrg Lehmann <joerg@luga.de>
* services/songdb.py. Measure cache size not by number
of stored requests but by the number of objects the requests
refer to.
* services/songdb.py: rename resultcache -> requestcache.
* conf/pytonerc, config.py, services/songdb.py: Add new section
database with currently only one option requestcachesize, which
allows one to configure the maximal number of objects contained
in the cache.
* item.py: Create genres/ratings/etc. instances only once to
permit the caching of the requests involving them.
* statswin.py, config.py, conf/pytonerc: New window for
statistical information about databases and the request cache
(accessible via "%").
* Various updates in German PyTone.po.
2005-07-16 Jrg Lehmann <joerg@luga.de>
* plugin.py: Use thread-local channel in threadedplugin to make it
actually a threaded plugin.
* log.py: Add time and current thread to debugging output and prune
common path from module name.
2005-07-16 Jrg Lehmann <joerg@luga.de>
* filelist.py. Update window contents in filelistjumptosong().
* plugin.py. Daemonize threaded plugins, in order to prevent a blocking of misbehaved plugins
on shutdown.
* Initial checkin into Subversion repository.
2005-06-30 Jrg Lehmann <joerg@luga.de>
* plugin.py: Use init() method instead of start(), which has a
different meaning for threads. The plugins currently distributed
with PyTone have been changed in this regard.
* plugins/audioscrobbler/scrobbler.py: Fix typos in backlog code.
2005-06-28 Jrg Lehmann <joerg@luga.de>
* config.py: Be more liberal concerning the accepted section names
(patch by Dag Wieers <dag at wieers dot com>).
2005-06-20 Jrg Lehmann <joerg@luga.de>
* Version 2.2.4 released.
* window.py: Include a workaround by Dag Wieers <dag at wieers dot com>
which prevents flickering when switching between the filelist and database
windows.
* plugins: Include audioscrobbler plugin contributed by Nicolas
vrard <nicoe at altern dot org>).
* config.py: Rename listen to bind in network section.
2005-06-06 Jrg Lehmann <joerg@luga.de>
* Rewrite plugin loader to use imp module: Use imp module to specify
plugin search path and log errors instead of aborting
* mainscreen.py: Use getmaxyx() code provided by Dag Wieers <dag at
wieers dot com>.
2005-06-04 Jrg Lehmann <joerg@luga.de>
* events.py: Renamed attribute songs -> items in playlistchanged
event.
2005-05-28 Jrg Lehmann <joerg@luga.de>
* item.py: Import _genrandomchoice function needed for random
selections of filesystem directories from services.songdb, where
it was moved to some time ago (thanks to Dag Wieers <dag at wieers
dot com> for reporting this issue).
2005-05-22 Jrg Lehmann <joerg@luga.de>
* mainscreen.py: Force minimal height and width of window.
2005-05-18 Jrg Lehmann <joerg@luga.de>
* iteminfowin.py: Fix some small bugs in the songchanged event
handler.
* iteminfowin.py: Allow toggeling between different states: show
information about either the currently selected song or the song
being played on the configured players.
* config.py: Add new option toggleiteminfowindow in
keybindings.general section.
2005-05-17 Jrg Lehmann <joerg@luga.de>
* requests.py, services/songdb.py: Handle getlastplayedsongs as
other requests by just supplying another wrapper function.
* playerwin.py: Do not close playerinfo file every time (thanks
to Dag Wieers <dag at wieers dot com> for the patch).
* item.py: Zero-pad seconds (thanks to Dag Wieers <dag at wieers
dot com> for the patch).
* Add xterm plugin contributed by <dag at wieers dot com>, which
sets the title of an xterm window according to the currently
playing song.
2005-05-11 Jrg Lehmann <joerg@luga.de>
* playlistwin.py: Check for playstarttime not being None before
referencing it (thanks to Stefan Wimmer <swimmer at xs4all dot nl>
for reporting this problem).
* services/playlist.py: Make immediate play of song working again
(thanks to Dag Wieers <dag at wieers dot com> for reporting this
problem).
2005-05-10 Jrg Lehmann <joerg@luga.de>
* config.py: replace all occurrences of server/port by networklocation
* Make remote databases work again.
* Remote players should at least partially work again.
2005-04-27 Jrg Lehmann <joerg@luga.de>
* Version 2.2.3 released.
2005-04-26 Jrg Lehmann <joerg@luga.de>
* Deactivate playlist window before initializing the playlist to
prevent issuing a wrong selectionchanged event (fixing a problem
reported by Stuart Pook <Stuart dot Pook at infres dot enst dot fr>).
2005-04-25 Jrg Lehmann <joerg@luga.de>
* services/players/internal.py: Prevent sound device from being
reopened when an already stopped player is being stopped again
(thanks to Stuart Pook <Stuart dot Pook at infres dot enst dot fr>
for pointing out this problem).
* services/players/internal.py: Daemonize bufferedaudiodevice
again.
2005-04-21 Jrg Lehmann <joerg@luga.de>
* network.py: Ignore empty lines in _receiveobject instead of
reporting an error.
* services/playlist.py: Make going back to previous song work
again (thanks to Johannes Segitz <johannes at segitz dot de> for
reporting this bug).
2005-04-20 Jrg Lehmann <joerg@luga.de>
* Ignore invalid database definitions unless there is at least one
valid database.
2005-03-30 Jrg Lehmann <joerg@luga.de>
* iteminfowin.py: Fix secondary player for songs in the playlist
window (thanks to Stefan Wimmer <swimmer at xs4all dot nl> for
reporting this problem).
2005-03-23 Jrg Lehmann <joerg@luga.de>
* iteminfowin.py, item.py: Fix wrong window size of item info window.
* slist.py: Fix crash occuring when deleting the contents of the
playlist (thanks to Stefan Wimmer <swimmer at xs4all dot nl> for
reporting this problem).
2005-03-16 Jrg Lehmann <joerg@luga.de>
* Version 2.2.2 released.
2005-03-12 Jrg Lehmann <joerg@luga.de>
* services/players/mpg123.py: Implement seeking.
2005-03-08 Jrg Lehmann <joerg@luga.de>
* events.py: Make checkpointdb a dbevent in order to let the
songdbmanager pass it to the databases (many thanks to Tomas Menzl
<xmenzl at aldebaran dot feld dot cvut dot cz> for pointing out
this problem).
* services/songdbs/local.py: Send sendeventin event to global hub
instead of to songdbhub to make it actually work. Use repeat
interval instead of sending every time a new sendeventin event.
* item.py: Add new item method getid, which returns a unique
id for the item in the current context (used in slist.set method)
* services/playlist.py: Add getid method to playlistitem (for
use in slist.set method).
* slist.py: Use getid method to identify the previously selected
item in set method.
* services/playlist.py: Cleanup variable names: song -> item.
2005-03-07 Jrg Lehmann <joerg@luga.de>
* services/player.py: Process incoming events twice to be able
to rely on block argument of channel. Also block when waiting
for a new song to appear in the playlist, since any arbitrary
events unblocks the player.
* services/songdbs/local.py: Use active transaction as an indication
for a busy db.
* filelist.py: Also react on new playlists.
2005-03-06 Jrg Lehmann <joerg@luga.de>
* services/songdbs/local.py: Delete log files when checkpointing
dbenv preventing huge disk space usage during song registering
(Ochsenschlegel bugfix).
2005-03-03 Jrg Lehmann <joerg@luga.de>
* services/players/internal.py. Also request new song when not
crossfading to make autoplay == False work in this case
(thanks to Tomas Menzl <xmenzl at aldebaran dot feld dot cvut dot
cz> for providing a patch).
* events, services/playlist.py: New event playlistplaysong which
allows one to tell the playlist to immediately play a specific song.
* playlist.py: Use playlistplaysong instead of playlistaddsongstop
when the user requests the immediate playback of a song in the
playlist (as suggested by Tomas Menzl <xmenzl at aldebaran dot
feld dot cvut dot cz>), leading to a more mainstream behaviour of
PyTone in that regard. ;-)
* playlist.py: playlistaddsongstop now correctly updates the information
about the currently playing song.
* playlist.py: Keep information about played songs after
restarting PyTone.
* helper.py: Write exception to stdout since we have closed stderr.
* services/timer.py: Do not daemonize and switch to new timeout option
of channel.process.
* services/players/internal.py: Do not daemonize bufferedaudiodev buf
shut it down properly.
2005-03-01 Jrg Lehmann <joerg@luga.de>
* hub.py: Add optional timeout to process method of channel.
* services/player.py: Make use of new timeout option.
* event.py: Renamed playerforward -> playernext
* decoder.py, services/player.py, services/players/internal.py:
Enable seeking in songs (many thanks to Tomas Menzl <xmenzl at
aldebaran dot feld dot cvut dot cz> for providing a patch).
* requests.py: Add sort member variable to getsongsinplaylists
request, fixing a crash when rescanning, querying a random
selection, etc. of all songs in playlists (thanks to Tomas Menzl
<xmenzl at aldebaran dot feld dot cvut dot cz> for reporting this
problem).
2005-02-27 Jrg Lehmann <joerg@luga.de>
* filelist.py: Some cleanups.
* playlist.py: Ditto.
* events.py: New event filelistjumptosong, which directs the filelist
to jump to a given song in the directory hierarchy.
* config.py. New keybinding "filelistjumptoselectedsong" for
playlistwindow (by default KEY_RIGHT is used).
* config.py: New option "skipsinglealbums" in filelistwindow
section, which when turned on, tells PyTone to skip the album and
go directly to the songs when there is only one album of a given
artist.
2005-02-26 Jrg Lehmann <joerg@luga.de>
* dbitem.py: Remove __class__ comparison from __cmp__ method of dbitem
class
* services/songdb.py: Avoid repeated songs when randomly selecting
songs out of a short list.
2005-02-12 Jrg Lehmann <joerg@luga.de>
* services/playlist.py: Cleanup and fix some minor bugs.
2005-02-09 Jrg Lehmann <joerg@luga.de>
* setup.py: (Ab-)use scripts directive for installing pytone
and pytonectl shell scripts.
* log.py: Make debugfile initialization manual to allow the use of
the log module in the config module (thanks to Brian Lenihan
<brian_l at mac dot com> for proposing this).
* config.py: Fix --rebuild command line switch.
* services/players/mpg123.py: Be more relaxed when initializing
the player and when parsing the "@F" lines to make mpg123 work
again (thanks to Brian Lenihan <brian_l at mac dot com> for
providing a patch).
* conf/pytonerc: Add sample command line for mpg123 player.
* dbitem.py: Do not assume that all exceptions derive from the
Exception base class (fixing the scanning problems reported by
Alexander Wirt <formorer at formorer dot de> and Jack Bakeman
<jbakeman at indra dot com>).
2005-02-08 Jrg Lehmann <joerg@luga.de>
* config.py: Use correct copyright date when printing usage
summary.
2005-02-07 Jrg Lehmann <joerg@luga.de>
* Version 2.2.1 released.
* services/playlist.py: Also notify database of not fully
played song when stopping the player manually.
* services/songdb.py: Improve random choice logic.
* services/songdb.py: Store copy of request and not request
itself in cache.
* config.py: Add more checks for database options: prevent
sharing of basenames or dbenvdirs of several databases.
2005-02-06 Jrg Lehmann <joerg@luga.de>
* log.py: New function debug_traceback which records a traceback
when in debugging mode.
* dbitem.py: Ignore (but report when in debugging mode) errors
when parsing the song metadata (thanks to Jack Bakeman <jbakeman
at indra dot com>, Sascha <spx at gmx dot net>, and Alexander Wirt
<formorer at formorer dot de> for reporting that problem).
* metadata.py: fix fallback code for length calculation.
2005-02-03 Jrg Lehmann <joerg@luga.de>
* service.py: New module containing a base class for
services which contains a main loop doing exception handling
and error reporting.
* plugin.py: Use new service class.
* services/songdb.py: Use new service class.
* services/songdbs/local.py: Use new service class.
* services/player.py: Use new service class.
* services/playlist.py: Use new service class.
2005-02-01 Jrg Lehmann <joerg@luga.de>
* Version 2.2.0 released.
2005-01-25 Jrg Lehmann <joerg@luga.de>
* filelistwin.py: Clear searchstring when search has been aborted
by pressing ESC.
2005-01-24 Jrg Lehmann <joerg@luga.de>
* metadata.py: Also import MP3Info module when using the eyeD3
module, since one helper function is also needed when using the
latter module.
2005-01-23 Jrg Lehmann <joerg@luga.de>
* services/songdb.py: Do not sort the intermediate results when
querying multiple databases. While this yields an improved caching
behaviour, we are not allowed to do that, because the caller
supplied compare function cannot be used for unwrapped items.
* pytone.py: Redirect stdout to /dev/null in order to prevent ALSA
buffer underrun messages from spoiling the user interface.
2005-01-22 Jrg Lehmann <joerg@luga.de>
* item.py: Remove bogus cmpitem method of rating class.
* metadata.py: New module containing the song metadata interfaces.
* Add _some_ initial support for FLAC files via pyflac (not stable
yet and thus currently unsupported!)
2005-01-17 Jrg Lehmann <joerg@luga.de>
* pcm/pcm.c: add new function upsample which allows to create
a pseudo-stereo stream from a mono stream
* decoder.py: Handle mono ogg files correctly (fixing an error
reported by Uwe Bielz <u.bielz at wad dot org>).
* item.py: Be more robust when displaying playing time of song.
2005-01-16 Jrg Lehmann <joerg@luga.de>
* events.py: registerplaylists now expects lists of playlists
instead of list of paths (analogous to registersongs).
* events.py, services/songdbs/local.py. new events delplaylist and updateplaylist
for deletion and update of playlists
* services/songdbs/local.py: Also update (and delete non longer
existing) playlists when reregistering all songs (as suggested by
Stefan Wimmer <swimmer at xs4all dot nl>).
2005-01-09 Jrg Lehmann <joerg@luga.de>
* Plugin architecture (based upon the prototype by Nicolas vrard
<nicoe at altern dot org>).
2004-12-31 Jrg Lehmann <joerg@luga.de>
* item.py: Case-insensitive sort in filelist window.
2004-12-19 Jrg Lehmann <joerg@luga.de>
* Include path of song in detailed information about currently selected
item.
* services/players/internal.py: Flush song queue and audio device
when a new song is requested while the player is paused.
2004-12-12 Jrg Lehmann <joerg@luga.de>
* config.py: Add support for config subsection templates. It is now possible
to define an arbitrary number of databases.
2004-11-29 Jrg Lehmann <joerg@luga.de>
* Version 2.1.3 released.
* item.py: Replace superfluous database requests, which led to an
unnecessarily sluggish UI during the database rebuild.
* filelist.py: Ensure that only dbitem.song and not item.song instances
are sent to the database when rescanning songs. Also send songs to
the correct database (if the selected directory contains songs from
various databases).
2004-11-27 Jrg Lehmann <joerg@luga.de>
* Add French translation (many thanks to Nicolas vrard
<nicoe at altern dot org>).
* services/playlist.py: Convert songs to playlistitems, when
loading a playlist. Fix appending of these items, as well. (Thanks
to Stefan Wimmer <swimmer at xs4all dot nl> for reporting this
bug).
* change all helper.debug calls to log.debug and move the corresponding
debug file code into the log module.
2004-11-24 Jrg Lehmann <joerg@luga.de>
* item.py: Reduce precision for longer last played times.
2004-11-20 Jrg Lehmann <joerg@luga.de>
* hub.py: renamed hub-> _defaulthub, _hub -> hub.
* hub.py: Add module level functions notify, request and
newchannel to provide easy access to the default hub.
* Replace all calls of hub methods with new hub module
functions making the code more readable.
2004-11-18 Jrg Lehmann <joerg@luga.de>
* services/songdbs/local.py: Make playlists work again (thanks to
Maurizio Panniello <maurizio at iac dot es> for reporting and
locating this problem).
2004-11-15 Jrg Lehmann <joerg@luga.de>
* Renamed services/players/xmms.py in services/players/xmmsplayer.py to
prevent a name conflict with the pyxmms module.
* services/players/xmmsplayer.py: Replace xmms by xmms.control to
make this module work with the latest versions of pyxmms (thanks
to Mario Rodrguez <mrodriguezc at gmail dot com> for reporting
this problem).
* services/songdbs/local.py: When reregistering a song which is
already in the database, do not replace it completely (thereby
deleting its rating, etc.) but only update the song metadata.
(closing Debian bug #269711).
2004-11-08 Jrg Lehmann <joerg@luga.de>
* Version 2.1.2 released.
* pytonerc: Fix typo in addsongtoplaylist and showiteminfolong options
(thanks to Toma Ficko <tomaz at gmx dot net> for reporting these bugs).
* services/songdbs/local.py: Fix error occuring when requesting
artists, albums or songs with unknown decade (thanks to Toma
Ficko <tomaz at gmx dot net> for sending a patch).
* services/songdbs/local.py: Manually remove unneeded log files
because automatic removal is only supported by the newest bsddb
versions, fixing Debian bug #273370 (thanks to Toma Ficko <tomaz
at gmx dot net> for sending a patch).
2004-11-07 Jrg Lehmann <joerg@luga.de>
* Version 2.1.1 released.
* services/songdbs/local.py: Enable the songautoregisterer to
do the rescanning of songs by itself in order to take load
of the database thread.
* services/songdbs/local.py: When registering songs, also update
information of song which have alread been in database. In
particular, delete songs which are no longer existent
(Implementing a suggestion by some anonymous user).
* filelist.py: Call the song registerer when updating the songs in
the basedir of a database to prevent blocking of the UI thread.
2004-09-25 Jrg Lehmann <joerg@luga.de>
* item.py: Fix calculating of hours and minutes of last played
time (thanks to Zoltan Szalontai <szazol at e98 dothu> for finding
this bug).
2004-09-12 Jrg Lehmann <joerg@luga.de>
* dbitem.py: Update path information when rescanning song. When
updating the songs in a database, a relocation in a different
musicbasedir is now taken into amount correctly.
2004-08-20 Jrg Lehmann <joerg@luga.de>
* Never issue a requestnextsong request for second player. (Fixing
a problem occured during the last Rothsee-Party).
* Associate a playlist (or explicitly none) to every player.
* requests.py: requestnextsong now requires a playlistid instead of
a playerid.
* services/songdbs/local.py: Checkpoint database after each
database update step to prevent even more oversized log files.
* dbitem.py: Only store last 10 playing times.
2004-08-16 Jrg Lehmann <joerg@luga.de>
* services/songdbs/local.py: Treat case of musicbasedir ending
with a slash correctly (fixing a problem reported by Alexander
Wirt <formorer at formorer dot de>).
2004-08-11 Jrg Lehmann <joerg@luga.de>
* services/playlist.py: Fix wrong playlistitem constructor
signature in playlistaddsongtop (thanks to Andreas Poisel
<a.poisel at acat dot cc> for reporting this bug).
2004-08-09 Jrg Lehmann <joerg@luga.de>
* Also accept "MP3" etc. as extension of MP3 files.
* New window which show more detailed information about currently
selected item.
2004-08-03 Jrg Lehmann <joerg@luga.de>
* Version 2.1.0 released.
* dbitem.py: Really use length of MP3 file if no ID3 tag
is present (when using eyeD3 module).
* services/playlist.py: Reset playingsong to None only using
the playbackinfochanged event.
* services/playlist.py: React on changes in the song database.
2004-08-02 Jrg Lehmann <joerg@luga.de>
* dbitem.py: Try harder to get reasonable length information
for MP3 file.
* dbitem.py: Add adddict and safe options to format method of
song.
* dbitem.py: Store list of last played times.
* Consider song as not having been played if it has been aborted
very early (currently during the first 10 seconds) (closing Debian
bug #218283).
* playlist.py: Do not set playingsong by using the playbackinfochanged
event of the player since this leads to race conditions.
2004-07-27 Jrg Lehmann <joerg@luga.de>
* item.py : Show songs in filtered artist.
* filelistwin.py: Implement incremental searching (as suggested by
Stuart Pook <Stuart dot Pook at infres dot enst dot fr>).
* config.py: New key binding "repeatsearch" in filelist window
which allows the user to specify a key for the repetition of the
last search (as suggested by Falko Rtten <falko.ruetten at
cmdline dot net>).
* config.py: New option songchangecommand in general section which allows
to specify a command executed when the playback of a new song starts.
2004-07-26 Jrg Lehmann <joerg@luga.de>
* New configuration options in database sections which allow the user
to turn on and off various tag transformation and to specify the
regular expression used for obtaining track nr and title from the song
filename.
* services/songdbs/local.py: Even further simplify artist and
album index machinery now that ratings are no longer stored
directly in this items but only in songs.
2004-07-25 Jrg Lehmann <joerg@luga.de>
* Implemented play previous song (as requested by Sebastian
Schwerdhoefer and Han Boetes, George J. De Bruin, and Sam Rowe)
* pytonerc: New config option stepsize in mixer section, which
allows the user to change the step size (in percent) of the mixer
(requested by Krzysztof Zych <kzych at manta dot univ dot gda dot
pl>).
* mixerwin.py: Make volume bar as wide as possible when
type=statusbar (requested by Krzysztof Zych <kzych at manta dot
univ dot gda dot pl>).
2004-07-24 Jrg Lehmann <joerg@luga.de>
* dbitem.py: Remove genres and years attributes of artist and album.
* dbitem.py: New index rating.
* services/songdbs/local.py: Generalize index machinery to enable
simplified addition of new index.
* item.py: Generalize filtereditem for a simplified addition of
a new index.
* Do no longer store artist and album rating but instead a rating
source in the song.
* Allow the user to filter songs by their rating (as suggested by
Thomas Klein-Hitpass <thomas at projekt-barrierefrei dot de>).
* Database version 4.
2004-07-22 Jrg Lehmann <joerg@luga.de>
* Version 2.0.14 released.
* Make player progress bar more readable on mono devices (thanks
to Krzysztof Zych <kzych at manta dot univ dot gda dot pl>).
2004-07-19 Jrg Lehmann <joerg@luga.de>
* Replace "PyX" by "PyTone" in license headers (thanks to
Krzysztof Zych <kzych at manta dot univ dot gda dot pl> for
pointing this out).
* Add polish translation (many thanks to Krzysztof Zych <kzych at
manta dot univ dot gda dot pl>).
* dbitem.py: Update eyeD3 integration based on contributions by
Krzysztof Zych <kzych at manta dot univ dot gda dot pl>.
* item.py: Make last played song list sorted again.
* services/songdbs/locale.py: Some fixes in database upgrade code.
2004-07-18 Jrg Lehmann <joerg@luga.de>
* services/songdbs/locale.py: Really make use of transactional
subsystem.
* services/songdbs/locale.py: Move dbitem.song creation to
songautoregisterer thread to greatly improve the usability during
the song registering process.
* dbitem.py: Added support for the eyeD3 module, which parses MP3
files much faster as the current version of the MP3Info module.
2004-07-15 Jrg Lehmann <joerg@luga.de>
* Handle SIGTERM gracefully by sending a quit signal to all
running threads.
2004-07-13 Jrg Lehmann <joerg@luga.de>
* hub.py: Explicitly use list as underlying queue to make the
PriorityQueue class work with Python 2.4 (thanks to Krzysztof Zych
<kzych at manta dot univ dot gda dot pl> for reporting this
problem).
2004-07-08 Jrg Lehmann <joerg@luga.de>
* pytone.py: Catch errors during service creation to be able to shut down
all already running services
* services/playlist.py: Be careful when loading a dumped playlist which
has ids incompatible with the global _counter variable.
* playlist.py: Issue selectionchanged event in _recenter and in
playlistchanged method if necessary. This should fix a longstanding bug where
the item info window showed the wrong playlist item.
2004-07-07 Jrg Lehmann <joerg@luga.de>
* Allow only songs located under basedir in databases.
* Do not delete currently playing song when backspace is pressed.
* decoder.py: Replace samplerate by outrate in calculation of
playing time since the data has already been resampled to outrate.
2004-07-06 Jrg Lehmann <joerg@luga.de>
* Removed some unnecessary selectionchanged notifications.
* dbitem.py: Finally switched from path as id to relative path as
id. This should facilitate moving songs from one base directory to
the other.
* Database version 3.
* Use artist and album from relative path as fallback if no id3
information is present and the relative path (with respect to
the musicbasedir) consists of exactly two directories.
2004-07-01 Jrg Lehmann <joerg@luga.de>
* services/songdbs/local.py: Don't index song in
_queryregistersong, if it is already registered in database.
* services/songdbs/local.py: Use transaction system when writing
to the database (addressing the problems of Debian bug #245503).
* pytone.py: Set locale to setting defined by the user's environment
variables.
* inputwin.py: Allow the user to input all printable characters
according to the locale set (as suggested by Stuart Pook <Stuart
dot Pook at infres dot enst dot fr>).
* filelistwin.py: Empty search string repeats last search (as
suggested by Stuart Pook <Stuart dot Pook at infres dot enst dot
fr>).
* slist.py: New method for regular expression search.
* filelistwin.py: Search strings are now interpreted as regular
expressions.
2004-06-29 Jrg Lehmann <joerg@luga.de>
* Make timer a service, which runs in an independent thread
* services/songdbs/local.py: Turn on transaction and log subsystem
and checkpoint log regularly.
2004-06-25 Jrg Lehmann <joerg@luga.de>
* mixerwin.py: Do not fail if neither ossaudiodev nor oss module
is present (thanks to Linus Sjberg <lsjoberg at aland dot net>)
2004-06-21 Jrg Lehmann <joerg@luga.de>
* dbitem.py: Catch error when no id3 tag is present in an MP3
file (fix contributed by Toma Ficko <tomaz at gmx dot net>).
* MP3Info.py: New version (thanks to Toma Ficko <tomaz at gmx dot
net> for providing me with the update). Included is a patch which
should fix the length detection for VBR MP3 files (hopefully
fixing a problem reported some time ago by George J. De Bruin
<SoundChaser at myrealbox dot com>).
2004-06-13 Jrg Lehmann <joerg@luga.de>
* Version 2.0.13 released.
2004-06-10 Jrg Lehmann <joerg@luga.de>
* conf/pytonerc: Update description of autoregisterer option
in the database sections (fixing Debian bug #245528).
* conf/pytonerc: New option dbfile in database sections which allows
to store the database in one single file (instead of multiple ones,
when using the old basename option)
* services/songdbs/local.py: support storing of databases in a
single file.
2004-04-22 Jrg Lehmann <joerg@luga.de>
* Do not process global keybindings when input window is active
(thanks to Andreas Poisel <a.poisel at acat dot cc> for reporting
this problem).
* pytonectl.py: Rewrite to allow for requests and not only events.
* pytonectl.py: Add getplayerinfo function, which prints a string
with information about the currently playing song (as suggested by
Alexander Wirt <formorer at formorer dot de>).
2004-04-21 Jrg Lehmann <joerg@luga.de>
* pytonectl: Print error message instead of traceback when
connection to server fails (as suggested by Alexander Wirt
<formorer at formorer dot de>).
2004-04-17 Jrg Lehmann <joerg@luga.de>
* Version 2.0.12 released.
* Fixed selection by mouse in playlist window.
2004-04-12 Jrg Lehmann <joerg@luga.de>
* When dumpfile is set, we use it to store the playlist state not
only when a crash occurs but also on PyTone's exit.
* pytonerc: Added option songformat to playerwindow and
playlistwindow sections of config file which allow the user to
specify an arbitrary format strings for title of player window and
entries in playlist window.
2004-04-11 Jrg Lehmann <joerg@luga.de>
* Added new layout which consists only of one column.
* pytonerc: New option togglelayout in keybindings.general
section.
* Added example configuration files for different layouts.
* pytonerc: New option layout in general section, new option
activetitle in filelistwindow and playlistwindow sections.
* services/players/internal.py: Fix problem preventing
automatic crossfading.
2004-04-09 Jrg Lehmann <joerg@luga.de>
* decoder.py: Use length information of mad decoder instead
of the one stored in the database to further improve
the behaviour when using VBR files.
* Window borders are know configurable.
* pytonerc: new option border in filelistwindow, playlistwindow,
iteminfowindow, and playerwindow sections.
2004-04-05 Jrg Lehmann <joerg@luga.de>
* dbitem.py: Use the TLEN id3 tag when existent for the length of an
MP3 file. Hopefully, this improves the behaviour when using
VBR files.
* pytonerc: Added vi-like navigation keys to standard config (as
suggested by Andreas Poisel <a.poisel at acat dot cc>).
2004-04-04 Jrg Lehmann <joerg@luga.de>
* Version 2.0.11 released.
2004-04-03 Jrg Lehmann <joerg@luga.de>
* config.py: Add aooptions configuration option string that allows
the user to change all options provided by the ao library
(as suggested by Stuart Pook <Stuart dot Pook at infres dot enst
dot fr>).
2003-03-28 Jrg Lehmann <joerg@luga.de>
* services/songdbs/local.py: automatically update to new
database version if necessary.
* Close audio device when no songs are left in playlist
(fixing a bug reported by Stuart Pook <Stuart dot Pook at infres
dot enst dot fr>).
* Remove alsa_buf_size option again as it was not working
as expected.
2003-03-22 Jrg Lehmann <joerg@luga.de>
* services/songdbs/local.py: store version number of database
schema in database.
* Do no longer identify albums by artist+album but only by album
name (as suggested by Stuart Pook <Stuart dot Pook at infres dot
enst dot fr>). Albums with the same name thus get automatically
merged in the albums list.
2003-03-18 Jrg Lehmann <joerg@luga.de>
* Prevent race condition by starting song auto registerer
only after the database thread has been started.
2003-03-17 Jrg Lehmann <joerg@luga.de>
* Version 2.0.10 released.
* Added alsa_buf_size option to player sections of config file,
which allows one to specify the internal buffer size of the alsa
device (partly implementing a suggestion by Stuart Pook <Stuart
dot Pook at infres dot enst dot fr>).
* Added sections logwindow and colors.logwindow to config file.
* Mark song as unplayed again when it is stopped (as suggested by
George J. De Bruin <SoundChaser at myrealbox dot com>).
2003-03-15 Jrg Lehmann <joerg@luga.de>
* Keep audio device only open, when it is really needed, i.e.,
close it when the player is stopped or paused (as suggested by
<Stuart dot Pook at infres dot enst dot fr>).
* Log problems during audio device initialisation to message log.
2003-03-14 Jrg Lehmann <joerg@luga.de>
* Disable mixer functionality when an error occured during mixer
initialisation.
* Add message log functionality.
* Do not use "=" for the top border of an active windows anymore.
2003-03-13 Jrg Lehmann <joerg@luga.de>
* pytone.py: Initialize players after databases to prevent a race
condition when autoplaymode=random (thanks to Niels Drost
<ndrost@cs dot vu dot nl> for reporting this bug).
* Handle virtual directories at top of filelist window correctly
when inserting new artists in the database (fixing a bug reported
by Niels Drost <ndrost@cs dot vu dot nl>).
* config.py: Fix wrong behaviour with foreground colour black
(thanks to Stuart Pook <Stuart.Pook@infres.enst.fr> for
reporting this problem).
2003-02-18 Jrg Lehmann <joerg@luga.de>
* Check for old database type did require Python 2.2 and above.
* Include cursext extension module in distribution.
* Check path names in m3u files for zero-bytes to handle a (very
rare) corner case (reported by Douglas Bagnall <douglas at
paradise dot net dot nz>.
2003-02-18 Jrg Lehmann <joerg@luga.de>
* Include po files in distribution.
2003-02-15 Jrg Lehmann <joerg@luga.de>
* Version 2.0.9 released.
* filelistwin.py and playlistwin.py: Move cursor to the right
position in order to make it more easy for users of Braille
displays to track the current position/selection (thanks to
Stphane Doyon <s.doyon at videotron dot ca>).
* config.py and services/players/internal.py: New config option
crossfading in [players.*] sections, which allows the user to turn
off the crossfading of songs (suggested by Niels Drost <ndrost@cs
dot vu dot nl>).
* services/songdbs/local.py: Store playing time with each song
in lastplayed list to later on permit merging of lists coming
from different databases. Upon upgrade, the last played song
list will be deleted!
2003-02-14 Jrg Lehmann <joerg@luga.de>
* services/playlist.py: Upon deletion of played songs, the played and total
times info of the playlist have not been adapted.
* playlistwin.py: When given the focus to the playlist window, we
now recenter the displayed list and select the currently playing
song.
* Disable logging functionality of bsddb.
* When updating the song database, we delete songs which are no longer
accesible.
* services/songdbs/local.py: Be more aggresive, when scanning for
new songs.
2003-02-12 Jrg Lehmann <joerg@luga.de>
* dbitem.py: Try to determine the "correct" character set for the reencoding
of the unicode strings contained in the tags of Ogg Vorbis files
(thanks to Michal Cihar <michal at cihar dot com> for the patch).
2003-02-08 Jrg Lehmann <joerg@luga.de>
* Better curses initialisation (thanks to Johannes Mockenhaupt <jmockenhaupt
at gmx dot net>)
* Add an extension module which provides support for transparent
terminals also for "older" Python versions (thanks to Johannes Mockenhaupt
<jmockenhaupt at gmx dot net>).
* pytone.py: Initialize players before everything else to prevent a hang of
PyTone when a problem occured at this stage.
* services/player.py: Be more verbose on player initialization problems.
2003-02-07 Jrg Lehmann <joerg@luga.de>
* services/playlist.py: Remove extraneous _checksong call in _addsongs method.
* services/playlist.py: Check whether song is already contained in a local
database. If yes, do not create a new entry in the primary database.
The disadvantage of this behaviour is that the playing information is
no longer collected centrally.
* Rescanning songs proceeds now in a separate thread.
2003-01-31 Jrg Lehmann <joerg@luga.de>
* services/players/internal.py: Check for endianness of platform to set
correct output format when using the ossaudiodev module, fixing the
internal player on PowerPC (thanks to Peter Poeml <poeml at suse
dot de> for the patch).
* setup.py: install italian message catalog
2003-01-18 Jrg Lehmann <joerg@luga.de>
* Version 2.0.8 released.
* Include Italian localization (many thanks to Davide Alessio
<dalessio at softhome dot net>).
2003-01-11 Jrg Lehmann <joerg@luga.de>
* network.py: Do not bail out when pytonectl socket does not exist
(thanks to Alexander Wirt <formorer at formorer dot de> for
reporting this problem).
2003-01-06 Jrg Lehmann <joerg@luga.de>
* playlist.py: Fix bug occuring when rating a song and no song is
selected in playlist. Furthermore, the song info window was not
updated.
* Added new command rescan in filelist and playlist mode, which allows
the user to rescan/update the id3 information of the selected song(s).
2003-01-05 Jrg Lehmann <joerg@luga.de>
* Version 2.0.7 released.
* Fix incorrect title and sort order when displaying genre and
decade filtered items.
2003-01-04 Jrg Lehmann <joerg@luga.de>
* MP3Info.py: use new version of Vivake Gupta.
* dbitem.py: adapt to new version of MP3Info module.
* dbitem.py: Extract track number from file names like
"03 Songtitle.mp3".
2003-01-03 Jrg Lehmann <joerg@luga.de>
* config.py: Added new option cachesize in [database.*] sections,
which allows to specify the cache size used for the database
when using Python 2.3 and above.
* services/songdbs/songdb.py: Renamed in services/songdbs/local.py
to prevent collision with global bsddb.py module.
* services/songdbs/local.py: Enable use of new bsddb module
from Python 2.3 and above.
2003-12-13 Jrg Lehmann <joerg@luga.de>
* config.py: Do not process command line and reading of
configuration file at module initialisation time, in order to be
usable for pytonectl as well (fixing a problem reported by Han
Boetes <han at mijncomputer dot nl>).
* services/player.py: autoplay now also works after having
stopped and restarted the player manually (thanks to Han Boetes
for pointing me to this long standing annoyance).
* events.py: New event playertogglepause which allows to pause the
player, if it is playing, or start playing, if it is paused.
* pytonectl.py: Add support for the playertogglepause function (as
suggested by Han Boetes <han at mijncomputer dot nl>).
2003-12-12 Jrg Lehmann <joerg@luga.de>
* Version 2.0.6 released.
* event.py, player.py: Add new event playerratecurrentsong:
rating of the song currently being played on the player.
2003-12-11 Jrg Lehmann <joerg@luga.de>
* pytonectl.py: Add support for song addition and immediate song
play.
* config.py: New option playerinfofile in the general section,
which allows to specify a file where the song currently being
played on the main player will be written (as suggested by Han
Boetes <han at mijncomputer dot nl>).
2003-12-09 Jrg Lehmann <joerg@luga.de>
* config.py: Prune removed -n switch from usage/help output.
* pytonectl.py: New script for the remote control of PyTone (as
suggested by Han Boetes <han at mijncomputer dot nl>).
* config.py: New option in the network section: socketfile.
Specifies the name of a UNIX domain socket for the remote control
of PyTone, if set to a non-empty value.
2003-11-25 Jrg Lehmann <joerg@luga.de>
* Version 2.0.5 released.
* Added missing help texts for functions introduced in version
2.0.4 (fixing a bug spotted by Han Boetes <han at mijncomputer dot
nl>).
* Fix a small bug in services.players (thanks to Andreas Poisel <a
dot poisel at acat dot cc> for the patch).
* services/playlist.py: Notify upon playlist changes due to a song being
played.
* Cleanup README file: purge news section.
2003-11-25 Jrg Lehmann <joerg@luga.de>
* Version 2.0.4 released.
2003-11-24 Jrg Lehmann <joerg@luga.de>
* Added repeat function for playlist.
* The playlist mode can now be set initially with the variable
initialplaylistmode in the [general] section (instead of
autorandomplay) and toggled during runtime by pressing CTRL-T.
2003-11-23 Jrg Lehmann <joerg@luga.de>
* More safety checks with respect to Ogg Vorbis support.
* Do not show Ogg Vorbis files in filesystem directory view, if no
Ogg Vorbis support is present.
* Move update of song played information to services/player.py to
be consistent with song.unplay, which will be introduced later.
* Rename _nextsong->_playsong in player modules.
2003-11-18 Jrg Lehmann <joerg@luga.de>
* services/playlist.py: Replace incorrect use of dbitem.song by item.song in
_checksong method.
* add autorandomplay to [general] section of pytonerc, which enables
choosing a random song for playing, when playlist is empty
* Allow replaying of the current playlist. The corresponding key
can be configured in the [keybindings] section of pytonerc via the
variable general.playlistreplay (implements Debian wishlist bug
#218282)
2003-10-18 Jrg Lehmann <joerg@luga.de>
* Version 2.0.3 released.
* pytone.py: Prevent mainscreen.dump from being called if the mainscreen
constructor did not succeed (reported including a patch in Debian bug 216002
by David Kgedal <davidk at lysator dot liu dot se>)
* config.py: Remove command line option "-n/--network". Use a
config file instead.
* config.py: Check for empty musicbasedir in the configuration
* pytonerc: Set musicbasedir to an empty value by default to remind
first time users setting this option.
2003-10-13 Jrg Lehmann <joerg@luga.de>
* item.py: Allow getcontentsrecursive (recursive insert) and implement
getcontentsrecursiverandom (random insert) for filesystem directories.
Thanks to Martin van Es <martin at mrvanes dot com> for reporting
the previous inconsistency in PyTone's behaviour in that regard).
* Merge pending fix from last Rothsee party's late night hacking
session:
- requestnextsong gets a playerid argument to distinguish between
song requests of different players
2003-08-12 Jrg Lehmann <joerg@luga.de>
* config.py: Fix wrong behaviour in mono mode, when no mono
attribute is given in config file.
* inputwin.py: Re-added curses.ascii import, which got lost.
* config.py: New option "colorsupport" in section "general".
This allows to enable/disable colors both manually and
automatically (as before).
* config.py: New option "throttleoutput" in section "general",
which allows to specify the number of screen updates skipped when
there is still user input.
2003-07-27 Jrg Lehmann <joerg@luga.de>
* Version 2.0.2 released.
2003-07-26 Jrg Lehmann <joerg@luga.de>
* item.py: Fixed typo in decades.getcontentsrecursive()
* Purged unneeded imports and local variables found by pychecker.
* Streamlined playingsong handling by using playbackinfochanged
instead of playlistchanged events.
* Check for __setstate__ in __getattr__ to enable unpickling of
certain wrapper classes for Python 2.3.
* setup.py: Move everything (including pcm module) into pytone module.
2003-07-25 Jrg Lehmann <joerg@luga.de>
* Version 2.0.1 released.
2003-07-24 Jrg Lehmann <joerg@luga.de>
* Allow batching of addition of songs to playlist.
* Statusbar for help window
* Command line switch for database rebuilt.
* Updated THANKS file.
2003-07-23 Jrg Lehmann <joerg@luga.de>
* Code cleanups at various places.
* Outstanding issues with playlist functionality have
been resolved now.
* Do automatic recenter around last song of playlist if
no song is being played.
* Add originating module to debugging output.
2003-07-20 Jrg Lehmann <joerg@luga.de>
* Fix load and save of playlists (thanks to Alexander Wirt
<formorer at formorer.de> for spotting this bug)
* Enable support for monochrome terminals again. Use
curses.has_colors() to determine color capabilities, but maybe we
eventually have to add a configuration variable for that.
2003-07-19 Jrg Lehmann <joerg@luga.de>
* Fix missing os.path.expanduser around config file path
(thanks to David Braaten <xiticix47 at hotmail.com>)
2003-07-18 Jrg Lehmann <joerg@luga.de>
* Version 2.0.0 finally released.
2003-06-08 Jrg Lehmann <joerg@luga.de>
* Move service setup from mainscreen.py to pytone.py
* Resurrect playlist functionality.
2003-05-25 Jrg Lehmann <joerg@luga.de>
* Renamed:
aoplayer.py -> internal.py,
mpg123player.py -> mpg123.py
xmmsplayer.py -> xmms.py
* First steps towards playback from remote db: try to
access song locally.
* Prevent too many register request from auto registerer.
2003-05-24 Jrg Lehmann <joerg@luga.de>
* players/mpg123player.py: Fix bug spotted by
John Plevyak <jplevyak at acm.org>: Adding a new song
after all songs had been played, required to stop and
restart the player, even though autoplay was enabled.
2003-05-17 Jrg Lehmann <joerg@luga.de>
* Support default background color and try to use
curses.use_default_colors, if present. This requires
a new version of the Python curses module.
* Support ossaudiodev instead of ao interface. Unfortunately,
this doesn't work well with the current ossaudiodev module
of Python 2.3beta1. On the other hand, I was not able
to run the ao module with a debug build of current Python
CVS. Probably, ao is buggy.
* helpwin.py: Set self.items already in constructor, to
prevent possible crash, if one presses a key during
the PyTone initialization
* songdb.py: Remove unused and dangerous __len__ method,
which lead sometimes to a crash during the PyTone shutdown.
2003-05-13 Jrg Lehmann <joerg@luga.de>
* New db index for playing statistics. Move respective
code to songdb.py
* Show info about songs which have been added most recently
to database.
2003-05-11 Jrg Lehmann <joerg@luga.de>
* item.py: Replaced filtereditem by two, more specialised, classes
filtereddecade and filteredgenre.
* iteminfowin.py, item.py: Move code for respective items into a
getinfo method.
* songdb.py: More index work, should be almost complete now.
2003-05-10 Jrg Lehmann <joerg@luga.de>
* MP3Info.py: change _strip_zero function to
- use faster lstrip, if Python 2.2.2 and above
- cut string after first (non-leading) \0 character,
thereby fixing PyTone crashes reported by a few
users.
* slist.py: Fix bug in selectbysearchstring and selectbyletter,
reported by John Plevyak <jplevyak at acm.org>.
2003-05-06 Jrg Lehmann <joerg@luga.de>
* mainscreen.py: Catch curses.curs_set exception (reported
by roland at steeltorch.com.
2003-05-05 Jrg Lehmann <joerg@luga.de>
* More database work and tests. Genres now contain indices
to albums and songs
* album -> albumid at appropriate places
* introduced song.id, but not yet used
2003-05-01 Jrg Lehmann <joerg@luga.de>
* Integrated and polished some patches by Iigo Serna
<inigoserna at telefonica.net>: Currently playing song gets different colour and
stays centred in playlist. Furthermore, some sanity checks of the id3 tags
have been included. Finally, as suggested by him, a much nicer scrollbar
has been implemented.
* Support ossaudiodev module (and old oss module , of course) as
suggested by Bill Kearney <wkearney99 at hotmail.com>.
* Many fixes for bugs remaining from code restructuring.
2003-04-19 Jrg Lehmann <joerg@luga.de>
* New configuration system is complete now.
2003-04-18 Jrg Lehmann <joerg@luga.de>
* Massive rework of configuration file handling.
Now it is possible to use ini-style file configuration files.
Exceptions are for the moment the key bindings.
2003-04-17 Jrg Lehmann <joerg@luga.de>
* Network connectivity now via TCP instead of XML-RPC.
2003-04-13 Jrg Lehmann <joerg@luga.de>
* Reworked config file as first step versus a
new config syntax. Import of the curses module
is no longer necessary (except for the check
whether the user has a color or a mono terminal,
which often doesn't work, so ...)
* Colors now have to be specified like in mutt
"color foreground background" or "mono attribute".
Foreground may contain the prefix "bright".
* Accept command line options for debugging output
and network functionality.
* Implement first rough cut of network functionality
via xmlrpc. Remote access to the database is now
possible.
2003-04-12 Jrg Lehmann <joerg@luga.de>
* Do not show playlist window of xmms (oops, forgot that).
* Added list of songs for albums (and root folder)
* Released 1.12.2 from the 1.12.1 codebase, fixing a Python 2.2ism.
2003-04-06 Jrg Lehmann <joerg@luga.de>
* Add immediately played to before last played item of playlist.
* Version 1.12.1 released.
* New module hub, the former event hub + a simple request hub.
* Major rework of database interface based upon new request hub.
Database now runs as separate thread.
* Requests for new songs now also use new request hub.
2003-04-05 Jrg Lehmann <joerg@luga.de>
* Some restructuring in the player code.
* Implement player pause.
* Flush buffers on player stop.
* Immediately play selected song via ALT+Return or ALT+Enter.
* Implemented shuffle function since it seemed to be very high on
the PyTone user's wishlist...
* Try to save state of playlist to dump file, if PyTone crashes.
During the next restart, PyTone tries to reconstruct the playlist.
* Be more verbose, if config.basedir and config.songddb are set
to incorrect values.
2003-03-19 Jrg Lehmann <joerg@luga.de>
* slist.py: prevent invalid items state.
* disable long traceback
2003-02-06 Jrg Lehmann <joerg@luga.de>
* updatedb.py script.
* cleanup at various places
* Version 1.12.0 released.
2003-02-04 Jrg Lehmann <joerg@luga.de>
* pcm.c: Don't free memory allocated by Python!
2003-02-03 Jrg Lehmann <joerg@luga.de>
* All *.py files: specify encoding (for Python 2.3)
* Remove #!/usr/bin/env python for modules
* pcm.c: Don't forget to free temporary buffer.
2003-01-30 Jrg Lehmann <joerg@luga.de>
* playerwin.py: Allow rating of currently playing song (via
alt+1, ..., alt+5 -- better suggestions are always welcome).
2003-01-26 Jrg Lehmann <joerg@luga.de>
* Incorporated patch by Byron Ellacott <bje at apnic.net>
adding Ogg Vorbis support.
* iteminfowin.py. Fix display of song length.
* pytone.py: Work around Python 2.1 gettext problem.
* THANKS: added Byron Ellacott.
* window.py: Don't unnecessarily trim title.
* config.py, helpwin.py, mixerwin.py: Make automatic
disappearing time configurable.
* inputwin.py: remove unnecessary import of oss module, which
prevents PyTone from working if it is not installed.
* config.py, playlist.py: Make location where playlists are stored
configurable.
* config.py, slist.py: Make scrolling mechanism configurable `a la
Mutt. Also use page up algorithm from mutt. Adapt to window size
changes, as well!
* config.py, item.py: Make position of virtual directories
configurable.
2003-01-21 Jrg Lehmann <joerg@luga.de>
* Version 1.11.0 released.
2003-01-18 Jrg Lehmann <joerg@luga.de>
* new class playbackinfo. All players should work again.
2003-01-16 Jrg Lehmann <joerg@luga.de>
* Indices for genres and years. This gives a huge speedup
for large databases.
* item.py: new item method getname().
2003-01-14 Jrg Lehmann <joerg@luga.de>
* Implement song, album and artist rating. Choose song
depending on rating upon random song insertion.
2003-01-13 Jrg Lehmann <joerg@luga.de>
* Implement random recursive insert. Reserve key "r" for
this function, giving up the old behaviour.
2003-01-12 Jrg Lehmann <joerg@luga.de>
* config.py: New option autoregisterer, which allows to
enable/disbale the song automatic searching for songs
and playlists after the start of PyTone.
* builddb.py: Manually populate song and playlist
database.
2003-01-09 Jrg Lehmann <joerg@luga.de>
* item.py: New classes decade and decades, which allow
to show only songs from a specify decade.
2003-01-06 Jrg Lehmann <joerg@luga.de>
* Some improvements/fixes for old songdb.py. Hopefully,
this version is more stable for large databases.
2003-01-02 Jrg Lehmann <joerg@luga.de>
* Implement bsddb3 version of songdb.py. Probably not
yet ready for next version.
2002-12-30 Jrg Lehmann <joerg@luga.de>
* players/madplayer.py: Set sample size to 4096 (instead of 4806,
i.e. the size of an mp3 frame). This is much more friendlier to
the sound device drivers! Thanks to Damjan Georgeivski
<penguinista at mail.net.mk> for pointing this out.
2002-12-22 Jrg Lehmann <joerg@luga.de>
* Use MP3Info.py from http://www.omniscia.org/~vivake/python
instead of old, modified mp3info.py from
http://www.dotfunk.com/projects/mp3/. As a consequence, id3v2
tags are now supported.
2002-12-21 Jrg Lehmann <joerg@luga.de>
* Version 1.10.0 released.
* madplayer.py: Manual song forward works again.
2002-12-19 Jrg Lehmann <joerg@luga.de>
* players/madplayer.py: Do not crossfade, if two songs follow
each other on an album. Kill the gap between the songs instead.
2002-12-15 Jrg Lehmann <joerg@luga.de>
* Implement genre list: New database schema, permitting efficient
search for items belonging to a given genre. New items: genres,
genre and filtereditem. The latter one can be used to display
only a subset of the directory hierarchy.
2002-12-14 Jrg Lehmann <joerg@luga.de>
* More refactoring: merge the two filelist classes. The filesystem
view is now provided by a virtual folder in item.py.
* filelist.py: Implemented jump functions to the random list and
the filesystem view.
* filelist.py: remove generaterandomlist.
* item.py: Refactoring. New method cmpitem of diritem classes.
Everything should work now properly.
* window.py, mainscreen.py: Reimplemented window resizing, which
is now much more robust. However, there are still some crashes
of xterm.
* config.py: Renamed "selectedsong" -> "selected song", etc. in
colors. Added new field "artist/album" and "selected
artist/album".
* iteminfo.py: Recognise new items.
2002-12-12 Jrg Lehmann <joerg@luga.de>
* Refactor filelist code: remove filelistitem, move logic
to item, etc.
* Allow resizing of terminal (not fully complete yet).
2002-12-11 Jrg Lehmann <joerg@luga.de>
* New module purgedb.py: This module allows
to delete no longer existent songs from the database.
2002-12-10 Jrg Lehmann <joerg@luga.de>
* Better formatting of last played time.
* Playlists are now also stored and displayed in
database and database view, respectively.
* Random songs are now also accesible via the
main database view.
2002-12-08 Jrg Lehmann <joerg@luga.de>
* Fix recursive insertion of top and last played songs.
* Directory like items now are able to return their
content.
2002-12-06 Jrg Lehmann <joerg@luga.de>
* Sort songs by tracknr if possible. Otherwise
use name.
* First implementation of top and last played lists.
* Fill up caches after song auto registering.
2002-11-30 Jrg Lehmann <joerg@luga.de>
* Version 1.9.7 released.
* More color work.
* Limit size of help window (therby preventing a crash occuring
for small terminal sizes) and make it scrollable.
2002-11-27 Jrg Lehmann <joerg@luga.de>
* Initial support for colors. Customizable via config.py.
* Enter and insert a directory only if the click has hit the
actual string. Otherwise only select the corresponding line.
I hope, this is more intuitive then the old behaviour.
2002-11-25 Jrg Lehmann <joerg@luga.de>
* Customize appearance of mixerwin and inputwin: one
can now choose between a popup and a status bar variant.
* inputwin.py: popup variant adjusts statusbar.
* mixerwin.py: popup variant adjusts statusbar.
* pytone.py: Use pytone base dir as base dir for locales.
This has to be changed, if we/someone else install the
.mo files under their proper location.
2002-11-25 Jrg Lehmann <joerg@luga.de>
* New module inputwin for a generic input window (for search
strings, filenames, etc).
2002-11-24 Jrg Lehmann <joerg@luga.de>
* More mouse work: Hide mixer and help win on mouse clicks.
* window.py: walk through all panels in enclose() method
* slist.py: Fix erroneous use of window width instead of height
which prevented correct scrolling in list windows.
* playlist.py: Localize load and save prompts.
2002-11-23 Jrg Lehmann <joerg@luga.de>
* Initial work for mouse support.
2002-11-03 Jrg Lehmann <joerg@luga.de>
* slist.py: Cleanup: remove active flag; use focus of
corresponding window instead.
* filelistwin.py: Activate file list window upon end of search.
Search should work again (Thanks to Andy Bourges for reporting
this bug).
* player.py: Also sleep in STOP state to prevent unnecessary CPU
utilization.
* Code cleanup at various places.
* Added MANIFEST.in and updated setup.py: Include AUTHORS,
COPYING, ChangeLOG, TODO, and *.mo files.
2002-11-02 Jrg Lehmann <joerg@luga.de>
* mixerwin.py: Localize mixer text.
* iteminfowin.py: Fix small bug, occurring if no ID3 tag is
present.
* helper.py: New function from Python Cookbook: extended
traceback.
* pytone.py: Print extended traceback when an uncaught exception
is raised.
* iteminfowin.py: Make geometry calculations more clean. Use
of spacer now dependent on window width.
* pytone.py: Removed obsolete reference to hipplayer module.
2002-11-01 Jrg Lehmann <joerg@luga.de>
* Localization work all over the place.
* filelist.py: Fix bug occurring when entering an empty
directory (Thanks to Andy Bourges for the bug report).
2002-10-27 Jrg Lehmann <joerg@luga.de>
* Version 1.9.6
* New handling of window focus: New event focuschanged instead
of old activewinchanged. The actual is granted to the panel
which is on top of the panel stack.
* Help and mixer windows now disappear upon keypress events.
* Moved function descriptions from config.py to new help.py.
Later on, we shall localize them via the gettext module.
* timer.py: Return immediately, if no alarms are pending.
2002-10-17 Jrg Lehmann <joerg@luga.de>
* timer.py: New timer service, which sends events at specified
times.
* events.py: New hidewindow event.
* window.py: Allow hiding of window. Also window.top()
* helpwin.py, mixerwin.py: Automatically hide after 5 seconds.
2002-10-13 Jrg Lehmann <joerg@luga.de>
* songdb.py: Implemented caching of list of all artists (and
already existent caching of all songs).
* filelist.py: Don't store list content in shistory, anymore.
* Implement context sensitivity of help window.
2002-10-12 Jrg Lehmann <joerg@luga.de>
* Implemented automatic adjustment of statusbar to
keybinding.
* Use curses.panel.
* First version of help window.
2002-10-12 Jrg Lehmann <joerg@luga.de>
* item.py: Prevent empty artist names
2002-09-20 Jrg Lehmann <joerg@luga.de>
* Version 1.9.5
* item.py: Try to be a little more intelligent during the
capitalization of song, album and artist names. For instance, only
force the first character of a word to be a capital one. Prevent
empty album and artist names, as well.
* filelist.py and songdb.py: Check for access permission of
directories and files.
* madplayer.py: Catch exception during mp3file object creation.
2002-09-20 Jrg Lehmann <joerg@luga.de>
* All players are now running in a separate thread.
* Factored out most of player control logic to player.py.
2002-09-10 Jrg Lehmann <joerg@luga.de>
* Implement write lock for song database.
* Automatic registering of songs proceeds now in separate thread.
* slist.py: Fix incorrect insertion of new items leading to
unsorted lists.
* Remove timer events, leading to notable decrease of idle CPU
usage.
* Add ALT+RightArrow to default key bindings for recursive
insertion of songs.
2002-09-08 Jrg Lehmann <joerg@luga.de>
* New event handling: Queue generated events and process them not
until an explicit call of a new process method. This makes event
handling in a multithreaded environment much simpler. The new
class eventhub collects the eventchannels from the different
threads.
* madplayer.py: Integrate madplayer class into player class, which
is made possible owing to new event handling.
* madplayer.py: Generate playbackinfochaned events only if there
was really a change.
2002-09-05 Jrg Lehmann <joerg@luga.de>
* Version 1.9.4
* Stopping works again in autoplay mode.
2002-08-31 Jrg Lehmann <joerg@luga.de>
* filelistwin.py: Corrected quick search key logic.
* Moved handling of global key bindings to pytone.py. Introduced
new events to signalize playlist changes.
* playlist.py: Don't save playlist, if name is empty.
* Implemented autoplay player option permitting automatic start of
playing, if playlist is not empty.
* More comments in config.db.
* players/mpg123player.py: Now also works with Python 2.1. Also
fixed error, where playback info was not displayed correctly.
* helper.py: Q&D solution to make debug output configurable.
2002-08-30 Jrg Lehmann <joerg@luga.de>
* Made key bindings configurable wherever possible.
* Added python modules to setup.py to ease creation of
distribution.
* pcm.c: Pad with zeros for crossfading of two buffers with
unequal lengths.
* players/madplayer.py: Adapted crossfading logic to change in
pcm.c.
* playerwin.py: Corrected minor error, where title of song was
show although playing has already finished.
2002-08-29 Jrg Lehmann <joerg@luga.de>
* Fixed the specification of the libao device. It is now also
possible to specify arbitrary options. Added aRts based player
sample config to config.py.
* Added setup.py for building of pcm extension module.
* RightArrow in playlist window now also moves to database window.
2002-08-28 Jrg Lehmann <joerg@luga.de>
* Version 1.9.3, aka ready for release
* Added license headers to all python files except config.py
* Renamed PyJuke -> PyTone following a suggestion by
Harald Grl (goerl at luga.de)
2002-08-25 Jrg Lehmann <joerg@luga.de>
* Version 1.9.2
* Added scrollbars and allow to turn them on/off via config.py
* Corrected error in madplayer.py, where too many new songs
were requested
* madplayer.py: return artist + song title as window title
* madplayer.py: indicate crossfading in title
* madplayer.py: made use of sound device configurable. Still need
to abstract device options!
* Minor fixes to documentation in index.html
* Added simple style.css for index.html
2002-08-22 Jrg Lehmann <joerg@luga.de>
* Version 1.9
* Crossfading for internal libmad based player now
works
* Restructured and documented config.py
* Added README with documentation
* Added ChangeLog, AUTHORS and COPYING
* Added some licence headers
2002-08-08 Jrg Lehmann <joerg@luga.de>
* Released 1.0 for Rothsee party
|