Commit Graph

21 Commits

Author SHA1 Message Date
Dietrich Epp 59e3376f8c Handle open document Apple Event
Double-clicking on a project in the Finder will now open that project.
2023-05-07 21:46:55 -04:00
Dietrich Epp 1396fb1cbf Handle Apple events
Currently, only the 'open application' event is actually handled, but
handlers for the required core events are installed. The open
application event causes the program to create a new document when
opened.
2023-05-07 03:30:51 -04:00
Dietrich Epp 1f1407bb0e Add project menu with upload/download items 2023-05-07 01:51:00 -04:00
Dietrich Epp 37929beede Fix beep when selecting no menu item 2023-05-07 01:43:19 -04:00
Dietrich Epp c1862532b8 Implement opening projects 2023-05-06 22:55:06 -04:00
Dietrich Epp 4a99288be2 Parse project chunks
This still doesn't show the project on-screen when opening, but it does
parse the chunks inside the project file.
2023-05-06 22:24:50 -04:00
Dietrich Epp 4cf55bffbc Fix button text for alerts
It turns out that ParamText does not substitute text in buttons. To make
alerts with different button text, there are now multiple alert
resources.
2023-05-06 21:56:00 -04:00
Dietrich Epp 08e5f10ce4 Parse project file header
On opening a project, SyncFiles will now parse the project header and
present an error message if there are any problems with the header.
2023-05-06 21:36:33 -04:00
Dietrich Epp f8c84387ca Refactor project new/delete functions
These are separated so we can create project objects by creating a new
project or opening an existing one.
2023-05-06 20:37:45 -04:00
Dietrich Epp 8514bbfff6 Remove unused code
The strutil code has mostly been replaced by the new `PStrBuilder` type,
and the remaining function from strutil was really just a checked memcpy
in one place which is now moved inline.

The `EXIT_ASSERT` macro is obsolete and has been removed.
2023-05-06 20:25:00 -04:00
Dietrich Epp b1bcae531b Rework error handling
Previously, various error handling functions were defined, but not all
of them were even used. The new error handling functions handle the most
common cases:

- Assertions. These can be handled with `ASSERT()`, which gives the
  error location for debugging.

- Errors we don't know how to handle, like GetNewWindow returning NULL.
  These can be handled with `EXIT_INTERNAL()`, which gives the error
  location for debugging.

- Out of memory conditions. These can be handled with `ShowMemError()`.

- System errors in response to user operations. These can be handled
  with `ShowError()`.
2023-05-06 19:41:40 -04:00
Dietrich Epp 3398ed425c Use paths for volumes without file ID support
This fixes an issue where remote folders on the Basilisk II "Unix"
volume would not resolve correctly after a system restart.
2023-05-06 14:03:13 -04:00
Dietrich Epp 873192318f Show open dialog for open menu item 2023-04-20 21:41:31 -04:00
Dietrich Epp 2be29e4b87 Add clarifying comments 2023-04-20 02:07:14 -04:00
Dietrich Epp def1c2c253 Add Pascal string builder module
This will be used for formatting messages for the user. The idea is to
have something more usable than the Mac OS toolbox ParamText function.
2023-04-19 22:14:34 -04:00
Dietrich Epp a4ce2924db Add and clarify documentation comments 2022-11-17 20:38:03 -05:00
Dietrich Epp 76362fb2c1 Save aliases for local and remote directories
Previously, the local and remote directories would not get saved with a
project. This makes it so that alias data is populated for the local and
remote directories.
2022-11-16 18:32:52 -05:00
Dietrich Epp 01a3863697 Fix incorrect alignment macro 2022-11-16 18:30:59 -05:00
Dietrich Epp d5bfaa510a Clean up Mac OS GUI code
Include paths are updated to include the directory. It seems that
CodeWarrior will search for include files recursively, which means that
"error.h" may resolve to the wrong file (there are two). I am unsure of
the rules CodeWarrior uses to find header files.

Support for older versions of Universal Interfaces has been added.

The project code has been reworked after thoroughly reviewing Inside
Macintosh: Files. It is not complete, but it compiles, and the behavior
of the Save / Save As commands have been thought out more carefully.
2022-11-16 18:19:05 -05:00
Dietrich Epp 3bf095fb49 Make source file headers consistent
- Standardize copyright and license notice
- Standardize header guards
2022-04-10 04:22:58 -04:00
Dietrich Epp 4d4ee214b3 Create classic Mac OS GUI program
The GUI program's project is not checked in. It was compiled and tested
with CodeWarrior Pro 4.

The GUI program allows users to create new synchronization projects,
select folders to synchronize, and save and open projects. The code is
probably broken and buggy, and probably dereferences NULL pointers here
and there, but the basic shell is there.
2022-04-10 04:09:17 -04:00