Check-in [a39f256989]

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Overview
Comment:Updated todo.
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA1: a39f256989882ae1f5a3ebe57ad3c30584f80122
User & Date: tinus 2015-12-08 08:00:23.355
Context
2016-01-11
16:48
Comments. check-in: e1d5f80a24 user: tinus tags: trunk
2015-12-08
08:00
Updated todo. check-in: a39f256989 user: tinus tags: trunk
2015-11-29
13:18
Show a console icon for the console menu item. check-in: 4646c6ea91 user: tinus tags: trunk
Changes
Unified Diff Ignore Whitespace Patch
Changes to todo.md.
1
2

3
4
5
6
7
8
9
10
11
12
13
14
15
16

17
18
19
20
21
22
23
Plans
=====

* Modularize VCS repo info (re-use clients from radstudioverins?)
* <strike>Add support for Fossil as well as Mercurial.</strike>
* Add a settings window?

User interface:
--------------
* **Updating**: we're currently using the TActions' OnUpdate event to refresh the current repo's
  information, but that occurs far too often. We should probably:
  * set up a timer to check regularly
  * respond to events within the IDE itself when chances are that something's changed.
  * also, probably observe different timeouts for different things. Getting the remote status is
    (potentially) far more costly than the status of our local work directory.
  * Add a button to do a forced refresh. Use it to indicate automatic refreshing as well
    (`Down := True; try do stuff; finally Down := False`)

* Figure out how to respond to events ([XE7 help](ms-help://embarcadero.rs_xe7/rad/Notifying_a_Wizard_of_IDE_Events.html))
  - `IOTAEditorNotifier`: Modifying or saving a source file, or switching files
    in the editor
  - `IOTAModuleNotifier`: Changing, saving, or renaming a module
  - ⇒ whenever a file changes, check the file cache and then the repo cache,
    and if we've changed repo, we should switch our buttons' displayed info to
    the appropriate repo. If that repo's info is out of date, it should be


>

<












>







1
2
3
4

5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Plans
=====
* Move processing to background to improve responsiveness of the IDE
* Modularize VCS repo info (re-use clients from radstudioverins?)

* Add a settings window?

User interface:
--------------
* **Updating**: we're currently using the TActions' OnUpdate event to refresh the current repo's
  information, but that occurs far too often. We should probably:
  * set up a timer to check regularly
  * respond to events within the IDE itself when chances are that something's changed.
  * also, probably observe different timeouts for different things. Getting the remote status is
    (potentially) far more costly than the status of our local work directory.
  * Add a button to do a forced refresh. Use it to indicate automatic refreshing as well
    (`Down := True; try do stuff; finally Down := False`)
  * _It might be a good idea to start with a separate button that does something threaded, to make the setup more simple. One step at a time._
* Figure out how to respond to events ([XE7 help](ms-help://embarcadero.rs_xe7/rad/Notifying_a_Wizard_of_IDE_Events.html))
  - `IOTAEditorNotifier`: Modifying or saving a source file, or switching files
    in the editor
  - `IOTAModuleNotifier`: Changing, saving, or renaming a module
  - ⇒ whenever a file changes, check the file cache and then the repo cache,
    and if we've changed repo, we should switch our buttons' displayed info to
    the appropriate repo. If that repo's info is out of date, it should be
32
33
34
35
36
37
38


39
40
41
42
43
44
45
            'GExperts is [...]'#13#10
            + '(c) by Erik Berry and the GExperts Team'#13#10
            + 'http://www.gexperts.org',
            bmSplashScreen,
            False,
            GetVersionStr);
    end;</pre>



Architecture:
------------
* Split cached info in two parts:
  - final pathname of a file's dir => final pathname of the repo's root dir
    (if the root dir is empty, that would mean we know it's not a repo)
  - final pathname of the repo's root dir => repository info







>
>







33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
            'GExperts is [...]'#13#10
            + '(c) by Erik Berry and the GExperts Team'#13#10
            + 'http://www.gexperts.org',
            bmSplashScreen,
            False,
            GetVersionStr);
    end;</pre>

* Plug into the splash screen as well (`IOTASplashScreenServices`)

Architecture:
------------
* Split cached info in two parts:
  - final pathname of a file's dir => final pathname of the repo's root dir
    (if the root dir is empty, that would mean we know it's not a repo)
  - final pathname of the repo's root dir => repository info