mirror of
https://github.com/objective-see/TaskExplorer.git
synced 2026-03-22 07:02:39 +00:00
fixed info views
removed args from dylib view increased size for signing added file type (via 'file' cmd) to non-binary files added extra logic to handle filtering VT reload is row-only (no more full table!)
This commit is contained in:
Vendored
+5
@@ -29,7 +29,10 @@
|
||||
NSMutableArray *array;
|
||||
}
|
||||
|
||||
/* PROPERTIES */
|
||||
//@property(nonatomic, retain)NSMutableArray *array;
|
||||
|
||||
/* METHODS */
|
||||
- (void)insertObject:(id)anObject forKey:(id)aKey atIndex:(NSUInteger)anIndex;
|
||||
- (id)keyAtIndex:(NSUInteger)anIndex;
|
||||
- (NSUInteger)indexOfKey:(id)aKey;
|
||||
@@ -40,4 +43,6 @@
|
||||
// ->by pid, name, etc
|
||||
-(void)sort:(NSUInteger)sortBy;
|
||||
|
||||
|
||||
|
||||
@end
|
||||
|
||||
Vendored
+1
@@ -24,6 +24,7 @@
|
||||
#import "Consts.h"
|
||||
#import "OrderedDictionary.h"
|
||||
|
||||
|
||||
NSString *DescriptionForObject(NSObject *object, id locale, NSUInteger indent)
|
||||
{
|
||||
NSString *objectString;
|
||||
|
||||
+4
-4
@@ -129,9 +129,6 @@
|
||||
// ->provide mouse over effects
|
||||
-(void)initTrackingAreas;
|
||||
|
||||
//callback method, invoked by virus total when plugin's items have been processed
|
||||
// ->reload table if plugin matches active plugin
|
||||
//-(void)itemsProcessed:(PluginBase*)plugin;
|
||||
|
||||
|
||||
//callback when user has updated prefs
|
||||
@@ -164,7 +161,7 @@
|
||||
@property (weak) IBOutlet NSTextField *versionString;
|
||||
|
||||
//reload (to re-draw) a specific row in table
|
||||
-(void)reloadRow:(Task*)task item:(ItemBase*)item pane:(NSUInteger)pane;
|
||||
-(void)reloadRow:(id)item;
|
||||
|
||||
//reload task table
|
||||
-(void)reloadTaskTable;
|
||||
@@ -183,5 +180,8 @@
|
||||
//filter tasks
|
||||
-(void)filterTasks:(NSString*)filterText;
|
||||
|
||||
//VT callback to reload a binary
|
||||
-(void)reloadBinary:(Binary*)binary;
|
||||
|
||||
|
||||
@end
|
||||
|
||||
+108
-109
@@ -16,13 +16,9 @@
|
||||
#import "Task.h"
|
||||
|
||||
//TODO: bottom pane's progress indicator: center via autolayout
|
||||
//TODO: fix bottom icons
|
||||
//TODO: dylib info view, don't show args
|
||||
//TODO: SHA1 is NULL
|
||||
//TODO: Time is NULL
|
||||
//TODO: Software signing is too long (goes into 'close' buttom
|
||||
//TODO: only update task row(s) on Task VT result! not full table
|
||||
//TODO: full VT queue!!
|
||||
//TODO: full VT queue!! - flush
|
||||
//TODO: on filter, reset scanning for bottom item (hideDylib)
|
||||
//TODO: network info window
|
||||
|
||||
@implementation AppDelegate
|
||||
|
||||
@@ -44,7 +40,6 @@
|
||||
@synthesize scannerThread;
|
||||
@synthesize versionString;
|
||||
@synthesize progressIndicator;
|
||||
//@synthesize filterObj;
|
||||
|
||||
@synthesize topPane;
|
||||
@synthesize taskEnumerator;
|
||||
@@ -360,54 +355,46 @@
|
||||
return;
|
||||
}
|
||||
|
||||
//reload (to re-draw) a specific row in table
|
||||
-(void)reloadRow:(Task*)task item:(ItemBase*)item pane:(NSUInteger)pane
|
||||
//smartly reload a specific row in table
|
||||
// ->arg determines pane (top/bottom) and for bottom pane, the active view the item belongs to
|
||||
-(void)reloadRow:(id)item;
|
||||
{
|
||||
//item's task
|
||||
// ->will use current task if task arg is nil
|
||||
__block Task* itemTask = nil;
|
||||
|
||||
//table view
|
||||
__block NSTableView* tableView = nil;
|
||||
|
||||
//row
|
||||
__block NSUInteger row = 0;
|
||||
|
||||
//segment (for bottom pane
|
||||
__block NSUInteger segmentTag = 0;
|
||||
|
||||
//run everything on main thread
|
||||
// ->ensures table view isn't changed out from under us....
|
||||
dispatch_async(dispatch_get_main_queue(), ^{
|
||||
|
||||
//get item's task
|
||||
// ->use passed in task if non-nil
|
||||
if(nil != itemTask)
|
||||
{
|
||||
//set
|
||||
itemTask = task;
|
||||
}
|
||||
//passed in task is nil
|
||||
// ->use currently selected one
|
||||
else
|
||||
{
|
||||
//set
|
||||
itemTask = self.currentTask;
|
||||
}
|
||||
|
||||
|
||||
//top table (pane)
|
||||
if(PANE_TOP == pane)
|
||||
if(YES == [item isKindOfClass:[Task class]])
|
||||
{
|
||||
//top table view
|
||||
tableView = [((id)self.taskTableController) itemView];
|
||||
|
||||
//reloadItem
|
||||
//reload item
|
||||
// ->flat view
|
||||
if(YES != [tableView isKindOfClass:[NSOutlineView class]])
|
||||
{
|
||||
//get index where task is
|
||||
// TODO: doesn't account for filtering, etc!!!
|
||||
row = [self.taskEnumerator.tasks indexOfKey:itemTask.pid];
|
||||
//no filtering
|
||||
// ->grab row from all tasks
|
||||
if(YES != self.taskTableController.isFiltered)
|
||||
{
|
||||
//get row
|
||||
row = [self.taskEnumerator.tasks indexOfKey:((Task*)item).pid];
|
||||
}
|
||||
//filtering
|
||||
// ->grab row from filtered tasks
|
||||
else
|
||||
{
|
||||
//get row
|
||||
row = [self.taskTableController.filteredItems indexOfObject:item];
|
||||
}
|
||||
|
||||
//sanity check
|
||||
if(NSNotFound == row)
|
||||
{
|
||||
//bail
|
||||
@@ -425,20 +412,18 @@
|
||||
|
||||
}
|
||||
//reload item
|
||||
// ->tree view
|
||||
// ->tree view, so no need to worry about filtering
|
||||
else
|
||||
{
|
||||
//begin updates
|
||||
[tableView beginUpdates];
|
||||
|
||||
//reload
|
||||
[(NSOutlineView*)tableView reloadItem:itemTask];
|
||||
[(NSOutlineView*)tableView reloadItem:item];
|
||||
|
||||
//end updates
|
||||
[tableView endUpdates];
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
//bottom pane
|
||||
else
|
||||
@@ -446,73 +431,21 @@
|
||||
//bottom table view
|
||||
tableView = [((id)self.bottomViewController) itemView];
|
||||
|
||||
//get segment tag
|
||||
segmentTag = [[self.bottomPaneBtn selectedCell] tagForSegment:[self.bottomPaneBtn selectedSegment]];
|
||||
|
||||
//get item
|
||||
// ->will bail if item isn't in (current) view, etc
|
||||
switch(segmentTag)
|
||||
//no filtering
|
||||
// ->grab row from all items
|
||||
if(YES != self.bottomViewController.isFiltered)
|
||||
{
|
||||
//dylibs
|
||||
case DYLIBS_VIEW:
|
||||
|
||||
//make sure item class/type matches current view
|
||||
if(YES != [item isKindOfClass:[Binary class]])
|
||||
{
|
||||
//bail
|
||||
goto bail;
|
||||
}
|
||||
|
||||
//sync
|
||||
@synchronized(itemTask.dylibs)
|
||||
{
|
||||
//get row
|
||||
row = [itemTask.dylibs indexOfObject:item];
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
//files
|
||||
case FILES_VIEW:
|
||||
|
||||
//make sure item class/type matches current view
|
||||
if(YES != [item isKindOfClass:[File class]])
|
||||
{
|
||||
//bail
|
||||
goto bail;
|
||||
}
|
||||
|
||||
//sync
|
||||
@synchronized(itemTask.files)
|
||||
{
|
||||
//get row
|
||||
row = [itemTask.files indexOfObject:item];
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
//networking
|
||||
case NETWORKING_VIEW:
|
||||
|
||||
//make sure item class/type matches current view
|
||||
if(YES != [item isKindOfClass:[Connection class]])
|
||||
{
|
||||
//bail
|
||||
goto bail;
|
||||
}
|
||||
//sync
|
||||
@synchronized(itemTask.connections)
|
||||
{
|
||||
//get row
|
||||
row = [itemTask.connections indexOfObject:item];
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
//get row
|
||||
row = [self.bottomViewController.tableItems indexOfObject:item];
|
||||
}
|
||||
|
||||
//filtering
|
||||
// ->grab row from filtered item
|
||||
else
|
||||
{
|
||||
//get row
|
||||
row = [self.bottomViewController.filteredItems indexOfObject:item];
|
||||
}
|
||||
|
||||
//make sure item was found
|
||||
if(NSNotFound == row)
|
||||
{
|
||||
@@ -520,7 +453,6 @@
|
||||
goto bail;
|
||||
}
|
||||
|
||||
|
||||
//begin updates
|
||||
[tableView beginUpdates];
|
||||
|
||||
@@ -529,7 +461,8 @@
|
||||
|
||||
//end updates
|
||||
[tableView endUpdates];
|
||||
}
|
||||
|
||||
}//bottom pane
|
||||
|
||||
//bail
|
||||
bail:
|
||||
@@ -641,6 +574,72 @@ bail:
|
||||
return;
|
||||
}
|
||||
|
||||
//VT callback to reload a binary
|
||||
// ->task binary: reload all instances that match in top pane
|
||||
// dylib: reload row if dylib is loaded in current/selected task
|
||||
-(void)reloadBinary:(Binary*)binary
|
||||
{
|
||||
//all tasks
|
||||
OrderedDictionary* tasks = nil;
|
||||
|
||||
//task
|
||||
Task* task = nil;
|
||||
|
||||
//task binary
|
||||
// ->reload all instances that match in top pane
|
||||
if(YES == binary.isTaskBinary)
|
||||
{
|
||||
//when not filtered
|
||||
// ->use all tasks
|
||||
if(YES != self.taskTableController.isFiltered)
|
||||
{
|
||||
//TODO: sync?
|
||||
|
||||
//get tasks
|
||||
tasks = self.taskEnumerator.tasks;
|
||||
for(NSNumber* taskPid in tasks)
|
||||
{
|
||||
//extract task
|
||||
task = tasks[taskPid];
|
||||
|
||||
//check for match
|
||||
if(task.binary == binary)
|
||||
{
|
||||
//reload
|
||||
[self reloadRow:task];
|
||||
}
|
||||
}
|
||||
}
|
||||
//when filtered
|
||||
// ->use filtered items
|
||||
else
|
||||
{
|
||||
//filtered items
|
||||
for(Task* task in self.taskTableController.filteredItems)
|
||||
{
|
||||
//check for match
|
||||
if(task.binary == binary)
|
||||
{
|
||||
//reload
|
||||
[self reloadRow:task];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}//top pane
|
||||
|
||||
//bottom pane
|
||||
// ->can just invoke 'reloadRow' method (which has logic to handle filtering, ignoring 'not found' items, etc.
|
||||
else
|
||||
{
|
||||
//reload
|
||||
[self reloadRow:binary];
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
//display alert about OS not being supported
|
||||
-(void)showUnsupportedAlert
|
||||
{
|
||||
|
||||
@@ -27,17 +27,18 @@
|
||||
@property (weak) IBOutlet NSTextField *arguments;
|
||||
|
||||
|
||||
|
||||
//file window specific outlets
|
||||
@property(weak)IBOutlet NSTextField *hashes;
|
||||
@property(weak)IBOutlet NSTextField *size;
|
||||
@property(weak)IBOutlet NSTextField *sign;
|
||||
|
||||
//file window specific outlets
|
||||
@property (weak) IBOutlet NSTextField *type;
|
||||
|
||||
|
||||
@property (weak) IBOutlet NSTextField *plist;
|
||||
|
||||
//extension window specific outlets
|
||||
@property (weak) IBOutlet NSTextField *details;
|
||||
@property (weak) IBOutlet NSTextField *identifier;
|
||||
|
||||
//window controller
|
||||
@property(nonatomic, strong)InfoWindowController *windowController;
|
||||
|
||||
+62
-39
@@ -54,6 +54,14 @@
|
||||
//load nib
|
||||
self.windowController = [[InfoWindowController alloc] initWithWindowNibName:@"DylibInfoWindow"];
|
||||
}
|
||||
//load file info window
|
||||
else if(YES == [selectedItem isKindOfClass:[File class]])
|
||||
{
|
||||
//load nib
|
||||
self.windowController = [[InfoWindowController alloc] initWithWindowNibName:@"FileInfoWindow"];
|
||||
}
|
||||
|
||||
//TODO: file && network info view
|
||||
|
||||
/*TODO: delete this and xibs?
|
||||
|
||||
@@ -102,6 +110,10 @@
|
||||
// ->when showing info about a dylib
|
||||
Binary* dylib = nil;
|
||||
|
||||
//file
|
||||
// ->when showing info about a file
|
||||
File* file = nil;
|
||||
|
||||
//handle tasks
|
||||
if(YES == [self.itemObj isKindOfClass:[Task class]])
|
||||
{
|
||||
@@ -139,6 +151,13 @@
|
||||
//set path
|
||||
[self.path setStringValue:[self valueForStringItem:task.binary.path default:@"unknown"]];
|
||||
|
||||
//hashes could still be, being generated
|
||||
// ->but don't want to wait, so just created em directly
|
||||
if(nil == task.binary.hashes[KEY_HASH_MD5])
|
||||
{
|
||||
//save hash
|
||||
task.binary.hashes = hashFile(task.binary.path);
|
||||
}
|
||||
|
||||
//set hash
|
||||
[self.hashes setStringValue:[NSString stringWithFormat:@"%@ / %@", task.binary.hashes[KEY_HASH_MD5], task.binary.hashes[KEY_HASH_SHA1]]];
|
||||
@@ -149,11 +168,19 @@
|
||||
//set date
|
||||
[self.date setStringValue:[NSString stringWithFormat:@"%@ (created) / %@ (modified)", task.binary.attributes.fileCreationDate, task.binary.attributes.fileModificationDate]];
|
||||
|
||||
//signing info still being generated?
|
||||
// ->but don't want to wait, so just created em directly
|
||||
if(nil == task.binary.signingInfo)
|
||||
{
|
||||
//generate signing info
|
||||
task.binary.signingInfo = extractSigningInfo(task.binary.path);
|
||||
}
|
||||
|
||||
//set signing info
|
||||
[self.sign setStringValue:[self valueForStringItem:[task.binary formatSigningInfo] default:@"not signed"]];
|
||||
}
|
||||
|
||||
//handle tasks
|
||||
//handle binaries
|
||||
else if(YES == [self.itemObj isKindOfClass:[Binary class]])
|
||||
{
|
||||
//type cast
|
||||
@@ -165,7 +192,7 @@
|
||||
//set name
|
||||
[self.name setStringValue:[self valueForStringItem:dylib.name default:@"unknown"]];
|
||||
|
||||
|
||||
//TODO: enable?!
|
||||
/*
|
||||
//flagged files
|
||||
// ->make name red!
|
||||
@@ -180,70 +207,66 @@
|
||||
//set path
|
||||
[self.path setStringValue:[self valueForStringItem:dylib.path default:@"unknown"]];
|
||||
|
||||
//hashes still being generated?
|
||||
// ->but don't want to wait, so just created em directly
|
||||
if(nil == dylib.hashes[KEY_HASH_MD5])
|
||||
{
|
||||
//save hash
|
||||
dylib.hashes = hashFile(dylib.path);
|
||||
}
|
||||
|
||||
//set hash
|
||||
[self.hashes setStringValue:[NSString stringWithFormat:@"%@ / %@", dylib.hashes[KEY_HASH_MD5], task.binary.hashes[KEY_HASH_SHA1]]];
|
||||
[self.hashes setStringValue:[NSString stringWithFormat:@"%@ / %@", dylib.hashes[KEY_HASH_MD5], dylib.hashes[KEY_HASH_SHA1]]];
|
||||
|
||||
//set size
|
||||
[self.size setStringValue:[NSString stringWithFormat:@"%llu bytes", dylib.attributes.fileSize]];
|
||||
|
||||
//set date
|
||||
[self.date setStringValue:[NSString stringWithFormat:@"%@ (created) / %@ (modified)", dylib.attributes.fileCreationDate, task.binary.attributes.fileModificationDate]];
|
||||
[self.date setStringValue:[NSString stringWithFormat:@"%@ (created) / %@ (modified)", dylib.attributes.fileCreationDate, dylib.attributes.fileModificationDate]];
|
||||
|
||||
//signing info still being generated?
|
||||
// ->but don't want to wait, so just created em directly
|
||||
if(nil == dylib.signingInfo)
|
||||
{
|
||||
//generate signing info
|
||||
dylib.signingInfo = extractSigningInfo(dylib.path);
|
||||
}
|
||||
|
||||
//set signing info
|
||||
[self.sign setStringValue:[self valueForStringItem:[dylib formatSigningInfo] default:@"not signed"]];
|
||||
}
|
||||
|
||||
|
||||
//handle File class
|
||||
else if(YES == [self.itemObj isKindOfClass:[File class]])
|
||||
{
|
||||
//typecast
|
||||
file = (File*)self.itemObj;
|
||||
|
||||
//first check if detailed info (such as 'type') was generated yet
|
||||
// ->when not, do it directly here
|
||||
if(nil == file.type)
|
||||
{
|
||||
//generated detailed info
|
||||
[file generateDetailedInfo];
|
||||
}
|
||||
|
||||
//set icon
|
||||
self.icon.image = getIconForBinary(self.itemObj.path, ((File*)itemObj).bundle);
|
||||
self.icon.image = itemObj.icon;
|
||||
|
||||
//set name
|
||||
[self.name setStringValue:self.itemObj.name];
|
||||
|
||||
/*
|
||||
|
||||
//flagged files
|
||||
// ->make name red!
|
||||
if( (nil != ((Binary*)self.itemObj).vtInfo) &&
|
||||
(0 != [((File*)self.itemObj).vtInfo[VT_RESULTS_POSITIVES] unsignedIntegerValue]) )
|
||||
{
|
||||
//set color (light red)
|
||||
self.name.textColor = [NSColor redColor];
|
||||
}
|
||||
|
||||
*/
|
||||
|
||||
//set path
|
||||
[self.path setStringValue:self.itemObj.path];
|
||||
|
||||
//set hash
|
||||
[self.hashes setStringValue:[NSString stringWithFormat:@"%@ / %@", ((File*)self.itemObj).hashes[KEY_HASH_MD5], ((File*)self.itemObj).hashes[KEY_HASH_SHA1]]];
|
||||
//set type
|
||||
[self.type setStringValue:[self valueForStringItem:((File*)self.itemObj).type default:@"unknown"]];
|
||||
|
||||
//set size
|
||||
[self.size setStringValue:[NSString stringWithFormat:@"%llu bytes", ((File*)self.itemObj).attributes.fileSize]];
|
||||
[self.size setStringValue:[NSString stringWithFormat:@"%llu bytes", self.itemObj.attributes.fileSize]];
|
||||
|
||||
//set date
|
||||
[self.date setStringValue:[NSString stringWithFormat:@"%@ (created) / %@ (modified)", ((File*)self.itemObj).attributes.fileCreationDate, ((File*)self.itemObj).attributes.fileModificationDate]];
|
||||
|
||||
//set plist
|
||||
if(nil != ((File*)self.itemObj).plist)
|
||||
{
|
||||
//set
|
||||
[self.plist setStringValue:((File*)self.itemObj).plist];
|
||||
}
|
||||
//no plist
|
||||
else
|
||||
{
|
||||
//set
|
||||
[self.plist setStringValue:@"no plist for item"];
|
||||
}
|
||||
|
||||
//set signing info
|
||||
[self.sign setStringValue:[(File*)self.itemObj formatSigningInfo]];
|
||||
[self.date setStringValue:[NSString stringWithFormat:@"%@ (created) / %@ (modified)", self.itemObj.attributes.fileCreationDate, self.itemObj.attributes.fileModificationDate]];
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
+7
-22
@@ -9,7 +9,7 @@
|
||||
#import "ItemBase.h"
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
#import <CommonCrypto/CommonDigest.h>
|
||||
|
||||
|
||||
@interface File : ItemBase
|
||||
{
|
||||
@@ -18,25 +18,8 @@
|
||||
|
||||
/* PROPERTIES */
|
||||
|
||||
//name
|
||||
@property(nonatomic, retain)NSString* name;
|
||||
|
||||
//path
|
||||
@property(nonatomic, retain)NSString* path;
|
||||
|
||||
//plist
|
||||
@property(nonatomic, retain)NSString* plist;
|
||||
|
||||
//bundle
|
||||
@property(nonatomic, retain)NSBundle* bundle;
|
||||
|
||||
//hashes (md5, sha1)
|
||||
@property(nonatomic, retain)NSDictionary* hashes;
|
||||
|
||||
//signing info
|
||||
@property(nonatomic, retain)NSDictionary* signingInfo;
|
||||
|
||||
|
||||
//type
|
||||
@property(nonatomic, retain)NSString* type;
|
||||
|
||||
|
||||
/* METHODS */
|
||||
@@ -48,8 +31,10 @@
|
||||
// ->only shown to user if they click 'info' so this method is called in the background
|
||||
-(void)generateDetailedInfo;
|
||||
|
||||
//format the signing info dictionary
|
||||
-(NSString*)formatSigningInfo;
|
||||
//set file type
|
||||
// ->invokes 'file' cmd, the parses out result
|
||||
-(void)setFileType;
|
||||
|
||||
|
||||
|
||||
@end
|
||||
|
||||
+65
-57
@@ -14,19 +14,13 @@
|
||||
|
||||
@implementation File
|
||||
|
||||
@synthesize path;
|
||||
@synthesize name;
|
||||
@synthesize plist;
|
||||
@synthesize bundle;
|
||||
@synthesize hashes;
|
||||
@synthesize signingInfo;
|
||||
|
||||
//@synthesize vtInfo;
|
||||
@synthesize type;
|
||||
|
||||
|
||||
//init method
|
||||
-(id)initWithParams:(NSDictionary*)params
|
||||
{
|
||||
//TODO: why care if dir?
|
||||
//flag for directories
|
||||
BOOL isDirectory = NO;
|
||||
|
||||
@@ -49,46 +43,15 @@
|
||||
goto bail;
|
||||
}
|
||||
|
||||
//if path is directory
|
||||
// ->treat is as a bundle
|
||||
if(YES == isDirectory)
|
||||
{
|
||||
//load bundle
|
||||
// ->save this into 'bundle' iVar
|
||||
if(nil == (bundle = [NSBundle bundleWithPath:params[KEY_RESULT_PATH]]))
|
||||
{
|
||||
//err msg
|
||||
NSLog(@"OBJECTIVE-SEE ERROR: couldn't create bundle for %@", params[KEY_RESULT_PATH]);
|
||||
|
||||
//set self to nil
|
||||
self = nil;
|
||||
|
||||
//bail
|
||||
goto bail;
|
||||
}
|
||||
|
||||
//extract executable from bundle
|
||||
// ->save this into 'path' iVar
|
||||
if(nil == (self.path = self.bundle.executablePath))
|
||||
{
|
||||
//err msg
|
||||
//NSLog(@"OBJECTIVE-SEE ERROR: couldn't find executable in bundle %@", itemPath);
|
||||
|
||||
//set self to nil
|
||||
self = nil;
|
||||
|
||||
//bail
|
||||
goto bail;
|
||||
}
|
||||
}
|
||||
|
||||
//save (optional) plist
|
||||
// ->ok if this is nil
|
||||
self.plist = params[KEY_RESULT_PLIST];
|
||||
|
||||
//extract name
|
||||
self.name = [[self.path lastPathComponent] stringByDeletingPathExtension];
|
||||
|
||||
//set icon
|
||||
self.icon = [[NSWorkspace sharedWorkspace] iconForFile:self.path];
|
||||
|
||||
//grab attributes
|
||||
self.attributes = [[NSFileManager defaultManager] attributesOfItemAtPath:self.path error:nil];
|
||||
|
||||
}
|
||||
|
||||
//bail
|
||||
@@ -97,21 +60,62 @@ bail:
|
||||
return self;
|
||||
}
|
||||
|
||||
//set file type
|
||||
// ->invokes 'file' cmd, the parses out result
|
||||
-(void)setFileType
|
||||
{
|
||||
//results from 'file' cmd
|
||||
NSString* results = nil;
|
||||
|
||||
//array of parsed results
|
||||
NSArray* parsedResults = nil;
|
||||
|
||||
//exec 'file' to get file type
|
||||
results = [[NSString alloc] initWithData:execTask(@"/usr/bin/file", @[self.path]) encoding:NSUTF8StringEncoding];
|
||||
|
||||
//sanity check
|
||||
if(nil == results)
|
||||
{
|
||||
//bail
|
||||
goto bail;
|
||||
}
|
||||
|
||||
//parse results
|
||||
// ->format: <file path>: <file types>
|
||||
parsedResults = [results componentsSeparatedByCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@":\n"]];
|
||||
|
||||
//sanity check
|
||||
// ->should be two items in array, <file path> and <file type>
|
||||
if(parsedResults.count < 2)
|
||||
{
|
||||
//bail
|
||||
goto bail;
|
||||
}
|
||||
|
||||
//file type comes second
|
||||
// ->also trim whitespace
|
||||
self.type = [parsedResults[1] stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
|
||||
|
||||
//bail
|
||||
bail:
|
||||
;
|
||||
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
//get detailed info (which takes a while to generate)
|
||||
// ->only shown to user if they click 'info' so this method is called in the background
|
||||
-(void)generateDetailedInfo
|
||||
{
|
||||
//grab attributes
|
||||
//TODO: done elsewhere?
|
||||
self.attributes = [[NSFileManager defaultManager] attributesOfItemAtPath:self.path error:nil];
|
||||
|
||||
//computes hashes
|
||||
// ->set 'md5' and 'sha1' iVars
|
||||
self.hashes = hashFile(self.path);
|
||||
//set type
|
||||
[self setFileType];
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
//convert object to JSON string
|
||||
-(NSString*)toJSON
|
||||
{
|
||||
@@ -120,25 +124,26 @@ bail:
|
||||
|
||||
//json data
|
||||
// ->for intermediate conversions
|
||||
NSData *jsonData = nil;
|
||||
//NSData *jsonData = nil;
|
||||
|
||||
//plist
|
||||
NSString* filePlist = nil;
|
||||
|
||||
//hashes
|
||||
NSString* fileHashes = nil;
|
||||
//NSString* fileHashes = nil;
|
||||
|
||||
//signing info
|
||||
NSString* fileSigs = nil;
|
||||
//NSString* fileSigs = nil;
|
||||
|
||||
//init file hash to default string
|
||||
// ->used when hashes are nil, or serialization fails
|
||||
fileHashes = @"\"unknown\"";
|
||||
//fileHashes = @"\"unknown\"";
|
||||
|
||||
//init file signature to default string
|
||||
// ->used when signatures are nil, or serialization fails
|
||||
fileSigs = @"\"unknown\"";
|
||||
//fileSigs = @"\"unknown\"";
|
||||
|
||||
/*
|
||||
//convert hashes to JSON
|
||||
if(nil != self.hashes)
|
||||
{
|
||||
@@ -201,8 +206,11 @@ bail:
|
||||
//init VT detection ratio
|
||||
//vtDetectionRatio = [NSString stringWithFormat:@"%lu/%lu", (unsigned long)[self.vtInfo[VT_RESULTS_POSITIVES] unsignedIntegerValue], (unsigned long)[self.vtInfo[VT_RESULTS_TOTAL] unsignedIntegerValue]];
|
||||
|
||||
|
||||
//init json
|
||||
json = [NSString stringWithFormat:@"\"name\": \"%@\", \"path\": \"%@\", \"plist\": \"%@\", \"hashes\": %@, \"signature(s)\": %@", self.name, self.path, filePlist, fileHashes, fileSigs];
|
||||
|
||||
*/
|
||||
|
||||
return json;
|
||||
}
|
||||
|
||||
@@ -35,7 +35,6 @@
|
||||
|
||||
//start it
|
||||
[self.qProcessorThread start];
|
||||
|
||||
}
|
||||
|
||||
return self;
|
||||
@@ -86,7 +85,7 @@
|
||||
//process
|
||||
//->for now, just hash, etc
|
||||
[binary generateDetailedInfo];
|
||||
|
||||
|
||||
//add item for VT processing
|
||||
[vtObject addItem:binary];
|
||||
|
||||
|
||||
@@ -399,6 +399,7 @@ bail:
|
||||
//add to task's dylibs
|
||||
[self.dylibs addObject:dylib];
|
||||
}
|
||||
|
||||
} //all dylibs
|
||||
|
||||
//sync to sort
|
||||
@@ -417,29 +418,30 @@ bail:
|
||||
// ->this will only reload if new task is the currently selected one, etc
|
||||
[((AppDelegate*)[[NSApplication sharedApplication] delegate]) reloadBottomPane:self itemView:DYLIBS_VIEW];
|
||||
|
||||
//complete dylib processing
|
||||
//complete dylib processing for new dylib
|
||||
// ->get signing info, hash, etc, & save into global list
|
||||
// ...reloads each row (if task is stil current)
|
||||
for(Binary* newDylib in newDylibs)
|
||||
{
|
||||
//generate signing info
|
||||
[newDylib generatedSigningInfo];
|
||||
|
||||
//no need to reload if task is now longer current/selected
|
||||
if(((AppDelegate*)[[NSApplication sharedApplication] delegate]).currentTask != self)
|
||||
{
|
||||
//skip reload
|
||||
continue;
|
||||
}
|
||||
|
||||
//reload row
|
||||
[((AppDelegate*)[[NSApplication sharedApplication] delegate]) reloadRow:newDylib];
|
||||
}
|
||||
|
||||
//any new dylibs?
|
||||
// ->reload bottom pane to update signing info, etc
|
||||
if(0 != newDylibs.count)
|
||||
{
|
||||
//reload
|
||||
[((AppDelegate*)[[NSApplication sharedApplication] delegate]) reloadBottomPane:self itemView:DYLIBS_VIEW];
|
||||
}
|
||||
|
||||
}];
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
|
||||
//enumerate all file descriptors
|
||||
-(void)enumerateFiles:(NSXPCConnection*)xpcConnection
|
||||
{
|
||||
|
||||
+9
-1
@@ -154,11 +154,19 @@
|
||||
//get task
|
||||
newTask = newTasks[key];
|
||||
|
||||
//don't need to regerate signing info if its already there
|
||||
// ->e.g. task is just another instance of the same binary
|
||||
if(nil != newTask.binary.signingInfo)
|
||||
{
|
||||
//skip
|
||||
continue;
|
||||
}
|
||||
|
||||
//generate signing info
|
||||
[newTask.binary generatedSigningInfo];
|
||||
|
||||
//reload task (row) in table
|
||||
[((AppDelegate*)[[NSApplication sharedApplication] delegate]) reloadRow:newTask item:newTask.binary pane:PANE_TOP];
|
||||
[((AppDelegate*)[[NSApplication sharedApplication] delegate]) reloadRow:newTask];
|
||||
|
||||
//reload bottom pane
|
||||
// ->this will only reload if new task is the currently selected one, etc
|
||||
|
||||
+138
-74
@@ -20,11 +20,11 @@
|
||||
ignoreCount = "0"
|
||||
continueAfterRunningActions = "No"
|
||||
filePath = "TaskEnumerator.m"
|
||||
timestampString = "456903878.108936"
|
||||
timestampString = "457149043.732031"
|
||||
startingColumnNumber = "9223372036854775807"
|
||||
endingColumnNumber = "9223372036854775807"
|
||||
startingLineNumber = "348"
|
||||
endingLineNumber = "348"
|
||||
startingLineNumber = "356"
|
||||
endingLineNumber = "356"
|
||||
landmarkName = "-removeTask:"
|
||||
landmarkType = "5">
|
||||
</BreakpointContent>
|
||||
@@ -36,11 +36,11 @@
|
||||
ignoreCount = "0"
|
||||
continueAfterRunningActions = "No"
|
||||
filePath = "AppDelegate.m"
|
||||
timestampString = "456993845.79535"
|
||||
timestampString = "457155963.943682"
|
||||
startingColumnNumber = "9223372036854775807"
|
||||
endingColumnNumber = "9223372036854775807"
|
||||
startingLineNumber = "771"
|
||||
endingLineNumber = "771"
|
||||
startingLineNumber = "775"
|
||||
endingLineNumber = "775"
|
||||
landmarkName = "-reloadTaskTable"
|
||||
landmarkType = "5">
|
||||
</BreakpointContent>
|
||||
@@ -116,7 +116,7 @@
|
||||
ignoreCount = "0"
|
||||
continueAfterRunningActions = "No"
|
||||
filePath = "AppDelegate.m"
|
||||
timestampString = "456992198.722928"
|
||||
timestampString = "457149043.732031"
|
||||
startingColumnNumber = "9223372036854775807"
|
||||
endingColumnNumber = "9223372036854775807"
|
||||
startingLineNumber = "320"
|
||||
@@ -167,22 +167,6 @@
|
||||
landmarkType = "5">
|
||||
</BreakpointContent>
|
||||
</BreakpointProxy>
|
||||
<BreakpointProxy
|
||||
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
|
||||
<BreakpointContent
|
||||
shouldBeEnabled = "No"
|
||||
ignoreCount = "0"
|
||||
continueAfterRunningActions = "No"
|
||||
filePath = "VirusTotal.m"
|
||||
timestampString = "456638843.665835"
|
||||
startingColumnNumber = "9223372036854775807"
|
||||
endingColumnNumber = "9223372036854775807"
|
||||
startingLineNumber = "654"
|
||||
endingLineNumber = "654"
|
||||
landmarkName = "-processResults:results:"
|
||||
landmarkType = "5">
|
||||
</BreakpointContent>
|
||||
</BreakpointProxy>
|
||||
<BreakpointProxy
|
||||
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
|
||||
<BreakpointContent
|
||||
@@ -190,11 +174,11 @@
|
||||
ignoreCount = "0"
|
||||
continueAfterRunningActions = "No"
|
||||
filePath = "AppDelegate.m"
|
||||
timestampString = "456993845.79535"
|
||||
timestampString = "457155963.943682"
|
||||
startingColumnNumber = "9223372036854775807"
|
||||
endingColumnNumber = "9223372036854775807"
|
||||
startingLineNumber = "541"
|
||||
endingLineNumber = "541"
|
||||
startingLineNumber = "479"
|
||||
endingLineNumber = "479"
|
||||
landmarkName = "-reloadBottomPane:itemView:"
|
||||
landmarkType = "5">
|
||||
</BreakpointContent>
|
||||
@@ -206,11 +190,11 @@
|
||||
ignoreCount = "0"
|
||||
continueAfterRunningActions = "No"
|
||||
filePath = "AppDelegate.m"
|
||||
timestampString = "456993845.79535"
|
||||
timestampString = "457155963.943682"
|
||||
startingColumnNumber = "9223372036854775807"
|
||||
endingColumnNumber = "9223372036854775807"
|
||||
startingLineNumber = "559"
|
||||
endingLineNumber = "559"
|
||||
startingLineNumber = "497"
|
||||
endingLineNumber = "497"
|
||||
landmarkName = "-reloadBottomPane:itemView:"
|
||||
landmarkType = "5">
|
||||
</BreakpointContent>
|
||||
@@ -311,22 +295,6 @@
|
||||
landmarkType = "5">
|
||||
</BreakpointContent>
|
||||
</BreakpointProxy>
|
||||
<BreakpointProxy
|
||||
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
|
||||
<BreakpointContent
|
||||
shouldBeEnabled = "No"
|
||||
ignoreCount = "0"
|
||||
continueAfterRunningActions = "No"
|
||||
filePath = "Task.m"
|
||||
timestampString = "456638843.665835"
|
||||
startingColumnNumber = "9223372036854775807"
|
||||
endingColumnNumber = "9223372036854775807"
|
||||
startingLineNumber = "433"
|
||||
endingLineNumber = "433"
|
||||
landmarkName = "-enumerateDylibs:allDylibs:"
|
||||
landmarkType = "5">
|
||||
</BreakpointContent>
|
||||
</BreakpointProxy>
|
||||
<BreakpointProxy
|
||||
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
|
||||
<BreakpointContent
|
||||
@@ -334,11 +302,11 @@
|
||||
ignoreCount = "0"
|
||||
continueAfterRunningActions = "No"
|
||||
filePath = "AppDelegate.m"
|
||||
timestampString = "456994072.431204"
|
||||
timestampString = "457155963.943682"
|
||||
startingColumnNumber = "9223372036854775807"
|
||||
endingColumnNumber = "9223372036854775807"
|
||||
startingLineNumber = "1695"
|
||||
endingLineNumber = "1695"
|
||||
startingLineNumber = "1699"
|
||||
endingLineNumber = "1699"
|
||||
landmarkName = "-filterTasks:"
|
||||
landmarkType = "5">
|
||||
</BreakpointContent>
|
||||
@@ -366,11 +334,11 @@
|
||||
ignoreCount = "0"
|
||||
continueAfterRunningActions = "No"
|
||||
filePath = "AppDelegate.m"
|
||||
timestampString = "456993845.79535"
|
||||
timestampString = "457155963.943682"
|
||||
startingColumnNumber = "9223372036854775807"
|
||||
endingColumnNumber = "9223372036854775807"
|
||||
startingLineNumber = "1464"
|
||||
endingLineNumber = "1464"
|
||||
startingLineNumber = "1468"
|
||||
endingLineNumber = "1468"
|
||||
landmarkName = "-selectBottomPaneContent:"
|
||||
landmarkType = "5">
|
||||
</BreakpointContent>
|
||||
@@ -382,7 +350,23 @@
|
||||
ignoreCount = "0"
|
||||
continueAfterRunningActions = "No"
|
||||
filePath = "AppDelegate.m"
|
||||
timestampString = "456993845.79535"
|
||||
timestampString = "457155963.943682"
|
||||
startingColumnNumber = "9223372036854775807"
|
||||
endingColumnNumber = "9223372036854775807"
|
||||
startingLineNumber = "1460"
|
||||
endingLineNumber = "1460"
|
||||
landmarkName = "-switchView:"
|
||||
landmarkType = "5">
|
||||
</BreakpointContent>
|
||||
</BreakpointProxy>
|
||||
<BreakpointProxy
|
||||
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
|
||||
<BreakpointContent
|
||||
shouldBeEnabled = "No"
|
||||
ignoreCount = "0"
|
||||
continueAfterRunningActions = "No"
|
||||
filePath = "AppDelegate.m"
|
||||
timestampString = "457155963.943682"
|
||||
startingColumnNumber = "9223372036854775807"
|
||||
endingColumnNumber = "9223372036854775807"
|
||||
startingLineNumber = "1456"
|
||||
@@ -398,27 +382,11 @@
|
||||
ignoreCount = "0"
|
||||
continueAfterRunningActions = "No"
|
||||
filePath = "AppDelegate.m"
|
||||
timestampString = "456993845.79535"
|
||||
timestampString = "457155963.943682"
|
||||
startingColumnNumber = "9223372036854775807"
|
||||
endingColumnNumber = "9223372036854775807"
|
||||
startingLineNumber = "1452"
|
||||
endingLineNumber = "1452"
|
||||
landmarkName = "-switchView:"
|
||||
landmarkType = "5">
|
||||
</BreakpointContent>
|
||||
</BreakpointProxy>
|
||||
<BreakpointProxy
|
||||
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
|
||||
<BreakpointContent
|
||||
shouldBeEnabled = "No"
|
||||
ignoreCount = "0"
|
||||
continueAfterRunningActions = "No"
|
||||
filePath = "AppDelegate.m"
|
||||
timestampString = "456994072.431204"
|
||||
startingColumnNumber = "9223372036854775807"
|
||||
endingColumnNumber = "9223372036854775807"
|
||||
startingLineNumber = "1580"
|
||||
endingLineNumber = "1580"
|
||||
startingLineNumber = "1584"
|
||||
endingLineNumber = "1584"
|
||||
landmarkName = "-controlTextDidChange:"
|
||||
landmarkType = "5">
|
||||
</BreakpointContent>
|
||||
@@ -446,11 +414,11 @@
|
||||
ignoreCount = "0"
|
||||
continueAfterRunningActions = "No"
|
||||
filePath = "AppDelegate.m"
|
||||
timestampString = "456994072.431204"
|
||||
timestampString = "457155963.943682"
|
||||
startingColumnNumber = "9223372036854775807"
|
||||
endingColumnNumber = "9223372036854775807"
|
||||
startingLineNumber = "1647"
|
||||
endingLineNumber = "1647"
|
||||
startingLineNumber = "1651"
|
||||
endingLineNumber = "1651"
|
||||
landmarkName = "-controlTextDidChange:"
|
||||
landmarkType = "5">
|
||||
</BreakpointContent>
|
||||
@@ -471,5 +439,101 @@
|
||||
landmarkType = "5">
|
||||
</BreakpointContent>
|
||||
</BreakpointProxy>
|
||||
<BreakpointProxy
|
||||
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
|
||||
<BreakpointContent
|
||||
shouldBeEnabled = "No"
|
||||
ignoreCount = "0"
|
||||
continueAfterRunningActions = "No"
|
||||
filePath = "Items/Binary.m"
|
||||
timestampString = "457135238.550795"
|
||||
startingColumnNumber = "9223372036854775807"
|
||||
endingColumnNumber = "9223372036854775807"
|
||||
startingLineNumber = "189"
|
||||
endingLineNumber = "189"
|
||||
landmarkName = "-formatSigningInfo"
|
||||
landmarkType = "5">
|
||||
</BreakpointContent>
|
||||
</BreakpointProxy>
|
||||
<BreakpointProxy
|
||||
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
|
||||
<BreakpointContent
|
||||
shouldBeEnabled = "No"
|
||||
ignoreCount = "0"
|
||||
continueAfterRunningActions = "No"
|
||||
filePath = "Items/File.m"
|
||||
timestampString = "457146476.499587"
|
||||
startingColumnNumber = "9223372036854775807"
|
||||
endingColumnNumber = "9223372036854775807"
|
||||
startingLineNumber = "65"
|
||||
endingLineNumber = "65"
|
||||
landmarkName = "-setFileType"
|
||||
landmarkType = "5">
|
||||
</BreakpointContent>
|
||||
</BreakpointProxy>
|
||||
<BreakpointProxy
|
||||
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
|
||||
<BreakpointContent
|
||||
shouldBeEnabled = "Yes"
|
||||
ignoreCount = "0"
|
||||
continueAfterRunningActions = "No"
|
||||
filePath = "InfoWindowController.m"
|
||||
timestampString = "457146576.340811"
|
||||
startingColumnNumber = "9223372036854775807"
|
||||
endingColumnNumber = "9223372036854775807"
|
||||
startingLineNumber = "250"
|
||||
endingLineNumber = "250"
|
||||
landmarkName = "-configure"
|
||||
landmarkType = "5">
|
||||
</BreakpointContent>
|
||||
</BreakpointProxy>
|
||||
<BreakpointProxy
|
||||
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
|
||||
<BreakpointContent
|
||||
shouldBeEnabled = "No"
|
||||
ignoreCount = "0"
|
||||
continueAfterRunningActions = "No"
|
||||
filePath = "Task.m"
|
||||
timestampString = "457151748.723229"
|
||||
startingColumnNumber = "9223372036854775807"
|
||||
endingColumnNumber = "9223372036854775807"
|
||||
startingLineNumber = "437"
|
||||
endingLineNumber = "437"
|
||||
landmarkName = "-enumerateDylibs:allDylibs:"
|
||||
landmarkType = "5">
|
||||
</BreakpointContent>
|
||||
</BreakpointProxy>
|
||||
<BreakpointProxy
|
||||
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
|
||||
<BreakpointContent
|
||||
shouldBeEnabled = "No"
|
||||
ignoreCount = "0"
|
||||
continueAfterRunningActions = "No"
|
||||
filePath = "AppDelegate.m"
|
||||
timestampString = "457155963.943682"
|
||||
startingColumnNumber = "9223372036854775807"
|
||||
endingColumnNumber = "9223372036854775807"
|
||||
startingLineNumber = "581"
|
||||
endingLineNumber = "581"
|
||||
landmarkName = "-reloadBinary:"
|
||||
landmarkType = "5">
|
||||
</BreakpointContent>
|
||||
</BreakpointProxy>
|
||||
<BreakpointProxy
|
||||
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
|
||||
<BreakpointContent
|
||||
shouldBeEnabled = "No"
|
||||
ignoreCount = "0"
|
||||
continueAfterRunningActions = "No"
|
||||
filePath = "AppDelegate.m"
|
||||
timestampString = "457155963.943682"
|
||||
startingColumnNumber = "9223372036854775807"
|
||||
endingColumnNumber = "9223372036854775807"
|
||||
startingLineNumber = "610"
|
||||
endingLineNumber = "610"
|
||||
landmarkName = "-reloadBinary:"
|
||||
landmarkType = "5">
|
||||
</BreakpointContent>
|
||||
</BreakpointProxy>
|
||||
</Breakpoints>
|
||||
</Bucket>
|
||||
|
||||
@@ -1361,10 +1361,9 @@ bail:
|
||||
|
||||
//bail
|
||||
bail:
|
||||
|
||||
;
|
||||
|
||||
return;
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
+8
-25
@@ -7,7 +7,6 @@
|
||||
<objects>
|
||||
<customObject id="-2" userLabel="File's Owner" customClass="InfoWindowController">
|
||||
<connections>
|
||||
<outlet property="arguments" destination="1eL-b7-I94" id="6GM-Ne-rgf"/>
|
||||
<outlet property="date" destination="Wbv-SK-w53" id="Li5-qD-Hxq"/>
|
||||
<outlet property="hashes" destination="GQc-va-MLN" id="ta6-6g-dzh"/>
|
||||
<outlet property="icon" destination="l8H-S3-g8O" id="P7o-8z-MjY"/>
|
||||
@@ -45,7 +44,7 @@
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="GMp-1g-TFI">
|
||||
<rect key="frame" x="8" y="84" width="59" height="18"/>
|
||||
<rect key="frame" x="8" y="122" width="59" height="18"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="right" title="hash:" id="fYa-Av-reX">
|
||||
<font key="font" size="11" name="Menlo-Bold"/>
|
||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||
@@ -53,7 +52,7 @@
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="GQc-va-MLN">
|
||||
<rect key="frame" x="75" y="84" width="555" height="18"/>
|
||||
<rect key="frame" x="75" y="122" width="555" height="18"/>
|
||||
<textFieldCell key="cell" lineBreakMode="truncatingTail" selectable="YES" allowsUndo="NO" sendsActionOnEndEditing="YES" alignment="left" title="item hash" id="yYo-KQ-DMm">
|
||||
<font key="font" size="11" name="Menlo-Regular"/>
|
||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||
@@ -61,7 +60,7 @@
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="hLU-fi-qXH">
|
||||
<rect key="frame" x="75" y="64" width="555" height="18"/>
|
||||
<rect key="frame" x="75" y="102" width="555" height="18"/>
|
||||
<textFieldCell key="cell" lineBreakMode="truncatingTail" selectable="YES" allowsUndo="NO" sendsActionOnEndEditing="YES" alignment="left" title="item size" id="XJ7-Go-bkG">
|
||||
<font key="font" size="11" name="Menlo-Regular"/>
|
||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||
@@ -69,7 +68,7 @@
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Wbv-SK-w53">
|
||||
<rect key="frame" x="75" y="43" width="555" height="18"/>
|
||||
<rect key="frame" x="75" y="81" width="555" height="18"/>
|
||||
<textFieldCell key="cell" lineBreakMode="truncatingTail" selectable="YES" allowsUndo="NO" sendsActionOnEndEditing="YES" alignment="left" title="item creation/modified" id="hR8-Wz-esN">
|
||||
<font key="font" size="11" name="Menlo-Regular"/>
|
||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||
@@ -77,7 +76,7 @@
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" setsMaxLayoutWidthAtFirstLayout="YES" translatesAutoresizingMaskIntoConstraints="NO" id="5Rx-Vm-7gm">
|
||||
<rect key="frame" x="75" y="6" width="554" height="34"/>
|
||||
<rect key="frame" x="75" y="44" width="554" height="34"/>
|
||||
<textFieldCell key="cell" selectable="YES" allowsUndo="NO" sendsActionOnEndEditing="YES" alignment="left" title="signing status" id="00d-h4-SPW">
|
||||
<font key="font" size="11" name="Menlo-Regular"/>
|
||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||
@@ -85,7 +84,7 @@
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="DFa-vc-wFY">
|
||||
<rect key="frame" x="8" y="64" width="59" height="18"/>
|
||||
<rect key="frame" x="8" y="102" width="59" height="18"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="right" title="size:" id="iBS-9J-ok9">
|
||||
<font key="font" size="11" name="Menlo-Bold"/>
|
||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||
@@ -93,7 +92,7 @@
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="tM6-Nq-1Rh">
|
||||
<rect key="frame" x="8" y="43" width="59" height="18"/>
|
||||
<rect key="frame" x="8" y="81" width="59" height="18"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="right" title="time:" id="U3V-A7-jO8">
|
||||
<font key="font" size="11" name="Menlo-Bold"/>
|
||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||
@@ -101,7 +100,7 @@
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="hel-J4-4Qt">
|
||||
<rect key="frame" x="8" y="23" width="59" height="18"/>
|
||||
<rect key="frame" x="8" y="61" width="59" height="18"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="right" title="sign:" id="ezp-TW-Xky">
|
||||
<font key="font" size="11" name="Menlo-Bold"/>
|
||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||
@@ -128,22 +127,6 @@
|
||||
<action selector="closeWindow:" target="-2" id="SSo-9s-xQz"/>
|
||||
</connections>
|
||||
</button>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="i1i-Er-lQW">
|
||||
<rect key="frame" x="8" y="110" width="59" height="18"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="right" title="args:" id="fZY-li-gtz">
|
||||
<font key="font" size="11" name="Menlo-Bold"/>
|
||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="1eL-b7-I94">
|
||||
<rect key="frame" x="74" y="110" width="555" height="18"/>
|
||||
<textFieldCell key="cell" lineBreakMode="truncatingTail" selectable="YES" allowsUndo="NO" sendsActionOnEndEditing="YES" alignment="left" title="item args" id="qTP-D2-QN6">
|
||||
<font key="font" size="11" name="Menlo-Regular"/>
|
||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
</subviews>
|
||||
</view>
|
||||
<connections>
|
||||
|
||||
+31
-65
@@ -1,20 +1,18 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="7702" systemVersion="14D136" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="7706" systemVersion="14D136" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
||||
<dependencies>
|
||||
<deployment identifier="macosx"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="7702"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="7706"/>
|
||||
</dependencies>
|
||||
<objects>
|
||||
<customObject id="-2" userLabel="File's Owner" customClass="InfoWindowController">
|
||||
<connections>
|
||||
<outlet property="date" destination="Wbv-SK-w53" id="Li5-qD-Hxq"/>
|
||||
<outlet property="hashes" destination="GQc-va-MLN" id="ta6-6g-dzh"/>
|
||||
<outlet property="icon" destination="l8H-S3-g8O" id="P7o-8z-MjY"/>
|
||||
<outlet property="name" destination="NA2-2e-4hN" id="0Lg-xP-m03"/>
|
||||
<outlet property="path" destination="dY9-WD-WAf" id="7Lg-cs-t0f"/>
|
||||
<outlet property="plist" destination="vm8-PU-Bu0" id="9mC-ha-tfK"/>
|
||||
<outlet property="sign" destination="5Rx-Vm-7gm" id="3g2-Ay-zQ4"/>
|
||||
<outlet property="size" destination="hLU-fi-qXH" id="wZf-h4-BKf"/>
|
||||
<outlet property="type" destination="Bu9-9m-qxq" id="1gQ-t9-2hh"/>
|
||||
<outlet property="window" destination="F0z-JX-Cv5" id="gIp-Ho-8D9"/>
|
||||
</connections>
|
||||
</customObject>
|
||||
@@ -22,14 +20,14 @@
|
||||
<customObject id="-3" userLabel="Application" customClass="NSObject"/>
|
||||
<window title="File Information" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" oneShot="NO" releasedWhenClosed="NO" animationBehavior="default" id="F0z-JX-Cv5">
|
||||
<windowStyleMask key="styleMask" titled="YES" closable="YES" texturedBackground="YES"/>
|
||||
<rect key="contentRect" x="196" y="240" width="646" height="260"/>
|
||||
<rect key="contentRect" x="196" y="240" width="646" height="193"/>
|
||||
<rect key="screenRect" x="0.0" y="0.0" width="1440" height="877"/>
|
||||
<view key="contentView" id="se5-gp-TjO">
|
||||
<rect key="frame" x="0.0" y="0.0" width="646" height="260"/>
|
||||
<rect key="frame" x="0.0" y="-5" width="646" height="193"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<subviews>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="NA2-2e-4hN">
|
||||
<rect key="frame" x="73" y="226" width="553" height="29"/>
|
||||
<rect key="frame" x="73" y="159" width="553" height="29"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" sendsActionOnEndEditing="YES" title="Item Name" id="pYD-IR-Vtv">
|
||||
<font key="font" size="20" name="Menlo-Regular"/>
|
||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||
@@ -37,31 +35,15 @@
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" setsMaxLayoutWidthAtFirstLayout="YES" translatesAutoresizingMaskIntoConstraints="NO" id="dY9-WD-WAf">
|
||||
<rect key="frame" x="75" y="191" width="553" height="34"/>
|
||||
<rect key="frame" x="75" y="124" width="553" height="34"/>
|
||||
<textFieldCell key="cell" selectable="YES" sendsActionOnEndEditing="YES" title="Item Path" id="MfU-Jb-agl">
|
||||
<font key="font" size="11" name="Menlo-Regular"/>
|
||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="GMp-1g-TFI">
|
||||
<rect key="frame" x="8" y="149" width="59" height="18"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="right" title="hash:" id="fYa-Av-reX">
|
||||
<font key="font" size="11" name="Menlo-Bold"/>
|
||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="GQc-va-MLN">
|
||||
<rect key="frame" x="75" y="149" width="555" height="18"/>
|
||||
<textFieldCell key="cell" lineBreakMode="truncatingTail" selectable="YES" allowsUndo="NO" sendsActionOnEndEditing="YES" alignment="left" title="item hash" id="yYo-KQ-DMm">
|
||||
<font key="font" size="11" name="Menlo-Regular"/>
|
||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="hLU-fi-qXH">
|
||||
<rect key="frame" x="75" y="129" width="555" height="18"/>
|
||||
<rect key="frame" x="75" y="72" width="555" height="18"/>
|
||||
<textFieldCell key="cell" lineBreakMode="truncatingTail" selectable="YES" allowsUndo="NO" sendsActionOnEndEditing="YES" alignment="left" title="item size" id="XJ7-Go-bkG">
|
||||
<font key="font" size="11" name="Menlo-Regular"/>
|
||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||
@@ -69,31 +51,15 @@
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Wbv-SK-w53">
|
||||
<rect key="frame" x="75" y="108" width="555" height="18"/>
|
||||
<rect key="frame" x="75" y="51" width="555" height="18"/>
|
||||
<textFieldCell key="cell" lineBreakMode="truncatingTail" selectable="YES" allowsUndo="NO" sendsActionOnEndEditing="YES" alignment="left" title="item creation/modified" id="hR8-Wz-esN">
|
||||
<font key="font" size="11" name="Menlo-Regular"/>
|
||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" setsMaxLayoutWidthAtFirstLayout="YES" translatesAutoresizingMaskIntoConstraints="NO" id="5Rx-Vm-7gm">
|
||||
<rect key="frame" x="75" y="51" width="554" height="34"/>
|
||||
<textFieldCell key="cell" selectable="YES" allowsUndo="NO" sendsActionOnEndEditing="YES" alignment="left" title="signing status" id="00d-h4-SPW">
|
||||
<font key="font" size="11" name="Menlo-Regular"/>
|
||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="vm8-PU-Bu0">
|
||||
<rect key="frame" x="76" y="88" width="554" height="18"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" allowsUndo="NO" sendsActionOnEndEditing="YES" alignment="left" title="plist" id="23w-N2-C5Z">
|
||||
<font key="font" size="11" name="Menlo-Regular"/>
|
||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="DFa-vc-wFY">
|
||||
<rect key="frame" x="8" y="129" width="59" height="18"/>
|
||||
<rect key="frame" x="8" y="72" width="59" height="18"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="right" title="size:" id="iBS-9J-ok9">
|
||||
<font key="font" size="11" name="Menlo-Bold"/>
|
||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||
@@ -101,41 +67,25 @@
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="tM6-Nq-1Rh">
|
||||
<rect key="frame" x="8" y="108" width="59" height="18"/>
|
||||
<rect key="frame" x="8" y="51" width="59" height="18"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="right" title="time:" id="U3V-A7-jO8">
|
||||
<font key="font" size="11" name="Menlo-Bold"/>
|
||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="hel-J4-4Qt">
|
||||
<rect key="frame" x="8" y="68" width="59" height="18"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="right" title="sign:" id="ezp-TW-Xky">
|
||||
<font key="font" size="11" name="Menlo-Bold"/>
|
||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="fAH-dm-SJe">
|
||||
<rect key="frame" x="8" y="88" width="59" height="18"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="right" title="list:" id="oqF-UL-ydq">
|
||||
<font key="font" size="11" name="Menlo-Bold"/>
|
||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<box verticalHuggingPriority="750" fixedFrame="YES" title="Box" boxType="separator" titlePosition="noTitle" translatesAutoresizingMaskIntoConstraints="NO" id="Oh7-Ag-bHc">
|
||||
<rect key="frame" x="22" y="181" width="604" height="5"/>
|
||||
<rect key="frame" x="22" y="114" width="604" height="5"/>
|
||||
<color key="borderColor" white="0.0" alpha="0.41999999999999998" colorSpace="calibratedWhite"/>
|
||||
<color key="fillColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
|
||||
<font key="titleFont" metaFont="system"/>
|
||||
</box>
|
||||
<imageView horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="l8H-S3-g8O">
|
||||
<rect key="frame" x="13" y="202" width="48" height="48"/>
|
||||
<rect key="frame" x="13" y="135" width="48" height="48"/>
|
||||
<imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" image="bug" id="w3z-uu-XKS"/>
|
||||
</imageView>
|
||||
<button verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="uJq-Bw-lDQ">
|
||||
<rect key="frame" x="552" y="12" width="82" height="32"/>
|
||||
<rect key="frame" x="552" y="13" width="82" height="32"/>
|
||||
<buttonCell key="cell" type="push" title="close" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="RwO-yA-Xwk">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" size="13" name="Menlo-Regular"/>
|
||||
@@ -144,12 +94,28 @@
|
||||
<action selector="closeWindow:" target="-2" id="SSo-9s-xQz"/>
|
||||
</connections>
|
||||
</button>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Bu9-9m-qxq">
|
||||
<rect key="frame" x="75" y="91" width="555" height="18"/>
|
||||
<textFieldCell key="cell" lineBreakMode="truncatingTail" selectable="YES" allowsUndo="NO" sendsActionOnEndEditing="YES" alignment="left" title="item type" id="TNK-yK-gRS">
|
||||
<font key="font" size="11" name="Menlo-Regular"/>
|
||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="dAA-QJ-YfR">
|
||||
<rect key="frame" x="8" y="91" width="59" height="18"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="right" title="type:" id="8kA-Mv-fof">
|
||||
<font key="font" size="11" name="Menlo-Bold"/>
|
||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
</subviews>
|
||||
</view>
|
||||
<connections>
|
||||
<outlet property="delegate" destination="-2" id="0bl-1N-AYu"/>
|
||||
</connections>
|
||||
<point key="canvasLocation" x="430" y="270"/>
|
||||
<point key="canvasLocation" x="430" y="236.5"/>
|
||||
</window>
|
||||
</objects>
|
||||
<resources>
|
||||
|
||||
+32
-32
@@ -22,14 +22,14 @@
|
||||
<customObject id="-3" userLabel="Application" customClass="NSObject"/>
|
||||
<window title="Task File Information" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" oneShot="NO" releasedWhenClosed="NO" animationBehavior="default" id="F0z-JX-Cv5">
|
||||
<windowStyleMask key="styleMask" titled="YES" closable="YES" texturedBackground="YES"/>
|
||||
<rect key="contentRect" x="196" y="240" width="646" height="220"/>
|
||||
<rect key="contentRect" x="196" y="240" width="646" height="251"/>
|
||||
<rect key="screenRect" x="0.0" y="0.0" width="1440" height="877"/>
|
||||
<view key="contentView" id="se5-gp-TjO">
|
||||
<rect key="frame" x="0.0" y="-1" width="646" height="220"/>
|
||||
<rect key="frame" x="0.0" y="-1" width="646" height="251"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<subviews>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="NA2-2e-4hN">
|
||||
<rect key="frame" x="73" y="186" width="553" height="29"/>
|
||||
<rect key="frame" x="73" y="217" width="553" height="29"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" sendsActionOnEndEditing="YES" title="Item Name" id="pYD-IR-Vtv">
|
||||
<font key="font" size="20" name="Menlo-Regular"/>
|
||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||
@@ -37,7 +37,7 @@
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" setsMaxLayoutWidthAtFirstLayout="YES" translatesAutoresizingMaskIntoConstraints="NO" id="dY9-WD-WAf">
|
||||
<rect key="frame" x="75" y="151" width="553" height="34"/>
|
||||
<rect key="frame" x="75" y="182" width="553" height="34"/>
|
||||
<textFieldCell key="cell" selectable="YES" sendsActionOnEndEditing="YES" title="Item Path" id="MfU-Jb-agl">
|
||||
<font key="font" size="11" name="Menlo-Regular"/>
|
||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||
@@ -45,7 +45,7 @@
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="GMp-1g-TFI">
|
||||
<rect key="frame" x="8" y="84" width="59" height="18"/>
|
||||
<rect key="frame" x="8" y="115" width="59" height="18"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="right" title="hash:" id="fYa-Av-reX">
|
||||
<font key="font" size="11" name="Menlo-Bold"/>
|
||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||
@@ -53,7 +53,7 @@
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="GQc-va-MLN">
|
||||
<rect key="frame" x="75" y="84" width="555" height="18"/>
|
||||
<rect key="frame" x="75" y="115" width="555" height="18"/>
|
||||
<textFieldCell key="cell" lineBreakMode="truncatingTail" selectable="YES" allowsUndo="NO" sendsActionOnEndEditing="YES" alignment="left" title="item hash" id="yYo-KQ-DMm">
|
||||
<font key="font" size="11" name="Menlo-Regular"/>
|
||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||
@@ -61,7 +61,7 @@
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="hLU-fi-qXH">
|
||||
<rect key="frame" x="75" y="64" width="555" height="18"/>
|
||||
<rect key="frame" x="75" y="95" width="555" height="18"/>
|
||||
<textFieldCell key="cell" lineBreakMode="truncatingTail" selectable="YES" allowsUndo="NO" sendsActionOnEndEditing="YES" alignment="left" title="item size" id="XJ7-Go-bkG">
|
||||
<font key="font" size="11" name="Menlo-Regular"/>
|
||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||
@@ -69,7 +69,7 @@
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Wbv-SK-w53">
|
||||
<rect key="frame" x="75" y="43" width="555" height="18"/>
|
||||
<rect key="frame" x="75" y="74" width="555" height="18"/>
|
||||
<textFieldCell key="cell" lineBreakMode="truncatingTail" selectable="YES" allowsUndo="NO" sendsActionOnEndEditing="YES" alignment="left" title="item creation/modified" id="hR8-Wz-esN">
|
||||
<font key="font" size="11" name="Menlo-Regular"/>
|
||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||
@@ -77,7 +77,7 @@
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" setsMaxLayoutWidthAtFirstLayout="YES" translatesAutoresizingMaskIntoConstraints="NO" id="5Rx-Vm-7gm">
|
||||
<rect key="frame" x="75" y="6" width="554" height="34"/>
|
||||
<rect key="frame" x="75" y="37" width="554" height="34"/>
|
||||
<textFieldCell key="cell" selectable="YES" allowsUndo="NO" sendsActionOnEndEditing="YES" alignment="left" title="signing status" id="00d-h4-SPW">
|
||||
<font key="font" size="11" name="Menlo-Regular"/>
|
||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||
@@ -85,7 +85,7 @@
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="DFa-vc-wFY">
|
||||
<rect key="frame" x="8" y="64" width="59" height="18"/>
|
||||
<rect key="frame" x="8" y="95" width="59" height="18"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="right" title="size:" id="iBS-9J-ok9">
|
||||
<font key="font" size="11" name="Menlo-Bold"/>
|
||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||
@@ -93,7 +93,7 @@
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="tM6-Nq-1Rh">
|
||||
<rect key="frame" x="8" y="43" width="59" height="18"/>
|
||||
<rect key="frame" x="8" y="74" width="59" height="18"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="right" title="time:" id="U3V-A7-jO8">
|
||||
<font key="font" size="11" name="Menlo-Bold"/>
|
||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||
@@ -101,7 +101,7 @@
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="hel-J4-4Qt">
|
||||
<rect key="frame" x="8" y="23" width="59" height="18"/>
|
||||
<rect key="frame" x="8" y="54" width="59" height="18"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="right" title="sign:" id="ezp-TW-Xky">
|
||||
<font key="font" size="11" name="Menlo-Bold"/>
|
||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||
@@ -109,17 +109,33 @@
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<box verticalHuggingPriority="750" fixedFrame="YES" title="Box" boxType="separator" titlePosition="noTitle" translatesAutoresizingMaskIntoConstraints="NO" id="Oh7-Ag-bHc">
|
||||
<rect key="frame" x="22" y="141" width="604" height="5"/>
|
||||
<rect key="frame" x="22" y="172" width="604" height="5"/>
|
||||
<color key="borderColor" white="0.0" alpha="0.41999999999999998" colorSpace="calibratedWhite"/>
|
||||
<color key="fillColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
|
||||
<font key="titleFont" metaFont="system"/>
|
||||
</box>
|
||||
<imageView horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="l8H-S3-g8O">
|
||||
<rect key="frame" x="13" y="162" width="48" height="48"/>
|
||||
<rect key="frame" x="13" y="193" width="48" height="48"/>
|
||||
<imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" image="bug" id="w3z-uu-XKS"/>
|
||||
</imageView>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="i1i-Er-lQW">
|
||||
<rect key="frame" x="8" y="141" width="59" height="18"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="right" title="args:" id="fZY-li-gtz">
|
||||
<font key="font" size="11" name="Menlo-Bold"/>
|
||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="1eL-b7-I94">
|
||||
<rect key="frame" x="74" y="141" width="555" height="18"/>
|
||||
<textFieldCell key="cell" lineBreakMode="truncatingTail" selectable="YES" allowsUndo="NO" sendsActionOnEndEditing="YES" alignment="left" title="item args" id="qTP-D2-QN6">
|
||||
<font key="font" size="11" name="Menlo-Regular"/>
|
||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<button verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="uJq-Bw-lDQ">
|
||||
<rect key="frame" x="552" y="9" width="82" height="32"/>
|
||||
<rect key="frame" x="552" y="6" width="82" height="32"/>
|
||||
<buttonCell key="cell" type="push" title="close" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="RwO-yA-Xwk">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" size="13" name="Menlo-Regular"/>
|
||||
@@ -128,28 +144,12 @@
|
||||
<action selector="closeWindow:" target="-2" id="SSo-9s-xQz"/>
|
||||
</connections>
|
||||
</button>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="i1i-Er-lQW">
|
||||
<rect key="frame" x="8" y="110" width="59" height="18"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="right" title="args:" id="fZY-li-gtz">
|
||||
<font key="font" size="11" name="Menlo-Bold"/>
|
||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="1eL-b7-I94">
|
||||
<rect key="frame" x="74" y="110" width="555" height="18"/>
|
||||
<textFieldCell key="cell" lineBreakMode="truncatingTail" selectable="YES" allowsUndo="NO" sendsActionOnEndEditing="YES" alignment="left" title="item args" id="qTP-D2-QN6">
|
||||
<font key="font" size="11" name="Menlo-Regular"/>
|
||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
</subviews>
|
||||
</view>
|
||||
<connections>
|
||||
<outlet property="delegate" destination="-2" id="0bl-1N-AYu"/>
|
||||
</connections>
|
||||
<point key="canvasLocation" x="430" y="250"/>
|
||||
<point key="canvasLocation" x="430" y="265.5"/>
|
||||
</window>
|
||||
</objects>
|
||||
<resources>
|
||||
|
||||
+4
-50
@@ -649,11 +649,7 @@ bail:
|
||||
{
|
||||
//queried binary obj
|
||||
Binary* queriedItem = nil;
|
||||
|
||||
//flag for top pane reload
|
||||
// ->will be set if any of the queried binaries are a task executable
|
||||
BOOL reloadTopPane = NO;
|
||||
|
||||
|
||||
//process all results
|
||||
// ->save VT result dictionary into File obj
|
||||
for(NSDictionary* result in results[VT_RESULTS])
|
||||
@@ -672,56 +668,14 @@ bail:
|
||||
//save VT results into item
|
||||
queriedItem.vtInfo = result;
|
||||
|
||||
//for task executables
|
||||
// ->set flag to reload top
|
||||
if(YES == queriedItem.isTaskBinary)
|
||||
{
|
||||
//set
|
||||
reloadTopPane = YES;
|
||||
}
|
||||
//for dylibs
|
||||
// ->no dups, update each via row reload
|
||||
else
|
||||
{
|
||||
//update
|
||||
[self updateUI:queriedItem];
|
||||
}
|
||||
//callback to smartly reload
|
||||
[((AppDelegate*)[[NSApplication sharedApplication] delegate]) reloadBinary:queriedItem];
|
||||
|
||||
|
||||
//TODO: do something with detections!?
|
||||
//if(0 != [result[VT_RESULTS_POSITIVES] unsignedIntegerValue])
|
||||
}
|
||||
|
||||
//reload top pane
|
||||
// ->do full since there might be dups (e.g. Chrome Helper)
|
||||
if(YES == reloadTopPane)
|
||||
{
|
||||
//reload
|
||||
[self updateUI:nil];
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
//call back up to update item in UI
|
||||
// ->will either reload task table (top), or just row in item (bottom) table
|
||||
-(void)updateUI:(Binary*)item
|
||||
{
|
||||
//handle case where item is a task (top)
|
||||
// ->fully reload task table (since there can be dups)
|
||||
if( (nil == item) ||
|
||||
(YES == item.isTaskBinary) )
|
||||
{
|
||||
//reload
|
||||
[((AppDelegate*)[[NSApplication sharedApplication] delegate]) reloadTaskTable];
|
||||
}
|
||||
//handle case where item is a dylib (bottom)
|
||||
// ->just reload row
|
||||
else
|
||||
{
|
||||
//reload row
|
||||
[((AppDelegate*)[[NSApplication sharedApplication] delegate]) reloadRow:nil item:item pane:PANE_BOTTOM];
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
+31
-31
@@ -45,37 +45,27 @@
|
||||
</menu>
|
||||
<window allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" releasedWhenClosed="NO" showsToolbarButton="NO" animationBehavior="default" id="371">
|
||||
<windowStyleMask key="styleMask" titled="YES" closable="YES" miniaturizable="YES" resizable="YES" unifiedTitleAndToolbar="YES"/>
|
||||
<rect key="contentRect" x="0.0" y="0.0" width="1353" height="675"/>
|
||||
<rect key="contentRect" x="0.0" y="0.0" width="1353" height="660"/>
|
||||
<rect key="screenRect" x="0.0" y="0.0" width="1440" height="877"/>
|
||||
<value key="minSize" type="size" width="1000" height="650"/>
|
||||
<value key="maxSize" type="size" width="2000" height="650"/>
|
||||
<view key="contentView" id="372">
|
||||
<rect key="frame" x="0.0" y="-2" width="1353" height="675"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="1353" height="660"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<subviews>
|
||||
<progressIndicator hidden="YES" horizontalHuggingPriority="750" verticalHuggingPriority="750" fixedFrame="YES" maxValue="100" bezeled="NO" indeterminate="YES" style="spinning" translatesAutoresizingMaskIntoConstraints="NO" id="839">
|
||||
<rect key="frame" x="1157" y="-121" width="32" height="32"/>
|
||||
<rect key="frame" x="1157" y="-136" width="32" height="32"/>
|
||||
</progressIndicator>
|
||||
<textField hidden="YES" horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="745">
|
||||
<rect key="frame" x="869" y="-112" width="268" height="18"/>
|
||||
<rect key="frame" x="869" y="-127" width="268" height="18"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="right" title="status..." id="748">
|
||||
<font key="font" size="13" name="Menlo-Regular"/>
|
||||
<color key="textColor" red="0.20000000000000001" green="0.67450980392156867" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<button ambiguous="YES" misplaced="YES" tag="1002" translatesAutoresizingMaskIntoConstraints="NO" id="HoI-FQ-vTI">
|
||||
<rect key="frame" x="640" y="22" width="29" height="32"/>
|
||||
<buttonCell key="cell" type="bevel" bezelStyle="rounded" image="logoApple" imagePosition="only" alignment="center" alternateImage="logoAppleBG" imageScaling="proportionallyDown" inset="2" id="3g8-vm-R7Z">
|
||||
<behavior key="behavior" lightByContents="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
<connections>
|
||||
<action selector="logoButtonHandler:" target="494" id="H4C-BT-arE"/>
|
||||
</connections>
|
||||
</button>
|
||||
<segmentedControl verticalHuggingPriority="750" ambiguous="YES" misplaced="YES" translatesAutoresizingMaskIntoConstraints="NO" id="gtq-gn-VPL">
|
||||
<rect key="frame" x="465" y="354" width="223" height="24"/>
|
||||
<rect key="frame" x="465" y="339" width="223" height="24"/>
|
||||
<segmentedCell key="cell" borderStyle="border" alignment="left" style="rounded" trackingMode="selectOne" id="DHY-0u-YD7">
|
||||
<font key="font" metaFont="system"/>
|
||||
<segments>
|
||||
@@ -88,8 +78,22 @@
|
||||
<action selector="selectBottomPaneContent:" target="494" id="CQa-nn-jVf"/>
|
||||
</connections>
|
||||
</segmentedControl>
|
||||
<searchField wantsLayer="YES" verticalHuggingPriority="750" ambiguous="YES" misplaced="YES" translatesAutoresizingMaskIntoConstraints="NO" id="bNA-gy-9Ta">
|
||||
<rect key="frame" x="1133" y="340" width="175" height="22"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="22" id="1yR-lY-9om"/>
|
||||
</constraints>
|
||||
<searchFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" borderStyle="bezel" placeholderString="Filter Dylibs" usesSingleLineMode="YES" bezelStyle="round" id="bct-8m-iWd">
|
||||
<font key="font" size="11" name="Menlo-Regular"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
</searchFieldCell>
|
||||
<connections>
|
||||
<outlet property="delegate" destination="494" id="4ig-0K-Oup"/>
|
||||
</connections>
|
||||
</searchField>
|
||||
<button ambiguous="YES" misplaced="YES" tag="1001" translatesAutoresizingMaskIntoConstraints="NO" id="gSG-Nq-plb">
|
||||
<rect key="frame" x="9" y="20" width="35" height="32"/>
|
||||
<rect key="frame" x="9" y="5" width="35" height="32"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="35" id="XGt-s5-weq"/>
|
||||
<constraint firstAttribute="height" constant="32" id="wlR-bC-Msz"/>
|
||||
@@ -103,10 +107,10 @@
|
||||
</connections>
|
||||
</button>
|
||||
<customView fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="TNF-7q-Loy" userLabel="Top Pane">
|
||||
<rect key="frame" x="0.0" y="394" width="1353" height="281"/>
|
||||
<rect key="frame" x="0.0" y="379" width="1353" height="281"/>
|
||||
</customView>
|
||||
<customView fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="E4M-PF-VD0" userLabel="Bottom Pane">
|
||||
<rect key="frame" x="0.0" y="60" width="1353" height="281"/>
|
||||
<rect key="frame" x="0.0" y="45" width="1353" height="281"/>
|
||||
<subviews>
|
||||
<progressIndicator horizontalHuggingPriority="750" verticalHuggingPriority="750" fixedFrame="YES" maxValue="100" bezeled="NO" indeterminate="YES" style="spinning" translatesAutoresizingMaskIntoConstraints="NO" id="LMT-Bu-FAk">
|
||||
<rect key="frame" x="660" y="124" width="32" height="32"/>
|
||||
@@ -121,20 +125,16 @@
|
||||
</textField>
|
||||
</subviews>
|
||||
</customView>
|
||||
<searchField wantsLayer="YES" verticalHuggingPriority="750" ambiguous="YES" misplaced="YES" translatesAutoresizingMaskIntoConstraints="NO" id="bNA-gy-9Ta">
|
||||
<rect key="frame" x="1133" y="355" width="175" height="22"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="22" id="1yR-lY-9om"/>
|
||||
</constraints>
|
||||
<searchFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" borderStyle="bezel" placeholderString="Filter Dylibs" usesSingleLineMode="YES" bezelStyle="round" id="bct-8m-iWd">
|
||||
<font key="font" size="11" name="Menlo-Regular"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
</searchFieldCell>
|
||||
<button ambiguous="YES" misplaced="YES" tag="1002" translatesAutoresizingMaskIntoConstraints="NO" id="HoI-FQ-vTI">
|
||||
<rect key="frame" x="662" y="5" width="29" height="32"/>
|
||||
<buttonCell key="cell" type="bevel" bezelStyle="rounded" image="logoApple" imagePosition="only" alignment="center" alternateImage="logoAppleBG" imageScaling="proportionallyDown" inset="2" id="3g8-vm-R7Z">
|
||||
<behavior key="behavior" lightByContents="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
<connections>
|
||||
<outlet property="delegate" destination="494" id="4ig-0K-Oup"/>
|
||||
<action selector="logoButtonHandler:" target="494" id="H4C-BT-arE"/>
|
||||
</connections>
|
||||
</searchField>
|
||||
</button>
|
||||
</subviews>
|
||||
<constraints>
|
||||
<constraint firstAttribute="centerX" secondItem="gtq-gn-VPL" secondAttribute="centerX" id="2Nh-NZ-P5p"/>
|
||||
@@ -211,7 +211,7 @@
|
||||
<toolbarItem reference="y4u-t8-Acq"/>
|
||||
</defaultToolbarItems>
|
||||
</toolbar>
|
||||
<point key="canvasLocation" x="662.5" y="347.5"/>
|
||||
<point key="canvasLocation" x="662.5" y="340.5"/>
|
||||
</window>
|
||||
<customObject id="494" customClass="AppDelegate">
|
||||
<connections>
|
||||
|
||||
@@ -191,7 +191,7 @@ struct dyld_image_info_32 {
|
||||
// ->32bit mode
|
||||
else
|
||||
{
|
||||
//hack, can use 64bit version of struct (since 'infoArray' is first pointer
|
||||
//hack, can use 64bit version of struct (since 'infoArray' is first pointer)
|
||||
// ->but zero out top bits
|
||||
remoteReadAddr = (vm_address_t)allImageInfo->infoArray & 0xFFFFFFFF;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user