15 Commits
Author SHA1 Message Date
Michael 425e14305b Move portable dictionaries to -dictionaryValueForTarget:
Gives dictionaries greater context of which operation is in progress

As part of this, during copies, defaults are not stripped. Copy objects whole. Only strip defaults when we want to save to disk or cloud.
2025-01-11 15:48:19 -05:00
Michael 66cfdd2705 Return mutable config when initialized using a mutable class 2024-08-14 18:31:20 -04:00
Michael 7589009864 Move mutability declaration to a class property so that it can be accessed in convenience initializer
Instance type property for mutability mirrors the class type
2024-08-14 18:29:53 -04:00
Michael 8d2f95bc85 Remove unused code 2024-07-11 21:08:23 -04:00
Michael d9e28f09dd Modify copy operations 2024-07-05 14:13:33 -04:00
Michael 55d355a91b Declare -immutableClass property in all mutable classes 2024-07-02 17:10:21 -04:00
Michael e72e64f9ca Delete App Store build scheme
Deletes all iCloud related code as well
2024-06-30 21:12:51 -04:00
Michael 5a528071ad Modernize codebase
- Removed all deprecated Textual code. It is likely there are no plugins that were using this. The minimum plugin version will be bumped up just incase to force all plugins to be recompiled to load.
- Removed a bunch of macros and initialization check logic that was previously in place to protect against plugin developers trying to abuse the codebase. We need to stop caring about that because it just adds unnecessary overhead.
- Many initializers were cleaned up. -init is now expressly marked as unavailable and throws a proper exception where appropriate.
2024-06-30 02:44:47 -04:00
Michael f5ae3653c6 Modernize mutating classes
All classes that have an immutable parent with a mutating child is now backed by either XRPortablePropertyObject or XRPortablePropertyDict. These base classes, which are declared by Cocoa Extensions, abstract away A LOT of logic involved for initialization, copying, and mutating properties.

A lot of this logic was loosely copy and pasted between classes. Now it is accessible and highly configurable in one location.

As part of this change, all classes that inherit from these base classes now return references on -copy if the underlying object is immutable already. There are some classes that do a little state mutation internally, even if outwardly they are immutable. Risk has been assessed and having the state information mutated and shared between what are supposed to be copied instances will do no harm.
2024-06-30 02:44:26 -04:00
Michael 8d28e428f5 Fix many, many typos
Import external libraries with similar fixes as well
2024-06-21 20:42:32 -04:00
Michael ffa23f02a1 No longer invoke -systemModelName
The way in which this method determines the model is no longer reliable. This was only used to set fancy sleep mode quit message. It is fine defaulting to the static replacement.
2024-06-14 21:20:49 -04:00
Michael 7a17baf4b1 Update license information/copyright year
Dates within source files were changed to reflect the last time the file was modified.
2020-10-28 18:15:42 -04:00
Michael beade7b612 Move to current best practices for enums and constant strings.
For enums, place case at end instead of in middle. For example: IRCClientConnectNormalMode turns into IRCClientConnectModeNormal

For constant strings, when appropriate, use an extensible string enum. Either one of those from Foundation (NSNotificationName, NSErrorDomain) or typedef our own.
2018-07-17 22:08:20 -04:00
Michael 87812dbc0a Refactor localization system
• Added TLOLocalization.swift which is a Swift implementation of the localization system. TXTLS() and its sister functions are bridged to this implementation.
• The TLOLanguagePreferences class no longer exists. This class was used only as a convenience to TXTLS() and its sister functions. I don't know of any and/or why a plugin may access these, so they were not deprecated.
• The TLOLanguagePreferences files have been renamed to TLOLocalization as the latter better suites its purpose.
2018-07-12 07:22:40 -04:00
Michael 2e236abb64 Reorganize project
Many resources have been added to Textual with little thought for long term maintenance. This commit is an overdue overhaul of the entire project. The goals of this overhaul was to introduce as much consistency as possible to the project.

Some notable changes:

• Code signing identity file has moved to "Configurations/Build"
• All build configuration files, including entitlements, moved to "Configurations"
• Source code for the app has moved to "Sources/App"
• Shared source code has moved to "Sources/Shared"
• Source code for extensions have moved to "Sources/Plugins"
• The project file for the app has moved along with its source code. It's recommended to use the Textual.xcworkspace workspace file.
• Build scripts are no longer packaged within the project files.
• Folders are now used throughout most projects instead of groups.
• Removed a lot of redundant framework linking.
• The preference panel sample plugin has been modified to use standard Cocoa facilities instead of those that are project specific. e.g. NSUserDefaults and NSLog() instead of TPCPreferencesUserDefaults and LogToConsole()
2018-07-04 04:55:28 -04:00