Final thoughts on my OPW experience

It’s official! GTG’s calendar plugin is finally ready! Just in time, since today is the last day of my OPW internship.
My pull request is under review, and (hopefully) it will be merged soon into the main branch.

If you are interested, as soon as the merge is complete, you’ll be able to update your GTG version and play around with the plugin. If you do, please let me know what you think… If you like it, or if you don’t, if you have any suggestion or even if you find a bug (and please file a bug report in this case).

It’s hard to show all the functionalities in a gif, but here is a small sample of what you can expect from the plugin:

calendar_view_end

I had a great time working as an OPW intern and with GTG, and I hope you can benefit from my work.

Thank you to GNOME and all the OPW organizers for making this all happen! And special thanks to Izidor Matušov for mentoring me during this period! I’ve learned sooo much and had a lot of fun! =]

PS: If you are a woman and are thinking about whether or not you should apply for the next round of OPW, my advice is: TOTALLY DO! I never imagined I could do all that I did when I first thought about applying, and I almost gave up thinking I could never work with open source. I’m glad I didn’t, because it was a great and rewarding experience.

Month View for GTG’s Calendar Plugin

These past couple weeks I implemented a new view for the calendar plugin: the Month View.

Until now, the plugin only displayed a single week. Now the user can switch between views, using the drop-down menu, and select between ‘Week’ or ‘Month’.

This new view has very similar functionalities to the previous one, allowing a task to be dragged/dropped to change its dates, double clicking on it to change its content, and also allowing the creation and deletion of tasks.

Here is a preview of how things are going with the month view, even though it’s not working a 100% yet:month-view

I hope to finish the implementation and fix the issues with this new view soon, in order to be able to integrate it to GTG as well.

Integration with GTG: Calendar plugin

Finally it came to that point where there is something ready enough to start integrating into GTG. And so, that’s what I’ve been doing in the past week.

I’ve forked gtg and added the calendar as a plugin. In order to use it, it is necessary to activate it using the plugins menu (Edit/Plugins, then check Calendar View). After that, a button will appear on the toolbar, and all that is needed is clicking on it!

Screen Shot 2014-07-11 at 11.49.33 PM

A window will pop-up, displaying all the tasks with start AND due dates. Only these will be displayed in the calendar view, for obvious reasons. However, both open and closed tasks appear in this view.

Screen Shot 2014-07-11 at 11.52.54 PM

From the calendar view window you can drag and drop tasks to change its start/due dates or to create a new task, you can double-click in a task to edit it, you can also delete tasks, etc. All the changes will be reflected in the main window immediately. And all this interaction is done using the GTG interface you are used to (if you’re already a GTG user).

my_new_task_gtg

I’m still working on some small issues, but soon you’ll be able to check it out and start using the plugin inside GTG, in case you’re interested! =]

GTG plugin: Refactoring, improving and bug-fixing

In the past couple weeks I’ve been refactoring the code of the calendar plugin I’m working on for GTG. I felt this was necessary – even though this step took longer than expected – since this will facilitate the implementation of other different views (as a month view, for instance).

The classes now are better defined and organized, and an aesthetical change is that now the week header is separated from the tasks, meaning the header is fixed even when the content is scrolled. The tasks are also drawn in the same line if there is space for it, instead of one task per line.

screenshot

I wonder if I should try to create a custom widget for the week view and add it from the glade file, but I’m not sure if that’s the best thing to do. I looked at some tutorials, but for now it will remain as it is.

Another thing that I wanted to use is a Gtk.Stack to cycle between the different views in the future. However, this is only available for GNOME 3.10+, and my version is 3.8. Unfortunately I couldn’t upgrade and make it work, so I think I won’t be using it, at least for now.

The next steps are to implement a month view, then a daily planner (for tasks with hours during the same day). And finally to incorporate everything into GTG.

Calendar plugin for GTG: status update

I’m implementing a calendar plugin for GTG, and this week was all about refactoring code.

Since the code started growing and I didn’t plan it very well at the beginning, I started having conceptual problems that made coding harder. So this week I took some time to plan things better and started refactoring the code.

The main changes were splitting the code into different classes for specific tasks. Another major thing was removing the bulk work of handling events from the outer window to the actual plugin class. This results in a much better and easier to use interface.

There is still a lot to do, since I want to separate the data processing part of the widget from the actual drawing. My goal is to create a wrapper around the data and just pass it to the drawing widget.

First steps: GTG calendar view

This was the end of my first week working with OPW. And I can say that I’ve done more than I expected, which is exciting! =]

I’m working with GTG in order to implement a plug-in to show tasks in a calendar view (in a Google Calendar fashion).

Until the moment what I accomplished was (along with some screenshots, in case you’re curious about it):

edit_delete

 

  • Drawing the existing tasks in a week view.
  • Selecting a task to edit or delete it, and also adding new tasks.

 

 

drag_and_drop

 

 

  • Making drag and drop work for moving a task around, and also enlarging or shrinking the start/end dates.

 

scroll

 

 

  • Making the horizontal scroll go to previous/next days.

 

 

Yeah, it’s still ugly, I know! =[ But at the moment I’m not really worried about that. I’ll work on the ’embellishment’ part of it in the near future.

I’m only using cairo to implement it, but I’m still not sure if I should use something else as well (maybe clutter?). If anyone has any suggestions or comments to share, I’d appreciate it =].

OPW

I’m glad I got accepted into round 8 of GNOME Outreach Program for Women (OPW).

That means during the summer I’ll be working on Getting Things GNOME!, a personal tasks and TODO-list items organizer for the GNOME desktop environment inspired by the Getting Things Done (GTD) methodology.

More specifically, my project is about adding a calendar support into GTG. The goal is to build a plugin for GTG that displays all of the tasks that have time associated with them in calendar views (day and week), and to allow users to create and edit tasks in these views. My mentor is Izidor Matušov.

I am really excited about this, and hope I can learn a lot during the process. =]