From ec0bb0d9a368cdb589fac79d3aa99215d6e2ddb1 Mon Sep 17 00:00:00 2001 From: mulot Date: Thu, 2 Jan 2014 11:16:38 +0100 Subject: [PATCH 01/22] Create Dev branch --- English.lproj/MainMenu.xib | 1600 ++++++++--------- IPSubnetCalc.h | 6 +- IPSubnetCalc.m | 16 +- PrintView.h | 21 + PrintView.m | 99 + SubnetCalc-Info.plist | 6 +- SubnetCalc.entitlements | 5 + SubnetCalc.xcodeproj/mulot.mode1v3 | 126 +- SubnetCalc.xcodeproj/mulot.pbxuser | 268 ++- SubnetCalc.xcodeproj/project.pbxproj | 39 +- .../UserInterfaceState.xcuserstate | Bin 7806 -> 48572 bytes .../WorkspaceSettings.xcsettings | 10 + .../xcdebugger/Breakpoints.xcbkptlist | 59 + .../xcdebugger/Breakpoints_v2.xcbkptlist | 71 + .../xcschemes/SubnetCalc.xcscheme | 19 +- SubnetCalcAppDelegate.h | 22 +- SubnetCalcAppDelegate.m | 198 +- .../SubnetCalc.app.dSYM/Contents/Info.plist | 20 - .../Contents/Resources/DWARF/SubnetCalc | Bin 51440 -> 0 bytes .../SubnetCalc.app/Contents/CodeResources | 1 - .../Debug/SubnetCalc.app/Contents/Info.plist | 36 - .../SubnetCalc.app/Contents/MacOS/SubnetCalc | Bin 60144 -> 0 bytes build/Debug/SubnetCalc.app/Contents/PkgInfo | 1 - .../Resources/English.lproj/InfoPlist.strings | Bin 92 -> 0 bytes .../Resources/English.lproj/MainMenu.nib | Bin 42708 -> 0 bytes .../Contents/Resources/License.txt | 280 --- .../Contents/Resources/SubnetCalc.icns | Bin 126608 -> 0 bytes .../Contents/_CodeSignature/CodeResources | 56 - .../SubnetCalc.app.dSYM/Contents/Info.plist | 20 - .../Contents/Resources/DWARF/SubnetCalc | Bin 105113 -> 0 bytes .../SubnetCalc.app/Contents/CodeResources | 1 - .../SubnetCalc.app/Contents/Info.plist | 36 - .../SubnetCalc.app/Contents/MacOS/SubnetCalc | Bin 105440 -> 0 bytes build/Release/SubnetCalc.app/Contents/PkgInfo | 1 - .../Resources/English.lproj/InfoPlist.strings | Bin 92 -> 0 bytes .../Resources/English.lproj/MainMenu.nib | Bin 42708 -> 0 bytes .../Contents/Resources/License.txt | 280 --- .../Contents/Resources/SubnetCalc.icns | Bin 126608 -> 0 bytes .../Contents/_CodeSignature/CodeResources | 56 - .../Objects-normal/x86_64/IPSubnetCalc.o | Bin 42020 -> 0 bytes .../x86_64/SubnetCalc.LinkFileList | 3 - .../Objects-normal/x86_64/SubnetCalc.o | Bin 61644 -> 0 bytes .../x86_64/SubnetCalcAppDelegate.o | Bin 70832 -> 0 bytes .../Objects-normal/x86_64/main.o | Bin 4976 -> 0 bytes .../SubnetCalc-all-target-headers.hmap | Bin 793 -> 0 bytes .../SubnetCalc-generated-files.hmap | Bin 121 -> 0 bytes .../SubnetCalc-own-target-headers.hmap | Bin 793 -> 0 bytes .../SubnetCalc-project-headers.hmap | Bin 887 -> 0 bytes .../Debug/SubnetCalc.build/SubnetCalc.dep | 15 - .../Debug/SubnetCalc.build/SubnetCalc.hmap | Bin 1655 -> 0 bytes .../Debug/SubnetCalc.build/SubnetCalc~.dep | 12 - .../Debug/SubnetCalc.build/build-state.dat | 370 ---- .../Debug/SubnetCalc.build/build-state~.dat | 250 --- .../Objects-normal/i386/IPSubnetCalc.o | Bin 26172 -> 0 bytes .../Objects-normal/i386/SubnetCalc | Bin 38528 -> 0 bytes .../i386/SubnetCalc.LinkFileList | 3 - .../i386/SubnetCalcAppDelegate.o | Bin 50944 -> 0 bytes .../Objects-normal/i386/main.o | Bin 4828 -> 0 bytes .../Objects-normal/x86_64/IPSubnetCalc.o | Bin 43868 -> 0 bytes .../Objects-normal/x86_64/SubnetCalc | Bin 49312 -> 0 bytes .../x86_64/SubnetCalc.LinkFileList | 3 - .../x86_64/SubnetCalcAppDelegate.o | Bin 71656 -> 0 bytes .../Objects-normal/x86_64/main.o | Bin 5032 -> 0 bytes .../normal/i386/IPSubnetCalc.plist | 12 - .../StaticAnalyzer/normal/i386/main.plist | 12 - .../normal/x86_64/IPSubnetCalc.plist | 12 - .../StaticAnalyzer/normal/x86_64/main.plist | 12 - .../SubnetCalc-all-target-headers.hmap | Bin 793 -> 0 bytes .../SubnetCalc-generated-files.hmap | Bin 121 -> 0 bytes .../SubnetCalc-own-target-headers.hmap | Bin 793 -> 0 bytes .../SubnetCalc-project-headers.hmap | Bin 887 -> 0 bytes .../Release/SubnetCalc.build/SubnetCalc.dep | 48 - .../Release/SubnetCalc.build/SubnetCalc.hmap | Bin 1655 -> 0 bytes .../Release/SubnetCalc.build/SubnetCalc~.dep | 29 - .../Release/SubnetCalc.build/build-state.dat | 776 -------- .../Release/SubnetCalc.build/build-state~.dat | 580 ------ 76 files changed, 1470 insertions(+), 4020 deletions(-) create mode 100644 PrintView.h create mode 100644 PrintView.m create mode 100644 SubnetCalc.entitlements create mode 100644 SubnetCalc.xcodeproj/project.xcworkspace/xcuserdata/mulot.xcuserdatad/WorkspaceSettings.xcsettings create mode 100644 SubnetCalc.xcodeproj/xcuserdata/mulot.xcuserdatad/xcdebugger/Breakpoints.xcbkptlist create mode 100644 SubnetCalc.xcodeproj/xcuserdata/mulot.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist delete mode 100644 build/Debug/SubnetCalc.app.dSYM/Contents/Info.plist delete mode 100644 build/Debug/SubnetCalc.app.dSYM/Contents/Resources/DWARF/SubnetCalc delete mode 120000 build/Debug/SubnetCalc.app/Contents/CodeResources delete mode 100644 build/Debug/SubnetCalc.app/Contents/Info.plist delete mode 100755 build/Debug/SubnetCalc.app/Contents/MacOS/SubnetCalc delete mode 100644 build/Debug/SubnetCalc.app/Contents/PkgInfo delete mode 100644 build/Debug/SubnetCalc.app/Contents/Resources/English.lproj/InfoPlist.strings delete mode 100644 build/Debug/SubnetCalc.app/Contents/Resources/English.lproj/MainMenu.nib delete mode 100644 build/Debug/SubnetCalc.app/Contents/Resources/License.txt delete mode 100644 build/Debug/SubnetCalc.app/Contents/Resources/SubnetCalc.icns delete mode 100644 build/Debug/SubnetCalc.app/Contents/_CodeSignature/CodeResources delete mode 100644 build/Release/SubnetCalc.app.dSYM/Contents/Info.plist delete mode 100644 build/Release/SubnetCalc.app.dSYM/Contents/Resources/DWARF/SubnetCalc delete mode 120000 build/Release/SubnetCalc.app/Contents/CodeResources delete mode 100644 build/Release/SubnetCalc.app/Contents/Info.plist delete mode 100755 build/Release/SubnetCalc.app/Contents/MacOS/SubnetCalc delete mode 100644 build/Release/SubnetCalc.app/Contents/PkgInfo delete mode 100644 build/Release/SubnetCalc.app/Contents/Resources/English.lproj/InfoPlist.strings delete mode 100644 build/Release/SubnetCalc.app/Contents/Resources/English.lproj/MainMenu.nib delete mode 100644 build/Release/SubnetCalc.app/Contents/Resources/License.txt delete mode 100644 build/Release/SubnetCalc.app/Contents/Resources/SubnetCalc.icns delete mode 100644 build/Release/SubnetCalc.app/Contents/_CodeSignature/CodeResources delete mode 100644 build/SubnetCalc.build/Debug/SubnetCalc.build/Objects-normal/x86_64/IPSubnetCalc.o delete mode 100644 build/SubnetCalc.build/Debug/SubnetCalc.build/Objects-normal/x86_64/SubnetCalc.LinkFileList delete mode 100644 build/SubnetCalc.build/Debug/SubnetCalc.build/Objects-normal/x86_64/SubnetCalc.o delete mode 100644 build/SubnetCalc.build/Debug/SubnetCalc.build/Objects-normal/x86_64/SubnetCalcAppDelegate.o delete mode 100644 build/SubnetCalc.build/Debug/SubnetCalc.build/Objects-normal/x86_64/main.o delete mode 100644 build/SubnetCalc.build/Debug/SubnetCalc.build/SubnetCalc-all-target-headers.hmap delete mode 100644 build/SubnetCalc.build/Debug/SubnetCalc.build/SubnetCalc-generated-files.hmap delete mode 100644 build/SubnetCalc.build/Debug/SubnetCalc.build/SubnetCalc-own-target-headers.hmap delete mode 100644 build/SubnetCalc.build/Debug/SubnetCalc.build/SubnetCalc-project-headers.hmap delete mode 100644 build/SubnetCalc.build/Debug/SubnetCalc.build/SubnetCalc.dep delete mode 100644 build/SubnetCalc.build/Debug/SubnetCalc.build/SubnetCalc.hmap delete mode 100644 build/SubnetCalc.build/Debug/SubnetCalc.build/SubnetCalc~.dep delete mode 100644 build/SubnetCalc.build/Debug/SubnetCalc.build/build-state.dat delete mode 100644 build/SubnetCalc.build/Debug/SubnetCalc.build/build-state~.dat delete mode 100644 build/SubnetCalc.build/Release/SubnetCalc.build/Objects-normal/i386/IPSubnetCalc.o delete mode 100755 build/SubnetCalc.build/Release/SubnetCalc.build/Objects-normal/i386/SubnetCalc delete mode 100644 build/SubnetCalc.build/Release/SubnetCalc.build/Objects-normal/i386/SubnetCalc.LinkFileList delete mode 100644 build/SubnetCalc.build/Release/SubnetCalc.build/Objects-normal/i386/SubnetCalcAppDelegate.o delete mode 100644 build/SubnetCalc.build/Release/SubnetCalc.build/Objects-normal/i386/main.o delete mode 100644 build/SubnetCalc.build/Release/SubnetCalc.build/Objects-normal/x86_64/IPSubnetCalc.o delete mode 100755 build/SubnetCalc.build/Release/SubnetCalc.build/Objects-normal/x86_64/SubnetCalc delete mode 100644 build/SubnetCalc.build/Release/SubnetCalc.build/Objects-normal/x86_64/SubnetCalc.LinkFileList delete mode 100644 build/SubnetCalc.build/Release/SubnetCalc.build/Objects-normal/x86_64/SubnetCalcAppDelegate.o delete mode 100644 build/SubnetCalc.build/Release/SubnetCalc.build/Objects-normal/x86_64/main.o delete mode 100644 build/SubnetCalc.build/Release/SubnetCalc.build/StaticAnalyzer/normal/i386/IPSubnetCalc.plist delete mode 100644 build/SubnetCalc.build/Release/SubnetCalc.build/StaticAnalyzer/normal/i386/main.plist delete mode 100644 build/SubnetCalc.build/Release/SubnetCalc.build/StaticAnalyzer/normal/x86_64/IPSubnetCalc.plist delete mode 100644 build/SubnetCalc.build/Release/SubnetCalc.build/StaticAnalyzer/normal/x86_64/main.plist delete mode 100644 build/SubnetCalc.build/Release/SubnetCalc.build/SubnetCalc-all-target-headers.hmap delete mode 100644 build/SubnetCalc.build/Release/SubnetCalc.build/SubnetCalc-generated-files.hmap delete mode 100644 build/SubnetCalc.build/Release/SubnetCalc.build/SubnetCalc-own-target-headers.hmap delete mode 100644 build/SubnetCalc.build/Release/SubnetCalc.build/SubnetCalc-project-headers.hmap delete mode 100644 build/SubnetCalc.build/Release/SubnetCalc.build/SubnetCalc.dep delete mode 100644 build/SubnetCalc.build/Release/SubnetCalc.build/SubnetCalc.hmap delete mode 100644 build/SubnetCalc.build/Release/SubnetCalc.build/SubnetCalc~.dep delete mode 100644 build/SubnetCalc.build/Release/SubnetCalc.build/build-state.dat delete mode 100644 build/SubnetCalc.build/Release/SubnetCalc.build/build-state~.dat diff --git a/English.lproj/MainMenu.xib b/English.lproj/MainMenu.xib index 77ea6d6..07fd95e 100644 --- a/English.lproj/MainMenu.xib +++ b/English.lproj/MainMenu.xib @@ -1,18 +1,39 @@ - 1060 - 10J567 - 823 - 1038.35 - 462.00 + 1070 + 11D50 + 2182 + 1138.32 + 568.00 com.apple.InterfaceBuilder.CocoaPlugin - 823 + 2182 - - - + + NSScroller + NSTabView + NSMenu + NSSliderCell + NSButton + NSCustomObject + NSSlider + NSTableView + NSComboBox + NSComboBoxCell + NSTextField + NSWindowTemplate + NSTextFieldCell + NSButtonCell + NSTableColumn + NSBox + NSView + NSPopUpButtonCell + NSScrollView + NSTabViewItem + NSPopUpButton + NSTableHeaderView + NSMenuItem com.apple.InterfaceBuilder.CocoaPlugin @@ -308,7 +329,7 @@ SubnetCalc NSWindow - {1.79769e+308, 1.79769e+308} + {482, 424} @@ -319,11 +340,13 @@ 274 {{13, 10}, {456, 370}} + + 1 - + 256 @@ -332,13 +355,14 @@ - 256 + 274 258 {{14, 10}, {392, 26}} + YES -2076049856 @@ -421,10 +445,12 @@ {{2, 2}, {420, 48}} + {{6, 241}, {424, 68}} + {0, 0} 67239424 @@ -461,13 +487,14 @@ - 256 + 274 258 {{17, 14}, {386, 22}} + YES -2075001280 @@ -486,10 +513,12 @@ {{2, 2}, {420, 50}} + {{6, 167}, {424, 70}} + {0, 0} 67239424 @@ -514,13 +543,14 @@ - 256 + 274 258 {{17, 14}, {386, 22}} + YES -2075001280 @@ -536,10 +566,12 @@ {{2, 2}, {420, 50}} + {{6, 93}, {424, 70}} + {0, 0} 67239424 @@ -564,13 +596,14 @@ - 256 + 274 258 {{17, 13}, {386, 22}} + YES -2075001280 @@ -586,10 +619,12 @@ {{2, 2}, {420, 50}} + {{6, 19}, {424, 70}} + {0, 0} 67239424 @@ -610,7 +645,7 @@ {{10, 33}, {436, 324}} - + Address @@ -627,7 +662,7 @@ 2 - + 256 @@ -636,13 +671,15 @@ - 256 + 274 258 {{20, 10}, {144, 26}} + + YES 343014976 @@ -669,14 +706,13 @@ 274 - {15, 0} + {13, 0} YES - - 12 + 10 10 1000 @@ -727,7 +763,7 @@ 19 tableViewAction: - -767524864 + -765427712 @@ -736,16 +772,21 @@ 0 YES 0 + 1 {{2, 2}, {181, 48}} + + {{234, 253}, {185, 68}} + + {0, 0} 67239424 @@ -770,13 +811,15 @@ - 256 + 274 256 {{14, 10}, {58, 26}} + + YES 343014976 @@ -793,14 +836,13 @@ 274 - {15, 0} + {13, 0} YES - - 12 + 10 10 1000 @@ -836,7 +878,7 @@ 19 tableViewAction: - -767524864 + -765427712 @@ -845,16 +887,21 @@ 0 YES 0 + 1 {{2, 2}, {83, 48}} + + {{17, 253}, {87, 68}} + + {0, 0} 67239424 @@ -879,13 +926,15 @@ - 256 + 274 256 {{14, 10}, {58, 26}} + + YES 343014976 @@ -902,14 +951,13 @@ 274 - {15, 0} + {13, 0} YES - - 12 + 10 10 1000 @@ -945,7 +993,7 @@ 19 tableViewAction: - -767524864 + -765427712 @@ -954,16 +1002,21 @@ 0 YES 0 + 1 {{2, 2}, {83, 48}} + + {{124, 253}, {87, 68}} + + {0, 0} 67239424 @@ -988,13 +1041,15 @@ - 256 + 274 256 {{20, 10}, {153, 26}} + + YES 343014976 @@ -1011,14 +1066,13 @@ 274 - {15, 0} + {13, 0} YES - - 12 + 10 10 1000 @@ -1054,7 +1108,7 @@ 19 tableViewAction: - -767524864 + -765427712 @@ -1063,16 +1117,21 @@ 0 YES 0 + 1 {{2, 2}, {190, 48}} + + {{17, 174}, {194, 68}} + + {0, 0} 67239424 @@ -1097,13 +1156,15 @@ - 256 + 274 258 {{20, 10}, {144, 26}} + + YES 343014976 @@ -1120,14 +1181,13 @@ 274 - {15, 0} + {13, 0} YES - - 12 + 10 10 1000 @@ -1163,7 +1223,7 @@ 19 tableViewAction: - -767524864 + -765427712 @@ -1172,16 +1232,21 @@ 0 YES 0 + 1 {{2, 2}, {181, 48}} + + {{234, 174}, {185, 68}} + + {0, 0} 67239424 @@ -1206,13 +1271,15 @@ - 256 + 274 258 {{20, 14}, {361, 22}} + + YES -2075001280 @@ -1228,10 +1295,14 @@ {{2, 2}, {398, 50}} + + {{17, 97}, {402, 70}} + + {0, 0} 67239424 @@ -1256,13 +1327,15 @@ - 256 + 274 256 {{17, 14}, {156, 22}} + + YES -2075001280 @@ -1278,10 +1351,14 @@ {{2, 2}, {190, 50}} + + {{17, 20}, {194, 70}} + + {0, 0} 67239424 @@ -1306,13 +1383,15 @@ - 256 + 274 258 {{17, 14}, {147, 22}} + + YES -2075001280 @@ -1328,10 +1407,14 @@ {{2, 2}, {181, 50}} + + {{234, 20}, {185, 70}} + + {0, 0} 67239424 @@ -1352,6 +1435,9 @@ {{10, 33}, {436, 324}} + + + Subnets @@ -1373,26 +1459,28 @@ 256 - {379, 251} + {394, 201} + YES 256 - {379, 17} + {394, 17} + - + 256 {{380, 0}, {16, 17}} - + numCol - 40 + 44 40 1000 @@ -1429,7 +1517,7 @@ subnetCol - 88 + 92 40 1000 @@ -1454,7 +1542,7 @@ rangeCol - 131.843994140625 + 135.843994140625 36.844001770019531 1000 @@ -1484,7 +1572,7 @@ broadcastCol - 107.01300048828125 + 110.01300048828125 60.01300048828125 1000 @@ -1521,9 +1609,10 @@ 0 YES 0 + 1 - {{1, 17}, {379, 251}} + {{1, 17}, {394, 201}} @@ -1533,8 +1622,9 @@ 256 - {{380, 17}, {15, 251}} + {{380, 17}, {15, 195}} + _doScroller: 0.9842105507850647 @@ -1542,8 +1632,9 @@ 256 - {{1, 268}, {379, 15}} + {{1, 203}, {388, 15}} + 1 _doScroller: @@ -1555,28 +1646,94 @@ - {{1, 0}, {379, 17}} + {{1, 0}, {394, 17}} 4 - - {{20, 20}, {396, 284}} + {{20, 45}, {396, 219}} - - 50 + + 133170 - QSAAAEEgAABBmAAAQZgAAA + + + 292 + {{15, 7}, {80, 32}} + + + YES + + 67239424 + 0 + Classless + + + 1211912703 + 2 + + NSImage + NSSwitch + + + NSSwitch + + + + 200 + 25 + + + + + 269 + {{36, 270}, {364, 26}} + + + YES + + -2079981824 + 8192 + + + 30 + 8 + 8 + 0.0 + 23 + 1 + YES + NO + + + + + 269 + {{27, 304}, {38, 17}} + + + YES + + 68288064 + 138413056 + + + + + + + {{10, 33}, {436, 324}} + Subnets/Hosts @@ -1593,13 +1750,14 @@ - 256 + 274 256 {{14, 10}, {58, 26}} + YES 343014976 @@ -1616,14 +1774,13 @@ 274 - {15, 0} + {13, 0} YES - - 12 + 10 10 1000 @@ -1659,7 +1816,7 @@ 19 tableViewAction: - -767524864 + -765427712 @@ -1668,16 +1825,19 @@ 0 YES 0 + 1 {{2, 2}, {83, 48}} + {{17, 253}, {87, 68}} + {0, 0} 67239424 @@ -1702,13 +1862,14 @@ - 256 + 274 258 {{20, 10}, {141, 26}} + YES 343014976 @@ -1727,14 +1888,13 @@ 274 - {15, 0} + {13, 0} YES - - 12 + 10 10 1000 @@ -1768,7 +1928,7 @@ 19 tableViewAction: - -767524864 + -765427712 @@ -1777,16 +1937,19 @@ 0 YES 0 + 1 {{2, 2}, {178, 48}} + {{235, 253}, {182, 68}} + {0, 0} 67239424 @@ -1811,13 +1974,14 @@ - 256 + 274 258 {{20, 10}, {141, 26}} + YES 343014976 @@ -1836,14 +2000,13 @@ 274 - {15, 0} + {13, 0} YES - - 12 + 10 10 1000 @@ -1877,7 +2040,7 @@ 19 tableViewAction: - -767524864 + -765427712 @@ -1886,16 +2049,19 @@ 0 YES 0 + 1 {{2, 2}, {178, 48}} + {{235, 175}, {182, 68}} + {0, 0} 67239424 @@ -1920,13 +2086,14 @@ - 256 + 274 256 {{20, 10}, {141, 26}} + YES 343014976 @@ -1943,14 +2110,13 @@ 274 - {15, 0} + {13, 0} YES - - 12 + 10 10 1000 @@ -1986,7 +2152,7 @@ 19 tableViewAction: - -767524864 + -765427712 @@ -1995,16 +2161,19 @@ 0 YES 0 + 1 {{2, 2}, {178, 48}} + {{17, 175}, {182, 68}} + {0, 0} 67239424 @@ -2029,13 +2198,14 @@ - 256 + 274 256 {{17, 14}, {144, 22}} + YES -2075001280 @@ -2051,10 +2221,12 @@ {{2, 2}, {178, 50}} + {{17, 16}, {182, 70}} + {0, 0} 67239424 @@ -2079,13 +2251,14 @@ - 256 + 274 258 {{17, 14}, {362, 22}} + YES -2075001280 @@ -2101,10 +2274,12 @@ {{2, 2}, {396, 50}} + {{17, 95}, {400, 70}} + {0, 0} 67239424 @@ -2125,19 +2300,20 @@ {{10, 33}, {436, 324}} + CIDR - + 0 YES YES - + @@ -2145,6 +2321,8 @@ 269 {{169, 382}, {144, 22}} + + YES -1804468671 @@ -2167,6 +2345,8 @@ 269 {{87, 387}, {77, 17}} + + YES 67239424 @@ -2183,6 +2363,8 @@ 269 {{315, 377}, {84, 32}} + + YES 67239424 @@ -2207,23 +2389,130 @@ 25 + + + 265 + {{416, 382}, {46, 25}} + + + + YES + + -2076049856 + 134219776 + + + -2035269377 + 34 + + + 400 + 75 + + + YES + + + 1048576 + 2147483647 + 1 + + + _popUpItemAction: + + + YES + + OtherViews + + + + + Email + + 1048576 + 2147483647 + + + _popUpItemAction: + + + + + Print + + 1048576 + 2147483647 + + + _popUpItemAction: + + + + + Export to CSV + + 1048576 + 2147483647 + + + _popUpItemAction: + + + + + + YES + 1 + YES + YES + 1 + + {482, 424} + + - {{0, 0}, {1920, 1178}} + {{0, 0}, {2560, 1418}} {482, 446} - {1.79769e+308, 1.79769e+308} - - - SubnetCalcAppDelegate + {10000000000000, 10000000000000} + YES NSFontManager + + SubnetCalcAppDelegate + + + + terminate: + + + + 449 + + + + orderFrontStandardAboutPanel: + + + + 142 + + + + delegate + + + + 495 + performMiniaturize: @@ -2240,14 +2529,6 @@ 39 - - - orderFrontStandardAboutPanel: - - - - 142 - hide: @@ -2274,35 +2555,51 @@ - terminate: - - + showHelp: + + - 449 + 493 - showHelp: + copy: - + - 493 + 701 - - delegate - - + + cut: + + - 495 + 702 - - window - - + + paste: + + - 532 + 703 + + + + delete: + + + + 704 + + + + selectAll: + + + + 705 @@ -2320,6 +2617,14 @@ 621 + + + window + + + + 532 + calc: @@ -2440,14 +2745,6 @@ 636 - - - classType - - - - 637 - maskBitsCombo @@ -2576,14 +2873,6 @@ 653 - - - dataSource - - - - 654 - ipAddrEdit: @@ -2592,45 +2881,93 @@ 655 + + + subnetBitsSlide + + + + 714 + + + + bitsOnSlide + + + + 716 + - copy: - - + subnetBitsSlide: + + - 701 + 718 - cut: - - + changeTableViewClass: + + - 702 + 720 + + + + tabViewClassLess + + + + 721 + + + + exportButton + + + + 744 + + + + classType + + + + 746 - paste: - - + exportEmail: + + - 703 + 749 - delete: - - + exportPrint: + + - 704 + 750 - selectAll: - - + exportCSV: + + - 705 + 751 + + + + dataSource + + + + 654 @@ -2808,6 +3145,7 @@ + @@ -3202,6 +3540,9 @@ + + + @@ -3517,258 +3858,247 @@ - - - - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - {{436, 809}, {64, 6}} - 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 - - {{352, 820}, {194, 53}} - com.apple.InterfaceBuilder.CocoaPlugin - - {{525, 802}, {197, 73}} - {{242, 873}, {286, 20}} - com.apple.InterfaceBuilder.CocoaPlugin - - {74, 862} - {{6, 978}, {478, 20}} - {{65, 97}, {482, 424}} - com.apple.InterfaceBuilder.CocoaPlugin - {{65, 97}, {482, 424}} - - {{33, 99}, {480, 360}} - - {3.40282e+38, 3.40282e+38} - {482, 424} - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - {{423, 851}, {182, 23}} - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - P4AAAL+AAABBUAAAw70AAA - - + + 706 + + + + + + + + 707 + + + + + 710 + + + + + + + + 711 + + + + + 708 + + + + + + + + 709 + + + + + 737 + + + + + + + + 738 + + + + + + + + 739 + + + + + + + + + + + 740 + + + + + 741 + + + + + 742 + + + + + 745 + + + + + + + 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 + {{65, 98}, {482, 424}} + + 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 - - AUDAAABBmAAAA - - com.apple.InterfaceBuilder.CocoaPlugin - - AUDAAABCugAAA - - com.apple.InterfaceBuilder.CocoaPlugin - - AUDAAABDJwAAA - - com.apple.InterfaceBuilder.CocoaPlugin - - AUDAAABDcQAAA - - com.apple.InterfaceBuilder.CocoaPlugin - - {{178, 595}, {402, 83}} + 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 - - P4AAAL+AAABBiAAAwggAAA - - + com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin - + com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin - - P4AAAL+AAABBiAAAwggAAA - - + 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 - - AUL4AABDfQAAA - - 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 - - {{254, 690}, {211, 183}} com.apple.InterfaceBuilder.CocoaPlugin - - {{23, 794}, {245, 183}} + 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 - - AUNtAABDLwAAA - - com.apple.InterfaceBuilder.CocoaPlugin - - AUNtAABDfQAAA - - 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 - - P4AAAL+AAABDKAAAw8CAAA - - com.apple.InterfaceBuilder.CocoaPlugin - - P4AAAL+AAABCrgAAw8kAAA - - com.apple.InterfaceBuilder.CocoaPlugin - - P4AAAL+AAABDnYAAw8uAAA - - + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin - - {{352, 770}, {137, 103}} com.apple.InterfaceBuilder.CocoaPlugin - - {{187, 434}, {243, 243}} 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 - - 705 + 765 @@ -3787,7 +4117,12 @@ id id id + id + id + id + id id + id @@ -3834,21 +4169,44 @@ changeSupernetMaxAddr: id + + changeTableViewClass: + id + + + exportCSV: + id + + + exportEmail: + id + + + exportPrint: + id + ipAddrEdit: id + + subnetBitsSlide: + id + NSTextField + NSTextField NSTextField NSTextField NSTextField NSPopUpButton + NSPopUpButton NSComboBox NSComboBox NSComboBox NSComboBox + NSSlider NSTextField NSTextField NSTextField @@ -3861,6 +4219,7 @@ NSComboBox NSTextField NSTabView + NSButton NSWindow @@ -3868,6 +4227,10 @@ addrField NSTextField + + bitsOnSlide + NSTextField + classBinaryMap NSTextField @@ -3884,6 +4247,10 @@ classType NSPopUpButton + + exportButton + NSPopUpButton + maskBitsCombo NSComboBox @@ -3900,6 +4267,10 @@ subnetBitsCombo NSComboBox + + subnetBitsSlide + NSSlider + subnetBroadcast NSTextField @@ -3948,6 +4319,10 @@ tabView NSTabView + + tabViewClassLess + NSButton + window NSWindow @@ -3955,590 +4330,19 @@ IBProjectSource - SubnetCalcAppDelegate.h - - - - - - NSActionCell - NSCell - - IBFrameworkSource - AppKit.framework/Headers/NSActionCell.h - - - - NSApplication - NSResponder - - IBFrameworkSource - AppKit.framework/Headers/NSApplication.h - - - - NSApplication - - IBFrameworkSource - AppKit.framework/Headers/NSApplicationScripting.h - - - - NSApplication - - IBFrameworkSource - AppKit.framework/Headers/NSColorPanel.h - - - - NSApplication - - IBFrameworkSource - AppKit.framework/Headers/NSHelpManager.h - - - - NSApplication - - IBFrameworkSource - AppKit.framework/Headers/NSPageLayout.h - - - - NSApplication - - IBFrameworkSource - AppKit.framework/Headers/NSUserInterfaceItemSearching.h - - - - NSBox - NSView - - IBFrameworkSource - AppKit.framework/Headers/NSBox.h - - - - NSBrowser - NSControl - - IBFrameworkSource - AppKit.framework/Headers/NSBrowser.h - - - - NSButton - NSControl - - IBFrameworkSource - AppKit.framework/Headers/NSButton.h - - - - NSButtonCell - NSActionCell - - IBFrameworkSource - AppKit.framework/Headers/NSButtonCell.h - - - - NSCell - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSCell.h - - - - NSComboBox - NSTextField - - IBFrameworkSource - AppKit.framework/Headers/NSComboBox.h - - - - NSComboBoxCell - NSTextFieldCell - - IBFrameworkSource - AppKit.framework/Headers/NSComboBoxCell.h - - - - NSControl - NSView - - IBFrameworkSource - AppKit.framework/Headers/NSControl.h - - - - NSFontManager - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSFontManager.h - - - - NSFormatter - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSFormatter.h - - - - NSMatrix - NSControl - - IBFrameworkSource - AppKit.framework/Headers/NSMatrix.h - - - - NSMenu - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSMenu.h - - - - NSMenuItem - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSMenuItem.h - - - - NSMenuItemCell - NSButtonCell - - IBFrameworkSource - AppKit.framework/Headers/NSMenuItemCell.h - - - - NSMovieView - NSView - - IBFrameworkSource - AppKit.framework/Headers/NSMovieView.h - - - - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSAccessibility.h - - - - NSObject - - - - NSObject - - - - NSObject - - - - NSObject - - - - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSDictionaryController.h - - - - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSDragging.h - - - - NSObject - - - - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSFontPanel.h - - - - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSKeyValueBinding.h - - - - NSObject - - - - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSNibLoading.h - - - - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSOutlineView.h - - - - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSPasteboard.h - - - - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSSavePanel.h - - - - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSTableView.h - - - - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSToolbarItem.h - - - - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSView.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSArchiver.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSClassDescription.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSError.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSFileManager.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSKeyValueCoding.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSKeyValueObserving.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSKeyedArchiver.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSObject.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSObjectScripting.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSPortCoder.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSRunLoop.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSScriptClassDescription.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSScriptKeyValueCoding.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSScriptObjectSpecifiers.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSScriptWhoseTests.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSThread.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSURL.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSURLConnection.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSURLDownload.h - - - - NSPopUpButton - NSButton - - IBFrameworkSource - AppKit.framework/Headers/NSPopUpButton.h - - - - NSPopUpButtonCell - NSMenuItemCell - - IBFrameworkSource - AppKit.framework/Headers/NSPopUpButtonCell.h - - - - NSResponder - - IBFrameworkSource - AppKit.framework/Headers/NSInterfaceStyle.h - - - - NSResponder - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSResponder.h - - - - NSScrollView - NSView - - IBFrameworkSource - AppKit.framework/Headers/NSScrollView.h - - - - NSScroller - NSControl - - IBFrameworkSource - AppKit.framework/Headers/NSScroller.h - - - - NSTabView - NSView - - IBFrameworkSource - AppKit.framework/Headers/NSTabView.h - - - - NSTabViewItem - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSTabViewItem.h - - - - NSTableColumn - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSTableColumn.h - - - - NSTableHeaderView - NSView - - IBFrameworkSource - AppKit.framework/Headers/NSTableHeaderView.h - - - - NSTableView - NSControl - - - - NSText - NSView - - IBFrameworkSource - AppKit.framework/Headers/NSText.h - - - - NSTextField - NSControl - - IBFrameworkSource - AppKit.framework/Headers/NSTextField.h - - - - NSTextFieldCell - NSActionCell - - IBFrameworkSource - AppKit.framework/Headers/NSTextFieldCell.h - - - - NSView - - IBFrameworkSource - AppKit.framework/Headers/NSClipView.h - - - - NSView - - - - NSView - - IBFrameworkSource - AppKit.framework/Headers/NSRulerView.h - - - - NSView - NSResponder - - - - NSWindow - - IBFrameworkSource - AppKit.framework/Headers/NSDrawer.h - - - - NSWindow - NSResponder - - IBFrameworkSource - AppKit.framework/Headers/NSWindow.h - - - - NSWindow - - IBFrameworkSource - AppKit.framework/Headers/NSWindowScripting.h + ./Classes/SubnetCalcAppDelegate.h 0 IBCocoaFramework - - com.apple.InterfaceBuilder.CocoaPlugin.macosx - - YES - ../SubnetCalc.xcodeproj 3 - {9, 8} - {7, 2} + {11, 11} + {10, 3} + {15, 15} diff --git a/IPSubnetCalc.h b/IPSubnetCalc.h index 7d28dd2..ec57dec 100644 --- a/IPSubnetCalc.h +++ b/IPSubnetCalc.h @@ -36,15 +36,15 @@ unsigned int hostSubnetUbound; unsigned int ciscoWildcard; - char bitMap[36]; + char bitMap[36]; } + (NSString *)denumberize:(unsigned int)address; + (unsigned int)numberize:(const char *)address; + (int)countOnBits:(unsigned int)number; - (void)initAddress:(const char *)address; -- (void)initAddressAndMask:(const char *)address:(unsigned int)addressMask; -- (void)initAddressAndMaskWithUnsignedInt:(unsigned int)address:(unsigned int)addressMask; +- (void)initAddressAndMask:(const char *)address mask:(unsigned int)addressMask; +- (void)initAddressAndMaskWithUnsignedInt:(unsigned int)address mask:(unsigned int)addressMask; - (NSString *)subnetHostAddrRange; - (NSString *)networkClass; - (unsigned int)netBits; diff --git a/IPSubnetCalc.m b/IPSubnetCalc.m index 53f16b6..2e4d725 100644 --- a/IPSubnetCalc.m +++ b/IPSubnetCalc.m @@ -135,7 +135,7 @@ - (char)getClass:(unsigned int)address return ('d'); } -- (int)setClassInfo:(char)class:(const int)setDefaults +- (int)setClassInfo:(char)class defaults:(const int)setDefaults { if (networkClass) [networkClass release]; @@ -177,17 +177,17 @@ - (void)initByAddr:(unsigned int)address class = [self getClass:address]; subnetBits = 0; hostAddr = address; - [self setClassInfo:class:0]; + [self setClassInfo:class defaults:0]; [self initNetwork]; } -- (void)initByAddrAndMask:(unsigned int)address:(unsigned int)addressMask +- (void)initByAddrAndMask:(unsigned int)address mask:(unsigned int)addressMask { char class; class = [self getClass:address]; hostAddr = address; - [self setClassInfo:class:0]; + [self setClassInfo:class defaults:0]; if (mask > addressMask) { mask = addressMask; @@ -208,15 +208,15 @@ - (void)initAddress:(const char *)address } -- (void)initAddressAndMask:(const char *)address:(unsigned int)addressMask +- (void)initAddressAndMask:(const char *)address mask:(unsigned int)addressMask { - [self initByAddrAndMask:[IPSubnetCalc numberize:address]:addressMask]; + [self initByAddrAndMask:[IPSubnetCalc numberize:address] mask:addressMask]; } -- (void)initAddressAndMaskWithUnsignedInt:(unsigned int)address:(unsigned int)addressMask +- (void)initAddressAndMaskWithUnsignedInt:(unsigned int)address mask:(unsigned int)addressMask { - [self initByAddrAndMask:address:addressMask]; + [self initByAddrAndMask:address mask:addressMask]; } - (NSString *)subnetHostAddrRange diff --git a/PrintView.h b/PrintView.h new file mode 100644 index 0000000..bc47f73 --- /dev/null +++ b/PrintView.h @@ -0,0 +1,21 @@ +// +// PrintView.h +// SubnetCalc +// +// Created by Julien Mulot on 02/02/11. +// Copyright 2011 mulot.net. All rights reserved. +// + +#import + + +@interface PrintView : NSView { + NSTableView *subnetsTable; + int entryPerPage; // how many entry per pages + int pages; //how many pages + float rectHeight; //how much vertical space +} + +-initWithSubnet:(NSTableView *)table printInfo:(NSPrintInfo *)pi; +- (NSRect)rectForSubnet:(int)index; +@end diff --git a/PrintView.m b/PrintView.m new file mode 100644 index 0000000..d7b6f58 --- /dev/null +++ b/PrintView.m @@ -0,0 +1,99 @@ +// +// PrintView.m +// SubnetCalc +// +// Created by Julien Mulot on 02/02/11. +// Copyright 2011 mulot.net. All rights reserved. +// + +#import "PrintView.h" + + +@implementation PrintView + +-initWithSubnet:(NSTableView *)table printInfo:(NSPrintInfo *)pi +{ + NSRect frame; + NSSize paperSize; + + entryPerPage = 30; + subnetsTable = [table retain]; + pages = [subnetsTable numberOfRows] / entryPerPage; + if (([subnetsTable numberOfRows] % entryPerPage) != 0) + { + pages = pages + 1; + } + paperSize = [pi paperSize]; + frame.origin = NSMakePoint(0,0); + frame.size.width = paperSize.width; + frame.size.height = paperSize.height * pages; + self = [super initWithFrame:frame]; + rectHeight = paperSize.height / entryPerPage; + return self; +} + +-(BOOL)knowsPageRange:(NSRange *)range; +{ + range->location = 1; + range->length = pages; + return YES; +} + +-(NSRect)rectForSubnet:(int)index +{ + NSRect result; + NSRect bounds; + + bounds = [self bounds]; + result.origin.x = bounds.origin.x; + result.size.width = bounds.size.width; + result.origin.y = NSMaxY(bounds) -((index + 1) * rectHeight); + result.size.height = rectHeight; + return (result); +} + +-(NSRect)rectForPage:(NSInteger)pageNum +{ + NSRect result; + + result.size.width = [self bounds].size.width; + result.size.height = rectHeight * entryPerPage; + result.origin.x = [self bounds].origin.x; + result.origin.y = NSMaxY([self bounds]) - (pageNum * result.size.height); + return (result); +} + +-(void)drawRect:(NSRect)rect +{ + int i; + NSRect aRect; + NSMutableDictionary *attributes; + NSString *printString; + + attributes = [[NSMutableDictionary alloc] init]; + [attributes setObject:[NSFont fontWithName:@"Helvetica" size:14] forKey: NSFontAttributeName]; + [attributes setObject:[NSColor blackColor] forKey:NSForegroundColorAttributeName]; + for (i = 1; i <= [subnetsTable numberOfRows]; i++) + { + aRect = [self rectForSubnet:i]; + if (NSIntersectsRect(aRect, rect)) + { + aRect.origin.x = aRect.origin.x + 50; + aRect.size.width = aRect.size.width - 400; + //NSLog(@"PrintLine %d %@\n",i, [subnetsTable tableView: + printString = [NSString stringWithFormat: @"%d %@ %@ %@", + i, @"toto", @"tata", @"titi" + ]; + //[[Subnets objectAtIndex:i] stringValue]]; + [printString drawInRect:aRect withAttributes:attributes]; + } + } + [attributes release]; +} + +-(void)dealloc +{ + [super dealloc]; +} + +@end diff --git a/SubnetCalc-Info.plist b/SubnetCalc-Info.plist index d018f65..49977e6 100644 --- a/SubnetCalc-Info.plist +++ b/SubnetCalc-Info.plist @@ -19,11 +19,11 @@ CFBundlePackageType APPL CFBundleShortVersionString - 1.2 + 2.0 CFBundleSignature JMUL CFBundleVersion - 1.2 + 2.0 LSMinimumSystemVersion ${MACOSX_DEPLOYMENT_TARGET} NSMainNibFile @@ -31,6 +31,6 @@ NSPrincipalClass NSApplication NSHumanReadableCopyright - Copyright 2010 Julien Mulot + Copyright 2013 Julien Mulot diff --git a/SubnetCalc.entitlements b/SubnetCalc.entitlements new file mode 100644 index 0000000..0c67376 --- /dev/null +++ b/SubnetCalc.entitlements @@ -0,0 +1,5 @@ + + + + + diff --git a/SubnetCalc.xcodeproj/mulot.mode1v3 b/SubnetCalc.xcodeproj/mulot.mode1v3 index 2ac802c..84c300c 100644 --- a/SubnetCalc.xcodeproj/mulot.mode1v3 +++ b/SubnetCalc.xcodeproj/mulot.mode1v3 @@ -270,6 +270,9 @@ 089C165CFE840E0CC02AAC07 1DDD58140DA1D0A300B32029 29B97323FDCFA39411CA2CEA + 1058C7A0FEA54F0111CA2CBB + 1058C7A1FEA54F0111CA2CBB + 1058C7A2FEA54F0111CA2CBB 19C28FACFE9D520D11CA2CBB 1C37FBAC04509CD000000102 1C37FABC05509CD000000102 @@ -277,13 +280,13 @@ PBXSmartGroupTreeModuleOutlineStateSelectionKey - 15 - 9 + 7 + 1 0 PBXSmartGroupTreeModuleOutlineStateVisibleRectKey - {{0, 0}, {148, 869}} + {{0, 0}, {148, 868}} PBXTopSmartGroupGIDs @@ -295,14 +298,14 @@ GeometryConfiguration Frame - {{0, 0}, {165, 887}} + {{0, 0}, {165, 886}} GroupTreeTableConfiguration MainColumn 148 RubberWindowFrame - 0 100 840 928 0 0 1680 1028 + 0 101 1537 927 0 0 1680 1028 Module PBXSmartGroupTreeModule @@ -320,7 +323,7 @@ PBXProjectModuleGUID 1CE0B20306471E060097A5F4 PBXProjectModuleLabel - SubnetCalcAppDelegate.h + PrintView.m PBXSplitModuleInNavigatorKey Split0 @@ -328,23 +331,26 @@ PBXProjectModuleGUID 1CE0B20406471E060097A5F4 PBXProjectModuleLabel - SubnetCalcAppDelegate.h + PrintView.m _historyCapacity 0 bookmark - 94BDA8D512EA279400553A21 + 94820DDD12FA14C8002844C1 history - 949420F012D3DAF700E2F57D 949420F112D3DAF700E2F57D - 949420F212D3DAF700E2F57D 949420F312D3DAF700E2F57D - 940D710612D68BF200AD59D7 - 94004BD812D6917B00D6734E - 94004BD912D6917B00D6734E - 94BDA8C712EA270000553A21 - 94BDA8C812EA270000553A21 - 94BDA8C912EA270000553A21 + 94FCE6ED12E8E25500C26C7C + 94BDA82C12EA0D5200553A21 + 94BDA82D12EA0D5200553A21 + 947B52C712F246D9005093C2 + 94B6034312F74DF0005AA5EB + 94820D9612FA0B26002844C1 + 94820D9712FA0B26002844C1 + 94820DCA12FA1283002844C1 + 94820DD412FA1403002844C1 + 94820DD512FA1403002844C1 + 94820DD612FA1403002844C1 SplitCount @@ -356,14 +362,14 @@ GeometryConfiguration Frame - {{0, 0}, {670, 606}} + {{0, 0}, {1367, 761}} RubberWindowFrame - 0 100 840 928 0 0 1680 1028 + 0 101 1537 927 0 0 1680 1028 Module PBXNavigatorGroup Proportion - 606pt + 761pt ContentConfiguration @@ -376,18 +382,18 @@ GeometryConfiguration Frame - {{0, 611}, {670, 276}} + {{0, 766}, {1367, 120}} RubberWindowFrame - 0 100 840 928 0 0 1680 1028 + 0 101 1537 927 0 0 1680 1028 Module XCDetailModule Proportion - 276pt + 120pt Proportion - 670pt + 1367pt Name @@ -402,9 +408,9 @@ TableOfContents - 94BDA8CB12EA270000553A21 + 94820D5D12F9EA4C002844C1 1CE0B1FE06471DED0097A5F4 - 94BDA8CC12EA270000553A21 + 94820D5E12F9EA4C002844C1 1CE0B20306471E060097A5F4 1CE0B20506471E060097A5F4 @@ -557,11 +563,15 @@ 5 WindowOrderList + 94820D6F12F9F977002844C1 + 94820D7012F9F977002844C1 + 1CD10A99069EF8BA00B06720 9494207612D3ACB500E2F57D - /Users/mulot/Work/SubnetCalc 1.1/SubnetCalc.xcodeproj + 1C78EAAD065D492600B07095 + /Users/mulot/Work/SubnetCalc/SubnetCalc.xcodeproj WindowString - 0 100 840 928 0 0 1680 1028 + 0 101 1537 927 0 0 1680 1028 WindowToolsV3 @@ -589,14 +599,14 @@ GeometryConfiguration Frame - {{0, 0}, {500, 218}} + {{0, 0}, {1680, 644}} RubberWindowFrame - 467 399 500 500 0 0 1680 1028 + 0 102 1680 926 0 0 1680 1028 Module PBXNavigatorGroup Proportion - 218pt + 644pt ContentConfiguration @@ -613,9 +623,9 @@ GeometryConfiguration Frame - {{0, 223}, {500, 236}} + {{0, 649}, {1680, 236}} RubberWindowFrame - 467 399 500 500 0 0 1680 1028 + 0 102 1680 926 0 0 1680 1028 Module PBXBuildResultsModule @@ -624,7 +634,7 @@ Proportion - 459pt + 885pt Name @@ -638,7 +648,7 @@ TableOfContents 9494207612D3ACB500E2F57D - 94BDA8CD12EA270000553A21 + 94820D5F12F9EA4C002844C1 1CD0528F0623707200166675 XCMainBuildResultsModuleGUID @@ -647,7 +657,7 @@ WindowContentMinSize 486 300 WindowString - 467 399 500 500 0 0 1680 1028 + 0 102 1680 926 0 0 1680 1028 WindowToolGUID 9494207612D3ACB500E2F57D WindowToolIsVisible @@ -760,13 +770,13 @@ TableOfContents 1CD10A99069EF8BA00B06720 - 94004BDF12D6917B00D6734E + 94820D6712F9F977002844C1 1C162984064C10D400B95A72 - 94004BE012D6917B00D6734E - 94004BE112D6917B00D6734E - 94004BE212D6917B00D6734E - 94004BE312D6917B00D6734E - 94004BE412D6917B00D6734E + 94820D6812F9F977002844C1 + 94820D6912F9F977002844C1 + 94820D6A12F9F977002844C1 + 94820D6B12F9F977002844C1 + 94820D6C12F9F977002844C1 ToolbarConfiguration xcode.toolbar.config.debugV3 @@ -893,6 +903,8 @@ Dock + BecomeActive + ContentConfiguration PBXProjectModuleGUID @@ -928,7 +940,7 @@ TableOfContents 1C78EAAD065D492600B07095 - 94004BE512D6917B00D6734E + 94820D6D12F9F977002844C1 1C78EAAC065D492600B07095 ToolbarConfiguration @@ -938,7 +950,7 @@ WindowToolGUID 1C78EAAD065D492600B07095 WindowToolIsVisible - + Identifier @@ -1075,18 +1087,18 @@ 743 379 452 308 0 0 1280 1002 + FirstTimeWindowDisplayed + Identifier windowTool.breakpoints IsVertical - 0 + Layout Dock - BecomeActive - 1 ContentConfiguration PBXBottomSmartGroupGIDs @@ -1115,6 +1127,8 @@ PBXSmartGroupTreeModuleOutlineStateExpansionKey 1C77FABC04509CD000000102 + 1C3E0DCA080725EA00A55177 + 1C3E0DCC080725EA11A45113 PBXSmartGroupTreeModuleOutlineStateSelectionKey @@ -1128,7 +1142,7 @@ PBXTopSmartGroupGIDs XCIncludePerspectivesSwitch - 0 + GeometryConfiguration @@ -1140,7 +1154,7 @@ 168 RubberWindowFrame - 315 424 744 409 0 0 1440 878 + 21 596 744 409 0 0 1680 1028 Module PBXSmartGroupTreeModule @@ -1148,6 +1162,8 @@ 185pt + BecomeActive + ContentConfiguration PBXProjectModuleGUID @@ -1160,7 +1176,7 @@ Frame {{190, 0}, {554, 368}} RubberWindowFrame - 315 424 744 409 0 0 1440 878 + 21 596 744 409 0 0 1680 1028 Module XCDetailModule @@ -1184,22 +1200,22 @@ XCDetailModule StatusbarIsVisible - 1 + TableOfContents - 1CDDB66807F98D9800BB5817 - 1CDDB66907F98D9800BB5817 + 9436F50712F8BA0E0010A5CC + 9436F50812F8BA0E0010A5CC 1CE0B1FE06471DED0097A5F4 1CA1AED706398EBD00589147 ToolbarConfiguration xcode.toolbar.config.breakpointsV3 WindowString - 315 424 744 409 0 0 1440 878 + 21 596 744 409 0 0 1680 1028 WindowToolGUID - 1CDDB66807F98D9800BB5817 + 9436F50712F8BA0E0010A5CC WindowToolIsVisible - 1 + Identifier diff --git a/SubnetCalc.xcodeproj/mulot.pbxuser b/SubnetCalc.xcodeproj/mulot.pbxuser index 6749c70..bfe1080 100644 --- a/SubnetCalc.xcodeproj/mulot.pbxuser +++ b/SubnetCalc.xcodeproj/mulot.pbxuser @@ -2,23 +2,25 @@ { 089C165DFE840E0CC02AAC07 /* English */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {609, 580}}"; + sepNavIntBoundsRect = "{{0, 0}, {1449, 543}}"; sepNavSelRange = "{0, 0}"; sepNavVisRange = "{0, 45}"; }; }; 256AC3D80F4B6AC300CF3369 /* SubnetCalcAppDelegate.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {609, 884}}"; - sepNavSelRange = "{420, 38}"; - sepNavVisRange = "{145, 1559}"; + sepNavIntBoundsRect = "{{0, 0}, {1306, 1053}}"; + sepNavSelRange = "{865, 15}"; + sepNavVisRange = "{927, 1821}"; + sepNavWindowFrame = "{{840, 45}, {840, 983}}"; }; }; 256AC3D90F4B6AC300CF3369 /* SubnetCalcAppDelegate.m */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {943, 5187}}"; - sepNavSelRange = "{983, 0}"; - sepNavVisRange = "{329, 1053}"; + sepNavIntBoundsRect = "{{0, 0}, {1559, 7553}}"; + sepNavSelRange = "{14387, 0}"; + sepNavVisRange = "{10619, 1550}"; + sepNavWindowFrame = "{{15, 273}, {932, 750}}"; }; }; 256AC3F00F4B6AF500CF3369 /* SubnetCalc_Prefix.pch */ = { @@ -29,23 +31,49 @@ }; }; 29B97313FDCFA39411CA2CEA /* Project object */ = { - activeBuildConfigurationName = Release; + activeBuildConfigurationName = Debug; activeExecutable = 9494206712D3ACAE00E2F57D /* SubnetCalc */; activeTarget = 8D1107260486CEB800E47090 /* SubnetCalc */; addToTargets = ( 8D1107260486CEB800E47090 /* SubnetCalc */, ); + breakpoints = ( + ); codeSenseManager = 9494207912D3ACB500E2F57D /* Code sense */; executables = ( 9494206712D3ACAE00E2F57D /* SubnetCalc */, ); perUserDictionary = { + "PBXConfiguration.PBXBreakpointsDataSource.v1:1CA1AED706398EBD00589147" = { + PBXFileTableDataSourceColumnSortingDirectionKey = "-1"; + PBXFileTableDataSourceColumnSortingKey = PBXBreakpointsDataSource_BreakpointID; + PBXFileTableDataSourceColumnWidthsKey = ( + 20, + 20, + 198, + 20, + 99, + 99, + 29, + 20, + ); + PBXFileTableDataSourceColumnsKey = ( + PBXBreakpointsDataSource_ActionID, + PBXBreakpointsDataSource_TypeID, + PBXBreakpointsDataSource_BreakpointID, + PBXBreakpointsDataSource_UseID, + PBXBreakpointsDataSource_LocationID, + PBXBreakpointsDataSource_ConditionID, + PBXBreakpointsDataSource_IgnoreCountID, + PBXBreakpointsDataSource_ContinueID, + ); + }; PBXConfiguration.PBXFileTableDataSource3.PBXFileTableDataSource = { PBXFileTableDataSourceColumnSortingDirectionKey = "-1"; PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_FiletypeID; PBXFileTableDataSourceColumnWidthsKey = ( 20, - 431, + 1128, 20, 48, 43, @@ -84,21 +112,24 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 317335266; - PBXWorkspaceStateSaveDate = 317335266; + PBXPerProjectTemplateStateSaveDate = 318368326; + PBXWorkspaceStateSaveDate = 318368326; }; perUserProjectItems = { - 94004BD812D6917B00D6734E /* PBXTextBookmark */ = 94004BD812D6917B00D6734E /* PBXTextBookmark */; - 94004BD912D6917B00D6734E /* PBXTextBookmark */ = 94004BD912D6917B00D6734E /* PBXTextBookmark */; - 940D710612D68BF200AD59D7 /* PBXTextBookmark */ = 940D710612D68BF200AD59D7 /* PBXTextBookmark */; - 949420F012D3DAF700E2F57D /* PBXBookmark */ = 949420F012D3DAF700E2F57D /* PBXBookmark */; + 947B52C712F246D9005093C2 /* PBXTextBookmark */ = 947B52C712F246D9005093C2 /* PBXTextBookmark */; + 94820D9612FA0B26002844C1 /* PBXTextBookmark */ = 94820D9612FA0B26002844C1 /* PBXTextBookmark */; + 94820D9712FA0B26002844C1 /* PBXTextBookmark */ = 94820D9712FA0B26002844C1 /* PBXTextBookmark */; + 94820DCA12FA1283002844C1 /* PBXTextBookmark */ = 94820DCA12FA1283002844C1 /* PBXTextBookmark */; + 94820DD412FA1403002844C1 /* PBXTextBookmark */ = 94820DD412FA1403002844C1 /* PBXTextBookmark */; + 94820DD512FA1403002844C1 /* PBXTextBookmark */ = 94820DD512FA1403002844C1 /* PBXTextBookmark */; + 94820DD612FA1403002844C1 /* PBXTextBookmark */ = 94820DD612FA1403002844C1 /* PBXTextBookmark */; + 94820DDD12FA14C8002844C1 /* PBXTextBookmark */ = 94820DDD12FA14C8002844C1 /* PBXTextBookmark */; 949420F112D3DAF700E2F57D /* PBXTextBookmark */ = 949420F112D3DAF700E2F57D /* PBXTextBookmark */; - 949420F212D3DAF700E2F57D /* PBXTextBookmark */ = 949420F212D3DAF700E2F57D /* PBXTextBookmark */; 949420F312D3DAF700E2F57D /* PBXTextBookmark */ = 949420F312D3DAF700E2F57D /* PBXTextBookmark */; - 94BDA8C712EA270000553A21 /* PlistBookmark */ = 94BDA8C712EA270000553A21 /* PlistBookmark */; - 94BDA8C812EA270000553A21 /* PBXTextBookmark */ = 94BDA8C812EA270000553A21 /* PBXTextBookmark */; - 94BDA8C912EA270000553A21 /* PBXTextBookmark */ = 94BDA8C912EA270000553A21 /* PBXTextBookmark */; - 94BDA8D512EA279400553A21 /* PBXTextBookmark */ = 94BDA8D512EA279400553A21 /* PBXTextBookmark */; + 94B6034312F74DF0005AA5EB /* PBXTextBookmark */ = 94B6034312F74DF0005AA5EB /* PBXTextBookmark */; + 94BDA82C12EA0D5200553A21 /* PBXTextBookmark */ = 94BDA82C12EA0D5200553A21 /* PBXTextBookmark */; + 94BDA82D12EA0D5200553A21 /* PlistBookmark */ = 94BDA82D12EA0D5200553A21 /* PlistBookmark */; + 94FCE6ED12E8E25500C26C7C /* PBXBookmark */ = 94FCE6ED12E8E25500C26C7C /* PBXBookmark */; }; sourceControlManager = 9494207812D3ACB500E2F57D /* Source Control */; userBuildSettings = { @@ -106,8 +137,8 @@ }; 29B97316FDCFA39411CA2CEA /* main.m */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {609, 616}}"; - sepNavSelRange = "{249, 0}"; + sepNavIntBoundsRect = "{{0, 0}, {1306, 700}}"; + sepNavSelRange = "{187, 0}"; sepNavVisRange = "{0, 249}"; }; }; @@ -122,35 +153,99 @@ sepNavWindowFrame = "{{16, 273}, {932, 750}}"; }; }; - 94004BD812D6917B00D6734E /* PBXTextBookmark */ = { + 947B52C712F246D9005093C2 /* PBXTextBookmark */ = { isa = PBXTextBookmark; - fRef = 949420BA12D3C64500E2F57D /* IPSubnetCalc.m */; - name = "IPSubnetCalc.m: 6"; + fRef = 29B97316FDCFA39411CA2CEA /* main.m */; + name = "main.m: 12"; rLen = 0; - rLoc = 108; + rLoc = 187; rType = 0; - vrLen = 1007; + vrLen = 249; vrLoc = 0; }; - 94004BD912D6917B00D6734E /* PBXTextBookmark */ = { + 94820D8012F9FE44002844C1 /* PrintView.h */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {1306, 681}}"; + sepNavSelRange = "{384, 0}"; + sepNavVisRange = "{0, 455}"; + }; + }; + 94820D8112F9FE45002844C1 /* PrintView.m */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {1306, 1300}}"; + sepNavSelRange = "{1807, 0}"; + sepNavVisRange = "{901, 1457}"; + }; + }; + 94820D9612FA0B26002844C1 /* PBXTextBookmark */ = { isa = PBXTextBookmark; - fRef = 089C165DFE840E0CC02AAC07 /* English */; - name = "InfoPlist.strings: 1"; + fRef = 949420B912D3C64500E2F57D /* IPSubnetCalc.h */; + name = "IPSubnetCalc.h: 27"; + rLen = 8; + rLoc = 562; + rType = 0; + vrLen = 1441; + vrLoc = 22; + }; + 94820D9712FA0B26002844C1 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 949420BA12D3C64500E2F57D /* IPSubnetCalc.m */; + name = "IPSubnetCalc.m: 221"; + rLen = 1; + rLoc = 4871; + rType = 0; + vrLen = 1131; + vrLoc = 0; + }; + 94820DCA12FA1283002844C1 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 94820D8012F9FE44002844C1 /* PrintView.h */; + name = "PrintView.h: 19"; rLen = 0; - rLoc = 0; + rLoc = 384; rType = 0; - vrLen = 45; + vrLen = 455; vrLoc = 0; }; - 940D710612D68BF200AD59D7 /* PBXTextBookmark */ = { + 94820DD412FA1403002844C1 /* PBXTextBookmark */ = { isa = PBXTextBookmark; - fRef = 949420B912D3C64500E2F57D /* IPSubnetCalc.h */; - name = "IPSubnetCalc.h: 36"; + fRef = 256AC3D80F4B6AC300CF3369 /* SubnetCalcAppDelegate.h */; + name = "SubnetCalcAppDelegate.h: 27"; + rLen = 15; + rLoc = 865; + rType = 0; + vrLen = 1821; + vrLoc = 927; + }; + 94820DD512FA1403002844C1 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 256AC3D90F4B6AC300CF3369 /* SubnetCalcAppDelegate.m */; + name = "SubnetCalcAppDelegate.m: 434"; rLen = 0; - rLoc = 790; + rLoc = 14387; rType = 0; - vrLen = 1295; - vrLoc = 299; + vrLen = 1550; + vrLoc = 10619; + }; + 94820DD612FA1403002844C1 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 94820D8112F9FE45002844C1 /* PrintView.m */; + name = "PrintView.m: 85"; + rLen = 0; + rLoc = 2155; + rType = 0; + vrLen = 1440; + vrLoc = 885; + }; + 94820DDD12FA14C8002844C1 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 94820D8112F9FE45002844C1 /* PrintView.m */; + name = "PrintView.m: 76"; + rLen = 0; + rLoc = 1807; + rType = 0; + vrLen = 1457; + vrLoc = 901; }; 9494206712D3ACAE00E2F57D /* SubnetCalc */ = { isa = PBXExecutable; @@ -181,6 +276,8 @@ showTypeColumn = 0; sourceDirectories = ( ); + variableFormatDictionary = { + }; }; 9494207812D3ACB500E2F57D /* Source Control */ = { isa = PBXSourceControlManager; @@ -196,6 +293,11 @@ isa = PBXCodeSenseManager; indexTemplatePath = ""; }; + 9494208112D3B11E00E2F57D /* SubnetCalc.icns */ = { + uiCtxt = { + sepNavWindowFrame = "{{15, 273}, {932, 750}}"; + }; + }; 949420B712D3C62A00E2F57D /* License.txt */ = { uiCtxt = { sepNavIntBoundsRect = "{{0, 0}, {609, 3705}}"; @@ -205,22 +307,18 @@ }; 949420B912D3C64500E2F57D /* IPSubnetCalc.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {642, 936}}"; - sepNavSelRange = "{790, 0}"; - sepNavVisRange = "{299, 1295}"; + sepNavIntBoundsRect = "{{0, 0}, {1306, 923}}"; + sepNavSelRange = "{562, 8}"; + sepNavVisRange = "{22, 1441}"; }; }; 949420BA12D3C64500E2F57D /* IPSubnetCalc.m */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {609, 4862}}"; - sepNavSelRange = "{108, 0}"; - sepNavVisRange = "{0, 1007}"; + sepNavIntBoundsRect = "{{0, 0}, {1306, 4862}}"; + sepNavSelRange = "{4871, 1}"; + sepNavVisRange = "{0, 1131}"; }; }; - 949420F012D3DAF700E2F57D /* PBXBookmark */ = { - isa = PBXBookmark; - fRef = 9494208112D3B11E00E2F57D /* SubnetCalc.icns */; - }; 949420F112D3DAF700E2F57D /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 949420B712D3C62A00E2F57D /* License.txt */; @@ -231,66 +329,56 @@ vrLen = 2398; vrLoc = 0; }; - 949420F212D3DAF700E2F57D /* PBXTextBookmark */ = { + 949420F312D3DAF700E2F57D /* PBXTextBookmark */ = { isa = PBXTextBookmark; - fRef = 29B97316FDCFA39411CA2CEA /* main.m */; - name = "main.m: 15"; + fRef = 256AC3F00F4B6AF500CF3369 /* SubnetCalc_Prefix.pch */; + name = "SubnetCalc_Prefix.pch: 1"; rLen = 0; - rLoc = 249; + rLoc = 0; rType = 0; - vrLen = 249; + vrLen = 151; vrLoc = 0; }; - 949420F312D3DAF700E2F57D /* PBXTextBookmark */ = { + 94B6034312F74DF0005AA5EB /* PBXTextBookmark */ = { isa = PBXTextBookmark; - fRef = 256AC3F00F4B6AF500CF3369 /* SubnetCalc_Prefix.pch */; - name = "SubnetCalc_Prefix.pch: 1"; + fRef = 94B6034412F74DF0005AA5EB /* NSAppleScript.h */; + name = "NSAppleScript.h: 19"; + rLen = 0; + rLoc = 1243; + rType = 0; + vrLen = 3140; + vrLoc = 0; + }; + 94B6034412F74DF0005AA5EB /* NSAppleScript.h */ = { + isa = PBXFileReference; + lastKnownFileType = sourcecode.c.h; + name = NSAppleScript.h; + path = /System/Library/Frameworks/Foundation.framework/Headers/NSAppleScript.h; + sourceTree = ""; + }; + 94BDA82C12EA0D5200553A21 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 089C165DFE840E0CC02AAC07 /* English */; + name = "InfoPlist.strings: 1"; rLen = 0; rLoc = 0; rType = 0; - vrLen = 151; + vrLen = 45; vrLoc = 0; }; - 94BDA8C712EA270000553A21 /* PlistBookmark */ = { + 94BDA82D12EA0D5200553A21 /* PlistBookmark */ = { isa = PlistBookmark; fRef = 8D1107310486CEB800E47090 /* SubnetCalc-Info.plist */; fallbackIsa = PBXBookmark; isK = 0; kPath = ( - LSApplicationCategoryType, ); - name = "/Users/mulot/Work/SubnetCalc 1.1/SubnetCalc-Info.plist"; - rLen = 0; - rLoc = 9223372036854775807; - }; - 94BDA8C812EA270000553A21 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 256AC3D90F4B6AC300CF3369 /* SubnetCalcAppDelegate.m */; - name = "SubnetCalcAppDelegate.m: 39"; + name = "/Users/mulot/Work/SubnetCalc/SubnetCalc-Info.plist"; rLen = 0; - rLoc = 983; - rType = 0; - vrLen = 1053; - vrLoc = 329; - }; - 94BDA8C912EA270000553A21 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 256AC3D80F4B6AC300CF3369 /* SubnetCalcAppDelegate.h */; - name = "SubnetCalcAppDelegate.h: 40"; - rLen = 0; - rLoc = 1257; - rType = 0; - vrLen = 1533; - vrLoc = 674; + rLoc = 9223372036854775808; }; - 94BDA8D512EA279400553A21 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 256AC3D80F4B6AC300CF3369 /* SubnetCalcAppDelegate.h */; - name = "SubnetCalcAppDelegate.h: 17"; - rLen = 38; - rLoc = 420; - rType = 0; - vrLen = 1559; - vrLoc = 145; + 94FCE6ED12E8E25500C26C7C /* PBXBookmark */ = { + isa = PBXBookmark; + fRef = 9494208112D3B11E00E2F57D /* SubnetCalc.icns */; }; } diff --git a/SubnetCalc.xcodeproj/project.pbxproj b/SubnetCalc.xcodeproj/project.pbxproj index 151115d..22b84ea 100644 --- a/SubnetCalc.xcodeproj/project.pbxproj +++ b/SubnetCalc.xcodeproj/project.pbxproj @@ -12,9 +12,11 @@ 8D11072B0486CEB800E47090 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 089C165CFE840E0CC02AAC07 /* InfoPlist.strings */; }; 8D11072D0486CEB800E47090 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 29B97316FDCFA39411CA2CEA /* main.m */; settings = {ATTRIBUTES = (); }; }; 8D11072F0486CEB800E47090 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */; }; + 94820D8212F9FE45002844C1 /* PrintView.m in Sources */ = {isa = PBXBuildFile; fileRef = 94820D8112F9FE45002844C1 /* PrintView.m */; }; 9494208212D3B11E00E2F57D /* SubnetCalc.icns in Resources */ = {isa = PBXBuildFile; fileRef = 9494208112D3B11E00E2F57D /* SubnetCalc.icns */; }; 949420B812D3C62A00E2F57D /* License.txt in Resources */ = {isa = PBXBuildFile; fileRef = 949420B712D3C62A00E2F57D /* License.txt */; }; 949420BD12D3C64500E2F57D /* IPSubnetCalc.m in Sources */ = {isa = PBXBuildFile; fileRef = 949420BA12D3C64500E2F57D /* IPSubnetCalc.m */; }; + 94B6031212F74DC7005AA5EB /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 94B6031112F74DC7005AA5EB /* CoreFoundation.framework */; }; /* End PBXBuildFile section */ /* Begin PBXFileReference section */ @@ -30,10 +32,14 @@ 29B97325FDCFA39411CA2CEA /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = /System/Library/Frameworks/Foundation.framework; sourceTree = ""; }; 8D1107310486CEB800E47090 /* SubnetCalc-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "SubnetCalc-Info.plist"; sourceTree = ""; }; 8D1107320486CEB800E47090 /* SubnetCalc.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = SubnetCalc.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 94820D8012F9FE44002844C1 /* PrintView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PrintView.h; sourceTree = ""; }; + 94820D8112F9FE45002844C1 /* PrintView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PrintView.m; sourceTree = ""; }; 9494208112D3B11E00E2F57D /* SubnetCalc.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; path = SubnetCalc.icns; sourceTree = ""; }; 949420B712D3C62A00E2F57D /* License.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = License.txt; sourceTree = ""; }; 949420B912D3C64500E2F57D /* IPSubnetCalc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IPSubnetCalc.h; sourceTree = ""; }; 949420BA12D3C64500E2F57D /* IPSubnetCalc.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IPSubnetCalc.m; sourceTree = ""; }; + 94B6031112F74DC7005AA5EB /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreFoundation.framework; path = System/Library/Frameworks/CoreFoundation.framework; sourceTree = SDKROOT; }; + 94D8C5731520F99500B27A3A /* SubnetCalc.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = SubnetCalc.entitlements; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -42,6 +48,7 @@ buildActionMask = 2147483647; files = ( 8D11072F0486CEB800E47090 /* Cocoa.framework in Frameworks */, + 94B6031212F74DC7005AA5EB /* CoreFoundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -55,6 +62,8 @@ 949420B912D3C64500E2F57D /* IPSubnetCalc.h */, 256AC3D80F4B6AC300CF3369 /* SubnetCalcAppDelegate.h */, 256AC3D90F4B6AC300CF3369 /* SubnetCalcAppDelegate.m */, + 94820D8012F9FE44002844C1 /* PrintView.h */, + 94820D8112F9FE45002844C1 /* PrintView.m */, ); name = Classes; sourceTree = ""; @@ -73,6 +82,7 @@ 29B97324FDCFA39411CA2CEA /* AppKit.framework */, 13E42FB307B3F0F600E4EEF1 /* CoreData.framework */, 29B97325FDCFA39411CA2CEA /* Foundation.framework */, + 94B6031112F74DC7005AA5EB /* CoreFoundation.framework */, ); name = "Other Frameworks"; sourceTree = ""; @@ -88,6 +98,7 @@ 29B97314FDCFA39411CA2CEA /* SubnetCalc */ = { isa = PBXGroup; children = ( + 94D8C5731520F99500B27A3A /* SubnetCalc.entitlements */, 080E96DDFE201D6D7F000001 /* Classes */, 29B97315FDCFA39411CA2CEA /* Other Sources */, 29B97317FDCFA39411CA2CEA /* Resources */, @@ -153,6 +164,9 @@ /* Begin PBXProject section */ 29B97313FDCFA39411CA2CEA /* Project object */ = { isa = PBXProject; + attributes = { + LastUpgradeCheck = 0500; + }; buildConfigurationList = C01FCF4E08A954540054247B /* Build configuration list for PBXProject "SubnetCalc" */; compatibilityVersion = "Xcode 3.2"; developmentRegion = English; @@ -194,6 +208,7 @@ 8D11072D0486CEB800E47090 /* main.m in Sources */, 256AC3DA0F4B6AC300CF3369 /* SubnetCalcAppDelegate.m in Sources */, 949420BD12D3C64500E2F57D /* IPSubnetCalc.m in Sources */, + 94820D8212F9FE45002844C1 /* PrintView.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -223,9 +238,9 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; + COMBINE_HIDPI_IMAGES = YES; COPY_PHASE_STRIP = NO; GCC_DYNAMIC_NO_PIC = NO; - GCC_ENABLE_FIX_AND_CONTINUE = YES; GCC_MODEL_TUNING = G5; GCC_OPTIMIZATION_LEVEL = 0; GCC_PRECOMPILE_PREFIX_HEADER = YES; @@ -240,6 +255,7 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; + COMBINE_HIDPI_IMAGES = YES; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; GCC_MODEL_TUNING = G5; GCC_PRECOMPILE_PREFIX_HEADER = YES; @@ -253,30 +269,31 @@ C01FCF4F08A954540054247B /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { - ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; - CODE_SIGN_IDENTITY = "3rd Party Mac Developer Application: Julien Mulot"; + CODE_SIGN_ENTITLEMENTS = ""; + "CODE_SIGN_ENTITLEMENTS[sdk=*]" = ""; + CODE_SIGN_IDENTITY = "3rd Party Mac Developer Application: Julien Mulot (VNLK894MAE)"; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; GCC_C_LANGUAGE_STANDARD = gnu99; GCC_OPTIMIZATION_LEVEL = 0; GCC_WARN_ABOUT_RETURN_TYPE = YES; GCC_WARN_UNUSED_VARIABLE = YES; ONLY_ACTIVE_ARCH = YES; - PREBINDING = NO; - SDKROOT = macosx10.6; + PROVISIONING_PROFILE = "90168316-07AC-4F70-87FE-80A1E20EEB65"; + SDKROOT = macosx; }; name = Debug; }; C01FCF5008A954540054247B /* Release */ = { isa = XCBuildConfiguration; buildSettings = { - ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; - CODE_SIGN_IDENTITY = "3rd Party Mac Developer Application: Julien Mulot"; + CODE_SIGN_ENTITLEMENTS = ""; + CODE_SIGN_IDENTITY = "3rd Party Mac Developer Application: Julien Mulot (VNLK894MAE)"; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; GCC_C_LANGUAGE_STANDARD = gnu99; GCC_WARN_ABOUT_RETURN_TYPE = YES; GCC_WARN_UNUSED_VARIABLE = YES; - PREBINDING = NO; - SDKROOT = macosx10.6; + PROVISIONING_PROFILE = "90168316-07AC-4F70-87FE-80A1E20EEB65"; + SDKROOT = macosx; VALID_ARCHS = "i386 x86_64"; }; name = Release; @@ -291,7 +308,7 @@ C01FCF4C08A954540054247B /* Release */, ); defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; + defaultConfigurationName = Debug; }; C01FCF4E08A954540054247B /* Build configuration list for PBXProject "SubnetCalc" */ = { isa = XCConfigurationList; @@ -300,7 +317,7 @@ C01FCF5008A954540054247B /* Release */, ); defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; + defaultConfigurationName = Debug; }; /* End XCConfigurationList section */ }; diff --git a/SubnetCalc.xcodeproj/project.xcworkspace/xcuserdata/mulot.xcuserdatad/UserInterfaceState.xcuserstate b/SubnetCalc.xcodeproj/project.xcworkspace/xcuserdata/mulot.xcuserdatad/UserInterfaceState.xcuserstate index 2d5d3475722f8fd80c1ead451f124668ebe9bd1d..ee739e47cf304a24b5d3c45cf5fc7f2a0f12316b 100644 GIT binary patch literal 48572 zcmeFa2Vhji_b7bt%?NoO*cOlBZ+I&%hdCUZ73ni<1PVx}?EnPO%pGmDwc z%wx)#D&}0Kj#X`%umd3%toZ|O!iDRhs|Y&vLo3-b}~DiEn)raJhq&zVi&NB*bCST*^Ai~>?(FGyPn<1 zZe|MCjmOak?iWr2EjC9lvbwCN| z6x0I^K*=ZtWuQ!SCOQk{qC8Z9MxoK{7&Hb=K-184RE%b!*=P=`K-Fj=T7(uOf-XVJ z(MohVx(2OB*P`pt26Q9ZjJBZL(Cz3BbSJtO-G}y|2hl_5ar6>;868B2&|&lrdKbNi z-bWv!&(P=SXY>pD75#>OM}MF{(O;Oy0v54`b!^}$oPslOCO#9Ng|l%E9)gGB;dlfd zgU8|tcp{#Pr{QyOG4|tGcrKoYD{&RB#dVnAi}1yG8NLKBXFK7`@CtklUXQQE*WnF# zBfcKrfVblvcqhIO@5cAz$MF;R0Dclbg`dXH;8*c$_;vgS{um#{pWsjNar^`R5&wjL z#=qcSIe`;7iIcewTr?NM#d2|6JeR`xYM{aE}hHZGPyi1pBusr<;HR2xe44% zu7oS){M@3bPiu;=Tj{Bbbh5MEJjc0kpV_xPJ-r_xc3?IvP z=1<{!@O}AyypK=jGx>r1U_O`6|afAW6`jKB&=z=A9&f+cu_1fiqQN$4ze z6;gy$Ax%gZGK5TFpm4fyhA>np5Y86H3FC#SLXmKeP%6w8<_PnIa-m8%SEv&f3+D+- zgbRg>g=NBe;acH3VS}(yxL&wHxKY?4>=bShcCn*{TZOxYdxSm0USYrRl<>6hjPR`R zoN!opMR-*>BD^hpAbc)-A$%zu7k&_a6n+=}5HY(_Ze-@-%t6JVP#(=g3v^xpK8!Bd?HG%9qPm$gAYl@)~)qyiUGSzDiy% zZ;)@0Z;~72?ecB%ee!PkVR^s&l>D^(zWjmwq5P5jv3ykiME+F%O#WQ{T0SoSApa)+ zt_X^vbX0mPeU#IbzDkmkt_)PpR0bDqEDT%B{+6%I(Sn${uB}vQOEsJgz*YJgpp3UQ<3(K3Bd_ zzEr+azE-|bzEzGXe<**dNEKB{wN#H9rN*jpYP_1Dc2v8lr>eRNT3dX0LkdZ&7qdY`&m-K*|X_p6VqPpHqU zFQ_l7FR3r9Z>VpoZ>dMrkJOLVqw3e{H|n?Q&+0Gguj+3a);NvV1kKP)&C+7EI4xdF z(7I{ewH{het-m%vOVpCIOl_ccx^{+krZz+ysugHwYh$#j+B9vtHbX1Y&e4jsd0M$P zU#rj-X^XYEJ=(q6ecEpAe(eEmkG5Car#+}W zq&=)Xp}nOY(?wmPfm!Pu5fP4E-#9ke;XK z>!bBC`dGbCpQxAVbM<+8xjtX7&@1&S{ak&iet~|WZtKhSOZ8RyT78{{=WW!{-OSn{;~dz z{;hsY|4#o||I=U%WblSy$cADVhG|%a$LL_h8SzFx!)x?61{jIP8Ai5|V-y%?8>5Vg z#w6n$qu7{jlpD21ow3xoz*uIiG%h#R8S9Nr#!bdHW4m#Oai?*YvB%hJJYhU-yk#6Q zJ~ciwJ~zHFju}52zZt(9f0?2wnX;*vmgzC0%xE*lOfWl|J2cz}#m( zY(8l|Wxik@G+#I0Ha|9xnqQmWSlHq$-V!X)k}TO$EY<2{b+%5ix>%=LU9E0bcdM6` zW93?TR=zdF8fq0-XIsOp;noOiq&3PKYmK)iSW~R&R*_X~EwmO{i>>plCD!@YQtJZi zLd&*@wamKIT4}Aa)>=1MH(Hylo2<>&&DJ*S7VA!Hw{^eukoBItWRL0T;7RbD>gna_>q+&bdD1-@p0hlI zJUO0R&)J^Qo=Kj`o?_2T&s@(uPx<)n6?Nt1hZvbr7?sf&lZl!*vatU=|Kge{@OMD_ zo6xEXD)U7GF)+RYg|&g511`mDTfVs)|eexs@e#^ZgaIMOJrT zdTMrBPHvJnH9aTMo06K6lGp8_Jm{XaqHg5~IXiK(iE4FHDwr(4?XboHAPl@ zu76f>U3uVLVQq1(zb3!3n!cQtRZZ+(#nMZx>E$`{Ay@fSazO203C4Y!XH~#k?XIiEvqQ51vR|LN*rEX zQ=3yczpC6{>n|Nmwey-0zD7%9lW5?MEb|?E3`&7G|-NWv6h#3ZCHk=v3 zjATYpLYoOQp9+6h`^#aa3;Z@?x3}9BS=qD7%KZZe3@EQGDK4K=SyMY;d<`sm!2G)M z%Gv>x*aj5V&8+a(<`kEgg#FlmQAuT~zpA=&?tp{LSf-E}$BduiQf~#IdXoF2zh?Z% zLfFj)W&$(O{c+OB!copuCwz)io#{juS-Jn=bO6!0{&N3pz*qk{;gHX9AjkeYkmrX( zc2O8#WS#zx=3Fqk37?Tuo$E}s<9`J(VuqCtz|KY1kbgA8yo%XyU7gdv+}Yg`#bp&E z{1tWm7nRKnUw*9vyi1Xlx5(?zg15A+26&f${><{lKu|Tc#U=BKX3=vu2mqD%YibH| z&rC}9CHJhI15{p0f9vVIr$2>*UhIJG`Y(Y_3kQ9H1G;;WmHdxTG9Qr8KLWQGJAir? zS^59U@>AVIw4Awg#>m1Eb+yGa%l%o^)y0b&ndQu7%tScC&aXi(zLL3$N!-p{&RoH) zVpcP2n6=D0=1RMdeVX0Z?q_@L{`LSH8eGj>!>nhnWv*j3FdLcc?Ie4Zz0H2meuJ=s z2s@Ur=Ti>dYZ5)o{Xx16E354v$*B7eubdrZu0>WHv>8)ZRx)pRW#v4#VW9orKp9Of zAZ~{u%NH?TPGw1DaRG4k+0_mcZax9$eUa5OqEoX;7FO0(m-usF6-8Fs$u*=*zPP%q zrm`Y9tpO+M=rV7Abp$%n-5$>WlSczH1QSkST@{rJ%~ui8Cb*3^Gxsuyw=vt8?aU5l zCvyw4i@BA#jk%qe&!M8QRXpwq&?Z5Vb8Q@+w<*n?K*q0z0@Z5GJCnb(w-E4 zCZ2LgIT^MkNXq4vv*841`|?v$vJ&&X$@%#?-jwXjL~mwhVw%_I%TCVC&Pq*8%Z)f& z&pU8ZTfoW7$xF;m&dBxVr{q)ZBq!CInVLf(req|g=A~z)=j4aa=b!^8y#<`K?3~QJ z{FEebT3#-|$;iv~W~QX(d$TjMeVOTbsrhNync;9=bKqpQfRmq-oa4*#rNBb+lK@U? zx;HC3CDEJb%TLcqO-jy6P0tO7bHssjdJ8yNS?TFXxk*Xhtc>JrZ%SHziZ?SiGu@k( zoa@WT$ji*j&H$~eNe;j7z&W!eoa~J3)a>MBZ*E4853m9#&dg8B@#f^DrR4iE@)Pqi zvcusVb>IwY1x|WyPI^wRHzzAG#ha3pk?hUL%}a$}v(obOvy!s2(jwq|;lRmi0Vgdl zGdU?0;P_zUK!*f819~#NiD{{ssp(mH`M&Iw@cDe}z{zO=Co?}kHzzC8=S@#Z%JinB z^G56d}lhP8l`nvtK9 zo0tmg%7QIVNzHng!)?gCrS=}C0&zkmV%KYOBL2)VpJu}GVhl46emEjsk@nqYv z9qQTk_85EOD~!s(}d#kI={tQj6FU$k#X#V&_pKM zMfN0@Y^Kn`rrPJUHrPRSraM@=T^uo36VzGk913-|T~g1M*`+75y!mv*3fte>h_A7A z?ueQ8tTskm%r2oLo@dXg2d${=WJa{qH-u4-dtjqKJC)SK<Q1|+HK<3~J6))Q?AkV<-plR|LA~Ez5QMsyLfvOCYz^uc>|-v}EPGKKP@iO<4ncj! zJ}(IMc?$Ifdr50hzhz%>q2}1>m`2LwJAMmju8dmhG_Fo)~C^ zI3xsDfJFP!U?T;_LaKdPD`T-7igH&l%wEy@3Q#nP4Xyyi*_Q{QcBD`{*;lj%RSvFT zL}&%5CpwKuY(%|KZ`8+LZLhVjY(#xgKjgKqwr{W-BGgUfbHv!1B5PUT3Kn5;7+yBB z8aUs8T>k=pd1aNq+EvQo_iC_Olu`yBW`*$1oV}=Y_S}+^S^l{t3(lQAdk$PaXV(;$ z6fdrxJ0QERth{spsO6<~;8_I_V5SM{+`qW0YCxEvM(NJX))iT2wKlWnwvdy$CZjVP zm{&DjI3rfu9A=nlpsb{#Cb;>7P!?W7A-5on|V&uB|J{4kEo*nx@w3w|TIPsL zG!_+tJuv(t+FZysqH$6UeG*UVRV?}Xrl%h0?Kk(Aqw!LwXRCsk!{iJVj|s&giFv%Qs0 z>WmZa_uo({-JWC1Zuq%6IFs|xQYNthEkWno+wGkV=mK=1z01BQk_{|#4#tiqYuCvh z3^2x))s}-%7;L2Br+0+|@RlMg^JGqM(@FCdRLrXE??h+>7jOkyOZnLL6kZ?$i; zZ*OG(L|3A#fIHt|-$`kqGtghr=-~y0=B7TR|AnOO_<|>yo&%Uza6Gi9Yx-$(NG8bg83Yp^fN< zdUU;gmwmVU`zEGfv)#)*BK4>Nl*WJ^snB2Bi0VDB_$;;T^d~N!{`xuJbK$}>(Qh3LzEaDUkrKz zJ;Nk!K?l&2=qdEH{jj~?e#Cxs3vBpv=xOuZ<({%KQtdx1zeTyxb4o0FQgo0@WTw(t@&5`YgI2JEyo} zL2*rF!^d)9amX3oN5TcPOt&p zUAIEP2?2B)^sO_0X3CP3#Poh$(o!;m6oMIyfI={9AF9XLK5S1aOifFkyd*iLUl(6m zhI{I;#CB-FGFI$Y?bqyyV||&0$?0Icb`Xb6Y(*drx5MCUyWKKzd)xs>GedDKj>GXd z0e8fmaA$l9?!x5buJ)Vu5&Io*+q`FgV1HyEwLi5#x4*Q%w!Z~;&UdtXciaQ_#JzBD z+y|eA`{I7si~HjNI1wjdpMBi^gRnedCBmwNjUsF`VdDvVDq(vN)=St#!ln>5gRrMZ zuwd-!J8%7C798$u2{(#kSJ`>{zcY#_hnxc8Rur7&u=jV1tkX`0y|*yf<9w(8`~T3X zkdmC7)SAB{Vrs)2&>t3A15RdYqpN}5>7k5pDB#f!kdMK-b232M^djN$4xCSltelg9 z6RE^fN$42r``6UMEN6$yS3Jc5{Mmmp!3ZKLa^QUNkL7gH=xYD0vPJ!?O2Qp{xYPmn z)j!`=2zhWIrd*2vIu}R4#4kEa#q93!1rF`?_awpDEILK42F&^ zcp+Yd7vuBnAM79PpX{Hv;PdfP#)~hsf3bfB@BQyoxWodn&WGz*P{AJ8Wb5nR?A3&_ znldV^=M+~1clTG1Ev}gDpFR}CTvmB`K}}7aA9!?+W}Skj$H-owP=4Oy_DSdOp1ve0 zH7PNpUzcQGa{5wf%95nCjKox`5d}H!O1y@y<#K!lUWHfNf7*W$mLV*=1+T^HU^Q0} z77-THSOo5WbU_Ofk{-KOHT7Go!}~V!DZYCkshrtqY-a$mmv^V3@iiivoPbn z+U4&#;Cx{s>=t}S8*uK#ce!w6!Ybi#ZW&+Of7+5vUusgnE-Aj$v=C|^zz|=YJl#)mb-m`{;TH8yTr7p%pxfUupvzFXMwS|HFiB zN5HfV#L>Z?M6v3-_`nadCeyu1N=?pKI%!F|50r!^a(ffM+Xlq<@cRJqL&C-oHkLw+ zb0H48{_9DDT!>Wd5I5#%fi=Nz>RDJIj=f*lfb)G;#~MMciV-<`OoKfOiF?=E+GpxUn>ohOLUw69{40&csaT z)C3qzYT{C$pQ`u!c^Qio1+k0YZ_mLkU}8PjYwE zm+V6L=DNF=h(QRexhq?Ta5Z<017R3phX)}fWn?&W_~xpuKg0wfY~*gD+gJyfyOFB_ ztU0(F2}s<+ZRYA>8yg8bim;>UHjc3;MXC+Xk`e~=etp`Kq@-jJQ%RX1rYPa1N3e{Y z90XJBcaylxW}nRM%ZyJ zJhR}K%}>iuPxt!rGxNbCp9M~9IMLqR{JhNk4DgL-=7f8$xu;z~6IuYufG~jE9BE+C-AW-%RUxvAi1&d&4ZCDRyz%*-_K z6=$V*^U`y{eVv}4o0t><=#UF&N((?a;Jwa(fD3PSK1?PhEs_3|2Qd}!drDGLN?uB0 z1fbVlK+{?PO3CzPBxNLKc~gCf>E4vQ+zf9v%+Z^hmywc`l9id5o1PcGw6|SAGg<%w zZ+cQ5=rP{ploUXA2E>SD_;QoIc@QU%ljzI!<>cpt1Ny)PbWRIE$;p|iiMd(%-qe)j zJlHjeH^_iRdDC)I(v$Nt(~~mN!{ZjXPh3DVTL4PSO!s9b0gfPU1p*hcveRK{Nf0uS zljQT|q-CV%XNCuwa9_HBN?QO*0&4N4q-1-u(`fhn%p`9HrH1^pw6r9MILLyjg)i-x z3usmgK>3-OnMuh&f%$1ESpX;lke!%8Lwa)ak`i-r(-UdPiet>+j&nbPIfVOxuyg9U zp9pwift)($W)BHOtAb114V)@0p%yMj-*<%|7)ydce&_zAK>i@?ym}6F^YW7h(j=sK zj;Fpa7YHvB@bOM^2g(R(A-u}#O>ID5s0y|TgA>KKZ)($lu;2-G;e@q`;}e?NfFf2K zY}2$Tz6%c$J%AZ{!+@JbV7+`#zIRjiK7?J^N_Q_mps5YmW)=tAgiRxbPitzEPS_>E zHeu5^oj()W@F4z{*7Ii(_QD9R#OJs~aKS&mXorRN2A7r34+93y58;RM1w2Sao3Mni z7ZLX2E&OnP1V54o?!An#mk@RxVK>rE_C^G}xs(DocnFNHs|iHPxes$_#Cws|yOs9+ zYn-sY;Sf65zXmMywF|&(Qe^dOrD^ac8N8_mqci|=-&UFzMLeT+4|g(PPi^B(5ET=7 z>KEcC5q5b!KZUU1iUrdyM0ym`2~xXGL9Ktj8#}|#UVJ|1_6%gn@9iTPYmLUKGey4y(6wj_GtF5Ckj;A(ZCSu&C zZruj^2Q&1K8)I??U)exoNrE#tm#=L$gE}6B+Zw{Ig&Bg>z%K#wJbyl6 zuLLg=f1&G6S^{wmlO_fTVuHH~Q<|JJZSRM(EdEOVDhTzD*s|sn(8yoSUqhXN zCvJ8^Zy;B%eJ|fo1-(Opm|eP54iMdsGlK|xjDG<%LjH073H|{8B>xouH2)0$ zEdLz;JYjDk>@LFIO4!>7dplw8Ancul1r*;+*n4*JFERs|e*8iH5bV|~faTYCK>EEj zp=BdMJqhYZcMy%HNJpSg-sJASOTJlv5;(N5pu#zo3r9jO2&5&@bdcz*8k$W~9L$BO z8D6}&vJQM7UT905tWI7}#IncNmH}5;OhJauxeGf4*By=qsnN_0$a(=+P$>WzUOdxZ z4$QJm*pT;9HoKw~&~)1Fz-9iL8PFe~>k4ICG0-JK1kSyb}(N47{xJQ`3L?-{wMxts{4c5 z4HyO-v!4)T5#%8dmID0MqEm7X$ZUUg(}G=mkDyWCKpz#Q#nq+s5Yom0P7>C_YCplv zwRfKZkD2d;i?@Rwfm|VH1Q&dlz@w%NAV~MA_Sb;R$_HiAajN9zSpZ632HjiXr^!S_)@ zG!xY*v=iD3pwv80*e3{kpizin`U!D_eUf7HV}~X5i5S*7QH4OA6|}1(kP<={!afxWTN1hneVN2Kh>5n`C{2ThS5kLa_k1DjLMo zw7ITy4Fv9%RW}GF!9brj+qmQVg&Bl>3kIF&Xq^5U_i-70{5Cue7uYmhij5KG3l+== z!oEu&NRauLQpnteRSR&&T8j^E5NhdqT6^X8Tp)l3+`IXp6x>O-2O;Gx znL}MS!1K%9kOHco4?OAoo3MMRFyFm`yz9~ijg}SQ+Hll{8HGh__!3hb8J^M5%%kC!fIiSuvSiYIWCI*PrpNoa(Nl5mr-S*RC4TlIzhNzc#|N< zTiC|6PI!l|?p@(Mf_Q?Yrqz8Y9F4qG37-g`5+o1=l7Cf*2wTkiE8*K_{f-IW5hN3& zK))t>YccDegkR{aeh?1W!%9@E1Wwy~q+|(j7bjjRkNc@*?OkVevqsEUEy= zy#tFHfjDC~=wCDeF`^}c+SZPs=n!JW_F_!r0>xM{j-d7gfyT0GG8{8kmUkPxa&Y*z zh@Hh#n|16eb|WZ;pjhY#=^??R8_)~84PNZ@XAXEoQJ|CP59S^3rO5#RSMP1f6ke2?bqIOOGEM-O_;QZi{VCt*kB!YMOMct^{=_ zC?QM}5C@8Vh%x_2r?X=qCuj^o-RO+F+hBMA(}6e{xW4EGbio7|NE8>Ri(tE@*S(Mq z5pm;*+@J=rh{~^%ZSIaxEP~cRud9DILWAfi4=2+!cozKPY)}rAiMKG*ssSVG~QyLkk1Y3bFj|QSD^ol zswiJflfmIFROOiMuw)t^+8#U)zryOvR z6jwp@5NaGgnXUd@{IUuCUl9cNkkDRzD?-$5_+A|se{5y=dT!9R_>78h~nyb{$S36)JGa{LR+hp$PAEtj3EJsn(mnWW`L~~6*+^q zX_9m;l6x;N3s9kyDdmDiQW_|oE}bErDV-$^k_Jmz{BshVmvaazCTJ!>B?Ofc82UX{c1dZg7kDnZZNlfq4P?*7p8 z6(U@?9{k^EkBp>~AYP|P5GYbF!NTX(OVbIOcY@1_R1Bh8nkfOA%L%GzBJo*LStN<` zb<#XX_RfcG?lyRp9YKtLw7v`D&;NxWHFES)DVm(G`#N*54x zE30g$ZVuH>iXbC~* z6SQ=jw4MrgX#@Osy>tUX7r4UxLdt?KB4}AFEcpL*!rce4Z$V$Vv`yLpOkCPdkXp9hP39+f5Dr@XrA0i1fDf4%H2=BIsJW^VIB5P1UgcO#}feYjjlxsy~GY zH$-({aKCMmeA|a?C5Z=dO}T0q4y)``75klOe=lSJ4fh6sG}Q75lnb-EmNUZ1+yza zU(A6*Uhah`^rESIz(O>(a-m}&rG|WZVB2mPv>n$t^3n0Hb#JvpNPihpU0GKJaH&!g zf=d@nueJxJuNhVPM*0@2e7QS95FG#Y2jS^=()ZHw$xyGM#_^95bj@hzx+eW7{p8en z2&St!uN&d<&&q^Q>i-$lh zjZ**k0%!elj2s()-5|#>6A#Pr06anND0h-OL%D|0P)abkqp%DoBqyh`uA&x3bPH-& zpxWK!!s;TQ3e6olfuz6&xhpdi@-3|0M=HA6%wEyBJc2bIfTq|DyPGPxD zULY@&7s-p|^W-J+`SMbN?jvY7LH85%06}mG-Am9uf*vG@I)!ChCh|q__cHks`2VGJ zD?vQ%C+HFSWCd7`rNrv*(=!VUK z^j7)Wu%9;uQhdR#Cf^wLe6#a&kV+b5TJFQuh2@(GIuN+u$vfbFC-0PRk#`aFBtcIT z^lV7^m2a2tiqvK$Lk67_Nct(DvgVgL`F?qCv*xif>>*s{z_Sa@Bd>4rBQmx7hXp)I zUF8GL^$lFWEulXnzXI1J`C0in`FZ&T`9=P7`DOW_d`Lb_5ZD)9BqSfe&*4KYyoo2l6*8{!-z*1fx7PFp40aoVEK-3=U0H*f?&U!TBf8}hX%W0bKiM8U!J?s0;CLz*C^j4=*H5Mpf_@EfVr3avAe2j#D)$06*-aqLej~vetOYK1 zF1HNCOgYz;e=~SVd5|fnR~{l*ZQ6}Tlt%;FEcIk5PtX{bq!K+ zQbKom0O}Z?|XbUjO!<4vQA=qkSlCLZ80h3hTP~KGDQjREZEAJ@p z66_&3ir{txwK2SbXK2knbjxtbzJC@)$f=?y58^PTP?qP#-_W!i7 zshE<=`Ly~{x!;X7?_cGXP7M;$cgjz|%UcaMSAOP4D8E9uIR=4n3Bd^vZtl=WTXEYi z8~Y1TtOCt<3=3dZvC7c^W`a8t+==p%4X(X*UtX}Njw-7f4cTo9TUK?|Aovu5yF^?E z+Ky9hg}13OVZ04@4e>V63Ysn$O;Px5KK@Uu&pIekJ5iLt%6qlW*~7_M?W#h7F9^p` zyQ@9ao-`as1@Gmj1ot8MG=jl3>4f9pe%sW(BCC4U{^|fVQB5M4-Z%*EPjDi^X#}4^ z@R@+Pe-MS!BF09|P$BQ(q+@IXG^OUM`M`_SJc0-OeW-*wOdSEOT^(8-NpMntbE{*3 zbE{+3LV|q+r-XQgIzgQbtT-aDMV(3mTX3?&iX$Uc)FO3ev*s_WVDkqGO?8_`M5m~8 z)VVMnH#$X~N1$?t>#|WR=yWPosJWj(@W7_&)Tj$0C4=yZx`;-i;7kYpS}t6WsOPH} zHfw%N1$iYCe7e)TIzsNKm#E-%jtDymV)=3v;JD|M3ex9nf`M7UeoY{FGQracE+)8?;5h_CGE$i0qu${tJ~;bdDT*Hs z_+A%qZp(D6oPSh_Sl#0S%K!JOh=olPjiAu&>%tzXkGTUv4cvdJFuxNeryfwB269uM zRG%Vv7{S9E)MwOZ2_8W(__S7yUr37)O_<}SVRqdHU$oyL)zA+?Qah-=LV+BjKt?-2 zUR7TscnrZ~LqI~E;0G&$;@?)^Yc_@V)ei_BNAP%u;@cYa6ZP|E{k~AYBzPjhlTO(0 zn0lP{`;N|biZk0E)E^0+O7OI>*=}*>$aEWg^`{ZD{ayWw_WpzRoPm7|X`khfbXrObD^cBM{otf)Vb!8NcisV zj~LshrGnVjlC>0q&n39JK}*xp39ca+^7&i?4iuP#(kMY|sT=F*K68SyY9X2gYIs3F zN$G;xQm3uAoPHz23%W}ccpRz+I=|9SW=vR=kyexj8JG@rYiDWM5DTFV(gth5q81Rm zkl;m)T8@^h0jpX}@RbB#MW>Mnm;K0(iO{eJ`0xlsMHJS}r-fHsBYL5Kwo~rTwRuH$ z33)20i6ZjVI9eyqVX@jUreKRUTpOW{)PNhFM=&Ay5`tHRSgtl!gEGF2TA?;h8&B{O zg3l*-X`?n#o1_8Tynx^f3AX91d$t%SVv>;44#8`+f%Kxt2}Lx_hA@yqKZM7*$uZP% zbAr}xSH}_7ZLqV~3^S(7c&Ef?5b-lLFoCvQ!fb7h1_XE!!Jz7aTd~_!bnM=vZ&FHn;FCeJqH4Mka)bmv5ftI2fKLT!HlAEqS5o5lm-A{}8diQDVYcN6QMeoyKJ%P`_^z$nH2PDD_CeDG%Zm=$ACWZ79N7;!C z)caNdoG&>z#RlJL@Ox?+Gz?{|EN)1p4>K}b_3ktbJgwE|j?)QTUhqYqz$Z6fKJ%<` zG)UBD8Hw@0*O9t`$I=HM+0277{$rV`@JY=|_>^W1QwN{XTn^ve*udPtY+^Pujm%c~ zh{F!%4)_|wBg|9G%kc5c_nD8Fqwv|xzgUhn*;w`zwkz8gK8-n$9m1Z?4tG9_IhCCO zpT(?VYv6;J^h20i+1>0O_F!|^2;6tPt|Ys-Z-+GW}b2$Ww#@M;<$kKqT%)P+d-e@8a&b2+5}Z8QVTqR11re5|>Bbz6s)kaL{?gWi zSp%*Iw^KnyK73>h5&-=E3fKR976sU9W?@lYazR^Q{Wp9w7Nv9 zFNc24A}KEoW<)(L0pvAHQ-#9KZ7&x-5CX+B@}Y)8RvJ`wfKMYpH3e9BVm^F41ky-z z5;N0bXWB|Gb;am@u=Hx%fG!$f>m3@{5VF~52Q(-*wFBb1PM30;V!Nb)1c9p#BD?00 zW|3X!oE=Uq#K^F)uB~7i0y;s@HxKG!o9c0DN3^3f;qn0FwLTw~*ZR1V&$T20YxH1CObvQ^f+fKN5 z2>0&)c;4*)`t(@cqjzEwZ_%Ulc6xiggC5O)uE*+edc2;XcO>{Wf^R4I4ubC_7#PPM zg6}5y9)j;B_&$Pn-=cTcPXQ_9c(nBHdJny)-b?RI@cjfo0PF=2>A1A;yM*Hj*NJf5 z2vjMeiQ?G+*X)j&($r-MLFbC_Ptk>(HsPC)Sa|nJg(%YpE(T9N{S0Abu=wL~B zh~S3_-ruMX2LcDP&?7+87?KD7*W0J{abT{~K{J0e#BlUU`Z-{g(*K7OCzm;U2iSp6~(7WxW(r4FjtL4pqx z{A$20sMB0jKs@`#jL1T+P7;oOC4Kt}yp70I)z{Ox-Km+d*KEMAY2UOqanvmXb1gO51QZWb(@CQfuPy#uiP~I!#L(zBYx56b} zzeV3g@OuQm-vDRsc6#7GpvSyJfYAg}w?gUs|LpkRqu)o5KQP-5>-F6Pf7I;w@6{is z$A6#xpblsMV}g$o{7Iv}AExps!Jkr*hX1!5|EDP8o+kLSrsMydewZHr=k*u#7xkC) zm-T}>oaN66{(|5y3DlCrUlaTd!QXDvU(sLHU(;XL-_YOG;jkYg_&b7sBpleAe<2)8 zIP`zd@jt4A1+GOIKK%>*OC6T{J;89h`2qHXR>wG?-J}U^br55|EB*=@XrMQO7QQ&L;MCkkH55Whz(5Nf_#oV#D+*8L%M4#huBcv zL;Tmja)>*4;fu4iS*4JKSW}Y)@u7A!!nb71G)iHLu5Zck6RtzRw`9zr(u}#yNZ&U&NuvjkP6Qi2? zmbe%Pexz^7SYRw}*8G^Ug!-1aIH!4}Z^^jOAapuEH>ETOR5jxggL<8e<%H{4A52$2 zfp00;?FwTxbaR6+j5UPo99$o`of?d*jH?NE3gJ#|THm$C#>feau?7U?0@ZbKCcHYs zF-HX9Z#Ej6HScO{r9l`RkT#(E+z7{mvBTH}Qq9;2QjP0QrJ8Z8aU0=!5UywQAdK+f z3gd1ABvpfP56CL67l^9{W4CcX;d&EpaCmS1J*g*AxWzbR95!AtUNv45l9+75^(9C4qJ@xjpN1-2FO4k;Zg{fO1R7bV~2&zaHig>b|!@Chy+k= zGA4$dFKHhbk(B%b+WdhEJK)6_>k(Q<@5(fJw3;1(?mxmAIv6wMcVea>ZsI*!&7>_Y z&%u!y3nXF25pGcH!7jeAVjX5D^VC*o&FsqbGrJQmi_+SdAg!6bKwOwWwb>y>#_Ve* zpCqjb{mfJ|%}l2ef#yIO5y<5b4*2S*Ktv!1pR^3_%b8{yrFYC6Gnet2`Gm_QTplGY zsKOH@t?Ld?TjEPkg%Cja`iE~R)Zs}@Pk~Q>MAYFihnph;Is*sndT4~sV2%Zy!7Mb# znd1ppK)ACBH|(V10nHhd@P@al9GEj5<$wbRsk3|khCg=xR4;t66N-l96iyfzCg9DP zj)3Pzx};D}cWgf4#Z&0Z*tb@h7)o{6d$2*LURj6=~lwQ*D)hTV@846=5Nn*GpHa{_`Z$3;hf#zR2%`2Sd_Dd1XzcrzF z%69XZ`JMT_dEETL{L%c${F!i7ggcjTu&XtMt0hqDn_ED*h1<S?vh7m~iJ2 zZVBPeC)`rPT|l@Cw^8FJ{YRd{{%IuuH>M^{=U>Q+xrA_z)0rlvxyTElgPJI5bpWVv z26g>t*#Ou5&`PtR@QE&(xd$z1-d!s#Lf#4&4$TZ~rB$GCnA;{ktj&B{8$x^8OM zZ_^w=uzZt41K_uz6(U0!D509MRu3o1BXDM{-WEhM?6Ue;r&)ciewNqjZw;^#tt885 zC0n4kTtv8w2?x9oFa?_NrG&eTa4QJ6l5m$3?h3-K+GV9#=~f1yIh1{A4YCGP&1f~@ z))H=AWcnp{72&S_k8&?*N==A@168X2|9nhHP7Tk;{IAn1tn3rO8y0oHd?G~PX!rdKAwhY&M zTS*c1rT9WtXzM8pbesn3Y3mun-AB0H|56%daN!57H>sRFWF59%v0k-avtGB}Alw6l zgGKHo94zud!aYQ|hqqa8Q5J5!1OL5ey-&FPPQ3(<=0$Q(5$?JFFVss2FNS1&X?+d! z)-!aWIZg8$GrVgEu!Nhn$Fd{%n;sMMn&&rTUu5WBqRZ*PtTgQ9N2`mL8pO zPdCldV|k)Nv-E&^1Rog<(1j=3L%+-|_+dWvo;boi+w`iVr!#$(2v^=9K?i$v^>l9< ztOwzq4;!qvr%%Lr^z`$<_k`T${=U(6GSpRzdaEjq(bsFF?bH!W)J$njo~`axy)q!*VgImz!NM^w{on@hG51m~&rRE>AG!ij^6W4bbZnN(&VGf2UT3<;T? zl|D+MlB%RDnaWwpU?oS%SEeh=ly#8rwM)4Ta=PwP?osYj?pO9G`;>>2{mP?|#q_rF zE@UcwtbD3`p?s|zQ@&SzP<~Q=Reo1v)D$&KJx8rpuY{=mBkGTurS*a^+9BFBZH9J^ zHd8CrWF*0@3l2$MEEM$~{{>uSI#HI!B!zb!OC{sH~`*sJy5lQ3X-MqDDlG ziW(DD7&Sg>VpMI^f~ZAN=S7_#bwQLJby3u^sO3?YMXijwB5HNi+Ndj|Zi=dpYK+<% z^=8y3QJ+P95%pEOuI&c2OKO+gF16jr?H+6QM7v+xi|yt1 zYJ0tXcKcE7$FwhOKfe9S_Sd%G(Ej@NH?}|6{@wQPxBsyH#~tE3^y<*3L*EYG4l_Gc zb~v{~O^3P;J3H*|@IZ&X9UkoPU5CG-*=QWiM-Pl15?v5IEP6!rMbT@buZ+Gr`r7CX z(bq@sj@}>rSo9OoPevb!J{tW?3?F00cw*Ycw2z67iH+$IlNmECW<<=Wm@zR^VrIt7 zikTC0Zp?)-%VSo>tdD7k*%otm%)XdcVvfZ85Ua+vkBy7%8k-S2D0X=4tb(?-5$F$_LkUNV{eb$7yDxD%dv-IUy1!7_T$)3Vn2`lGWP4( zpJIQF{XO>2xOQ~qXU7-C7sr>xm&VVEpA%mfzc7AT z{H5_L;;)Eb9lthyL;MZ#o8mXe-y6R>{(<;C@%!Q*ihnl#`S>^E-;RGb{)70B;*Z9E z6aQWO@%SGT)C4`jOt2E7651!6n$RsFF(El2H6bHmV8R&*c?m-k&Q2JfP@GVb;7^#9 zFehPd!oq~b3Cj~!BwU`bI$>?Xl?m4;Y)aUi(2%e@;emv`3HuTrO4y(9e8P(fM-tvm zct7Ezgrfe^*>U3JyB@8|RR z>HT>B2k-ae@p`_V2>>u434j2k12O(0|)>jKqH_Dpa(PqS^%wp zPQX&Y3czZ>TEGUtCcqZJZoodk0l*=^CBPNHHNfwH8-PK;Uw{{YSAaKwVZbNA7r`B=B zuuoxM!oG%&3?CgnHhg^eobY+!3&IzLSA>hhtHNdB)#01M_l6%1KN@~K{MYca;pf6H zgkK835nQ9h&2)GA~r;9ir5~pGh%nd z-iZAXgAt!10g=&>v61nSph!$4Ig%Dx8d(;}i{wWNBXyDXNM~e6TJ~2sJl_mqFzM3ih2_@9Q8ixd-RCtQPE?f$3;(wo)kSd zIwBeuEsSoD?v7p&y)}AU^p5D=(R-u!NBVYjl6VM8@106s=uot)txB_?^_!RgY_!9U!1`&gb!NlNViefY|mKa-%J;o7pE#_X# zgP2D#k7MV@M#uh$na3u?@?sUSs#taGlGuZ>r((~<{uX;aZbaPFxan~-<7UT^fttWgs7jC}R41qs7AG_%G$$AnObOP6wuH3_ zzaVfzXZPl4}(8|KPCnxPE4Gg z7@ioP2u_3~!V=RGa}x6tQHhvDd?F!HlGu^BEb&C*g~aQL4-%gzzD#_bIGp$)@mtb} zq|r%ZlO`lhN}8P%o|KS;NXknpOu{7LlZZ+5q>3a~5+{kDBur{fTA#E#X(;JY(#xa| zkdcr{kSUO9keQG~j9m=o3sbHltaKdcY70=65r4|WiC7e$rrsgqK3Q;Dg?sg%@`RC{Vqsz0?ib$RO5)VrzoQy->2PFs`~n--r2N=r%;rK!`F zq}8Qq()!a5r5#B-o;HwnD(y_#)3o8V@9>fEG4S#5N$@G~L^vE?2*<$ja3Y)xr^1== zD!3f3gsb7T@Orob?u2*3-Ec455ATJqh3|mxhVO$Pgdc_;zMO;S=B8Cu;5Kj=#5HAsL5X0#a>BMwh`j+$)=~vQ!PrsS|NBW=X zchldc|A!ob9E}`@oPeB*T!aikh9iN&ck+n!Y(u#B-{mA9WRmio-O~|dt zZOEO-UC5u2Cy=L+zah^f|3p4PK104lzD5oszhsQhn36F)V^+rej71qC8DSZ*8A%z) zjFJp?hCaibu`c6K#_5bR8D}%jWejEvW!%ZQpYbT;amM?M@0pV`XJpRKoR6BS(2=pEPa+c z%bVrT>dRV@wK{8E*2b(YS^Zf%vQB25$vT&HA?tG1wX7Rix3X?$-OYNC^(bpNdrWpn zHYuB*tz1nj_C?%rWQmAAvOS+3&8|Fa}lo2$S^*Zl7V;|pdL z%q>{(1F+33U>5KS3?k-=aJ*ok;AG+C!a0Qrg^)sYVR50h z&``LgaG>x-;itkcg&NzD_hV0BPhwAD&tR`(2eCugJJ|c!hu9a`x7hdCkJwMRvA9XNskj-qxwr*5 z04@|4hfBug;0kdV93EGUqvA?&CC=UXHKDH{qM{M!Xqs#dqS}crShhel>m_z8}8>zZ-uPe-3{U ze+7RH{{sIS{}%rq{}29q(a54PMdOO57a@ysiljx0i~L2)iw24=7hNm5QFN>5cF~=p zCq*xcUKb4)y(f$yj3rDUOeV}A%qGkuEF?q{AcRx`f{;PTB@__Q1RUXq=Z8>5kQ0;y zHKCTEC$tbu1S`Q#a1gc;E)eb$#}a1|BZ$$&SYiS(kq9NG5aC2L5l1W{5{YCYl~_tF zCo+gqVh6FGc!Kyh@iQrolt&_wD5Mfn8Hqt+lT;)fNl$7fwUAt-E>btChZGQ-DgLQ=d-1N~J;ejX&x^m3XOltXbaEy+hn!DFk+I}bGM!vT zt{{uaQgSs}MP5v>o5L*&Ecv*e59E9BqF zx5&52cgYXPAIRS*lPJ?EvnX>Zizp$Ka7q*B-WY^s)31dICL>4yC8i;dCUOK(C-P z=uA4BE~6{xHS{I)dU_+>O1IJ5=x0YWme_B3V{-yj|#fXZD6|*bmRm`sluYgq`D+($I6;&0g3P;7N zivEg26-O$LR}55~ueen4d&T{VM-@*ho>jc8cvJC_F`hAvF`p62h-D-&5*biN0fWGx zF@D687_|%|qn+VobTa&mwTw-S-HhXm0mdoDS;l$BCB}WmE5>Wa8^$o>3*#Ge9CHyf zf|*X4Wzrn2pS(%oWVl%yrC-%q`4*<{{=0=5gi#^Az(8 z^BVIW^C9yw^C|NM^A&46YYuBZYY{7i70!xe<*;&DL>8GvW6@a^EEY@3lCk701xw2^ zuv%FbRy)hZ>SQft{lq%Ydcpd{p3I)cp2?oWp3h#y4q=D0qu4QQBs-Ix!_H@;*cdjR zO=K6dsq7NAirvh1vp2B!vM;djv%hj?a^g8KP6{WDlf%j7j+I*x&3K>*jj7er_LkIrljC7WWZ%nERDCgBQ!o=23VY9+$`C33w{rVqP6j!)xN{ zdFy$*czbyVct7)w@{aRP@~-l3@ow|(@*eP>@?P*>@!s;@^S<(f_@nq^_%r$8{3w15 zKb{ZfL-;U$8Xv{S@{9N+K80VxFXJ=#EWY&rlimD!ej{JUxA5Ee4!(=u#qZ`X<8R^b z|OydZom{9E{3 z_)7Rj_*E1n8YLPlnjo4ank`x&0*FFI;i5zlOq3={7iEj`M1>-Zh%91@1V5nbDv?4| zBU&P=7a2rO(Nd8|htrP7M{UN$5dLeo%dN2AY`cL$|a%AP`%BhvJD#I#c zD&s4`m5@q!C9*QJGN&@XQdw!OTv55Pa!X}@<@U91!mjpAkQjjFe23#7a^n*^)d-p#&qrOK1|hq(Z`ya3unXPGXU?NgNWF zWQAn4WSwM#WV2+KRHvNs{g9KOGiq_NXJVjNvBGuOBYEa zrI}K+lqO|Kxl)0&Qd%Wd|FDnNNgJeEsZMH_I;EXbx6~u;k#3RhmmZQHksg;0NKZ;H zO0P+8NN-7pq<>3aO5aG|N&l68k$#hnkWG}$lL2I*vItp>EM5kdL1gJNv+s}LwE6*7fFQKML* zXjHT+916c;xnh-Ktzwg6t74mCr{a)eKyg`dT`{N_QruHKR6JHZRSYY>D90}0udsFwW?w`6(bzkbf z)d$s&svlcFp?-4x)cUx3L_MosQ-84j?}mvDMGcaMO$`GL=Nqmy+-SJfaJ%77!}Er3 znh~1OnsJ(mnkky;npv8;ngtq=CQ$>`q-fw8q$W#~t0~Z+HCRolrb;8%C^c$Lt)@Yv z)#x=X8k43+9d0K(CQd^~!Yn58Hc8Rt}yIuRM_Oftt1Q*cvC zQ%)11iP%JHA~&&{cum44ag(%3-qhW+s%dT0hNjI;KQ(P@+TC=#>2%X?O&6LjH{ERd zqv>|j-KGb+sXCx8TZhr%bwpjUj-`|9lsdJpR@b1@>h!u6U8l~i^XmM%KHUo4YTY{B z2HkGmG2I`!SNe(iSbd5ft*7Z(dahoeuhduR)%sd}gT7I((;M_{dbhq$zeB%UzfXTq ze^`H1|3?3*IjDJ5^VsGI&6ApEH_vNc*c{iK+??8sXwGfMH4~bPn;FfLW?8eMS=HR% ze7gBf^VjC@h7pF*hAD>WhFOL=hD1Y#A=gk~KpTn-L<8ACHOLHZ!%D*%!+OIe!&XDT zVVB{U;gsR5;k@CJ;fCRsVaRaDaKB|rOLR+C3%Ui@LTDkiFk56Tik6y|B`x(WjV-zs zLrX`?(iTsP??-ZLdCRJnwJqygcC{RBxz+O0IKdcWgc(srsx>4Y-RL%MG;T5W8+RCY8}}NI8c!O}7|$6m8ZR4f8E+f!8ebVd8b2GqwvK6?+B&0k zc57%Ws5PlIxizJAacg_)K))mkrm3c2Q7eOn(-G4#)32rzrYol3 zO*c({m~NZyn1)T?%_GfY%;U|I%u~$a=6G|GIoX_QhMNn`I5WXqY%VdEnHgrbS!`Zn z)|i{j&1RF?YPOr5X0LgTdA)g)d8>Jwd58I+`Kb99^9l1Q^ELCJdB}Xn{LuW^{M7uy z{J}EPGR`v5GQ~2}GRHFCvd9u;fm%{5a0}9sY00(}Sx6R&rNlzFlw0a7trm-=&El|h zSh_3$%L>bC%R0*j%Wlg7%g>ghmI2Et%UR2L%XP~G%M;5p%S+3!<%8v4%NOft>kR8$ z>jEpl8g7lU##rO5aBHR&XC+xF))H%lm1X5x`Bu4AV>MV?trlyWwbSahdaOQcuXU|; zgLSiYtM!2OwDmXZ1?y$&HR}!QE$eOTbL%VXTkCu4N9$+nSL=7%2-_@Mm@UqhU<2DA zHkd8bmSfAe71}U1yp3jK+axxf&0uS_S!_0&-R8FS*;d$A+t%4O+BVyE+4kBF*iPFn z+pgJe*dE&cwmrAKvc0qYWBX+L(l)y-t}Uf4udT2R(}r&&wiUNA+6-;ZwvM)?ZQX7C zZTs2|wjFLe+IF+;QQPyjS8Z?G-nV^e`(_WakFt-oPqWXo&#}+5N7-TaG<&)|)1G6` zx1;P>dzqbKXWMyppWhV8XY=^!O`Y$I652w#|Fn{$4`!Jj?<3c9OoUE99JBFIPN+g zIR0`xaRxa@ImbFDI43!0JLfqUIswj9C)|m2W;t`6rOt9E)5&r2oC2rZS?g?YYMpv# zi?h|~aCSJCI(wbVovWPv&Rx#E&I8UP&g0Gj=Sk;f=bz4d&WFy&&Zo}j&VQYsonM{b zU6WnYTr*vBT=QKEU6HO>SAr|i1#xA$@?9tw)wxQL*HPCmt`n~7u0hw3>yGQb>yhh;>zV7N>vhMpj^qw>hq%Mh zv8Cfe$McSVJI8fS?3~g$y>nLQ+|C7^fX;+Ya3`b_)|u9s-kH&v-I?1d>9lul@4VLe zrfYUrOc$gJ+6C*%?W*Wvb#c1{U6ox`UGgqvm%6LAtD#HVrSIzL3Un>&TG_R_Yi-y1 zu8m!ryMF50-nFZ1PuIS#zq&pxjb4gdTD7!o>FTAYm)>(vbVJ=(H^p7zE_3tTLbu4R zbT_%1-A1?B?Q(ayz3vt6)$T3se)l2w1@~q5HTMnoE%$BrUH1d`U+%x%U)*22gStm` zkL@1cJ*j(Y_w?>r-E+Dj-8tQ~Zb^52cSrY{?xWq;x}SHy@BYyJ(G%nu;Th$b?3v=3 z=9%wV;92B}@`lg1rzg%$w@X^%A{gFU?E$R(P4-I&Z7j z;%)OfydB;y?=tTm?=Rj{-m~8G-YeeUy*Ipr-giB-dct~=dXjrmdk{StJ=r~ZJ%v5A z9(qrC52J_O!|f6DRQ5=E>U;Wn4)t8=`QRJpOY@O@OdrR`_lbNGpUl_b)B5zj7N5yy z@pbu@`!@Nu`nLIY`u6zt`+oJE^qujY^Ih~^@m=%X_C52x_mA+8_K)*V^iT0m_XqpK z{E>d3KhB@vNBA@R+5S9#p&#w1`RV=&Kg-Yc^ZiP{+F$E$@N4~gf4kq|clta0ef~B6 z_5Mx%t^Qs9J^uavL;l152Z2ceNFXba8z=~%1GoSozzN6$)d5976|e<70biguuspCT zuqLoIuq&`Pa3Jt=;7H)Nz@@;|!1cf%fjOJs3NI=lYk^ehq{GYVxf488Z-b4QnHY||T literal 7806 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 I{&hU{Z(+rX(f|Me diff --git a/SubnetCalc.xcodeproj/project.xcworkspace/xcuserdata/mulot.xcuserdatad/WorkspaceSettings.xcsettings b/SubnetCalc.xcodeproj/project.xcworkspace/xcuserdata/mulot.xcuserdatad/WorkspaceSettings.xcsettings new file mode 100644 index 0000000..659c876 --- /dev/null +++ b/SubnetCalc.xcodeproj/project.xcworkspace/xcuserdata/mulot.xcuserdatad/WorkspaceSettings.xcsettings @@ -0,0 +1,10 @@ + + + + + HasAskedToTakeAutomaticSnapshotBeforeSignificantChanges + + SnapshotAutomaticallyBeforeSignificantChanges + + + diff --git a/SubnetCalc.xcodeproj/xcuserdata/mulot.xcuserdatad/xcdebugger/Breakpoints.xcbkptlist b/SubnetCalc.xcodeproj/xcuserdata/mulot.xcuserdatad/xcdebugger/Breakpoints.xcbkptlist new file mode 100644 index 0000000..9b8d830 --- /dev/null +++ b/SubnetCalc.xcodeproj/xcuserdata/mulot.xcuserdatad/xcdebugger/Breakpoints.xcbkptlist @@ -0,0 +1,59 @@ + + + + + + + + + + + + + diff --git a/SubnetCalc.xcodeproj/xcuserdata/mulot.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist b/SubnetCalc.xcodeproj/xcuserdata/mulot.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist new file mode 100644 index 0000000..08d9752 --- /dev/null +++ b/SubnetCalc.xcodeproj/xcuserdata/mulot.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist @@ -0,0 +1,71 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/SubnetCalc.xcodeproj/xcuserdata/mulot.xcuserdatad/xcschemes/SubnetCalc.xcscheme b/SubnetCalc.xcodeproj/xcuserdata/mulot.xcuserdatad/xcschemes/SubnetCalc.xcscheme index 7a84ee9..c3f6d05 100644 --- a/SubnetCalc.xcodeproj/xcuserdata/mulot.xcuserdatad/xcschemes/SubnetCalc.xcscheme +++ b/SubnetCalc.xcodeproj/xcuserdata/mulot.xcuserdatad/xcschemes/SubnetCalc.xcscheme @@ -1,7 +1,7 @@ + LastUpgradeVersion = "0500" + version = "1.8"> @@ -24,24 +24,17 @@ - - - - #import #import #import +#define BUFFER_LINES 10000 +#define NETWORK_BITS_MIN 8 + @implementation SubnetCalcAppDelegate @synthesize window; @@ -60,6 +64,8 @@ - (void)initClassInfos:(NSString *)c else if ([c isEqualToString: @"D"]) { [classType selectItemAtIndex: 3]; + if (tab_tabView) + [tab_tabView release]; tab_tabView = [tabView tabViewItems]; [tab_tabView retain]; [tabView removeTabViewItem: [tab_tabView objectAtIndex: 1]]; @@ -98,6 +104,8 @@ - (void)doIPSubnetCalc:(unsigned int)mask NSRange range; NSMutableAttributedString *astr; + if([[addrField stringValue] length] == 0) + [addrField setStringValue: @"10.0.0.0"]; if ([self checkAddr: [addrField stringValue]]) return; if ([tabView numberOfTabViewItems] != 4) @@ -122,7 +130,7 @@ - (void)doIPSubnetCalc:(unsigned int)mask [addrField setStringValue: [[addrField stringValue] substringToIndex: range.location]]; } if (mask) - [ipsc initAddressAndMask: [[addrField stringValue] cStringUsingEncoding: NSASCIIStringEncoding]: mask]; + [ipsc initAddressAndMask: [[addrField stringValue] cStringUsingEncoding: NSASCIIStringEncoding] mask: mask]; else [ipsc initAddress: [[addrField stringValue] cStringUsingEncoding: NSASCIIStringEncoding]]; [self initClassInfos: [ipsc networkClass]]; @@ -149,6 +157,10 @@ - (void)doIPSubnetCalc:(unsigned int)mask [subnetId setStringValue: [ipsc subnetId]]; [subnetHostAddrRange setStringValue: [ipsc subnetHostAddrRange]]; [subnetBroadcast setStringValue: [ipsc subnetBroadcast]]; + [bitsOnSlide setStringValue: [[ipsc maskBits] stringValue]]; + [subnetBitsSlide setFloatValue: [[ipsc maskBits] floatValue]]; + [self bitsOnSlidePos]; + [subnetsHostsView reloadData]; } @@ -208,6 +220,9 @@ - (IBAction)changeAddrClassType:(id)sender } else if ([sender indexOfSelectedItem] == 3) { + //NEW Release + if (tab_tabView) + [tab_tabView release]; tab_tabView = [tabView tabViewItems]; [tab_tabView retain]; [tabView removeTabViewItem: [tab_tabView objectAtIndex: 1]]; @@ -227,14 +242,20 @@ - (IBAction)changeMaxSubnets:(id)sender { unsigned int mask = -1; - [self doIPSubnetCalc: (mask << (32 - ([sender indexOfSelectedItem] + [ipsc netBits])))]; + if (ipsc) + [self doIPSubnetCalc: (mask << (32 - ([sender indexOfSelectedItem] + [ipsc netBits])))]; + else + [self doIPSubnetCalc: (mask << (32 - ([sender indexOfSelectedItem] + 8)))]; } - (IBAction)changeSubnetBits:(id)sender { unsigned int mask = -1; - [self doIPSubnetCalc: (mask << (32 - ([[sender objectValueOfSelectedItem] intValue] + [ipsc netBits])))]; + if (ipsc) + [self doIPSubnetCalc: (mask << (32 - ([[sender objectValueOfSelectedItem] intValue] + [ipsc netBits])))]; + else + [self doIPSubnetCalc: (mask << (32 - ([[sender objectValueOfSelectedItem] intValue] + 8)))]; } - (IBAction)changeSubnetMask:(id)sender @@ -302,8 +323,11 @@ - (IBAction)changeSupernetMaxAddr:(id)sender } - (int)numberOfRowsInTableView:(NSTableView *)aTableView -{ - return ([[ipsc subnetMax] intValue]); +{ + if ([tabViewClassLess state] == NSOnState) + return (pow(2, ([[ipsc maskBits] intValue] - NETWORK_BITS_MIN))); + else + return ([[ipsc subnetMax] intValue]); } - (id)tableView:(NSTableView *)aTableView @@ -316,15 +340,17 @@ - (id)tableView:(NSTableView *)aTableView mask = rowIndex; mask <<= (32 - [ipsc maskBitsIntValue]); ipsc_tmp = [[IPSubnetCalc alloc] init]; - [ipsc_tmp initAddressAndMaskWithUnsignedInt:([ipsc netIdIntValue] | mask): [ipsc subnetMaskIntValue]]; + [ipsc_tmp initAddressAndMaskWithUnsignedInt:([ipsc netIdIntValue] | mask) mask: [ipsc subnetMaskIntValue]]; [ipsc_tmp autorelease]; if ([[aTableColumn identifier] isEqualToString: @"numCol"]) return ([NSNumber numberWithInt: rowIndex + 1]); - if ([[aTableColumn identifier] isEqualToString: @"rangeCol"]) - return ([[ipsc_tmp subnetHostAddrRange] retain]); - if ([[aTableColumn identifier] isEqualToString: @"subnetCol"]) + else if ([[aTableColumn identifier] isEqualToString: @"rangeCol"]) + //return ([[ipsc_tmp subnetHostAddrRange] retain]); + //NEW no retain + return ([ipsc_tmp subnetHostAddrRange]); + else if ([[aTableColumn identifier] isEqualToString: @"subnetCol"]) return ([ipsc_tmp subnetId]); - if ([[aTableColumn identifier] isEqualToString: @"broadcastCol"]) + else if ([[aTableColumn identifier] isEqualToString: @"broadcastCol"]) return ([ipsc_tmp subnetBroadcast]); return (nil); } @@ -336,6 +362,157 @@ - (void)tableView:(NSTableView *)aTableView { } +- (void)bitsOnSlidePos +{ + NSRect coordLabel, coordSlider; + + coordLabel = [bitsOnSlide frame]; + coordSlider = [subnetBitsSlide frame]; + coordLabel.origin.x = coordSlider.origin.x - (coordLabel.size.width / 2) + ([subnetBitsSlide knobThickness] / 2) + ((coordSlider.size.width / [subnetBitsSlide numberOfTickMarks]) * ([subnetBitsSlide floatValue] - 8)); + [bitsOnSlide setFrame: coordLabel]; + +} + +- (IBAction)subnetBitsSlide:(id)sender +{ + unsigned int mask = -1; + + [self doIPSubnetCalc:(mask << (32 - [sender intValue]))]; + [subnetsHostsView reloadData]; +} + +- (IBAction)changeTableViewClass:(id)sender +{ + if ([tabViewClassLess state] == NSOnState) + { + classless = YES; + } + else + { + classless = NO; + } + [subnetsHostsView reloadData]; +} + +- (IBAction)exportPrint:(id)sender +{ + NSPrintInfo *printInfo; + NSPrintOperation *printOp; + PrintView *view; + + printInfo = [NSPrintInfo sharedPrintInfo]; + view = [[PrintView alloc] initWithSubnet:subnetsHostsView printInfo:printInfo]; + printOp = [NSPrintOperation printOperationWithView:view printInfo: printInfo]; + [printOp setShowsPrintPanel:YES]; + [printOp runOperation]; + [view release]; +} + +- (IBAction)exportCSV:(id)sender +{ + NSSavePanel *panel; + + NSLog(@"EXPORT CSV\n"); + panel = [NSSavePanel savePanel]; + [panel setAllowedFileTypes:[NSArray arrayWithObject: @"csv"]]; + [panel beginWithCompletionHandler: ^(NSInteger result){ + if (result == NSFileHandlingPanelOKButton) + { + NSString *str_csv; + unsigned int i; + NSData *data_cvs; + NSFileHandle *file_cvs; + NSAutoreleasePool *pool; + NSFileManager *file_mgt; + + NSLog(@"OK BUTTON\n"); + file_mgt = [[NSFileManager alloc] init]; + [file_mgt createFileAtPath:[[panel URL] path] contents:nil attributes:nil]; + [file_mgt release]; + pool = [[NSAutoreleasePool alloc] init]; + file_cvs = [NSFileHandle fileHandleForWritingAtPath: [[panel URL] path]]; + if (file_cvs) + { + NSLog(@"FILE CVS OK\n"); + [file_cvs retain]; + str_csv = [[NSString alloc] initWithString: @"#;Subnet ID;Range;Broadcast\n"]; + data_cvs = [NSData dataWithData: [str_csv dataUsingEncoding: NSASCIIStringEncoding]]; + [file_cvs writeData: data_cvs]; + [str_csv release]; + for (i = 0; i < [subnetsHostsView numberOfRows]; i++) + { + str_csv = [NSString stringWithFormat: @"%@;%@;%@;%@\n", + [self tableView: subnetsHostsView objectValueForTableColumn:[subnetsHostsView tableColumnWithIdentifier: @"numCol"] row:i], + [self tableView: subnetsHostsView objectValueForTableColumn:[subnetsHostsView tableColumnWithIdentifier: @"subnetCol"] row:i], + [self tableView: subnetsHostsView objectValueForTableColumn:[subnetsHostsView tableColumnWithIdentifier: @"rangeCol"] row:i], + [self tableView: subnetsHostsView objectValueForTableColumn:[subnetsHostsView tableColumnWithIdentifier: @"broadcastCol"] row:i] + ]; + data_cvs = [NSData dataWithData: [str_csv dataUsingEncoding: NSASCIIStringEncoding]]; + [file_cvs writeData: data_cvs]; + if ((i % BUFFER_LINES) == 0) + { + //NSLog(@"%d %@\n", i, str_csv); + [file_cvs synchronizeFile]; + [pool release]; + pool = [[NSAutoreleasePool alloc] init]; + } + } + [file_cvs synchronizeFile]; + [file_cvs closeFile]; + [file_cvs release]; + } + [pool release]; + } + }]; +} + +-(NSString *)URLEncode:(NSString *)url +{ + NSString *url_encoded; + + url_encoded = [[[NSString alloc] initWithString: url] autorelease]; + url_encoded = [[url_encoded stringByReplacingOccurrencesOfString: @" " withString: @"%20"] autorelease]; + url_encoded = [[url_encoded stringByReplacingOccurrencesOfString: @"\n" withString: @"%0D"] autorelease]; + url_encoded = [[url_encoded stringByReplacingOccurrencesOfString: @"/" withString: @"%2F"] autorelease]; + return (url_encoded); +} + +// Create a mail message in the user's preferred mail client +// by opening a mailto URL. The extended mailto URL format +// is documented by RFC 2368 +- (IBAction)exportEmail:(id)sender +{ + /* + NSURL *url; + NSString *str_email, *str; + int i; + + + str_email = [[[NSString alloc] initWithFormat: @"mailto:?subject=SubnetCal: %@/%@&body=Subnets for: %@/%@\n\n", + [subnetId stringValue], [maskBitsCombo stringValue], [subnetId stringValue], [maskBitsCombo stringValue]] autorelease]; + for (i = 0; i < [subnetsHostsView numberOfRows]; i++) + { + str = [str_email stringByAppendingFormat: @"%@ %@ %@ %@\n", + [self tableView: subnetsHostsView objectValueForTableColumn:[subnetsHostsView tableColumnWithIdentifier: @"numCol"] row:i], + [self tableView: subnetsHostsView objectValueForTableColumn:[subnetsHostsView tableColumnWithIdentifier: @"subnetCol"] row:i], + [self tableView: subnetsHostsView objectValueForTableColumn:[subnetsHostsView tableColumnWithIdentifier: @"rangeCol"] row:i], + [self tableView: subnetsHostsView objectValueForTableColumn:[subnetsHostsView tableColumnWithIdentifier: @"broadcastCol"] row:i] + ]; + str_email = [str autorelease]; + } + str_email = [self URLEncode: str_email]; + url = [NSURL URLWithString: str_email]; + assert(url != nil); + [[NSWorkspace sharedWorkspace] openURL:url]; + [url release]; + */ +} + +- (void)windowDidResize:(NSNotification *)notification +{ + [self bitsOnSlidePos]; +} + - (void)windowWillClose:(NSNotification *)notif { [NSApp terminate: self]; @@ -376,6 +553,7 @@ - (void)applicationDidFinishLaunching:(NSNotification *)aNotification { [subnetMaskCombo selectItemWithObjectValue: @"255.0.0.0"]; [maskBitsCombo selectItemWithObjectValue: @"8"]; [subnetBitsCombo selectItemWithObjectValue: @"0"]; + classless = FALSE; } @end diff --git a/build/Debug/SubnetCalc.app.dSYM/Contents/Info.plist b/build/Debug/SubnetCalc.app.dSYM/Contents/Info.plist deleted file mode 100644 index f255a13..0000000 --- a/build/Debug/SubnetCalc.app.dSYM/Contents/Info.plist +++ /dev/null @@ -1,20 +0,0 @@ - - - - - CFBundleDevelopmentRegion - English - CFBundleIdentifier - com.apple.xcode.dsym.net.mulot.subnetcalc - CFBundleInfoDictionaryVersion - 6.0 - CFBundlePackageType - dSYM - CFBundleSignature - ???? - CFBundleShortVersionString - 1.2 - CFBundleVersion - 1.2 - - diff --git a/build/Debug/SubnetCalc.app.dSYM/Contents/Resources/DWARF/SubnetCalc b/build/Debug/SubnetCalc.app.dSYM/Contents/Resources/DWARF/SubnetCalc deleted file mode 100644 index f6c1835714427c410ecf8d94a79b42106f0ee8ba..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 51440 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 TF*`34RF+WZJenvS32FW}S02}M diff --git a/build/Debug/SubnetCalc.app/Contents/CodeResources b/build/Debug/SubnetCalc.app/Contents/CodeResources deleted file mode 120000 index 1a65e20..0000000 --- a/build/Debug/SubnetCalc.app/Contents/CodeResources +++ /dev/null @@ -1 +0,0 @@ -_CodeSignature/CodeResources \ No newline at end of file diff --git a/build/Debug/SubnetCalc.app/Contents/Info.plist b/build/Debug/SubnetCalc.app/Contents/Info.plist deleted file mode 100644 index dd4dff4..0000000 --- a/build/Debug/SubnetCalc.app/Contents/Info.plist +++ /dev/null @@ -1,36 +0,0 @@ - - - - - LSApplicationCategoryType - public.app-category.utilities - CFBundleDevelopmentRegion - English - CFBundleExecutable - SubnetCalc - CFBundleIconFile - SubnetCalc.icns - CFBundleIdentifier - net.mulot.subnetcalc - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - SubnetCalc - CFBundlePackageType - APPL - CFBundleShortVersionString - 1.2 - CFBundleSignature - JMUL - CFBundleVersion - 1.2 - LSMinimumSystemVersion - 10.6 - NSHumanReadableCopyright - Copyright 2010 Julien Mulot - NSMainNibFile - MainMenu - NSPrincipalClass - NSApplication - - diff --git a/build/Debug/SubnetCalc.app/Contents/MacOS/SubnetCalc b/build/Debug/SubnetCalc.app/Contents/MacOS/SubnetCalc deleted file mode 100755 index dd2eddd659d77e6733483e838e831cc83259dda3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 60144 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 diff --git a/build/Debug/SubnetCalc.app/Contents/PkgInfo b/build/Debug/SubnetCalc.app/Contents/PkgInfo deleted file mode 100644 index 05ddd88..0000000 --- a/build/Debug/SubnetCalc.app/Contents/PkgInfo +++ /dev/null @@ -1 +0,0 @@ -APPLJMUL \ No newline at end of file diff --git a/build/Debug/SubnetCalc.app/Contents/Resources/English.lproj/InfoPlist.strings b/build/Debug/SubnetCalc.app/Contents/Resources/English.lproj/InfoPlist.strings deleted file mode 100644 index dea12de4cad936a6204d4da70d2ca96aef900b31..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 92 zcmW-Z!3uyN5C!M#S9tbN-x2r|Q3;V~qzLu#)x*oq?lA28G2*azG7B@2orjH8u89{# bCX+-f2F*!V&^~bXzEEWk)pxI)ej3aVcM}l{ diff --git a/build/Debug/SubnetCalc.app/Contents/Resources/English.lproj/MainMenu.nib b/build/Debug/SubnetCalc.app/Contents/Resources/English.lproj/MainMenu.nib deleted file mode 100644 index 821fcdf1a9f5eacba762acf69365b78ae8f5e7b0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 42708 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