|
TCP_JM wrote: This would not be possible with tabs. Depends. I would expect the gantt view to include the tree structure of the tasks but without all the column info, or possibly with user-selectable columns. But as a starting point, developing it as a FF (Free-Floater) would mean that for now I don't need to do the structural work that would have been necessary for a tabbed view and the initial gantt view could be brought forward in time.
|
|
|
|
|
.dan.g. wrote: I would expect the gantt view to include the tree structure of the tasks but without all the column info, or possibly with user-selectable columns. Sound like a good idea if it's possible to combine a task (tree/list) view with the Gantt View. (The editing controls should still be visible, please.)
But it will be necessary then to have two horizontal scrollbars:
One for the Gantt View and one for the 'Task Tree View'.
The branches and leafs go deep down in the "rabbit hole" (= 'parent task', sub-task, sub-sub-task, sub-sub-sub-task, sub-sub-sub-sub-task and so on) and it's necessary to be able to see them.
.dan.g. wrote: But as a starting point, developing it as a FF (Free-Floater) would mean that for now I don't need to do the structural work that would have been necessary for a tabbed view and the initial gantt view could be brought forward in time. Yes, and this is one of the few situations where I'll be happy if a temporary solution becomes a permanent one .
|
|
|
|
|
Hello,
I am quite Newby in VC. I unzip source files and compil as it under VC2008 V9.
I got :
12>ToDoList - 4034 erreur(s), 46 avertissement(s)
========== Génération : 2 a réussi, 10 a échoué, 0 mis à jour, 0 a été ignoré ==========
Most of errors are 'redefinition of type', some others are conversion problems
->> Can someone tell me what are the problems ? (may be some parameters to change in properties ?)
Thank you.
Here some first errors from the compil :
....
3>sha2.cpp
3>Édition des liens en cours...
3>LINK : base de données j:\Visual_Cpp_2008\Visual_Cpp_ToDoList\ToDoList_Src\EncryptDecrypt\Debug\EncryptDecrypt.pdb du programme manquante ; édition de liens complète en cours
3> Création de la bibliothèque .\Debug/EncryptDecrypt.lib et de l'objet .\Debug/EncryptDecrypt.exp
4>Compilation en cours...
4>EnMenu.cpp
4>j:\visual_cpp_2008\visual_cpp_todolist\todolist_src\3rdparty\tmschema.h(27) : error C2011: 'BGTYPE' : redéfinition du type 'enum'
4> c:\program files\microsoft sdks\windows\v6.0a\include\vssym32.h(14) : voir la déclaration de 'BGTYPE'
4>j:\visual_cpp_2008\visual_cpp_todolist\todolist_src\3rdparty\tmschema.h(33) : error C2011: 'IMAGELAYOUT' : redéfinition du type 'enum'
4> c:\program files\microsoft sdks\windows\v6.0a\include\vssym32.h(25) : voir la déclaration de 'IMAGELAYOUT'
4>j:\visual_cpp_2008\visual_cpp_todolist\todolist_src\3rdparty\tmschema.h(38) : error C2011: 'BORDERTYPE' : redéfinition du type 'enum'
4> c:\program files\microsoft sdks\windows\v6.0a\include\vssym32.h(35) : voir la déclaration de 'BORDERTYPE'
....
8>FILEMISC.CPP
8>j:\visual_cpp_2008\visual_cpp_todolist\todolist_src\shared\misc.h(19) : error C2371: 'CString' : redéfinition ; types de base différents
8> c:\program files (x86)\microsoft visual studio 9.0\vc\atlmfc\include\afxstr.h(99) : voir la déclaration de 'CString'
8>j:\visual_cpp_2008\visual_cpp_todolist\todolist_src\shared\filemisc.cpp(21) : error C2511: 'CTempFileBackup::CTempFileBackup(const CString &,const CString &,BOOL,const CString &)' : impossible de trouver la fonction membre surchargée dans 'CTempFileBackup'
8> j:\visual_cpp_2008\visual_cpp_todolist\todolist_src\shared\filemisc.h(33) : voir la déclaration de 'CTempFileBackup'
8>j:\visual_cpp_2008\visual_cpp_todolist\todolist_src\shared\filemisc.cpp(1269) : fatal error C1004: fin de fichier inattendue rencontrée
....
12>j:\visual_cpp_2008\visual_cpp_todolist\todolist_src\todolist\..\shared\fileedit.h(41) : error C2440: '=' : impossible de convertir de 'LPCTSTR' en 'int'
12> Aucun contexte dans lequel cette conversion est possible
....
12>.\PreferencesToolPage.cpp(498) : error C2664: 'CSysImageList::GetFileImageIndex' : impossible de convertir le paramètre 1 de 'int' en 'LPCTSTR'
....
MaxMax14
|
|
|
|
|
The first set of errors are caused by VS2008 defining the theme API itself and thus conflicting with the definition that I have included with the source code. You could try commenting out "tmschema.h" icludes and see if it works itself out.
The second set of errors is caused by the definition of CString changing, resulting in 'CString' appearing to be undefined and therefore VS trying to cast it to a default 'int' type. I do not know how to resolve this at present.
Sorry.
|
|
|
|
|
Hello .dan.g.
Here some additional error and information and questions:
1) I have following errors :
2>BigCalendarTask.cpp
1>LINK : fatal error LNK1104: impossible d'ouvrir le fichier 'LIBC.lib'
2>..\3rdParty\Calendar\BigCalendarTask.cpp(194) : error C2039: 'm_pToolTip' : n'est pas membre de '_AFX_THREAD_STATE'
I use Win7 64bit and VC2008 V9
file LIBC.lib is present on "C:\Program Files (x86)\Microsoft SDKs\Windows\v5.0\Lib\IA64"
-> What could be the problem for error 1> ?
2) I have done some change that seems necessary which you should update in your code :
todolist.cpp line 541 : (add "int")
for (int nFile = 0; nFile < nNumLastOpen; nFile++)
FILEMISC.CPP line 1247
#if _MSC_VER >= 1400
lstrcpy(szPath, szShortcut);
tdscstruc.h line 45
#define COPYTEXT(DEST, SRC) _tcsncpy_s(DEST, SRC, min(sizeof(DEST) - 1, SRC.GetLength() + 1)) //avoid a warning with _tcsncpy
ToDoCtrl.cpp line 8353 to 8385 : to avoid error UINT to CString
if (nState == TDIS_SELECTED || nState == TDIS_SELECTEDNOTFOCUSED ||
!HasStyle(TDCS_TRACKSELECTEDTASKONLY))
crText = 255;
CString str;
str.Format("%i", CLOCKCHAR);
DrawGutterItemText(pNCGDI->pDC, str, rItem, pNCGDI->nTextAlign, crText, &GraphicsMisc::WingDings(), TRUE);
}
break;
case TDCC_FLAG:
if (pTDI->bFlagged)
{
CString str;
str.Format("%i", FLAGCHAR);
DrawGutterItemText(pNCGDI->pDC, str, rItem, pNCGDI->nTextAlign, (COLORREF)-1, &GraphicsMisc::WingDings(), TRUE);
}
break;
case TDCC_REMINDER:
if (GetParent()->SendMessage(WM_TDCM_TASKHASREMINDER, dwTaskID, (LPARAM)this))
{
CString str;
str.Format("%i", BELLCHAR);
DrawGutterItemText(pNCGDI->pDC, str, rItem, pNCGDI->nTextAlign, (COLORREF)-1, &GraphicsMisc::WingDings(), TRUE);
}
break;
3) Another question :
m_tree CTreeCtrl column headers are set by COrderedTreeCtrl via CNcGutter
but I don't anderstand how CListCtrl m_list column headers are set :
CFilteredToDoCtrl::BuildListColumns() set the columns with _T(""); so could you explain to me how the header text are set ?
Thank you
MaxMax14
|
|
|
|
|
Hi Max
MaxMax14 wrote: error C2039: 'm_pToolTip' : n'est pas membre de '_AFX_THREAD_STATE'
_AFX_THREAD_STATE is an private MFC static variable whose definition appears to have changed between VC6 and VS2008. The short term solution is to just comment out all references to it until I can fix it properly.
MaxMax14 wrote: I don't anderstand how CListCtrl m_list column headers are set In order to ensure that the list column headers look identical to the tree headers, the text is rendered dynamically. The column widths are updated in UpdateColumnWidths and the rendering is done in OnHeaderCustomDraw .
And thx for all your other comments.
|
|
|
|
|
I am a relatively new user of TDL but I learned to appreciated its great features.
Thanks a zillion.
Not sure if it is really a bug, as I use LetterZu (http://zu.hapa.nu/) to type in Russian, which effectively transliterates English letters into Russian letters as you type (I myself have a German OS).
Both the titles of the tasks and the comments can be written in Russian this way.
But if you reopen the task list, all Russian letters get replaced by # (except in comments, when they are saved in Rich Text format).
Thanks again for your great work.
P.S.: v3.1
modified 14-Oct-11 7:02am.
|
|
|
|
|
I get the same "##" with Japanese!
If I open .tdl file in text editor I see that the encoding is set to "Windows-1251", but should be "UTF-8".. (16).
This is the only bug which prevents me from using ToDoList, because it's the only usable software out there! Paid competitors just look great, but it's impossible to actually use them.
|
|
|
|
|
Try saving the tasklist as Unicode. This should be the default for new tasklists in 6.3.
Also, the encoding bug should be fixed in 6.3.2.
|
|
|
|
|
Thank you! I've missed that it's possible to choose the format.
Though, Unicode should be definitely the default value
Thanks again!
|
|
|
|
|
Try saving the tasklist as Unicode. This should be the default for new tasklists in 6.3.
|
|
|
|
|
Indeed. That solves the issue.
Thanks.
|
|
|
|
|
I'll make sure that Unicode is the default format.
[fixed in 6.3.2]
modified 18-Oct-11 21:17pm.
|
|
|
|
|
Hi All
Just been watching a talk about software innovation and felt the need to re-post some recurring questions:
1. What are the features that ToDoList must have to stay ahead, that it does not currently have?
2. What aspects of ToDoList are good-enough and do not warrant further work?
3. In what areas has ToDoList lost its way?
Please use this thread only for this discussion.
modified 13-Oct-11 23:58pm.
|
|
|
|
|
At first: Thanks once again for your really great application!
In my eyes there is not much left, what can be considered as "must have" - ToDoList is in all aspects not just good enough for my way of work organization but it fits all my needs more than enough ..
ad 1.)
The things I personally miss most
* Possibility to have multiple "Dependencies"
* Posiibility to have multiple "External IDs"
* Possibility to have multiple "File Links"
Things about customization:
* It would be nice, if layout of the panel where the tasks attributes are set (don't know the right name - the part where the attributes are to be edited, just below the task list) - could be modified by user. for example: rearrange wih drag and drop)
* Customize ordering of columns within TreeView/Listview (for example via Drag'nDrop ...)
* In general a few more features for customization of the GUI would be nice (I don't think about Visual Gimmicks like skins - just about the possibility of reordering the current layout ... With this I could adapt the GUI to fit to my priorities ... (for example I often use the "external ID" - and almost ever, when I have to change the "external ID" I have to "search visually" for it, as it "got lost" between the other fields. Another example: I would like to have the "Done%" next to the "Done (Date)" field ....)
ad 2./3.)
From my pont of view, time tracking is a thing I don't use very often - and therefore ToDoList has left "my way" with this features.
JM2C
Wackerstein
|
|
|
|
|
Good ideas all round, but I use the time-tracker every day. When the timer is on, I tend to stay more focused on my current task than when it is off.
|
|
|
|
|
wackerstein wrote: Possibility to have multiple "Dependencies" This is currently supported by delimiting the task IDs using the default regional separator specified in Control Panel.
wackerstein wrote: Posiibility to have multiple "External IDs" It would be (fairly) trivial to support this in a similar way.
wackerstein wrote: Possibility to have multiple "File Links" This is currently supported via the comments field.
wackerstein wrote: customization: I've added it my list of future features.
|
|
|
|
|
.dan.g. wrote: wackerstein wrote: Possibility to have multiple "Dependencies" This is currently supported by delimiting the task IDs using the default regional separator specified in Control Panel. It works! Great. Didn't know that.
But:
The seprator is according to my regional settings the semi-kolon. So what I tried is to put two task IDs in the dependency field of task 5031 (5029; 5030). Then I tried to 'complete' task 5031. ToDoList provides a message then: "...Would you like to see the dependency?" If I click on 'yes' ToDoList selects Task 5029. If I complete that task and go back to task 5031 and try again to mark 5031 as complete I get the same message again and this time ToDoList selects task 5030 if I click on 'yes'.
ToDoList doesn't care about 'priority', 'due date' etc. in this regard and I can imagine that this would be very difficult to implement that.
But would it be possible that ToDoList creates a new little window (after the user has anwered with 'yes' or presents this in the same window) that shows the tasks (including the tasknames, IDs, priority, 'start date' and 'due date') of the tasks task 5031 is depending on and let the user decide what task he wants to see (ToDoList should select).
Showing the task a task depends on would even be useful if it is only one task that task 5031 is depending on.
What do you think?
|
|
|
|
|
1. What are the features that ToDoList must have to stay ahead, that it does not currently have?
a) Dan - I have mentioned it before - but I would want stronger multi user features. The source control option works to a sense - but only for small teams.
b) Custom Fields. I repurpose some fields for other purposes - but in the multi user setup this does not always work very well and sometimes it is difficult to get a field that accepts the right values. Some form of validation (i.e. this field can accept a list of values, this field positive integers, this field a date) would be useful. Multiple entries will also be useful - though I am uncertain how this will be displayed (for example I would like to have the ability to link to multiple files).
c) The ability to add more (and named) Find tasks filters.
d) Synchronisation with Outlook/Google Calendar. I believe this is a key feature for TDL (more important than anything else on this list).
e) A change log (i.e. which tasks was changed in the last x days/hours, by whom (see 1a), and which fields) and the ability to automatically and incrementally (i.e. showing all changes since last change log) export change logs (to a TDL file would be fine, possibly using custom fields of 1b) after a minimum amount of time has passed - please just with a date in the filename so that I can keep multiple copies.
f) Analogous to 1b - the ability to prevent the use of certain fields (obviously a per tasklist setting). Some users re-purpose an unused field which everyone else is hiding - then nobody is aware that this is now in use and that they are not seeing all the data they need. This will not be permanent setting and should be changeable.
g) Supplementary to 1a - automatic tasklist aggregation. Let's say there are 5 teams working on 10 projects but team 1 and 2 is working on project 1, team 1 and 3 on project 2, team 1 and 4 on project 3. Now team 1 needs to have 3 tasklists. What would be easier would be to create separate tasklist - and have an aggregator that combines these tasklists so that team 1 can view their tasks in one go. Making changes to this aggregate tasklist should then sync the changes to the individual tasklists (which would then mean that the other aggregate tasklists for the other teams will also update).
A small thing
h) Storing all tasklist information in the tasklist (including reminders, column settings) - these are stored in the INI file - maybe store them in the tasklist in a per user way (see 1a) as not all users will have the same reminders. DropBoxing a tasklist leads to some unexpedte behaviour - and syncing the INI file leads to more (for example my backup location on a network is not available everywhere...)
2. What aspects of ToDoList are good-enough and do not warrant further work?
a) I do not want to say that it does not warrant further work (because rather says it only requires maintenance as the features change) but TDL's preferences are extensive and it is really easy to customise TDL to behave the way I want. A good IT tool should fit your needs - you should never need to change your way of working to fit an IT tool.
b) Keyboard shortcuts. Yes I have created stuff with AHK (but more to do multiple actions) but TDL is miles ahead with keyboard shortcuts compared to the majority of competitors
c) Exposing internals. This was a big discussion a while back and I am not going to repeat all the arguments here. TDL does a very good job of giving access to some of its internal function (through the menu item IDs). It does make you hungry for more - but very few other programs does this.
d) the listview/treeview mechanism. Most of the editing can be done right in the display mode - whereas many other tasklist programs forces you to open the task and perform editing in a separate screen. Please never change this (I will beg if I have to).
3. In what areas has ToDoListlost its way the environment changed?
a) This is very harsh to say that TDL has lost its way, so I changed the question. Multi platform (and no I am not speaking of Linux/Mac - rather Android/iOS) seems to be the way everything is going. I am not suggesting that you attempt to write an Android version of TDL (as this is most likely be very watered down) - however it is becoming almost a minimum requirement that you have access to your tasklist wherever you go. To this end I believe that Google Calendar integration is becoming (or already?) almost essential.
Dan - feel free to ask me to expand on anything, or even to tell me that something is not what you envisage for TDL. This feedback should not be seen as critique - I will never spend this amount of time giving feedback to a developer unless I think it is a very good program.
H
|
|
|
|
|
Thanks for all your comments.
I will collate them with others' comments and then post a summary suggesting a way forward.
|
|
|
|
|
I don't consider my suggestion as must haves, so I'll lable them as 1.5 (nice to have)
1.5.1 (some) additional customisable (text)fields which I can give any name
1.5.2 more reminders and reminder options (i.e. lets say I have a task (i.e. to take medicine at certain 1.5.3 times) which should give an reminder 4 times a day)
1.5.4 rearrangeable fields (columns) in the tree-/listview
1.5.5 I suck at XML, so an easier way to create reports would be great (simple editor?)
1.5.6 more than one sorting for the tree-/listview columns (i.e. activate main sorting with LMB, additional sortings with CTRL-LMB)
1.5.7 a killer feature for me would be, if there would be a flexible clipboard parser*
*I'm always creating tasks by copying several data fiels from a webpage. It would be a blast if I could simply copy the whole header section of such webpage and TDL parses for certain keywords (i.e. with RegEx) and fills certain fields in TDL with data*. This is what I'm doing manually every day.
*I think an editor would be great for this, which gives the possibility to select which field I want to fill by applying a RegEx which returns the content.
(short) Example:
The webpage header looks like this (I copy the whole header (or webpage?) to the clipboard):
Description: How to parse the clipboard
Reference #: 12345
Blablub : irrelevant data
Blablub 1 : another irrelevant data
Customer : [448321] First Customer [Vienna] (fc@bla.at)
Date : 14-10-2011 09:01
The editor now should give me the option to select which TDL fields I want to fill, and I add the RegEx to get the content. I think it might be useful to select which RegEx GROUP(s) hold the relevant content and which additional text should be used.
I'd give the Editor 4 Fields (Columns). The first is a dropdown box.
TDL Field RegEx Content Result
-------------------------------------------------------------------------------------------
[TaskTitle] Description: (\b.*?$) \1 How to parse the clipboard
[Category] Reference #: (\d+) \1 12345
[AssignedTo] Customer[^\]]+]\s([^\[]+) \1 First Customer
[StartDate] Date\s*?: (\d{2})-(\d{2})-(\d{4}) \3.\2.\1 2011.10.14
.
.
.
-------------------------------------------------------------------------------------------
[Show Results] [OK] [Cancel]
When clicking on the [Show Results] Button, the results are shown. How smart.
edit on: it might be useful to show the whole clipboard content in the editor and add RegEx options like
- dot machtes newlines (auto off)
- case sensitive search (auto off)
- ^$ match at line breaks (auto on)
When showing the whole clipboard, it would be another 'killer feature' if every row in the editor allows to select a color which is used to highlight the found search results in the clipboard. This way it's very easy to 'select' larger areas of text for the comments. Especially if only parts of the webpage should put in the comments field. Looking at this sort of clipboard preview gives a very good overview with differently coloured highlighted areas.
edit 2: load/save of definitions would be nice, too
edit off:
Well Dan, what do you think about this?
Things for your item 2:
2.0 don't change the simple GUI (handling). I just want to WORK with TDL, so I don't need fancy eyecandy which bloats the program and/or reduces usability.
But even without the above improvements, TDL is for me the best tool for tasks. Thanks for it, and thanks for giving it to us for free!
Martin
modified 14-Oct-11 4:13am.
|
|
|
|
|
(cough)AHK(cough)
Very rough but did you think about something like (please note it does not save the date and the category - this would require some small (but easy) transformations - also please backup your target TDL - I make a copy as well - but just in case):
Requires Autohotkey_L
Input =
(LTrim0
Description: How to parse the clipboard`r`n
Reference #: 12345`r`n
Blablub : irrelevant data`r`n
Blablub 1 : another irrelevant data`r`n
Customer : [448321] First Customer [Vienna] (fc@bla.at)`r`n
Date : 14-10-2011 09:01`r`n
)
RegExParser:=Object()
RegExParser[1]:=Object()
RegExParser[1]["RegEx"]:="m)Description: (\b.*?)$"
RegExParser[1]["Output"]:="\1"
RegExParser[1]["Target"]:="TaskTitle"
RegExParser[2]:=Object()
RegExParser[2]["RegEx"]:="Reference #: (\d+)"
RegExParser[2]["OutPut"]:="\1"
RegExParser[2]["Target"]:="Category"
RegExParser[3]:=Object()
RegExParser[3]["RegEx"]:="Date\s*?: (\d{2})-(\d{2})-(\d{4})"
RegExParser[3]["OutPut"]:="\3-\2-\1"
RegExParser[3]["Target"]:="Date"
Gui, Add, Text, xm y+10, TDL Target
Gui, Add, Text, x100 yp , Regular Expression
Gui, Add, Text, x300 yp, Content
Gui, Add, Text, x400 yp, Result
For k, v in RegExParser
{
Target:=v.Target
Gui, Add, Text, xm y+10, %Target%
val:=v.RegEx
Gui, Add, Edit,x100 yp w175 vTarget%k% gUpdate, %val%
FoundPos := RegExMatch(Input, v.RegEx,FoundString)
Result:=v.Output
Gui, Add, Edit, x300 yp w75 gUpdate vOutput%k%, %Result%
StringReplace, Result,Result, \1, %FoundString1%,A
StringReplace, Result,Result, \2, %FoundString2%
StringReplace, Result,Result, \3, %FoundString3%
Gui, Add, Text, x400 yp vResult%k%, %Result%
RegExParser[k]["Result"]:=Result
}
Gui, Add, Button, xm y+10 gSave,Save
Gui, Show
return
save:
Gui, Submit
FileSelectFile, File , 1, , Select Target TDL file, *.TDL
if errorlevel=1
exitapp
if fileexist(File)
{
SplitPath, File, OutFileName, OutDir, OutExtension, OutNameNoExt, OutDrive
FileCopy, %File%, %OutDir%\%OutNameNoExt% (backup %A_now%).tdl
}
else
exitapp
FileRead, xml, %File%
TDL:=loadXML(XML)
NextID:=TDL.childNodes.Item(1).getAttribute("NEXTUNIQUEID")
MyNode:=TDL.createNode(1,"Task","")
For k, v in RegExParser
{
if (RegExParser[k]["Target"]="TaskTitle")
{
MyNode.setattribute("Title",RegExParser[k]["Result"])
}
if (RegExParser[k]["Target"]="Category")
{
MyNode.setattribute("Category",RegExParser[k]["Category"])
}
}
Mynode.setattribute("ID",NextID)
TDL.childNodes.Item(1).appendChild(myNode)
TDL.childNodes.Item(1).setAttribute("NEXTUNIQUEID",NextId+1)
TDL.save(File)
exitapp
Update:
Gui Submit, NoHide
For k, v in RegExParser
{
GuiControl,,Target%k%, % Target%k%
v.RegEx:=Target%k%
FoundPos := RegExMatch(Input, v.RegEx,FoundString)
Result:=OutPut%k%
v.Output:=Result
StringReplace, Result,Result, \1, %FoundString1%,A
StringReplace, Result,Result, \2, %FoundString2%
StringReplace, Result,Result, \3, %FoundString3%
if (result%k%<>result)
GuiControl,,Result%k%, %Result%
RegExParser[k]["Result"]:=Result
}
return
loadXML(ByRef data)
{
o := ComObjCreate("MSXML2.DOMDocument.6.0")
o.async := false
o.loadXML(data)
return o
}
|
|
|
|
|
Thanks. I must admit, I've never used AHK and I'm not familiar with it. But I'll try your example. Of course, I'd more than happy if Dan likes the idea and implements a such an editor (especially a load/save function for various data layouts would be very helpful). But since this would take some time - if done at all, so your solution is much appreciated.
Martin
|
|
|
|
|
In an ideal world it is best that it would be built-in to TDL.exe. Note that mine is not a solution - more a proof of concept of how it can work.
|
|
|
|
|
capital H wrote: In an ideal world it is best that it would be built-in to TDL.exe.
Yep, I'd love to see this feature in TDL.
Martin
|
|
|
|
|