Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add optionally assignable labels to variables #95

Merged
merged 26 commits into from
May 6, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
583ec69
Add initial implementation for labels
zorgiepoo May 4, 2024
13b7813
Don't allow re-using same labels
zorgiepoo May 4, 2024
108f1ea
Avoid computing cyclic addresses via labels
zorgiepoo May 4, 2024
19f6cef
Revert "Avoid computing cyclic addresses via labels"
zorgiepoo May 4, 2024
d4d6ceb
Replace $n with label index (or ordinal)
zorgiepoo May 5, 2024
bf495cc
Remove label controller
zorgiepoo May 5, 2024
91a83bd
Disallow labeled variables or variables using labels to be narrowed
zorgiepoo May 5, 2024
cbd28db
Annotate variables that use labels pointing to indirect variables
zorgiepoo May 5, 2024
5229f56
Show dependent labels in annotated variable description
zorgiepoo May 5, 2024
4c23c06
Update other variable annotations when label/address changes
zorgiepoo May 5, 2024
cb78ef5
Fix logic for retrieving variable address for relativization
zorgiepoo May 5, 2024
f25af6e
Handle not changing variable labels
zorgiepoo May 5, 2024
7ea6bc9
Add title for editing variable label(s)
zorgiepoo May 5, 2024
e7a1726
Localize edit variable labels menu item title
zorgiepoo May 5, 2024
2d7689d
Add label descriptions for editing variable address
zorgiepoo May 5, 2024
e9c9cf6
Add explanation for $n when editing label
zorgiepoo May 5, 2024
2ae5273
Add localizations for editing variable label
zorgiepoo May 5, 2024
cff4e59
Re-adjust edit variable label window based on multiple selection
zorgiepoo May 5, 2024
3f25ae4
Fix issues with preventing duplicate variable labels
zorgiepoo May 5, 2024
e9ec7e8
Add alert messages for invalid new labels
zorgiepoo May 5, 2024
9148432
Remove logic to select text
zorgiepoo May 5, 2024
0617418
Add formatter to validate label text field against invalid characters
zorgiepoo May 6, 2024
a0c5b96
Add justification for not using label hash table lookup
zorgiepoo May 6, 2024
97e6e1d
Update variable annotations when labeled variables are added/removed
zorgiepoo May 6, 2024
0ccc9cb
Use label placeholder when editing multiple labels always
zorgiepoo May 6, 2024
f43e98c
Fix label validation formatter
zorgiepoo May 6, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
41 changes: 41 additions & 0 deletions Bit Slicer.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,9 @@
7208450624E084F400F3D449 /* Python.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7208450524E084F400F3D449 /* Python.framework */; };
7208450724E0851000F3D449 /* Python.framework in Copy Frameworks */ = {isa = PBXBuildFile; fileRef = 7208450524E084F400F3D449 /* Python.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
720C192C271B4F9700740C8E /* ZGSearchProtectionMode.m in Sources */ = {isa = PBXBuildFile; fileRef = 720C192B271B4F9700740C8E /* ZGSearchProtectionMode.m */; };
72130FC82BE6836A00691AED /* ZGEditLabelWindowController.m in Sources */ = {isa = PBXBuildFile; fileRef = 72130FC62BE6836A00691AED /* ZGEditLabelWindowController.m */; };
72130FCC2BE83BF400691AED /* Edit Label Dialog.xib in Resources */ = {isa = PBXBuildFile; fileRef = 72130FCB2BE83BF400691AED /* Edit Label Dialog.xib */; };
72130FD52BE84B4B00691AED /* [Code] Edit Variable Label.strings in Resources */ = {isa = PBXBuildFile; fileRef = 72130FD32BE84B4B00691AED /* [Code] Edit Variable Label.strings */; };
721594FE24DF36360027F600 /* HexFiend.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 721594FD24DF36360027F600 /* HexFiend.framework */; };
7215950024DF36520027F600 /* HexFiend.framework in Copy Frameworks */ = {isa = PBXBuildFile; fileRef = 721594FD24DF36360027F600 /* HexFiend.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
721B3C4D2AED913200F85660 /* ZGSearchProtectionMode.m in Sources */ = {isa = PBXBuildFile; fileRef = 720C192B271B4F9700740C8E /* ZGSearchProtectionMode.m */; };
Expand Down Expand Up @@ -319,6 +322,15 @@
720C1929271B46B600740C8E /* ReadMe.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = ReadMe.md; sourceTree = "<group>"; };
720C192A271B4F9700740C8E /* ZGSearchProtectionMode.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = ZGSearchProtectionMode.h; path = "Bit Slicer/ZGSearchProtectionMode.h"; sourceTree = "<group>"; };
720C192B271B4F9700740C8E /* ZGSearchProtectionMode.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = ZGSearchProtectionMode.m; path = "Bit Slicer/ZGSearchProtectionMode.m"; sourceTree = "<group>"; };
72130FC52BE6836A00691AED /* ZGEditLabelWindowController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = ZGEditLabelWindowController.h; path = "Bit Slicer/ZGEditLabelWindowController.h"; sourceTree = "<group>"; };
72130FC62BE6836A00691AED /* ZGEditLabelWindowController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = ZGEditLabelWindowController.m; path = "Bit Slicer/ZGEditLabelWindowController.m"; sourceTree = "<group>"; };
72130FCA2BE83BF400691AED /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = "Base.lproj/Edit Label Dialog.xib"; sourceTree = "<group>"; };
72130FCE2BE83BF900691AED /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = "en.lproj/Edit Label Dialog.strings"; sourceTree = "<group>"; };
72130FD02BE83BFB00691AED /* ru */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ru; path = "ru.lproj/Edit Label Dialog.strings"; sourceTree = "<group>"; };
72130FD22BE83BFC00691AED /* es */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = es; path = "es.lproj/Edit Label Dialog.strings"; sourceTree = "<group>"; };
72130FD42BE84B4B00691AED /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = "Bit Slicer/en.lproj/[Code] Edit Variable Label.strings"; sourceTree = "<group>"; };
72130FD62BE84B5B00691AED /* es */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = es; path = "Bit Slicer/es.lproj/[Code] Edit Variable Label.strings"; sourceTree = "<group>"; };
72130FD72BE84B6400691AED /* ru */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ru; path = "Bit Slicer/ru.lproj/[Code] Edit Variable Label.strings"; sourceTree = "<group>"; };
721594FD24DF36360027F600 /* HexFiend.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = HexFiend.framework; path = deps/HexFiend/HexFiend.framework; sourceTree = "<group>"; };
721594FF24DF36460027F600 /* HFLineCountingView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = HFLineCountingView.h; path = deps/HexFiend/HFLineCountingView.h; sourceTree = "<group>"; };
722CAA5519AD4AED009C6AAE /* hotkey.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = hotkey.png; path = "Bit Slicer/preficons/hotkey.png"; sourceTree = "<group>"; };
Expand Down Expand Up @@ -993,6 +1005,7 @@
726CA2B219606DA000A6AD40 /* Logs Window.xib */,
726CA2CA19606E1D00A6AD40 /* Edit Value Dialog.xib */,
726CA2CD19606E2200A6AD40 /* Edit Address Dialog.xib */,
72130FCB2BE83BF400691AED /* Edit Label Dialog.xib */,
726CA2D019606E2600A6AD40 /* Edit Size Dialog.xib */,
726CA2D319606E2900A6AD40 /* Edit Description Dialog.xib */,
726CA2D619606E3100A6AD40 /* Search Options.xib */,
Expand Down Expand Up @@ -1025,6 +1038,7 @@
724A9F1B19A1657500E72C9D /* [Code] Variable Actions.strings */,
724A9F3719A813D600E72C9D /* [Code] Edit Variable Value.strings */,
724A9F3A19A8173900E72C9D /* [Code] Edit Variable Size.strings */,
72130FD32BE84B4B00691AED /* [Code] Edit Variable Label.strings */,
724A9F3D19A823C300E72C9D /* [Code] Search Document.strings */,
724A9F4F19A8F54600E72C9D /* [Code] Search Document.stringsdict */,
724A9F4019A85D3F00E72C9D /* [Code] Search Table.strings */,
Expand Down Expand Up @@ -1056,6 +1070,8 @@
770FABAF18490DB400C176B7 /* ZGEditAddressWindowController.m */,
770FABB41849160200C176B7 /* ZGEditSizeWindowController.h */,
770FABB51849160200C176B7 /* ZGEditSizeWindowController.m */,
72130FC52BE6836A00691AED /* ZGEditLabelWindowController.h */,
72130FC62BE6836A00691AED /* ZGEditLabelWindowController.m */,
77FFC14918711D2700122357 /* ZGEditDescriptionWindowController.h */,
77FFC14A18711D2700122357 /* ZGEditDescriptionWindowController.m */,
);
Expand Down Expand Up @@ -1580,6 +1596,7 @@
724A9F2819A1657500E72C9D /* [Code] Script Preferences.strings in Resources */,
726CA2CB19606E2200A6AD40 /* Edit Address Dialog.xib in Resources */,
724A9F4E19A8EDD700E72C9D /* [Code] Logger Window.stringsdict in Resources */,
72130FCC2BE83BF400691AED /* Edit Label Dialog.xib in Resources */,
726CA2D719606E3800A6AD40 /* Watch Variable Dialog.xib in Resources */,
722CAA5919AD4AED009C6AAE /* hotkey.png in Resources */,
77F115AE17D2EAE4009E002A /* bitslicerdocicon.iconset in Resources */,
Expand All @@ -1604,6 +1621,7 @@
722CAA5A19AD4AED009C6AAE /* [email protected] in Resources */,
726CA2B619606DD200A6AD40 /* Change Memory Protection Dialog.xib in Resources */,
724A9F3919A813D600E72C9D /* [Code] Edit Variable Value.strings in Resources */,
72130FD52BE84B4B00691AED /* [Code] Edit Variable Label.strings in Resources */,
724A9F2919A1657500E72C9D /* [Code] Variable Actions.strings in Resources */,
724A9F1E19A1657500E72C9D /* [Code] Debugger Registers.strings in Resources */,
726CA2BF19606DF200A6AD40 /* Software Update View.xib in Resources */,
Expand Down Expand Up @@ -1743,6 +1761,7 @@
722EE7871B1940EC00934EF3 /* ZGDeliverUserNotifications.m in Sources */,
77F1160C17D2EECA009E002A /* ZGPyScript.m in Sources */,
777DA25218CE97BE0092DEC9 /* ZGAppTerminationState.m in Sources */,
72130FC82BE6836A00691AED /* ZGEditLabelWindowController.m in Sources */,
77F1160F17D2EED6009E002A /* ZGSearchData.m in Sources */,
72E07FDB2AA563AF00BBEED1 /* LEB128Type.m in Sources */,
77282120189B854D0044E4BC /* ZGFunctionTypes.m in Sources */,
Expand Down Expand Up @@ -1824,6 +1843,28 @@
/* End PBXTargetDependency section */

