From 32c3c198b8ceb924ab3977d7e882eca6359a5869 Mon Sep 17 00:00:00 2001 From: Lncvrt Date: Wed, 16 Sep 2026 11:37:47 -0700 Subject: [PATCH] Initial commit --- .DS_Store | Bin 0 -> 6148 bytes Password Generator.xcodeproj/project.pbxproj | 308 +++ .../contents.xcworkspacedata | 7 + .../UserInterfaceState.xcuserstate | Bin 0 -> 20630 bytes .../xcdebugger/Breakpoints.xcbkptlist | 18 + .../xcschemes/Password Generator.xcscheme | 86 + .../xcschemes/xcschememanagement.plist | 22 + Password Generator/.DS_Store | Bin 0 -> 6148 bytes Password Generator/AppDelegate.h | 35 + Password Generator/AppDelegate.m | 89 + .../Password Generator-Info.plist | 34 + .../Password Generator-Prefix.pch | 7 + Password Generator/en.lproj/Credits.rtf | 29 + Password Generator/en.lproj/InfoPlist.strings | 2 + Password Generator/en.lproj/MainMenu.xib | 2239 +++++++++++++++++ Password Generator/main.m | 14 + 16 files changed, 2890 insertions(+) create mode 100644 .DS_Store create mode 100644 Password Generator.xcodeproj/project.pbxproj create mode 100644 Password Generator.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 Password Generator.xcodeproj/project.xcworkspace/xcuserdata/user.xcuserdatad/UserInterfaceState.xcuserstate create mode 100644 Password Generator.xcodeproj/xcuserdata/user.xcuserdatad/xcdebugger/Breakpoints.xcbkptlist create mode 100644 Password Generator.xcodeproj/xcuserdata/user.xcuserdatad/xcschemes/Password Generator.xcscheme create mode 100644 Password Generator.xcodeproj/xcuserdata/user.xcuserdatad/xcschemes/xcschememanagement.plist create mode 100644 Password Generator/.DS_Store create mode 100644 Password Generator/AppDelegate.h create mode 100644 Password Generator/AppDelegate.m create mode 100644 Password Generator/Password Generator-Info.plist create mode 100644 Password Generator/Password Generator-Prefix.pch create mode 100644 Password Generator/en.lproj/Credits.rtf create mode 100644 Password Generator/en.lproj/InfoPlist.strings create mode 100644 Password Generator/en.lproj/MainMenu.xib create mode 100644 Password Generator/main.m diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..878757986d759e840ddd12add7b0efaa50e39791 GIT binary patch literal 6148 zcmeHK&1(}u6o1o3-S`1PDD>cA@YF*rsiw3-4{L~Dx55^Bu%f%!kVLjSOLk)lF}irr zvww;Ih6fLx{CDE-&5Wfa3W11-%nR@R-h8|_%r84%L?l|Hc!#J)L>`o}auwzm!tJaJ zvSw?zQRp0FQZ%HPBt2f}?J67tj)8xT0baW|>5xLo@w>QwyOdHFt2v~CSM}3Gb)rN? z=+B$QBk0yl3%n(BMB_ZOIX*{OGRTWYnF#9G*;u58l`dmEaDzauo&*VOV_I%l{0Z;jEJf4nV3;Nb=1RZsn=`8f=Y?WN6s@=AKCqARH_u<{9 literal 0 HcmV?d00001 diff --git a/Password Generator.xcodeproj/project.pbxproj b/Password Generator.xcodeproj/project.pbxproj new file mode 100644 index 0000000..86589be --- /dev/null +++ b/Password Generator.xcodeproj/project.pbxproj @@ -0,0 +1,308 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + CE88691C305B012E0072A31D /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CE88691B305B012E0072A31D /* Cocoa.framework */; }; + CE886926305B012E0072A31D /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = CE886924305B012E0072A31D /* InfoPlist.strings */; }; + CE886928305B012E0072A31D /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = CE886927305B012E0072A31D /* main.m */; }; + CE88692C305B012E0072A31D /* Credits.rtf in Resources */ = {isa = PBXBuildFile; fileRef = CE88692A305B012E0072A31D /* Credits.rtf */; }; + CE88692F305B012E0072A31D /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = CE88692E305B012E0072A31D /* AppDelegate.m */; }; + CE886932305B012E0072A31D /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = CE886930305B012E0072A31D /* MainMenu.xib */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + CE886918305B012E0072A31D /* Password Generator.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "Password Generator.app"; sourceTree = BUILT_PRODUCTS_DIR; }; + CE88691B305B012E0072A31D /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = System/Library/Frameworks/Cocoa.framework; sourceTree = SDKROOT; }; + CE88691E305B012E0072A31D /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = System/Library/Frameworks/AppKit.framework; sourceTree = SDKROOT; }; + CE88691F305B012E0072A31D /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = System/Library/Frameworks/CoreData.framework; sourceTree = SDKROOT; }; + CE886920305B012E0072A31D /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; + CE886923305B012E0072A31D /* Password Generator-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "Password Generator-Info.plist"; sourceTree = ""; }; + CE886925305B012E0072A31D /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; }; + CE886927305B012E0072A31D /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; + CE886929305B012E0072A31D /* Password Generator-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Password Generator-Prefix.pch"; sourceTree = ""; }; + CE88692B305B012E0072A31D /* en */ = {isa = PBXFileReference; lastKnownFileType = text.rtf; name = en; path = en.lproj/Credits.rtf; sourceTree = ""; }; + CE88692D305B012E0072A31D /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; + CE88692E305B012E0072A31D /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; }; + CE886931305B012E0072A31D /* en */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = en; path = en.lproj/MainMenu.xib; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + CE886915305B012E0072A31D /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + CE88691C305B012E0072A31D /* Cocoa.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + CE88690F305B012E0072A31D = { + isa = PBXGroup; + children = ( + CE886921305B012E0072A31D /* Password Generator */, + CE88691A305B012E0072A31D /* Frameworks */, + CE886919305B012E0072A31D /* Products */, + ); + sourceTree = ""; + }; + CE886919305B012E0072A31D /* Products */ = { + isa = PBXGroup; + children = ( + CE886918305B012E0072A31D /* Password Generator.app */, + ); + name = Products; + sourceTree = ""; + }; + CE88691A305B012E0072A31D /* Frameworks */ = { + isa = PBXGroup; + children = ( + CE88691B305B012E0072A31D /* Cocoa.framework */, + CE88691D305B012E0072A31D /* Other Frameworks */, + ); + name = Frameworks; + sourceTree = ""; + }; + CE88691D305B012E0072A31D /* Other Frameworks */ = { + isa = PBXGroup; + children = ( + CE88691E305B012E0072A31D /* AppKit.framework */, + CE88691F305B012E0072A31D /* CoreData.framework */, + CE886920305B012E0072A31D /* Foundation.framework */, + ); + name = "Other Frameworks"; + sourceTree = ""; + }; + CE886921305B012E0072A31D /* Password Generator */ = { + isa = PBXGroup; + children = ( + CE88692D305B012E0072A31D /* AppDelegate.h */, + CE88692E305B012E0072A31D /* AppDelegate.m */, + CE886930305B012E0072A31D /* MainMenu.xib */, + CE886922305B012E0072A31D /* Supporting Files */, + ); + path = "Password Generator"; + sourceTree = ""; + }; + CE886922305B012E0072A31D /* Supporting Files */ = { + isa = PBXGroup; + children = ( + CE886923305B012E0072A31D /* Password Generator-Info.plist */, + CE886924305B012E0072A31D /* InfoPlist.strings */, + CE886927305B012E0072A31D /* main.m */, + CE886929305B012E0072A31D /* Password Generator-Prefix.pch */, + CE88692A305B012E0072A31D /* Credits.rtf */, + ); + name = "Supporting Files"; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + CE886917305B012E0072A31D /* Password Generator */ = { + isa = PBXNativeTarget; + buildConfigurationList = CE886935305B012E0072A31D /* Build configuration list for PBXNativeTarget "Password Generator" */; + buildPhases = ( + CE886914305B012E0072A31D /* Sources */, + CE886915305B012E0072A31D /* Frameworks */, + CE886916305B012E0072A31D /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "Password Generator"; + productName = "Password Generator"; + productReference = CE886918305B012E0072A31D /* Password Generator.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + CE886910305B012E0072A31D /* Project object */ = { + isa = PBXProject; + attributes = { + LastUpgradeCheck = 0460; + ORGANIZATIONNAME = User; + }; + buildConfigurationList = CE886913305B012E0072A31D /* Build configuration list for PBXProject "Password Generator" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; + hasScannedForEncodings = 0; + knownRegions = ( + en, + ); + mainGroup = CE88690F305B012E0072A31D; + productRefGroup = CE886919305B012E0072A31D /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + CE886917305B012E0072A31D /* Password Generator */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + CE886916305B012E0072A31D /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + CE886926305B012E0072A31D /* InfoPlist.strings in Resources */, + CE88692C305B012E0072A31D /* Credits.rtf in Resources */, + CE886932305B012E0072A31D /* MainMenu.xib in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + CE886914305B012E0072A31D /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + CE886928305B012E0072A31D /* main.m in Sources */, + CE88692F305B012E0072A31D /* AppDelegate.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ + CE886924305B012E0072A31D /* InfoPlist.strings */ = { + isa = PBXVariantGroup; + children = ( + CE886925305B012E0072A31D /* en */, + ); + name = InfoPlist.strings; + sourceTree = ""; + }; + CE88692A305B012E0072A31D /* Credits.rtf */ = { + isa = PBXVariantGroup; + children = ( + CE88692B305B012E0072A31D /* en */, + ); + name = Credits.rtf; + sourceTree = ""; + }; + CE886930305B012E0072A31D /* MainMenu.xib */ = { + isa = PBXVariantGroup; + children = ( + CE886931305B012E0072A31D /* en */, + ); + name = MainMenu.xib; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + CE886933305B012E0072A31D /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ARCHS = "$(ARCHS_STANDARD_64_BIT)"; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 10.7; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = macosx; + }; + name = Debug; + }; + CE886934305B012E0072A31D /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ARCHS = "$(ARCHS_STANDARD_64_BIT)"; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = YES; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_OBJC_EXCEPTIONS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 10.7; + SDKROOT = macosx; + }; + name = Release; + }; + CE886936305B012E0072A31D /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + COMBINE_HIDPI_IMAGES = YES; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = "Password Generator/Password Generator-Prefix.pch"; + INFOPLIST_FILE = "Password Generator/Password Generator-Info.plist"; + PRODUCT_NAME = "$(TARGET_NAME)"; + WRAPPER_EXTENSION = app; + }; + name = Debug; + }; + CE886937305B012E0072A31D /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + COMBINE_HIDPI_IMAGES = YES; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = "Password Generator/Password Generator-Prefix.pch"; + INFOPLIST_FILE = "Password Generator/Password Generator-Info.plist"; + PRODUCT_NAME = "$(TARGET_NAME)"; + WRAPPER_EXTENSION = app; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + CE886913305B012E0072A31D /* Build configuration list for PBXProject "Password Generator" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + CE886933305B012E0072A31D /* Debug */, + CE886934305B012E0072A31D /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + CE886935305B012E0072A31D /* Build configuration list for PBXNativeTarget "Password Generator" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + CE886936305B012E0072A31D /* Debug */, + CE886937305B012E0072A31D /* Release */, + ); + defaultConfigurationIsVisible = 0; + }; +/* End XCConfigurationList section */ + }; + rootObject = CE886910305B012E0072A31D /* Project object */; +} diff --git a/Password Generator.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/Password Generator.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..271631a --- /dev/null +++ b/Password Generator.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/Password Generator.xcodeproj/project.xcworkspace/xcuserdata/user.xcuserdatad/UserInterfaceState.xcuserstate b/Password Generator.xcodeproj/project.xcworkspace/xcuserdata/user.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..7f0f627e5ccd6804944ade0d8e97db2785de6c7c GIT binary patch literal 20630 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 J*GI+n{|6M6!#Dr{ literal 0 HcmV?d00001 diff --git a/Password Generator.xcodeproj/xcuserdata/user.xcuserdatad/xcdebugger/Breakpoints.xcbkptlist b/Password Generator.xcodeproj/xcuserdata/user.xcuserdatad/xcdebugger/Breakpoints.xcbkptlist new file mode 100644 index 0000000..dbe5f3e --- /dev/null +++ b/Password Generator.xcodeproj/xcuserdata/user.xcuserdatad/xcdebugger/Breakpoints.xcbkptlist @@ -0,0 +1,18 @@ + + + + + + + diff --git a/Password Generator.xcodeproj/xcuserdata/user.xcuserdatad/xcschemes/Password Generator.xcscheme b/Password Generator.xcodeproj/xcuserdata/user.xcuserdatad/xcschemes/Password Generator.xcscheme new file mode 100644 index 0000000..bf7f827 --- /dev/null +++ b/Password Generator.xcodeproj/xcuserdata/user.xcuserdatad/xcschemes/Password Generator.xcscheme @@ -0,0 +1,86 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Password Generator.xcodeproj/xcuserdata/user.xcuserdatad/xcschemes/xcschememanagement.plist b/Password Generator.xcodeproj/xcuserdata/user.xcuserdatad/xcschemes/xcschememanagement.plist new file mode 100644 index 0000000..12d0467 --- /dev/null +++ b/Password Generator.xcodeproj/xcuserdata/user.xcuserdatad/xcschemes/xcschememanagement.plist @@ -0,0 +1,22 @@ + + + + + SchemeUserState + + Password Generator.xcscheme + + orderHint + 0 + + + SuppressBuildableAutocreation + + CE886917305B012E0072A31D + + primary + + + + + diff --git a/Password Generator/.DS_Store b/Password Generator/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..68534878f399467d5f7414506d9dba6da840fff9 GIT binary patch literal 6148 zcmeHK!AiqG5Pe%qsff^{7h#WHEcgepRHe6~KcH=+R#GEvMUVLmKgtjAZ}iRVQkz7@ zQxTa7vu}4YGn;)IGFbqw_c%EMIsn>K!NxY5FGTK()}#?FEuzyLDKezE!4;M@Z!`Qw z24wGcaf}CEeeT`o{-x;Rc97-cQI?PBC9lXS_26BFy`LgymB`mhWSeu{bB2ub&XMD; z?C;Ji{w>V-R!udglH0vieD^V=?}FD8GtV)B$C=KTawPAjSPwB^wrlpge1?p<7g&~` zLf8AUw%*@n9x{K*+*3Sj_Hm6#;bT2BhbG2=F<=aAi~-hck@ikNYmEV8z!+FDAm0a1 z6-*))0rk_tMvnl*Ce14B%a5YO_=riwA|UTjTnHtGP#2FFE`-zWqhAuS2pGcQ;^D)^ znO!`gIGvsOy}H9C0j)I#jDa!(TVdFd`hW8M`M(@wBV)iA_*V?LX8)q! + +@interface AppDelegate : NSObject + +@property (assign) IBOutlet NSWindow *window; +@property (assign) IBOutlet NSTextField *lengthText; +@property (assign) IBOutlet NSSlider *lengthSlider; +@property (assign) IBOutlet NSTextField *outputBox; +@property (assign) IBOutlet NSButton *uppercaseCheck; +@property (assign) IBOutlet NSButton *lowercaseCheck; +@property (assign) IBOutlet NSButton *numbersCheck; +@property (assign) IBOutlet NSButton *symbolsCheck; +@property (assign) IBOutlet NSButton *regenerateButton; + +- (IBAction)lengthSliderChanged:(id)sender; + +- (IBAction)preset8ButtonClicked:(id)sender; +- (IBAction)preset16ButtonClicked:(id)sender; +- (IBAction)preset32ButtonClicked:(id)sender; +- (IBAction)preset64ButtonClicked:(id)sender; +- (IBAction)preset128ButtonClicked:(id)sender; + +- (IBAction)checkBoxChange:(id)sender; +- (IBAction)copyButtonClicked:(id)sender; +- (IBAction)regenerateButtonClicked:(id)sender; + +@end diff --git a/Password Generator/AppDelegate.m b/Password Generator/AppDelegate.m new file mode 100644 index 0000000..8a2c556 --- /dev/null +++ b/Password Generator/AppDelegate.m @@ -0,0 +1,89 @@ +// +// AppDelegate.m +// Password Generator +// +// Created by User on 9/16/26. +// Copyright (c) 2026 User. All rights reserved. +// + +#import "AppDelegate.h" + +@implementation AppDelegate + +- (void)dealloc +{ + [super dealloc]; +} + +- (void)applicationDidFinishLaunching:(NSNotification *)aNotification +{ + [self.regenerateButton sendAction:self.regenerateButton.action to:self.regenerateButton.target]; +} + +- (IBAction)lengthSliderChanged:(id)sender { + [self.lengthText setStringValue:[NSString stringWithFormat:@"Password Length: %ld", (long)[sender integerValue]]]; + [self.regenerateButton sendAction:self.regenerateButton.action to:self.regenerateButton.target]; +} + +// preset buttons + +- (IBAction)preset8ButtonClicked:(id)sender +{ + self.lengthSlider.integerValue = 8; + [self.lengthSlider sendAction:self.lengthSlider.action to:self.lengthSlider.target]; +} + +- (IBAction)preset16ButtonClicked:(id)sender +{ + self.lengthSlider.integerValue = 16; + [self.lengthSlider sendAction:self.lengthSlider.action to:self.lengthSlider.target]; +} + +- (IBAction)preset32ButtonClicked:(id)sender +{ + self.lengthSlider.integerValue = 32; + [self.lengthSlider sendAction:self.lengthSlider.action to:self.lengthSlider.target]; +} + +- (IBAction)preset64ButtonClicked:(id)sender +{ + self.lengthSlider.integerValue = 64; + [self.lengthSlider sendAction:self.lengthSlider.action to:self.lengthSlider.target]; +} + +- (IBAction)preset128ButtonClicked:(id)sender +{ + self.lengthSlider.integerValue = 128; + [self.lengthSlider sendAction:self.lengthSlider.action to:self.lengthSlider.target]; +} + +// end + +- (IBAction)checkBoxChange:(id)sender +{ + [self.regenerateButton sendAction:self.regenerateButton.action to:self.regenerateButton.target]; +} + +- (IBAction)regenerateButtonClicked:(id)sender { + NSMutableString *chars = [NSMutableString string]; + if ([self.uppercaseCheck state] == NSOnState) [chars appendString:@"ABCDEFGHIJKLMNOPQRSTUVWXYZ"]; + if ([self.lowercaseCheck state] == NSOnState) [chars appendString:@"abcdefghijklmnopqrstuvwxyz"]; + if ([self.numbersCheck state] == NSOnState) [chars appendString:@"0123456789"]; + if ([self.symbolsCheck state] == NSOnState) [chars appendString:@"!@#$%^&*"]; + + if (chars.length == 0) { + [self.outputBox setStringValue:@""]; + return; + } + + NSMutableString *password = [NSMutableString stringWithCapacity:self.lengthSlider.integerValue]; + for (NSUInteger i = 0; i < self.lengthSlider.integerValue; i++) { + uint32_t randomIndex = arc4random_uniform((uint32_t)chars.length); + unichar c = [chars characterAtIndex:randomIndex]; + [password appendFormat:@"%C", c]; + } + + [self.outputBox setStringValue:[password copy]]; +} + +@end diff --git a/Password Generator/Password Generator-Info.plist b/Password Generator/Password Generator-Info.plist new file mode 100644 index 0000000..340e28c --- /dev/null +++ b/Password Generator/Password Generator-Info.plist @@ -0,0 +1,34 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIconFile + + CFBundleIdentifier + xyz.lncvrt.xyz.${PRODUCT_NAME:rfc1034identifier} + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + ${PRODUCT_NAME} + CFBundlePackageType + APPL + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1 + LSMinimumSystemVersion + ${MACOSX_DEPLOYMENT_TARGET} + NSHumanReadableCopyright + Copyright © 2026 User. All rights reserved. + NSMainNibFile + MainMenu + NSPrincipalClass + NSApplication + + diff --git a/Password Generator/Password Generator-Prefix.pch b/Password Generator/Password Generator-Prefix.pch new file mode 100644 index 0000000..3bdf9fd --- /dev/null +++ b/Password Generator/Password Generator-Prefix.pch @@ -0,0 +1,7 @@ +// +// Prefix header for all source files of the 'Password Generator' target in the 'Password Generator' project +// + +#ifdef __OBJC__ + #import +#endif diff --git a/Password Generator/en.lproj/Credits.rtf b/Password Generator/en.lproj/Credits.rtf new file mode 100644 index 0000000..46576ef --- /dev/null +++ b/Password Generator/en.lproj/Credits.rtf @@ -0,0 +1,29 @@ +{\rtf0\ansi{\fonttbl\f0\fswiss Helvetica;} +{\colortbl;\red255\green255\blue255;} +\paperw9840\paperh8400 +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural + +\f0\b\fs24 \cf0 Engineering: +\b0 \ + Some people\ +\ + +\b Human Interface Design: +\b0 \ + Some other people\ +\ + +\b Testing: +\b0 \ + Hopefully not nobody\ +\ + +\b Documentation: +\b0 \ + Whoever\ +\ + +\b With special thanks to: +\b0 \ + Mom\ +} diff --git a/Password Generator/en.lproj/InfoPlist.strings b/Password Generator/en.lproj/InfoPlist.strings new file mode 100644 index 0000000..477b28f --- /dev/null +++ b/Password Generator/en.lproj/InfoPlist.strings @@ -0,0 +1,2 @@ +/* Localized versions of Info.plist keys */ + diff --git a/Password Generator/en.lproj/MainMenu.xib b/Password Generator/en.lproj/MainMenu.xib new file mode 100644 index 0000000..b982847 --- /dev/null +++ b/Password Generator/en.lproj/MainMenu.xib @@ -0,0 +1,2239 @@ + + + + 1070 + 11G63 + 3084 + 1138.51 + 569.00 + + com.apple.InterfaceBuilder.CocoaPlugin + 3084 + + + IBNSLayoutConstraint + NSButton + NSButtonCell + NSCustomObject + NSMenu + NSMenuItem + NSSlider + NSSliderCell + NSSplitView + NSTextField + NSTextFieldCell + NSView + NSWindowTemplate + + + com.apple.InterfaceBuilder.CocoaPlugin + + + PluginDependencyRecalculationVersion + + + + + NSApplication + + + FirstResponder + + + NSApplication + + + AMainMenu + + + + Password Generator + + 1048576 + 2147483647 + + NSImage + NSMenuCheckmark + + + NSImage + NSMenuMixedState + + submenuAction: + + Password Generator + + + + About Password Generator + + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Services + + 1048576 + 2147483647 + + + submenuAction: + + Services + + _NSServicesMenu + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Hide Password Generator + h + 1048576 + 2147483647 + + + + + + Hide Others + h + 1572864 + 2147483647 + + + + + + Show All + + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Quit Password Generator + q + 1048576 + 2147483647 + + + + + _NSAppleMenu + + + + + View + + 1048576 + 2147483647 + + + submenuAction: + + View + + + + Show Toolbar + t + 1572864 + 2147483647 + + + + + + Customize Toolbar… + + 1048576 + 2147483647 + + + + + + + + + Window + + 1048576 + 2147483647 + + + submenuAction: + + Window + + + + Minimize + m + 1048576 + 2147483647 + + + + + + Zoom + + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Bring All to Front + + 1048576 + 2147483647 + + + + + _NSWindowsMenu + + + + _NSMainMenu + + + 15 + 2 + {{335, 390}, {400, 325}} + 1954021376 + Password Generator + NSWindow + + + {480, 325} + {400, 325} + + + 256 + + + + 268 + {{34, 288}, {333, 17}} + + + _NS:1535 + YES + + 68157504 + 138413056 + Select a length, or use the slider for a custom value. + + LucidaGrande + 13 + 1044 + + _NS:1535 + + + 6 + System + controlColor + + 3 + MC42NjY2NjY2NjY3AA + + + + 6 + System + controlTextColor + + 3 + MAA + + + + + + + 268 + {{100, 263}, {201, 17}} + + + _NS:1535 + YES + + 68157504 + 138413056 + Password Length: 8 + + _NS:1535 + + + + + + + + 268 + {{61, 236}, {279, 21}} + + + _NS:9 + YES + + -2080374784 + 0 + + _NS:9 + + 500 + 1 + 8 + 0.0 + 0 + 1 + NO + NO + + + + + 268 + + + + 268 + {71, 29} + + + _NS:9 + YES + + 67108864 + 134217728 + 8 + + _NS:9 + + -2038284288 + 129 + + + 200 + 25 + + + + + 268 + {{72, 0}, {71, 29}} + + + _NS:9 + YES + + 67108864 + 134217728 + 16 + + _NS:9 + + -2038284288 + 129 + + + 200 + 25 + + + + + 268 + {{144, 0}, {72, 29}} + + + _NS:9 + YES + + 67108864 + 134217728 + 32 + + _NS:9 + + -2038284288 + 129 + + + 200 + 25 + + + + + 268 + {{217, 0}, {71, 29}} + + + _NS:9 + YES + + 67108864 + 134217728 + 64 + + _NS:9 + + -2038284288 + 129 + + + 200 + 25 + + + + + 268 + {{289, 0}, {71, 29}} + + + _NS:9 + YES + + 67108864 + 134217728 + 128 + + _NS:9 + + -2038284288 + 129 + + + 200 + 25 + + + + {{20, 203}, {360, 29}} + + + _NS:9 + YES + 2 + + + + 268 + {{144, 178}, {115, 17}} + + + _NS:1535 + YES + + 68157504 + 138413056 + Characters to use + + _NS:1535 + + + + + + + + 268 + {{101, 154}, {88, 18}} + + + _NS:9 + YES + + -2080374784 + 268435456 + Uppercase + + _NS:9 + + 1211912448 + 2 + + NSImage + NSSwitch + + + NSSwitch + + + + 200 + 25 + + + + + 268 + {{212, 154}, {88, 18}} + + + _NS:9 + YES + + -2080374784 + 268435456 + Lowercase + + _NS:9 + + 1211912448 + 2 + + + + + 200 + 25 + + + + + 268 + {{212, 134}, {75, 18}} + + + _NS:9 + YES + + -2080374784 + 268435456 + Symbols + + _NS:9 + + 1211912448 + 2 + + + + + 200 + 25 + + + + + 268 + {{101, 134}, {80, 18}} + + + _NS:9 + YES + + -2080374784 + 268435456 + Numbers + + _NS:9 + + 1211912448 + 2 + + + + + 200 + 25 + + + + + 268 + {{50, 48}, {300, 80}} + + + _NS:9 + {250, 750} + YES + + -2074083327 + 138416128 + + + _NS:9 + + YES + + 6 + System + textBackgroundColor + + 3 + MQA + + + + 6 + System + textColor + + + + + + + 268 + {{97, 12}, {72, 32}} + + + _NS:9 + YES + + 67108864 + 134217728 + Copy + + _NS:9 + + -2038284288 + 129 + + + 200 + 25 + + + + + 268 + {{193, 12}, {111, 32}} + + + _NS:9 + YES + + 67108864 + 134217728 + Regenerate + + _NS:9 + + -2038284288 + 129 + + + 200 + 25 + + + + {400, 325} + + + + {{0, 0}, {1920, 1058}} + {400, 347} + {480, 347} + YES + + + AppDelegate + + + NSFontManager + + + + + + + terminate: + + + + 449 + + + + orderFrontStandardAboutPanel: + + + + 142 + + + + delegate + + + + 495 + + + + performMiniaturize: + + + + 37 + + + + arrangeInFront: + + + + 39 + + + + performZoom: + + + + 240 + + + + runToolbarCustomizationPalette: + + + + 365 + + + + toggleToolbarShown: + + + + 366 + + + + hide: + + + + 367 + + + + hideOtherApplications: + + + + 368 + + + + unhideAllApplications: + + + + 370 + + + + window + + + + 532 + + + + copyButtonClicked: + + + + 795 + + + + regenerateButtonClicked: + + + + 796 + + + + preset8ButtonClicked: + + + + 797 + + + + preset16ButtonClicked: + + + + 798 + + + + preset32ButtonClicked: + + + + 799 + + + + preset64ButtonClicked: + + + + 800 + + + + preset128ButtonClicked: + + + + 801 + + + + outputBox + + + + 808 + + + + lengthSliderChanged: + + + + 809 + + + + lengthText + + + + 810 + + + + lengthSlider + + + + 811 + + + + uppercaseCheck + + + + 814 + + + + lowercaseCheck + + + + 815 + + + + numbersCheck + + + + 816 + + + + regenerateButton + + + + 818 + + + + symbolsCheck + + + + 819 + + + + checkBoxChange: + + + + 820 + + + + checkBoxChange: + + + + 821 + + + + checkBoxChange: + + + + 822 + + + + checkBoxChange: + + + + 823 + + + + + + 0 + + + + + + -2 + + + File's Owner + + + -1 + + + First Responder + + + -3 + + + Application + + + 29 + + + + + + + + + + 19 + + + + + + + + 56 + + + + + + + + 57 + + + + + + + + + + + + + + + + 58 + + + + + 134 + + + + + 150 + + + + + 136 + + + + + 144 + + + + + 143 + + + + + 131 + + + + + + + + 149 + + + + + 145 + + + + + 130 + + + + + 24 + + + + + + + + + + + 92 + + + + + 5 + + + + + 239 + + + + + 23 + + + + + 295 + + + + + + + + 296 + + + + + + + + + 297 + + + + + 298 + + + + + 371 + + + + + + + + 372 + + + + + 4 + 0 + + 4 + 1 + + 20 + + 1000 + + 8 + 29 + 3 + + + + 6 + 0 + + 6 + 1 + + 0.0 + + 1000 + + 6 + 24 + 2 + + + + 4 + 0 + + 4 + 1 + + 20 + + 1000 + + 8 + 29 + 3 + + + + 5 + 0 + + 5 + 1 + + 0.0 + + 1000 + + 6 + 24 + 2 + + + + 3 + 0 + + 4 + 1 + + 8 + + 1000 + + 6 + 24 + 3 + + + + 5 + 0 + + 5 + 1 + + 0.0 + + 1000 + + 6 + 24 + 2 + + + + 6 + 0 + + 6 + 1 + + 0.0 + + 1000 + + 6 + 24 + 2 + + + + 11 + 0 + + 11 + 1 + + 0.0 + + 1000 + + 6 + 24 + 2 + + + + 3 + 0 + + 4 + 1 + + 8 + + 1000 + + 6 + 24 + 3 + + + + 5 + 0 + + 5 + 1 + + 0.0 + + 1000 + + 6 + 24 + 2 + + + + 3 + 0 + + 4 + 1 + + 6 + + 1000 + + 6 + 24 + 3 + + + + 11 + 0 + + 11 + 1 + + 0.0 + + 1000 + + 6 + 24 + 2 + + + + 5 + 0 + + 5 + 1 + + 147 + + 1000 + + 3 + 9 + 3 + + + + 3 + 0 + + 4 + 1 + + 8 + + 1000 + + 6 + 24 + 3 + + + + 5 + 0 + + 5 + 1 + + 0.0 + + 1000 + + 6 + 24 + 2 + + + + 3 + 0 + + 4 + 1 + + 8 + + 1000 + + 6 + 24 + 3 + + + + 3 + 0 + + 4 + 1 + + 8 + + 1000 + + 6 + 24 + 3 + + + + 9 + 0 + + 9 + 1 + + 0.0 + + 1000 + + 6 + 24 + 2 + + + + 6 + 0 + + 6 + 1 + + 20 + + 1000 + + 8 + 29 + 3 + + + + 9 + 0 + + 9 + 1 + + 0.0 + + 1000 + + 6 + 24 + 2 + + + + 5 + 0 + + 5 + 1 + + 20 + + 1000 + + 8 + 29 + 3 + + + + 3 + 0 + + 4 + 1 + + 8 + + 1000 + + 6 + 24 + 3 + + + + 9 + 0 + + 9 + 1 + + 0.0 + + 1000 + + 6 + 24 + 2 + + + + 9 + 0 + + 9 + 1 + + 0.0 + + 1000 + + 6 + 24 + 2 + + + + 3 + 0 + + 4 + 1 + + 8 + + 1000 + + 6 + 24 + 3 + + + + 3 + 0 + + 3 + 1 + + 20 + + 1000 + + 8 + 29 + 3 + + + + + + + + + + + + + + + + + + 420 + + + + + 494 + + + + + 545 + + + + + + 7 + 0 + + 0 + 1 + + 327 + + 1000 + + 3 + 9 + 1 + + + + + + 546 + + + + + 561 + + + + + 562 + + + + + + 7 + 0 + + 0 + 1 + + 195 + + 1000 + + 3 + 9 + 1 + + + + + + 563 + + + + + 573 + + + + + 570 + + + + + 578 + + + + + + 7 + 0 + + 0 + 1 + + 275 + + 1000 + + 3 + 9 + 1 + + + + + + 579 + + + + + 583 + + + + + 588 + + + + + 592 + + + + + 602 + + + + + + + + + + + + 652 + + + + + 654 + + + + + + 7 + 0 + + 0 + 1 + + 109 + + 1000 + + 3 + 9 + 1 + + + + + + 655 + + + + + 657 + + + + + 663 + + + + + 683 + + + + + + + + 684 + + + + + 685 + + + + + + + + 686 + + + + + 689 + + + + + + + + 690 + + + + + 693 + + + + + + + + 694 + + + + + 698 + + + + + 699 + + + + + + + + 700 + + + + + 704 + + + + + 705 + + + + + + + + 706 + + + + + 711 + + + + + + + + 712 + + + + + 724 + + + + + 687 + + + + + + + + 688 + + + + + 728 + + + + + 738 + + + + + + 7 + 0 + + 0 + 1 + + 300 + + 1000 + + 3 + 9 + 1 + + + + 8 + 0 + + 0 + 1 + + 80 + + 1000 + + 3 + 9 + 1 + + + + + + 739 + + + + + 746 + + + + + 749 + + + + + + + + 750 + + + + + 752 + + + + + 753 + + + + + + + + 754 + + + + + 740 + + + + + 717 + + + + + 730 + + + + + 715 + + + + + 737 + + + + + 735 + + + + + 589 + + + + + 733 + + + + + + + + 734 + + + + + 812 + + + + + 813 + + + + + 828 + + + + + 837 + + + + + 839 + + + + + 843 + + + + + 844 + + + + + 845 + + + + + 846 + + + + + 847 + + + + + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + {{380, 496}, {480, 360}} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + + + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + + + + + 847 + + + 0 + IBCocoaFramework + YES + 3 + + {11, 11} + {10, 3} + {15, 15} + + YES + + diff --git a/Password Generator/main.m b/Password Generator/main.m new file mode 100644 index 0000000..573c09e --- /dev/null +++ b/Password Generator/main.m @@ -0,0 +1,14 @@ +// +// main.m +// Password Generator +// +// Created by User on 9/16/26. +// Copyright (c) 2026 User. All rights reserved. +// + +#import + +int main(int argc, char *argv[]) +{ + return NSApplicationMain(argc, (const char **)argv); +}