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;
}
}