/* Begin PBXVariantGroup section */
72130FCB2BE83BF400691AED /* Edit Label Dialog.xib */ = {
isa = PBXVariantGroup;
children = (
72130FCA2BE83BF400691AED /* Base */,
72130FCE2BE83BF900691AED /* en */,
72130FD02BE83BFB00691AED /* ru */,
72130FD22BE83BFC00691AED /* es */,
);
name = "Edit Label Dialog.xib";
path = "Bit Slicer";
sourceTree = "<group>";
};
72130FD32BE84B4B00691AED /* [Code] Edit Variable Label.strings */ = {
isa = PBXVariantGroup;
children = (
72130FD42BE84B4B00691AED /* en */,
72130FD62BE84B5B00691AED /* es */,
72130FD72BE84B6400691AED /* ru */,
);
name = "[Code] Edit Variable Label.strings";
sourceTree = "<group>";
};
7231440C19C6230F00FBE342 /* [Code] Watch Variable.stringsdict */ = {
isa = PBXVariantGroup;
children = (
Expand Down
105 changes: 105 additions & 0 deletions Bit Slicer/Base.lproj/Edit Label Dialog.xib
Original file line number Diff line number Diff line change
@@ -0,0 +1,105 @@
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="32700.99.1234" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
<dependencies>
<deployment identifier="macosx"/>
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="22689"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies>
<objects>
<customObject id="-2" userLabel="File's Owner" customClass="ZGEditLabelWindowController">
<connections>
<outlet property="_cancelButton" destination="8CG-ND-ekn" id="mLV-Jc-q1p"/>
<outlet property="_labelTextField" destination="tPv-2m-2zz" id="Th2-F2-zwX"/>
<outlet property="_multipleSelectionExplanationTextField" destination="ICq-SA-Bcg" id="LNc-17-VxA"/>
<outlet property="window" destination="NC3-BH-hKw" id="0Wh-qC-PEv"/>
</connections>
</customObject>
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
<customObject id="-3" userLabel="Application" customClass="NSObject"/>
<window allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" hidesOnDeactivate="YES" releasedWhenClosed="NO" visibleAtLaunch="NO" animationBehavior="default" id="NC3-BH-hKw" customClass="NSPanel">
<windowStyleMask key="styleMask" titled="YES" closable="YES" miniaturizable="YES"/>
<windowPositionMask key="initialPositionMask" leftStrut="YES" rightStrut="YES" topStrut="YES" bottomStrut="YES"/>
<rect key="contentRect" x="162" y="389" width="317" height="108"/>
<rect key="screenRect" x="0.0" y="0.0" width="1470" height="918"/>
<view key="contentView" id="kSR-8D-lJp">
<rect key="frame" x="0.0" y="0.0" width="317" height="107"/>
<autoresizingMask key="autoresizingMask"/>
<subviews>
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="tPv-2m-2zz">
<rect key="frame" x="63" y="66" width="234" height="21"/>
<constraints>
<constraint firstAttribute="width" relation="greaterThanOrEqual" constant="178" id="5XK-z0-2CR"/>
</constraints>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" id="h3a-Rz-Ayf">
<font key="font" metaFont="system"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="GhZ-IW-FPN">
<rect key="frame" x="16" y="69" width="41" height="16"/>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Label:" id="tdw-96-OLh">
<font key="font" metaFont="system"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="1u6-FE-pdN">
<rect key="frame" x="228" y="9" width="76" height="32"/>
<buttonCell key="cell" type="push" title="OK" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="UNH-Xz-JjJ">
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="system"/>
<string key="keyEquivalent" base64-UTF8="YES">
DQ
</string>
</buttonCell>
<connections>
<action selector="editVariablesLabels:" target="-2" id="bpS-jJ-uiJ"/>
</connections>
</button>
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="8CG-ND-ekn">
<rect key="frame" x="154" y="9" width="76" height="32"/>
<buttonCell key="cell" type="push" title="Cancel" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="Uwq-TR-2ZJ">
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="system"/>
<string key="keyEquivalent" base64-UTF8="YES">
Gw
</string>
</buttonCell>
<connections>
<action selector="cancelEditingVariablesLabels:" target="-2" id="KJo-cw-rzb"/>
</connections>
</button>
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" preferredMaxLayoutWidth="370" translatesAutoresizingMaskIntoConstraints="NO" id="ICq-SA-Bcg">
<rect key="frame" x="16" y="44" width="283" height="14"/>
<textFieldCell key="cell" sendsActionOnEndEditing="YES" title="$n will be substituted with an incrementing number." id="DIb-kM-KCk">
<font key="font" metaFont="smallSystem"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
</subviews>
<constraints>
<constraint firstItem="GhZ-IW-FPN" firstAttribute="leading" secondItem="kSR-8D-lJp" secondAttribute="leading" constant="18" id="4IE-ad-RNO"/>
<constraint firstAttribute="trailing" secondItem="ICq-SA-Bcg" secondAttribute="trailing" constant="20" id="5ee-m5-4oV"/>
<constraint firstItem="tPv-2m-2zz" firstAttribute="top" secondItem="kSR-8D-lJp" secondAttribute="top" constant="20" id="FP8-MF-JQj"/>
<constraint firstAttribute="bottom" secondItem="8CG-ND-ekn" secondAttribute="bottom" constant="16" id="LoL-EK-W3U"/>
<constraint firstItem="tPv-2m-2zz" firstAttribute="leading" secondItem="GhZ-IW-FPN" secondAttribute="trailing" constant="8" id="NDL-ke-7Wb"/>
<constraint firstItem="ICq-SA-Bcg" firstAttribute="leading" secondItem="kSR-8D-lJp" secondAttribute="leading" constant="18" id="Ovy-fj-smE"/>
<constraint firstAttribute="trailing" secondItem="tPv-2m-2zz" secondAttribute="trailing" constant="20" id="aWf-6Y-UVI"/>
<constraint firstAttribute="trailing" secondItem="1u6-FE-pdN" secondAttribute="trailing" constant="20" id="b8t-9n-0yf"/>
<constraint firstItem="GhZ-IW-FPN" firstAttribute="top" secondItem="kSR-8D-lJp" secondAttribute="top" constant="22" id="e3y-70-cfL"/>
<constraint firstItem="8CG-ND-ekn" firstAttribute="top" secondItem="ICq-SA-Bcg" secondAttribute="bottom" constant="8" symbolic="YES" id="lRW-ju-u76"/>
<constraint firstAttribute="bottom" secondItem="1u6-FE-pdN" secondAttribute="bottom" constant="16" id="pSA-Mm-y9E"/>
<constraint firstItem="1u6-FE-pdN" firstAttribute="leading" secondItem="8CG-ND-ekn" secondAttribute="trailing" constant="12" id="qzR-OI-Rbe"/>
<constraint firstItem="ICq-SA-Bcg" firstAttribute="top" secondItem="tPv-2m-2zz" secondAttribute="bottom" constant="8" symbolic="YES" id="tmh-hC-DAI"/>
<constraint firstItem="8CG-ND-ekn" firstAttribute="width" secondItem="1u6-FE-pdN" secondAttribute="width" id="vxN-A2-Tej"/>
</constraints>
</view>
<connections>
<outlet property="delegate" destination="-2" id="iv7-xZ-vPA"/>
</connections>
<point key="canvasLocation" x="364.5" y="234"/>
</window>
</objects>
</document>
Loading