Main Page   Modules   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members   File Members   Related Pages  

Other TODO items

   
      //----------------------------------------------------------------------------------------
      // Name:        TODO.txt
      // Purpose:     A listing of what there is to be done for Plucker Desktop.
      //              [X]: has been addressed, awaits testing before going off the TODO list.
      //              [-]: on hold, or removed from queue.
      // Author:      Robert O'Connor
      // Modified by:
      // Created:     2001/10/20
      // Copyright:   (c) Robert O'Connor ( rob@medicalmnemonics.com )
      // Licence:     GPL
      // RCS-ID:      $Id: TODO.txt,v 1.16 2003/03/09 01:38:04 robertoconnor Exp $
      //----------------------------------------------------------------------------------------
      
      //----------------------------------------------------------------------------------------
      // Priority 1
      //----------------------------------------------------------------------------------------
      
      [ ] Rename configuration.cpp's copy_section2 to copy_section, replacing the existing
      copy_section code wherever it is used.
      
      [X] Doxygenate the import_controller.cpp
      
      [X] Implement the Linux compared filedates in import_controller
      [X] Load a array key of the filenames
      [X] Load an array key of filedates
      [X] Compare the array of filenames/filedates to existing
      [X] Merge any new/updated files
      [X] Save array key of current filenames
      [X] Save array key of current filedates
      
      [ ] Config setting to only show certain viewers (or viewers that are installed)
      
      [ ] Add ini file option (daemon?) for USB pause on GTK (palm_installer::...).
      Place into setup wizard on viewer_wizardpage, and a setting the UI or somewhere.
      Perhaps there should be a is_usb_pause on the handheld_dest_type struct, and set
      that, so tha the palm_installer class is fully separate from plucker.
      
      [X] "m_did_close_dialog_code_execute_yet" code removed from details_progress_dialog.cpp/.h
      after testing that it isn't needed anymore (test for shutting off computer during
      progress dialog crawl and see if makes a difference).
      
      //----------------------------------------------------------------------------------------
      // Priority 2
      //----------------------------------------------------------------------------------------
      
      [ ] The setup wizard should have a checkbox wizard page asking if they want to change
      all the destinations/bpp etc in their list to what they have in the wizard, before
      doing it. (Default for first run is checked, for after first run is not checked).
      
      [ ] The uninstall conduit just exits silently if the conduit is already removed 
      (arises since the uninstall run executions "stack", so that the uninstall
      conduit will run multiple times, if they installed multiple times.
      
      [ ] wxFileName::MakeRelativeTo() for the image dialog's checkbox for relative path.
      
      [ ] Replace wxMakeDir() with wxFileName::Mkdir with the wxPATH_MKDIR_FULL flag set,
      so that will recursively make all the needed subdirs, and not error out if 
      the dir already exists.
      
      [ ] Unix makefile installs message catalogs.
      [ ] Expunge before/after command from parser and docs.
      [ ] Add before/after command to desktop.
      [ ] Ask Michael about Makefile dir locations.
      
      [ ] The default config object should always be the wxwindows config file, as it will
      read/write unwelcomely some settings. One thing is the generic wxFileDialog on GTK,
      (which is currently hacked around), but another is the wxFontEncoder, which gets
      called up on a on a MSW ME in Thai, but would happen on GTK and MAC too, most
      likely. The stuff that wxwindows is writing to plucker.ini will cause the
      parser to crash. When fixed, drop a note to
      Witit Sajjapong <witits@ttt.co.th>
      for testing.
      
      [ ] Pasting a URL must strip out any line returns from the url, or channel_dialog
      write configuration must strip out any returns or file_configuration should strip
      out any carriage returns so that won't write a line break in the middle of the
      key which would screw up the confige file.
      
      [ ] Do a popup ask of where the plucker, resource and langs dirs are if cant find them?
      Channels too? A temp dir also?
      A tab on the preferences dialog to specify where these locations are (perhaps a
      warning icon on the page telling the dangers of modifying them).
      Or add as an options menu item.
      
      //----------------------------------------------------------------------------------------
      // Priority 3
      //----------------------------------------------------------------------------------------
      
      [ ] Single instance / Lock plucker.ini
      [X] Basics
      [ ] Allow customization
      
      [/] MSW: shortcut icons don't install to correct place in start menu? Why is that?
      The install script appears correct to me. Must be something XP specific in
      InnoSetup.
      
      [ ] Do something with the showcase_field_names when rewrite that dialog. Currently, they
      are reproduced in the showcase_listctrl, and the preferences_dialog. Can't be a
      global or else they won't get translated.
      
      [ ] Default dialog sizes fit on a 640x480 screen by default for remaining dialogs
      [ ] Hyperlink dialog->probably needs tabs
      [ ] Configure dialog--difficult
      
      [ ] The default font in the wxStyledTextCtrl on GTK isn't a fixed width font for some reason.
      It is wxMODERN alright. The sample isn't fixed width either. The control just doesn't
      seem to care.
      --This should use a font selector anyways (along with word wrap) in the
      Preferences Dialog > Editor tab.
      --There is a function wxFont::GetNativeFontDesc() or something that will give a
      savable string for a complete font description. Use that to save to config,
      then load in the editor.
      
      [ ] Rebrand icon/wizards/about_dialog to the final plucker icon.
      
      [ ] Commandline additions:
      channels     list all the channels one per line
      sections     list all sections one per line
      chandue      list all channels due one per line
      secdue       list all sections due one per line
      version      return version info of this desktop
      options to set the progress display method (so can use a different method than
      the GUI version)
      
      [ ] Add none to progress display options, and perhaps a checkbox/editbox to allow turning
      on of logging to a specified file.
      
      [ ] Better exit status on commandline mode: Example
      1 = failed channel
      2 = more than one failed channel
      10 = no channels to process (none due)
      11 = can't write log file(s)
      
      //----------------------------------------------------------------------------------------
      // Priority 4
      //----------------------------------------------------------------------------------------
      
      [ ] Include a column in mainscreen for success/fail/new of channel success.
      
      [ ] Main frame > About dialog: the post update size doesn't seem to work.
      [ ] Postponed, just using some extra spaces for now.
      Will be using expanded variables in XRC which will fix this anyways
      it will just be a $(version) where the application version number gets filled
      in. Waiting for implementation.
      
      [ ] Will have to do something with close progress dialog if no errors, as now it
      doesn't know if an error occurred, since stdout changed.
      
      [ ] Hide dialog items if compiled out. These should go into a similar function
      yes a function for each to remove items for code order.
      
      [ ] viewer_wizardpage.cpp should have a read_configuration and write_configuration
      of its controlls to all better VAR customization and also in case run again, don't
      accidently put in the wrong ones.
      
      [ ] Use a modified "Add channel wizard" wizard for the basic toolbar's add hyperlink button.
      
      [ ] Add note in online help that can't use spaces on MSW in before_command and after_command
      (the 2 parser ones) if they aren't fixed in the CVS parser (before_group_commmand and the
      rest of the pure Desktop ones can use spaces OK).
      --->Bill wants it out of the parser. Excise it and add to Desktop.
      
      [ ] Autoupate: on the ShowModal() of the parent
      get the autoupdate precision before and after showing the modal. If has changed, then
      restart the timer with a interfaced call to main_listctrl->start_timer(); otherwise
      will keep the same timer until shut down and restart the application.
      
      [ ] "Compact", other properties into parser.
      
      [ ] "Popup" into parser, viewer.
      
      [ ] Image dialog: checkbox 'Relative to page location' works (do after editor loads up
      any page).
      --->There is a function specifically for this purpose. wxFileName::MakeRelativeTo()
      [ ] Should set CWD to the html file so that html window can find these images now, once relative.
      [ ] Make relative the default.
      
      [ ] Drag and drop files/text into main frame listctrl.
      [X] Basic classes added to main listctrl
      [-] Drop a string URL as the home_url
      [X] Drop a set of filenames as the home_url
      [-] Drop XML text as a channel
      [ ] Drop XML files as channels.
      [X] Finish the longs and the datetimes (should probably change config
      path to the section first, since so many)
      
      [ ] Paste:
      [X] Paste URL as new channel.
      [-] Paste XML string as new channel [should check string on clip board first
      to see if starts with <xml...].
      [ ] Menu creates and enables the entries depending what is on clipboard.
      [ ] Paste files as a single channel (makes a home.html, with links to all files).
      [X] Paste each file as an individual channel
      [ ] Could either:
      - prompt to create one channel for all/or channel for each
      - popup menu items for these 2 cases
      - pref to decide
      [ ] Don't allow the "a single file pointing to all the subfiles" option,
      unless it there is more than one filename
      [ ] Paste XML file as channel (need an extension, like .plkr?)
      
      [ ] Add the parser's "filename_extension" value to the UI?
      
      //----------------------------------------------------------------------------------------
      // OS Specific Issues: Mac
      //----------------------------------------------------------------------------------------
      
      [ ] Add in the commented out "About relocation" in main_frame.cpp
      
      [ ] On MacOSX there is a special application menu for preferences. It should be moved, like
      the about menu relocation but code to do it isn't in wx cvs yet (june 25).
      > under Mac OS X there is a special preferences menu in every
      > application menu.
      --->Dominic says that this will get its own function soon.
      
      //----------------------------------------------------------------------------------------
      // OS Specific Issues: GTK
      //----------------------------------------------------------------------------------------
      
      [ ] Install application/desktop links for KDE and GNOME (currently they are sitting in
      installer/unix directory)
      
      [ ] Right click on the progress-dialog listbox. The popup menu location isn't under the
      mouse, but a point relative to the listbox if it wasn't inside a scrolled window
      (though if that point was offscreen, the menu will move up to be visible).
      Either something in listbox, or something with my code.
      [ ] Have a look at ::wxGetMousePosition() It will return it in screen coordinates.
      
      [ ] When start plucker-desktop from console, GTK will give some warnings about a clipping
      region being NULL somewhere along the splashscreen creation. It doesn't seem to harm
      anything. 
      
      //----------------------------------------------------------------------------------------
      // OS Specific Issues: MSW 
      //----------------------------------------------------------------------------------------
      
      [ ] Configure channel: "Edit file" button flickers if box is empty.
      ---> Need a check to see if already disabled before disabling again or vice versa.
      ---> Added the code, but still flickers. Unknown why.     
      
      [ ] Better default channels for install. The current one was used because (a) I know the 
      channel won't change on me (b) I know it works and doesn't go offsite or have 
      invalid HTML, nor will it (c) I looks good in the viewer and shows off most of the 
      formatting features. However, having some defaults of more broad interest (tech, 
      PDAs, etc would be better. Probably better to take from the showcase).
      
      [ ] My MSW test machine on wx2.3.3 no longer seems to connect automatically to the 
      Internet if starting a parse. Machine specific, or need a wxDialUpManager?
      
      //----------------------------------------------------------------------------------------
      // Non-essentials
      //----------------------------------------------------------------------------------------
      
      [-] Freeze on preferences dialog > autoupdate tab in use time control. To reproduce:
      - Have one of the radio-buttons other than the offpeak radiobutton (3rd one) selected
      - Select the off peak radiobutton
      - Select one of the other radiobuttons.
      - Program is now frozen, processing away at some calculation somewhere. Infinite 
      recursion of an update event? A duplicate ID? Other?
      
      [ ] Ability to cycle through all tips. (Perhaps move to checklistbox of 
      basic/advanced/trivia).
      
      [ ] Add depth-first to showcase entries, that can be parsed depth-first.
      
      [ ] Add .hhp cached file to installers (WIN and maybe Linux)
      
      [ ] A dialog for setting the desired directories. Has to be non-XML so that can run it 
      at startup before try to load the XML resources (which would segfault the program)
      Perhaps a layout of:
      Name of directory (and description): [Verify button] [status]
      [Edit box] [Choose directory button] 
      ---Make each as a component so that can put 6 of the suckers on the same page.
      ---Read/write to the config file.
      ---Perhaps lead in with a checkbox dialog specifying that one or more directories
      were not found. Do you wish to locate them? (Don't show this again).
      
      [ ] Checks for pilot-xfer before attempting a handheld install of channel/software: 
      Here is the python code from plucker-setup:
      if  not os.system('pilot-xfer > /dev/null 2>&1'):
      install_viewer()
      else:
      print "\nThe program 'pilot-xfer' is missing so the Palm applications cannot be installed. You'll find them in %s." % PALMDIR
      
      [ ] Include the DOC converter into channel dialog start page tab.
      
      [ ] Hyperlink dialog: add a POST="" parameter field. Doesn't work? (See mail archive)
      
      [ ] When popping up dialog asking for a Channel name, have the function take an extra 
      argument to override the default plkr_UNNAMED_CHANNEL_NAME with something better for the 
      default text (and send that argument). Get the orginal argument by looking at the 
      filename, or the URL and making something useful and compliant from that.
      
      [ ] A commandline parameter for uninstalling, to launch a dialog asking if want to 
      clear out the channels dir. More efficent that maintaining a separate uninstall run
      program.
      
      [ ] Add support to parse the timezone and/or convert from GMT (perhaps add a wxDateTime::FromGMT()
      function).
      
      [ ] Capacity to build a channel of channel homepages (either a wizard or a note in the docs).
      
      [ ] Option to ask "For what user?" when updating channel(s).
      
      [ ] DOS-like-syntax ( ? and * ) wizard for regular expressions (with a checkbox for only
      if at the end). Stick them as a "Wizard.." button at the end of the url-pattern and 
      blocked dialog buttons.
      
      [ ] Make external editor a combo box containing some strings to popular editors.
      [ ] Make the utils_controls::file_control have a final parameter of whether should quote the file returned,
      and turn it on for the external editor one, if under MSW. Else just quote the returned 
      file.
      
      [ ] HR dialog width values >100% inserts as 100% (validate?).
      
      [ ] HR dialog spinner upper limit of width is 150 pixels, or a warning, or just a note
      in Docs.
      --->Just a note in docs will do fine, as plucker documents aren't just for
      handhelds anymore.
      
      [ ] Hyperlink "color" property (may need to split into basic and advanced tabs).
      
      [ ] Span "color" property.
      
      [ ] Bookmark dialog prevents non-kosher letters in the "name" field (use a Validator).
      
      [-] Exclusion list dialog currently inverts list order if edit an entry (probably due
      to insert putting it in the first position). Marked non-essential since probably
      more sense to specify an alpha or priorty sort before loading anyways. Is one of 
      the load or saves in reverse lines though. Could it be?
      
      [ ] Delete plkr* (or plk* since truncates) files from system's temp directory on program 
      exit. wx* also? Or use a different temp directory and delete everything?
      --->There is no temp files unless downloading something.
      
      [ ] Set calendar to have a beveled appearance. Tried it, doesn't seem to work.
      [ ] Option to set calendar to start with Mondays first, not Sundays.
      
      [ ] Autoupdate: behaviour for disconnecting after sync.
      ( ) Stay on
      ( ) Auto off
      ( ) Ask
      --->Add note to docs that have to config OS dialup to automatically finish
      the connect when called by an app, since autofilling in login/pass isn't possible
      (nor should it be, that is an OS item, not the responsibility of Plucker Desktop).
      
      [ ] A getmultiplesections for choosing which global exclusion list to edit (in the 
      exclusionlist dialog constructor. Currently always opens/creates it in the expected 
      places.
      
      [ ] Use a custom listctrl checklistbox instead of a normal checklistbox for multiple
      selections, such as the showcase fields. See cpp code in /unused_source.
      
      //----------------------------------------------------------------------------------------
      // Pre-release
      //----------------------------------------------------------------------------------------
      
      [X] Add any extra OS reserved characters to the illegal_section_name_characters wxString
      at the top of configuration.cpp (like perhaps a tab \t or a newline or any Linux 
      or Mac restrictions). 
      --->Due to infinite characters possible, we now go the other way: only allow 
      legal chars.
      
      [ ] Handheld software install directories to their final resting places. (esp usermanual
      where is that in a default install? 
      --->Michael: Use a plucker.ini key to tell what directory to look for it.
      
      [ ] Array Memory clearing
      [ ] Ones not using a & (hence a copy constructor). There is a good few in configuration.cpp
      [ ] Ones returning a wxArrayString instead of taking it as a reference parameter
      
      [ ] Proper character-sets to use for po files.
      
      [X] 4byte magic number for Handspring (see plucker-dev list patch to the Pascal conduit).
      --->Also fixed the 01 80 problem when finding a list of users.
      
      [X] Full resources in Makefile.in so know what to copy to system directory.
      
      [X] Plucker team translations to po files, or a notice about it.
      
      //----------------------------------------------------------------------------------------
      // Source code formatting
      //----------------------------------------------------------------------------------------
      
      [X] Main frame should load from XRC (see my new wx/contrib/samples/xrc/demo).
      
      [ ] The install_file_by_username (convenience function to install_files_by_username) 
      should be moved out of the derived classes and into the base class.
      
      [ ] Consider a listctrl instead of a listbox for the progress dialog, so that don't
      have the 2000 lines barrrier.
      ---->Ask if this limitation is still in GtK 2.0.
      ---->Use a virtual listctrl. With that there is an infinite upper limit since the
      data isn't actually in the control, the application just serves on demand.
      You can have a million rows.
      ---->While there, implement "IRC-like" scrolling, where it will autoscroll if 
      you are at the bottom, if you scroll up a bit, though, it stays at where
      you put it. There is a wxListCtrl::ScrollList() function.
      
      [ ] Progress dialog Try an onshow again instead of an on paint. 
      -->Onhold, since GTK doesn't have an OnShow() yet.
      
      [ ] Doxygenate.
      [X] Publics
      [ ] Anything else useful.
      
      [ ] To save space, use "event." used in events instead of another XRCID (see main_frame.cpp).
      
      [ ] Add DECLARE_DYNAMIC_CLASS macros to rest of classes where possible.
      
      [ ] Save a bit of space too by a utils_controls:: to read a config key into the hhictrl,
      and write it out, as it is repeated in both the channel_dialog.cpp and the 
      destinations_wizardpage.cpp
      
      [ ] Change rest of true and false to TRUE and FALSE, for older compilers that don't have a 
      built-in bool type.
      
      [ ] Better makefile to generate/merge the po files.
      
      [ ] Makefile should copy over the authors and GPL files (and PluckerDesktop.tex) from
      the main CVS tree locations.
      
      [ ] Add #error messages to setup.h to send a message for things that don't make sense
      such as turning on setupUSE_MSW_DIALOG_TASKBAR_ICON on Linux.
      
      [ ] Put a -v switch on the mo file's msgfmt command so can monitor any abnormalities in 
      the input file that would cause failure to generate a mo file (such as invalid header).
      
      [ ] Standardize variable names involving parts of a filename / path:
      
      |<-------------------------------------fullname----------------------------------------->|
      |<----------------------path--------------------------------->|<--------filename---------|
      |<-volume->|<----------------nondrivepath------------------->|<-basename->|<-extension->|
      |<-------------rootpath----------------->|<---subdirectory--->|
      
      Example: C:\projects\plucker\readme.txt
      
      Fullname        =  C:\projects\plucker\readme.txt
      Path            =  C:\projects\plucker            (note no trailing slash)
      Filename        =  readme.txt
      Basename        =  readme
      Extension       =  txt
      Rootpath        =  C:\projects                    (note no trailing slash)
      Subdirectory    =  plucker
      Volume          =  C: (or C:\)?
      
      Use term subdirectory when talking about a group of known directories inside another
      for example, the channel subdirectories inside the /channels folder.
      Drive and nondrivepath shouldn't ever be needed.
      
      [ ] channel_type.cpp and plucker_controller::add_channel(): perhaps have the initial 
      illegal value for the strings to be "-1" in quotes?
      
      [ ] Move external functions into static classes:
      [ ] configuration.cpp (query first how that will fit in with whole ).
      
      [-] Strip out the icons_dnd from CVS and source if never making Plucker a drop 
      _Source_ (not just a drop target).
      [X] drop source 
      [ ] icons (will probably leave in for later).
      Perhaps put the code in utils_clipboard that takes an argument of a window and 
      exportable string, so can recycle the code among different windows/apps.
      
      [X] read_user_dat() function in palm_installer.cpp could be prettier.
      
      [ ] Reserved sections: to a wxString[] instead? Should be a member variable of
      configuration class anyways. Beware though of wxString as a member: easy to memory
      trash, since goes out of scope easy.
      
      [ ] In configuration/pluckercontroller, check that the_configuration->HasGroup[] before 
      try to copy or delete a section.
      --->Think these are done. But double check.
      
      [ ] & and const where appropriate in argument lists.
      
      [ ] Consider use of tokenizer functions in utils_string::string_to_array_int() and 
      related..
      
      [ ] Better handling of translation selection, autogeneration of a selection list from
      the /langs directory.
      
      //----------------------------------------------------------------------------------------
      // wxWindows patches TODO:
      //----------------------------------------------------------------------------------------
      
      [ ] Why does multiple wx apps bundle on top of each other in the KDE Kicker panel 
      (eg Plucker Desktop and poEdit)?
      
      [ ] Tooltips are in incorrect character set in translation (on MSW anyways).
      
      [ ] MSW on a wxShell() the app's window doesn't return the focus after the console
      application has finished.
      
      [ ] Addition of accessor to set the color of a wxSplitterWindow sash from black to 
      something else.
      
      [ ] Tex2RTF: should obey sections for the names of anchors, so that can have a
      multiple language support mechanism for same program calls to help, but different
      translated help files.
      
      [ ] wxDateTime::FromGMT() (the opposite of wxDateTime::ToGMT).
      
      [ ] wxDateTime Parse W3C Date (and addition of Read to the wxFileConfig() ).
      
      [ ] wxMSW: wxMultipleChoiceDialog erroneously selects the first item always, when loaded.
      (Note: this is likely a Win95 bug, not wx, works correctly on Win2000).
      -->Not relevant if go to a wxListCtrl based one anyways.
      
      [ ] Generic: Color dialog: the "add to custom colors" doesn't work as expected.
      
      [ ] Busy info dialog less flat.
      
      //----------------------------------------------------------------------------------------
      // wxWindows bugs, that have already been updated in their CVS:
      //----------------------------------------------------------------------------------------
      
      //----------------------------------------------------------------------------------------
      // wxWindows known limitations, that are there because trivial (All Platforms):
      //----------------------------------------------------------------------------------------
      
      [-] Can't download a channel preview or showcase listing from the shared virtual servers
      For example:
      http://www.afflatus.com/rob.md/projects/plucker/showcase/plucker_showcase.htm
      will download, but
      http://www.rob.md/projects/plucker/showcase/plucker_showcase.htm
      will not, since not HTTP 1.1. Workaround for this was on a wx mailing list
      (send a header with the domain).
      
      [-] Non 16-color images will be drawn in incorrect palettes on 256 color systems. Shown 
      fine once pump up the color-depth.
      
      //----------------------------------------------------------------------------------------
      // Plucker Desktop known limitations
      //----------------------------------------------------------------------------------------
      
      [-] Unknown whether mixed case protocols are found, such as fIlE:// or plUckER:/.
      configuration.cpp: the conversion of a protocol filename to a regular one.
      
      [-] In .ini file, only 1 and 0 are supported booleans, not TRUE or FALSE strings.
      
      [-] If update period is monthly, and set to update on the 29/30/31 of the month, then will
      move to last day of month and then stay there to the shortest day of month hit.
      For example, if Update monthly, with base date of Jan31, then next month will be Feb28,
      Then next month will be Mar28. Reason is that only increasing month from last due date,
      and can't store a feb31.
      
      [-] Can't use a ; (semicolon) in a Sync username, since that is what is used to separate 
      entries. This is also true in other things like category, etc.
      
      [-] Exclusion dialog: if on the extensions tab, and you insert a http:// exclusion, it
      will appear in the file blocks, until the dialog is closed and you reopen it, and
      it will have moved to URLs tab. This is because everything is in one file. They
      are just sorted into one tab or the other on loadup for clarity.