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 2400 2401 2402 2403 2404 2405 2406 2407 2408 2409 2410 2411 2412 2413 2414 2415 2416 2417 2418 2419 2420 2421 2422 2423 2424 2425 2426 2427 2428 2429 2430 2431 2432 2433 2434 2435 2436 2437 2438 2439 2440 2441 2442 2443 2444 2445 2446 2447 2448 2449 2450 2451 2452 2453 2454 2455 2456 2457 2458 2459 2460 2461 2462 2463 2464 2465 2466 2467 2468 2469 2470 2471 2472 2473 2474 2475 2476 2477 2478 2479 2480 2481 2482 2483 2484 2485 2486 2487 2488 2489 2490 2491 2492 2493 2494 2495 2496 2497 2498 2499 2500 2501 2502 2503 2504 2505 2506 2507 2508 2509 2510 2511 2512 2513 2514 2515 2516 2517 2518 2519 2520 2521 2522 2523 2524 2525 2526 2527 2528 2529 2530 2531 2532 2533 2534 2535 2536 2537 2538 2539 2540 2541 2542 2543 2544 2545 2546 2547 2548 2549 2550 2551 2552 2553 2554 2555 2556 2557 2558 2559 2560 2561 2562 2563 2564 2565 2566 2567 2568 2569 2570 2571 2572 2573 2574 2575 2576 2577 2578 2579 2580 2581 2582 2583 2584 2585 2586 2587 2588 2589 2590 2591 2592 2593 2594 2595 2596 2597 2598 2599 2600 2601 2602 2603 2604 2605 2606 2607 2608 2609 2610 2611 2612 2613 2614 2615 2616 2617 2618 2619 2620 2621 2622 2623 2624 2625 2626 2627 2628 2629 2630 2631 2632 2633 2634 2635 2636 2637 2638 2639 2640 2641 2642 2643 2644 2645 2646 2647 2648 2649 2650 2651 2652 2653 2654 2655 2656 2657 2658 2659 2660 2661 2662 2663 2664 2665 2666 2667 2668 2669 2670 2671 2672 2673 2674 2675 2676 2677 2678 2679 2680 2681 2682 2683 2684 2685 2686 2687 2688 2689 2690 2691 2692 2693 2694 2695 2696 2697 2698 2699 2700 2701 2702 2703 2704 2705 2706 2707 2708 2709 2710 2711 2712 2713 2714 2715 2716 2717 2718 2719 2720 2721 2722 2723 2724 2725 2726 2727 2728 2729 2730 2731 2732 2733 2734 2735 2736 2737 2738 2739 2740 2741 2742 2743 2744 2745 2746 2747 2748 2749 2750 2751 2752 2753 2754 2755 2756 2757 2758 2759 2760 2761 2762 2763 2764 2765 2766 2767 2768 2769 2770 2771 2772 2773 2774 2775 2776 2777 2778 2779 2780 2781 2782 2783 2784 2785 2786 2787 2788 2789 2790 2791 2792 2793 2794 2795 2796 2797 2798 2799 2800 2801 2802 2803 2804 2805 2806 2807 2808 2809 2810 2811 2812 2813 2814 2815 2816 2817 2818 2819 2820 2821 2822 2823 2824 2825 2826 2827 2828 2829 2830 2831 2832 2833 2834 2835 2836 2837 2838 2839 2840 2841 2842 2843 2844 2845 2846 2847 2848 2849 2850 2851 2852 2853 2854 2855 2856 2857 2858 2859 2860 2861 2862 2863 2864 2865 2866 2867 2868 2869 2870 2871 2872 2873 2874 2875 2876 2877 2878 2879 2880 2881 2882 2883 2884 2885 2886 2887 2888 2889 2890 2891 2892 2893 2894 2895 2896 2897 2898 2899 2900 2901 2902 2903 2904 2905 2906 2907 2908 2909 2910 2911 2912 2913 2914 2915 2916 2917 2918 2919 2920 2921 2922 2923 2924 2925 2926 2927 2928 2929 2930 2931 2932 2933 2934 2935 2936 2937 2938 2939 2940 2941 2942 2943 2944 2945 2946 2947 2948 2949 2950 2951 2952 2953 2954 2955 2956 2957 2958 2959 2960 2961 2962 2963 2964 2965 2966 2967 2968 2969 2970 2971 2972 2973 2974 2975 2976 2977 2978 2979 2980 2981 2982 2983 2984 2985 2986 2987 2988 2989 2990 2991 2992 2993 2994 2995 2996 2997 2998 2999 3000 3001 3002 3003 3004
|
Thu, 24 Jul 2008 10:50:08 +0200 <thp@perli.net>
gPodder 0.12.1 "The Little People" released
* bin/gpodder: gPodder 0.12.1 released
* data/messages.pot: Updated from source
* data/po/de.po: Updated German translation
* data/po/*.po: Updated from messages.pot
* doc/man/gpodder.1: gPodder 0.12.1 released
* README: gPodder 0.12.1 released
Mon, 21 Jul 2008 23:34:47 +0200 <thp@perli.net>
Updated French translation
* data/po/fr.po: Updated French translation (by Jerome Chabod)
Mon, 21 Jul 2008 23:33:26 +0200 <thp@perli.net>
Fix problems with command-line mode not working correctly
* src/gpodder/console.py: Fix problems with new code when using
"gpodder --run"; thanks to Mykola Nikishov <mn@mn.com.ua> for
reporting this bug on the Debian Bug Tracker (#491696)
Tue, 15 Jul 2008 15:15:42 -0400 <me@nikosapi.org>
Fix Device traceback when syncing (reported by: FriedBunny)
* src/gpodder/sync.py: forgot to rename _track_on_device() in
Device.episode_on_device()
Tue, 15 Jul 2008 10:21:39 +0200 <thp@perli.net>
gPodder 0.12.0 "Metropolis" released
* bin/gpodder: gPodder 0.12.0 released
* data/messages.pot: Updated for the 0.12.0 release
* data/po/de.po: Updated for the 0.12.0 release
* data/po/*.po: Updated from messages.pot
* doc/man/gpodder.1: gPodder 0.12.0 released
* README: gPodder 0.12.0 released, mention pysqlite2 for Py2.4
Tue, 15 Jul 2008 10:08:16 +0200 <thp@perli.net>
Fix bugs and annoyances when no channels.opml file exists
* src/gpodder/opml.py: Make sure can save a new channels.opml file
when no other file exists, and make sure we don't try to parse a file
that does not exist when opening OPML files
Tue, 15 Jul 2008 10:06:19 +0200 <thp@perli.net>
Do not hide podcast cover and pill pixbuf in podcast list by default
* src/gpodder/config.py: Change default settings
Tue, 15 Jul 2008 09:54:57 +0200 <thp@perli.net>
Support saving multiple episodes to disk (reported by: O. Emmerson)
* src/gpodder/gui.py: Make sure that we support saving multiple
selections for the "Save to disk" context menu item
Mon, 14 Jul 2008 15:18:04 -0400 <me@nikosapi.org>
Always show downloaded episodes (Patch from Justin Forest)
* src/gpodder/dbsqlite.py: Include downloaded episodes even when they
go beyond the episode limit. e.g., when you have
gl.max_episodes_per_feed set to 10, but there are 20 downloaded ones
already. With this patch, all 20 episodes are displayed.
Mon, 14 Jul 2008 12:31:15 -0400 <me@nikosapi.org>
Merge patch to fix bug #122 (Day of week Released date not computed correctly)
* src/gpodder/libpodcasts.py: use rfc822.mktime_tz() to convert
timestamps from feedparser's _parse_date() function to seconds from
the epoch (in UTC instead of the local timezone)
* src/gpodder/util.py: fix util.format_date() so that when it reports
'Today', it means the timestamp is from after 00:00 local time
Mon, 14 Jul 2008 12:21:37 -0400 <me@nikosapi.org>
Merge patch to fix bug #125 (Deleting a podcast while checking for new
episodes allows a second concurrent sync.)
* src/gpodder/gui.py: make update_feed_cache() check if the feed cache
is being updated before allowing an update to take place
Sun, 13 Jul 2008 15:32:22 -0400 <me@nikosapi.org>
Fix python 2.4 crash (reported by: Wilfred van Rooijen)
* src/gpodder/draw.py: change ".5 if close else 0" to valid python
2.4 syntax
Sun, 13 Jul 2008 15:19:39 -0400 <me@nikosapi.org>
Fix MP3PlayerDevice traceback when syncing (reported by: Wilfred van Rooijen)
* src/gpodder/sync.py: make Device.__track_on_device() non-private
Sat, 12 Jul 2008 14:12:11 +0200 <jerome.chabod@ifrance.com>
Merge patch to fix bug #149 (Remove Old Podcasts does not always have enabled
delete button)
* src/gpodder/gui.py: Use count of selected episodes instead of total
size to activate action button in episode selector (episodes with
unknow size have a total size of zero)
Fri, 11 Jul 2008 14:11:08 -0400 <me@nikosapi.org>
Merge patch to fix bug #147 (Sync doesn't work)
* src/gpodder/gui.py: Use Device.episode_on_device(episode) to retrive
device_episode and simplify logic to determine whether an episode is on
the device and eligible for removal
* src/gpodder/sync.py: Add Device.episode_on_device(episode)
Fri, 11 Jul 2008 13:09:55 -0400 <me@nikosapi.org>
Update podcast tab title when adding or removing channels
* src/gpodder/gui.py: Add update_podcasts_tab() and call it when a
channel is added or removed
Thu, 10 Jul 2008 23:54:57 +0200 <thp@perli.net>
Update list of donators
* src/gpodder/gui.py: Update list of donators
Thu, 10 Jul 2008 23:49:12 +0200 <thp@perli.net>
Don't warn the user when timestamp is None
* src/gpodder/util.py: Don't warn the user when timestamp is None in
gpodder.util.format_date; Thanks to Bernd Schlapsi for reporting this
bug (Closes: http://bugs.gpodder.org/show_bug.cgi?id=148)
Wed, 09 Jul 2008 12:19:26 +0200 <thp@perli.net>
Simply advanced configuration editor, implement usability suggestions
* data/gpodder.glade: Implement usability suggestions from
http://gpodder.org/files/user_test_2008-05.pdf: Rename "Player" tab in
preferences to "Device"; change "Filter:" to "Search for:" in advanced
configuration editor
* src/gpodder/config.py: Support code for changes in the advanced
configuration editor dialog (model)
* src/gpodder/gui.py: Modify the advanced configuration editor to have
check boxes for boolean values, remove the "Type" column and rename
the columns as suggested by the May 2008 user test; use italic font
instead of bold for values set to something other than the default
Tue, 08 Jul 2008 21:25:24 -0400 <me@nikosapi.org>
Merge check free space before syncing patch
* src/gpodder/gui.py: Display a dialog box informing the user in the
event that there is insufficient free space on their device before
syncing begins.
* src/gpodder/sync.py: Added Device.tracks_list which is populated by
Device.get_all_tracks() when Device.open() is called.
Added Device.episode_on_device(episode)
Added Device.get_free_space()
Tue, 08 Jul 2008 21:10:48 -0400 <me@nikosapi.org>
Small bugfixes
* src/gpodder/gui.py: for bluetooth file transfer make sure
episode.sync_filename() doesn't contain any troublesome characters
eg. some episodes include / in the title
* src/gpodder/libpodcasts.py: comment out mimetype logging, it gets
annoying after a while...
* src/gpodder/util.py: remove "path = os.path.dirname(path)" from
get_free_disk_space(path), this prevented the real free disk space
from being reported
Sun, 06 Jul 2008 23:11:33 +0200 <thp@perli.net>
Update book donators list
* src/gpodder/gui.py: Add PhilF to list of book donators
Sat, 05 Jul 2008 15:23:55 -0400 <me@nikosapi.org>
Support episodes without a guid during migration (patch from Justin Forest)
* src/gpodder/dbsqlite.py: Don't raise an exception if an episode is
missing a guid
* src/gpodder/libpodcasts.py: Make sure that episodes from LocalDBReader
always contain some kind of guid
Fri, 04 Jul 2008 13:25:12 -0400 <me@nikosapi.org>
* src/gpodder/gui.py: fix traceback when deleting episodes from device
Fri, 04 Jul 2008 18:47:19 +0200 <thp@perli.net>
New look for the "pill" pixbuf
* src/gpodder/draw.py: Refresh the look of the "pill" pixbuf code, so
we have a more visually pleasing status display in the podcast list
Thu, 03 Jul 2008 20:09:18 -0400 <me@nikosapi.org>
Display message if user tries to sync to iPod without gpod installed
* src/gpodder/gui.py: Add an informative self.notification() if the user
attempts to sync an iPod without the libgpod python bindings installed
* src/gpodder/sync.py: Add sync.gpod_available, Add Device.errors to
prevent a crash in the event of an error
Thu, 03 Jul 2008 20:26:50 +0200 <thp@perli.net>
Update list of book donators
* src/gpodder/gui.py: Add Franz Seidl to list of book donators
Tue, 01 Jul 2008 22:46:52 -0400 <me@nikosapi.org>
Better file extension detection using feed items' mimetypes
* src/gpodder/gui.py: Use episode.file_type() instead of
util.file_type_by_extension(util.file_extension_from_url(url))
* src/gpodder/libgpodder.py: Use episode.file_type() instead of
util.file_type_by_extension(util.file_extension_from_url(url))
* src/gpodder/libpodcasts.py: Add new column to the channel list
gtk.ListStore for holding the file extension. Add extension()
function to podcastItem which makes use mimetype in the event that
filename_from_url()[1] returns None
* src/gpodder/util.py: file_extension_from_url is renamed to
filename_from_url and returns (filename, extension)
Added extension_from_mimetype(mimetype)
Mon, 30 Jun 2008 17:39:36 +0200 <thp@perli.net>
Do not update podcast list when closing channel window (patch by Justin Forest)
* src/gpodder/gui.py: Do not update podcast list when closing the
channel window, saves some CPU cycles. Patch by Justin Forest
(Closes: http://bugs.gpodder.org/show_bug.cgi?id=135)
Sun, 29 Jun 2008 16:59:30 -0400 <me@nikosapi.org>
Merge patch from Justin Forest and Thomas Perl:
- Use SQLite instead of cPickle to store all data, including feed summary
and entries, download and play history.
- Migration assistant to import the old cPickle files in to the SQLite DB
* src/gpodder/cache.py: SQLite-related accomodations
* src/gpodder/console.py: SQLite-related accomodations
* src/gpodder/dbsqlite.py: New file, SQLite interface for gPodder
* src/gpodder/gui.py: Lots of changes to accomodate the new SQLite
DB + new migration assistant code
* src/gpodder/libgpodder.py: Added gPodderLib.migrate_to_sqlite().
HistoryStore and ChannelSettings are marked as DEPRECATED
* src/gpodder/libpodcasts.py: SQLite-related accomodations and new
code for setting/determining episode state
* src/gpodder/sync.py: SQLite-related accomodations
* src/gpodder/trayicon.py: Use episode.was_downloaded() instead
of episode.is_downloaded()
* src/gpodder/util.py: SQLite-related accomodations
Sun, 29 Jun 2008 16:15:54 +0200 <jerome.chabod@ifrance.com>
Fix a bug in shutil when moving the download directory bug (#8)
* src/gpodder/libgpodder.py: When the shutil.move() bug is detected
(an NameError is thrown when moving from an ext file sytem to a
fat or ntfs filesystem, see http://bugs.python.org/issue2549),
the error is ignored, then the previous directory is removed
by a system call to "rm"
Thu, 19 Jun 2008 10:50:11 +0200 <thp@perli.net>
Fix OPML dialog button sensitivity; sensitivity+totals for Episode Selector
* src/gpodder/gui.py: Fix the sensitivity setting of the OPML lister
when using the "Select All"/"Select None" buttons; add button
sensitivity setting code to Episode Selector and add episode count
Thu, 19 Jun 2008 09:46:38 +0200 <thp@perli.net>
Fix alignment of "pill" pixbuf
* src/gpodder/gui.py: Align the "pill" pixbuf all to the right
Thu, 19 Jun 2008 09:30:53 +0200 <thp@perli.net>
Use as much space as possible for podcast title and description
* src/gpodder/gui.py: Hide the "pill" pixbuf cell when we don't have a
value to display, so we can show more of the channel title +
description
* src/gpodder/libpodcasts.py: Add a new boolean value to tell the
treeview column if we need to show the "pill" cell or not
Tue, 17 Jun 2008 19:41:33 -0400 <me@nikosapi.org>
Add 'Select All' and 'Select None' buttons to gPodderOpmlLister
* data/gpodder.glade: add 'Select All' and 'Select None' buttons to
the the bottom-left of the gPodderOpmlLister window
* src/gpodder/gui.py: add button signal handlers and a function
( select_all(bool) ) to facilitate selecting all or no channels
Tue, 17 Jun 2008 14:49:12 +0200 <thp@perli.net>
Make handling pubDates a bit safer when reading it externally
* src/gpodder/libpodcasts.py: Make handling of pubDates a bit more
secure and easier
* src/gpodder/gui.py: Add Daniel Ramos to list of donators and bug
reporters
Sun, 15 Jun 2008 14:44:29 +0200 <thp@perli.net>
Merge "Allows user command execution after certain events" from Paul Rudkin
* src/gpodder/config.py: Add two new configuration options:
cmd_all_downloads_complete and cmd_download_complete
* src/gpodder/download.py: Call the user-specific command when a
download finishes (if configured)
* src/gpodder/gui.py: If all downloads have been completed, execute
the user-specific command (if configured)
* src/gpodder/libgpodder.py: Add ext_command_thread function that
handles calling an external command
(Closes: http://bugs.gpodder.org/show_bug.cgi?id=4)
Sun, 15 Jun 2008 14:23:40 +0200 <thp@perli.net>
Support tooltips for the episode list; improve tooltip appearance
* src/gpodder/gui.py: Add tooltips to treeAvailable (episode list);
avoid showing tooltips while the context menu of the treeChannels and
treeAvailable is open, so the tooltip doesn't appear over the context
menu; add Sebastian Krause to list of bug reporters
* src/gpodder/util.py: Try to convert some HTML tags to text-only
characters (<br> to newline, <li> to a "*", etc..) so the description
of an episode is easier to read and looks more structured; also,
convert more than two subsequent newlines to maximum two newlines
(Closes: http://bugs.gpodder.org/show_bug.cgi?id=126)
Sat, 14 Jun 2008 12:29:11 -0400 <me@nikosapi.org>
* src/gpodder/libpodcasts.py: make LocalDBReader and LocalDBWriter
read/save the episode mimetype attribute in the LocalDB. This
prevents the mimetype attribute from being set to
'application/octet-stream' after a file is downloaded.
Sat, 14 Jun 2008 18:50:29 +0200 <thp@perli.net>
Improve performance related to pubDate parsing; Download button; update feeds
* src/gpodder/gui.py: Notify user when we are building the list of
channels instead of staying at "updating [last feed]".; Make the "OK"
button of the gPodderEpisodeSelector a "Downlaod" button, because
that's what the button does when clicking it - downloading episodes
* src/gpodder/libpodcasts.py: pubDate is now an Unix timestamp
everywhere and not a string, which has to be parsed quite often; Fix
up and improve the creation of the channel list model
* src/gpodder/sync.py: Customizations for the new pubDate code
* src/gpodder/util.py: Remove updated_parsed_to_rfc2822, because we
don't need it anymore with the new pubDate code
Sat, 14 Jun 2008 15:56:53 +0200 <thp@perli.net>
Make things less verbose and fix a problem with cover art handling
* src/gpodder/gui.py: Fix problem when trying to remove a non-existent
podcast cover art from the cache; make things less verbose
* src/gpodder/*.py: Make things less verbose
Sat, 14 Jun 2008 15:16:09 +0200 <thp@perli.net>
Detect HTML and OPML content when adding a podcast subscription
* src/gpodder/gui.py: Detect HTML and OPML content when adding a
podcast feed that is not parseable by feedparser; when the content
suggests the file is an OPML file, open the OPML dialog, when it looks
like an HTML file, ask the user if she wants to browse the content
with the web browser and look for a suitable XML/feed URL
(This fixes the first suggestion in the May 2008 Usability Evaluation)
Fri, 13 Jun 2008 21:32:57 +0200 <thp@perli.net>
Automatically download channel cover file; improve channel cover handling
* data/gpodder.glade: Simplify and clean-up the podcast editor dialog,
especially with respect to the cover art stuff
* src/gpodder/config.py: Add configuration option
"podcast_list_icon_size" that determines the pixel size of the cover
art displayed in the podcast list
* src/gpodder/gui.py: Add cover cache, register with the cover
downloader service in the main window, handle messages from the cover
downloader (removed and download finished); request covers for
channels when refreshing the channel list; make sure drag'n'drop of
image files to the channel list works directly and sets the
corresponding channel cover; Rework cover download handling and add an
open dialog as suggested by the May 2008 Usability Evaluation
* src/gpodder/libgpodder.py: Remove old, attic image downloading code
from gPodderLib, because it now has its own service class
* src/gpodder/libpodcasts.py: Remove unneeded get_cover_pixbuf helper
function for podcastChannel; improve channels_to_model to take
advantage of the new cover downloader service
* src/gpodder/services.py: Add CoverDownloader service that acts as a
central hub for all downloading and modifying of channel cover art,
including notification of observers (through ObservableService)
* src/gpodder/util.py: Add resize_pixbuf_keep_ratio helper function to
resize a gtk pixbuf while keeping the aspect radio (with optional
caching support through a dictionary parameter)
(Closes: http://bugs.gpodder.org/show_bug.cgi?id=88)
Fri, 13 Jun 2008 20:10:13 +0200 <thp@perli.net>
Fix a bug in the experimental file naming support
* src/gpodder/util.py: Fix bug that stopped the experimental file
naming patch from working; thanks to Shane Donohoe for reporting
Fri, 13 Jun 2008 16:08:16 +0200 <thp@perli.net>
Merge patch to add experimental support for "normal" file naming
* src/gpodder/config.py: New option "experimental_file_naming" that
defaults to False and enables the new (but experimental!) normal file
naming mode in which the downloaded podcast episodes get their name
not from the md5sum of the download URL, but from the basename of the
download URL, which makes filenames more human-readable
* src/gpodder/libpodcasts.py: Change local_filename() in podcastItem
to decide if we use md5sums or the "new" file naming mode for creating
the local file name of an episode
* src/gpodder/sync.py: Change usage of the "encoding" detection in
gpodder.util (from detect_os_encoding() to simply encoding)
* src/gpodder/util.py: Only detect the filename encoding once (at
program start) and then make it accessible via a global "encoding"
variable in the gpodder.util module; add improvements to
file_extension_from_url() to be able to return the complete filename
and to support more creative URL schemes as implemented by podcast
feed authors (this hopefully makes more feeds work in a proper way)
(Closes: http://bugs.gpodder.org/show_bug.cgi?id=57)
Fri, 13 Jun 2008 14:27:30 +0200 <thp@perli.net>
Merge patch from Justin Forest to speed up pubDate detection
* src/gpodder/gui.py: Add Justin Forest to the list of contributors
and make sure we clear the pubDate cache in the channel when changing
episode downloaded status manually
* src/gpodder/libpodcasts.py: Merge patch from Justin Forest to speed
up the newest_pubdate_downloaded() function by caching its value
instead of re-calculating it on every call
(Closes: http://bugs.gpodder.org/show_bug.cgi?id=124)
Fri, 13 Jun 2008 09:37:45 +0200 <thp@perli.net>
Merge patch from Nick to add support for deleting played files on sync
* data/gpodder.glade: Add check button for "Delete episodes on device
that have been marked played in gPodder"
* src/gpodder/config.py: Add two new config options:
"mp3_player_delete_played" and "mp3_player_max_filename_length"
* src/gpodder/gui.py:
* src/gpodder/libpodcasts.py: Add "is_deleted()" convenience function
for a podcast episode
* src/gpodder/sync.py: Clean-up and simplify parts of the code to make
it better-structured and avoid code duplication; use the configuration
variable for the MAX_FILENAME_LENGTH instead of hard-coding it to 100
* src/gpodder/util.py: Split sanitize_filename() into two functions,
detect_os_encoding() and sanitize_filename() for better code re-use
(Closes: http://bugs.gpodder.org/show_bug.cgi?id=56; code written by
Nick (nikosapi) and initial idea by Shane Donohoe, see the bug page)
Sun, 08 Jun 2008 20:08:58 +0200 <thp@perli.net>
Patch from Jérôme Chabod to fix "minimize on start" bug (#123)
* src/gpodder/gui.py: Patch from Jérôme Chabod to fix "minimize on
start" bug by moving the minimizing code after the "show window" code
(Closes: http://bugs.gpodder.org/show_bug.cgi?id=123)
Sun, 08 Jun 2008 20:06:51 +0200 <thp@perli.net>
Updated Portuguese translation by João Paulo Pinto Trindade
* data/po/pt.po: Updated PT translation by João Paulo Pinto Trindade
Thu, 05 Jun 2008 18:16:05 +0200 <thp@perli.net>
Improve/fix podcast list tooltips as suggested by the Usability Test
* src/gpodder/gui.py: Restructure and redesign the podcast list
according to the suggestions in the Usability Test
* src/gpodder/libpodcasts.py: Add helping code for the new tooltips
Thu, 05 Jun 2008 18:12:20 +0200 <thp@perli.net>
New (optional) dependency: PIL (for Rockbox Cover Art)
* README: Mention PIL as dependency for Rockbox Cover Art
Thu, 05 Jun 2008 18:10:11 +0200 <thp@perli.net>
Merge Support for Rockbox Cover Art patch (by David Spreen and Nick)
* src/gpodder/config.py: Add configuration options for rockbox cover
art, thanks to Nick for providing the patch and integration
* src/gpodder/gui.py: Add David Spreen to the list of contributors
* src/gpodder/sync.py: Merge patch from David Spreen and Nick to
support Rockbox cover art synchronization
Sun, 01 Jun 2008 10:17:32 +0200 <thp@perli.net>
Merge back changes from the 0.11.3 release branch into trunk
* bin/gpodder: Updated for 0.11.3+svn
* data/messages.pot: Merged from 0.11.3 release branch
* data/po/*.po: Merged from 0.11.3 release branch
* doc/man/gpodder.1: Merged from 0.11.3 release branch
* README: Merged from 0.11.3 release branch
Sun, 25 May 2008 17:17:10 +0200 <thp@perli.net>
Fix problem with BitTorrent preferences
* src/gpodder/gui.py: Merge bugfix patch by Nick (nikosapi) to make
the BitTorrent preferences work correctly
Sun, 25 May 2008 17:10:36 +0200 <thp@perli.net>
Updated Spanish and Swedish translations
* data/po/es.po: Updated Spanish translation by Marcos Hernández
* data/po/sv.po: Updated Swedish translation by Anders Kvist
* src/gpodder/gui.py: Add Marcos Hernández to list of contributors,
because he did the updated Spanish translation
Fri, 23 May 2008 21:39:32 +0200 <thp@perli.net>
Updated French translation by Jérôme Chabod
* data/po/fr.po: Updated French translation by Jérôme Chabod
Mon, 19 May 2008 15:12:41 +0200 <thp@perli.net>
Updated translations before the release stabilization phase
* data/messages.pot: Updated from source
* data/po/*.po: Updated from messages.pot
Fri, 16 May 2008 10:02:23 +0200 <thp@perli.net>
Add option to not hide channel cover and pill when the sidebar gets smaller
* src/gpodder/config.py: Add "podcast_sidebar_save_space" option
* src/gpodder/gui.py: Don't hide the channel cover and pill in the
podcast list when the sidebar gets smaller; idea by Shane Donohoe
Wed, 14 May 2008 15:34:25 +0200 <thp@perli.net>
Download start performance improvements; fix podcast list handling
* data/gpodder.glade: Convert the gPodderAddPodcastDialog from a
GtkWindow to a real GtkDialog to make Escape key work and set the URL
entry box to activate the "Add" button when Enter is pressed in it
* src/gpodder/gui.py: Fix podcast selection in updateComboBox, so the
currect podcast is selected when removing/adding podcasts; allow to
pass a URL which should be selected after the update; use
DownloadStatusManager's new batch mode to speed up starting many
downloads at once (very visible speed improvement); adding podcasts
has also been improved a bit with the new code
* src/gpodder/services.py: Support batch mode (i.e. only notify after
all episodes have been added to th download list); this speeds up the
UI when multiple episodes are downloaded at once
Wed, 14 May 2008 11:59:20 +0200 <thp@perli.net>
Updated Russian translation by Vladimir Zemlyakov
* data/po/ru.po: Updated Russian translation by Vladimir Zemlyakov
Mon, 12 May 2008 11:38:55 +0200 <thp@perli.net>
Fix a crasher with ExpatError when trying to parse an invalid itms:// URL
* src/gpodder/gui.py: Give an error message when adding a channel that
doesn't result in a valid URL being returned
* src/gpodder/util.py: Improve handling of itms:// URLs that are not
valid iTunes Podcast links, so they don't crash; thanks to Ralph on
Launchpad for reporting this bug
(Closes: https://bugs.launchpad.net/ubuntu/+source/gpodder/+bug/214113)
Mon, 12 May 2008 11:26:43 +0200 <thp@perli.net>
Fix race condition in is_download_in_progress()
* src/gpodder/services.py: Make sure we behave correctly when items in
the download list disappear while we are iterating over the list of
downloads when trying to find out if a download is already in progress
* src/gpodder/gui.py: Add SPGoetze to list of bug reporters
(Closes: https://bugs.launchpad.net/ubuntu/+source/gpodder/+bug/208964)
Mon, 12 May 2008 11:04:53 +0200 <thp@perli.net>
Fix bugs in the calculate_size utility function
* src/gpodder/util.py: Fix problem when accessing files or folders is
not possible in calculate_size(); thanks to Scott Wegner for reporting
this bug on Launchpad
* src/gpodder/gui.py: Add Scott Wegner to list of bug reporters
(Closes: https://bugs.launchpad.net/ubuntu/+source/gpodder/+bug/201276)
Sun, 11 May 2008 15:00:07 +0200 <thp@perli.net>
Update German translation, refresh translations
* data/messages.pot: Refreshed from source code
* data/po/*.po: Refreshed from messages.pot
* data/po/de.po: Refreshed and updated
Sat, 10 May 2008 16:45:36 +0200 <thp@perli.net>
Make gPodder respect the user's GNOME toolbar style settings
* src/gpodder/gui.py: Add Stefan Lohmaier to list of bug reporters
* data/gpodder.glade: Remove the preset toolbar style (use user's
configured toolbar style) and set the episode-related toolbar buttons
to be "important" (so the text is displayed in the mixed mode); thanks
to Stefan Lohmaier on gPodder Bugzilla for reporting this bug
(Closes: http://bugs.gpodder.org/show_bug.cgi?id=105)
Sat, 10 May 2008 13:38:34 +0200 <thp@perli.net>
Improve feed cache update speed, thanks to the users at ITT
* src/gpodder/cache.py: fetch() now returns an (updated, feed) tuple,
where "updated" is a boolean value telling if the feed has been
updated since the last run and "feed" is the feedparser feed data; fix
a bug where the etag and the last-modified time were never used in a
conditional download of not-changed feeds (my fault ;)
* src/gpodder/console.py: Sync the feed cache to disk after adding a
new podcast to the subscription list
* src/gpodder/gui.py: Pass the list of old channels to the
load_channels() function call, so we can save some CPU cycles when the
feed has not changed and we are allowed to re-use the old, parsed one
* src/gpodder/libpodcasts.py: Don't auto-sync the feed cache when
getting the podcastChannel for a feed; add podcastChannel.sync_cache()
function that saves the feed cache to disk; make it possible to pass a
list of old channels to load_channels() and use the old channel
objects in case the new one hasn't changed since the last run
(see http://www.internettablettalk.com/forums/showpost.php?p=179261&postcount=62)
Sat, 10 May 2008 13:33:49 +0200 <thp@perli.net>
Fix problem on Maemo when window open sound occurs twice on start
* data/gpodder.glade: Don't show gPodder main window initially
* src/gpodder/gui.py: Show gPodder main window only after the UI
elements have been set up (on Desktop) and don't destroy old main
window after re-parenting the vbox to the hildonized window (on Maemo)
Sat, 10 May 2008 13:24:19 +0200 <thp@perli.net>
Don't change the menu item text for subscription remove and edit
* src/gpodder/gui.py: Don't change the text of the subscription menu
items when changing the active channel
Sat, 10 May 2008 12:37:06 +0200 <thp@perli.net>
Show correct icon on Maemo for gPodder
* data/maemo/gpodder.desktop: Add Portuguese translation to Maemo's
.desktop file; add StartupWMClass=gpodder to the .desktop file for
Maemo, so the window manager on Maemo shows the correct icon when
gPodder is running instead of the "generic" application icon
Mon, 05 May 2008 15:55:02 +0200 <thp@perli.net>
Add bug reporter for previous bug to list of contributors
* src/gpodder/gui.py: Add Jerry Moss to list of bug reporters
Mon, 05 May 2008 15:52:49 +0200 <thp@perli.net>
Make sure we have a valid channel on which to call get_new_episodes()
* src/gpodder/gui.py: Refactor on_btnDownloadNewer_clicked into the
single calling code and remove the callback; this should really fix
the problem described in LP bug 217113
(Closes: https://bugs.launchpad.net/ubuntu/+source/gpodder/+bug/217113)
Fri, 02 May 2008 17:42:54 +0200 <thp@perli.net>
Maemo-related changes; allow custom player on Maemo (optional)
* data/gpodder.glade: gPodder maemo preferences window should be
modal; Add "Ask before closing gPodder" checkbox to Maemo preferences
* src/gpodder/config.py: Add option "maemo_allow_custom_player" that
allows setting the "player" and "videoplayer" variables to a command
that will be called, like on the Desktop version (instead of always
opening Nokia's Media Player with all files)
* src/gpodder/gui.py: Maemo-specific UI tweaks
* src/gpodder/libgpodder.py: Only call Nokia's Mediaplayer when we are
on Maemo and when "maemo_allow_custom_player" is set to False
Fri, 02 May 2008 17:28:22 +0200 <thp@perli.net>
Change "Channel" to "Podcast"; new main menu; URL entry updated; +niceties
* data/gpodder.glade: Change "Channel" to "Podcast"; re-structure main
menu in gPodder window
* src/gpodder/config.py: Add "show_podcast_url_entry" configuration
option that controls whether the podcast url entry box is shown in the
main window or not; add observer functionality to the configuration
manager, so UI elements can "watch" the configuration manager for
changes of UI-related configuration options
* src/gpodder/console.py: Change "Channel" to "Podcast"
* src/gpodder/gui.py: Hildon-specific file open/save dialogs; default
"Enter podcast URL..." test for the URL entry box; size-dependent
showing and hiding of podcast icon and downloaded count pixmap also
for the Desktop version; change "Channel" to "Podcast"; offer
first-time users to see a list of example podcasts to subscribe to;
dynamic main menu; code supporting the main menu changes; add code for
sending the subscription list via e-mail; import from OPML file in
addition to import from OPML URL; remove unneeded callbacks (wishlist,
select all, ...); optionally set title and hide url entry in the
gPodderOpmlLister (OPML import GUI); Add Frank Harper to list of
contributors (initial reporter of bug #82)
* src/gpodder/libgpodder.py: Add "send_subscriptions" function that
sends the user's channels.opml file via E-Mail (using xdg-email);
rename "Channel" to "Podcast"
(Closes: http://bugs.gpodder.org/show_bug.cgi?id=82)
(Closes: http://bugs.gpodder.org/show_bug.cgi?id=103)
Fri, 02 May 2008 15:52:31 +0200 <thp@perli.net>
Updated Portuguese translation by João Trindade
* data/gpodder.desktop: Updated Portuguese translation
* data/po/pt.po: Updated Portuguese translation
* src/gpodder/gui.py: Add João Trindade to list of contributors
Thu, 01 May 2008 11:20:28 +0200 <thp@perli.net>
Fix a spelling mistake in the French translation
* data/po/fr.po: Fixed French translation from Jérôme Chabod; thanks
to drust for pointing out the spelling mistake
(Closes: http://bugs.gpodder.org/show_bug.cgi?id=101)
Tue, 29 Apr 2008 20:21:45 +0200 <thp@perli.net>
Fix problems with resizing the treeview on Maemo
* src/gpodder/gui.py: Fix problems with treeview resizing and remove
printing the percentage
* bin/gpodder: We're in development again, so "+svn"
Sat, 26 Apr 2008 08:34:37 +0200 <thp@perli.net>
Merge gPodder 0.11.2 release stuff and German translation update
* bin/gpodder: Updated version and release date
* data/po/de.po: Updated German translation
* data/messages.pot: Updated from source code
* data/po/*.po: Updated from messages.pot
* doc/man/gpodder.1: Updated manpage for release
* README: Updated README for release
Thu, 24 Apr 2008 19:40:55 +0200 <thp@perli.net>
Maemo-specific dialogs and UI improvements
* data/gpodder.glade: Maemo-specific "Add Podcast" dialog and
Maemo-specific, stripped-down "Preferences" dialog added
* src/gpodder/gui.py: Hide channel add UI from main window; make label
for update button even shorter; hide cover and pill cells in the
channel list if it gets too small; Maemo-specific dialogs for both
adding channels and editing preferences
Thu, 24 Apr 2008 18:19:02 +0200 <thp@perli.net>
Maemo finger-friendly updates; minor UI changes
* data/gpodder.glade: Ellipsize the feed update progressbar in the
middle instead of the end (to show progress)
* src/gpodder/gui.py: Add support for finger-friendly widget (buttons,
scroll areas, popup menus, etc..); text is "Loading [...]" when
loading feed cache and "Updating [...]" when updating feeds; on Maemo,
don't set the tab title to the current episode title; hide the heading
in gPodderEpisodeSelector on Maemo (to save screen space); add
finger_friendly_widgets class attribute to several gPodder windows;
make the tabs in the main window a bit taller, but remove the border
around the main window to gain some space on the screen
Thu, 24 Apr 2008 15:48:58 +0200 <thp@perli.net>
Updated Swedish translation by Anders Kvist
* data/po/sv.po: Updated Swedish translation by Anders Kvist
Wed, 23 Apr 2008 22:31:42 +0200 <thp@perli.net>
Merge patch from Junio C Hamano to fix problems with zero-length in feeds
* src/gpodder/gui.py: Update list of contributors/patch writers
* src/gpodder/services.py: Patch from Junio C Hamano to fix a problem
when a feed has zero length, which would otherwise result in a
divide-by-zero error
Tue, 22 Apr 2008 21:57:31 +0200 <thp@perli.net>
Typo from previous commit
* src/gpodder/libpodcasts.py: Fix typo
Tue, 22 Apr 2008 21:54:01 +0200 <thp@perli.net>
Diverse changes, code clean-ups and other small annoyances
* src/gpodder/config.py: Make sure we can load a default set of
configuration options, even if we are in CLI mode
* src/gpodder/download.py: Don't display a traceback when logging a
cancelled download
* src/gpodder/gui.py: Add Doug Hellmann to contributors/coders list in
the about dialog (Doug Hellmann has done the feed cache code); do not
center the gPodderEpisode dialog on the treeAvailable widget (this
looks ugly ;)
* src/gpodder/libpodcasts.py: Clean up import statements; Make sure we
always have icon names, even in CLI mode; Remove "is_music_channel"
property of podcastChannel (not needed anymore);
Tue, 22 Apr 2008 21:15:40 +0200 <thp@perli.net>
Python code fixup: Compare "None" with "is not" instead of "!="
* src/gpodder/config.py: "!= None" => "is not None"
* src/gpodder/download.py: "!= None" => "is not None"
* src/gpodder/gui.py: "!= None" => "is not None"
* src/gpodder/libconverter.py: "!= None" => "is not None"
* src/gpodder/libgpodder.py: "!= None" => "is not None"
* src/gpodder/libpodcasts.py: "!= None" => "is not None"
* src/gpodder/services.py: "!= None" => "is not None"
* src/gpodder/util.py: "!= None" => "is not None"
Tue, 22 Apr 2008 20:30:28 +0200 <thp@perli.net>
Non-modal feed cache updates
* data/gpodder.glade: Feed cache update UI changes
* src/gpodder/gui.py: Fix problem with maemo window showing all
widgets on start; feed cache update changes; update list of
contributor (bug reporter for the cancel/skip button feature request
* src/gpodder/libpodcasts.py: Support cancelling a running feed cache
update by switching to offline mode when the cancel button is pressed
in load_channels(); idea by Paul Elliot, Pieter De Decker, Jürgen
Schinker and others, see the bug report page for more information
(Partly fixes: http://bugs.gpodder.org/show_bug.cgi?id=16)
Sat, 19 Apr 2008 20:16:11 +0200 <thp@perli.net>
Better tray icon menu item on Maemo-based platforms
* src/gpodder/trayicon.py: Better tray icon integration (show/hide
gPodder via tray icon) on Maemo
Sat, 19 Apr 2008 18:46:30 +0200 <thp@perli.net>
Additional fields for the device remove episodes dialog; refactoring
* src/gpodder/gui.py: Add "Podcast" and "Released" columns to the
episode selector; hide all columns in our "delete from device" episode
selector that have all rows set to "None"; make the first text column
of the gPodderEpisodeSelector bigger, so the episode selector is
easier to read when there are many columns
* src/gpodder/libpodcasts.py: Use util.format_date() for
cute_pubdate() in podcastItem
* src/gpodder/sync.py: Document SyncTrack a bit better, add
needed/possible keyword arguments that are used in the UI; default
some values to None in case they are not provided; get "released" date
from iPod's iTunesDB and get podcast name from MP3 player's sync
folder (if this feature has been activated)
* src/gpodder/util.py: Add format_date() function that converts a Unix
timestamp to a good representation for a date (either Today,
Yesterday, a weekday or the locale's appropriate representation); the
code has been re-factored from podcastItem's cute_pubdate() function
in gpodder.libpodcasts and is now used from there
Thu, 17 Apr 2008 17:54:48 +0200 <thp@perli.net>
Calculate total percentage based on byte size instead of percentage
* src/gpodder/download.py: Make sure we save the right size of a
currently in-progress download of an episode
* src/gpodder/services.py: Calculate the total percentage for all
episodes based on their file size instead of their percentage done;
this is especially important when downloading small files mixed with
large files; this makes the estimated download time more reliable;
thanks to Jérôme Chabod, who has done this patch
(Closes: http://bugs.gpodder.org/show_bug.cgi?id=46)
Thu, 17 Apr 2008 17:42:31 +0200 <thp@perli.net>
Clean up preferences dialog + Move download settings to downloads tab
* data/gpodder.glade: UI-related changes to the preferences dialog
clean-up and the moving of the download settings to the downloads tab;
thanks to Paul Rudking for the download settings to downloads tab
patch
* src/gpodder/download.py: Better rate limiting, implemented by Paul
Rudkin
* src/gpodder/gui.py: UI-related changes to the preferences dialog
clean-up; the download settings changes are by Paul Rudkin
* src/gpodder/services.py: Improve the waiting/locking for the maximum
number of simultaneous downloads using a threading.Event
(Closes: http://bugs.gpodder.org/show_bug.cgi?id=69)
(Closes: http://bugs.gpodder.org/show_bug.cgi?id=83)
Tue, 15 Apr 2008 21:01:19 +0200 <thp@perli.net>
Updated French translation by Jérôme Chabod
* data/po/fr.po: Updated French translation by Jérôme Chabod
Tue, 15 Apr 2008 20:57:51 +0200 <thp@perli.net>
Merge patch from Jérôme Chabod to really pimp the tray icon tooltip :)
* src/gpodder/gui.py: Add some error reporting and change the code a
bit to support the new tooltips; thanks to Jérôme Chabod
* src/gpodder/trayicon.py: Add support for more elaborate tray icon
tooltips; patch by Jérôme Chabod
(Closes: http://bugs.gpodder.org/show_bug.cgi?id=97)
Mon, 14 Apr 2008 13:51:23 +0200 <thp@perli.net>
Add bug reporter to list of contributors
* src/gpodder/gui.py: Bug #95 was reported by Tomas Matheson, so add
him to the list of contributors
Mon, 14 Apr 2008 13:45:34 +0200 <thp@perli.net>
Set Close and cancel buttons to the default on most dialogs
* data/gpodder.glade: Apply patch from Jerome Chabod that sets the
close and cancel buttons on most dialogs of gPodder to the default and
give them focus; this makes keyboard navigation possible and should
make it easier for keyboard fans to use gPodder UI :) This partially
fixes bug #95, but there are still some things to do for this bug.
Mon, 14 Apr 2008 13:40:32 +0200 <thp@perli.net>
Merge patch from Jerome Chabod to fix Remove podcasts for MP3 players
* src/gpodder/gui.py: Add warning message when we can't find a needed
attribute; add "Philippe Gouaillier" to list of contributors (bug
reporter for this bug)
* src/gpodder/sync.py: Add playcount attribute to MP3 player sync code
(Closes: http://bugs.gpodder.org/show_bug.cgi?id=96)
Mon, 14 Apr 2008 13:37:03 +0200 <thp@perli.net>
Updated Russian translation by Leonid Ponomarev
* data/po/ru.po: Updated Russian translation by Leonid Ponomarev
Mon, 14 Apr 2008 13:33:44 +0200 <thp@perli.net>
Merge patch from Jerome Chabod to fix tray icon freeze (bug #55)
* src/gpodder/trayicon.py: Merge patch from Jerome Chabod to fix the
problem with the tray icon actions reported in bug #55; this is
basically attachment #33 with some cosmetic fixes
(Closes: http://bugs.gpodder.org/show_bug.cgi?id=55)
Sun, 13 Apr 2008 22:27:28 +0200 <thp@perli.net>
Updating message files from source code for 0.11.2 freeze
* data/messages.pot: Updated from source code
* data/po/*.po: Updated from messages.pot
Fri, 11 Apr 2008 10:26:50 +0200 <thp@perli.net>
Correct "Close" and "Quit" behaviour
* data/gpodder.glade: Add a "Close" menu item to the podcasts menu and
rename the quit item to "Quit" (from "Close) to make the interface
more consistent and to support both Ctrl+W and Ctrl+Q
* src/gpodder/gui.py: Correct "Close" and "Quit" behaviour and make
Close be the "minimize to tray" function when the tray icon is
enabled; when not enabled, "Close" acts the same way as "Quit" (but is
left visible, so the Ctrl+W shortcut also works to close gPodder);
thanks to Harley Laue for the suggestion and initial patch
(Closes: http://bugs.gpodder.org/show_bug.cgi?id=89)
Fri, 11 Apr 2008 10:11:33 +0200 <thp@perli.net>
Make RSS .torrent feeds from different Torrent sites work
* src/gpodder/libpodcasts.py: If an episode doesn't have an enclosure,
but its link looks like it's a media/torrent file, we are going do
interpret that as the enclosure URL; this makes feeds from different
torrent sites work with gPodder; thanks to Josh Gardner
<mellowcellofellow@gmail.com> for reporting this bug on Bugzilla
(http://bugs.gpodder.org/show_bug.cgi?id=74)
Tue, 08 Apr 2008 10:54:01 +0200 <thp@perli.net>
Updated Spanish translation
* data/po/es.po: Updated Spanish translation from Julio Acuña
Mon, 07 Apr 2008 23:06:53 +0200 <thp@perli.net>
Makre sure we can re-set the locale after changing it
* src/gpodder/util.py: Make sure we can re-set the locale after
changing it, and if we cannot, only print a warning, but don't throw
the exception outside of the function
Mon, 07 Apr 2008 23:05:05 +0200 <thp@perli.net>
Add 64x64 icon for Maemo's main menu and install it
* data/icons/64/gpodder.png: Added
* setup.py: Install the 64x64 icon in share/icons/hicolor
Mon, 07 Apr 2008 11:47:12 +0200 <thp@perli.net>
Install "pixmaps" icon on Maemo, too
* setup.py: Make sure we also install the "/usr/share/pixmaps/"
version of the gPodder icon on Maemo (for the task navigator)
Mon, 07 Apr 2008 11:24:54 +0200 <thp@perli.net>
Fix problems with the tray icon emblems
* src/gpodder/trayicon.py: Fix emblem drawing code for non-square
icons; use the "refresh" icon for feed updates and "multimedia-player"
icon for the iPod/MP3 player sync status emblem
Sun, 06 Apr 2008 17:22:11 +0200 <thp@perli.net>
Fix install Makefile bug; add donator; fix treeview header height
* Makefile: Add "generators" dependency for the "install" target
* src/gpodder/gui.py: Add Mark Alford (donator) to contributors list;
remove the hard-coded header height offset for the treeview, because
we don't need it anymore, because we hide the header (this is a good
thing, because we don't need to rely on a theme-specific header
height compared to what we did previously - one FIXME less :)
Sun, 06 Apr 2008 02:05:34 +0200 <thp@perli.net>
Initial upstream support for the Maemo platform (Nokia Internet Tablets)
* bin/gpodder: Add "--maemo/-m" option to enable running as a Maemo
application (this is only useful on Nokia Internet Tablets or in the
Maemo SDK environment); determine interface type and set the correct
variables on startup (gpodder.interface)
* data/gpodder.glade: Increase the default size of some widgets to
better fit the screens on Maemo (it won't do any harm on the "big"
Desktop screen
* data/icons/26/gpodder.png: Added
* data/icons/40/gpodder.png: Added
* data/maemo/gpodder.desktop: Added
* Makefile: Help2man variable; new "make mtest" target that runs
gPodder in Maemo scratchbox (probably useless for all other things);
update the command descriptions; don't run the "generators" target
from the "install" target; don't run "gen_graphics" from the
"generators" target, but make it depend on the 24-pixel logo, which
itself depends on the 22-pixel logo; this way, all should work out
well when trying to install on systems without ImageMagick installed;
remove *.pyo files on "make clean"
* setup.py: Support for build targets; use "TARGET=maemo" to enable
Maemo-specific installation options and files
* src/gpodder/config.py: Increase the WRITE_TO_DISK_TIMEOUT to 60
seconds, so we don't unnecessarily stress memory cards (on ITs);
modify default path variables on Maemo (/media/mmc2)
* src/gpodder/gui.py: Maemo-specific changes; clean-up the main window
a bit and make message and confirmation dialogs Hildon-compatible
* src/gpodder/__init__.py: Add enums for interface types: CLI, GUI and
MAEMO; remove the "interface_is_gui" variable and replace with
"interface", which is now used to determine where we are running
* src/gpodder/libgpodder.py: Use /media/mmc2/gpodder/ as configuration
folder on Maemo; use Nokia's Media player to playback files on Maemo
* src/gpodder/libpodcasts.py: Icon name changes (Maemo-specific)
* src/gpodder/trayicon.py: Maemo support; swap popup menu on Maemo;
Add support for hildon banners instead of pynotify on Maemo
* src/gpodder/util.py: Icon name changes (Maemo-specific); use new
gpodder.interface variable in idle_add
Sat, 05 Apr 2008 21:06:14 +0200 <thp@perli.net>
Make i18n help text work in the console help (gpodder --help)
* bin/gpodder: Fix a bug that would make the localized help string of
the CLI break; thanks to Pavel Mlcoch <pavkamlc@centrum.cz> for
reporting this bug on the gPodder bug tracker
(Closes: http://bugs.gpodder.org/show_bug.cgi?id=53)
Fri, 04 Apr 2008 09:50:35 +0200 <thp@perli.net>
Use the correct multimedia-player icon for the transfer main menu item
* data/gpodder.glade: Use the multimedia-player icon for the transfer
to device menu item (was still gtk-network, forgot to change)
Fri, 04 Apr 2008 09:48:25 +0200 <thp@perli.net>
Fix gPodder freeze with open notifications on quit
* src/gpodder/trayicon.py: Fix a bug when gPodder would freeze when
a notification bubble was still open while closing the main
application; thanks to Jérôme Chabod for reporting this issue
(Closes: http://bugs.gpodder.org/show_bug.cgi?id=55)
Fri, 04 Apr 2008 09:46:23 +0200 <thp@perli.net>
Increase filename size limitation from 50 to 100 chars in MP3 player sync
* src/gpodder/sync.py: Increase the number at which file names are cut
down in length to 100 characters and also cut folder names to that
length; thanks to Bernd Schlapsi for reporting this bug on the list
Sun, 30 Mar 2008 10:48:41 +0200 <thp@perli.net>
Make the Quit buttons actually quit when using the tray icon
* src/gpodder/gui.py: Patch from Nick L. to make the function of all
"Quit" buttons really quit gPodder and only make the window's "X"
button act as "minimize to tray" button; Also, update the credits name
Sat, 29 Mar 2008 17:13:26 +0100 <thp@perli.net>
Project management updates (authors, contributors and copyright)
* AUTHORS: Removed (was outdated); content now in gui.py (AboutDialog)
* bin/gpodder, data/po/Makefile, doc/dev/copyright_notice,
doc/dev/win32/setup-win32.py, INSTALL, Makefile, README,
setup.py: Updated Copyright and old website URL to include 2008, the
gPodder team and www.gpodder.org
* src/gpodder/*.py: Updated Copyright years
* src/gpodder/gui.py: Add list of contributors from AUTHORS file and
from the content on the website's news page (please mail me if I
forgot to mention you as a contributor, I surely have missed a few);
make the AboutDialog's application name "gPodder" (from gpodder) and
add an URL hook function to the AboutDialog, so the website is opened
in the user's default web browser
Sat, 29 Mar 2008 16:30:02 +0100 <thp@perli.net>
Report errors in parsing/loading an already-added channel in the navigator
* src/gpodder/gui.py: Show the error from feedparser in the channel's
tooltip if there has been an error loading the channel
* src/gpodder/libpodcasts.py: Make sure we can load a default title
when using get_by_url(); save the parse_error variable for each
channel (it defaults to None if there is no error); mark the
description text for the channel navigator in red color if there has
been a parser error and add the parse_error variable to the liststore
model
* src/gpodder/util.py: Strip whitespace before and after the string in
remove_html_tags()
Sat, 29 Mar 2008 16:18:59 +0100 <thp@perli.net>
Add support for Rockbox' AudioScrobbler logfile to update played status
* src/gpodder/config.py: Add "mp3_player_use_scrobbler_log"
configuration option (defaulting to False) which controls if we are
going to try and find a ".scrobbler.log" file that contains
information on which tracks have been played; for this to work, you
also have to enable the "Updated tags after download" option
* src/gpodder/sync.py: Support for finding the .scrobbler.log file and
updating the played status of episodes in the MP3 player sync code
* src/gpodder/util.py: Add "find_mount_point()" function that tries to
determine the mount point on which the given directory (or file) lies
and returns the mount point or "/" if the directory/file resides on
the root filesystem.
This whole patch has been contributed by Nick <nikosapi.org> - thanks!
Sat, 29 Mar 2008 16:16:06 +0100 <thp@perli.net>
Merge sv.po translation from 0.11.1 release tarball
* data/po/sv.po: It seems like I somehow messed up the translations
merge, so here's the correct sv.po translation file, merged from the
0.11.1 tarball; thanks to Anders Kvist <kvistkvist@telia.com> for
pointing that out :)
Sat, 29 Mar 2008 01:20:46 +0100 <thp@perli.net>
Make sure we ignore the updated_parsed of a channel if it's None
* src/gpodder/libpodcasts.py: Only try to convert the "updated_parsed"
field if it's not "None"
* src/gpodder/util.py: Make sure we receive a valid 9-tuple when
converting dates from updated_parsed; if we receive a None value or
some value that isn't "9" in length, return None
Thanks to Chris Arnold <carnold@electrichendrix.com> for reporting
this bug on the gpodder-devel mailing list
Thu, 27 Mar 2008 13:10:58 +0100 <thp@perli.net>
This is trunk, so set version to 0.11.1+svn
* bin/gpodder: Set version to 0.11.1+svn
Thu, 27 Mar 2008 12:57:56 +0100 <thp@perli.net>
gPodder 0.11.1 "Attacked by Killer Tomatoes" released
* bin/gpodder: gPodder 0.11.1 released :)
* README: gPodder 0.11.1 released :)
* doc/man/gpodder.1: gPodder 0.11.1 released :)
* data/icons/24/gpodder.png: Updated from the dataset
* data/messages.pot: Updated from source
* data/po/*.po: Updated from messages.pot
* data/po/de.po: Updated German translation
Thu, 27 Mar 2008 11:52:35 +0100 <thp@perli.net>
Use cPickle for dumbshelve - it's compatible and faster
* src/gpodder/dumbshelve.py: Improve saving of channel cache and
metadata (and basically all that currently depends on dumbshelve) by
using cPickle as a drop-in replacement for pickle
Thu, 27 Mar 2008 11:28:31 +0100 <thp@perli.net>
Fix problem with pickle when there is a feed parsing exception
* src/gpodder/cache.py: When the feedparser returns an exception, this
will be stored as object in bozo_exception. Convert this to a string,
so the pickle module doesn't complain; thanks to VladDrac in #python
on FreeNode for pointing me to the right direction to fix this bug
Mon, 24 Mar 2008 10:42:19 +0100 <thp@perli.net>
Add "3gp" to the list of video file extensions, so we detect these files
* src/gpodder/util.py: Add the .3gp video file extension to the list
of known video file extensions, so we can detect that these are video
files and act accordingly (in the UI and on sync); thanks to Atte
André Jensen for reporting this bug on the gpodder-devel mailing list
Sun, 23 Mar 2008 10:39:24 +0100 <thp@perli.net>
Fix a bug when loading invalid image data (delete cover file then)
* src/gpodder/libgpodder.py: Fix a bug when gPodder is unable to load
an invalid cover image (i.e. when dragging a linked image from the
browser to the gPodder window, the link is sent, not the image)
Sat, 22 Mar 2008 21:08:06 +0100 <thp@perli.net>
Make bluetooth device discover a bit nicer
* src/gpodder/gui.py: Improve bluetooth device discovery button by not
destroying its design when it has been clicked and the label is
modified
Sat, 22 Mar 2008 20:45:27 +0100 <thp@perli.net>
Revert previous insanity (where I selected an awful "Transfer" toolbar icon)
* data/gpodder.glade: I wonder why I selected "gtk-network" as the
icon for the "Transfer" button on gPodder's toolbar. It surely is
irritating and illogical as hell.. Hmm. Anyway - now, there is a nice
"multimedia-player" icon which probably depicts an iPod-like device
if you use a good icon set. This makes much more sense. Go usability!
Sat, 22 Mar 2008 20:41:54 +0100 <thp@perli.net>
Add "Visit website" menu items to channel and episode list; simple chan menu
* src/gpodder/gui.py: Add "Visit website" menu items to the context
menu of both the episode list and the channel navigator; also, make
the channel context menu easier to use by replacing the old
"Edit [Channelname]" and "Remove [Channelname]" items with stock items
Sat, 22 Mar 2008 18:41:30 +0100 <thp@perli.net>
Fix "Podcasts not being marked as new when synced to iPod" (#70)
* src/gpodder/sync.py: Fix bug when podcasts were not marked as new
when synced to iPod and "on_sync_mark_played" was enabled;
Bug URL: http://bugs.gpodder.org/show_bug.cgi?id=70
Thanks to defrex (defrex0 gmail com) for report this bug in Bugzilla
Thu, 20 Mar 2008 11:21:06 +0100 <thp@perli.net>
Delay loading of UserAppsReader and improve libplayers
* src/gpodder/gui.py: Only load UserAppsReader's database three
seconds after gPodder start (because we only need it when the user
opens the preferences dialog, and if she opens it before these three
seconds, the UserAppsReader data is loaded on demand); because we load
the database (and generate the model) before we display the
preferences dialog, the preferences dialog usually comes up faster
than before (except for the situation where it is opened right after
gPodder startup); have only one UserAppsReader for audio/video and not
both (would duplicate the amount of work needed to read desktop
files); cleanup some UserAppsReader-related code in the prefs dialog
* src/gpodder/libplayers.py: Improve the reading code and make it
possible to support multiple mime types per-UserAppsReader (i.e. both
audio and video types are read by a single UAR instance); clean up the
imports for this module and do other related changes to make the code
nicer to read and understand
Thu, 20 Mar 2008 11:18:51 +0100 <thp@perli.net>
Add option to limit the maximum number of episodes per feed
* src/gpodder/config.py: Add "max_episodes_per_feed" configuration
option (int, defaults to 200) that determines the maximum number of
episodes that are parsed per channel/feed; if there are more episodes,
they are ignored. This value can be adjusted via the extended
configuration editor if you need more episodes
* src/gpodder/libpodcasts.py: Add support for the
max_episodes_per_feed configuration option above
Thu, 20 Mar 2008 11:13:16 +0100 <thp@perli.net>
Fix bug with unneeded download directory being created
* src/gpodder/libpodcasts.py: Fix bug when an unneeded download
directory would be created on every gPodder startup
Thu, 20 Mar 2008 11:11:18 +0100 <thp@perli.net>
Only serialize DumbShelve to disk when we have changed/deleted items in it
* src/gpodder/dumbshelve.py: Add a "__dirty" flag to DumbShelve to
know if we have to write the DumbShelve to the disk or if nothing has
changed since the last write (and therefore no need to run the
time-consuming serialization code again); this speeds up initial
loading time and probably also speeds up other parts of the code
Thu, 20 Mar 2008 11:09:27 +0100 <thp@perli.net>
Timestamp and benchmark functions for logger
* src/gpodder/liblogger.py: Add support for timestamping and benchmark
functions to liblogger, so we see the microtime since gPodder startup
and can also use the logging module to benchmark the speed of certain
code parts; this is helpful for our performance patches :)
Thu, 20 Mar 2008 11:07:48 +0100 <thp@perli.net>
Performance-improving patch from Nick (nikosapi) to html entity replacement
* src/gpodder/util.py: Merge patch from Nick (nikosapi.org) to really
improve performance of the HTML tag stripper/entity replacement code
by using regular expressions and some more intelligent code for
converting numeric entities to Unicode characters
Thu, 20 Mar 2008 11:06:32 +0100 <thp@perli.net>
Add demo code for displaying a splash screen
* doc/dev/splash-logo.py: Added testing code that would display a
splash screen (transparent if compositing is enabled); we currently
don't plan to use this code for reasons described on gpodder-devel
Thu, 20 Mar 2008 10:04:14 +0100 <thp@perli.net>
Filter "None" filenames from GtkFileChooser widgets
* src/gpodder/config.py: Make sure we don't receive a "None" filename
from GtkFileChooser widgets when connecting to the config manager
Wed, 19 Mar 2008 18:06:58 +0100 <thp@perli.net>
Change the context menu of the episode list popup menu
* src/gpodder/gui.py: Simplify, re-structure and improve the context
menu of the episode list popup menu (right-click menu); thanks to hex
(justin.forest gmail.com) for suggesting this change and giving
valuable input on gpodder-devel
Wed, 19 Mar 2008 15:45:15 +0100 <thp@perli.net>
Patch from Nikosapi to fix MP3 player sync progress
* src/gpodder/sync.py: Patch from Nick (nikosapi.org) to fix MP3
player sync problems: "Instead of displaying the proper percentage of
the copied file in the FS-based sync dialog, gPodder would initially
report 100% and near the end of the copy it would report percentages
>100%."
Wed, 19 Mar 2008 15:02:10 +0100 <thp@perli.net>
Various Bluetooth-related fixes
* data/gpodder.glade: Use the "bluetooth" icon instead of the (old?)
"stock_bluetooth" icon; in Gnome 2.22, the "bluetooth" icon is nicer,
i.e. more Tango-ish than the "stock_bluetooth" icon
* src/gpodder/gui.py: Fix a logging error; Only show "Send to [...]
via bluetooth"/"Send to bluetooth device" when we have already
downloaded the episodes (won't obviously work otherwise..)
* src/gpodder/util.py: Fix bluetooth_send_file to work with both
bluetooth-sendto and gnome-obex-send (different command line argument
format for both)
Sun, 16 Mar 2008 12:55:49 +0100 <thp@perli.net>
Python-feedparser is a dependency, so mention it in the README
* README: Mention python-feedparser as a dependency in the README
file; thanks to Alain Tauch for pointing this out on the mailing list
Wed, 12 Mar 2008 12:38:19 +0100 <thp@perli.net>
Updated translations for 0.11.1 stabilization period
* data/messages.pot: Updated from source
* data/po/*.po: Updated from messages.pot
Tue, 11 Mar 2008 18:53:25 +0100 <thp@perli.net>
Add option to write gtkpod extended database on sync
* data/gpodder.glade: Add a check box for the new config option
* src/gpodder/config.py: Add ipod_write_gtkpod_extended boolean
configuration variable that controls if we want to write iTunesDB.ext
after synchronization (defaults to False)
* src/gpodder/gui.py: Glue code for UI<->Config manager
* src/gpodder/sync.py: Use libgpod's "gtkpod" module to write the
extended gtkpod database (iTunesDB.ext) to the iPod after sync - this
has to be enabled via an option
Tue, 11 Mar 2008 18:44:19 +0100 <thp@perli.net>
Fix problem with old PyGTK versions when importing gpodder.trayicon
* src/gpodder/gui.py: Apply patch from Bill Barnard
<bill@barnard-engineering.com>, based on a patch from Jérôme Chabod
<jerome.chabod@ifrance.com> that makes sure we can import the tray
icon module. If not, we disable the tray icon functionality
Mon, 10 Mar 2008 16:37:38 +0100 <thp@perli.net>
Add support for creating M3U playlist files in download folders
* src/gpodder/config.py: Add "create_m3u_playlists" boolean
configuration option (default False) that controls if we want to
generate per-channel M3U playlists in our download folders
* src/gpodder/gui.py: Add context menu entry for manually updating an
M3U playlist for the channel navigator (only visible when updating m3u
playlists is enabled
* src/gpodder/libpodcasts.py: Add update_m3u_playlist() function to
podcastChannel and call it when removing and adding downloaded
episodes
* src/gpodder/util.py: Add sanitize_filename() function that tries to
encode a file name in the system's encoding, stripping all chars that
are invalid on FAT32 and other systems (e.g. slash, etc..)
Thu, 06 Mar 2008 17:46:21 +0100 <thp@perli.net>
Be less verbose, consider episodes with length<=100 to have invalid length
* src/gpodder/libpodcasts.py: Remove verbose logging for episode
metadata (seems to work now); consider episodes with a small length
value to have invalid length, i.e. try to find the length of the
episode by looking at the HTTP header; thanks to Bernd
<schlaber@gmail.com> for sending in the feed URL with which this bug
happens (length was 1) during the gPodder workflow survey :)
Tue, 04 Mar 2008 12:15:53 +0100 <thp@perli.net>
Fix KeyError bug in custom_selection_button_clicked (from LP)
* src/gpodder/gui.py: Fix problem with localized strings on the custom
selection buttons, i.e. pass the label to the function directly
instead of relying on the gtk.Button to have the label in the correct
encoding (LP: #192918); thanks to Pavel Mlčoch for reporting this bug
on Launchpad
Tue, 04 Mar 2008 12:05:23 +0100 <thp@perli.net>
Fix AttributeError bug in updateTreeView (from LP)
* src/gpodder/gui.py: Make sure that we have a valid "active_channel"
when updating the tree view (LP: #183667); thanks to red26wings for
reporting this bug on Launchpad
Mon, 03 Mar 2008 23:06:30 +0100 <thp@perli.net>
Add support for changing the URL of a subscribed channel (bug #42)
* data/gpodder.glade: Make the URL entry in the channel dialog
editable
* src/gpodder/gui.py: Add support for changing the URL of a subscribed
channel (i.e. move from the "latest" RSS feed to the "complete" RSS
feed, as is the case with Chaosradio podcasts, for example); ask user
if she really wants to move; handle case where the new URL is wrong
by reverting to old URL; Improve code for moving the download
directory; thanks to Steve Garcia <sgarcia@bak.rr.com> for the bug
report
Mon, 03 Mar 2008 21:14:55 +0100 <thp@perli.net>
Small fix for moving downloads progress bar
* src/gpodder/gui.py: Make sure the value for set_fraction of the
progress bar is in 0.0..1.0
Mon, 03 Mar 2008 20:53:15 +0100 <thp@perli.net>
Add "Go to website" buttons to episode and channel (bug #43)
* data/gpodder.glade: Add "Go to website" buttons to episode and
channel info dialogs
* src/gpodder/gui.py: Add code to open website URL or hide the "Go to
website" button when there is no valid website link for an episode or
channel
Mon, 03 Mar 2008 20:37:02 +0100 <thp@perli.net>
Move webbrowser code to util.open_website; fix URLs to gpodder.org
* src/gpodder/gui.py: Use new gpodder.org URLs; use
util.open_website() instead of directly interfacing with threads and
the "webbrowser" module
* src/gpodder/util.py: New function open_website() that takes care of
opening the system's default web browser and opening the specified URL
Sun, 02 Mar 2008 14:20:56 +0100 <thp@perli.net>
Make "gl" a global-accessible object in libgpodder
* doc/dev/gdfs/gdfs-check.py: Adapt to new structure of gPodderLib
* src/gpodder/*.py: Use "gl" instead of all incarnations of
"gPodderLib()" or "libgpodder.gPodderLib()", and weed out all "gl =
gPodderLib() lines, because it makes the code look unnecessarily
bloated ;)
* src/gpodder/libgpodder.py: Make "gl" a global instance of the
gPodderLib() object, and rename gPodderLibClass to gPodderLib and do
some more cleaning-up
Sun, 02 Mar 2008 14:03:40 +0100 <thp@perli.net>
Move gPodderLib().open_folder to util.gui_open
* src/gpodder/gui.py: Use util.gui_open instead of gl.open_folder
* src/gpodder/libgpodder.py: Remove open_folder (move to gpodder.util)
* src/gpodder/util.py: Add gui_open function that uses xdg_open to
open files and folders with their default application in the GUI
Sun, 02 Mar 2008 13:52:42 +0100 <thp@perli.net>
Pickle-based storage method (dumbshelve); HTTP HEAD requests; buggy feed fixes
* src/gpodder/dumbshelve.py: Added (replacement for "shelve" using
pickle)
* src/gpodder/libgpodder.py: Rename *.db files to *.pickle.db, so we
don't clash with old-style shelve .db files
* src/gpodder/libpodcasts.py: Use dumbshelve as a replacement for
shelve; add EpisodeURLMetainfo that keeps track of metainfo downloaded
via HTTP HEAD requests; make getting episode length and pubDate a bit
more intelligent by trying to find correct values via HTTP HEAD;
improve episode sorting by falling back to episode titles when no
pubDate has been found (or pubDate is equal);
* src/gpodder/util.py: Add get_episode_info_from_url() function that
tries to find out the length and pubDate of an episode by looking at
the data from the HTTP HEAD; also support HTTP proxys via an optional
"proxy" keyword argument
Wed, 27 Feb 2008 10:44:48 +0100 <thp@perli.net>
Notify user about no new episodes when updating from tray icon
* src/gpodder/gui.py: Patch from Jérôme Chabod
<jerome.chabod@ifrance.com> to notify the user about "no new episodes"
when updating the feed cache manually via the tray icon
(Closes: http://bugs.gpodder.org/show_bug.cgi?id=3)
* src/gpodder/trayicon.py: See above
Wed, 27 Feb 2008 09:52:14 +0100 <thp@perli.net>
Use xdg-open for files that we don't know the file type of
* src/gpodder/libgpodder.py: If the file we want to open/play is not
an audio or video file, we use "xdg-open" to open the file (this is
used for things like PDF files and the like, e.g. in Chaos TV)
Wed, 27 Feb 2008 09:46:55 +0100 <thp@perli.net>
Add Flash Video (flv) and Windows Media Video (wmv) to file detection
* src/gpodder/util.py: Detect *.flv and *.wmv files as video files
Wed, 27 Feb 2008 09:39:42 +0100 <thp@perli.net>
When sending via Bluetooth, always rename/copy the file
* src/gpodder/gui.py: When sending files via Bluetooth, and the file
converter script is not enabled, we are simply copying the file to the
sync_filename of the episode, therefore creating a nice name. We have
to copy the file, because neither gnome-obex-send nor bluetooth-sendto
let us specify the destination filename when sending the file, these
utilities always take the input filename (thanks to Chris
<gpodder@noreply.org.uk> for the bug report)
(Closes: http://bugs.gpodder.org/show_bug.cgi?id=49)
Tue, 26 Feb 2008 16:49:06 +0100 <thp@perli.net>
Python code fixup: Compare "None" with "is" instead of "=="
* doc/dev/daap2rss.py: "== None" => "is None"
* src/gpodder/config.py: "== None" => "is None"
* src/gpodder/gui.py: "== None" => "is None"
* src/gpodder/libgpodder.py: "== None" => "is None"
* src/gpodder/libpodcasts.py: "== None" => "is None"
Tue, 26 Feb 2008 16:30:56 +0100 <thp@perli.net>
Add support for new "bluetooth-sendto" utility
* README: Ask for either "gnome-obex-send" or "bluetooth-sendto",
which are needed for the Bluetooth file transfer
* src/gpodder/util.py: Add support for "bluetooth-sendto" as an
alternative to "gnome-obex-send"; initial bug report and patch by
Leonid Ponomarev (this probably adds bluez-gnome as an optional
dependency if you want bluetooth send support)
Mon, 25 Feb 2008 15:51:16 +0100 <thp@perli.net>
Show more description text in episode list
* src/gpodder/libpodcasts.py: Join all lines and strip unnecessary
data for the episode description that is displayed in the episode list
when descriptions are enabled (suggested by Jérôme Chabod)
Mon, 25 Feb 2008 14:39:15 +0100 <thp@perli.net>
Merge changes from 0.11.0 release after release
* bin/gpodder: Merge changes from 0.11.0
* README: Merge changes from 0.11.0
Sun, 24 Feb 2008 14:52:04 +0100 <thp@perli.net>
Cosmetic changes to the makefile
* Makefile: Cosmetic changes
Sun, 24 Feb 2008 13:55:42 +0100 <thp@perli.net>
Cairo-based progress bar on system tray icon
* src/gpodder/draw.py: Add Cairo-based drawing code for generating a
nice, transparent progress bar icon
* src/gpodder/services.py: Fix a problem with the wrong download done
percentage (i.e. when cancelling downloads instead of finishing them)
* src/gpodder/trayicon.py: Add code to draw the progress bar on the
tray icon; initial idea and most parts of this patch by Jérôme Chabod
Sat, 23 Feb 2008 14:18:53 +0100 <thp@perli.net>
Set the xterm title when running "make test"
* Makefile: Set the xterm title when running "make test"
Wed, 20 Feb 2008 13:38:58 +0100 <thp@perli.net>
Estimated time left and synchronization support for tray icon by Jérôme Chabod
* src/gpodder/gui.py: Send update status information to the tray icon
on update; add glue code for synchronization device and tray icon
* src/gpodder/trayicon.py: Add status and tooltip during device
synchronization; add estimated download time to tooltip during
download; set the correct caption for the synchronization menu item in
the tray icon (and don't add a synchronize menu item when not needed);
some small code-cleanups and fixes
* src/gpodder/util.py: Add format_seconds_to_hour_min_sec() function
that converts a numeric amount of seconds into a human-readable string
Tue, 19 Feb 2008 07:46:28 +0100 <thp@perli.net>
Fix bug with MP3 player synchronization file name encodings
* src/gpodder/sync.py: Apply patch to fix problems with native
language encodings on MP3 player synchronization; thanks to Bernd
Schlapsi for reporting the problem in Bugzilla
(Closes: http://bugs.gpodder.org/show_bug.cgi?id=34)
Mon, 18 Feb 2008 21:17:48 +0100 <thp@perli.net>
Updated French translation for 0.11.0
* data/po/fr.po: Updated French translation by Jérôme Chabod
Sun, 17 Feb 2008 13:50:09 +0100 <thp@perli.net>
Fix calculation of average percentage done
* src/gpodder/services.py: Fix calculation of average percentage done
for downloads, thanks to Jérôme Chabod <jerome.chabod@ifrance.com> for
the patch
Sun, 17 Feb 2008 13:33:38 +0100 <thp@perli.net>
Updated translations for 0.11.0
* data/messages.pot: Refreshed messages.pot from source code
* data/po/de.po: Updated German translation
* data/po/nl.po: Updated Dutch translation by Pieter De Decker
* data/po/ru.po: Updated Russian translation by Leonid Ponomarev
* data/po/cs.po: Updated Czech translation by Ondrej Vesely
* data/po/sv.po: Updated Swedish translation by Anders Kvist
Thu, 07 Feb 2008 22:15:40 +0100 <thp@perli.net>
Hello, new "expert" configuration editor (about:config-like)
* data/gpodder.glade: Add gPodderConfigEditor window and add an
"Advanced..." button to the preferences dialog
* src/gpodder/config.py: Add a gtk.ListStore tree model to the
configuration manager and update it when configuration variables
change; add toggle_flag() and update_field() methods for easy updating
of fields from the new config editor
* src/gpodder/gui.py: Add glue code for opening the advanced
configuration editor from the preferences dialog; add code for the
gPodder configuration editor (including filtering and field updating);
(Closes: http://bugs.gpodder.org/show_bug.cgi?id=10)
Thu, 07 Feb 2008 20:22:08 +0100 <thp@perli.net>
Support buggy OPML feeds, notify user on OPML import
* src/gpodder/gui.py: Notify user when no items were found when trying
to import OPML feeds
* src/gpodder/opml.py: Make the OPML importer a bit more relaxed, and
make it accept "url" instead of "xmlUrl", too (for buggy OPML feeds)
Wed, 06 Feb 2008 17:34:56 +0100 <thp@perli.net>
Fix the track length detection
* src/gpodder/sync.py: Fix the iPod sync track length detection code,
reported by Paul Rudkin <paul@thegithouse.com> and tested by
FriedBunny <friedbunny@kulturny.com>; make default length 3 hours
Closes: http://bugs.gpodder.org/show_bug.cgi?id=29
Wed, 06 Feb 2008 10:59:25 +0100 <thp@perli.net>
NLS encoding support for MP3 player synchronization (from gdfs)
* src/gpodder/sync.py: Add NLS encoding support from Leonid Ponomarev
<leonid.phoenix@gmail.com>; patch modified a bit to better fit the
code and be more verbose, so the user knows how we encode the names
Wed, 06 Feb 2008 10:43:47 +0100 <thp@perli.net>
Hide to systray on exit during download
* src/gpodder/gui.py: Apply patch from Jérôme Chabod
<jerome.chabod@ifrance.com> to fix a bug: When closing gPodder during
a download, and "on_quit_hide" is on, gPodder asks for a confirmation
It should hide gPodder without asking. This patch fix that.
Wed, 06 Feb 2008 10:18:30 +0100 <thp@perli.net>
Usability GUI update (after Rafael Proença's proposal)
* data/gpodder.glade: Add "Ctrl+L" hotkey to Add new channel; add
"View" menu with show/hide Toolbar (Ctrl+T) and show/hide episode
descriptions (Ctrl+D); remove "Update Feeds" button from toolbar and
add Check for updates button below channel navigator; move the add
episodes entry and buttons above the channel navigator; thanks to the
following people who shared their opinions on the mailing list: Rafael
Proença, Paul Rudkin, Ondrej Vesely, Leonid Ponomarev, Shane Donohoe,
Jérôme Chabod, Nick (nikosapi); the GUI mockups and the initial idea
were posted by Rafael Proença
* src/gpodder/config.py: Add "episode_list_descriptions" and
"show_toolbar" configuration options that modify the look of the main
window (both default to "True")
* src/gpodder/gui.py: Show feed description in seperate line (this
feature was suggested by narf@inode.at); make the episode list
treeview widget use the space more efficient; show/hide toolbar and
show/hide episode description GUI glue code
* src/gpodder/libgpodder.py: Add "digits" keyword argument to
format_filesize() (defaults to 2), this is a pass-thru function for
gpodder.util.format_filesize() (see below)
* src/gpodder/libpodcasts.py: Support for small- and large-sized
icons,modify liststore creation code to add description to the title
column
* src/gpodder/util.py: Add "digits" keyword argument to
format_filesize() (defaults to 2), this is used to define the format
of the filesize; add "icon_size" keyword argument (defaults to 32) to
get_tree_icon() and modify the function so that it dynamically
generates the correct icon with the correct sizes
Mon, 04 Feb 2008 11:26:14 +0100 <thp@perli.net>
Apply patchset from Jérôme Chabod to fix tray icon behaviour
* data/gpodder.glade: Change behaviour of the "display tray icon"
checkbox, rename and retitle some configuration options
* src/gpodder/config.py: Rename "download_after_update" to
"auto_download_when_minimized" and rename "disable_notifications" to
"enable_notifications".
* src/gpodder/gui.py: Add glue code for config and GUI, change
behaviour as described in http://bugs.gpodder.org/show_bug.cgi?id=3
* src/gpodder/trayicon.py: Clean-up and fix behaviour as described in
our Bugzilla Bug #3 (see above); thanks to Jérôme Chabod for
implementing all these changes and the patch
Mon, 04 Feb 2008 09:32:56 +0100 <thp@perli.net>
Output pretty-printed OPML when saving channels list
* src/gpodder/opml.py: Patch from Nick (nikosapi.org) to output the
channels.opml file pretty-printed, so it's easier to read and easier
to edit when working on the file outside of gPodder
Sun, 03 Feb 2008 23:02:47 +0100 <thp@perli.net>
Don't code late at night, it breaks the sync code ;)
* src/gpodder/sync.py: Add brackets because I wrote bad code in the
first place (fix video sync for iPods); thanks to Dave Perdue
<dave@minusvince.com> for reporting this in our bug tracker
(Closes: http://bugs.gpodder.org/show_bug.cgi?id=28)
Sat, 02 Feb 2008 11:36:35 +0100 <thp@perli.net>
Make feed update display "Loading" titles, only run auto update when minimized
* src/gpodder/gui.py: Usability patch from NIkosapi <nikosapi.org>:
Make the feed update dialog display "Loading feeds" instead of
"Downloading feeds" when its loading the feeds from the local cache;
only run the automatic, periodic update when gPodder is minimized,
because it would pop up a dialog while gPodder is in use otherwise
Sat, 02 Feb 2008 11:33:48 +0100 <thp@perli.net>
Pressing Enter in the add channel entry adds the channel
* data/gpodder.glade: Usability patch from Nikosapi <nikosapi.org>:
Add an action handler to the gladefile, so the user can simply press
Enter in the gtk.Entry instead of having to tab to or click on the
button for adding a channel
Wed, 30 Jan 2008 09:47:21 +0100 <thp@perli.net>
Fix another bug in file_modification_datetime
* src/gpodder/util.py: Another problem that happens with special
iTunesDB settings, thanks to FriedBunny <friedbunny@kulturny.com>
Wed, 30 Jan 2008 09:23:19 +0100 <thp@perli.net>
Fix a bug in the file size calculation
* src/gpodder/util.py: calculate_filesize should deal with "None"
passed as filename (now returns zero-size);
Fixes: Bug #23 (http://gpodder.thegithouse.com/show_bug.cgi?id=23)
Thanks to FriedBunny <friedbunny@kulturny.com> for reporting this
issue in our bug tracker
Mon, 28 Jan 2008 12:33:13 +0100 <thp@perli.net>
Merge new sync code from thp's private branch
* bin/gpodder: Add "--sync"/"-s" command-line option to start the
device synchronization process from the CLI interface - syncing can
now be scripted, baby :) (you still have to configure the sync device
via the GUI first, though)
* data/gpodder.glade: Simplify gPodderSync dialog and remove some
obsolete options from the channel dialog
* src/gpodder/console.py: Add code for command-line sync support
* src/gpodder/gui.py: Remove obsolete code for libipodsync and import
the new "sync" module; simplify Sync<->GUI interface; clean-up
gPodderSync dialog code to interface with new sync code; remove some
config glue code for the channel properties dialog
* src/gpodder/libconverter.py: Make libconverter work even if the
percentage callback would fail in certain conditions (try..except)
* src/gpodder/libipodsync.py: Removed
* src/gpodder/libpodcasts.py: Refactor age_in_days() and
get_age_string() to simple calls to utility functions and move the
code to gpodder.util
* src/gpodder/sync.py: Added new sync module :) Very modular, yesaya!
* src/gpodder/util.py: Add file_age_in_days() and file_age_to_string()
helper functions that use code from libpodcasts and return the age of
a file in the filesystem
Thu, 24 Jan 2008 14:51:48 +0100 <thp@perli.net>
Fix a bug for show_message and tray_icon/minimized
* src/gpodder/gui.py: Fix a bug when messages are shown for
non-gPodderMainWindow windows (that don't have tray_icon)
Wed, 23 Jan 2008 11:55:35 +0100 <thp@perli.net>
Make gpodder.desktop pass desktop-file-validate tests
* data/gpodder.desktop: Update "Categories" and remove "Encoding",
following the freedesktop.org Desktop Entry specification
Wed, 23 Jan 2008 09:06:32 +0100 <thp@perli.net>
Do not show notifications when gPodder is minimized
* src/gpodder/gui.py: Merge patch from Jérôme Chabod to fix problems
with the gPodder window re-appearing after having been minimized;
use the notification icon when possible; initially reported by Shane
Donohoe
Tue, 22 Jan 2008 10:19:46 +0100 <thp@perli.net>
Add "releasetest" target to Makefile (automated testing)
* Makefile: Add "releasetest" target that can be used to do some
automatic testing before releases; thanks to Götz Waschk for giving
some hint on "desktop-entry-validate" :)
Tue, 22 Jan 2008 10:09:16 +0100 <thp@perli.net>
Use Episode Selector for per-channel new episodes
* src/gpodder/gui.py: Reorganize code to use the episode selector for
both all-channels and per-channel new episodes
(Closes: http://gpodder.thegithouse.com/show_bug.cgi?id=14)
Tue, 22 Jan 2008 09:42:01 +0100 <thp@perli.net>
Fix problem in gpodder.desktop file
* bin/gpodder: We're in development again (+svn)
* data/gpodder.desktop: Fix problem in .desktop file (Thanks to Götz
Waschk for reporting this bug, detected via desktop-entry-validate)
Tue, 22 Jan 2008 08:20:33 +0100 <thp@perli.net>
gPodder 0.10.4 "Faster Pussycats Kill" released
* bin/gpodder: gpodder 0.10.4 released :)
* README: gPodder 0.10.4 released :)
* doc/man/gpodder.1: gPodder 0.10.4 released :)
* data/po/de.po: Updated German translation
* data/messages.pot: Updated from source
* data/po/*.po: Updated from messages.pot
Tue, 22 Jan 2008 08:13:42 +0100 <thp@perli.net>
Create Bittorrent download directory on startup
* src/gpodder/libgpodder.py: Create Bittorrent download directory on
startup, so the first time gPodder preferences are shown, the download
folder will exist and now throw an error
Mon, 21 Jan 2008 21:41:59 +0100 <thp@perli.net>
Updated French translation file with correct encoding
* data/po/fr.po: Updated French translation with correct encoding by
Jérôme Chabod - thanks!
Mon, 21 Jan 2008 10:47:49 +0100 <thp@perli.net>
Add support for sending files via Bluetooth
* data/gpodder.glade: Add "Bluetooth" configuration page to
preferences dialog
* src/gpodder/config.py: Add Bluetooth-related configuration options
* src/gpodder/gui.py: Add support for sending (and converting) files
for bluetooth file transfer; add glue code for preferences dialog and
configuration manager
* src/gpodder/libgpodder.py: Add "tempdir" variable to gPodderLibClass
that specifies a temporary directory to be used (currently only for
converting files for bluetooth transfer, might be migrated to a
configuration option later)
* src/gpodder/util.py: Add discover_bluetooth_devices() function that
searches for nearby devices (either via python-bluez or via hcitool,
so one of them has to be installed as a dependency); add
bluetooth_send_file() convenience function that starts a file transfer
via Bluetooth OBEX - uses gnome-obex-send, which has to be installed
for Bluetooth file transfer to work
Mon, 21 Jan 2008 09:52:09 +0100 <thp@perli.net>
Support for different audio/video player selection
* data/gpodder.glade: Add video selection to preferences dialog
* src/gpodder/config.py: Add "videoplayer" configuration option
* src/gpodder/gui.py: Add glue code for configuration and preferences
dialog (audio/video player selector)
* src/gpodder/libgpodder.py: Add code to migrate from older gPodder
configurations (videoplayer is set to "unspecified") to the same value
as the currently selected audio player; when "playing" a file,
determine the file type and start the right player application
* src/gpodder/libplayers.py: Parameterize the UserAppsReader class to
accept a mime type (e.g. "video" or "audio") after which to filter
Mon, 21 Jan 2008 07:30:38 +0100 <thp@perli.net>
Czech translation update: gpodder.desktop
* data/gpodder.desktop: Ondrej Vesely <xorwen@gmai.com> added the
Czech translation strings to the gpodder.desktop file - thanks
Sun, 20 Jan 2008 22:50:13 +0100 <thp@perli.net>
Added Czech translation by Ondrej Vesely
* data/po/cs.po: Added (partial) Czech translation by Ondrej Vesely
<xorwen@gmail.com>; the completed translation will be updated when
it's done
* setup.py: Add "cs" (Czech) to list of translations
Sat, 19 Jan 2008 18:39:54 +0100 <thp@perli.net>
Updated Swedish translation from Anders Kvist
* data/po/sv.po: Thanks to Anders Kvist, the Swedish translation is
now up-to-date again
Sat, 19 Jan 2008 13:28:12 +0100 <thp@perli.net>
Updated French translation from Jérôme Chabod
* data/po/fr.po: Thanks to Jérôme Chabod, the French translation is
now up-to-date again
Thu, 17 Jan 2008 22:46:21 +0100 <thp@perli.net>
Updated Dutch translation from Pieter De Decker
* data/po/nl.po: Thanks to Pieter De Decker, the Dutch translation is
now up-to-date again
Thu, 17 Jan 2008 14:21:49 +0100 <thp@perli.net>
Update translation template and translations from source
* data/messages.pot: Updated potfile from source code
* data/po/*.po: Updated translation templates from potfile
Wed, 16 Jan 2008 08:36:12 +0100 <thp@perli.net>
Remove the "Ignore" button in tray icon notifications
* src/gpodder/trayicon.py: Remove the "ignore" action and button when
a download has finished; the "ignore" button is redundant, as the same
functionality can be achieved by clicking on the "x" of the bubble
Tue, 15 Jan 2008 14:50:13 +0100 <thp@perli.net>
Modularize calls to gobject.idle_add (for non-GTK support)
* bin/gpodder: Set interface_is_gui to True when running the GUI
* src/gpodder/*.py: Use util.idle_add instead of gobject.idle_add
* src/gpodder/gui.py: Simplify some idle_add calls, code clean-up
* src/gpodder/__init__.py: Add "interface_is_gui" boolean variable
that tells us if we are running in GUI or CLI mode (this is needed for
util.idle_add to determine if it's going to use the gobject module or
not)
* src/gpodder/util.py: Add new function idle_add() that acts as a
wrapper to gobject.idle_add(); this will only use gobject.idle_add if
we are in GUI mode, and will call the callback directly when we are in
command-line mode (because we don't have to watch out for threading
race conditions there, compared to what GTK+ gives us)
Mon, 14 Jan 2008 20:23:02 +0100 <thp@perli.net>
Add menu item that links to gPodder's new bug tracker
* data/gpodder.glade: Add bug tracker item to help menu
* src/gpodder/gui.py: Add code to open a webbrowser with the bug
tracker when the bug tracker icon is clicked
Mon, 14 Jan 2008 20:04:25 +0100 <thp@perli.net>
Add a checkbox to keep episodes when removing channels
* src/gpodder/gui.py: Add a checkbox to the confirmation dialog when
removing a podcast channel, so the user has the option to remove the
podcast feed from gPodder's subscription list, but still keep the
downloaded files on the harddisk (via a checkbox in the dialog)
(Closes: http://gpodder.thegithouse.com/show_bug.cgi?id=1)
Thu, 10 Jan 2008 08:44:00 +0100 <thp@perli.net>
Updated Russian translation by Hex
* data/po/ru.po: Updated Russian translation by
Hex <justin.forest@gmail.com>
Wed, 09 Jan 2008 23:43:56 +0100 <thp@perli.net>
Merge tray icon and notification patch by Jérôme Chabod
* data/gpodder.glade: UI support for tray icon settings and
configuration options for auto update feeds (auto update based on a
patch by Nick (nikosapi.org)
* src/gpodder/config.py: Add configuration options that support the
tray icon, notification bubble and automatic update/close functions
* src/gpodder/gui.py: Support the tray icon in the GUI; link the
configuration options with the preferences dialog; re-work the channel
update dialog to be more slipstreamed
* src/gpodder/trayicon.py: Added new tray icon module by
Jérôme Chabod <jerome.chabod@ifrance.com>; initial idea from old
gPodder TODO list by Holger Bauer
Wed, 09 Jan 2008 23:09:54 +0100 <thp@perli.net>
Updated Swedish translation by Anders Kvist
* data/po/sv.po: Swedish translation updated by
Anders Kvist <kvistkvist@telia.com>
Wed, 09 Jan 2008 11:52:23 +0100 <thp@perli.net>
Use os.rename to make channel list saving atomic
* src/gpodder/opml.py: Make the saving of the channel list atomic by
first saving it to a temporary file and then using os.rename to really
move the file in place (this should make the channel list saving very
stable and protect against certain bad system conditions where the
channel list is emptied); thanks to Jens Thiele <karme@berlios.de> for
the suggestion and pointers to improve the channel saving code
Sat, 05 Jan 2008 15:34:23 +0100 <thp@perli.net>
Make logging in libpodcasts less verbose
* src/gpodder/libpodcasts.py: Remove some verbose logging code
Wed, 02 Jan 2008 15:39:04 +0100 <thp@perli.net>
Migrate from channels.xml (from 0.9.4) to channels.opml if needed
* src/gpodder/libgpodder.py: Add code to check if channels.xml exists
but channels.opml doesn't and if so, try to convert from channels.xml
to channels.opml, so users upgrading from 0.9.4 directly will have
their channel list automatically converted;
thanks to Tim Michelsen for the bug report and helpful Ubuntu info
Tue, 01 Jan 2008 23:32:50 +0100 <thp@perli.net>
Add download completion notification support
* src/gpodder/download.py: Notify the download status manager when a
download has been completed successfully
* src/gpodder/services.py: Add download-complete signal to list of
possible signals and download_completed() method to be used by
downloads to notify the status manager of a successful download
Sat, 29 Dec 2007 14:21:51 +0100 <thp@perli.net>
Patch the feedparser module to correctly process democracynow.org
* src/gpodder/cache.py: Add a patch_feedparser() method that checks of
the feedparser module correctly maps the "plain" content-type to the
correct "text/plain" content-type and if not, replace the
mapContentType method with a fixed one; this should make the audio
podcast on democracynow.org working (thanks to Clark Burbidge for the
bug report)
Sun, 23 Dec 2007 12:20:25 +0100 <thp@perli.net>
Better username/password extraction from URLs
* src/gpodder/util.py: Improve username and password extraction for
authentication URLs; thanks to Nick <me@nikosapi.org> and Shane
Donohoe <priestoftime@googlemail.com> for reporting this bug and
sending in a patch; this should allow for e-mail address usernames
Sat, 22 Dec 2007 11:44:41 +0100 <thp@perli.net>
Also delete old episodes that have disappeared from the feed
* src/gpodder/gui.py: When deleting old episodes automatically, also
delete episodes that have disappeared from the RSS feed and are only
available locally; thanks to Pieter De Decker <pdedecker@gmail.com>
for the very detailed and helpful bug report :)
Thu, 20 Dec 2007 01:33:15 +0100 <thp@perli.net>
Stability updates: Feed cache update, old PyCairo versions
* src/gpodder/draw.py: Add a workaround for pycairo versions less than
1.1.6. Thanks to Chris Arnold for reporting this bug on the
gpodder-devel mailing list and taking the time to test the patch and
report back and provide useful information for debugging this error
* src/gpodder/gui.py: Close the feed cache update dialog even when the
user clicks on "cancel" (would have stayed there otherwise)
Tue, 18 Dec 2007 10:13:44 +0100 <thp@perli.net>
Merge "delete episode after sync" patch from Jérôme Chabod
* data/gpodder.glade: Add GUI elements in preferences dialog to select
what to do after episode sync (nothing, delete or mark played)
* src/gpodder/config.py: Add "on_sync_delete" configuration option
* src/gpodder/gui.py: Glue "on_sync_delete" config and GUI together
* src/gpodder/libipodsync.py: If the configuration option
on_sync_delete is set, remove the episode after successfully copying
it to the iPod or MP3 player (the whole patch has been initially done
by Jérôme Chabod <jerome.chabod@france.com> with some modifications)
* src/gpodder/libpodcasts.py: Make delete_from_disk() a bit more
robust, so it doesn't disturb libipodsync's functionality
Mon, 17 Dec 2007 16:26:43 +0100 <thp@perli.net>
Remove invalid channel cover images when loading fails
* src/gpodder/libpodcasts.py: Remove the cover_file of a channel when
it cannot be loaded (assume something went wrong when downloading the
cover file); re-downloading the cover manually can solve the problem
Mon, 17 Dec 2007 15:00:17 +0100 <thp@perli.net>
Fix typo in last commit
* src/gpodder/libipodsync.py: Fix typo in last commit
Mon, 17 Dec 2007 11:21:10 +0100 <thp@perli.net>
Modify played handling in iPod sync when "on sync mark played" is active
* src/gpodder/libipodsync.py: Don't copy played state from PC to iPod
if the on_sync_mark_played option is set
Sat, 15 Dec 2007 15:58:23 +0100 <thp@perli.net>
Merge patch from Leonid Ponomarev to gdfs
* doc/dev/gdfs/gdfs-init.py: Merge patch from Leonid Ponomarev to add
support for the system's native encoding, based on the $LANG
environment variable. This should add support for episodes and
channels with international characters as titles
Sat, 15 Dec 2007 15:11:46 +0100 <thp@perli.net>
Updated Dutch translation by Pieter De Decker
* bin/gpodder: We're in development again: "+svn"
* data/po/nl.po: Updated Dutch translation from Pieter De Decker
Thu, 13 Dec 2007 08:32:54 +0100 <thp@perli.net>
gPodder 0.10.3 "A Stop at Willoughby" released
* bin/gpodder: gPodder 0.10.3 released :)
* README: gPodder 0.10.3 released :)
* doc/man/gpodder.1: gPodder 0.10.3 released :)
* data/messages.pot: Updated from source
* data/po/de.po: Updated German translation
* data/po/*.po: Updated from messages.pot
Thu, 13 Dec 2007 08:02:29 +0100 <thp@perli.net>
Link the gPodder Documentation Wiki from the help pages
* data/gpodder.glade: Help menu: gPodder Homepage (instead of website)
and Documentation Wiki (instead of Mailing list)
* src/gpodder/gui.py: Open gPodder Wiki instead of mailing list page
Wed, 12 Dec 2007 21:39:03 +0100 <thp@perli.net>
Remove TODO file from MANIFEST.in
* MANIFEST.in: Of course we have to remove non-existing files from the
MANIFEST.in file, too.. so TODO is now finally gone :)
Wed, 12 Dec 2007 21:30:00 +0100 <thp@perli.net>
Manage TODO list on the gPodder Wiki
* TODO: Removed; new location: http://gpodderwiki.jottit.com/todo
Wed, 12 Dec 2007 20:55:00 +0100 <thp@perli.net>
Configuration for "old" episodes; automatically remove old episodes
* src/gpodder/config.py: New boolean auto_remove_old_episodes
configuration option that defaults to False (remove on startup)
* src/gpodder/gui.py: Add code to automatically remove old, unplayed
episodes on startup if the specific configuration options have been
set; connect config manager to GUI items for the preferences dialog
* data/gpodder.glade: Add checkbox for automatically removing old,
unplayed episodes from gPodder on startup and a spinbutton to set the
amount of days after which an episode is considered "old"
Wed, 12 Dec 2007 19:44:15 +0100 <thp@perli.net>
Merged episode locking patch from Paul Rudkin
* src/gpodder/gui.py: Merged "lock episodes" patch to mark episodes as
locked, patch by Paul Rudkin <paul@thegithouse.com>
* data/gpodder.glade: Add menu item for toggle locked status
* src/gpodder/libgpodder.py: Add "locked" history
* src/gpodder/libpodcasts.py: When requesting a status icon, also draw
the "Locked" status; is_locked() in podcastItem
* src/gpodder/util.py: Added code for drawing a padlock icon on top of
another (file type) icon; this is used for the "lock episodes" feature
Tue, 11 Dec 2007 22:10:03 +0100 <thp@perli.net>
Updated TODO list
* TODO: Updated TODO list
Mon, 10 Dec 2007 09:42:06 +0100 <thp@perli.net>
Move observer code out of DownloadStatusManager into ObservableService
* src/gpodder/services.py: Move out all observer-related code like
registration, unregistration and notification to a new
ObservableService class; subclass ObservableService in
DownloadStatusManager; this makes the observer code in
DownloadStatusManager re-usable (will be needed for new sync code)
Mon, 10 Dec 2007 09:33:26 +0100 <thp@perli.net>
Selective iPod episode clean-up; "delete older than X days"
* src/gpodder/config.py: Add episode_old_age configuration variable;
is an integer, defaults to 7. This is the number of days after which
an episode will be considered "old"
* src/gpodder/gui.py: iPod cleanup is now done selectively using the
episode selector dialog; the code has been split, because we do not
yet have an episode selector dialog for FS-based sync; add "Downloaded
x days ago" column to "Delete old episodes" dialog and a corresponding
button; call the callback even when no episodes are selected in
gPodderEpisodeSelector
* src/gpodder/libipodsync.py: Class variables of gPodder_iPodSync
moved to __init__ to be instance variables (this should fix a bug that
crops up now that we can selectively delete episodes); remove_tracks()
and clean_playlist() have been modified/added to support new episode
selector deletion code
* src/gpodder/libpodcasts.py: Move is_played() to podcastItem from
podcastChannel (it really belongs to the item; this makes code more
readable in other parts of the codebase); add age_in_days(), is_old(),
get_age_string() and age_prop to podcastItem
* src/gpodder/util.py: New function: file_modification_datetime();
returns a datetime.datetime instance of the MTIME (modification
timestamp) of the filename given as parameter or None if the filename
cannot be determined; this is used for the "old episodes" feature
Sun, 09 Dec 2007 16:45:11 +0100 <thp@perli.net>
Make has_converter() a bit more intelligent in detecting extensions
* src/gpodder/libconverter.py: Convert given extension to lowercase
and strip a leading "." from the extension, so calling code can also
give the second value of the os.path.splitext() result directly to
has_converter()
Sun, 09 Dec 2007 13:20:49 +0100 <thp@perli.net>
Fix pre-setting code for filechooser buttons; Patch by Paul Rudkin
* src/gpodder/config.py: Fix pre-setting code for filechooser-related
code; use set_current_folder() instead of set_filename()
* src/gpodder/gui.py: Fix pre-setting code for filechooser-related
code; thanks to Paul Rudkin <paul@thegithouse.com> for the patch
Thu, 06 Dec 2007 09:37:57 +0100 <thp@perli.net>
Support for itms:// links (direct links to the Apple iTunes Music Store)
* src/gpodder/util.py: Support direct itms:// links by splitting out
the iTunes Podcast links parsing routines. This should put us in for
some nice iTunes podcast link support that will automagically
translate iTunes podcast links to the correct RSS feed URL
Thu, 06 Dec 2007 09:29:09 +0100 <thp@perli.net>
Support for iTunes Podcast links (http://phobos.apple.com/...)
* src/gpodder/util.py: Add support for subscribing to iTunes Podcast
links (those with phobos.apple.com); new functions:
parse_itunes_xml(), http_get_and_gunzip() and itunes_dicover_rss()
Thu, 06 Dec 2007 09:15:57 +0100 <thp@perli.net>
Added Galician translation from Teo Ramirez
* data/gpodder.desktop: Added Spanish and Galician translations;
thanks to Teo Ramirez <teoramirez@gmail.com>
* data/messages.pot: Updated from source
* data/po/de.po: Updated
* data/po/gl.po: Added NEW Galician (gl) translation by Teo Ramirez
* data/po/*.po: Updated from source
* setup.py: Added Galician (gl) translation by Teo Ramirez
Thu, 06 Dec 2007 08:35:12 +0100 <thp@perli.net>
Sort channel list (finally ;)
* src/gpodder/libpodcasts.py: Sort channels by lowercase title before
returning the channel list in load_channels(); this automagically
makes gPodder's channel list always sorted :)
Thanks to FriedBunny <friedbunny@kulturny.com> for suggesting this and
sending in an intial patch that led to this patch =)
* TODO: Remove implemented item: Sort channel list
Tue, 04 Dec 2007 23:28:27 +0100 <thp@perli.net>
Do grayscale "pill" instead of theme-based colors (for bad themes)
* src/gpodder/draw.py: Always draw the "pill" in semi-transparent
black/grey shades so it will work for all GTK themes (even Ubuntu's)
Mon, 03 Dec 2007 21:35:56 +0100 <thp@perli.net>
Update channel navigator when iPod/MP3 player sync has finished
* src/gpodder/gui.py: Update channel navigator when iPod sync has
finished, so we can update the "played" status in the channel
navigator when this status has changed after we've synced ("on sync
mark played" option)
Mon, 03 Dec 2007 21:24:17 +0100 <thp@perli.net>
Add option to mark episodes as played after transfer to device
* data/gpodder.glade: Option added to preferences dialog
* src/gpodder/config.py: Add option "on_sync_mark_played"; will mark
an episode as played when it gets transferred to a device
* src/gpodder/gui.py: Glue code for GUI + gpodder.config
* src/gpodder/libipodsync.py: On sync, mark episode as played if the
user has selected the "on_sync_mark_played" option
* TODO: Remove implemented/integrated items
Sat, 01 Dec 2007 15:19:29 +0100 <thp@perli.net>
Fix a fatal bug with first-run that prevents channel list saving
* src/gpodder/util.py: Always use a file's parent directory to get the
free disk space and return zero free disk space when the parent
directory does not exist
Thu, 29 Nov 2007 08:53:36 +0100 <thp@perli.net>
Support for itpc:// URLs
* src/gpodder/util.py: Add support for adding "itpc://" URLs (these
are simply http:// URLs with a different schema, for iTunes)
Tue, 27 Nov 2007 22:59:26 +0100 <thp@perli.net>
Draw channel stats (unplayed, downloaded) on channel navigator
* bin/gpodder: We're in development again, so add "+svn"
* src/gpodder/draw.py: Added
* src/gpodder/gui.py: Fix import of renamed "channels_to_model";
re-assign new column numbers for treeChannels' data model; add
cell renderer for pill pixbuf and remove cell renderer for status text
* src/gpodder/libpodcasts.py: Add episode_is_new() function to
podcastChannel to check if an episode can be considered "new"; use the
episode_is_new function in get_new_episodes; add get_episode_stats()
after an idea from Paul Rudkin <paul@thegithouse.com>; re-factor
channels_to_model and clean out old, unused code and columns
Mon, 26 Nov 2007 08:57:04 +0100 <thp@perli.net>
gPodder 0.10.2 "Ein schweineschnauzen Sandwich, bitte!" released
* bin/gpodder: gPodder 0.10.2 released :)
* doc/man/gpodder.1: gPodder 0.10.2 released :)
* README: gPodder 0.10.2 released :)
Mon, 26 Nov 2007 08:52:49 +0100 <thp@perli.net>
Translation updates
* data/messages.pot: Refreshed from source
* data/po/*.po: Refreshed from messages.pot
* data/po/de.po: Updated German translation
Sun, 25 Nov 2007 11:50:46 +0100 <thp@perli.net>
Make sure there is enough free disk space when saving OPML channel list
* src/gpodder/gui.py: Notify user that there's some problem saving the
current channel list when save_channels() return False
* src/gpodder/libpodcasts.py: Pass-through the return value of
gpodder.opml.Exporter.write so calling code knows if saving the
channel list was successful or not
* src/gpodder/opml.py: Check free disk space before saving OPML
channels in Exporter.write; thanks to Jens Thiele <karme@berlios.de>
for reporting this bug on the Debian BTS (Closes: Debian Bug #452490)
Thu, 22 Nov 2007 21:52:35 +0100 <thp@perli.net>
Don't send Referer header when downloading episodes
* src/gpodder/download.py: Some podcasts now implement an
"anti-bandwidth-theft" code that should provide other websites from
not linking to the episodes; as we have sent a Referer header
containing the RSS feed URL, this causes problems; Referer header
sending is therefore disabled now
Sun, 18 Nov 2007 15:33:50 +0100 <thp@perli.net>
TODO items from Katy G. B.
* TODO: Updated TODO list
Sat, 17 Nov 2007 18:38:36 +0100 <thp@perli.net>
Backwards-compatibility for PyGTK less than 2.12 (for GtkTooltip)
* src/gpodder/gui.py: Do not hook up tooltip handlers when we are
using PyGTK less than 2.12 (which introduced the gtk.Tooltip API)
Thu, 15 Nov 2007 11:07:42 +0100 <thp@perli.net>
Check free disk space before copying files to iPod
* src/gpodder/libipodsync.py: Check if the iPod's filesystem has
enough free disk space before copying files over to it, as to not
corrupt the iTunesDB in certain situations and fail when disk is full;
thanks to Nicolas Quienot <niqooo@gmail.com> for the bug report
* src/gpodder/util.py: Add get_free_disk_space() function that
calculates the free (user-available) disk space on a given path
Wed, 14 Nov 2007 21:55:18 +0100 <thp@perli.net>
Add informative tooltips to channel navigator
* src/gpodder/gui.py: Add tooltips to channel navigator that show a
bigger cover image, the title, description, url and used disk space
* src/gpodder/libpodcasts.py: Add save_dir_size property to
podcastChannel that contains the disk usage of the channel's save_dir;
this can be manually updated by calling update_save_dir_size() and
will automatically be updated when the GUI code hooks into the
channel; also add get_cover_pixbuf() that returns a pixbuf of the
cover for a given size or None if there is no valid cover file
Wed, 14 Nov 2007 19:19:11 +0100 <thp@perli.net>
Slipstream code (enumerate instead of simple position tracking)
* src/gpodder/libipodsync.py: Use enumerate() to iterate over a list
of episodes instead of keeping track of the position "by hand"
Wed, 14 Nov 2007 19:17:51 +0100 <thp@perli.net>
Ignore initial window events from GtkWindow in Config
* src/gpodder/config.py: Add a flag to config manager to ignore window
events until the window has been realized; then, start taking position
and size updates
Mon, 12 Nov 2007 20:25:39 +0100 <thp@perli.net>
Improve caching for HTTP redirects and minor errors; cache clean-up
* src/gpodder/cache.py: Cache content when it comes from a HTTP
redirect (301, 302, 307); cache feeds even with parsing errors, so we
can "fill" our cache and not download on every startup
* src/gpodder/libpodcasts.py: Add cache clean-up code after loading
channels; this should keep the feedcache.db file smaller for users
that like to try out new channels (or have used gPodder for a while)
Sun, 11 Nov 2007 14:24:17 +0100 <thp@perli.net>
Better file extension guessing for URLs
* src/gpodder/util.py: Improve file_extension_from_url() by adding
additional checks for known good extensions and recurse into the query
string if it looks like an URL; this should fix compatibility problems
for feeds with strange URLs; should provide more reliable guessing;
thanks to Nicolas Quienot <niqooo@gmail.com> for the bug report
Fri, 09 Nov 2007 10:05:36 +0100 <thp@perli.net>
Fix format_filesize() usage in episodes selector and podcastItem
* src/gpodder/gui.py: Use the correct (config-using) format_filesize()
function to generate the total size string in the episode selector
* src/gpodder/libpodcasts.py: Use the correct (config-usig
format_filesize() function to generate the total size string in
podcastItem; thanks to Pieter De Decker <pdedecker@gmail.com> for
pointing that out
* data/gpodder.glade: Use "Preferences" instead of "Preferences..."
which feels a bit better in the GUI
Thu, 08 Nov 2007 21:25:19 +0100 <thp@perli.net>
Add "gPodder download folder synchronizer" scripts to repository
* doc/dev/gdfs/gdfs-check.py: Added
* doc/dev/gdfs/gdfs-init.py: Added
* doc/dev/gdfs/README: Added
Thu, 08 Nov 2007 20:01:13 +0100 <thp@perli.net>
The mighty episode selector dialog and some menu re-arrangements
* src/gpodder/gui.py: Move the "center_on_widget" keyword-based window
positioning code to GladeWidget to be universally usable; update
"Device" menu item on startup; new functions: delete_episode_list()
and download_episode_list() that both operate on lists of episodes;
add code for invoking gPodderEpisodeSelector for deleting old
episodes; re-work on_itemDownloadAllNew_activate to use the episode
selector instead of hand-crafting a message dialog text; add
update_item_device() function that will handle the hiding, showing and
renaming of the "Device" menu in the menubar; clean-up
gPodderProperties with callback_finished setting (now kwarg-based);
new, might, fancy, customizable and uber-sexy gPodderEpisodeSelector
that will prove to be useful in some places in our codebase: it
basically allows the user to select a subset of episodes from a given
list in a quite sophisticated way; new "delete old episodes" menu item
added for cleaning up gPodder's downloads
* src/gpodder/libpodcasts.py: Add delete_from_disk() convenience
method to podcastItem; other convenience properties and functions
needed for the new episode selector dialog: pubdate_prop,
get_filesize_string(), filesize_prop, get_channel_title(),
channel_prop, get_played_string(), played_prop
* data/gpodder.glade: new gPodderEpisode dialog; re-structuring of
gPodder's main menu to be more usable and more compact; also added the
Ctrl+K "Remove old episodes" menu item; also use the correct
"multimedia-player" icon name of a not really representative icon
Thu, 08 Nov 2007 12:07:30 +0100 <thp@perli.net>
Support syncing to FS-based MP3 players without subfolders
* data/gpodder.glade: Add checkbox "Create a subfolder for each
channel" to preferences dialog and rename some widgets
* src/gpodder/config.py: Add boolean "fssync_channel_subfolders"
option that defaults to True (create subfolder for each channel)
* src/gpodder/gui.py: Hook up config option fssync_channel_subfolders
to preferences dialog; do more intelligent widget hiding for the
"Player" tab in the preferences dialog (only show relevant widgets)
* src/gpodder/libipodsync.py: Only append channel name as subfolder to
destination folder name when the "fssync_channel_subfolders" option is
True; suggested by Paul Elliot <omahns.home@gmail.com>
Thu, 08 Nov 2007 11:28:17 +0100 <thp@perli.net>
Fix offline cache behaviour when time is not set
* src/gpodder/cache.py: Return cached_content in offline mode when
cached_content "is not None" (instead of cached_time "is not None")
Tue, 06 Nov 2007 12:37:41 +0100 <thp@perli.net>
Process events before connecting Config to gtk windows
* data/gpodder.glade: Remove default size for main gPodder window, as
this is now handled by the config manager
* src/gpodder/config.py: Process GTK events in the event queue before
connecting to the "configure-event" signal, so we won't get two
configure events for the window for the initial size change
Mon, 05 Nov 2007 13:51:26 +0100 <thp@perli.net>
Add error reporting when download fails because of an I/O error
* src/gpodder/download.py: Catch and handle I/O errors in
DownloadThread and format and pass on messages to GUI code when
required; thanks to Florian Richter <Florian_Richter@gmx.de> for
suggesting this feature after having a full disk
* src/gpodder/gui.py: Update tree view when adding a new episode;
add new notification() method and pass this method through to
DownloadThread, so it can present messages to the user (i.e. errors)
Mon, 05 Nov 2007 12:54:35 +0100 <thp@perli.net>
Use util.find_command in more places (mplayer detection, ...)
* src/gpodder/libgpodder.py: Use util.find_command to detect the
existence of the "gnome-btdownload" command and spit out a warning log
message when the command is not available
* src/gpodder/libipodsync.py: Use util.find_command to check for an
installed mplayer binary (instead of relying on os.system("which...")
Mon, 05 Nov 2007 01:12:15 +0100 <thp@perli.net>
Better command detection for the converter library
* src/gpodder/libconverter.py: Detect existence of commands before
invoking them for converting files; based on a patch by
Nick (nikosapi.org); ConverterCollection is now a dict itself :)
* src/gpodder/util.py: Add new find_command() function that will
search the system's PATH for a specific executable command
Mon, 05 Nov 2007 00:21:39 +0100 <thp@perli.net>
Remove extracted cover art when deleting episode files
* src/gpodder/util.py: Apply modified version of a patch from
Nick (nikosapi.org) that is better suited for deleting cover art that
has been extracted with the new eyeD3 cover art extraction code
Mon, 05 Nov 2007 00:17:12 +0100 <thp@perli.net>
Patch from Nick (nikosapi) to support eyeD3 cover art extraction
* src/gpodder/libipodsync.py: Apply modified version of a patch from
Nick (nikosapi.org) to utilize eyeD3 for cover art extraction in iPod
sync code; remove dependency on PyID3
* README: PyID3 is not a dependency anymore, as we can now use eyeD3
for the same purpose (cover art extraction)
Sat, 03 Nov 2007 14:14:09 +0100 <thp@perli.net>
Fix format_filesize() function to be standards-conformant (unit prefixes)
* src/gpodder/config.py: Add "use_si_units" configuration option; if
True, the user will see SI units (MB, kB, ...); if False (the
default); the user will see binary-prefix units (MiB, KiB, ..)
* src/gpodder/libgpodder.py: Add pass-through function
"format_filesize()" to gPodderLib that combines the
util.format_filesize function with the gPodder-specific config option
* src/gpodder/util.py: Apply a modified patch from Gerrit Sangel
<z0idberg@gmx.de> to add support for SI units and binary prefixes to
format_filesize(); this makes the function standards-compliant
* src/gpodder/download.py: Updated to use new format_filesize
* src/gpodder/gui.py: Updated to use new format_filesize
* src/gpodder/libpodcasts.py: Updated to use new format_filesize
Fri, 02 Nov 2007 17:28:05 +0100 <thp@perli.net>
New Configuration/Settings Manager; massive code clean-ups
* src/gpodder/config.py: Added new Configuration Manager that
automatically keeps track of saving changed values and is also able to
watch GTK widgets for changes; this should simplify our settings
management and give us a single place for maintaining settings
* src/gpodder/download.py: Access settings from new config manager
* src/gpodder/gui.py: Make use of new config manager to connect
widgets and settings from the GUI directly to the config manager;
remove manual loading and saving of settings; auto-connect as much as
possible in the gPodderProperties dialog to get real-time automatic
configuration saving; fix the other code to use new config manager
* src/gpodder/libgpodder.py: MASSIVE code clean-up; removed lots of
old cruft and dead code that has been lying around in libgpodder for
some time now; remove configuration code; utilize config manager;
unify DownloadHistory+PlaybackHistory in new HistoryStore class;
reduce number of import statements
* src/gpodder/libipodsync.py: Access settings from new config manager
* src/gpodder/libplayers.py: Removed dotdesktop_command()
* src/gpodder/libpodcasts.py: Move locking functionality into this
module, as locking is only used here; access config from new manager
* src/gpodder/services.py: Use config manager to get settings
* src/gpodder/util.py: Add format_desktop_command() function, based on
the dotdesktop_command() function from libplayers
Fri, 02 Nov 2007 07:49:38 +0100 <thp@perli.net>
Add ability to open download folder from channel's context menu
* src/gpodder/gui.py: Add "Open download folder" menu item to channel
navigator context menu
* src/gpodder/libgpodder.py: Add open_folder() method that will open
the DE's default folder browser via "xdg-open"
Thu, 01 Nov 2007 15:29:00 +0100 <thp@perli.net>
Limit filename on FS-based sync to 50 characters
* src/gpodder/libipodsync.py: Do not allow extremely long file names
that could theoretically be generated by using data from RSS feeds;
this is needed to make FAT-based drives work with files that would
otherwise have file names that are too long
Wed, 31 Oct 2007 15:22:32 +0100 <thp@perli.net>
Escape RSS-provided strings in Pango markup
* src/gpodder/gui.py: Escape strings in Pango markup
* bin/gpodder: we're in development again, so "+svn"
Sun, 28 Oct 2007 16:27:14 +0100 <thp@perli.net>
gPodder 0.10.1 "Nukular, das Wort heißt Nukular" released
* bin/gpodder: gPodder 0.10.1 released :)
* doc/man/gpodder.1: gPodder 0.10.1 released :)
* README: gPodder 0.10.1 released :)
* data/messages.pot: Refreshed template from source files
* data/po/de.po: Updated German translation for the 0.10.1 release
* data/po/*.po: Refreshed translation files from template
Sun, 28 Oct 2007 15:25:56 +0100 <thp@perli.net>
Add "Save episode to file" handling to episode list context menu
* data/gpodder.glade: Use a stock "Save As" button for the "Copy
episode to file" button
* src/gpodder/gui.py: Add new show_copy_dialog() method to GladeWidget
that shows a copy dialog where a user can copy a file to a selected
destination (this is used for "Save episode to file"); use
show_copy_dialog in "Save As" in gPodderEpisode; add "Save episode to
folder" menu item in episode list context menu and use
show_copy_dialog to carry out the user interaction
Sun, 28 Oct 2007 13:30:40 +0100 <thp@perli.net>
Allow "https://" URLs for episode URLs, as we can handle these, too
* src/gpodder/util.py: Allow "https://" as a valid URL scheme, as we
can handle https URLs, thanks to Aravind Seshadri
<aravind@aravind.name> who initially reported this bug
Thu, 25 Oct 2007 14:00:01 +0200 <thp@perli.net>
Sync videos to the "Video Podcasts" playlist instead of the "Video" menu
* src/gpodder/libipodsync.py: Merged patch from Nicolas Quienot
<niqooo@gmail.com> to sync videos to the "Video Podcasts" menu instead
of the "Videos" menu, as documented on http://ipodlinux.org/ITunesDB
Tue, 23 Oct 2007 09:24:52 +0200 <thp@perli.net>a
sync_filename in podcastItem; cleanup; hide extra progressbar on transfer
* src/gpodder/gui.py: Use podcastItem's sync_filename(); hide the
unnecessary second progressbar when only syncing one channel (i.e.
when clicking on the "transfer" button in the main window
* src/gpodder/libgpodder.py: Remove unneeded lexists import and
warning; clean-up
* src/gpodder/libipodsync.py: Use podcastItem's sync_filename()
* src/gpodder/libpodcasts.py: Add sync_filename() to podcastItem,
returns the custom_sync_name or the title of the episode, based on the
user's configuration settings for FS-based MP3 player sync
Sun, 07 Oct 2007 14:38:31 +0200 <thp@perli.net>
Add wishlist items to TODO list from Paul and Wilfred
* TODO: New wishlist items, ideas and suggestions
Sat, 06 Oct 2007 12:39:57 +0200 <thp@perli.net>
Limit download progress status updates to reduce CPU load
* src/gpodder/download.py: Limit the amount of status updates the
download threads send to the DownloadStatusManager to one per second;
this should make gPodder less CPU-intensive with many parallel
downloads; thanks to Wilfred van Rooijen for reporting and testing
Tue, 02 Oct 2007 17:59:29 +0200 <thp@perli.net>
Update channel models (icons) after iPod synchronization
* src/gpodder/gui.py: Call update_model() on each channel after an
iPod sync, so we can update the played state on the available episodes
lists when played state was changed by the iPod sync
Sat, 29 Sep 2007 14:12:15 +0200 <thp@perli.net>
Fix loading of channel metadata (load auth data and settings)
* src/gpodder/libpodcasts.py: Load channel metadata when loading a
podcastChannel object from OPML/LocalDB. This fixes a problem with
authentication data being not loaded and also fixes a bug when the
custom-set channel title was not correctly used throughout the GUI.
Thanks to Nick (nikosapi) for reporting and providing a patch
Tue, 25 Sep 2007 22:02:19 +0200 <thp@perli.net>
Finally remove Desktop symlink code; several compatibility fixes
* src/gpodder/download.py: Prevent divide-by-zero errors when
calculating download speed
* src/gpodder/gui.py: Prevent divide-by-zero errors when calculating
percentage done in code for moving the downloaded items folder
* src/gpodder/libgpodder.py: Remove the "Symlink on Desktop" code,
because it's not GUI-accessible anymore and we didn't use it anyway
* src/gpodder/opml.py: Better local filename detection by using
os.path.exists() instead of .startswith('/'); this is also good for
cross-platform compatibility where parts don't usually start with a
forward slash (i.e. Win32)
Mon, 24 Sep 2007 00:09:44 +0200 <thp@perli.net>
Channel list selection bug fixes
* src/gpodder/gui.py: Fix some channel list-related problems and
annoyances, based on a patch by Nick (nikosapi)
* bin/gpodder: We're in development again, so "+svn"
Fri, 21 Sep 2007 02:07:43 +0200 <thp@perli.net>
gPodder 0.10.0 "Hier spricht Frank Drebin" released
* bin/gpodder: gPodder 0.10.0 released :)
* doc/man/gpodder.1: gPodder 0.10.0 released :)
* README: gPodder 0.10.0 released :) (and: updated dependencies)
* TODO: Updated TODO list (some items are done for 0.10.0 :)
Fri, 21 Sep 2007 02:05:10 +0200 <thp@perli.net>
Updated translations from Rosetta (Launchpad.net)
* data/po/es.po: Spanish translation by Julio Acuña
* data/po/pt.po: Portuguese translation by Joel Calado (completed :)
Fri, 21 Sep 2007 01:46:38 +0200 <thp@perli.net>
Fix problems with path selection in treeChannels
* src/gpodder/gui.py: Simple bugfix
Fri, 21 Sep 2007 00:32:51 +0200 <thp@perli.net>
Center gPodderEpisode on treeAvailable for less mouse hopping
* src/gpodder/gui.py: If possible, center the gPodderEpisode dialog
window on the treeAvailable, because that makes the position of the
opened dialog more predictable and easier to use (as if the
gPodderEpisode dialog was "inside" the treeView from which it opened)
Fri, 21 Sep 2007 00:07:49 +0200 <thp@perli.net>
Don't translate feed format string examples
* src/gpodder/gui.py: Don't mark format string examples as
translatable
Wed, 19 Sep 2007 17:21:09 +0200 <thp@perli.net>
Small bugfix for updating treeChannels when its model changes
* src/gpodder/gui.py: Bugfix
Wed, 19 Sep 2007 16:57:41 +0200 <thp@perli.net>
Removed channel combobox, drag'n'drop improvements + new channel cover editor
* data/gpodder.glade: Remove comboAvailable in gPodder (main window);
add download+clear button in gPodderChannel, rename some items that
are now used in code; make the channel navigator non-shrinkable (so
it is always visible, because we don't have comboAvailable anymore)
* src/gpodder/gui.py: Remove support for the channel combo box,
also known as comboAvailable; clean-up DND code and make treeChannels
the only DND target in the main window; remove some unnecessary
updating of the channel list (calls to updateComboBox);
Changes for the gPodderChannel dialog: Don't automatically download
channel cover when dialog pops up; add "Download" and "Clear" buttons
to the cover editor; add DND support for dropping local files or
images from the web browser to the cover editor (for setting custom
covers on channels with bad or no cover)
* src/gpodder/libgpodder.py: Don't abort get_image_from_url() if the
URL is invalid, but the image has already been downloaded (because we
read the downloaded image in the code when it exists, without URL)
Wed, 19 Sep 2007 14:23:40 +0200 <thp@perli.net>
Center feed update dialog on main window; scroll reset in chan.navigator
* src/gpodder/gui.py: Reset the current scroll position of the channel
navigator when re-loading the channel list; this fixes an annoyance
that Alistair Sutton <alistair.sutton@gmail.com> reported when dealing
with a HUGE channel list (more than 50 channels); also removed the
scroll position reset code from treeAvailable, as we already managed
to only edit the model instead of re-loading it every time; added code
to really center the feed update dialog on gPodder's main window
Tue, 18 Sep 2007 20:15:56 +0200 <thp@perli.net>
Replace wget with new gpodder.download module; User-agent support
* bin/gpodder: Set "gpodder.user_agent" field on startup; remove check
for wget, as this is not needed anymore
* src/gpodder/cache.py: Clean-up; remove old logging code; add support
for gpodder.user_agent; log info when there is an error in parsing the
feed, so the user knows why this feed is not cached
* src/gpodder/console.py: Remove DownloadPool, Use new
gpodder.download module for carrying out downloads, remove
wget_version() tester, as this is not needed anymore =)
* src/gpodder/download.py: Added new downloader module that uses
urllib and some custom classes and functions to provide the equivalent
functionality of the obsolete "libwget", but without the wget
dependency and with better accuracy (progress reporting, etc..)
* src/gpodder/gui.py: Utilize new gpodder.download module instead of
libwget
* src/gpodder/__init__.py: Add "user_agent" variable to the gpodder
module that holds the value of the "User-agent" header to send to web
servers when requesting OPMLs, Feeds or download data
* src/gpodder/opml.py: Add support for sending the User-agent header
* src/gpodder/services.py: Make the progress column a float column to
have smoother progress indicuation; add the "acquired" keyword
argument to s_release(); default 'speed' to a translated "Queued"
* src/gpodder/libwget.py: Removed
* doc/dev/redhat-wget-output.txt: Removed
Tue, 18 Sep 2007 02:30:04 +0200 <thp@perli.net>
Refreshed pot files and po templates; updated German translation
* data/messages.pot: Refreshed from current source
* data/po/de.po: Refreshed and updated translation
* data/po/*.po: Refreshed from new .pot file
Tue, 18 Sep 2007 02:19:19 +0200 <thp@perli.net>
Imported updated translations from Rosetta (Launchpad.net)
* data/po/it.po: Italian translation updated by FFranci72
* data/po/nl.po: Dutch translation updated by Roel Groeneveld
* data/po/pt.po: Portuguese translation updated by Joel Calado
Tue, 18 Sep 2007 02:14:19 +0200 <thp@perli.net>
Offline support for feedcache, faster startup, code simplification
* src/gpodder/cache.py: Add support for "offline" keyword argument
* src/gpodder/gui.py: Make intelligent use of "offline" keyword
argument when passed to load_channels(); simplify code for selecting
the active channel in updateComboBox()
* src/gpodder/libpodcasts.py: Pass-through of "offline" keyword
argument in all relevant function calls
Sat, 15 Sep 2007 16:22:28 +0200 <thp@perli.net>
New LocalDB using DOM (removes python-xml dependency); channel context menu
* bin/gpodder: Don't check for xml.sax package and modules anymore, as
the dependency on python-xml has been removed with this release
* data/gpodder.glade: Remove the "info" button for the current channel
* src/gpodder/gui.py: Remove localdb-related code and adopt code for
new LocalDB code; add context menu to channel navigator (edit/delete)
* src/gpodder/libipodsync.py: Don't import "liblocaldb" module
* src/gpodder/liblocaldb.py: Removed
* src/gpodder/liblocdbreader.py: Removed
* src/gpodder/liblocdbwriter.py: Removed
* src/gpodder/liblogger.py: Add "traceback" keyword argument to the
log() function; if "True" and in debugging mode, print traceback
* src/gpodder/libpodcasts.py: Merge code from old liblocaldb and
liblocdbreader/liblocdbwriter to this module as LocalDBWriter and
LocalDBReader; customize podcastChannel to new LocalDB code
* src/gpodder/libwget.py: Remove localdb-specific code (now obsolete)
Wed, 12 Sep 2007 23:07:23 +0200 <thp@perli.net>
Fix a bug when traversing directories with loop symlinks
* src/gpodder/util.py: Don't dive into subdirectories that are
symbolic links, this is to avoid a situation where looping symlinks
result in the function dead-locking in a endless recursive loop,
thanks to Bjørn Rasmussen <bjoernr@sensewave.com> for pointing that
out and providing the necessary bug report to fix this issue
Sun, 09 Sep 2007 18:47:20 +0200 <thp@perli.net>
Mark episodes as downloaded/deleted when deleting episodes
* src/gpodder/gui.py: Rename "Mark [...] as downloaded" to "Mark [...]
as deleted" and mark episodes as downloaded when removing selected
episodes that have not been downloaded yet, as suggested by Holger
Leskien <holger leskien.com>
* src/gpodder/libpodcasts.py: Fix problem when trying to delete
episodes that have not been downloaded
Sat, 08 Sep 2007 16:45:21 +0200 <thp@perli.net>
Support for customized file names in MP3 player sync code
* src/gpodder/gui.py: Add supporting code for reading/setting
configuration options for the preferences dialog and a help display
code that displays a guide on how to write custom sync name strings
* src/gpodder/libgpodder.py: New configuration options:
custom_sync_name (holds format string) and
custom_sync_name_enabled (boolean, if the above string should be used)
* src/gpodder/libipodsync.py: Use custom sync name format string and
util's object_string_formatter() function to obtain a file name for
the synchronized episode (or default to episode.title if disabled)
* src/gpodder/libpodcasts.py: Add new property methods to podcastItem:
basename (returns the basename of the URL, without extension) and
published (returns the pubDate of the episode in YYYYMMDD format)
* src/gpodder/util.py: New object_string_formatter() method that
replaces {OBJECTNAME.ATTRNAME} substrings in a string with the
corresponding values of passed-in keyword argument objects
* data/gpodder.glade: Added preferences GUI elements
Wed, 05 Sep 2007 10:14:09 +0200 <thp@perli.net>
Check for installed python-xml package on startup (hard dependency)
* bin/gpodder: Add dependency check for PyXML
Sun, 02 Sep 2007 15:01:48 +0200 <thp@perli.net>
Fix bug with default window title in gPodder window
* src/gpodder/gui.py: Always set gPodder's default_title attribute
Sun, 02 Sep 2007 14:33:21 +0200 <thp@perli.net>
Updated Russian translation from Vladimir Zemlyakov
* data/po/ru.po: Updated
Sun, 02 Sep 2007 14:23:17 +0200 <thp@perli.net>
More sanitizing hacks for ugly feeds we don't really like
* src/gpodder/libpodcasts.py: Negotiate which enclosure to select from
multiple enclosures, if there are more than one available; skip
episodes with a buggy download URL (i.e. no supported URL scheme)
* src/gpodder/util.py: Return "(unknown)" if file size cannot be
determined from the string passed to format_filesize(); return "None"
in file_type_by_extension() if the extension is an empty string
Fri, 31 Aug 2007 23:38:01 +0200 <thp@perli.net>
Handle enclosures (or lack thereof) better if fields are missing
* src/gpodder/gui.py: Remove refetch_channel_list() function, as this
is not called anywhere from the code (uh, how did i miss that?)
* src/gpodder/libpodcasts.py: Be more liberal to enclosure tags
without length or mime type; ignore episodes without enclosures (it's
not len(enclosures) == 0, but the enclosures attribute doesn't even
exist on entries without enclosures, so make sure to check for that
Fri, 31 Aug 2007 20:03:03 +0200 <thp@perli.net>
Use Python's webbrowser module for URL opening; channel dialog clean-up
* bin/gpodder: Set version to 0.9.5+svn (this is where we are now)
* data/gpodder.glade: Remove "cancel" button from gPodderChannel
* src/gpodder/gui.py: Use "webbrowser" module for URL opening instead
of relying on "gnome-open" to be available; remove event handler for
gPodderChannel's "cancel" button
Thu, 30 Aug 2007 21:06:28 +0200 <thp@perli.net>
Dependency check for python-feedparser in bin/gpodder
* bin/gpodder: Add dependency check and warning (with exit) if
python-feedparser is not installed, as python-feedparser now is a
dependency of gPodder
Thu, 30 Aug 2007 20:51:46 +0200 <thp@perli.net>
Support for modifying DownloadHistory and PlaybackHistory in GUI
* data/gpodder.glade: Added menu items in gPodder main window
* src/gpodder/gui.py: Add menu items to treeAvailable's context menu
to toggle/set downloaded and played status on selected episodes
* src/gpodder/libgpodder.py: Add del_item() function to
DownloadHistory to support removing items from the history list;
enhance history_mark_{played,downloaded}() functions for add/delete
Thu, 30 Aug 2007 20:46:48 +0200 <thp@perli.net>
Improved pubDate parsing; episode delete bugfix
* src/gpodder/libpodcasts.py: Let feedparser parse the pubDate field
of episodes and use new function in gpodder.util to convert the parsed
pubDate to a string; bugfix for remove downloaded episode by URL
* src/gpodder/util.py: Add updated_parsed_to_rfc2822() function that
converts the "updated_parsed" field from feedparser to a RFC2822
string
Thu, 30 Aug 2007 12:03:24 +0200 <thp@perli.net>
Remove obsolete documentation in doc/dev; cosmetic changes
* data/po/Makefile: Upgrade to GPLv3
* data/po/README: Mention i18n page on gPodder's website
* doc/dev/build-deps-breezy.txt: Removed
* doc/dev/debian.txt: Removed
* doc/dev/i18n.txt: Removed
* doc/dev/porting.txt: Removed
* doc/dev/svncl.sed: Upgrade to GPLv3; modify look added and removed
files
Wed, 29 Aug 2007 20:26:50 +0200 <thp@perli.net>
Upgrade to the GNU General Public License, Version 3
* bin/gpodder: Upgrade to GPLv3
* COPYING: Upgrade to GPLv3
* doc/dev/copyright_notice: Upgrade to GPLv3
* Makefile: Upgrade to GPLv3
* README: Upgrade to GPLv3
* setup.py: Upgrade to GPLv3
* src/gpodder/*.py: Upgrade to GPLv3 (except for SimpleGladeApp and
cache, as these are LGPL or other and do not originate from gPodder)
Wed, 29 Aug 2007 19:32:22 +0200 <thp@perli.net>
Integration changes, commit and ChangeLog migration
* doc/dev/svncl.sed: Use tabs instead of 8 spaces for ChangeLog edit
* Makefile: Make $EDITOR edit "ChangeLog" directly
Wed, 29 Aug 2007 19:17:36 +0200 <thp@perli.net>
Last batch of experimental change merges (up to svn r398)
* doc/dev/tepache-howto.txt: Removed
* doc/dev/tepache: Removed
* src/gpodder/gui.py.orig: Removed
* src/gpodder/libwget.py: Send progress = 0.0 on inital status update
* src/gpodder/libpodcasts.py: Try to get episode metadata from several
different properties of the corresponding feedparser entries; warn
user when we couldn't get the episode title and try to get the episode
title from the filename of the URL if we still have not found an
episode title
* src/gpodder/libgpodder.py: Add get_device_name() that returns a
"nice" representative string of the currently selected device that can
be used to represent the device in the GUI
* src/gpodder/util.py: Return "(unknown)" string when bytesize in
format_filesize() when the size has a negative value; make
get_tree_icon() catch errors and be more corrent with icon creation;
add get_first_line() function that extracts the first line of a string
* src/gpodder/libipodsync.py: Add "divx" to list of video extensions
* src/gpodder/services.py: DownloadStatusManager has a new observer
notification: "progress-detail"; add unregister() functionality for
observers; add request_progress_detail() function that can be used to
force a "progress-detail" notification to be sent out to all relevant
observers; remove get_url_by_iter() function as it is not needed
anymore
* src/gpodder/gui.py: Clean-up after tepache dependency removal; new
GladeWidget base class that subclasses SimpleGladeApp and simplifies
class creation for our gPodder windows; add context menu to
treeAvailable; re-work play_or_download() and make it return a list of
boolean indicators on which actions can be performed on the selected
items; move show_message() and show_confirmation() to GladeWidget;
disable editing of the URL in the channel info dialog, this simplifies
code and editing the URL doesn't make so much sense anyway (adding the
new url and removing the old does the same and is easier, code-wise);
add support for cancelling downloads in the available podcasts view;
support live status view and download cancelling in the gPodderEpisode
dialog window by hooking up to DownloadStatusManager as observer
* src/gpodder/SimpleGladeApp.py: Customize for gPodder (remove usage
of weakref for keyword arguments -> properties of new object)
* bin/gpodder: We're using a experimental development version now
* data/gpodder.glade: Add progress bar and associated buttons to
gPodderEpisode dialog
* MANIFEST.in: Removed gpodder.py.orig inclusion
* Makefile: Removed support for tepache
Wed, 29 Aug 2007 19:05:57 +0200 <thp@perli.net>
More changes from the experimental branch (up to svn r382)
* src/gpodder/liblocdbreader.py: Clean-up
* src/gpodder/libwget.py: Use "gpodder.services" instead of accepting
a generic download status manager as constructor parameter; remove
downloadStatusManager class (moved to gpodder.services)
* src/gpodder/console.py: More clean-ups; use get_new_episodes()
instead of duplicating code here; simplify the code for wget version
detection
* src/gpodder/libpodcasts.py: Improve channel/episode generation from
feedparser objects (with error handling); utilize download status
manager from "gpodder.services" instead of accepting a download status
manager as parameter; clean up unneeded functions and rename some
functions to make the code more readable; use util.get_tree_icon() for
compositing a nice icon; remove the "played" column from the
treemodel; add local_filename to treemodel
* src/gpodder/liblocdbwriter.py: Clean-up
* src/gpodder/libgpodder.py: Clean-up
* src/gpodder/util.py: Add torrent_filename() function that tries to
extract the filename of the file a .torrent file contains; add
file_extension_from_url() function that returns the file extension in
a URL; add file_type_by_extension() that returns the type of a file
based on its extension; add get_tree_icon() that loads a named icon
and optionally adds a bullet to it (unplayed status indicator)
* src/gpodder/libipodsync.py: Clean-up
* src/gpodder/services.py: New module that currently contains the
improved DownloadStatusManager and a single object that servces as
download status manager for all parts of gpodder
* src/gpodder/gui.py: Only one column for status/played; use
"gpodder.services" for the download status manager; clean-up
* src/gpodder/liblocaldb.py: Clean-up
* bin/gpodder: Clean-up
* data/gpodder.glade: Clean-up; removed "show played column"
preference in gPodderProperties dialog
Wed, 29 Aug 2007 18:49:37 +0200 <thp@perli.net>
First import from experimental branch (up to svn r375)
* src/gpodder/librssreader.py: Removed in favor of python-feedparser
* src/gpodder/libwget.py: Percentage is now a float, don't set to 0
when there has been an error
* src/gpodder/console.py: Use {load,save}_channels methods; code
cleanup and simplification
* src/gpodder/cache.py: Add python-feedcache module from Doug Hellman
* src/gpodder/libpodcasts.py: Use opml and feedcache for channel list
and RSS reading; use shelve for new ChannelSettings class; clean-up
podcastChannel and podcastItem; better TreeModel generator for
podcastChannel (try to cache the model, only updates icons, etc...);
remove downloadRss method in podcastChannel; move DownloadHistory and
Playbackhistory to libgpodder; new load_channels() and save_channels()
functions to save/load the channel list to an OPML file
* src/gpodder/libgpodder.py: BIG clean-up; remove gPodderChannelWriter
and gPodderChannelReader (this is now in libpodcasts as simple
functions); add DownloadHistory and PlaybackHistory from libpodcasts;
* src/gpodder/gui.py: Use new functions for channel list
loading/saving; only update treemodel for treeAvailable when it's
really necessary
* src/gpodder/liblocaldb.py: Remove unnecessary functions that have
not been used for a while (treemodel-related); use load_channels()
instead of gPodderChannelReader
Wed, 29 Aug 2007 18:31:16 +0200 <thp@perli.net>
* ChangeLog: Older changes can be found on the gPodder website at
http://gpodder.berlios.de/releases/0.9.5/ChangeLog
|