Created
May 28, 2010 12:26
-
-
Save nzjrs/417095 to your computer and use it in GitHub Desktop.
PyGtk LCD Widget
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # Character set for the Squeezebox display | |
| 00 | |
| 00000 | |
| 00000 | |
| 00000 | |
| 00000 | |
| 00000 | |
| 00000 | |
| 00000 | |
| 01 | |
| 00000 | |
| 00000 | |
| 00000 | |
| 00000 | |
| 00000 | |
| 00000 | |
| 00000 | |
| 02 | |
| 00000 | |
| 00000 | |
| 00000 | |
| 00000 | |
| 00000 | |
| 00000 | |
| 00000 | |
| 03 | |
| 00000 | |
| 00000 | |
| 00000 | |
| 00000 | |
| 00000 | |
| 00000 | |
| 00000 | |
| 04 | |
| 00000 | |
| 00000 | |
| 00000 | |
| 00000 | |
| 00000 | |
| 00000 | |
| 00000 | |
| 05 | |
| 00000 | |
| 00000 | |
| 00000 | |
| 00000 | |
| 00000 | |
| 00000 | |
| 00000 | |
| 06 | |
| 00000 | |
| 00000 | |
| 00000 | |
| 00000 | |
| 00000 | |
| 00000 | |
| 00000 | |
| 07 | |
| 00000 | |
| 00000 | |
| 00000 | |
| 00000 | |
| 00000 | |
| 00000 | |
| 00000 | |
| 08 | |
| 00000 | |
| 00000 | |
| 00000 | |
| 00000 | |
| 00000 | |
| 00000 | |
| 00000 | |
| 09 | |
| 00000 | |
| 00000 | |
| 00000 | |
| 00000 | |
| 00000 | |
| 00000 | |
| 00000 | |
| 0a | |
| 00000 | |
| 00000 | |
| 00000 | |
| 00000 | |
| 00000 | |
| 00000 | |
| 00000 | |
| 0b | |
| 00000 | |
| 00000 | |
| 00000 | |
| 00000 | |
| 00000 | |
| 00000 | |
| 00000 | |
| 0c | |
| 00000 | |
| 00000 | |
| 00000 | |
| 00000 | |
| 00000 | |
| 00000 | |
| 00000 | |
| 0d | |
| 00000 | |
| 00000 | |
| 00000 | |
| 00000 | |
| 00000 | |
| 00000 | |
| 00000 | |
| 0e | |
| 00000 | |
| 00000 | |
| 00000 | |
| 00000 | |
| 00000 | |
| 00000 | |
| 00000 | |
| 0f | |
| 00000 | |
| 00000 | |
| 00000 | |
| 00000 | |
| 00000 | |
| 00000 | |
| 00000 | |
| 10 | |
| 10000 | |
| 10000 | |
| 10000 | |
| 10000 | |
| 10000 | |
| 10000 | |
| 10000 | |
| 11 | |
| 11000 | |
| 11000 | |
| 11000 | |
| 11000 | |
| 11000 | |
| 11000 | |
| 11000 | |
| 12 | |
| 11100 | |
| 11100 | |
| 11100 | |
| 11100 | |
| 11100 | |
| 11100 | |
| 11100 | |
| 13 | |
| 11110 | |
| 11110 | |
| 11110 | |
| 11110 | |
| 11110 | |
| 11110 | |
| 11110 | |
| 14 | |
| 11111 | |
| 11111 | |
| 11111 | |
| 11111 | |
| 11111 | |
| 11111 | |
| 11111 | |
| 15 | |
| 01111 | |
| 01111 | |
| 01111 | |
| 01111 | |
| 01111 | |
| 01111 | |
| 01111 | |
| 16 | |
| 00111 | |
| 00111 | |
| 00111 | |
| 00111 | |
| 00111 | |
| 00111 | |
| 00111 | |
| 17 | |
| 00011 | |
| 00011 | |
| 00011 | |
| 00011 | |
| 00011 | |
| 00011 | |
| 00011 | |
| 18 | |
| 00001 | |
| 00001 | |
| 00001 | |
| 00001 | |
| 00001 | |
| 00001 | |
| 00001 | |
| 19 | |
| 00100 | |
| 00110 | |
| 00101 | |
| 00101 | |
| 01101 | |
| 11100 | |
| 01100 | |
| 1a | |
| 11000 | |
| 11000 | |
| 00000 | |
| 00111 | |
| 01000 | |
| 01000 | |
| 00111 | |
| 1b | |
| 11000 | |
| 11000 | |
| 00000 | |
| 01111 | |
| 01000 | |
| 01110 | |
| 01000 | |
| 1c | |
| 00000 | |
| 00000 | |
| 11111 | |
| 01110 | |
| 00100 | |
| 00000 | |
| 00000 | |
| 1d | |
| 00000 | |
| 01000 | |
| 01100 | |
| 01110 | |
| 01100 | |
| 01000 | |
| 00000 | |
| 1e | |
| 00000 | |
| 00010 | |
| 00110 | |
| 01110 | |
| 00110 | |
| 00010 | |
| 00000 | |
| 1f | |
| 00000 | |
| 00000 | |
| 00100 | |
| 01110 | |
| 11111 | |
| 00000 | |
| 00000 | |
| 20 | |
| 00000 | |
| 00000 | |
| 00000 | |
| 00000 | |
| 00000 | |
| 00000 | |
| 00000 | |
| 21 | |
| 00100 | |
| 00100 | |
| 00100 | |
| 00100 | |
| 00000 | |
| 00000 | |
| 00100 | |
| 22 | |
| 01010 | |
| 01010 | |
| 01010 | |
| 00000 | |
| 00000 | |
| 00000 | |
| 00000 | |
| 23 | |
| 01010 | |
| 01010 | |
| 11111 | |
| 01010 | |
| 11111 | |
| 01010 | |
| 01010 | |
| 24 | |
| 00100 | |
| 01111 | |
| 10100 | |
| 01110 | |
| 00101 | |
| 11110 | |
| 00100 | |
| 25 | |
| 11000 | |
| 11001 | |
| 00010 | |
| 00100 | |
| 01000 | |
| 10011 | |
| 00011 | |
| 26 | |
| 01100 | |
| 10010 | |
| 10100 | |
| 01000 | |
| 10101 | |
| 10010 | |
| 01101 | |
| 27 | |
| 01100 | |
| 00100 | |
| 01000 | |
| 00000 | |
| 00000 | |
| 00000 | |
| 00000 | |
| 28 | |
| 00010 | |
| 00100 | |
| 01000 | |
| 01000 | |
| 01000 | |
| 00100 | |
| 00010 | |
| 29 | |
| 10000 | |
| 01000 | |
| 00100 | |
| 00100 | |
| 00100 | |
| 01000 | |
| 10000 | |
| 2a | |
| 00000 | |
| 00100 | |
| 10101 | |
| 01110 | |
| 10101 | |
| 00100 | |
| 00000 | |
| 2b | |
| 00000 | |
| 00100 | |
| 00100 | |
| 11111 | |
| 00100 | |
| 00100 | |
| 00000 | |
| 2c | |
| 00000 | |
| 00000 | |
| 00000 | |
| 00000 | |
| 01100 | |
| 00100 | |
| 01000 | |
| 2d | |
| 00000 | |
| 00000 | |
| 00000 | |
| 11111 | |
| 00000 | |
| 00000 | |
| 00000 | |
| 2e | |
| 00000 | |
| 00000 | |
| 00000 | |
| 00000 | |
| 00000 | |
| 11000 | |
| 11000 | |
| 2f | |
| 00000 | |
| 00001 | |
| 00010 | |
| 00100 | |
| 01000 | |
| 10000 | |
| 00000 | |
| 30 | |
| 01110 | |
| 10001 | |
| 10011 | |
| 10101 | |
| 11001 | |
| 10001 | |
| 01110 | |
| 31 | |
| 00100 | |
| 01100 | |
| 00100 | |
| 00100 | |
| 00100 | |
| 00100 | |
| 01110 | |
| 32 | |
| 01110 | |
| 10001 | |
| 00001 | |
| 00010 | |
| 00100 | |
| 01000 | |
| 11111 | |
| 33 | |
| 11111 | |
| 00010 | |
| 00100 | |
| 00010 | |
| 00001 | |
| 10001 | |
| 01110 | |
| 34 | |
| 00010 | |
| 00110 | |
| 01010 | |
| 10010 | |
| 11111 | |
| 00010 | |
| 00010 | |
| 35 | |
| 11111 | |
| 10000 | |
| 11110 | |
| 00001 | |
| 00001 | |
| 10001 | |
| 01110 | |
| 36 | |
| 00110 | |
| 01000 | |
| 10000 | |
| 11110 | |
| 10001 | |
| 10001 | |
| 01110 | |
| 37 | |
| 11111 | |
| 00001 | |
| 00010 | |
| 00100 | |
| 01000 | |
| 01000 | |
| 01000 | |
| 38 | |
| 01110 | |
| 10001 | |
| 10001 | |
| 01110 | |
| 10001 | |
| 10001 | |
| 01110 | |
| 39 | |
| 01110 | |
| 10001 | |
| 10001 | |
| 01111 | |
| 00001 | |
| 00010 | |
| 01100 | |
| 3a | |
| 00000 | |
| 01100 | |
| 01100 | |
| 00000 | |
| 01100 | |
| 01100 | |
| 00000 | |
| 3b | |
| 00000 | |
| 01100 | |
| 01100 | |
| 00000 | |
| 01100 | |
| 00100 | |
| 01000 | |
| 3c | |
| 00010 | |
| 00100 | |
| 01000 | |
| 10000 | |
| 01000 | |
| 00100 | |
| 00010 | |
| 3d | |
| 00000 | |
| 00000 | |
| 11111 | |
| 00000 | |
| 11111 | |
| 00000 | |
| 00000 | |
| 3e | |
| 10000 | |
| 01000 | |
| 00100 | |
| 00010 | |
| 00100 | |
| 01000 | |
| 10000 | |
| 3f | |
| 01110 | |
| 10001 | |
| 00001 | |
| 00010 | |
| 00100 | |
| 00000 | |
| 00100 | |
| 40 | |
| 01110 | |
| 10001 | |
| 00001 | |
| 01101 | |
| 10101 | |
| 10101 | |
| 01110 | |
| 41 | |
| 01110 | |
| 10001 | |
| 10001 | |
| 10001 | |
| 11111 | |
| 10001 | |
| 10001 | |
| 42 | |
| 11110 | |
| 10001 | |
| 10001 | |
| 11110 | |
| 10001 | |
| 10001 | |
| 11110 | |
| 43 | |
| 01110 | |
| 10001 | |
| 10000 | |
| 10000 | |
| 10000 | |
| 10001 | |
| 01110 | |
| 44 | |
| 11100 | |
| 10010 | |
| 10001 | |
| 10001 | |
| 10001 | |
| 10010 | |
| 11100 | |
| 45 | |
| 11111 | |
| 10000 | |
| 10000 | |
| 11110 | |
| 10000 | |
| 10000 | |
| 11111 | |
| 46 | |
| 11111 | |
| 10000 | |
| 10000 | |
| 11110 | |
| 10000 | |
| 10000 | |
| 10000 | |
| 47 | |
| 01110 | |
| 10001 | |
| 10000 | |
| 10111 | |
| 10001 | |
| 10001 | |
| 01111 | |
| 48 | |
| 10001 | |
| 10001 | |
| 10001 | |
| 11111 | |
| 10001 | |
| 10001 | |
| 10001 | |
| 49 | |
| 01110 | |
| 00100 | |
| 00100 | |
| 00100 | |
| 00100 | |
| 00100 | |
| 01110 | |
| 4a | |
| 00111 | |
| 00010 | |
| 00010 | |
| 00010 | |
| 00010 | |
| 10010 | |
| 01100 | |
| 4b | |
| 10001 | |
| 10010 | |
| 10100 | |
| 11000 | |
| 10100 | |
| 10010 | |
| 10001 | |
| 4c | |
| 10000 | |
| 10000 | |
| 10000 | |
| 10000 | |
| 10000 | |
| 10000 | |
| 11111 | |
| 4d | |
| 10001 | |
| 11011 | |
| 10101 | |
| 10101 | |
| 10001 | |
| 10001 | |
| 10001 | |
| 4e | |
| 10001 | |
| 10001 | |
| 11001 | |
| 10101 | |
| 10011 | |
| 10001 | |
| 10001 | |
| 4f | |
| 01110 | |
| 10001 | |
| 10001 | |
| 10001 | |
| 10001 | |
| 10001 | |
| 01110 | |
| 50 | |
| 11110 | |
| 10001 | |
| 10001 | |
| 11110 | |
| 10000 | |
| 10000 | |
| 10000 | |
| 51 | |
| 01110 | |
| 10001 | |
| 10001 | |
| 10001 | |
| 10101 | |
| 10010 | |
| 01101 | |
| 52 | |
| 11110 | |
| 10001 | |
| 10001 | |
| 11110 | |
| 10100 | |
| 10010 | |
| 10001 | |
| 53 | |
| 01111 | |
| 10000 | |
| 10000 | |
| 01110 | |
| 00001 | |
| 00001 | |
| 11110 | |
| 54 | |
| 11111 | |
| 00100 | |
| 00100 | |
| 00100 | |
| 00100 | |
| 00100 | |
| 00100 | |
| 55 | |
| 10001 | |
| 10001 | |
| 10001 | |
| 10001 | |
| 10001 | |
| 10001 | |
| 01110 | |
| 56 | |
| 10001 | |
| 10001 | |
| 10001 | |
| 10001 | |
| 10001 | |
| 01010 | |
| 00100 | |
| 57 | |
| 10001 | |
| 10001 | |
| 10001 | |
| 10101 | |
| 10101 | |
| 10101 | |
| 01010 | |
| 58 | |
| 10001 | |
| 10001 | |
| 01010 | |
| 00100 | |
| 01010 | |
| 10001 | |
| 10001 | |
| 59 | |
| 10001 | |
| 10001 | |
| 10001 | |
| 01010 | |
| 00100 | |
| 00100 | |
| 00100 | |
| 5a | |
| 11111 | |
| 00001 | |
| 00010 | |
| 00100 | |
| 01000 | |
| 10000 | |
| 11111 | |
| 5b | |
| 01110 | |
| 01000 | |
| 01000 | |
| 01000 | |
| 01000 | |
| 01000 | |
| 01110 | |
| 5c | |
| 10001 | |
| 01010 | |
| 11111 | |
| 00100 | |
| 11111 | |
| 00100 | |
| 00100 | |
| 5d | |
| 01110 | |
| 00010 | |
| 00010 | |
| 00010 | |
| 00010 | |
| 00010 | |
| 01110 | |
| 5e | |
| 00100 | |
| 01010 | |
| 10001 | |
| 00000 | |
| 00000 | |
| 00000 | |
| 00000 | |
| 5f | |
| 00000 | |
| 00000 | |
| 00000 | |
| 00000 | |
| 00000 | |
| 00000 | |
| 11111 | |
| 60 | |
| 01000 | |
| 00100 | |
| 00010 | |
| 00000 | |
| 00000 | |
| 00000 | |
| 00000 | |
| 61 | |
| 00000 | |
| 00000 | |
| 01110 | |
| 00001 | |
| 01111 | |
| 10001 | |
| 01111 | |
| 62 | |
| 10000 | |
| 10000 | |
| 10000 | |
| 10110 | |
| 11001 | |
| 10001 | |
| 11110 | |
| 63 | |
| 00000 | |
| 00000 | |
| 01110 | |
| 10000 | |
| 10000 | |
| 10001 | |
| 01110 | |
| 64 | |
| 00001 | |
| 00001 | |
| 00001 | |
| 01101 | |
| 10011 | |
| 10001 | |
| 01111 | |
| 65 | |
| 00000 | |
| 00000 | |
| 01110 | |
| 10001 | |
| 11111 | |
| 10000 | |
| 01110 | |
| 66 | |
| 00110 | |
| 01001 | |
| 01000 | |
| 11100 | |
| 01000 | |
| 01000 | |
| 01000 | |
| 67 | |
| 00000 | |
| 01111 | |
| 10001 | |
| 10001 | |
| 01111 | |
| 00001 | |
| 01110 | |
| 68 | |
| 10000 | |
| 10000 | |
| 10110 | |
| 11001 | |
| 10001 | |
| 10001 | |
| 10001 | |
| 69 | |
| 00000 | |
| 00100 | |
| 00000 | |
| 01100 | |
| 00100 | |
| 00100 | |
| 01110 | |
| 6a | |
| 00010 | |
| 00000 | |
| 00110 | |
| 00010 | |
| 00010 | |
| 10010 | |
| 01100 | |
| 6b | |
| 01000 | |
| 01000 | |
| 01001 | |
| 01010 | |
| 01100 | |
| 01010 | |
| 01001 | |
| 6c | |
| 01100 | |
| 00100 | |
| 00100 | |
| 00100 | |
| 00100 | |
| 00100 | |
| 01110 | |
| 6d | |
| 00000 | |
| 00000 | |
| 11010 | |
| 10101 | |
| 10101 | |
| 10001 | |
| 10001 | |
| 6e | |
| 00000 | |
| 00000 | |
| 10110 | |
| 11001 | |
| 10001 | |
| 10001 | |
| 10001 | |
| 6f | |
| 00000 | |
| 00000 | |
| 01110 | |
| 10001 | |
| 10001 | |
| 10001 | |
| 01110 | |
| 70 | |
| 00000 | |
| 00000 | |
| 11110 | |
| 10001 | |
| 11110 | |
| 10000 | |
| 10000 | |
| 71 | |
| 00000 | |
| 00000 | |
| 01101 | |
| 10011 | |
| 01111 | |
| 00001 | |
| 00001 | |
| 72 | |
| 00000 | |
| 00000 | |
| 10110 | |
| 11001 | |
| 10000 | |
| 10000 | |
| 10000 | |
| 73 | |
| 00000 | |
| 00000 | |
| 01110 | |
| 10000 | |
| 01110 | |
| 00001 | |
| 11110 | |
| 74 | |
| 01000 | |
| 01000 | |
| 11100 | |
| 01000 | |
| 01000 | |
| 01001 | |
| 00110 | |
| 75 | |
| 00000 | |
| 00000 | |
| 10001 | |
| 10001 | |
| 10001 | |
| 10011 | |
| 01101 | |
| 76 | |
| 00000 | |
| 00000 | |
| 10001 | |
| 10001 | |
| 10001 | |
| 01010 | |
| 00100 | |
| 77 | |
| 00000 | |
| 00000 | |
| 10001 | |
| 10001 | |
| 10001 | |
| 10101 | |
| 01010 | |
| 78 | |
| 00000 | |
| 00000 | |
| 10001 | |
| 01010 | |
| 00100 | |
| 01010 | |
| 10001 | |
| 79 | |
| 00000 | |
| 00000 | |
| 10001 | |
| 10001 | |
| 01111 | |
| 00001 | |
| 01110 | |
| 7a | |
| 00000 | |
| 00000 | |
| 11111 | |
| 00010 | |
| 00100 | |
| 01000 | |
| 11111 | |
| 7b | |
| 00010 | |
| 00100 | |
| 00100 | |
| 10000 | |
| 00100 | |
| 00100 | |
| 00010 | |
| 7c | |
| 00100 | |
| 00100 | |
| 00100 | |
| 00100 | |
| 00100 | |
| 00100 | |
| 00100 | |
| 7d | |
| 01000 | |
| 00100 | |
| 00100 | |
| 00010 | |
| 00100 | |
| 00100 | |
| 01000 | |
| 7e | |
| 00000 | |
| 00100 | |
| 00010 | |
| 11111 | |
| 00010 | |
| 00100 | |
| 00000 | |
| 7f | |
| 00000 | |
| 00100 | |
| 01000 | |
| 11111 | |
| 01000 | |
| 00100 | |
| 00000 | |
| 80 | |
| 01010 | |
| 00000 | |
| 00100 | |
| 01010 | |
| 10001 | |
| 11111 | |
| 10001 | |
| 81 | |
| 00100 | |
| 00000 | |
| 00100 | |
| 01010 | |
| 10001 | |
| 11111 | |
| 10001 | |
| 82 | |
| 00100 | |
| 01010 | |
| 00100 | |
| 01010 | |
| 10001 | |
| 11111 | |
| 10001 | |
| 83 | |
| 00010 | |
| 00100 | |
| 01110 | |
| 00001 | |
| 01111 | |
| 10001 | |
| 01111 | |
| 84 | |
| 00100 | |
| 00000 | |
| 01110 | |
| 00001 | |
| 01111 | |
| 10001 | |
| 01111 | |
| 85 | |
| 11111 | |
| 11000 | |
| 11000 | |
| 11111 | |
| 11000 | |
| 11000 | |
| 11111 | |
| 86 | |
| 10001 | |
| 01110 | |
| 10001 | |
| 10001 | |
| 10001 | |
| 10001 | |
| 01110 | |
| 87 | |
| 00000 | |
| 01010 | |
| 00000 | |
| 01110 | |
| 10001 | |
| 10001 | |
| 01110 | |
| 88 | |
| 00001 | |
| 01110 | |
| 10011 | |
| 10101 | |
| 11001 | |
| 01110 | |
| 10000 | |
| 89 | |
| 00000 | |
| 00010 | |
| 01110 | |
| 10101 | |
| 10101 | |
| 01110 | |
| 01000 | |
| 8a | |
| 10001 | |
| 00000 | |
| 10001 | |
| 10001 | |
| 10001 | |
| 10001 | |
| 01110 | |
| 8b | |
| 00000 | |
| 01010 | |
| 00000 | |
| 10001 | |
| 10001 | |
| 10011 | |
| 01101 | |
| 8c | |
| 00000 | |
| 10000 | |
| 01000 | |
| 00100 | |
| 00010 | |
| 00001 | |
| 00000 | |
| 8d | |
| 00001 | |
| 00010 | |
| 11111 | |
| 00100 | |
| 11111 | |
| 01000 | |
| 10000 | |
| 8e | |
| 00000 | |
| 01000 | |
| 10101 | |
| 10101 | |
| 00010 | |
| 00000 | |
| 00000 | |
| 8f | |
| 01111 | |
| 10000 | |
| 01110 | |
| 10001 | |
| 01110 | |
| 00001 | |
| 11110 | |
| 90 | |
| 01110 | |
| 10100 | |
| 10100 | |
| 11111 | |
| 10100 | |
| 10100 | |
| 10111 | |
| 91 | |
| 00000 | |
| 00000 | |
| 11010 | |
| 00101 | |
| 11111 | |
| 10100 | |
| 01011 | |
| 92 | |
| 00110 | |
| 01001 | |
| 01000 | |
| 11110 | |
| 01000 | |
| 01000 | |
| 11111 | |
| 93 | |
| 11100 | |
| 10010 | |
| 11100 | |
| 10010 | |
| 10111 | |
| 10010 | |
| 10011 | |
| 94 | |
| 00000 | |
| 01110 | |
| 11111 | |
| 11111 | |
| 11111 | |
| 01110 | |
| 00000 | |
| 95 | |
| 00000 | |
| 01110 | |
| 10001 | |
| 10001 | |
| 10001 | |
| 01110 | |
| 00000 | |
| 96 | |
| 00000 | |
| 00100 | |
| 01110 | |
| 11111 | |
| 01110 | |
| 00100 | |
| 00000 | |
| 97 | |
| 00000 | |
| 00100 | |
| 01010 | |
| 10001 | |
| 01010 | |
| 00100 | |
| 00000 | |
| 98 | |
| 00100 | |
| 00100 | |
| 00100 | |
| 00000 | |
| 00100 | |
| 00100 | |
| 00100 | |
| 99 | |
| 01111 | |
| 10000 | |
| 10000 | |
| 10000 | |
| 01111 | |
| 00100 | |
| 01000 | |
| 9a | |
| 00000 | |
| 00001 | |
| 00011 | |
| 00101 | |
| 01001 | |
| 10001 | |
| 11111 | |
| 9b | |
| 00010 | |
| 00100 | |
| 01000 | |
| 00100 | |
| 00010 | |
| 00000 | |
| 11111 | |
| 9c | |
| 01000 | |
| 00100 | |
| 00010 | |
| 00100 | |
| 01000 | |
| 00000 | |
| 11111 | |
| 9d | |
| 00001 | |
| 00001 | |
| 00101 | |
| 01001 | |
| 11111 | |
| 01000 | |
| 00100 | |
| 9e | |
| 00100 | |
| 01110 | |
| 10101 | |
| 00100 | |
| 00100 | |
| 00100 | |
| 00100 | |
| 9f | |
| 00100 | |
| 00100 | |
| 00100 | |
| 00100 | |
| 10101 | |
| 01110 | |
| 00100 | |
| a0 | |
| 00000 | |
| 00000 | |
| 00000 | |
| 00000 | |
| 00000 | |
| 00000 | |
| 00000 | |
| a1 | |
| 00000 | |
| 00000 | |
| 00000 | |
| 00000 | |
| 11100 | |
| 10100 | |
| 11100 | |
| a2 | |
| 00111 | |
| 00100 | |
| 00100 | |
| 00100 | |
| 00000 | |
| 00000 | |
| 00000 | |
| a3 | |
| 00000 | |
| 00000 | |
| 00000 | |
| 00100 | |
| 00100 | |
| 00100 | |
| 11100 | |
| a4 | |
| 00000 | |
| 00000 | |
| 00000 | |
| 00000 | |
| 10000 | |
| 01000 | |
| 00100 | |
| a5 | |
| 00000 | |
| 00000 | |
| 00000 | |
| 01100 | |
| 01100 | |
| 00000 | |
| 00000 | |
| a6 | |
| 00000 | |
| 11111 | |
| 00001 | |
| 11111 | |
| 00001 | |
| 00010 | |
| 00100 | |
| a7 | |
| 00000 | |
| 00000 | |
| 11111 | |
| 00001 | |
| 00110 | |
| 00100 | |
| 01000 | |
| a8 | |
| 00000 | |
| 00000 | |
| 00010 | |
| 00100 | |
| 01100 | |
| 10100 | |
| 00100 | |
| a9 | |
| 00000 | |
| 00000 | |
| 00100 | |
| 11111 | |
| 10001 | |
| 00001 | |
| 00110 | |
| aa | |
| 00000 | |
| 00000 | |
| 00000 | |
| 11111 | |
| 00100 | |
| 00100 | |
| 11111 | |
| ab | |
| 00000 | |
| 00000 | |
| 00010 | |
| 11111 | |
| 00110 | |
| 01010 | |
| 10010 | |
| ac | |
| 00000 | |
| 00000 | |
| 01000 | |
| 11111 | |
| 01001 | |
| 01010 | |
| 01000 | |
| ad | |
| 00000 | |
| 00000 | |
| 00000 | |
| 01110 | |
| 00010 | |
| 00010 | |
| 11111 | |
| ae | |
| 00000 | |
| 00000 | |
| 11110 | |
| 00010 | |
| 11110 | |
| 00010 | |
| 11110 | |
| af | |
| 00000 | |
| 00000 | |
| 00000 | |
| 10101 | |
| 101010 | |
| 00001 | |
| 00110 | |
| b0 | |
| 00000 | |
| 00000 | |
| 00000 | |
| 11111 | |
| 00000 | |
| 00000 | |
| 00000 | |
| b1 | |
| 11111 | |
| 00001 | |
| 00101 | |
| 00110 | |
| 00100 | |
| 00100 | |
| 01000 | |
| b2 | |
| 00001 | |
| 00010 | |
| 00100 | |
| 01100 | |
| 10100 | |
| 00100 | |
| 00100 | |
| b3 | |
| 00100 | |
| 11111 | |
| 10001 | |
| 10001 | |
| 00001 | |
| 00010 | |
| 00100 | |
| b4 | |
| 00000 | |
| 11111 | |
| 00100 | |
| 00100 | |
| 00100 | |
| 00100 | |
| 11111 | |
| b5 | |
| 00010 | |
| 11111 | |
| 00010 | |
| 00110 | |
| 01010 | |
| 10010 | |
| 00010 | |
| b6 | |
| 01000 | |
| 11111 | |
| 01001 | |
| 01001 | |
| 01001 | |
| 01001 | |
| 10010 | |
| b7 | |
| 00100 | |
| 11111 | |
| 00100 | |
| 11111 | |
| 00100 | |
| 00100 | |
| 00100 | |
| b8 | |
| 00000 | |
| 01111 | |
| 01001 | |
| 10001 | |
| 00001 | |
| 00010 | |
| 01100 | |
| b9 | |
| 01000 | |
| 01111 | |
| 10010 | |
| 00010 | |
| 00010 | |
| 00010 | |
| 00100 | |
| ba | |
| 00000 | |
| 11111 | |
| 00001 | |
| 00001 | |
| 00001 | |
| 00001 | |
| 11111 | |
| bb | |
| 01010 | |
| 11111 | |
| 01010 | |
| 01010 | |
| 00010 | |
| 00100 | |
| 01000 | |
| bc | |
| 00000 | |
| 11000 | |
| 00001 | |
| 11001 | |
| 00001 | |
| 00010 | |
| 11100 | |
| bd | |
| 00000 | |
| 11111 | |
| 00001 | |
| 00010 | |
| 00100 | |
| 01010 | |
| 10001 | |
| be | |
| 01000 | |
| 11111 | |
| 01001 | |
| 01010 | |
| 01000 | |
| 01000 | |
| 00111 | |
| bf | |
| 00000 | |
| 10001 | |
| 10001 | |
| 01001 | |
| 00001 | |
| 00010 | |
| 01100 | |
| c0 | |
| 00000 | |
| 01111 | |
| 01001 | |
| 10101 | |
| 00011 | |
| 00010 | |
| 11000 | |
| c1 | |
| 00010 | |
| 11100 | |
| 00100 | |
| 11111 | |
| 00100 | |
| 00100 | |
| 01000 | |
| c2 | |
| 00000 | |
| 10101 | |
| 10101 | |
| 10101 | |
| 00001 | |
| 00010 | |
| 00100 | |
| c3 | |
| 01110 | |
| 00000 | |
| 11111 | |
| 00100 | |
| 00100 | |
| 00100 | |
| 01000 | |
| c4 | |
| 01000 | |
| 01000 | |
| 01000 | |
| 01100 | |
| 01010 | |
| 01000 | |
| 01000 | |
| c5 | |
| 00100 | |
| 00100 | |
| 11111 | |
| 00100 | |
| 00100 | |
| 01000 | |
| 10000 | |
| c6 | |
| 00000 | |
| 01110 | |
| 00000 | |
| 00000 | |
| 00000 | |
| 00000 | |
| 11111 | |
| c7 | |
| 00000 | |
| 11111 | |
| 00001 | |
| 01010 | |
| 00100 | |
| 01010 | |
| 10000 | |
| c8 | |
| 00100 | |
| 11111 | |
| 00010 | |
| 00100 | |
| 01110 | |
| 10101 | |
| 00100 | |
| c9 | |
| 00010 | |
| 00010 | |
| 00010 | |
| 00010 | |
| 00010 | |
| 00100 | |
| 01000 | |
| ca | |
| 00000 | |
| 00100 | |
| 00010 | |
| 10001 | |
| 10001 | |
| 10001 | |
| 10001 | |
| cb | |
| 10000 | |
| 10000 | |
| 11111 | |
| 10000 | |
| 10000 | |
| 10000 | |
| 01111 | |
| cc | |
| 00000 | |
| 11111 | |
| 00001 | |
| 00001 | |
| 00001 | |
| 00010 | |
| 01100 | |
| cd | |
| 00000 | |
| 01000 | |
| 10100 | |
| 00010 | |
| 00001 | |
| 00001 | |
| 00000 | |
| ce | |
| 00100 | |
| 11111 | |
| 00100 | |
| 00100 | |
| 10101 | |
| 10101 | |
| 00100 | |
| cf | |
| 00000 | |
| 11111 | |
| 00001 | |
| 00001 | |
| 01010 | |
| 00100 | |
| 00010 | |
| d0 | |
| 00000 | |
| 01110 | |
| 00000 | |
| 01110 | |
| 00000 | |
| 01110 | |
| 00000 | |
| d1 | |
| 00000 | |
| 00100 | |
| 01000 | |
| 10000 | |
| 10001 | |
| 11111 | |
| 00001 | |
| d2 | |
| 00000 | |
| 00001 | |
| 00001 | |
| 01010 | |
| 00100 | |
| 01010 | |
| 10000 | |
| d3 | |
| 00000 | |
| 11111 | |
| 01000 | |
| 11111 | |
| 01000 | |
| 01000 | |
| 00111 | |
| d4 | |
| 01000 | |
| 01000 | |
| 11111 | |
| 01001 | |
| 01010 | |
| 01000 | |
| 01000 | |
| d5 | |
| 00000 | |
| 01110 | |
| 00010 | |
| 00010 | |
| 00010 | |
| 00010 | |
| 11111 | |
| d6 | |
| 00000 | |
| 11111 | |
| 00001 | |
| 11111 | |
| 00001 | |
| 00001 | |
| 11111 | |
| d7 | |
| 01110 | |
| 00000 | |
| 11111 | |
| 00001 | |
| 00001 | |
| 00010 | |
| 00100 | |
| d8 | |
| 10010 | |
| 10010 | |
| 10010 | |
| 10010 | |
| 00010 | |
| 00100 | |
| 01000 | |
| d9 | |
| 00000 | |
| 00100 | |
| 10100 | |
| 10100 | |
| 10101 | |
| 10101 | |
| 10110 | |
| da | |
| 00000 | |
| 10000 | |
| 10000 | |
| 10001 | |
| 10010 | |
| 10100 | |
| 11000 | |
| db | |
| 00000 | |
| 11111 | |
| 10001 | |
| 10001 | |
| 10001 | |
| 10001 | |
| 11111 | |
| dc | |
| 00000 | |
| 11111 | |
| 10001 | |
| 10001 | |
| 00001 | |
| 00010 | |
| 00100 | |
| dd | |
| 00000 | |
| 11000 | |
| 00000 | |
| 00001 | |
| 00001 | |
| 00010 | |
| 11100 | |
| de | |
| 00100 | |
| 10010 | |
| 01000 | |
| 00000 | |
| 00000 | |
| 00000 | |
| 00000 | |
| df | |
| 11100 | |
| 10100 | |
| 11100 | |
| 00000 | |
| 00000 | |
| 00000 | |
| 00000 | |
| e0 | |
| 00000 | |
| 00000 | |
| 01001 | |
| 10101 | |
| 10010 | |
| 10010 | |
| 01101 | |
| e1 | |
| 01010 | |
| 00000 | |
| 01110 | |
| 00001 | |
| 01111 | |
| 10001 | |
| 01111 | |
| e2 | |
| 00000 | |
| 01110 | |
| 10001 | |
| 11110 | |
| 10001 | |
| 11110 | |
| 10000 | |
| e3 | |
| 00000 | |
| 00000 | |
| 01110 | |
| 10000 | |
| 01100 | |
| 10001 | |
| 01110 | |
| e4 | |
| 00000 | |
| 10001 | |
| 10001 | |
| 10011 | |
| 11101 | |
| 10000 | |
| 10000 | |
| e5 | |
| 00000 | |
| 00000 | |
| 01111 | |
| 10100 | |
| 10010 | |
| 10001 | |
| 01110 | |
| e6 | |
| 00000 | |
| 00110 | |
| 01001 | |
| 10001 | |
| 11110 | |
| 10000 | |
| 10000 | |
| e7 | |
| 00000 | |
| 00000 | |
| 01111 | |
| 10001 | |
| 01111 | |
| 00001 | |
| 01110 | |
| e8 | |
| 00000 | |
| 00000 | |
| 00111 | |
| 00100 | |
| 00100 | |
| 10100 | |
| 01000 | |
| e9 | |
| 00010 | |
| 11010 | |
| 00010 | |
| 00000 | |
| 00000 | |
| 00000 | |
| 00000 | |
| ea | |
| 00000 | |
| 00010 | |
| 00000 | |
| 00010 | |
| 00010 | |
| 10010 | |
| 01100 | |
| eb | |
| 10100 | |
| 01000 | |
| 10100 | |
| 00000 | |
| 00000 | |
| 00000 | |
| 00000 | |
| ec | |
| 00000 | |
| 00100 | |
| 01110 | |
| 10100 | |
| 10101 | |
| 01110 | |
| 00100 | |
| ed | |
| 01000 | |
| 01000 | |
| 11100 | |
| 01000 | |
| 11100 | |
| 01000 | |
| 01111 | |
| ee | |
| 01110 | |
| 00000 | |
| 10110 | |
| 11001 | |
| 10001 | |
| 10001 | |
| 10001 | |
| ef | |
| 00000 | |
| 01010 | |
| 00000 | |
| 01110 | |
| 10001 | |
| 10001 | |
| 01110 | |
| f0 | |
| 00000 | |
| 10110 | |
| 11001 | |
| 10001 | |
| 11110 | |
| 10000 | |
| 10000 | |
| f1 | |
| 00000 | |
| 01101 | |
| 10011 | |
| 10001 | |
| 01111 | |
| 00001 | |
| 00001 | |
| f2 | |
| 00000 | |
| 01110 | |
| 10001 | |
| 11111 | |
| 10001 | |
| 10001 | |
| 01110 | |
| f3 | |
| 00000 | |
| 00000 | |
| 00000 | |
| 01011 | |
| 10101 | |
| 11010 | |
| 00000 | |
| f4 | |
| 00000 | |
| 00000 | |
| 01110 | |
| 10001 | |
| 10001 | |
| 01010 | |
| 11011 | |
| f5 | |
| 01010 | |
| 00000 | |
| 10001 | |
| 10001 | |
| 10001 | |
| 10011 | |
| 01101 | |
| f6 | |
| 11111 | |
| 10000 | |
| 01000 | |
| 00100 | |
| 01000 | |
| 10000 | |
| 11111 | |
| f7 | |
| 00000 | |
| 00000 | |
| 11111 | |
| 01010 | |
| 01010 | |
| 01010 | |
| 10011 | |
| f8 | |
| 11111 | |
| 00000 | |
| 10001 | |
| 01010 | |
| 00100 | |
| 01010 | |
| 10001 | |
| f9 | |
| 00000 | |
| 00000 | |
| 10001 | |
| 10001 | |
| 01111 | |
| 00001 | |
| 01110 | |
| fa | |
| 00000 | |
| 00001 | |
| 11110 | |
| 00100 | |
| 11111 | |
| 00100 | |
| 00100 | |
| fb | |
| 00000 | |
| 00000 | |
| 11111 | |
| 01000 | |
| 01111 | |
| 01001 | |
| 10001 | |
| fc | |
| 00000 | |
| 00000 | |
| 11111 | |
| 10101 | |
| 11111 | |
| 10001 | |
| 10001 | |
| fd | |
| 00000 | |
| 00100 | |
| 00000 | |
| 11111 | |
| 00000 | |
| 00100 | |
| 00000 | |
| fe | |
| 00000 | |
| 00000 | |
| 00000 | |
| 00000 | |
| 00000 | |
| 00000 | |
| 00000 | |
| ff | |
| 11111 | |
| 11111 | |
| 11111 | |
| 11111 | |
| 11111 | |
| 11111 | |
| 11111 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #!/usr/bin/python | |
| # Python widget that simulates an LCD dot-matrix display | |
| # like those found on stereo equipment. Based on gslimp3 | |
| # | |
| # Copyright (C) 2005 Gerome Fournier <jefke(at)free.fr> | |
| # Copyright (C) 2008 John Stowers <[email protected]> | |
| # | |
| # This program is free software; you can redistribute it and/or modify | |
| # it under the terms of the GNU General Public License as published by | |
| # the Free Software Foundation; either version 2 of the License, or | |
| # (at your option) any later version. | |
| # | |
| # This program is distributed in the hope that it will be useful, | |
| # but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
| # GNU General Public License for more details. | |
| # | |
| # You should have received a copy of the GNU General Public License | |
| # along with this program; if not, write to the Free Software | |
| # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
| import gtk | |
| import gtk.glade | |
| import sys | |
| import signal | |
| import struct | |
| import socket | |
| import random | |
| _CHARS_FILENAME = "lcd_chars.txt" | |
| _KEY_MAPPING = { | |
| "0": '0', | |
| "1": '1', | |
| "2": '2', | |
| "3": '3', | |
| "4": '4', | |
| "5": '5', | |
| "6": '6', | |
| "7": '7', | |
| "8": '8', | |
| "9": '9', | |
| "KP_0": '0', | |
| "KP_1": '1', | |
| "KP_2": '2', | |
| "KP_3": '3', | |
| "KP_4": '4', | |
| "KP_5": '5', | |
| "KP_6": '6', | |
| "KP_7": '7', | |
| "KP_8": '8', | |
| "KP_9": '9', | |
| "UP": 'UP', | |
| "RIGHT": 'RIGHT', | |
| "LEFT": 'LEFT', | |
| "DOWN": 'DOWN', | |
| "PAGE_UP": 'VOLUP', | |
| "PAGE_DOWN": 'VOLDOWN', | |
| "HOME": 'NOW_PLAYING', | |
| "RETURN": 'PLAY', | |
| "KP_ENTER": 'PLAY', | |
| "SPACE": 'PAUSE', | |
| "BRACKETLEFT": 'REW', | |
| "BRACKETRIGHT": 'FWD', | |
| "PLUS": 'ADD', | |
| "KP_ADD": 'ADD', | |
| "SLASH": 'SEARCH', | |
| "KP_DIVIDE": 'SEARCH', | |
| "A": 'SLEEP', | |
| "B": 'BRIGHTNESS', | |
| "F": 'SIZE', | |
| "R": 'REPEAT', | |
| "S": 'SHUFFLE', | |
| } | |
| class LCDWidget: | |
| "GTK+ LCD Widget" | |
| def __init__(self, widget, rows, cols): | |
| "Instantiate a LCD widget" | |
| self.rows = rows | |
| self.cols = cols | |
| self._area = widget | |
| self._pix = None | |
| self._table = {} | |
| self._area.connect("configure-event", self._configure_cb) | |
| self._area.connect("expose-event", self._expose_cb) | |
| def set_zoom_factor(self, factor): | |
| "Set the zoom factor" | |
| self._factor = factor | |
| self._border = 5 | |
| self._cborder = 3*factor | |
| self._cwidth = 9*factor | |
| self._cheight = 13*factor | |
| self._width = 2*self._border + \ | |
| (self._cwidth+self._cborder)*self.cols + self._cborder | |
| self._height = 2*self._border + \ | |
| (self._cheight+self._cborder)*self.rows + self._cborder | |
| self._area.set_size_request(self._width, self._height) | |
| def get_zoom_factor(self): | |
| return self._factor | |
| def refresh(self): | |
| "Refresh the LCD widget" | |
| self._area.queue_draw_area(0, 0, self._width, self._height) | |
| def draw_char(self, row, col, charindex): | |
| """Draw the character stored at position 'charindex' in the internal | |
| character definition table, on the LCD widget | |
| """ | |
| if not self._pix: | |
| return | |
| x = col * (self._cwidth+self._cborder) + self._border + self._cborder | |
| y = row * (self._cheight+self._cborder) + self._border + self._cborder | |
| self._pix.draw_drawable(self._back, self._table[charindex], \ | |
| 0, 0, x, y, self._cwidth, self._cheight) | |
| def set_brightness_percentage(self, percentage): | |
| fg_colors = { | |
| 100: "#00ff96", | |
| 75: "#00d980", | |
| 50: "#00b269", | |
| 25: "#008c53", | |
| 0: "#303030" | |
| } | |
| if percentage not in fg_colors.keys(): | |
| return | |
| if hasattr(self, "_brightness_percentage") \ | |
| and self._brightness_percentage == percentage: | |
| return | |
| self._brightness_percentage = percentage | |
| self._set_colors(["#000000", "#303030", fg_colors[percentage]]) | |
| self._load_font_definition() | |
| def get_brightness_percentage(self): | |
| return self._brightness_percentage | |
| def clear(self): | |
| "Clear the LCD display" | |
| for row in range(self.rows): | |
| for col in range(self.cols): | |
| self.draw_char(row, col, 32) | |
| self.refresh() | |
| def set_button_press_event_cb(self, cb): | |
| "Setup a callback when a mouse button is pressed on the LCD display" | |
| self._area.add_events(gtk.gdk.BUTTON_PRESS_MASK) | |
| self._area.connect("button_press_event", cb) | |
| def set_scroll_event_cb(self, cb): | |
| "Setup a callback when wheel mouse is used on the LCD display" | |
| self._area.connect("scroll_event", cb) | |
| def create_char(self, charindex, shape): | |
| """Insert a new char in the character table definition, | |
| at position 'charindex', based on 'shape' | |
| """ | |
| pix = gtk.gdk.Pixmap(self._area.window, self._cwidth, self._cheight) | |
| pix.draw_rectangle(self._back, True, 0, 0, self._cwidth, self._cheight) | |
| for x in range(5): | |
| for y in range(7): | |
| pix.draw_rectangle(self._charbg, True, \ | |
| x*2*self._factor, y*2*self._factor, \ | |
| self._factor, self._factor) | |
| for index in range(35): | |
| if shape[index] == "1": | |
| row = index / 5 | |
| col = index - row*5 | |
| pix.draw_rectangle(self._charfg, True, \ | |
| col*2*self._factor, row*2*self._factor, \ | |
| self._factor, self._factor) | |
| self._table[charindex] = pix | |
| def print_line(self, string): | |
| "Print a single line on the LCD display" | |
| self.clear() | |
| for i in range(len(string[:self.cols])): | |
| self.draw_char(0, i, ord(string[i])) | |
| self.refresh() | |
| def _configure_cb(self, widget, event): | |
| x, y, width, height = widget.get_allocation() | |
| self._pix = gtk.gdk.Pixmap(widget.window, width, height) | |
| self.set_brightness_percentage(100) | |
| self._pix.draw_rectangle(self._back, True, 0, 0, width, height) | |
| self._load_font_definition() | |
| self.clear() | |
| return True | |
| def _expose_cb(self, widget, event): | |
| if self._pix: | |
| widget.window.draw_drawable(self._back, self._pix, 0, 0, 0, 0, \ | |
| self._width, self._height) | |
| return False | |
| def _set_colors(self, colors): | |
| for widget, color in zip(["_back", "_charbg", "_charfg"], colors): | |
| exec "self.%s = gtk.gdk.GC(self._pix)" % widget | |
| exec "self.%s.set_rgb_fg_color(gtk.gdk.color_parse('%s'))" \ | |
| % (widget, color) | |
| def _load_font_definition(self): | |
| try: | |
| file = open(_CHARS_FILENAME) | |
| except IOError: | |
| print >>sys.stderr, "Unable to open font characters definition '%s'" \ | |
| % _CHARS_FILENAME | |
| sys.exit(1) | |
| index = 1 | |
| shape = "" | |
| for line in file.readlines(): | |
| line = line.rstrip() | |
| if not line or line[0] == "#": | |
| continue | |
| if index == 1: | |
| char_index = int(line, 16) | |
| else: | |
| shape = ''.join([shape, line]) | |
| index += 1 | |
| if index == 9: | |
| self.create_char(char_index, shape) | |
| index = 1 | |
| shape = "" | |
| class Slimp3LCD(LCDWidget): | |
| "An LCD display abble to parse Slimp3 LCD display packets" | |
| _CODE_DELAY = 0 | |
| _CODE_CMD = 2 | |
| _CODE_DATA = 3 | |
| _CMD_CLEAR = 0 | |
| _CMD_HOME = 1 | |
| _CMD_MODE = 2 | |
| _CMD_DISPLAY = 3 | |
| _CMD_SHIFT = 4 | |
| _CMD_FUNC_SET = 5 | |
| _CMD_CG_ADDR = 6 | |
| _CMD_DD_ADDR = 7 | |
| def parse_lcd_packet(self, lcd_packet): | |
| "Parse a SLIMP3 LCD packet" | |
| self.addr = 0 | |
| self.shift = 1 | |
| i = 0 | |
| while i < len(lcd_packet)/2: | |
| chunk = socket.ntohs(struct.unpack("H", lcd_packet[i*2:i*2+2])[0]) | |
| code = (chunk & 0xFF00) >> 8 | |
| cmd = chunk & 0x00FF | |
| if code == self._CODE_DELAY: | |
| pass | |
| elif code == self._CODE_CMD: | |
| i += self._handle_command(cmd, lcd_packet[i*2:]) | |
| elif code == self._CODE_DATA: | |
| row = self.addr / self.cols | |
| col = self.addr - self.cols*row | |
| self.draw_char(row, col, cmd) | |
| self._move_cursor(self.shift) | |
| i += 1 | |
| self.refresh() | |
| def _handle_command(self, cmd, string): | |
| "Handle LCD commands" | |
| if cmd >> self._CMD_CLEAR == 1: | |
| self.clear() | |
| self.addr = 0 | |
| self.shift = 1 | |
| elif cmd >> self._CMD_HOME == 1: | |
| self.addr = 0 | |
| elif cmd >> self._CMD_MODE == 1: | |
| if cmd & 2 != 0: | |
| self.shift = 1 | |
| else: | |
| self.shift = -1 | |
| elif cmd >> self._CMD_DISPLAY == 1: | |
| pass | |
| elif cmd >> self._CMD_SHIFT == 1: | |
| if cmd & 0x04: | |
| self.move_cursor(-1) | |
| else: | |
| self.move_cursor(1) | |
| elif cmd >> self._CMD_FUNC_SET == 1: | |
| return self._handle_function_set(cmd, string[2:4]) | |
| elif cmd >> self._CMD_CG_ADDR == 1: | |
| return self._handle_char_definition(cmd, string[2:16]) | |
| elif cmd >> self._CMD_DD_ADDR == 1: | |
| pass | |
| return 0 | |
| def _handle_function_set(self, cmd, string): | |
| "Handle Brightness stuff" | |
| if ord(string[0]) == 3: | |
| self.set_brightness_percentage(100 - 25 * ord(string[1])) | |
| return 1 | |
| else: | |
| return 0 | |
| def _handle_char_definition(self, char, string): | |
| "Create a char as defined by 'string'" | |
| if len(string) != 14: | |
| print >>sys.stderr, "Character definition has a wrong size!" | |
| return 0 | |
| shape = [' '] * 35 | |
| index = (0x3f & char) >> 3; | |
| for i in range(7): | |
| line = ord(string[2*i + 1]) | |
| for j in range(5): | |
| if 1 & (line >> (4 - j)): | |
| shape[i*5+j] = "1" | |
| self.create_char(index, shape) | |
| # defining a new char consume 7 extra command codes | |
| return 7 | |
| def _move_cursor(self, shift): | |
| self.addr += shift | |
| if self.addr < 0: | |
| self.addr = 0 | |
| elif self.addr > self.rows * self.cols - 1: | |
| self.addr = self.rows * self.cols - 1 | |
| class Slimp3Gui: | |
| "Main GUI" | |
| def __init__(self): | |
| "Instantiate the application" | |
| self._setup_widgets() | |
| self._set_zoom_factor(1) | |
| def run(self): | |
| "Start the application" | |
| try: | |
| signal.signal(signal.SIGINT, self._quit) | |
| signal.signal(signal.SIGTERM, self._quit) | |
| self._window.show_all() | |
| self.print_bollocks() | |
| gtk.main() | |
| except KeyboardInterrupt: | |
| self._quit() | |
| except: | |
| raise | |
| def _quit(self, *args): | |
| gtk.main_quit() | |
| def _setup_widgets(self): | |
| self._window = gtk.Window() | |
| self._window.hide() | |
| self._window.connect("destroy", self._quit) | |
| widget = gtk.DrawingArea() | |
| self._window.add(widget) | |
| self.lcd_display = Slimp3LCD(widget, 2, 40) | |
| self.lcd_display.set_button_press_event_cb(self.button_press_cb) | |
| self.lcd_display.set_scroll_event_cb(self.scroll_event_cb) | |
| def button_press_cb(self, widget, event): | |
| self.print_bollocks(start=random.randint(16,30)) | |
| return True | |
| def scroll_event_cb(self, widget, event): | |
| change = 0 | |
| if (event.state & gtk.gdk.CONTROL_MASK) == gtk.gdk.CONTROL_MASK: | |
| if event.direction == gtk.gdk.SCROLL_UP: | |
| change = 25 | |
| elif event.direction == gtk.gdk.SCROLL_DOWN: | |
| change = -25 | |
| p = self.lcd_display.get_brightness_percentage() | |
| self._set_brightness_percentage(p+change) | |
| else: | |
| if event.direction == gtk.gdk.SCROLL_UP: | |
| change = 1 | |
| elif event.direction == gtk.gdk.SCROLL_DOWN: | |
| change = -1 | |
| z = self.lcd_display.get_zoom_factor() | |
| self._set_zoom_factor(z+change) | |
| self.print_bollocks() | |
| return True | |
| def _set_zoom_factor(self, factor): | |
| if factor < 1: | |
| factor = 1 | |
| if factor > 2: | |
| factor = 2 | |
| self.lcd_display.set_zoom_factor(factor) | |
| def _set_brightness_percentage(self, percent): | |
| if percent < 0: | |
| percent = 0 | |
| if percent > 100: | |
| percent = 100 | |
| self.lcd_display.set_brightness_percentage(percent) | |
| def print_bollocks(self, start=16): | |
| self.lcd_display.clear() | |
| self.lcd_display.print_line("ABCDEFGHIJKLMNOPabcdefghij") | |
| for i in range(0,40): | |
| self.lcd_display.draw_char(1,i,start+i) | |
| self.lcd_display.refresh() | |
| if __name__ == "__main__": | |
| if len(sys.argv) > 1: | |
| print >>sys.stderr, "Usage: %s\nSlimp3 client written in python." \ | |
| % sys.argv[0] | |
| sys.exit(1) | |
| app = Slimp3Gui() | |
| app.run() | |
| # vim: ts=4 sw=4 noet |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment