Merge lp:~rockstar/entertainer/documentation-cleanup into lp:entertainer
- documentation-cleanup
- Merge into trunk
Status: | Merged |
---|---|
Merged at revision: | not available |
Proposed branch: | lp:~rockstar/entertainer/documentation-cleanup |
Merge into: | lp:entertainer |
Diff against target: | None lines |
To merge this branch: | bzr merge lp:~rockstar/entertainer/documentation-cleanup |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Matt Layman | Approve | ||
Review via email: mp+3291@code.launchpad.net |
Commit message
Description of the change
Paul Hummer (rockstar) wrote : | # |
Matt Layman (mblayman) wrote : | # |
1) I don't understand why the to_dict stuff had to be merged in this branch. It seem unnecessary.
2) There is still a developer_
3) Do we really need the user_guide.tex? It's outdated (it still refers to the 0.1 release); it's basically unmaintained; and we maintain the wiki.
4) The dependency png is basically unreadable. It's interesting to see the web of relationships, but it doesn't have the resolution to actually tell what we're looking at. Any tips for installing sfood to play around with it?
Those issues aside, the branch seems fine to me.
Matt Layman (mblayman) wrote : | # |
"1) I don't understand why the to_dict stuff had to be merged in this branch. It seem unnecessary.
2) There is still a developer_
3) Do we really need the user_guide.tex? It's outdated (it still refers to the 0.1 release); it's basically unmaintained; and we maintain the wiki.
4) The dependency png is basically unreadable. It's interesting to see the web of relationships, but it doesn't have the resolution to actually tell what we're looking at. Any tips for installing sfood to play around with it?
Those issues aside, the branch seems fine to me."
After a second glance at the diff, it looks like you're gzipping the man page too late. When you run the gzip command, the man page has already been installed in /usr and it's probably been installed uncompressed.
Paul Hummer (rockstar) wrote : | # |
Matt-
> 1) I don't understand why the to_dict stuff had to be merged in this
> branch. It seem unnecessary.
Well, I branched from a local mirror of trunk that already had the to_dict
stuff merged in. Somehow, that never got pushed. The merge proposal itself
sent an email with the actual diff, as well as placed it where it can be seen
from the web ui, so merging it into your copy of trunk was probably a bit
misleading.
>
> 2) There is still a developer_
> (now with no source file!).
Yeah, after looking over that, I thought it might be good to keep it while I
hacked through a replacement backend (for reference). That's why to source
file was removed, but I kept the pdf. Eventually, I'll also delete that.
>
> 3) Do we really need the user_guide.tex? It's outdated (it still refers to
> the 0.1 release); it's basically unmaintained; and we maintain the wiki.
>
Well, I wasn't sure if we'd want to keep it. If nothing else, that information
would probably be better in the man page anyway. I've removed it for now.
> 4) The dependency png is basically unreadable. It's interesting to see the
> web of relationships, but it doesn't have the resolution to actually tell
> what we're looking at. Any tips for installing sfood to play around with it?
Well, I just downloaded the tarball, put the package in my pythonpath and
used the scripts in came with. The dependency graph is kinda unreadable now,
but I think I just need to limit the amount of nodes it shows, or find a way to
generate many smaller dependency graphs. I think it will help to see how our
package organization is bass-ackwards -- I want to reorganize as I slowly
remove entertainerlib.
before, if nothing else.
I'm working on the man page zipping now.
--
Paul Hummer
http://
1024/862FF08F C921 E962 58F8 5547 6723 0E8C 1C4D 8AC5 862F F08F
- 347. By Paul Hummer
-
Changed when the man page gets gzipped
- 348. By Paul Hummer
-
Merge from trunk
Preview Diff
1 | === modified file 'Makefile' |
2 | --- Makefile 2008-12-19 05:29:55 +0000 |
3 | +++ Makefile 2009-02-01 19:35:11 +0000 |
4 | @@ -24,6 +24,7 @@ |
5 | TOOLS_DIR=cd tools |
6 | TRANSLATE= ${PYTHON} translations_generator.py |
7 | |
8 | + |
9 | check: test lint |
10 | |
11 | lint: |
12 | @@ -53,3 +54,12 @@ |
13 | clean: |
14 | ${DOCS_DIR};${DOCS_CLEAN} |
15 | ${CTAGS_CLEAN} |
16 | + |
17 | +depgraph: |
18 | + sfood entertainerlib > /tmp/entertainer.deps |
19 | + cd entertainerlib ; ls -1d * > /tmp/entertainer-clusters |
20 | + cat /tmp/entertainer.deps | sfood-cluster -f /tmp/entertainer-clusters > /tmp/clustered |
21 | + cat /tmp/clustered | sfood-graph -p | dot -T png > docs/entertainer-depgraph.png |
22 | + |
23 | + |
24 | + |
25 | |
26 | === modified file 'docs/COPYING' |
27 | --- docs/COPYING 2008-06-25 02:15:19 +0000 |
28 | +++ docs/COPYING 2009-02-01 05:26:57 +0000 |
29 | @@ -1,4 +1,344 @@ |
30 | -Entertainer copyrights can be found within the individual source files. |
31 | + GNU GENERAL PUBLIC LICENSE |
32 | + Version 2, June 1991 |
33 | + |
34 | + Copyright (C) 1989, 1991 Free Software Foundation, Inc., |
35 | + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA |
36 | + Everyone is permitted to copy and distribute verbatim copies |
37 | + of this license document, but changing it is not allowed. |
38 | + |
39 | + Preamble |
40 | + |
41 | + The licenses for most software are designed to take away your |
42 | +freedom to share and change it. By contrast, the GNU General Public |
43 | +License is intended to guarantee your freedom to share and change free |
44 | +software--to make sure the software is free for all its users. This |
45 | +General Public License applies to most of the Free Software |
46 | +Foundation's software and to any other program whose authors commit to |
47 | +using it. (Some other Free Software Foundation software is covered by |
48 | +the GNU Lesser General Public License instead.) You can apply it to |
49 | +your programs, too. |
50 | + |
51 | + When we speak of free software, we are referring to freedom, not |
52 | +price. Our General Public Licenses are designed to make sure that you |
53 | +have the freedom to distribute copies of free software (and charge for |
54 | +this service if you wish), that you receive source code or can get it |
55 | +if you want it, that you can change the software or use pieces of it |
56 | +in new free programs; and that you know you can do these things. |
57 | + |
58 | + To protect your rights, we need to make restrictions that forbid |
59 | +anyone to deny you these rights or to ask you to surrender the rights. |
60 | +These restrictions translate to certain responsibilities for you if you |
61 | +distribute copies of the software, or if you modify it. |
62 | + |
63 | + For example, if you distribute copies of such a program, whether |
64 | +gratis or for a fee, you must give the recipients all the rights that |
65 | +you have. You must make sure that they, too, receive or can get the |
66 | +source code. And you must show them these terms so they know their |
67 | +rights. |
68 | + |
69 | + We protect your rights with two steps: (1) copyright the software, and |
70 | +(2) offer you this license which gives you legal permission to copy, |
71 | +distribute and/or modify the software. |
72 | + |
73 | + Also, for each author's protection and ours, we want to make certain |
74 | +that everyone understands that there is no warranty for this free |
75 | +software. If the software is modified by someone else and passed on, we |
76 | +want its recipients to know that what they have is not the original, so |
77 | +that any problems introduced by others will not reflect on the original |
78 | +authors' reputations. |
79 | + |
80 | + Finally, any free program is threatened constantly by software |
81 | +patents. We wish to avoid the danger that redistributors of a free |
82 | +program will individually obtain patent licenses, in effect making the |
83 | +program proprietary. To prevent this, we have made it clear that any |
84 | +patent must be licensed for everyone's free use or not licensed at all. |
85 | + |
86 | + The precise terms and conditions for copying, distribution and |
87 | +modification follow. |
88 | + |
89 | + GNU GENERAL PUBLIC LICENSE |
90 | + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION |
91 | + |
92 | + 0. This License applies to any program or other work which contains |
93 | +a notice placed by the copyright holder saying it may be distributed |
94 | +under the terms of this General Public License. The "Program", below, |
95 | +refers to any such program or work, and a "work based on the Program" |
96 | +means either the Program or any derivative work under copyright law: |
97 | +that is to say, a work containing the Program or a portion of it, |
98 | +either verbatim or with modifications and/or translated into another |
99 | +language. (Hereinafter, translation is included without limitation in |
100 | +the term "modification".) Each licensee is addressed as "you". |
101 | + |
102 | +Activities other than copying, distribution and modification are not |
103 | +covered by this License; they are outside its scope. The act of |
104 | +running the Program is not restricted, and the output from the Program |
105 | +is covered only if its contents constitute a work based on the |
106 | +Program (independent of having been made by running the Program). |
107 | +Whether that is true depends on what the Program does. |
108 | + |
109 | + 1. You may copy and distribute verbatim copies of the Program's |
110 | +source code as you receive it, in any medium, provided that you |
111 | +conspicuously and appropriately publish on each copy an appropriate |
112 | +copyright notice and disclaimer of warranty; keep intact all the |
113 | +notices that refer to this License and to the absence of any warranty; |
114 | +and give any other recipients of the Program a copy of this License |
115 | +along with the Program. |
116 | + |
117 | +You may charge a fee for the physical act of transferring a copy, and |
118 | +you may at your option offer warranty protection in exchange for a fee. |
119 | + |
120 | + 2. You may modify your copy or copies of the Program or any portion |
121 | +of it, thus forming a work based on the Program, and copy and |
122 | +distribute such modifications or work under the terms of Section 1 |
123 | +above, provided that you also meet all of these conditions: |
124 | + |
125 | + a) You must cause the modified files to carry prominent notices |
126 | + stating that you changed the files and the date of any change. |
127 | + |
128 | + b) You must cause any work that you distribute or publish, that in |
129 | + whole or in part contains or is derived from the Program or any |
130 | + part thereof, to be licensed as a whole at no charge to all third |
131 | + parties under the terms of this License. |
132 | + |
133 | + c) If the modified program normally reads commands interactively |
134 | + when run, you must cause it, when started running for such |
135 | + interactive use in the most ordinary way, to print or display an |
136 | + announcement including an appropriate copyright notice and a |
137 | + notice that there is no warranty (or else, saying that you provide |
138 | + a warranty) and that users may redistribute the program under |
139 | + these conditions, and telling the user how to view a copy of this |
140 | + License. (Exception: if the Program itself is interactive but |
141 | + does not normally print such an announcement, your work based on |
142 | + the Program is not required to print an announcement.) |
143 | + |
144 | +These requirements apply to the modified work as a whole. If |
145 | +identifiable sections of that work are not derived from the Program, |
146 | +and can be reasonably considered independent and separate works in |
147 | +themselves, then this License, and its terms, do not apply to those |
148 | +sections when you distribute them as separate works. But when you |
149 | +distribute the same sections as part of a whole which is a work based |
150 | +on the Program, the distribution of the whole must be on the terms of |
151 | +this License, whose permissions for other licensees extend to the |
152 | +entire whole, and thus to each and every part regardless of who wrote it. |
153 | + |
154 | +Thus, it is not the intent of this section to claim rights or contest |
155 | +your rights to work written entirely by you; rather, the intent is to |
156 | +exercise the right to control the distribution of derivative or |
157 | +collective works based on the Program. |
158 | + |
159 | +In addition, mere aggregation of another work not based on the Program |
160 | +with the Program (or with a work based on the Program) on a volume of |
161 | +a storage or distribution medium does not bring the other work under |
162 | +the scope of this License. |
163 | + |
164 | + 3. You may copy and distribute the Program (or a work based on it, |
165 | +under Section 2) in object code or executable form under the terms of |
166 | +Sections 1 and 2 above provided that you also do one of the following: |
167 | + |
168 | + a) Accompany it with the complete corresponding machine-readable |
169 | + source code, which must be distributed under the terms of Sections |
170 | + 1 and 2 above on a medium customarily used for software interchange; or, |
171 | + |
172 | + b) Accompany it with a written offer, valid for at least three |
173 | + years, to give any third party, for a charge no more than your |
174 | + cost of physically performing source distribution, a complete |
175 | + machine-readable copy of the corresponding source code, to be |
176 | + distributed under the terms of Sections 1 and 2 above on a medium |
177 | + customarily used for software interchange; or, |
178 | + |
179 | + c) Accompany it with the information you received as to the offer |
180 | + to distribute corresponding source code. (This alternative is |
181 | + allowed only for noncommercial distribution and only if you |
182 | + received the program in object code or executable form with such |
183 | + an offer, in accord with Subsection b above.) |
184 | + |
185 | +The source code for a work means the preferred form of the work for |
186 | +making modifications to it. For an executable work, complete source |
187 | +code means all the source code for all modules it contains, plus any |
188 | +associated interface definition files, plus the scripts used to |
189 | +control compilation and installation of the executable. However, as a |
190 | +special exception, the source code distributed need not include |
191 | +anything that is normally distributed (in either source or binary |
192 | +form) with the major components (compiler, kernel, and so on) of the |
193 | +operating system on which the executable runs, unless that component |
194 | +itself accompanies the executable. |
195 | + |
196 | +If distribution of executable or object code is made by offering |
197 | +access to copy from a designated place, then offering equivalent |
198 | +access to copy the source code from the same place counts as |
199 | +distribution of the source code, even though third parties are not |
200 | +compelled to copy the source along with the object code. |
201 | + |
202 | + 4. You may not copy, modify, sublicense, or distribute the Program |
203 | +except as expressly provided under this License. Any attempt |
204 | +otherwise to copy, modify, sublicense or distribute the Program is |
205 | +void, and will automatically terminate your rights under this License. |
206 | +However, parties who have received copies, or rights, from you under |
207 | +this License will not have their licenses terminated so long as such |
208 | +parties remain in full compliance. |
209 | + |
210 | + 5. You are not required to accept this License, since you have not |
211 | +signed it. However, nothing else grants you permission to modify or |
212 | +distribute the Program or its derivative works. These actions are |
213 | +prohibited by law if you do not accept this License. Therefore, by |
214 | +modifying or distributing the Program (or any work based on the |
215 | +Program), you indicate your acceptance of this License to do so, and |
216 | +all its terms and conditions for copying, distributing or modifying |
217 | +the Program or works based on it. |
218 | + |
219 | + 6. Each time you redistribute the Program (or any work based on the |
220 | +Program), the recipient automatically receives a license from the |
221 | +original licensor to copy, distribute or modify the Program subject to |
222 | +these terms and conditions. You may not impose any further |
223 | +restrictions on the recipients' exercise of the rights granted herein. |
224 | +You are not responsible for enforcing compliance by third parties to |
225 | +this License. |
226 | + |
227 | + 7. If, as a consequence of a court judgment or allegation of patent |
228 | +infringement or for any other reason (not limited to patent issues), |
229 | +conditions are imposed on you (whether by court order, agreement or |
230 | +otherwise) that contradict the conditions of this License, they do not |
231 | +excuse you from the conditions of this License. If you cannot |
232 | +distribute so as to satisfy simultaneously your obligations under this |
233 | +License and any other pertinent obligations, then as a consequence you |
234 | +may not distribute the Program at all. For example, if a patent |
235 | +license would not permit royalty-free redistribution of the Program by |
236 | +all those who receive copies directly or indirectly through you, then |
237 | +the only way you could satisfy both it and this License would be to |
238 | +refrain entirely from distribution of the Program. |
239 | + |
240 | +If any portion of this section is held invalid or unenforceable under |
241 | +any particular circumstance, the balance of the section is intended to |
242 | +apply and the section as a whole is intended to apply in other |
243 | +circumstances. |
244 | + |
245 | +It is not the purpose of this section to induce you to infringe any |
246 | +patents or other property right claims or to contest validity of any |
247 | +such claims; this section has the sole purpose of protecting the |
248 | +integrity of the free software distribution system, which is |
249 | +implemented by public license practices. Many people have made |
250 | +generous contributions to the wide range of software distributed |
251 | +through that system in reliance on consistent application of that |
252 | +system; it is up to the author/donor to decide if he or she is willing |
253 | +to distribute software through any other system and a licensee cannot |
254 | +impose that choice. |
255 | + |
256 | +This section is intended to make thoroughly clear what is believed to |
257 | +be a consequence of the rest of this License. |
258 | + |
259 | + 8. If the distribution and/or use of the Program is restricted in |
260 | +certain countries either by patents or by copyrighted interfaces, the |
261 | +original copyright holder who places the Program under this License |
262 | +may add an explicit geographical distribution limitation excluding |
263 | +those countries, so that distribution is permitted only in or among |
264 | +countries not thus excluded. In such case, this License incorporates |
265 | +the limitation as if written in the body of this License. |
266 | + |
267 | + 9. The Free Software Foundation may publish revised and/or new versions |
268 | +of the General Public License from time to time. Such new versions will |
269 | +be similar in spirit to the present version, but may differ in detail to |
270 | +address new problems or concerns. |
271 | + |
272 | +Each version is given a distinguishing version number. If the Program |
273 | +specifies a version number of this License which applies to it and "any |
274 | +later version", you have the option of following the terms and conditions |
275 | +either of that version or of any later version published by the Free |
276 | +Software Foundation. If the Program does not specify a version number of |
277 | +this License, you may choose any version ever published by the Free Software |
278 | +Foundation. |
279 | + |
280 | + 10. If you wish to incorporate parts of the Program into other free |
281 | +programs whose distribution conditions are different, write to the author |
282 | +to ask for permission. For software which is copyrighted by the Free |
283 | +Software Foundation, write to the Free Software Foundation; we sometimes |
284 | +make exceptions for this. Our decision will be guided by the two goals |
285 | +of preserving the free status of all derivatives of our free software and |
286 | +of promoting the sharing and reuse of software generally. |
287 | + |
288 | + NO WARRANTY |
289 | + |
290 | + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY |
291 | +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN |
292 | +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES |
293 | +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED |
294 | +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF |
295 | +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS |
296 | +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE |
297 | +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, |
298 | +REPAIR OR CORRECTION. |
299 | + |
300 | + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING |
301 | +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR |
302 | +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, |
303 | +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING |
304 | +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED |
305 | +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY |
306 | +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER |
307 | +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE |
308 | +POSSIBILITY OF SUCH DAMAGES. |
309 | + |
310 | + END OF TERMS AND CONDITIONS |
311 | + |
312 | + How to Apply These Terms to Your New Programs |
313 | + |
314 | + If you develop a new program, and you want it to be of the greatest |
315 | +possible use to the public, the best way to achieve this is to make it |
316 | +free software which everyone can redistribute and change under these terms. |
317 | + |
318 | + To do so, attach the following notices to the program. It is safest |
319 | +to attach them to the start of each source file to most effectively |
320 | +convey the exclusion of warranty; and each file should have at least |
321 | +the "copyright" line and a pointer to where the full notice is found. |
322 | + |
323 | + <one line to give the program's name and a brief idea of what it does.> |
324 | + Copyright (C) <year> <name of author> |
325 | + |
326 | + This program is free software; you can redistribute it and/or modify |
327 | + it under the terms of the GNU General Public License as published by |
328 | + the Free Software Foundation; either version 2 of the License, or |
329 | + (at your option) any later version. |
330 | + |
331 | + This program is distributed in the hope that it will be useful, |
332 | + but WITHOUT ANY WARRANTY; without even the implied warranty of |
333 | + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
334 | + GNU General Public License for more details. |
335 | + |
336 | + You should have received a copy of the GNU General Public License along |
337 | + with this program; if not, write to the Free Software Foundation, Inc., |
338 | + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. |
339 | + |
340 | +Also add information on how to contact you by electronic and paper mail. |
341 | + |
342 | +If the program is interactive, make it output a short notice like this |
343 | +when it starts in an interactive mode: |
344 | + |
345 | + Gnomovision version 69, Copyright (C) year name of author |
346 | + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. |
347 | + This is free software, and you are welcome to redistribute it |
348 | + under certain conditions; type `show c' for details. |
349 | + |
350 | +The hypothetical commands `show w' and `show c' should show the appropriate |
351 | +parts of the General Public License. Of course, the commands you use may |
352 | +be called something other than `show w' and `show c'; they could even be |
353 | +mouse-clicks or menu items--whatever suits your program. |
354 | + |
355 | +You should also get your employer (if you work as a programmer) or your |
356 | +school, if any, to sign a "copyright disclaimer" for the program, if |
357 | +necessary. Here is a sample; alter the names: |
358 | + |
359 | + Yoyodyne, Inc., hereby disclaims all copyright interest in the program |
360 | + `Gnomovision' (which makes passes at compilers) written by James Hacker. |
361 | + |
362 | + <signature of Ty Coon>, 1 April 1989 |
363 | + Ty Coon, President of Vice |
364 | + |
365 | +This General Public License does not permit incorporating your program into |
366 | +proprietary programs. If your program is a subroutine library, you may |
367 | +consider it more useful to permit linking proprietary applications with the |
368 | +library. If this is what you want to do, use the GNU Lesser General |
369 | +Public License instead of this License. |
370 | + |
371 | +== Entertainer Caveats == |
372 | |
373 | This program is free software; you can redistribute it and/or modify |
374 | it under the terms of the GNU General Public License as published by |
375 | @@ -18,8 +358,4 @@ |
376 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
377 | GNU General Public License for more details. |
378 | |
379 | -You should have received a copy of the GNU General Public License |
380 | -along with this program; if not, write to the Free Software |
381 | -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, |
382 | -MA 02110-1301, USA. |
383 | |
384 | |
385 | === modified file 'docs/DEPENDENCIES' |
386 | --- docs/DEPENDENCIES 2009-01-06 23:52:09 +0000 |
387 | +++ docs/DEPENDENCIES 2009-02-01 05:32:19 +0000 |
388 | @@ -1,6 +1,17 @@ |
389 | -To install all dependencies in Hardy: |
390 | - |
391 | -sudo apt-get install python-gobject python-gtk2 python-gst0.10 python-clutter \ |
392 | -python-pysqlite2 python-cddb python-glade2 python-cairo python-feedparser \ |
393 | -python-eyed3 python-pyvorbis python-imaging python-imdbpy python-notify |
394 | +python-cairo |
395 | +python-cddb |
396 | +python-clutter |
397 | +python-eyed3 |
398 | +python-feedparser |
399 | +python-glade2 |
400 | +python-gobject |
401 | +python-gst0.10 |
402 | +python-gtk2 |
403 | +python-imaging |
404 | +python-imdbpy |
405 | +python-notify |
406 | +python-pysqlite2 |
407 | +python-pyvorbis |
408 | +python-storm |
409 | +python-twisted |
410 | |
411 | |
412 | === modified file 'docs/HACKING' |
413 | --- docs/HACKING 2008-10-06 01:33:50 +0000 |
414 | +++ docs/HACKING 2009-02-01 06:07:50 +0000 |
415 | @@ -1,4 +1,5 @@ |
416 | -== Introduction == |
417 | +Introduction |
418 | +============ |
419 | |
420 | This document will detail a list of best practices and guidelines for |
421 | developers. We would like to encourage community development of Entertainer, |
422 | @@ -10,86 +11,14 @@ |
423 | tools of the Entertainer developers, and will be the best method of |
424 | communication with other developers. |
425 | |
426 | -== Bug Workflow == |
427 | - |
428 | -Each launchpad project probably uses the bug management system in slightly |
429 | -different ways. The following information describes how Entertainer uses lp's |
430 | -bug system. |
431 | - |
432 | -1) New bugs come in. Bugs from regular users will always come in with a status |
433 | -of New and Undecided. Entertainer developers have the ability to set new bugs |
434 | -to have some status other than New and Undecided, but we try to adopt a policy |
435 | -of letting other developers confirm our bugs (this is a way to keep us |
436 | -accountable and to ensure that the bug is, in fact, true for others too). |
437 | - |
438 | -2) If someone else wrote the bug, we check it to see what kind of information |
439 | -it has. It may have tracebacks, but sometimes reporters don't give us useful |
440 | -stuff. If that is the case, we request more information (like the log file in |
441 | -~/.config/entertainer) and mark it "Incomplete" and leave the priority |
442 | -Undecided. |
443 | - |
444 | -3) If you see a new bug, and can verify it, but have no idea how it should be |
445 | -fixed, it should be marked as "Confirmed". If you can provide extra new |
446 | -information that might help someone else figure out the problem, please add |
447 | -that to the bug. You may mark the priority at this time if you have a good |
448 | -feeling for what it should be. |
449 | - |
450 | -4) If you see a new bug, and can verify it, and you have a good idea about |
451 | -where/how the bug can be fixed, mark it as "Triaged". At this time, use your |
452 | -best judgment about setting the priority. You can see from our bug page that |
453 | -most of the bugs are in the Triaged state (we just don't have the manpower to |
454 | -handle them all). |
455 | - |
456 | -5) From the list of Triaged bugs, you would assign yourself work (or |
457 | -potentially assign someone else work). For example, problems with the RSS feeds |
458 | -are typically assigned to Josh Scotton since he was the initial developer of |
459 | -that functionality. For bugs that you're actually working on, you should assign |
460 | -yourself the bug, and change the state to "In Progress". If you're not going to |
461 | -work the bug yet, leave the state as "Triaged." |
462 | - |
463 | -6) At this point, the bug flow basically halts while you work on your branches |
464 | -in bazaar. We recommend that you create specific branches and link them to bugs |
465 | -that you are fixing. A good rule of thumb is one branch per bug, but this is |
466 | -not set in stone. You write your code, go through the merge proposal review |
467 | -process, and your code gets committed to the trunk. |
468 | - |
469 | -7) Now, either you (the developer who was working the bug) or a member of the |
470 | -Release Team (either Paul Hummer or Matt Layman) will set the bug to Fix |
471 | -Committed after the branch has landed in the trunk. Note: We do NOT mark bugs |
472 | -as Fix Committed until they land in the trunk. Everyone's first tendency is to |
473 | -mark a bug as Fix Committed as soon as it is done in their branch. Fix |
474 | -Committed does not mean "committed to my branch." We want it to mean "committed |
475 | -to the trunk." |
476 | - |
477 | -8) When we finish the release and make source tarballs and packages available, |
478 | -a member of the Release Team will mark all the Fix Committed bugs that were in |
479 | -that release as Fix Released. |
480 | - |
481 | -== Development Process == |
482 | + |
483 | +Development Process |
484 | +=================== |
485 | |
486 | In order to have your branch merged into trunk, there is a workflow you'll need |
487 | to follow. This facilitates the help of the community in working with |
488 | Entertainer. |
489 | |
490 | -When a bug or feature is to be implemented, a branch of |
491 | -lp:~entertainer-releases/entertainer/devel is created, named bug-<bugno> or |
492 | -<feature-name>. Once it is branched, it needs to be registered on Launchpad |
493 | -and pushed to. The easiest way to create a branch to work from is to run: |
494 | -`bzr branch lp:entertainer <your branch name here>` |
495 | - |
496 | -The bug or feature is then developed. In order for a branch to be complete, |
497 | -and ready to merge, it must have sufficient tests, pass all of the tests in the |
498 | -test suite, and passes all lint tests. The latter two criteria can be checked |
499 | -by typing `make check` in the branch's top level directory. |
500 | - |
501 | -When you feel your branch is ready, you'll submit a branch merge proposal in |
502 | -Launchpad, where your branch should be reviewed by at least two developers. |
503 | -Please be sure to submit review requests to two core developers who you believe |
504 | -will be able to review your code. Once it is reviewed and signed off, a member |
505 | -of the Entertainer Release team will merge your branch into trunk. |
506 | - |
507 | -== Design and Documentation == |
508 | - |
509 | When adding a new feature or fixing a large bug, unless it is less than five |
510 | lines, please make it known on the Entertainer Developers Mailing List and |
511 | give us some details on your implementation. This way, discussion can take |
512 | @@ -102,20 +31,99 @@ |
513 | trunk without documentation, please be prepared when your change is |
514 | removed from the trunk, pending documentation. |
515 | |
516 | -== Coding Styles == |
517 | +When a bug or feature is to be implemented, a branch of |
518 | +lp:~entertainer-releases/entertainer/devel is created. Once it is branched, it |
519 | +needs to be registered on Launchpad and pushed to. The easiest way to create |
520 | +a branch to work from is to run: |
521 | + |
522 | +``bzr branch lp:entertainer <your branch name here>`` |
523 | + |
524 | +The bug or feature is then developed. In order for a branch to be complete, |
525 | +and ready to merge, it must have sufficient tests, pass all of the tests in the |
526 | +test suite, and passes all lint tests. The latter two criteria can be checked |
527 | +by typing `make check` in the branch's top level directory. |
528 | + |
529 | +When you feel your branch is ready, you'll submit a branch merge proposal in |
530 | +Launchpad, where your branch should be reviewed by a member of the Entertainer |
531 | +Releases team. Please be sure to submit review requests to two core developers |
532 | +who you believe will be able to review your code. Once it is reviewed and |
533 | +signed off, a member of the Entertainer Release team will merge your branch |
534 | +into trunk. |
535 | + |
536 | + |
537 | +Bug Workflow |
538 | +============ |
539 | + |
540 | +The following information describes how Entertainer uses Launchpad's bug |
541 | +system. |
542 | + |
543 | +**New Bugs** Bugs from regular users will always come in with a status |
544 | +of New and Undecided. Entertainer developers have the ability to set new bugs |
545 | +to have some status other than New and Undecided, but we try to adopt a policy |
546 | +of letting other developers confirm our bugs (this is a way to keep us |
547 | +accountable and to ensure that the bug is, in fact, true for others too). |
548 | + |
549 | +**Information Audit** If someone else wrote the bug, we check it to see what |
550 | +kind of information it has. It may have tracebacks, but sometimes reporters |
551 | +don't give us useful stuff. If that is the case, we request more information |
552 | +(like the log file in ~/.config/entertainer) and mark it "Incomplete" and |
553 | +leave the priority Undecided. |
554 | + |
555 | +**Bug Triage** If you see a new bug, and can verify it, but have no idea how |
556 | +it should be fixed, it should be marked as "Confirmed". If you can provide |
557 | +extra new information that might help someone else figure out the problem, |
558 | +please add that to the bug. You may mark the priority at this time if you |
559 | +have a good feeling for what it should be. |
560 | + |
561 | +If you see a new bug, and can verify it, and you have a good idea about |
562 | +where/how the bug can be fixed, mark it as "Triaged". At this time, use your |
563 | +best judgment about setting the priority. You can see from our bug page that |
564 | +most of the bugs are in the Triaged state (we just don't have the manpower to |
565 | +handle them all). |
566 | + |
567 | +**Accepting Work** From the list of Triaged bugs, you would assign yourself |
568 | +work (or potentially assign someone else work). For example, problems with |
569 | +the RSS feeds are typically assigned to Josh Scotton since he was the initial |
570 | +developer of that functionality. For bugs that you're actually working on, |
571 | +you should assign yourself the bug, and change the state to "In Progress". |
572 | +If you're not going to work the bug yet, leave the state as "Triaged." |
573 | + |
574 | +If you are working on a bug, but then find you won't be able to fix it, and |
575 | +abandon the effort, please make sure to set the bug from "In Progress" to |
576 | +"Triaged" and leave any notes that might help the next bug squisher in their |
577 | +quest to fix the bug. |
578 | + |
579 | +**Fix the bug**At this point, the bug flow basically halts while you work on |
580 | +your branches in Bazaar. We recommend that you create specific branches and |
581 | +link them to bugs that you are fixing. A good rule of thumb is one branch per |
582 | +bug, but this is not set in stone. You write your code, go through the merge |
583 | +proposal review process, and your code gets committed to the trunk. |
584 | + |
585 | +**Fix Lands in Trunk** Now, either you (the developer who was working the bug) |
586 | +or a member of the Release Team will set the bug to Fix Committed after the |
587 | +branch has landed in the trunk. Note: We do NOT mark bugs as Fix Committed |
588 | +until they land in the trunk. Everyone's first tendency is to mark a bug as |
589 | +Fix Committed as soon as it is done in their branch. Fix Committed does not |
590 | +mean "committed to my branch." We want it to mean "committed to the trunk." |
591 | + |
592 | +**Release!** When we finish the release and make source tarballs and packages |
593 | +available, a member of the Release Team will mark all the Fix Committed bugs |
594 | +that were in that release as Fix Released. |
595 | + |
596 | +Coding Styles |
597 | +============= |
598 | |
599 | For the most part, Entertainer code adheres to PEP 0008, with a few more |
600 | specifics: |
601 | |
602 | - * Spaces, not tabs |
603 | - * Four spaces to be exact |
604 | + * Spaces, not tabs. |
605 | + * Four spaces to be exact. |
606 | * Maximum line length of 80 characters, unless your code gets more |
607 | - confusing by breaking the line (be prepared to justify this) |
608 | - * No trailing whitespace at the end of a line, or blank lines that contain |
609 | - spaces in them |
610 | + confusing by breaking the line (be prepared to justify this). |
611 | + * No trailing whitespace at the end of a line. |
612 | * Make sure copyright notices are found in EVERY source file |
613 | * If code is "borrowed" from another source, please annotate that. It's |
614 | - just good practice |
615 | + just good practice. |
616 | * Strings that will be displayed to the end-user must be wrapped like this |
617 | _("Example String") this is so it is picked up to be translated. |
618 | * Formatted strings such as "Track %s of %s" % (number, total) that need |
619 | @@ -123,13 +131,18 @@ |
620 | _("Track %(track)s of %(album)s") % {'track': number, 'album': total} |
621 | * Docstrings are written compliant with PEP 0257 |
622 | |
623 | -== Debugging == |
624 | + |
625 | +Tips and Tricks |
626 | +=============== |
627 | + |
628 | +**Debugging** |
629 | |
630 | Paul Hummer wrote a blog post on the best practices for working with the pdb |
631 | debugger, specifically based on his experience using it with Entertainer. It |
632 | -can be found at http://theironlion.net/blog/howto-python-debugging-pdb/ |
633 | +can be found at `http://theironlion.net/archive/howto-python-debugging-pdb/ |
634 | +<http://theironlion.net/archive/howto-python-debugging-pdb/>`_ |
635 | |
636 | -== Testing == |
637 | +**Testing** |
638 | |
639 | When starting development, please stop off at src/tests and write a unittest |
640 | for the feature to be implemented (yes, before developing the feature), or add |
641 | @@ -138,47 +151,43 @@ |
642 | and helps maintain quality code for Entertainer. |
643 | |
644 | Here is an example unit test, using python's built in unittest module: |
645 | ------------------------------------------------------------------------ |
646 | -import os |
647 | -import unittest |
648 | - |
649 | -class TestFoo(unittest.TestCase): |
650 | - |
651 | - def setUp(self): |
652 | - '''setUp is for any preliminary things that need to be done |
653 | - prior to actually running the tests, like instantiating objects |
654 | - and database test fixtures''' |
655 | - self.fh = open('foo.file', 'wb') |
656 | - self.foo_to_test = Foo(fh) |
657 | - |
658 | - def testDoStuff(self): |
659 | - self.foo_to_test.doStuff() |
660 | - self.assertTrue(self.foo_to_test.didStuff) |
661 | - |
662 | - def tearDown(self): |
663 | - '''tearDown is the method called after all tests are run, and |
664 | - is used for clean up from anything generated by setUp''' |
665 | - self.foo_to_test.close() |
666 | - self.fh.close() |
667 | - os.remove('foo.file') |
668 | ------------------------------------------------------------------------ |
669 | + |
670 | + import os |
671 | + import unittest |
672 | + |
673 | + class TestFoo(unittest.TestCase): |
674 | + |
675 | + def setUp(self): |
676 | + '''setUp is for any preliminary things that need to be done |
677 | + prior to actually running the tests, like instantiating objects |
678 | + and database test fixtures''' |
679 | + self.fh = open('foo.file', 'wb') |
680 | + self.foo_to_test = Foo(fh) |
681 | + |
682 | + def testDoStuff(self): |
683 | + self.foo_to_test.doStuff() |
684 | + self.assertTrue(self.foo_to_test.didStuff) |
685 | + |
686 | + def tearDown(self): |
687 | + '''tearDown is the method called after all tests are run, and |
688 | + is used for clean up from anything generated by setUp''' |
689 | + self.foo_to_test.close() |
690 | + self.fh.close() |
691 | + os.remove('foo.file') |
692 | + |
693 | |
694 | There are a few things that need to be pointed out. First, the test should |
695 | always inherit from unittest.TestCase?. The run_tests.py script looks for |
696 | -tests that inherit from unittest.TestCase? and runs those tests. Second, the |
697 | +tests that inherit from ``unittest.TestCase`` and runs those tests. Second, the |
698 | test never prints anything to stdout or stderr. If the test needs to log to a |
699 | file, that is fine, but please don't print anything to stdout or stderr. |
700 | Lastly, the tearDown removed a file that was created by the test (and is not |
701 | checked into svn). |
702 | |
703 | -After the test is written, please run run_tests.py in the src/tests folder, |
704 | -and make sure the test is failing correctly before moving on to development. |
705 | - |
706 | -For more information about the unittest module, and how to use it, please see: |
707 | - |
708 | - * http://docs.python.org/lib/module-unittest.html |
709 | - * http://docs.python.org/lib/doctest-unittest-api.html |
710 | - * http://agiletesting.blogspot.com/2005/01/python-unit-testing-part-1-unittest.html |
711 | - * http://www.onlamp.com/pub/a/python/2004/12/02/tdd_pyunit.html |
712 | - * ...or pretty much anything Grig Gheoghiu or Titus Brown have to say about testing... |
713 | +After the test is written, run the test and make sure the test is failing |
714 | +correctly before moving on to development. To run the whole test suite, run |
715 | +``make check`` in the root of the branch. To run a single test, you can use |
716 | +trial. For instance, to run all the music tests, you'd use |
717 | +``trial entertainerlib.tests.test_music``. |
718 | + |
719 | |
720 | |
721 | === removed file 'docs/LICENSE' |
722 | --- docs/LICENSE 2008-06-25 02:15:19 +0000 |
723 | +++ docs/LICENSE 1970-01-01 00:00:00 +0000 |
724 | @@ -1,339 +0,0 @@ |
725 | - GNU GENERAL PUBLIC LICENSE |
726 | - Version 2, June 1991 |
727 | - |
728 | - Copyright (C) 1989, 1991 Free Software Foundation, Inc., |
729 | - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA |
730 | - Everyone is permitted to copy and distribute verbatim copies |
731 | - of this license document, but changing it is not allowed. |
732 | - |
733 | - Preamble |
734 | - |
735 | - The licenses for most software are designed to take away your |
736 | -freedom to share and change it. By contrast, the GNU General Public |
737 | -License is intended to guarantee your freedom to share and change free |
738 | -software--to make sure the software is free for all its users. This |
739 | -General Public License applies to most of the Free Software |
740 | -Foundation's software and to any other program whose authors commit to |
741 | -using it. (Some other Free Software Foundation software is covered by |
742 | -the GNU Lesser General Public License instead.) You can apply it to |
743 | -your programs, too. |
744 | - |
745 | - When we speak of free software, we are referring to freedom, not |
746 | -price. Our General Public Licenses are designed to make sure that you |
747 | -have the freedom to distribute copies of free software (and charge for |
748 | -this service if you wish), that you receive source code or can get it |
749 | -if you want it, that you can change the software or use pieces of it |
750 | -in new free programs; and that you know you can do these things. |
751 | - |
752 | - To protect your rights, we need to make restrictions that forbid |
753 | -anyone to deny you these rights or to ask you to surrender the rights. |
754 | -These restrictions translate to certain responsibilities for you if you |
755 | -distribute copies of the software, or if you modify it. |
756 | - |
757 | - For example, if you distribute copies of such a program, whether |
758 | -gratis or for a fee, you must give the recipients all the rights that |
759 | -you have. You must make sure that they, too, receive or can get the |
760 | -source code. And you must show them these terms so they know their |
761 | -rights. |
762 | - |
763 | - We protect your rights with two steps: (1) copyright the software, and |
764 | -(2) offer you this license which gives you legal permission to copy, |
765 | -distribute and/or modify the software. |
766 | - |
767 | - Also, for each author's protection and ours, we want to make certain |
768 | -that everyone understands that there is no warranty for this free |
769 | -software. If the software is modified by someone else and passed on, we |
770 | -want its recipients to know that what they have is not the original, so |
771 | -that any problems introduced by others will not reflect on the original |
772 | -authors' reputations. |
773 | - |
774 | - Finally, any free program is threatened constantly by software |
775 | -patents. We wish to avoid the danger that redistributors of a free |
776 | -program will individually obtain patent licenses, in effect making the |
777 | -program proprietary. To prevent this, we have made it clear that any |
778 | -patent must be licensed for everyone's free use or not licensed at all. |
779 | - |
780 | - The precise terms and conditions for copying, distribution and |
781 | -modification follow. |
782 | - |
783 | - GNU GENERAL PUBLIC LICENSE |
784 | - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION |
785 | - |
786 | - 0. This License applies to any program or other work which contains |
787 | -a notice placed by the copyright holder saying it may be distributed |
788 | -under the terms of this General Public License. The "Program", below, |
789 | -refers to any such program or work, and a "work based on the Program" |
790 | -means either the Program or any derivative work under copyright law: |
791 | -that is to say, a work containing the Program or a portion of it, |
792 | -either verbatim or with modifications and/or translated into another |
793 | -language. (Hereinafter, translation is included without limitation in |
794 | -the term "modification".) Each licensee is addressed as "you". |
795 | - |
796 | -Activities other than copying, distribution and modification are not |
797 | -covered by this License; they are outside its scope. The act of |
798 | -running the Program is not restricted, and the output from the Program |
799 | -is covered only if its contents constitute a work based on the |
800 | -Program (independent of having been made by running the Program). |
801 | -Whether that is true depends on what the Program does. |
802 | - |
803 | - 1. You may copy and distribute verbatim copies of the Program's |
804 | -source code as you receive it, in any medium, provided that you |
805 | -conspicuously and appropriately publish on each copy an appropriate |
806 | -copyright notice and disclaimer of warranty; keep intact all the |
807 | -notices that refer to this License and to the absence of any warranty; |
808 | -and give any other recipients of the Program a copy of this License |
809 | -along with the Program. |
810 | - |
811 | -You may charge a fee for the physical act of transferring a copy, and |
812 | -you may at your option offer warranty protection in exchange for a fee. |
813 | - |
814 | - 2. You may modify your copy or copies of the Program or any portion |
815 | -of it, thus forming a work based on the Program, and copy and |
816 | -distribute such modifications or work under the terms of Section 1 |
817 | -above, provided that you also meet all of these conditions: |
818 | - |
819 | - a) You must cause the modified files to carry prominent notices |
820 | - stating that you changed the files and the date of any change. |
821 | - |
822 | - b) You must cause any work that you distribute or publish, that in |
823 | - whole or in part contains or is derived from the Program or any |
824 | - part thereof, to be licensed as a whole at no charge to all third |
825 | - parties under the terms of this License. |
826 | - |
827 | - c) If the modified program normally reads commands interactively |
828 | - when run, you must cause it, when started running for such |
829 | - interactive use in the most ordinary way, to print or display an |
830 | - announcement including an appropriate copyright notice and a |
831 | - notice that there is no warranty (or else, saying that you provide |
832 | - a warranty) and that users may redistribute the program under |
833 | - these conditions, and telling the user how to view a copy of this |
834 | - License. (Exception: if the Program itself is interactive but |
835 | - does not normally print such an announcement, your work based on |
836 | - the Program is not required to print an announcement.) |
837 | - |
838 | -These requirements apply to the modified work as a whole. If |
839 | -identifiable sections of that work are not derived from the Program, |
840 | -and can be reasonably considered independent and separate works in |
841 | -themselves, then this License, and its terms, do not apply to those |
842 | -sections when you distribute them as separate works. But when you |
843 | -distribute the same sections as part of a whole which is a work based |
844 | -on the Program, the distribution of the whole must be on the terms of |
845 | -this License, whose permissions for other licensees extend to the |
846 | -entire whole, and thus to each and every part regardless of who wrote it. |
847 | - |
848 | -Thus, it is not the intent of this section to claim rights or contest |
849 | -your rights to work written entirely by you; rather, the intent is to |
850 | -exercise the right to control the distribution of derivative or |
851 | -collective works based on the Program. |
852 | - |
853 | -In addition, mere aggregation of another work not based on the Program |
854 | -with the Program (or with a work based on the Program) on a volume of |
855 | -a storage or distribution medium does not bring the other work under |
856 | -the scope of this License. |
857 | - |
858 | - 3. You may copy and distribute the Program (or a work based on it, |
859 | -under Section 2) in object code or executable form under the terms of |
860 | -Sections 1 and 2 above provided that you also do one of the following: |
861 | - |
862 | - a) Accompany it with the complete corresponding machine-readable |
863 | - source code, which must be distributed under the terms of Sections |
864 | - 1 and 2 above on a medium customarily used for software interchange; or, |
865 | - |
866 | - b) Accompany it with a written offer, valid for at least three |
867 | - years, to give any third party, for a charge no more than your |
868 | - cost of physically performing source distribution, a complete |
869 | - machine-readable copy of the corresponding source code, to be |
870 | - distributed under the terms of Sections 1 and 2 above on a medium |
871 | - customarily used for software interchange; or, |
872 | - |
873 | - c) Accompany it with the information you received as to the offer |
874 | - to distribute corresponding source code. (This alternative is |
875 | - allowed only for noncommercial distribution and only if you |
876 | - received the program in object code or executable form with such |
877 | - an offer, in accord with Subsection b above.) |
878 | - |
879 | -The source code for a work means the preferred form of the work for |
880 | -making modifications to it. For an executable work, complete source |
881 | -code means all the source code for all modules it contains, plus any |
882 | -associated interface definition files, plus the scripts used to |
883 | -control compilation and installation of the executable. However, as a |
884 | -special exception, the source code distributed need not include |
885 | -anything that is normally distributed (in either source or binary |
886 | -form) with the major components (compiler, kernel, and so on) of the |
887 | -operating system on which the executable runs, unless that component |
888 | -itself accompanies the executable. |
889 | - |
890 | -If distribution of executable or object code is made by offering |
891 | -access to copy from a designated place, then offering equivalent |
892 | -access to copy the source code from the same place counts as |
893 | -distribution of the source code, even though third parties are not |
894 | -compelled to copy the source along with the object code. |
895 | - |
896 | - 4. You may not copy, modify, sublicense, or distribute the Program |
897 | -except as expressly provided under this License. Any attempt |
898 | -otherwise to copy, modify, sublicense or distribute the Program is |
899 | -void, and will automatically terminate your rights under this License. |
900 | -However, parties who have received copies, or rights, from you under |
901 | -this License will not have their licenses terminated so long as such |
902 | -parties remain in full compliance. |
903 | - |
904 | - 5. You are not required to accept this License, since you have not |
905 | -signed it. However, nothing else grants you permission to modify or |
906 | -distribute the Program or its derivative works. These actions are |
907 | -prohibited by law if you do not accept this License. Therefore, by |
908 | -modifying or distributing the Program (or any work based on the |
909 | -Program), you indicate your acceptance of this License to do so, and |
910 | -all its terms and conditions for copying, distributing or modifying |
911 | -the Program or works based on it. |
912 | - |
913 | - 6. Each time you redistribute the Program (or any work based on the |
914 | -Program), the recipient automatically receives a license from the |
915 | -original licensor to copy, distribute or modify the Program subject to |
916 | -these terms and conditions. You may not impose any further |
917 | -restrictions on the recipients' exercise of the rights granted herein. |
918 | -You are not responsible for enforcing compliance by third parties to |
919 | -this License. |
920 | - |
921 | - 7. If, as a consequence of a court judgment or allegation of patent |
922 | -infringement or for any other reason (not limited to patent issues), |
923 | -conditions are imposed on you (whether by court order, agreement or |
924 | -otherwise) that contradict the conditions of this License, they do not |
925 | -excuse you from the conditions of this License. If you cannot |
926 | -distribute so as to satisfy simultaneously your obligations under this |
927 | -License and any other pertinent obligations, then as a consequence you |
928 | -may not distribute the Program at all. For example, if a patent |
929 | -license would not permit royalty-free redistribution of the Program by |
930 | -all those who receive copies directly or indirectly through you, then |
931 | -the only way you could satisfy both it and this License would be to |
932 | -refrain entirely from distribution of the Program. |
933 | - |
934 | -If any portion of this section is held invalid or unenforceable under |
935 | -any particular circumstance, the balance of the section is intended to |
936 | -apply and the section as a whole is intended to apply in other |
937 | -circumstances. |
938 | - |
939 | -It is not the purpose of this section to induce you to infringe any |
940 | -patents or other property right claims or to contest validity of any |
941 | -such claims; this section has the sole purpose of protecting the |
942 | -integrity of the free software distribution system, which is |
943 | -implemented by public license practices. Many people have made |
944 | -generous contributions to the wide range of software distributed |
945 | -through that system in reliance on consistent application of that |
946 | -system; it is up to the author/donor to decide if he or she is willing |
947 | -to distribute software through any other system and a licensee cannot |
948 | -impose that choice. |
949 | - |
950 | -This section is intended to make thoroughly clear what is believed to |
951 | -be a consequence of the rest of this License. |
952 | - |
953 | - 8. If the distribution and/or use of the Program is restricted in |
954 | -certain countries either by patents or by copyrighted interfaces, the |
955 | -original copyright holder who places the Program under this License |
956 | -may add an explicit geographical distribution limitation excluding |
957 | -those countries, so that distribution is permitted only in or among |
958 | -countries not thus excluded. In such case, this License incorporates |
959 | -the limitation as if written in the body of this License. |
960 | - |
961 | - 9. The Free Software Foundation may publish revised and/or new versions |
962 | -of the General Public License from time to time. Such new versions will |
963 | -be similar in spirit to the present version, but may differ in detail to |
964 | -address new problems or concerns. |
965 | - |
966 | -Each version is given a distinguishing version number. If the Program |
967 | -specifies a version number of this License which applies to it and "any |
968 | -later version", you have the option of following the terms and conditions |
969 | -either of that version or of any later version published by the Free |
970 | -Software Foundation. If the Program does not specify a version number of |
971 | -this License, you may choose any version ever published by the Free Software |
972 | -Foundation. |
973 | - |
974 | - 10. If you wish to incorporate parts of the Program into other free |
975 | -programs whose distribution conditions are different, write to the author |
976 | -to ask for permission. For software which is copyrighted by the Free |
977 | -Software Foundation, write to the Free Software Foundation; we sometimes |
978 | -make exceptions for this. Our decision will be guided by the two goals |
979 | -of preserving the free status of all derivatives of our free software and |
980 | -of promoting the sharing and reuse of software generally. |
981 | - |
982 | - NO WARRANTY |
983 | - |
984 | - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY |
985 | -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN |
986 | -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES |
987 | -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED |
988 | -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF |
989 | -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS |
990 | -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE |
991 | -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, |
992 | -REPAIR OR CORRECTION. |
993 | - |
994 | - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING |
995 | -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR |
996 | -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, |
997 | -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING |
998 | -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED |
999 | -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY |
1000 | -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER |
1001 | -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE |
1002 | -POSSIBILITY OF SUCH DAMAGES. |
1003 | - |
1004 | - END OF TERMS AND CONDITIONS |
1005 | - |
1006 | - How to Apply These Terms to Your New Programs |
1007 | - |
1008 | - If you develop a new program, and you want it to be of the greatest |
1009 | -possible use to the public, the best way to achieve this is to make it |
1010 | -free software which everyone can redistribute and change under these terms. |
1011 | - |
1012 | - To do so, attach the following notices to the program. It is safest |
1013 | -to attach them to the start of each source file to most effectively |
1014 | -convey the exclusion of warranty; and each file should have at least |
1015 | -the "copyright" line and a pointer to where the full notice is found. |
1016 | - |
1017 | - <one line to give the program's name and a brief idea of what it does.> |
1018 | - Copyright (C) <year> <name of author> |
1019 | - |
1020 | - This program is free software; you can redistribute it and/or modify |
1021 | - it under the terms of the GNU General Public License as published by |
1022 | - the Free Software Foundation; either version 2 of the License, or |
1023 | - (at your option) any later version. |
1024 | - |
1025 | - This program is distributed in the hope that it will be useful, |
1026 | - but WITHOUT ANY WARRANTY; without even the implied warranty of |
1027 | - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
1028 | - GNU General Public License for more details. |
1029 | - |
1030 | - You should have received a copy of the GNU General Public License along |
1031 | - with this program; if not, write to the Free Software Foundation, Inc., |
1032 | - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. |
1033 | - |
1034 | -Also add information on how to contact you by electronic and paper mail. |
1035 | - |
1036 | -If the program is interactive, make it output a short notice like this |
1037 | -when it starts in an interactive mode: |
1038 | - |
1039 | - Gnomovision version 69, Copyright (C) year name of author |
1040 | - Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. |
1041 | - This is free software, and you are welcome to redistribute it |
1042 | - under certain conditions; type `show c' for details. |
1043 | - |
1044 | -The hypothetical commands `show w' and `show c' should show the appropriate |
1045 | -parts of the General Public License. Of course, the commands you use may |
1046 | -be called something other than `show w' and `show c'; they could even be |
1047 | -mouse-clicks or menu items--whatever suits your program. |
1048 | - |
1049 | -You should also get your employer (if you work as a programmer) or your |
1050 | -school, if any, to sign a "copyright disclaimer" for the program, if |
1051 | -necessary. Here is a sample; alter the names: |
1052 | - |
1053 | - Yoyodyne, Inc., hereby disclaims all copyright interest in the program |
1054 | - `Gnomovision' (which makes passes at compilers) written by James Hacker. |
1055 | - |
1056 | - <signature of Ty Coon>, 1 April 1989 |
1057 | - Ty Coon, President of Vice |
1058 | - |
1059 | -This General Public License does not permit incorporating your program into |
1060 | -proprietary programs. If your program is a subroutine library, you may |
1061 | -consider it more useful to permit linking proprietary applications with the |
1062 | -library. If this is what you want to do, use the GNU Lesser General |
1063 | -Public License instead of this License. |
1064 | |
1065 | === removed file 'docs/backend_core.tex' |
1066 | --- docs/backend_core.tex 2008-12-14 19:58:40 +0000 |
1067 | +++ docs/backend_core.tex 1970-01-01 00:00:00 +0000 |
1068 | @@ -1,25 +0,0 @@ |
1069 | -Backend uses \emph{message-bus architecure}. Core of the backend consists of |
1070 | -\emph{message bus}, \emph{messages}, \emph{message scheduler}, \emph{connection server} and \emph{message bus proxy}. All components of the backend are registered to message bus. Backend components communicate with each other by sending messages to the message bus. Also client processes can register them selves to the message bus via message-bus proxy. This way clients can trasparently communicate with backend components. Behind the curtains this communication is implemented using sockets, but clients doesn't need to know that. All they know is that they can send and receive messages. Figure \ref{fig:backend_arch} illustrates the architecture with a high level diagram. In the following sections we dicuss each component in more detail. |
1071 | - |
1072 | -\begin{figure}[htb] |
1073 | - \begin{center} |
1074 | - \includegraphics[angle=0,scale=0.4]{diagrams/Backend/high_level.png} |
1075 | - \caption{Backend architecure} |
1076 | - \label{fig:backend_arch} |
1077 | - \end{center} |
1078 | -\end{figure} |
1079 | - |
1080 | -\subsubsection{Message bus} |
1081 | -Message bus is an object (type of \texttt{MessageBus}) that is resposible of transmitting messages between registered components. Every component has to implement \texttt{MessageHandler} interface so that it can receive messages properly. \texttt{MessageBus} has more also more advanced features than just trasmitting messages to all components. Every component has to determine message types that it is interested in. Components also determine the priority level for each message type. This way \texttt{MessageBus} doesn't have to transmit all messages to all components. Instead, it notifies only those components that are really interested in some particular message type. For more, \texttt{MessageBus} notifies those components in the order of priorites. For example, it is more critical to start recording as soon as possible than display notification bubble that recording has been started. That's why DVB-recorder tells the \texttt{MessageBus} that it has \texttt{VERY\_HIGH} priori |
1082 | ty for \texttt{START\_RECORDING} message type and similary notification system says that it has \texttt{VERY\_LOW} priority. Now, when \texttt{START\_RECORDING} message occurs, the \texttt{MessageBus} knows that it should first notify DVB-recorder and after that notification system. MessageBus is locked in such a way that only one message can occur at the time on the bus. |
1083 | - |
1084 | -\subsubsection{Message} |
1085 | -Message is an object of \texttt{Message} type. These are the objects that are transmitted via \texttt{MessageBus}. Each Message has a message type and possibly some user data. Data part can contain arbitary data or it can be empty. Message types are defined in \texttt{MessageType} class. I suggest to take a look of that class, because it provides more information about the meaning of different message types. When component wants to send a \texttt{Message} to the \texttt{MessageBus} it needs to create a Message object and after that call \texttt{MessageBus}-object's \texttt{notifyMessage(message\_obj)} method. |
1086 | - |
1087 | -\subsubsection{Message scheduler} |
1088 | -\texttt{MessageScheduler} object generates messages to the message bus. When backend starts, it registers message types and intervals to the \texttt{MessageScheduler}. After that messages are generated to the message bus in given time intervals. When message types are registered to the \texttt{MessageScheduler}, it creates a random time interval for each message type. This prevents all messages to be generated at the same time to the message bus. Random time interval is waited only the first time. After this messages are generated with given time interval. This scheduler is used for updateing guide and feed cache every now and then. It is also easy to add new features that require frequent updates. |
1089 | - |
1090 | -\subsubsection{Connection server} |
1091 | -\texttt{ConnectionServer} listens incoming client connections and binds connected clients to the MessageBus. Every client is handled in it's own thread. This class is strictly binded to the MessageBusProxy class which we will discuss in next section. |
1092 | - |
1093 | -\subsubsection{Message bus proxy} |
1094 | -\texttt{MessageBusProxy} object hides the complexity of sockets. \texttt{MessageBusProxy} is used in client process (Frontend for example) and it is abstraction of backend's \texttt{MessageBus}. In other words, client processes can act like backend components simply by using object of this class. This makes communication between components very easy no matter in which process the components are actually running. |
1095 | |
1096 | === removed file 'docs/cache.tex' |
1097 | --- docs/cache.tex 2008-12-14 19:58:40 +0000 |
1098 | +++ docs/cache.tex 1970-01-01 00:00:00 +0000 |
1099 | @@ -1,79 +0,0 @@ |
1100 | -Entertainer has a cache almost for every data type that it handles including |
1101 | -images, videos, music, feeds, tv-guide and recordings. All caches are |
1102 | -implemented as SQLite databases. Every cache is stored in it's own file that |
1103 | -has \texttt{db} extension. Caches are stored in the following directory: |
1104 | -\texttt{$\sim$/.entertainer/cache}. |
1105 | - |
1106 | -\subsection{Descriptions} |
1107 | - |
1108 | -\subsubsection{Image cache} |
1109 | -Image cache contains all information of the images. It has two tables: |
1110 | -\texttt{Image} and \texttt{Album}. Album has a title and description and it |
1111 | -contains images. Image table contains information on images. One row matches |
1112 | -to one file. Entertainer considers folder as an album and images in that folder |
1113 | -belog to that album. Subfolder are own albums and there is no deep hierarcy in |
1114 | -image cache. In figure \ref{fig:image_er} is ER-diagram of the image cache database. |
1115 | -This database is stored in \texttt{$\sim$/.entertainer/cache/image.db}. |
1116 | - |
1117 | -\subsubsection{Music cache} |
1118 | -Music cache contains everything related to the music library. Entertainer's |
1119 | -music library contains Albums, Tracks, Artists and Playlists. All this data |
1120 | -is stored in music cache database, which is stored in |
1121 | -\texttt{$\sim$/.entertainer/cache/music.db} -file. In figure \ref{fig:music_er} |
1122 | -you can see the structure of the cache. As you can see, there is only \texttt{Track} |
1123 | -and \texttt{Playlist} tables. MusicLibrary handels the abstraction of albums and |
1124 | -artists. This cache is created in \texttt{backend/components/mediacache/music\_cache.py}. |
1125 | - |
1126 | -\subsubsection{Video cache} |
1127 | -Video cache contains information on video files. These do NOT include recorded |
1128 | -TV-shows, but only the files that are in video library. Video cache contains two |
1129 | -tabels \texttt{videofile} and \texttt{metadata} (actually these should be merged). |
1130 | -\texttt{Videofile} table contains basic information on video and \texttt{metadata} |
1131 | -some extrnal information. Metadata table contains type field, which determinse |
1132 | -the type of the videofile. Allowed values are \texttt{MOVIE}, \texttt{CLIP} and |
1133 | -\texttt{TV-SERIES}. According to this field the video is represnted as a |
1134 | -\texttt{Movie}, \texttt{TVEpisode} or \texttt{VideoClip} object in VideoLibrary |
1135 | -(client side). This cache database is stored in \texttt{$\sim$/.entertainer/cache/video.db}. |
1136 | -In figure \ref{fig:video_er} |
1137 | - |
1138 | -\subsubsection{Feed cache} |
1139 | -Feed cache includes all feeds and entries of those feeds. Entry is a one ''post'' |
1140 | -of the feed. Backend fetches feeds time to time and updates the cache. Cache keeps |
1141 | -up to 50 entries per feed. In figure \ref{fig:feed_er} you can see the structure |
1142 | -of the Feed cache. Cache is stored in \texttt{$\sim$/.entertainer/cache/feed.db} |
1143 | - |
1144 | -\subsection{ER-diagrams} |
1145 | -\begin{comment} |
1146 | - |
1147 | -\begin{figure}[htb] |
1148 | - \begin{center} |
1149 | - \includegraphics[angle=0,scale=0.6]{diagrams/ER/image_library_er.png} |
1150 | - \caption{ER-diagram of the image cache.} |
1151 | - \label{fig:image_er} |
1152 | - \end{center} |
1153 | -\end{figure} |
1154 | - |
1155 | -\begin{figure}[htb] |
1156 | - \begin{center} |
1157 | - \includegraphics[angle=0,scale=0.6]{diagrams/ER/music_library_er.png} |
1158 | - \caption{ER-diagram of the music cache.} |
1159 | - \label{fig:music_er} |
1160 | - \end{center} |
1161 | -\end{figure} |
1162 | - |
1163 | -\begin{figure}[htb] |
1164 | - \begin{center} |
1165 | - \includegraphics[angle=0,scale=0.6]{diagrams/ER/feed_library_er.png} |
1166 | - \caption{ER-diagram of the video cache.} |
1167 | - \label{fig:video_er} |
1168 | - \end{center} |
1169 | -\end{figure} |
1170 | - |
1171 | -\begin{figure}[htb] |
1172 | - \begin{center} |
1173 | - \includegraphics[angle=0,scale=0.6]{diagrams/ER/feed_library_er.png} |
1174 | - \caption{ER-diagram of the feed cache.} |
1175 | - \label{fig:feed_er} |
1176 | - \end{center} |
1177 | -\end{figure} |
1178 | -\end{comment} |
1179 | |
1180 | === removed file 'docs/components.tex' |
1181 | --- docs/components.tex 2008-12-14 19:58:40 +0000 |
1182 | +++ docs/components.tex 1970-01-01 00:00:00 +0000 |
1183 | @@ -1,8 +0,0 @@ |
1184 | -\subsubsection{System tray icon} |
1185 | -(Partly depricated information) System tray icon is a small icon that is usually displayed in notification area. \texttt{SystemTrayIcon} class implements this icon and it's pop-up menu, which allows user to manage Entertainer media center. Pop-up menu contains Log viewer, which can be used to see Entertainer's log. It also allowes easy way to execute configuration GUIs and frontend process. SystemTrayIcon class implements MessageHandler and it is interested of messages \texttt{RECORDING\_STARTED} and \texttt{RECORDING\_STOPPED}. When Entertainer is recording a TV-show the system tray icon changes to the recording icon. This way user can easily see that Entertainer is currently recording. |
1186 | - |
1187 | -\subsubsection{Notification system} |
1188 | -Notification system displays notification bubbels on the desktop. Notification system is implemented with \texttt{Notify} class that uses \emph{libnotify} library. Notification bubbles are displayed when Entertainer backend begins or ends recording and also if there are conflicts between scheduled recordings. It's easy to add new notifications by modifying the \texttt{Notify} class. \texttt{Notify} implements \texttt{MessageHandler} and it's registered to the message bus when backend starts. |
1189 | - |
1190 | -\subsubsection{Feed manager} |
1191 | -Feed manager is responsible of updateing feed cache. At the moment, only RSS-feeds are supported. \texttt{FeedManager} and \texttt{FeedFetcher} classes implements this feature. \texttt{FeedManager} implements \texttt{MessageHandler} interface and it is registered to the message bus. When \texttt{FeedManager} receives \texttt{UPDATE\_FEEDS} message, it executes a new \texttt{FeedFetcher} thread that does the actually cache updating. When update is done, \texttt{FEED\_CACHE\_UPDATED} message is emitted to the message bus. |
1192 | |
1193 | === removed file 'docs/content_management_gui.tex' |
1194 | --- docs/content_management_gui.tex 2008-12-14 19:58:40 +0000 |
1195 | +++ docs/content_management_gui.tex 1970-01-01 00:00:00 +0000 |
1196 | @@ -1,1 +0,0 @@ |
1197 | -Content Management GUI is exactly like Preferences GUI, but it is used to manage content of the Entertainer. This GUI application allows user to add and remove content of the Entertainer easily. Content Management GUI edits the \texttt{/.entertainer/content.cfg} -file and also notifies the backend when changes occur. Just like the Preferences GUI. |
1198 | |
1199 | === removed file 'docs/developer_documentation.aux' |
1200 | --- docs/developer_documentation.aux 2008-12-14 19:58:40 +0000 |
1201 | +++ docs/developer_documentation.aux 1970-01-01 00:00:00 +0000 |
1202 | @@ -1,38 +0,0 @@ |
1203 | -\relax |
1204 | -\select@language{english} |
1205 | -\@writefile{toc}{\select@language{english}} |
1206 | -\@writefile{lof}{\select@language{english}} |
1207 | -\@writefile{lot}{\select@language{english}} |
1208 | -\@writefile{toc}{\contentsline {section}{\numberline {1}INTRODUCTION}{1}} |
1209 | -\@writefile{toc}{\contentsline {section}{\numberline {2}HIGH LEVEL ARCHITECTURE}{2}} |
1210 | -\@writefile{lof}{\contentsline {figure}{\numberline {1}{\ignorespaces High-level architecure}}{2}} |
1211 | -\newlabel{fig:high_level_arch}{{1}{2}} |
1212 | -\@writefile{toc}{\contentsline {section}{\numberline {3}CACHE}{4}} |
1213 | -\@writefile{toc}{\contentsline {subsection}{\numberline {3.1}Descriptions}{4}} |
1214 | -\@writefile{toc}{\contentsline {subsubsection}{\numberline {3.1.1}Image cache}{4}} |
1215 | -\@writefile{toc}{\contentsline {subsubsection}{\numberline {3.1.2}Music cache}{4}} |
1216 | -\@writefile{toc}{\contentsline {subsubsection}{\numberline {3.1.3}Video cache}{5}} |
1217 | -\@writefile{toc}{\contentsline {subsubsection}{\numberline {3.1.4}Feed cache}{5}} |
1218 | -\@writefile{toc}{\contentsline {subsection}{\numberline {3.2}ER-diagrams}{5}} |
1219 | -\@writefile{toc}{\contentsline {section}{\numberline {4}BACKEND}{6}} |
1220 | -\@writefile{toc}{\contentsline {subsection}{\numberline {4.1}Core}{6}} |
1221 | -\@writefile{lof}{\contentsline {figure}{\numberline {2}{\ignorespaces Backend architecure}}{6}} |
1222 | -\newlabel{fig:backend_arch}{{2}{6}} |
1223 | -\@writefile{toc}{\contentsline {subsubsection}{\numberline {4.1.1}Message bus}{7}} |
1224 | -\@writefile{toc}{\contentsline {subsubsection}{\numberline {4.1.2}Message}{7}} |
1225 | -\@writefile{toc}{\contentsline {subsubsection}{\numberline {4.1.3}Message scheduler}{7}} |
1226 | -\@writefile{toc}{\contentsline {subsubsection}{\numberline {4.1.4}Connection server}{8}} |
1227 | -\@writefile{toc}{\contentsline {subsubsection}{\numberline {4.1.5}Message bus proxy}{8}} |
1228 | -\@writefile{toc}{\contentsline {subsection}{\numberline {4.2}Components}{8}} |
1229 | -\@writefile{toc}{\contentsline {subsubsection}{\numberline {4.2.1}System tray icon}{8}} |
1230 | -\@writefile{toc}{\contentsline {subsubsection}{\numberline {4.2.2}Notification system}{9}} |
1231 | -\@writefile{toc}{\contentsline {subsubsection}{\numberline {4.2.3}Feed manager}{9}} |
1232 | -\@writefile{toc}{\contentsline {section}{\numberline {5}FRONTEND}{10}} |
1233 | -\@writefile{toc}{\contentsline {subsection}{\numberline {5.1}Architecture}{10}} |
1234 | -\@writefile{toc}{\contentsline {subsection}{\numberline {5.2}Graphical User Interface}{10}} |
1235 | -\@writefile{lof}{\contentsline {figure}{\numberline {3}{\ignorespaces Entertainer GUI layers.}}{11}} |
1236 | -\newlabel{fig:layers}{{3}{11}} |
1237 | -\@writefile{toc}{\contentsline {section}{\numberline {6}EXTRA TOOLS FOR ENTERTAINER}{13}} |
1238 | -\@writefile{toc}{\contentsline {subsection}{\numberline {6.1}Preferences GUI}{13}} |
1239 | -\@writefile{toc}{\contentsline {subsection}{\numberline {6.2}Content management GUI}{13}} |
1240 | -\@writefile{toc}{\contentsline {subsection}{\numberline {6.3}Message bus notifier}{13}} |
1241 | |
1242 | === removed file 'docs/developer_documentation.tex' |
1243 | --- docs/developer_documentation.tex 2008-12-14 19:58:40 +0000 |
1244 | +++ docs/developer_documentation.tex 1970-01-01 00:00:00 +0000 |
1245 | @@ -1,94 +0,0 @@ |
1246 | -\documentclass[12pt,a4paper]{article} |
1247 | -\usepackage[utf8]{inputenc} |
1248 | -\usepackage[english]{babel} |
1249 | - |
1250 | -\usepackage{graphicx} |
1251 | -\usepackage{verbatim} |
1252 | -\usepackage{cite} |
1253 | - |
1254 | -% Marginal (left/right) |
1255 | -\setlength{\hoffset}{0mm} |
1256 | -\setlength{\marginparsep}{0mm} |
1257 | -\setlength{\marginparwidth}{0mm} |
1258 | -\setlength{\textwidth}{\paperwidth} |
1259 | -\addtolength\textwidth{-60 mm} |
1260 | -\setlength{\oddsidemargin}{-1 in} |
1261 | -\addtolength\oddsidemargin{40 mm} |
1262 | - |
1263 | -% Marginal (top/down) |
1264 | -\setlength{\voffset}{0 mm} |
1265 | -\setlength{\topmargin}{0 mm} |
1266 | -\setlength{\headheight}{12 pt} |
1267 | -\setlength{\headsep}{24 pt} |
1268 | -\setlength{\textheight}{230mm} |
1269 | -\setlength{\footnotesep}{12 pt} |
1270 | - |
1271 | -\setlength{\parindent}{0pt} |
1272 | -\setlength{\parskip}{0.05cm} |
1273 | -\linespread{1.3} |
1274 | - |
1275 | -\title{Entertainer - Developer's documentation} |
1276 | -\author{Lauri Taimila} |
1277 | -\date{05/27/2007} |
1278 | - |
1279 | -\begin{document} |
1280 | - |
1281 | - % Cover page |
1282 | - \pagestyle{empty} |
1283 | - \maketitle |
1284 | - \pagebreak |
1285 | - |
1286 | - % Page numbering for contents |
1287 | - \setcounter{page}{1} |
1288 | - \pagestyle{plain} |
1289 | - \markright{Latex-dokumentti} |
1290 | - \pagenumbering{roman} |
1291 | - |
1292 | - \renewcommand{\baselinestretch}{1.2} |
1293 | - \tableofcontents |
1294 | - \pagebreak |
1295 | - |
1296 | - % Start page numbering from Introduction page |
1297 | - \newpage |
1298 | - \setcounter{page}{1} |
1299 | - \pagenumbering{arabic} |
1300 | - \pagestyle{plain} |
1301 | - |
1302 | - \renewcommand{\baselinestretch}{1.655} |
1303 | - \setlength{\parskip}{0.7cm plus3mm minus3mm} |
1304 | - |
1305 | - \section{INTRODUCTION} |
1306 | - \input{introduction.tex} |
1307 | - \newpage |
1308 | - |
1309 | - \section{HIGH LEVEL ARCHITECTURE} |
1310 | - \input{high_level_architecture.tex} |
1311 | - \newpage |
1312 | - |
1313 | - \section{CACHE} |
1314 | - \input{cache.tex} |
1315 | - \newpage |
1316 | - |
1317 | - \section{BACKEND} |
1318 | - \subsection{Core} |
1319 | - \input{backend_core.tex} |
1320 | - \subsection{Components} |
1321 | - \input{components.tex} |
1322 | - |
1323 | - \newpage |
1324 | - \section{FRONTEND} |
1325 | - \subsection{Architecture} |
1326 | - \input{frontend_architecture.tex} |
1327 | - \subsection{Graphical User Interface} |
1328 | - \input{gui.tex} |
1329 | - |
1330 | - \newpage |
1331 | - \section{EXTRA TOOLS FOR ENTERTAINER} |
1332 | - \subsection{Preferences GUI} |
1333 | - \input{preferences_gui.tex} |
1334 | - \subsection{Content management GUI} |
1335 | - \input{content_management_gui.tex} |
1336 | - \subsection{Message bus notifier} |
1337 | - \input{message_bus_notifier.tex} |
1338 | -\end{document} |
1339 | - |
1340 | |
1341 | === removed file 'docs/developer_documentation.toc' |
1342 | --- docs/developer_documentation.toc 2008-12-14 19:58:40 +0000 |
1343 | +++ docs/developer_documentation.toc 1970-01-01 00:00:00 +0000 |
1344 | @@ -1,28 +0,0 @@ |
1345 | -\select@language {english} |
1346 | -\contentsline {section}{\numberline {1}INTRODUCTION}{1} |
1347 | -\contentsline {section}{\numberline {2}HIGH LEVEL ARCHITECTURE}{2} |
1348 | -\contentsline {section}{\numberline {3}CACHE}{4} |
1349 | -\contentsline {subsection}{\numberline {3.1}Descriptions}{4} |
1350 | -\contentsline {subsubsection}{\numberline {3.1.1}Image cache}{4} |
1351 | -\contentsline {subsubsection}{\numberline {3.1.2}Music cache}{4} |
1352 | -\contentsline {subsubsection}{\numberline {3.1.3}Video cache}{5} |
1353 | -\contentsline {subsubsection}{\numberline {3.1.4}Feed cache}{5} |
1354 | -\contentsline {subsection}{\numberline {3.2}ER-diagrams}{5} |
1355 | -\contentsline {section}{\numberline {4}BACKEND}{6} |
1356 | -\contentsline {subsection}{\numberline {4.1}Core}{6} |
1357 | -\contentsline {subsubsection}{\numberline {4.1.1}Message bus}{7} |
1358 | -\contentsline {subsubsection}{\numberline {4.1.2}Message}{7} |
1359 | -\contentsline {subsubsection}{\numberline {4.1.3}Message scheduler}{7} |
1360 | -\contentsline {subsubsection}{\numberline {4.1.4}Connection server}{8} |
1361 | -\contentsline {subsubsection}{\numberline {4.1.5}Message bus proxy}{8} |
1362 | -\contentsline {subsection}{\numberline {4.2}Components}{8} |
1363 | -\contentsline {subsubsection}{\numberline {4.2.1}System tray icon}{8} |
1364 | -\contentsline {subsubsection}{\numberline {4.2.2}Notification system}{9} |
1365 | -\contentsline {subsubsection}{\numberline {4.2.3}Feed manager}{9} |
1366 | -\contentsline {section}{\numberline {5}FRONTEND}{10} |
1367 | -\contentsline {subsection}{\numberline {5.1}Architecture}{10} |
1368 | -\contentsline {subsection}{\numberline {5.2}Graphical User Interface}{10} |
1369 | -\contentsline {section}{\numberline {6}EXTRA TOOLS FOR ENTERTAINER}{13} |
1370 | -\contentsline {subsection}{\numberline {6.1}Preferences GUI}{13} |
1371 | -\contentsline {subsection}{\numberline {6.2}Content management GUI}{13} |
1372 | -\contentsline {subsection}{\numberline {6.3}Message bus notifier}{13} |
1373 | |
1374 | === removed directory 'docs/diagrams' |
1375 | === removed directory 'docs/diagrams/Backend' |
1376 | === removed file 'docs/diagrams/Backend/Backend_classes_in_detail.dia' |
1377 | Binary files docs/diagrams/Backend/Backend_classes_in_detail.dia 2008-12-14 19:58:40 +0000 and docs/diagrams/Backend/Backend_classes_in_detail.dia 1970-01-01 00:00:00 +0000 differ |
1378 | === removed file 'docs/diagrams/Backend/Backend_classes_in_detail.png' |
1379 | Binary files docs/diagrams/Backend/Backend_classes_in_detail.png 2008-12-14 19:58:40 +0000 and docs/diagrams/Backend/Backend_classes_in_detail.png 1970-01-01 00:00:00 +0000 differ |
1380 | === removed file 'docs/diagrams/Backend/backend_class_diagram.dia' |
1381 | Binary files docs/diagrams/Backend/backend_class_diagram.dia 2008-12-14 19:58:40 +0000 and docs/diagrams/Backend/backend_class_diagram.dia 1970-01-01 00:00:00 +0000 differ |
1382 | === removed file 'docs/diagrams/Backend/backend_class_diagram.png' |
1383 | Binary files docs/diagrams/Backend/backend_class_diagram.png 2008-12-14 19:58:40 +0000 and docs/diagrams/Backend/backend_class_diagram.png 1970-01-01 00:00:00 +0000 differ |
1384 | === removed file 'docs/diagrams/Backend/backend_class_diagram_new.dia' |
1385 | Binary files docs/diagrams/Backend/backend_class_diagram_new.dia 2008-12-14 19:58:40 +0000 and docs/diagrams/Backend/backend_class_diagram_new.dia 1970-01-01 00:00:00 +0000 differ |
1386 | === removed file 'docs/diagrams/Backend/backend_class_diagram_new.png' |
1387 | Binary files docs/diagrams/Backend/backend_class_diagram_new.png 2008-12-14 19:58:40 +0000 and docs/diagrams/Backend/backend_class_diagram_new.png 1970-01-01 00:00:00 +0000 differ |
1388 | === removed file 'docs/diagrams/Backend/backend_hi_level_arch.dia' |
1389 | Binary files docs/diagrams/Backend/backend_hi_level_arch.dia 2008-12-14 19:58:40 +0000 and docs/diagrams/Backend/backend_hi_level_arch.dia 1970-01-01 00:00:00 +0000 differ |
1390 | === removed file 'docs/diagrams/Backend/high_level.png' |
1391 | Binary files docs/diagrams/Backend/high_level.png 2008-12-14 19:58:40 +0000 and docs/diagrams/Backend/high_level.png 1970-01-01 00:00:00 +0000 differ |
1392 | === removed file 'docs/diagrams/Backend/image_cache_sequece_diagram.dia' |
1393 | Binary files docs/diagrams/Backend/image_cache_sequece_diagram.dia 2008-12-14 19:58:40 +0000 and docs/diagrams/Backend/image_cache_sequece_diagram.dia 1970-01-01 00:00:00 +0000 differ |
1394 | === removed file 'docs/diagrams/Backend/image_cache_sequece_diagram.png' |
1395 | Binary files docs/diagrams/Backend/image_cache_sequece_diagram.png 2008-12-14 19:58:40 +0000 and docs/diagrams/Backend/image_cache_sequece_diagram.png 1970-01-01 00:00:00 +0000 differ |
1396 | === removed file 'docs/diagrams/Backend/media_indexer_class_diagram.dia' |
1397 | Binary files docs/diagrams/Backend/media_indexer_class_diagram.dia 2008-12-14 19:58:40 +0000 and docs/diagrams/Backend/media_indexer_class_diagram.dia 1970-01-01 00:00:00 +0000 differ |
1398 | === removed file 'docs/diagrams/Backend/media_indexer_class_diagram.png' |
1399 | Binary files docs/diagrams/Backend/media_indexer_class_diagram.png 2008-12-14 19:58:40 +0000 and docs/diagrams/Backend/media_indexer_class_diagram.png 1970-01-01 00:00:00 +0000 differ |
1400 | === removed directory 'docs/diagrams/ER' |
1401 | === removed file 'docs/diagrams/ER/feed_library_er.dia' |
1402 | Binary files docs/diagrams/ER/feed_library_er.dia 2008-12-14 19:58:40 +0000 and docs/diagrams/ER/feed_library_er.dia 1970-01-01 00:00:00 +0000 differ |
1403 | === removed file 'docs/diagrams/ER/feed_library_er.png' |
1404 | Binary files docs/diagrams/ER/feed_library_er.png 2008-12-14 19:58:40 +0000 and docs/diagrams/ER/feed_library_er.png 1970-01-01 00:00:00 +0000 differ |
1405 | === removed file 'docs/diagrams/ER/image_library_er.dia' |
1406 | Binary files docs/diagrams/ER/image_library_er.dia 2008-12-14 19:58:40 +0000 and docs/diagrams/ER/image_library_er.dia 1970-01-01 00:00:00 +0000 differ |
1407 | === removed file 'docs/diagrams/ER/image_library_er.png' |
1408 | Binary files docs/diagrams/ER/image_library_er.png 2008-12-14 19:58:40 +0000 and docs/diagrams/ER/image_library_er.png 1970-01-01 00:00:00 +0000 differ |
1409 | === removed file 'docs/diagrams/ER/music_library_er.dia' |
1410 | Binary files docs/diagrams/ER/music_library_er.dia 2008-12-14 19:58:40 +0000 and docs/diagrams/ER/music_library_er.dia 1970-01-01 00:00:00 +0000 differ |
1411 | === removed file 'docs/diagrams/ER/music_library_er.png' |
1412 | Binary files docs/diagrams/ER/music_library_er.png 2008-12-14 19:58:40 +0000 and docs/diagrams/ER/music_library_er.png 1970-01-01 00:00:00 +0000 differ |
1413 | === removed directory 'docs/diagrams/Frontend' |
1414 | === removed file 'docs/diagrams/Frontend/frontend_class_diagram.dia' |
1415 | Binary files docs/diagrams/Frontend/frontend_class_diagram.dia 2008-12-14 19:58:40 +0000 and docs/diagrams/Frontend/frontend_class_diagram.dia 1970-01-01 00:00:00 +0000 differ |
1416 | === removed file 'docs/diagrams/Frontend/frontend_class_diagram.png' |
1417 | Binary files docs/diagrams/Frontend/frontend_class_diagram.png 2008-12-14 19:58:40 +0000 and docs/diagrams/Frontend/frontend_class_diagram.png 1970-01-01 00:00:00 +0000 differ |
1418 | === removed file 'docs/diagrams/Frontend/frontend_class_diagram_high.dia' |
1419 | Binary files docs/diagrams/Frontend/frontend_class_diagram_high.dia 2008-12-14 19:58:40 +0000 and docs/diagrams/Frontend/frontend_class_diagram_high.dia 1970-01-01 00:00:00 +0000 differ |
1420 | === removed file 'docs/diagrams/Frontend/frontend_class_diagram_high.png' |
1421 | Binary files docs/diagrams/Frontend/frontend_class_diagram_high.png 2008-12-14 19:58:40 +0000 and docs/diagrams/Frontend/frontend_class_diagram_high.png 1970-01-01 00:00:00 +0000 differ |
1422 | === removed file 'docs/diagrams/Frontend/gui.dia' |
1423 | Binary files docs/diagrams/Frontend/gui.dia 2008-12-14 19:58:40 +0000 and docs/diagrams/Frontend/gui.dia 1970-01-01 00:00:00 +0000 differ |
1424 | === removed directory 'docs/diagrams/Frontend/medialibrary' |
1425 | === removed file 'docs/diagrams/Frontend/medialibrary/feed_library.dia' |
1426 | Binary files docs/diagrams/Frontend/medialibrary/feed_library.dia 2008-12-14 19:58:40 +0000 and docs/diagrams/Frontend/medialibrary/feed_library.dia 1970-01-01 00:00:00 +0000 differ |
1427 | === removed file 'docs/diagrams/Frontend/medialibrary/feed_library.png' |
1428 | Binary files docs/diagrams/Frontend/medialibrary/feed_library.png 2008-12-14 19:58:40 +0000 and docs/diagrams/Frontend/medialibrary/feed_library.png 1970-01-01 00:00:00 +0000 differ |
1429 | === removed file 'docs/diagrams/Frontend/medialibrary/image_library.dia' |
1430 | Binary files docs/diagrams/Frontend/medialibrary/image_library.dia 2008-12-14 19:58:40 +0000 and docs/diagrams/Frontend/medialibrary/image_library.dia 1970-01-01 00:00:00 +0000 differ |
1431 | === removed file 'docs/diagrams/Frontend/medialibrary/image_library.png' |
1432 | Binary files docs/diagrams/Frontend/medialibrary/image_library.png 2008-12-14 19:58:40 +0000 and docs/diagrams/Frontend/medialibrary/image_library.png 1970-01-01 00:00:00 +0000 differ |
1433 | === removed file 'docs/diagrams/Frontend/medialibrary/music_library.dia' |
1434 | Binary files docs/diagrams/Frontend/medialibrary/music_library.dia 2008-12-14 19:58:40 +0000 and docs/diagrams/Frontend/medialibrary/music_library.dia 1970-01-01 00:00:00 +0000 differ |
1435 | === removed file 'docs/diagrams/Frontend/medialibrary/music_library.png' |
1436 | Binary files docs/diagrams/Frontend/medialibrary/music_library.png 2008-12-14 19:58:40 +0000 and docs/diagrams/Frontend/medialibrary/music_library.png 1970-01-01 00:00:00 +0000 differ |
1437 | === removed file 'docs/diagrams/Frontend/medialibrary/video_library.dia' |
1438 | Binary files docs/diagrams/Frontend/medialibrary/video_library.dia 2008-12-14 19:58:40 +0000 and docs/diagrams/Frontend/medialibrary/video_library.dia 1970-01-01 00:00:00 +0000 differ |
1439 | === removed file 'docs/diagrams/Frontend/medialibrary/video_library.png' |
1440 | Binary files docs/diagrams/Frontend/medialibrary/video_library.png 2008-12-14 19:58:40 +0000 and docs/diagrams/Frontend/medialibrary/video_library.png 1970-01-01 00:00:00 +0000 differ |
1441 | === removed file 'docs/diagrams/Frontend/weather.dia' |
1442 | Binary files docs/diagrams/Frontend/weather.dia 2008-03-08 16:42:27 +0000 and docs/diagrams/Frontend/weather.dia 1970-01-01 00:00:00 +0000 differ |
1443 | === removed file 'docs/diagrams/gui_layers.png' |
1444 | Binary files docs/diagrams/gui_layers.png 2008-01-12 22:26:09 +0000 and docs/diagrams/gui_layers.png 1970-01-01 00:00:00 +0000 differ |
1445 | === removed file 'docs/diagrams/high-level-diagram.dia' |
1446 | Binary files docs/diagrams/high-level-diagram.dia 2008-12-14 19:58:40 +0000 and docs/diagrams/high-level-diagram.dia 1970-01-01 00:00:00 +0000 differ |
1447 | === removed file 'docs/diagrams/high-level-diagram.png' |
1448 | Binary files docs/diagrams/high-level-diagram.png 2008-12-14 19:58:40 +0000 and docs/diagrams/high-level-diagram.png 1970-01-01 00:00:00 +0000 differ |
1449 | === added file 'docs/entertainer-depgraph.png' |
1450 | Binary files docs/entertainer-depgraph.png 1970-01-01 00:00:00 +0000 and docs/entertainer-depgraph.png 2009-02-01 19:35:11 +0000 differ |
1451 | === renamed file 'docs/entertainer.1.gz' => 'docs/entertainer.1' |
1452 | Binary files docs/entertainer.1.gz 2008-12-16 03:37:47 +0000 and docs/entertainer.1 2009-02-01 06:12:43 +0000 differ |
1453 | === removed file 'docs/frontend_architecture.tex' |
1454 | --- docs/frontend_architecture.tex 2008-01-12 22:26:09 +0000 |
1455 | +++ docs/frontend_architecture.tex 1970-01-01 00:00:00 +0000 |
1456 | @@ -1,1 +0,0 @@ |
1457 | -Not written yet... |
1458 | |
1459 | === removed file 'docs/gui.tex' |
1460 | --- docs/gui.tex 2008-01-12 22:26:09 +0000 |
1461 | +++ docs/gui.tex 1970-01-01 00:00:00 +0000 |
1462 | @@ -1,68 +0,0 @@ |
1463 | -Graphical user interface is one of the most important parts of the Media Center |
1464 | -application. Entertainer user interface is implemented with Clutter and GTK. Frontend |
1465 | -consists of GTK-window that contains toolbar, menu bar, status bar and the most |
1466 | -important part ,\textit{Clutter stage}, which is displayed via Clutter-GTK widget. |
1467 | -Frontend also includes preferences dialog, content management dialog and log viewer. |
1468 | -All these three sub components can be also executed as separated processes without |
1469 | -executing the whole frontend. These dialogs are discussed more depth in chapter 6. |
1470 | - |
1471 | -In this chapter we concentrate to the Clutter part of the GUI. The main class of |
1472 | -the GUI is \textit{UserInterface} that is responsible of managing screen changes |
1473 | -and creating all screens. \textit{UserInterface} object also receives all user |
1474 | -actions. When key press is received, UserInterface object method \texttt{handle\_key\_press\_event()} |
1475 | -is called. This method decides how to react to key press action. Usually it just |
1476 | -forwards event to the current screen. Current screen has internal logic for events. |
1477 | - |
1478 | -\subsubsection*{Entertainer UI layers} |
1479 | -Entertainer UI can be thinked as a set of layers that are piled on to each other. |
1480 | -This screen stack is illustrated in the figure \ref{fig:layers}. |
1481 | - |
1482 | -\begin{figure}[htb] |
1483 | - \begin{center} |
1484 | - \includegraphics[angle=0,scale=0.7]{diagrams/gui_layers.png} |
1485 | - \caption{Entertainer GUI layers.} |
1486 | - \label{fig:layers} |
1487 | - \end{center} |
1488 | -\end{figure} |
1489 | - |
1490 | -Figure above shows how video is always displayd under menu overlay and screen |
1491 | -widgets. If video is not running the whole layer doesn't exists. In this case |
1492 | -the background layer is displayed through menu overlay image. If current screen |
1493 | -is OSD type, then menu overlay layer is hidden. This way OSD screens allow user |
1494 | -to see video playback on screen as it should be seen. Menu overlay layer is drawn |
1495 | -only when user is navigating in menus. This figure omits the possibility of two |
1496 | -screens to be displayed at the same time. This happends when another screen is |
1497 | -type of DIALOG. Dialogs are shown on top of the current screen. |
1498 | - |
1499 | -\subsubsection*{Screen life cycle} |
1500 | -Entertainer has two important concepts: \textit{Screen} and \textit{Transition}. |
1501 | -These both are also interfaces that many classes implement. Screen is a set of |
1502 | -Clutter actors, which together create one view. View is what users sees on screen. |
1503 | -Transition is a mechanism to animate screen switches. Say, when user selects |
1504 | -photo album from the photo album list, we need to switch from the photo screen |
1505 | -to the album screen. When this happens. We call UserInterface objects's c\texttt{hangeScreen()}. |
1506 | -This call creates a new screen (in this case album screen) and then gives current |
1507 | -screen and new screen to the Transition object, which animates screen switch. |
1508 | - |
1509 | -Screen is created when it is needed, in other words, when user enters to that screen. |
1510 | -When screen object is created it is added to the Clutter stage object. It's also |
1511 | -pushed into the \textit{Screen history}, which is a stack of Screen objects. |
1512 | -\texttt{ScreenHistory} object keeps record of recent screens. This allows user |
1513 | -to navigate "back" just like in web-browsers. History size can be changed from |
1514 | -the preferences dialog. Screen is added to the stage when it is created, but |
1515 | -when we remove it? There are two possibilites: When history size is exceeded the |
1516 | -oldest screen is removed. Also when user navigates to "back", the current screen |
1517 | -is NOT added into the history and it is removed from stage immediately. If we would |
1518 | -add screens into the history when navigating back, then we would create an endless |
1519 | -loop of two screens. |
1520 | - |
1521 | -\subsubsection*{Creating a new Screen or Transition effect} |
1522 | -If you want to create a new view to the Entertainer, say e-mail reader, you need |
1523 | -to write a new \texttt{EmailScreen} class that implements \texttt{Screen} interface. |
1524 | -If you want to create a new transition effect you just implement \texttt{Transition} |
1525 | -interface which contains only two methods. It's recommended to look into the |
1526 | - \texttt{FadeTransition} class to get the idea how transitions effects work. |
1527 | -\textbf{Notice} that if animation direction is "backwards" then you need to |
1528 | -remove old screen from the stage after animation has been displayed. This can |
1529 | -be done by using 'completed' signal with Clutter \texttt{Timeline} object. |
1530 | - |
1531 | |
1532 | === removed file 'docs/high_level_architecture.tex' |
1533 | --- docs/high_level_architecture.tex 2008-12-14 19:58:40 +0000 |
1534 | +++ docs/high_level_architecture.tex 1970-01-01 00:00:00 +0000 |
1535 | @@ -1,13 +0,0 @@ |
1536 | -Entertainer uses client-server achitecture and it has two main components called \emph{frontend} and \emph{backend}. The backend is a daemon (kind of) server process that runs in the background all the time. It is respossible of keeping the \emph{media library cache}, RSS-feeds and TV-Guide up to date and recording scheduled TV-shows. In other words, backend is respossible of everything else, but displaying media on the screen and interacting with the user. Frontend is a GUI part of the application and it displays photographs, plays music and videos. Frontend can be used via remote control and keyboard. Figure \ref{fig:high_level_arch} illustrates the high level architecture of the Entertainer media center application. There are also other processes included to the Entertainer. Those extra processes offer stuff like system tray icon and GTK-interfaces for preferences. |
1537 | - |
1538 | -\begin{figure}[htb] |
1539 | - \begin{center} |
1540 | - \includegraphics[angle=0,scale=0.5]{diagrams/high-level-diagram.png} |
1541 | - \caption{High-level architecure} |
1542 | - \label{fig:high_level_arch} |
1543 | - \end{center} |
1544 | -\end{figure} |
1545 | - |
1546 | -As figure \ref{fig:high_level_arch} shows, the high-level components of the Entertainer are \emph{Frontend}, \emph{Backend}, \emph{Media library Cache} and \emph{Configuration tools}. Backend can communicate with other processes via sockets. Frontend connects to backend when it's executed. It sends simple messages to backend as needed. For example, when user selects a TV-show for recording the frontend sends a message to the backend, which handels the scheduling and recording of the show. Also configration tools notify backend that config files has been changed. This way backend knows to read them again and update it's internal state. |
1547 | - |
1548 | -Content can be imagined in between of backend and frontend processes. Backend process indexes files, downloads metadata and generates thumbnails. This activity keeps cache files, which are SQLite databases, up to date. Frontend reads the cache and doesn't care about backend. Backend does also scheduled operations including updating feed cache and guide, which both are SQLite databases as well. |
1549 | |
1550 | === removed file 'docs/introduction.tex' |
1551 | --- docs/introduction.tex 2008-12-14 19:58:40 +0000 |
1552 | +++ docs/introduction.tex 1970-01-01 00:00:00 +0000 |
1553 | @@ -1,7 +0,0 @@ |
1554 | -This document is written for those, who are interested in technical side of the Entertainer Media Center application. Entertainer aims to be a full solution for accessing your multimedia easily via remote control right from your livingroom couch. In this document multimedia refers to music, photographs and videos. Entertainer also includes a private video recorder, which means that Entertainer can be used to watch Live TV and it records your favourite shows for later viewing. |
1555 | - |
1556 | -Entertainer is designed to be easily extensible, robust, easy to use and install. The most important keywords of the prject are \emph{simplicity} and \emph{usability}. Media Center application shouldn't require any config file modifications from user. That's why Entertainer provides easy to use GUI-applications for this purpose. Entertainer uses GTK-library for graphical user interface, which means that it's most suitable for GNOME and XFce environments, but it also works on other desktop environments like KDE. Why I chose GTK over QT... well Kentertainer just sounds stupid. ;) |
1557 | - |
1558 | -Entertainer uses many existing projects like \texttt{Gstreamer}, \texttt{Clutter}, \texttt{SQLite} and\linebreak\texttt{Universal feed parser} just to name few. Most of the external projects are implemented with C, but Entertainer itself is implemented with a high level language called \emph{Python}. The whole application is implemented strictly in object-oriented manner. This means that everything is modeled as an object. |
1559 | - |
1560 | -Entertainer is an open source project released under GPL-licence version 2. This means that you don't have to pay for it and you are allowed to modify the source code and redistribute it under certain limitations. Please, see GPL-licence for more information. |
1561 | |
1562 | === removed file 'docs/message_bus_notifier.tex' |
1563 | --- docs/message_bus_notifier.tex 2008-12-14 19:58:40 +0000 |
1564 | +++ docs/message_bus_notifier.tex 1970-01-01 00:00:00 +0000 |
1565 | @@ -1,12 +0,0 @@ |
1566 | -This is a small command-line application that allows user (or other processes) |
1567 | -to send messages to the backend's message bus. This was written mainly for debug |
1568 | -purposes, but it can be used for other things too. The usage of this application |
1569 | -is straight forward. Command line tool takes only one paramter, which is the |
1570 | -type of the message that will be emitted to the message bus. Here is an example |
1571 | -how to force feed cache to be updated immediately: |
1572 | -\begin{center} |
1573 | - \begin{verbatim} |
1574 | - entertainer-messagebus-notifier.py --message=UPDATE_FEEDS |
1575 | - \end{verbatim} |
1576 | -\end{center} |
1577 | - |
1578 | |
1579 | === removed file 'docs/preferences_gui.tex' |
1580 | --- docs/preferences_gui.tex 2008-12-14 19:58:40 +0000 |
1581 | +++ docs/preferences_gui.tex 1970-01-01 00:00:00 +0000 |
1582 | @@ -1,1 +0,0 @@ |
1583 | -Preferences GUI allows user to configure Entertainer the easy way. Actually it's just a simple GUI for editing \texttt{/.entertainer/preferences.cfg} -configuration file and all the same things can be done with text editor directly. Regardless of this, it is still recommended to use GUI application, because it notifies the backend process that changes has been made. This way backend knows to reload configurations. If changes are made by hand with the text editor, then backend needs to be restarted to changes take effect. Preferences GUI is a standalone application and it can be used even if Entertainer is not running. |
1584 | |
1585 | === modified file 'docs/user_guide.tex' |
1586 | --- docs/user_guide.tex 2008-06-05 15:31:06 +0000 |
1587 | +++ docs/user_guide.tex 2009-02-01 06:24:28 +0000 |
1588 | @@ -15,32 +15,28 @@ |
1589 | \tableofcontents |
1590 | \pagebreak |
1591 | \section{Introduction} |
1592 | -This guide aims to introduce you to the installation and use of the Entertainer Media Center 0.1, the first relase of the program. |
1593 | - |
1594 | -As this is an early release of Entertainer you may want certain features added or you may even find some problems (we call them bugs) with the program. If you do, please let us know about them by reporting them at http://bugs.launchpad.net/entertainer. |
1595 | - |
1596 | -We've put a lot of work into creating this program and hope that you will enjoy using it. |
1597 | +This guide aims to introduce you to the installation and use of the Entertainer |
1598 | +Media Center 0.1, the first relase of the program. |
1599 | + |
1600 | +As this is an early release of Entertainer you may want certain features added |
1601 | +or you may even find some problems (we call them bugs) with the program. If |
1602 | +you do, please let us know about them by reporting them at |
1603 | +http://bugs.launchpad.net/entertainer. |
1604 | + |
1605 | \pagebreak |
1606 | \part{Installation} |
1607 | \section{Ubuntu} |
1608 | \index{Ubuntu} |
1609 | -If you are using Ubuntu Hardy you are in luck as Ubuntu is the easiest linux distribution to install Entertainer on. |
1610 | - |
1611 | -Please follow the following steps to install Entertainer on Ubuntu Hardy: |
1612 | -\begin{enumerate} |
1613 | - \item \#FIXME Install guide for Hardy goes here |
1614 | -\end{enumerate} |
1615 | - |
1616 | -\section{Other Linux Distributions} |
1617 | -\#FIXME need some help here |
1618 | - |
1619 | -\section{Windows} |
1620 | -Unfortunately, Entertainer is currently Linux only so no versions will work on Windows. |
1621 | +For Ubuntu, Entertainer can be installed from the Entertainer-Releases PPA, |
1622 | +which can be browsed at |
1623 | +https://edge.launchpad.net/~entertainer-releases/+archive/ppa |
1624 | |
1625 | \section{From Source} |
1626 | -If you are really brave you can try installing Entertainer from the development code. You can download this from http://code.launchpad.net/entertainer |
1627 | +To download the Entertainer source, you can download a tarball from |
1628 | +http://code.launchpad.net/entertainer |
1629 | |
1630 | -Because the development code can change rapidly as features are added or modified and bugs are fixed, this guide won't be covering installation or using Entertainer from development code. However if you are interested in installating the code please feel free to drop by the \#entertainer IRC channel on irc.freenode.org and we'll do our best to help you. |
1631 | +To install on other Linux distributions, unpack the tarball and run python |
1632 | +setup.py install which should install Entertainer. |
1633 | |
1634 | \pagebreak |
1635 | \part{Configuring Entertainer} |
1636 | @@ -64,7 +60,7 @@ |
1637 | \item Matt Layman |
1638 | \item Joshua Scotton |
1639 | \item Jamie Bennett |
1640 | - \item Micahel Charclo |
1641 | + \item Michael Charclo |
1642 | \item Blutack (from Launchpad) |
1643 | \item Everybody who helped testing and bug reporting... |
1644 | \end{itemize} |
1645 | |
1646 | === modified file 'setup.py' |
1647 | --- setup.py 2009-01-26 17:33:36 +0000 |
1648 | +++ setup.py 2009-02-01 06:30:14 +0000 |
1649 | @@ -27,6 +27,8 @@ |
1650 | log.info("Updating icon cache in %s" % target) |
1651 | call(['gtk-update-icon-cache', '-f', '-t', target]) |
1652 | |
1653 | + call(['gzip', '-9', 'docs/entertainer.1']) |
1654 | + |
1655 | def find_files(dirs, dest_root='share'): |
1656 | '''Walk files and directories and return them in a form for data_files''' |
1657 | # pylint: disable-msg=W0621 |
This branch removes a lot of old, antequated documentation, converts the
HACKING file to restructured text, and consolidates the COPYING and LICENSE
files into one file. It also adds a new make target to generate a dependency
graph (and adds the current dependency graph). That part requires sfood, which
I will package when I have time, but it's not a priority. Basicaly, I'm using
the make target to store my recipe for generating the graph. I also thought we
could use it to see where we can make changes and make those dependencies less
hairy crazy.
-- theironlion. net
Paul Hummer
http://
1024/862FF08F C921 E962 58F8 5547 6723 0E8C 1C4D 8AC5 862F F08F