====== GeToDo ====== >**GeToDo** - Project, task & time management (Advanced TODO list) > > Pokročilé prostředí pro správu úkolů a projektů s využitím tagování, možností neurčitosti a podporou pro lidské rozhodování. Řešitel projektu: **Bohumír Zámečník** Vedoucí projektu: **[[http://siret.ms.mff.cuni.cz/hoksza/|Mgr. David Hoksza]]** [[http://code.google.com/p/getodo/|Google Code project]] Stav: pilotní i finální verze odevzdány [[http://projects.zamecnik.org/getodo/getodo-specifikace.pdf|Specifikace]] ke stažení (PDF) Subversion repositář: http://getodo.googlecode.com/svn/trunk/ ([[http://code.google.com/p/getodo/source/browse/trunk|browse]], [[http://code.google.com/p/getodo/source/list|changes]]) * Typ projektu: [[http://www.mff.cuni.cz/vnitro/is/sis/predmety/kod.php?kod=NPRG033|Ročníkový projekt (NPRG033)]] * "Chtěl bych vytvořit něco praktického, co člověku pomáhá každý den." ===== Ke stažení ===== * zdrojové kódy: [[http://projects.zamecnik.org/getodo/releases/getodo-rev97-src.zip|getodo-rev97-src.zip]] * instalátor: [[http://projects.zamecnik.org/getodo/releases/getodo-rev97-setup.exe|getodo-rev97-setup.exe]] * runtime knihoven GTK a Gtkmm: * [[http://projects.zamecnik.org/getodo/releases/lib/gtk-2.12.9-win32-2.exe|gtk-2.12.9-win32-2.exe]] * [[http://projects.zamecnik.org/getodo/releases/lib/gtkmm-win32-runtime-2.10.11-1.exe|gtkmm-win32-runtime-2.10.11-1.exe]] ==== Aktuálně ==== Podrobnosti v [[http://code.google.com/p/getodo/source/list|SVN changelogu]] (případně jako [[http://code.google.com/feeds/p/getodo/svnchanges/basic|RSS feed]]). * 20.3.2009 - Oprava několika funkcí. Čištění kódu. Zabaleno a připraveno k odevzdání. * 19.3.2009 - Uživatelská dokumentace je připravena. Instalátor funguje, testování na jiných strojích. Čištění kódu. Masivní přechod z pointerů na boost::shared_ptr. * 15.-18.3.2009 - bugfixy, čištění kódu, zkoušení instalátoru. * 12.-14.3.2009 - Sepsáno mnoho dokumentace. Čištění kódu. * 11.3.2009 - Tagy je možno přejmenovávat, filtrovací pravidla libvolně editovat. Dokumentace. Čištění kódu. Opraveno pár chybek. * 10.3.2009 - Vylepšeno filtrování - nyní je možno filtrovat pomocí složených pravidel i podle tagů (lze spojovat pomocí operátorů AND a OR). * 5.3.2009 - Práce na dokumentaci (architektura projektu). Vytvořil jsem odvozené ListStores pro filtry a tagy. Práce s tím je nyní mnohem jednodušší, než s vlastní implementací TreeModelu. * konec února 2009 - Funguje filtrování a řazení tasků. Opraveno mnoho drobných chybek. * leden-únor 2009 - Zkouškové. Práce na dokumentaci. * 29.12.2008 - U TreeStore již funguje přidávání či přesouvání subtasků. V editačním panelu se automaticky ukládají jednotlivé položky tasku (tj. nikoliv celý task najednou). Opraveny různé chyby. * 27.12.2008 - TreeStore krásně funguje! * 26.12.2008 - Zjistil jsem, že psaním vlastního TreeModelu cesta nevede. Rozhodl jsem se použít TreeStore obohacený o několik signálů, který udělá tutéž práci mnohem lépe. Opravena spousta drobností. Základní podpora ukládání změn jednotlivých částí tasku při editaci (použity lambda funkce z boost::lambda). * 23.12.2008 - Základní podpora vlastních výjimek. * 27.11.2008 - Po dalších dnech ladění opraveno několik chyb v TaskModelu. * 19.11.2008 - Po několika dnech nalezena a opravena hnusná chybka v TaskTreeModelu, která blokovala další práci * 13.11.2008 - Přepsán TreeModel, aby podporoval stromovou strukturu místo ploché. Funguje, ale ještě obsahuje nějakou chybu. * 7.11.2008 - Přepracována stromová reprezentace Tasků. * konec října 2008 - Připravena infrastruktura pro nástroj na generování dokumentace Doxygen. * 12.10.2008 - Rozběhal jsem osobní bug tracking system [[http://www.mantisbt.org/|Mantis]]. * 1.-8.10.2008 - Prostudoval jsem knihu [[http://www.amazon.com/Coding-Standards-Guidelines-Practices-Depth/dp/0321113586|H. Sutter, A. Alexandrescu: C++ Coding Standards: 101 Rules]]. * 22.9.2008 - Pilotní verze odevzdána! * 19.9.2008 - sestaven instalační balíček pilotní verze. * 17.9.2008 - Vytvořil jsem dialog pro editování rekurencí. Již funguje pěkně. Bylo nutné přidat trochu kódu do knihovny. * 16.9.2008 - Již fungují také funkce: nový úkol, editace a smazání vybraného úkolu, editace tagů daného úkolu, zobrazení rekurence. Přepsána část knihovny, více se používá operator<<() pro serializaci objektů. Před odevzdáním pilotní verze musím připravit instalátor a rád bych ješte napsal průběžné ukládání jednotlivých editovaných položek úkolu. * 14.9.2008 - Kostra GUI již pěkně funguje. Nyní je třeba napojit základní akce na různé ovládací prvky. * 12.9.2008 - Testovací kód dopsán, opravena část TaskManageru. Nyní připravím GUI pro pilotí verzi k odevzdání. * 11.9.2008 - Po několika dnech hledání chyb dopsána část testovacího modulu. * 4.9.2008 - TreeModel implantován na TaskManager (zatím pro Tagy a Tasky). Funguje jedoduché grafické rozhraní využívající Glade (GUI definováno v externím XML souboru). * 2.9.2008 - Podařilo se mi implementovat vlastní Gtk::TreeModel. * 30.8.2008 - Řeším technické detaily napojení TaskManageru na Gtk::TreeModel. * 21.8.2008 - Práce na testech knihovny a opravování nalezených chyb. Knihovna je průběžně doplňována o další funkčnost. Začínám zkoušet napojení knihovny na GUI. Debugování ve Visual Studiu je velmi efektivní. * 17.8.2008 - Proběhl přechod z Autotools na MS Visual Studio, které má velmi dobré prostředí pro vývoj a výborný debugger. Autotools a GNU toolchain se možná použije časem pro linuxovou verzi GeToDo. * 15.8.2008 - Vývoj doposud probíhal v linuxovém prostředí, nyní se mi podařilo úspěšně buildovat na platformě win32-x86 s pomocí MinGW. * 12.8.2008 - Podstatný kus knihovny je hotov, nyní plánuji, jak vyřešit grafické rozhraní. * 8.8.2008 - Celý červenec jsem pracoval na důležitém zápočtovém programu. Nedávno jsem jej odevzdal a nyní se opět mohu věnovat GeToDo. Zatím pracuji na základní knihovně, objektově-relačním mapování apod. * konec června - Intenzivně jsem máknul na projektu, viz logy v SVN. * 25.6.2008 - Zkoušky mám hotové, takže se opět budu moci věnovat projektu. * červen 2008 - Zkouškové období. * květen 2008 - Práce na jiných školních projektech. * březen-duben 2008 - Analýza projektu a sepsání specifikace. [[http://zamecnik.org/_media/projekty/getodo-2009-03-10-19-29-filtering-works.png|{{ :projekty:getodo-2009-03-10-rev80-t.png |Revize 80. Filtrování funguje!}}]] ===== Co by projekt měl dělat a umět? ===== * správa kolekce úkolů a projektů * popis, termíny, tagy, [symbolické a relativní] priority, kontexty... * nejlépe založené na metodologii GTD (Getting Things Done) * promyšlený životní cyklus úkolů a projektů * příjemné efektivní vkládání/import * [nejlépe i nějaká forma doplňování podle existujího] * "code-completion" pro tagy, projekty a další entity * editace, vyhledávání, filtrace, pohledy, ... * (průběžně, úplně) hotovo, archivace, statistiky * možnost propojování úkolů, [závislosti], podprojekty * použití tagů * čas * pokročilé možnosti opakování * "fuzzy" termíny - podpora časové neurčitosti * [triggery (návaznost na jiné úkoly)] * navrhování plánu nebo aktuálně relevantních úkolů pro daný kontext * řazení (ohodnocení) úkolů v různých pohledech podle více kritérií * možnost ručního řazení relativní priority nebo pořadí úkolů * má to být pomůcka pro lidské rozhodování a plánování, nikoli automatický plánovač * nemá to tedy člověku spočítat a přikázat plán, ale spočítat, poradit člověku a nechat si od člověka zpětně poradit * odkazování na přílohy (URL, soubory - nejlépe pomocí drag&drop) * import/export a přenos dat mezi instancemi programu * [import/export v XML] * export do běžných formátů (text, HTML, [iCal], ...), tisk ===== Technické věci ===== * Programovací jazyk: C++ * Platforma: Win32 * buildovací prostředí: * MS Visual Studio * původně [[http://www.mingw.org/|MinGW]], autotools (bude se hodit pro případný budoucí linuxový port) * Knihovny * databáze: [[http://www.sqlite.org|SQLite]] a [[http://www.wanderinghorse.net/computing/sqlite/|SQLite3x]] (C++ wrapper) * GUI: [[http://www.gtk.org/|GTK+]] a [[http://www.gtkmm.org/|gtkmm]] (C++ wrapper) * utility: [[http://www.boost.org/|Boost]] * [command-line, API pro skriptování, napojení na jiné programy přes rozhraní DCOP nebo podobné]