Summer of Code/2009/Print Support: Difference between revisions
| Line 76: | Line 76: | ||
:'''In-Depth analysis:''' | :'''In-Depth analysis:''' | ||
:The easiest way to implement step-1 would be to check which mime types exist on the client side in the etc/cups/mime.types file with a simple python method (getAllowableMIMETypes) , and access it with a :python script and compile our sugar shell accordingly. So any mime type non-existent there will have its corresponding activities print button disabled. | :The easiest way to implement step-1 would be to check which mime types exist on the client side in the etc/cups/mime.types file with a simple python method (getAllowableMIMETypes) , and access it with a :python script and compile our sugar shell accordingly. So any mime type non-existent there will have its corresponding activities print button disabled. We will also write code for it to accept copy Mime info from activities .info files (whether a new activity or old) | ||
:As an Alternative, CUPS print function returns a python -1/ C 0 when a non-supported MIME type is used, so I can take advantage of that and display a non supported format error. | :As an Alternative, CUPS print function returns a python -1/ C 0 when a non-supported MIME type is used, so I can take advantage of that and display a non supported format error. | ||
:for step-2, We use CUPS. The API has a nice array of functions, one of which is to get the printers name (the cups-pdf virtual printer). Since we know the name is CUPS-PDF, we can check it, and print our :file as a PDF to the journal | :for step-2, We use CUPS. The API has a nice array of functions, one of which is to get the printers name (the cups-pdf virtual printer). Since we know the name is CUPS-PDF, we can check it, and print our :file as a PDF to the journal. And the API can be made by generalising the pycups methods and sugar api in general. | ||
:For the sake of our python convenience we will be using a python wrapper to cups, pycups. We will be using our Sugar api to create a nice simple widget for this. And we will use D-Bus for transfer of :objects to journal. The print button will be just saving the file in its original mime format, and then a Cups-PDF job takes place and outputs a pdf in the to print objects category. And, the original :saved mime type is destroyed. | :For the sake of our python convenience we will be using a python wrapper to cups, pycups. We will be using our Sugar api to create a nice simple widget for this. And we will use D-Bus for transfer of :objects to journal. The print button will be just saving the file in its original mime format, and then a Cups-PDF job takes place and outputs a pdf in the to print objects category. And, the original :saved mime type is destroyed. | ||
| Line 127: | Line 127: | ||
:'''April 20th to May 26th:''' | :'''April 20th to May 26th:''' | ||
:* Research the sugar API extensively | :* Research the sugar API extensively | ||
:* Write sample D-BUS communication programs | :* Write sample D-BUS communication programs and xmlrpc programs | ||
:* Hack into moodle code, and create purposeful hacks (modifying the limits for plugin in consideration, and such) | :* Hack into moodle code, and create purposeful hacks (modifying the limits for plugin in consideration, and such) | ||
:* Talk with the design team and produce prototype interface designs | :* Talk with the design team and produce prototype interface designs | ||
| Line 136: | Line 136: | ||
:'''Week 1 : ''' | :'''Week 1 : ''' | ||
:Start writing code which actually configures the network printer server side | :Start writing code which actually configures the network printer server side. Write code which prints to local cups-pdf printer. | ||
:'''Week 2 : ''' | :'''Week 2 : ''' | ||
Start Work on writing a control panel activity which takes in the moodle account details, integrate this with a print button in each activity. | |||
:'''Week 3 ''' | :'''Week 3 : ''' | ||
:Finish working on UIs | :Finish working on UIs, and append a new printer module(api) to Sugar packages (api) which abstracts a lot of code. Also write code to save to save to journal for our case 3) b) | ||
:Mile stone 1 :'' See to it that the code can print to the pdf virtual printer. But ofcourse apart from pdf printing others :will be disabled. Get mentor and community feedback. | |||
:'''Milestone 2''' | :'''Milestone 2''' | ||
:'''Week 4 ''' | :'''Week 4 ''' | ||
:Start working on moodle, build a 'For printing' page plugin, see to it that it accepts files from client side, and stores them in moodle's webfolder (datastore) | :Start working on moodle, build a 'For printing' page plugin, see to it that it accepts files from client side, and stores them in moodle's webfolder (datastore) and from our print activity that we wrote previously | ||
:'''Week 5''' | :'''Week 5''' | ||
| Line 159: | Line 160: | ||
:'''week 7''' | :'''week 7''' | ||
:Test code on a server with a printer, and test if everything works, get mentor and community feedback, and if any integration bugs remain, drill | :Test code on a server with a printer, and test if everything works, get mentor and community feedback, and if any integration bugs remain, drill them out. | ||
:Milestone 2: '' It would be to finish the moodle plugin, and see to it that printing can be done through it by the teacher'' | :Milestone 2: '' It would be to finish the moodle plugin, and see to it that printing can be done through it by the teacher'' | ||