MacProject Pro 1.5 interaction spec
This page is docs/behavior.md from the repository, published as written.
What the original application does with menus, shortcuts, tools, mouse and keyboard, so the editor can behave the same and muscle memory carries over. It was read from the application's resources (menus, key tables, window layouts, cursors) and from its code; the menu tables give each item and its command key.
Markers
| [confirmed] |
Read directly from a resource, or seen in the running app earlier (file-format.md). |
| [code] |
Read from the decompiled code (function addresses given). |
| [guess] |
Inferred. Says from what. |
Sources
MBAR, MENU |
Menus and items. |
mKey |
The app's own key table for its menu definition (MDEF 262), which carries modifiers. |
hmnu, hdlg, STR# |
Balloon Help. |
mntb |
Command number → menu item, including the "Buzzwords" undo names in MENU 128. |
view |
MacApp window layouts. |
CURS, SICN, cicn |
Cursors and icons. |
CODE |
Decompiled in the segments CDoMouseCommand, CDoKeyCommand, CSchedule, CScheduleCommands, CChartObject, CRes. |
The menu bar (MBAR 128) is, in order: Apple, File, Edit, Chart, Layout, Task, Analyze, Organize, View. [confirmed] The running app shows this order, with Help (the system Balloon Help menu) at the right. Hierarchical submenus come from MBAR 130.
How shortcuts are encoded [confirmed]
- Main menus use a custom menu definition,
MDEF 262. Each such menu has an mKey resource with one 6-byte entry per item:
- 4 bytes, always 0;
- a modifier byte (1 = ⌘, 3 = ⇧⌘);
- the key.
- The
MENU key bytes alone show duplicates (Close / Close Document both "W"). The mKey modifiers separate them.
- ⇧⌘A for Display Attributes was confirmed on screen in MacProject Pro itself.
- Submenus with the standard definition (Find, Arrange Charts…) take plain ⌘ from
MENU.
- No item uses ⌥ or ⌃.
Items whose text changes with context [confirmed]
These come from Balloon Help "compare" records and from STR. Each pair is one menu item whose title flips:
- Edit ▸ Duplicate (⌘D) depends on the active window or selection:
- Duplicate: a Schedule Chart object.
- Insert Task: a dependency line is selected.
- New Item: Outline.
- New Task: Project Table.
- New Resource: Resource Table.
- New Allocation: Allocation Table (
STR 8704).
- New Dependency: Dependency Table (
STR 8705).
- Task ▸ Change to Milestone ↔︎ Change to Task (⌘M;
STR 9007/9008).
- Task ▸ Mark Completed ↔︎ Mark Uncompleted (⌘K; sets 100% / 0% done).
- Task ▸ Show Task Info ↔︎ Show Summary Info (⌘T;
STR 8601/8602).
- Task ▸ Go to Subproject ↔︎ Go to Linked Task: a supertask or a link marker.
- Layout ▸ Clean Up Schedule ↔︎ Clean Up Selection.
- Layout ▸ Change to Note ↔︎ Change to Annotation (
STR# 3000).
- Layout ▸ Show Notes ↔︎ Hide Notes (
STR# 3001).
- Organize ▸ Move to Schedule Chart ↔︎ Remove From Schedule Chart. Removing asks first: "Remove selected task(s) from the Schedule Chart? … You cannot undo this action." (
STR# 8902 #10).
- Analyze ▸ Baseline All ↔︎ Baseline Selection.
- View ▸ Show/Hide Tools Palette, Task Palette, Cue Card.
- View ▸ Fit to Window ↔︎ Actual Size (
STR 9009/9010).
- Edit ▸ Show Clipboard ↔︎ Hide Clipboard.
- Undo reads "Undo " or "Redo " (
STR# 250). The action names are the Buzzwords list in §7.
| 1 |
About MacProject Pro… |
|
| 2 |
Help... |
⌘? (⌘/) |
| 3 |
— |
|
| 1 |
New |
⌘N |
| 2 |
Open… |
⌘O |
| 3 |
Close |
⌘W |
| 4 |
Close Document |
⇧⌘W |
| 5 |
Save |
⌘S |
| 6 |
Save As… |
⇧⌘S |
| 7 |
Revert to Saved |
|
| 8 |
Documents ▸ submenu 21 |
|
| 9 |
— |
|
| 10 |
Import... |
|
| 11 |
Export... |
|
| 12 |
Exchange ▸ submenu 22 |
|
| 13 |
Extensions ▸ submenu 25 |
|
| 14 |
— |
|
| 15 |
Page Setup… |
⇧⌘P |
| 16 |
Print Preview... |
|
| 17 |
Print… |
⌘P |
| 18 |
— |
|
| 19 |
Quit |
⌘Q |
| 1 |
Undo |
⌘Z |
| 2 |
— |
|
| 3 |
Cut |
⌘X |
| 4 |
Copy |
⌘C |
| 5 |
Paste |
⌘V |
| 6 |
Clear |
|
| 7 |
Duplicate |
⌘D |
| 8 |
Select All |
⌘A |
| 9 |
— |
|
| 10 |
Publishing ▸ submenu 12 |
|
| 11 |
— |
|
| 12 |
Spelling ▸ submenu 10 |
|
| 13 |
Find ▸ submenu 20 |
|
| 14 |
— |
|
| 15 |
Preferences... |
|
| 16 |
Show Clipboard |
|
| 1 |
Outline |
|
| 2 |
— |
|
| 3 |
Schedule Chart |
|
| 4 |
Task Timeline |
|
| 5 |
Project Table |
|
| 6 |
— |
|
| 7 |
Resource Timeline |
|
| 8 |
Resource Table |
|
| 9 |
Resource Histogram |
|
| 10 |
Allocation Table |
|
| 11 |
— |
|
| 12 |
Cash Flow Table |
|
| 13 |
Dependency Table |
|
| 14 |
Project Overview |
|
| 1 |
Use Autogrid |
|
| 2 |
Clean Up Schedule |
|
| 3 |
Schedule Chart Size... |
|
| 4 |
Display Attributes... |
⇧⌘A |
| 5 |
— |
|
| 6 |
Attributes... |
|
| 7 |
Column Setup... |
|
| 8 |
Timeline Setup... |
⌘U |
| 9 |
Timeline Bars ▸ submenu 15 |
|
| 10 |
— |
|
| 11 |
Change to Legend |
|
| 12 |
Change to Note |
|
| 13 |
Show/Hide Notes |
|
| 14 |
— |
|
| 15 |
Font ▸ submenu 11 |
|
| 16 |
Size ▸ submenu 13 |
|
| 17 |
Style ▸ submenu 14 |
|
| 18 |
Color ▸ submenu 18 |
|
| 1 |
Change to Milestone |
⌘M |
| 2 |
Show Task Info... |
⌘T |
| 3 |
Mark Completed |
⌘K |
| 4 |
— |
|
| 5 |
Link to Subproject... |
⇧⌘L |
| 6 |
Go to Subproject |
|
| 7 |
Go to Supertask |
|
| 8 |
Link to Task ... |
|
| 9 |
— |
|
| 10 |
Attach Document... |
|
| 11 |
Attach Note |
|
| 12 |
— |
|
| 13 |
Lag Time... |
|
| 1 |
AutoCalc |
|
| 2 |
Calculate Now |
⌘= |
| 3 |
Calculate Using Planned |
|
| 4 |
Calculate Using Actual |
|
| 5 |
— |
|
| 6 |
Consolidate Project Family |
|
| 7 |
Get Master Project Dates |
|
| 8 |
— |
|
| 9 |
Show Calendar Info... |
⌘E |
| 10 |
Duration Scale... |
⇧⌘D |
| 11 |
— |
|
| 12 |
Resources... |
⌘R |
| 13 |
Resource Scope... |
|
| 14 |
Level Resources |
⌘L |
| 15 |
Unlevel Resources |
|
| 16 |
View Leveler Results |
|
| 17 |
— |
|
| 18 |
Baseline All |
|
| 1 |
Move to Task Palette |
⌘I |
| 2 |
Move to Schedule Chart |
⇧⌘M |
| 3 |
Make Custom Summary... |
|
| 4 |
Make Outline Summary |
⇧⌘E |
| 5 |
— |
|
| 6 |
Sort... |
⌘J |
| 7 |
Sort Again |
⇧⌘J |
| 8 |
— |
|
| 9 |
Search... |
⇧⌘F |
| 10 |
Search Again |
⇧⌘H |
| 11 |
Show All |
|
| 1 |
Show Tool Palette |
⌘- |
| 2 |
Show Task Palette |
⌘[ |
| 3 |
Show Cue Card |
⌘] |
| 4 |
— |
|
| 5 |
Arrange Charts ▸ submenu 23 |
|
| 6 |
Fit to Window |
⇧⌘R |
| 7 |
— |
|
| 8 |
Perspectives... |
|
| 1 |
Find... |
⌘F |
| 2 |
Go To First |
⌘G |
| 3 |
Find Next |
⌘H |
| 1 |
Check All… |
⌘Y |
| 2 |
Check Selection… |
|
| 3 |
— |
|
| 4 |
Spell Word… |
⇧⌘Y |
| 5 |
Options… |
|
| 6 |
— |
|
| 7 |
Install Dictionaries… |
|
| 8 |
Edit User Dictionary… |
|
| 1 |
Create Publisher... |
|
| 2 |
Subscribe To... |
|
| 3 |
— |
|
| 4 |
Publisher Options... |
|
| 5 |
Edition List... |
|
| 6 |
— |
|
| 7 |
Suspend Edition Updates |
|
| 8 |
Show Borders |
|
| 1 |
9 Point |
|
| 2 |
10 Point |
|
| 3 |
12 Point |
|
| 4 |
14 Point |
|
| 5 |
18 Point |
|
| 6 |
24 Point |
|
| 7 |
36 Point |
|
| 8 |
— |
|
| 9 |
Other… |
⇧⌘O |
| 1 |
Plain Text |
⇧⌘T |
| 2 |
Bold |
⇧⌘B |
| 3 |
Italic |
⇧⌘I |
| 4 |
Underline |
⇧⌘U |
| 5 |
Outline |
|
| 6 |
Shadow |
|
| 7 |
Condensed |
|
| 8 |
Extended |
|
| 1 |
Tile Across |
|
| 2 |
Tile Down |
|
| 3 |
Stack |
|
| 4 |
Tile Special |
|
| 5 |
— |
|
| 6 |
Current Document Only |
|
Shortcut collisions with macOS 27 (for the main session to decide)
| ⌘H |
Edit ▸ Find ▸ Find Next |
Hide app |
| ⌘M |
Task ▸ Change to Milestone |
Minimize window |
| ⌘- |
Show/Hide Tools Palette |
Zoom out (MacProject zooms with the window's zoom icons) |
| ⌘= |
Calculate Now |
Zoom in |
| ⌘[ / ⌘] |
Task Palette / Cue Card |
Back / Forward |
| ⌘T |
Show Task Info |
Show Fonts |
| ⌘D |
Duplicate / New … |
— (same meaning) |
| ⌘E |
Show Calendar Info |
Use Selection for Find |
| ⌘L |
Level Resources |
— |
| ⌘K |
Mark Completed |
— |
| ⌘J |
Sort… |
— |
| ⌘R |
Resources… |
— |
| ⌘U |
Timeline Setup |
Underline |
| ⌘I |
Move to Task Palette |
Italic |
| ⌘B |
— (Bold is ⇧⌘B) |
Bold |
| ⌘G |
Find ▸ Go To First |
Find Next |
| ⌘Y |
Spelling ▸ Check All |
— |
MacProject uses ⇧⌘ for text styles (⇧⌘B/I/U/T) precisely because ⌘I/⌘U/⌘T are taken. Muscle memory wants ⌘M, ⌘T, ⌘K, ⌘D, ⌘E, ⌘L, ⌘R, ⌘J, ⌘= and ⇧⌘A as listed. Only ⌘H and ⌘M collide with system-wide items, and an app may rebind both by changing its own Hide and Minimize items.
The palette (view 9003 "Tool Palette", class TToolPalette) is a floating window of command buttons, not drawing tools: 18 buttons of 21 × 21 px in 3 columns and 6 rows. Each button has a normal and a pressed cicn (12500–12535, named in the resource). The Balloon Help (hdlg 1010 → STR# 27001) says what each button does and when it's available.
| 1 (v 2) |
Outline (outl): makes the Outline active |
Schedule Chart (pert): makes the Schedule Chart active |
Task Timeline (tmln) |
| 2 (v 25) |
Task Info (info): opens Task Info for the selected task; available with a task selected |
Calendars (cale): opens the Calendar Info window |
Column Setup (coln): tables only |
| 3 (v 48) |
Sort (sort): Sort dialog; not in Project Overview |
Search (sear): Search dialog, to show, hide or select tasks |
Find (find): Find dialog, to locate a task |
| 4 (v 71) |
Calculate (calc): recalculates schedule and budget |
Level Resources (levl) |
Create Perspective (pers) |
| 5 (v 94) |
Save (save) |
Print (prnt) |
Print Preview (prev) |
| 6 |
Fit to Window (fitw): toggles with Actual Size |
Tile Down (tldn) |
Tile Across (tlac) |
Each button is the same command as its menu item:
| Task Info |
1068 |
Task ▸ Show Task Info |
| Calendars |
1043 |
Analyze ▸ Show Calendar Info |
| Column Setup |
1080 |
Layout ▸ Column Setup |
| Sort |
1058 |
Organize ▸ Sort |
| Search |
1060 |
Organize ▸ Search |
| Find |
1055 |
Edit ▸ Find ▸ Find |
| Calculate |
1038 |
Analyze ▸ Calculate Now |
| Level Resources |
1046 |
Analyze ▸ Level Resources |
| Create Perspective |
1064 |
View ▸ Perspectives |
| Save |
30 |
File ▸ Save |
| Print |
178 |
File ▸ Print |
| Print Preview |
194 |
File ▸ Print Preview |
| Fit to Window |
1023 |
View ▸ Fit to Window |
| Tile Down, Tile Across |
1123… |
View ▸ Arrange Charts |
[confirmed] for the commands and menu items that Balloon Help names. The ID-to-command pairing is a [guess]: it follows from the ID order matching the menu order.
Other floating windows [confirmed]
These come from Balloon Help (STR# 27000).
- Task palette (⌘[): holds Outline items that aren't on the Schedule Chart yet; dragging one onto the chart schedules it as a task.
- Organize ▸ Move to Task Palette (⌘I) sends Outline items there.
- The Drag Item cursor is
CURS 9002.
- Cue card (⌘]): a list of the project's resource and calendar names for filling in fields; it stays empty until a field that takes one of those names is active. Clicking a name enters it in the active cell [guess].
3. Window controls
Every chart window, bottom-left [confirmed]
These come from hdlg 1000 → STR# 27000.
- Zoom-in icon: enlarges, up to 400%.
- Zoom-out icon: reduces, down to 3%.
- Zoom percentage box:
- Click once to toggle between 100% and the most recently used zoom factor.
- Double-click for the "View (%)" dialog (
view 5000), which sets a custom zoom between 3% and 400%.
- Fit to Window / Actual Size (⇧⌘R). The page icon toggles: one click shrinks the chart to fit the window, the next returns it to actual size.
Outline window palette (view 1002, TTblOutlinePallete) [confirmed]
Left to right:
- ◁ Left arrow (Move Left): promotes the selected item, with everything under it, one level up the hierarchy. Not available when the item isn't a descendant.
- ▷ Right arrow (Move Right): moves the item right, one level deeper. Not available for the first item, or the first child of its parent.
- ▽ Down arrow (Move Down): "appears below the item following it at the same level."
- △ Up arrow (Move Up): "appears above the item preceding it at the same level." If the item is a descendant, it moves closer to its parent.
- Level: [name]: shows the selected item's level name.
- Level pop-up (
MENU 8001: 1 Overview, 2 Objective, 3 Task, 4 Detail): shows a parent's children down to the chosen level and hides the rest. Its help mentions acting on the whole Outline with a modifier key but the text is cut off; most likely ⌥ [guess].
- Embedded text icon: opens an item for a note of embedded text, and shows or hides that text; with ⌥ it does so for the whole Outline.
The undo names are "Move Left / Move Right / Move Up / Move Down" (commands 1910–1913) and "Drag Item" (1914): rows can be dragged to reorder [confirmed] (by the undo name).
Calendar Info window (⌘E; view 14000) [confirmed]
- A calendar pop-up picks the calendar.
- A weekday list: click a day, or Shift-click for several.
- A clock: shaded segments are the working time of the selected days; choose days, then drag around the clock to set their hours. Hours are half-hour slots.
- A month grid: shaded dates are working days; clicking a date (a holiday, say) takes it out for that month and year. It has a month pop-up and year up/down arrows.
- Calendar Options button: add, delete or rename calendars; save one as a separate document, or link one.
- Undo button: discards the changes made since the last Enter, the last switch of calendar, or opening the window.
- Rule: "You must work at least one half hour on at least one work day."
4. Mouse gestures: Schedule Chart [code]
The Schedule Chart's DoMouseCommand is CDoMouseCommand_3f90 @ 0x81b94.
Modifier flags [guess]
The event record passed in has boolean modifier flags at +5, +6 and +8, and the click count at +0x10 [code]. They map as +5 = ⌘, +6 = ⇧, +8 = ⌥. This is a guess, from:
- the toolbox modifier bit order (cmd 8, shift 9, alphaLock 10, option 11);
- the Option-key
BitTst below, which the New Task command mirrors from +8;
- Shift being re-checked when a marquee ends.
A second, confirmed point: the code reads the keyboard directly, with GetKeys + BitTst.
BitTst 61 = key code 0x3A = Option [code, confirmed constant].
BitTst 63 = key code 0x38 = Shift.
Hit testing [code]
CDoMouseCommand_3d38 @ 0x8193c and FUN_000815cc test in this order:
- notes in the front layer;
- the box whose name is being edited;
- dependency lines, within about 5–6 px of the line (part 1);
- the other chart objects, by layer.
A chart object's hit test (CChartObject @ 0xf6b00…) returns:
| 2 |
Inside the inner rectangle |
The name/text area. |
| 1 |
The border band between the inner and outer rectangles |
|
| 3–6 |
The four corner handles |
Live only when the object is already selected; then a single click resizes. |
| 12 |
A 12 × 12 icon rectangle |
Probably a collapsed note or note icon [guess]. |
Gestures
| Drag in empty space |
Draws a new task box: a grey XOR rubber-band rectangle, PenMode 10. On release, a task with exactly that rectangle is created if it's at least 30 × 20 px. A plain click or smaller drag creates nothing and deselects all. Undo "New Task". |
CScheduleCommands_3e88 → TNewTaskCommand I-method FUN_000ceb84; track/feedback _4028, _4114; DoIt _41bc (size check >0x1d, >0x13) [code] |
| Hold ⌥ while drawing |
The rubber band becomes a rounded rectangle (20 × 20 corners) and the result is a milestone. The key is read live during the drag. |
BitTst 61 in _4028; Main_17b4(0x108) milestone object in _41bc [code] |
| ⇧-drag in empty space |
Selection rectangle. Objects entirely inside are selected. If ⇧ is still down at release, the selection is extended; otherwise it's replaced. |
CScheduleCommands_3cd0 → FUN_000d13e8; _6a9c (BitTst 63, then select objects inside) [code]; the ⇧ mapping [guess] |
| Click inside a task box (part 2) |
Selects it and puts an insertion point in its name (in-place editing). |
CScheduleCommands_3da4 → CTextEdit_2e90 [code] |
| Drag from inside a task box out past its edge (more than 4 px outside) |
Becomes a dependency drag: a rubber line follows the mouse. Release on another task: a dependency (finish-to-start). Release in empty space: a new task is created there and linked from the first; with ⌥ held it's a milestone. Undo "Dependent Task". |
CRes_2a60 (PtInRect against the box inset −4; creates command 11002) → CScheduleCommands_435c I-method, DoIt _4970 (BitTst 61, CConstruct_1bc8 new task, CConstruct_09a8 new dependency) [code] |
| Drag a task's border (part 1) |
Moves the selected boxes. Undo "Move" (1904). |
CScheduleCommands_3d0c → FUN_000cfde8 (command 1904) [code] |
| ⌥-click or ⌥-drag on a box (any part) |
Selects and moves without entering text editing: the interior also moves. |
the +8 branch in _3f90 sends parts 1, 2 and 12 to Move [code]; ⌥ [guess] |
| Drag a corner handle of a selected box |
Resize. Undo "Resize" (1905). |
CScheduleCommands_3d54 → FUN_000d06a4 [code] |
| Double-click a task |
Task Info. |
CTaskInfo_00f0 [code] |
| ⌘-double-click a supertask |
Go to Subproject (opens the subproject). |
the +5 branch; CScheduleCommands_3ed4 → CProjectCommands_06cc [code]; ⌘ [guess] |
| ⌘-double-click an external (linked) task |
Go to Linked Task. |
CScheduleCommands_3f14 [code] |
| Double-click a dependency line |
Lag Time dialog. |
CLagDlg_0670 [code] |
| Double-click a legend |
Display Attributes dialog. |
CShowAttributesDlg_0000 (note +0x34) [code] |
| Double-click note text |
Edits the note text (sticky/attached notes). |
CEditCommands_0c5c / CSelectCommands_1fa0 [code]; exact branch [guess] |
| Click a dependency line |
Selects it. Then ⌘D = Insert Task puts a new task between the two (Balloon Help). |
[code] + [confirmed] |
| Arrow keys (no ⌥) with chart objects selected |
Nudge 1 px (←→ horizontal, ↑↓ vertical). Undo "Move". |
CDoKeyCommand_0138: char 0x1C/0x1D/0x1E/0x1F → CScheduleCommands_0580 (dx/dy ±1) [code] |
| Shift-click a box |
Adds to or removes from the selection. |
[guess]: standard MacApp; the selection helper CSchedule_167c is called without deselecting |
| Autogrid (Layout ▸ Use Autogrid) |
Snaps moves and new boxes to a 10 px grid. |
the dependency command rounds positions down to multiples of 10 (_435c) [code]; grid spacing (10, 10) is in dcst +0x208 (NOTES) |
Other details:
- The Dependency Lag Time dialog (
view 22000): Dependency radio buttons Finish to Start, Start to Start, Finish to Finish; Time (number) and its units; a Calendar pop-up. There is no Start to Finish [confirmed].
- Constraint icons are drawn next to dates when "Date and duration icons" is on:
SICN 257–264 (Start On, SNET, SNLT, Finish On, FNLT, FNET, ES, LF). An attached note shows SICN 3000 "StickyNote" (a page with a turned bottom-left corner). The shapes are [confirmed]; the ASCII renderings are in the regeneration output.
5. Mouse gestures: Task Timeline [code]
The handler is CDoMouseCommand_6730 @ 0x84334, plus CTimelineCommands.
| ⌥-drag a bar |
Bar Move: reschedules the task. Undo "Bar Move" (1918). |
+8 → command 0x77e [code]; ⌥ [guess] |
| Drag a bar's end handle (part 11) |
Bar Resize (duration) or Percent Done Changes (dragging the %-done marker). |
CTimelineCommands_0bb4; commands 1919 and 1920 are both set up in CTimelineCommands +0xbd6 [code]; which handle does which [guess] |
| ⌘-double-click a row |
Go to Subproject. |
+5 and click count 2 → CProjectCommands_06cc [code] |
| Click or double-click a row |
Select; double-click opens Task Info. |
CTimelineCommands_1700(…, clickCount) [code]; Task Info [guess] |
6. Tables and Outline
| ⌘D |
New Task, Item, Resource, Allocation or Dependency below the selected row, or at the bottom if nothing is selected. |
Balloon Help [confirmed] |
| Drag a column header edge |
Column Resize. |
CURS 8200/8203 "Column Resizer"; undo 1901 [confirmed] |
| Drag a column header |
Column Move. |
CURS 8204; undo 1903 [confirmed] |
| Drag a row edge |
Row Resize. |
CURS 8300/8301; undo 1902 [confirmed] |
| Click a collapsed column |
Uncollapses it. |
CURS 8201 "ColUncollapseCursor"; SICN 8402 [confirmed] |
| Click a toggle cell |
Toggles a yes/no attribute. |
CURS 8700 "Toggle cursor", a checkmark; SICN 8700 "Toggle icons" [confirmed]; which cells [guess]: yes/no fields such as Critical |
| Return in a cell |
Commits the entry; the default MacApp handling. |
CDoKeyCommand_0138/GRes_0f18 [code]; moves to the next row [guess] |
| Tab / ⇧Tab |
Next / previous cell. |
[guess]: standard MacApp table behaviour |
| Typing a resource or calendar name that doesn't exist |
Asks "Create a new resource '^0'?". An empty name asks "No resource name was entered. Delete the resource/allocation?". |
STR# 8902 [confirmed] |
| Resource allocated twice |
"The resource '^0' can only be allocated to the task once." |
STR# 8902 [confirmed] |
| Task IDs |
"Task IDs must be unique." |
STR# 8902 [confirmed] |
- Arrow keys: nudge Schedule Chart objects 1 px [code]. In text, they move the insertion point (TextEdit).
- Return: in tables, commits the cell [code]. ⌥-Return in the Schedule Chart's box text inserts a line break (box names hold carriage returns; samples have multi-line names) [guess].
- Delete/Backspace: in text, deletes characters. With chart objects selected it's Edit ▸ Clear [guess]: Clear has no menu key, and backspace (char 8) is routed to the selection in
CDoKeyCommand_0138 together with the arrows.
- Command-period cancels long operations; standard Mac [guess].
- Undo action names (Buzzwords,
MENU 128) [confirmed], to show as "Undo ": Page Setup Change, Move, Resize, Text Change, Font Type, Color, Font Style, Text Justify, Note Color, Change Type, Editing, Typing, Clear, Change to Milestone, Change to Task, Clean Up Schedule, Clean Up Selection, Baseline All, Baseline Selection, Calendar Changes, Column Resize, Row Resize, Column Move, Move, Resize, Mark Completed, Mark Uncompleted, New Task, New Resource, New Item, Duplicate, Insert Task, Move Left, Move Right, Move Up, Move Down, Drag Item, Task Info Changes, Summary Info Changes, Go to Subproject, Go to Linked Task, Dependent Task, Bar Move, Bar Resize, Percent Done Changes.
8. Task Info window (⌘T, double-click a task)
The window is view 8900, TTaskInfoWindow: a scroller around view 7778 "TaskInfoGuts", or 7777 "SummaryInfoGuts" for summaries. The labels are attribute names filled in at run time, so the resources don't hold them. The field list comes from checking MacProject Pro itself (file-format.md) (2026-10-17) [confirmed]; the grouping comes from the view tree [confirmed]. The guts are three collapsible sections (TTaskInfoExpandView).
Section 1, task. Static label and pop-up, then:
- Task Duration (edit) with the unit (Weeks or Days…);
- Calendar Name (pop-up
MENU 8901);
- % Done (edit);
- a resource grid, editable cells: Resource, Work, Number, % Effort, Duration;
- Leveling Priority (edit), labelled "(100 = Highest, 0 = Do Not Level)";
- Outline Number (static).
Section 2, schedule.
- Earliest/Latest Start and Finish and slack (static).
- Start constraint: a date field plus a pop-up (
MENU 9000: Start On, Start No Earlier Than, Start No Later Than, Early Start). Each has its small icon (SICN 257, 258, 259, 263).
- Finish constraint: a date plus a pop-up (
MENU 9001: Finish On, Finish No Earlier Than, Finish No Later Than, Late Finish; SICN 260, 262, 261, 264).
- Actual Start / Actual Finish: edits with "S icons",
TTaskInfoSIcon.
- Costs: Fixed Cost, Fixed Income, Actual Cost, Actual Income (edits).
Section 3, custom fields. An attribute pop-up plus a value edit.
- Edits are applied as "Task Info Changes" (undoable; command 1915).
- Summary Info shows Summary Name (edit), Search Formula (pop-up of saved searches) and 18 static rolled-up values, plus Custom Fields.
- Warning shown when the task duration changes (
STR# 28000 #9): "Changing the task duration will not change the durations of any resources for that task."
9. Dialogs worth mirroring [confirmed]
| Display Attributes (⇧⌘A) |
6000 |
A sample box labelled "Task Name". "Select a corner, then choose an item to be displayed." The corner slots are in file-format.md. |
| Duration Scale (⇧⌘D) |
18000 |
Radio buttons Minute, Hour, Day, Week, Month. |
| Lag Time |
22000 |
See §4. |
| Link to Task |
23000 |
Projects list, Tasks list, a Link button. "Task '^0' in the document '^1' is the starting task. Select the dependent task." (TEXT 23001) |
| Preferences |
3400–3408 |
Panels: Document, Critical Path, Resources, Formats, Number Formats, Clean Up, Time (Timeline), Outline. |
| Timeline Setup (⌘U) |
2002 |
— |
| Bar Formats |
2003, 2004 |
— |
| Sort |
4002 |
— |
| Search |
4003, 4004 |
— |
| Column Setup |
8700 |
— |
| Perspectives |
4000–4005 |
— |
| Print Preview |
9152 |
— |