AmendHub

Download (as of this amendment):

jcs

/

amend

/

amendments

/

160

*: Shuffle menu items around to use proper File/Repo semantics

Like THINK C, "File" now refers to actions on just the selected file,
along with Settings/Quit. The Repo menu now houses new/open.

jcs made amendment 160 4 days ago
--- amend.π.r Thu Oct 24 11:08:11 2024 +++ amend.π.r Sun Sep 27 16:34:48 2026 @@ -5,12 +5,11 @@ data 'MENU' (128) { }; data 'MENU' (129) { - $"0081 0000 0000 0000 0000 FFFF FFD7 0446" /* .Å...........◊.F */ - $"696C 650B 4E65 7720 5265 706F 2E2E 2E00" /* ile.New Repo.... */ - $"4E00 000C 4F70 656E 2052 6570 6F2E 2E2E" /* N...Open Repo... */ - $"004F 0000 012D 0000 0000 0B53 6574 7469" /* .O...-.....Setti */ - $"6E67 732E 2E2E 0000 0000 012D 0000 0000" /* ngs........-.... */ - $"0451 7569 7400 5100 0000" /* .Quit.Q... */ + $"0081 0000 0000 0000 0000 FFFF FFEB 0446" /* .Å.............F */ + $"696C 6512 4469 7363 6172 6420 4368 616E" /* ile.Discard Chan */ + $"6765 732E 2E2E 0000 0000 012D 0000 0000" /* ges........-.... */ + $"0B53 6574 7469 6E67 732E 2E2E 0000 0000" /* .Settings....... */ + $"012D 0000 0000 0451 7569 7400 5100 0000" /* .-.....Quit.Q... */ }; data 'MENU' (130) { @@ -21,12 +20,12 @@ data 'MENU' (130) { }; data 'MENU' (131) { - $"0083 0000 0000 0000 0000 FFFF FFFF 0452" /* .É.............R */ - $"6570 6F0B 4164 6420 4669 6C65 2E2E 2E00" /* epo.Add File.... */ - $"0000 0024 4469 7363 6172 6420 4368 616E" /* ...$Discard Chan */ - $"6765 7320 746F 2053 656C 6563 7465 6420" /* ges to Selected */ - $"4669 6C65 732E 2E2E 0000 0000 0D41 7070" /* Files.......¬App */ - $"6C79 2044 6966 662E 2E2E 0000 0000 00" /* ly Diff........ */ + $"0083 0000 0000 0000 0000 FFFF FFF7 0452" /* .É.............R */ + $"6570 6F0B 4E65 7720 5265 706F 2E2E 2E00" /* epo.New Repo.... */ + $"4E00 000C 4F70 656E 2052 6570 6F2E 2E2E" /* N...Open Repo... */ + $"004F 0000 012D 0000 0000 0E41 6464 2074" /* .O...-.....Add t */ + $"6F20 5265 706F 2E2E 2E00 0000 000D 4170" /* o Repo.......¬Ap */ + $"706C 7920 4469 6666 2E2E 2E00 0000 0000" /* ply Diff........ */ }; data 'MENU' (132) { --- amend.h Thu Oct 24 21:39:40 2024 +++ amend.h Sun Sep 27 10:42:33 2026 @@ -23,10 +23,9 @@ #define APPLE_MENU_ABOUT_ID 1 #define FILE_MENU_ID 129 -#define FILE_MENU_NEW_ID 1 -#define FILE_MENU_OPEN_ID 2 -#define FILE_MENU_SETTINGS_ID 4 -#define FILE_MENU_QUIT_ID 6 +#define FILE_MENU_DISCARD_CHANGES_ID 1 +#define FILE_MENU_SETTINGS_ID 3 +#define FILE_MENU_QUIT_ID 5 #define EDIT_MENU_ID 130 #define EDIT_MENU_CUT_ID 1 @@ -35,9 +34,10 @@ #define EDIT_MENU_SELECT_ALL_ID 4 #define REPO_MENU_ID 131 -#define REPO_MENU_ADD_FILE_ID 1 -#define REPO_MENU_DISCARD_CHANGES_ID 2 -#define REPO_MENU_APPLY_DIFF_ID 3 +#define REPO_MENU_NEW_ID 1 +#define REPO_MENU_OPEN_ID 2 +#define REPO_MENU_ADD_FILE_ID 4 +#define REPO_MENU_APPLY_DIFF_ID 5 #define AMENDMENT_MENU_ID 132 #define AMENDMENT_MENU_EDIT_ID 1 --- browser.c Fri Nov 15 14:21:56 2024 +++ browser.c Sun Sep 27 16:35:24 2026 @@ -249,6 +249,7 @@ browser_close(struct focusable *focusable) xfree(&browser); + /* TODO: only do this if there aren't other browsers to ask */ menu_defaults(); return true; @@ -529,6 +530,8 @@ browser_update_menu(struct browser *browser) TextFace(0); TextSize(12); + EnableItem(file_menu, FILE_MENU_DISCARD_CHANGES_ID); + DisableItem(edit_menu, EDIT_MENU_CUT_ID); if ((*(browser->diff_tv))->sel_start == (*(browser->diff_tv))->sel_end) @@ -537,26 +540,18 @@ browser_update_menu(struct browser *browser) EnableItem(edit_menu, EDIT_MENU_COPY_ID); DisableItem(edit_menu, EDIT_MENU_PASTE_ID); - + if ((*(browser->diff_tv))->nlines == 0) DisableItem(edit_menu, EDIT_MENU_SELECT_ALL_ID); else EnableItem(edit_menu, EDIT_MENU_SELECT_ALL_ID); - HUnlock(browser->diff_tv); - if (browser->repo->nfiles == 0) HiliteControl(browser->diff_button, 255); else HiliteControl(browser->diff_button, 0); - if (!browser->committer) { - EnableItem(repo_menu, REPO_MENU_ADD_FILE_ID); - EnableItem(repo_menu, REPO_MENU_DISCARD_CHANGES_ID); -#if 0 - EnableItem(repo_menu, REPO_MENU_APPLY_DIFF_ID); -#endif - } + EnableItem(repo_menu, REPO_MENU_ADD_FILE_ID); if (LGetSelect(true, &cell, browser->amendment_list)) { EnableItem(amendment_menu, AMENDMENT_MENU_EDIT_ID); @@ -761,6 +756,13 @@ browser_handle_menu(struct focusable *focusable, short struct browser *browser = (struct browser *)focusable->cookie; switch (menu) { + case FILE_MENU_ID: + switch (item) { + case FILE_MENU_DISCARD_CHANGES_ID: + browser->state = BROWSER_STATE_DISCARD_CHANGES; + return true; + } + break; case EDIT_MENU_ID: switch (item) { case EDIT_MENU_COPY_ID: @@ -775,9 +777,6 @@ browser_handle_menu(struct focusable *focusable, short switch (item) { case REPO_MENU_ADD_FILE_ID: browser->state = BROWSER_STATE_ADD_FILE; - return true; - case REPO_MENU_DISCARD_CHANGES_ID: - browser->state = BROWSER_STATE_DISCARD_CHANGES; return true; case REPO_MENU_APPLY_DIFF_ID: browser->state = BROWSER_STATE_APPLY_DIFF; --- committer.c Thu Aug 14 17:00:11 2025 +++ committer.c Sun Sep 27 11:28:26 2026 @@ -369,8 +369,7 @@ committer_mouse_down(struct focusable *focusable, Even void committer_update_menu(struct committer *committer) { - HLock(committer->diff_tv); - HLock(committer->log_te); + DisableItem(file_menu, FILE_MENU_DISCARD_CHANGES_ID); if (committer->log_focused) { if ((*(committer->log_te))->selStart == @@ -401,16 +400,10 @@ committer_update_menu(struct committer *committer) } DisableItem(repo_menu, REPO_MENU_ADD_FILE_ID); - DisableItem(repo_menu, REPO_MENU_DISCARD_CHANGES_ID); DisableItem(repo_menu, REPO_MENU_APPLY_DIFF_ID); DisableItem(amendment_menu, AMENDMENT_MENU_EDIT_ID); DisableItem(amendment_menu, AMENDMENT_MENU_EXPORT_ID); - - HUnlock(committer->log_te); - HUnlock(committer->diff_tv); - - EnableItem(repo_menu, 0); if ((*(committer->log_te))->nLines > 0 && committer->allow_commit) HiliteControl(committer->commit_button, 0); --- editor.c Thu Oct 24 21:11:54 2024 +++ editor.c Sun Sep 27 11:27:54 2026 @@ -361,6 +361,8 @@ editor_mouse_down(struct focusable *focusable, EventRe void editor_update_menu(struct editor *editor) { + DisableItem(file_menu, FILE_MENU_DISCARD_CHANGES_ID); + if ((*(editor->last_te))->selStart == (*(editor->last_te))->selEnd) { DisableItem(edit_menu, EDIT_MENU_CUT_ID); DisableItem(edit_menu, EDIT_MENU_COPY_ID); @@ -375,13 +377,10 @@ editor_update_menu(struct editor *editor) EnableItem(edit_menu, EDIT_MENU_PASTE_ID); DisableItem(repo_menu, REPO_MENU_ADD_FILE_ID); - DisableItem(repo_menu, REPO_MENU_DISCARD_CHANGES_ID); DisableItem(repo_menu, REPO_MENU_APPLY_DIFF_ID); DisableItem(amendment_menu, AMENDMENT_MENU_EDIT_ID); DisableItem(amendment_menu, AMENDMENT_MENU_EXPORT_ID); - - EnableItem(repo_menu, 0); } bool --- main.c Tue Aug 27 09:37:31 2024 +++ main.c Sun Sep 27 11:35:46 2026 @@ -236,25 +236,36 @@ handle_menu(long menu_id) break; case FILE_MENU_ID: switch (item) { - case FILE_MENU_NEW_ID: { + case FILE_MENU_DISCARD_CHANGES_ID: + /* handled by browser */ + return true; + case FILE_MENU_SETTINGS_ID: + settings_edit(false); + break; + case FILE_MENU_QUIT_ID: + if (focusables_quit()) + quitting = true; + break; + } + break; + case REPO_MENU_ID: + switch (item) { + case REPO_MENU_NEW_ID: { struct repo *repo; if ((repo = repo_create())) browser_init(repo); break; } - case FILE_MENU_OPEN_ID: { + case REPO_MENU_OPEN_ID: { struct repo *repo; if ((repo = repo_open(NULL))) browser_init(repo); break; } - case FILE_MENU_SETTINGS_ID: - settings_edit(false); - break; - case FILE_MENU_QUIT_ID: - if (focusables_quit()) - quitting = true; - break; + case REPO_MENU_ADD_FILE_ID: + case REPO_MENU_APPLY_DIFF_ID: + /* handled by browser */ + return false; } break; #ifdef MALLOC_DEBUG @@ -327,13 +338,14 @@ xalloc_printf(const char *format, ...) void menu_defaults(void) { + DisableItem(file_menu, FILE_MENU_DISCARD_CHANGES_ID); + DisableItem(edit_menu, EDIT_MENU_CUT_ID); DisableItem(edit_menu, EDIT_MENU_COPY_ID); DisableItem(edit_menu, EDIT_MENU_PASTE_ID); DisableItem(edit_menu, EDIT_MENU_SELECT_ALL_ID); DisableItem(repo_menu, REPO_MENU_ADD_FILE_ID); - DisableItem(repo_menu, REPO_MENU_DISCARD_CHANGES_ID); DisableItem(repo_menu, REPO_MENU_APPLY_DIFF_ID); DisableItem(amendment_menu, AMENDMENT_MENU_EDIT_ID); --- patch.c Wed Oct 2 12:17:50 2024 +++ patch.c Wed Dec 17 20:39:06 2025 @@ -137,7 +137,7 @@ patch_process(struct repo *repo, Str255 filename, shor for (i = 0; i < linelen; i++) { if (line[i] == '\0' || line[i] == '\t') { memcpy(tofilename, line, i); - tofilename[i + 1] = '\0'; + tofilename[i] = '\0'; break; } }