Browse Source

Un-xibless-ified DetailsPanel and DetailsPanelPicture

master
Virgil Dupras 4 years ago
parent
commit
8f7691cf91
10 changed files with 373 additions and 135 deletions
  1. +0
    -2
      build.py
  2. +104
    -0
      cocoa/Base.lproj/DetailsPanel.xib
  3. +169
    -0
      cocoa/Base.lproj/DetailsPanelPicture.xib
  4. +4
    -4
      cocoa/DetailsPanel.h
  5. +4
    -6
      cocoa/DetailsPanel.m
  6. +5
    -5
      cocoa/DetailsPanelPicture.h
  7. +3
    -4
      cocoa/DetailsPanelPicture.m
  8. +0
    -32
      cocoa/ui/details_panel.py
  9. +0
    -70
      cocoa/ui/details_panel_picture.py
  10. +84
    -12
      dupeGuru.xcodeproj/project.pbxproj

+ 0
- 2
build.py View File

@@ -83,8 +83,6 @@ def build_xibless(dest='cocoa/autogen'):
('problem_dialog.py', 'ProblemDialog_UI'),
('directory_panel.py', 'DirectoryPanel_UI'),
('prioritize_dialog.py', 'PrioritizeDialog_UI'),
('details_panel.py', 'DetailsPanel_UI'),
('details_panel_picture.py', 'DetailsPanelPicture_UI'),
]
for srcname, dstname in FNPAIRS:
xibless.generate(


+ 104
- 0
cocoa/Base.lproj/DetailsPanel.xib View File

@@ -0,0 +1,104 @@
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="12118" systemVersion="16E195" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none">
<dependencies>
<deployment identifier="macosx"/>
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="12118"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies>
<objects>
<customObject id="-2" userLabel="File's Owner" customClass="DetailsPanel">
<connections>
<outlet property="detailsTable" destination="8" id="22"/>
<outlet property="window" destination="5" id="12"/>
</connections>
</customObject>
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
<customObject id="-3" userLabel="Application" customClass="NSObject"/>
<window title="Details of Selected File" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" hidesOnDeactivate="YES" releasedWhenClosed="NO" visibleAtLaunch="NO" frameAutosaveName="DetailsPanel" animationBehavior="default" id="5" userLabel="details" customClass="NSPanel">
<windowStyleMask key="styleMask" titled="YES" closable="YES" resizable="YES" utility="YES" nonactivatingPanel="YES"/>
<windowPositionMask key="initialPositionMask" leftStrut="YES" rightStrut="YES" topStrut="YES" bottomStrut="YES"/>
<rect key="contentRect" x="33" y="261" width="451" height="146"/>
<rect key="screenRect" x="0.0" y="0.0" width="1920" height="1058"/>
<value key="minSize" type="size" width="451" height="146"/>
<view key="contentView" id="6">
<rect key="frame" x="0.0" y="0.0" width="451" height="146"/>
<autoresizingMask key="autoresizingMask"/>
<subviews>
<scrollView autohidesScrollers="YES" horizontalLineScroll="16" horizontalPageScroll="10" verticalLineScroll="16" verticalPageScroll="10" hasHorizontalScroller="NO" usesPredominantAxisScrolling="NO" id="7">
<rect key="frame" x="0.0" y="0.0" width="451" height="146"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<clipView key="contentView" id="98J-mR-Eom">
<rect key="frame" x="1" y="0.0" width="449" height="145"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<tableView verticalHuggingPriority="750" tag="2" allowsExpansionToolTips="YES" columnReordering="NO" multipleSelection="NO" emptySelection="NO" autosaveColumns="NO" rowHeight="14" headerView="20" id="8">
<rect key="frame" x="0.0" y="0.0" width="449" height="122"/>
<autoresizingMask key="autoresizingMask"/>
<size key="intercellSpacing" width="3" height="2"/>
<color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
<color key="gridColor" name="gridColor" catalog="System" colorSpace="catalog"/>
<tableColumns>
<tableColumn identifier="0" editable="NO" width="70" minWidth="40" maxWidth="1000" id="11">
<tableHeaderCell key="headerCell" lineBreakMode="truncatingTail" borderStyle="border" alignment="left" title="Attribute">
<font key="font" metaFont="smallSystem"/>
<color key="textColor" name="headerTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" white="0.33333299" alpha="1" colorSpace="calibratedWhite"/>
</tableHeaderCell>
<textFieldCell key="dataCell" lineBreakMode="truncatingTail" selectable="YES" editable="YES" alignment="left" id="17">
<font key="font" metaFont="smallSystem"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
<tableColumnResizingMask key="resizingMask" userResizable="YES"/>
</tableColumn>
<tableColumn identifier="1" editable="NO" width="198" minWidth="40" maxWidth="1000" id="9">
<tableHeaderCell key="headerCell" lineBreakMode="truncatingTail" borderStyle="border" alignment="left" title="Selected">
<font key="font" metaFont="smallSystem"/>
<color key="textColor" name="headerTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" white="0.33333299" alpha="1" colorSpace="calibratedWhite"/>
</tableHeaderCell>
<textFieldCell key="dataCell" lineBreakMode="truncatingTail" selectable="YES" editable="YES" alignment="left" id="15">
<font key="font" metaFont="smallSystem"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
<tableColumnResizingMask key="resizingMask" resizeWithTable="YES" userResizable="YES"/>
</tableColumn>
<tableColumn identifier="2" editable="NO" width="172" minWidth="56.4755859375" maxWidth="1000" id="10">
<tableHeaderCell key="headerCell" lineBreakMode="truncatingTail" borderStyle="border" alignment="left" title="Reference">
<font key="font" metaFont="smallSystem"/>
<color key="textColor" name="headerTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="headerColor" catalog="System" colorSpace="catalog"/>
</tableHeaderCell>
<textFieldCell key="dataCell" lineBreakMode="truncatingTail" selectable="YES" editable="YES" alignment="left" id="16">
<font key="font" metaFont="smallSystem"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
<tableColumnResizingMask key="resizingMask" resizeWithTable="YES" userResizable="YES"/>
</tableColumn>
</tableColumns>
<connections>
<outlet property="dataSource" destination="-2" id="21"/>
</connections>
</tableView>
</subviews>
</clipView>
<scroller key="horizontalScroller" hidden="YES" verticalHuggingPriority="750" horizontal="YES" id="19">
<rect key="frame" x="-100" y="-100" width="394" height="15"/>
<autoresizingMask key="autoresizingMask"/>
</scroller>
<scroller key="verticalScroller" hidden="YES" verticalHuggingPriority="750" horizontal="NO" id="18">
<rect key="frame" x="-30" y="17" width="15" height="129"/>
<autoresizingMask key="autoresizingMask"/>
</scroller>
<tableHeaderView key="headerView" id="20">
<rect key="frame" x="0.0" y="0.0" width="449" height="23"/>
<autoresizingMask key="autoresizingMask"/>
</tableHeaderView>
</scrollView>
</subviews>
</view>
</window>
</objects>
</document>

+ 169
- 0
cocoa/Base.lproj/DetailsPanelPicture.xib View File

@@ -0,0 +1,169 @@
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="12118" systemVersion="16E195" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none">
<dependencies>
<deployment identifier="macosx"/>
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="12118"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies>
<objects>
<customObject id="-2" userLabel="File's Owner" customClass="DetailsPanelPicture">
<connections>
<outlet property="detailsTable" destination="8" id="13"/>
<outlet property="dupeImage" destination="16" id="26"/>
<outlet property="dupeProgressIndicator" destination="27" id="30"/>
<outlet property="refImage" destination="17" id="25"/>
<outlet property="refProgressIndicator" destination="29" id="31"/>
<outlet property="window" destination="5" id="12"/>
</connections>
</customObject>
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
<customObject id="-3" userLabel="Application"/>
<window title="Details of Selected File" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" hidesOnDeactivate="YES" releasedWhenClosed="NO" visibleAtLaunch="NO" frameAutosaveName="DetailsPanel" animationBehavior="default" id="5" userLabel="details" customClass="NSPanel">
<windowStyleMask key="styleMask" titled="YES" closable="YES" resizable="YES" utility="YES" nonactivatingPanel="YES"/>
<windowPositionMask key="initialPositionMask" leftStrut="YES" rightStrut="YES" topStrut="YES" bottomStrut="YES"/>
<rect key="contentRect" x="634" y="317" width="593" height="398"/>
<rect key="screenRect" x="0.0" y="0.0" width="1440" height="878"/>
<value key="minSize" type="size" width="451" height="161"/>
<view key="contentView" id="6">
<rect key="frame" x="0.0" y="0.0" width="593" height="398"/>
<autoresizingMask key="autoresizingMask"/>
<subviews>
<scrollView autohidesScrollers="YES" horizontalLineScroll="16" horizontalPageScroll="10" verticalLineScroll="16" verticalPageScroll="10" hasHorizontalScroller="NO" usesPredominantAxisScrolling="NO" id="7">
<rect key="frame" x="0.0" y="233" width="593" height="165"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
<clipView key="contentView" id="bsy-lh-Pcm">
<rect key="frame" x="1" y="0.0" width="591" height="164"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<tableView verticalHuggingPriority="750" tag="2" allowsExpansionToolTips="YES" columnReordering="NO" multipleSelection="NO" emptySelection="NO" autosaveColumns="NO" rowHeight="14" headerView="42" id="8">
<rect key="frame" x="0.0" y="0.0" width="591" height="141"/>
<autoresizingMask key="autoresizingMask"/>
<size key="intercellSpacing" width="3" height="2"/>
<color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
<color key="gridColor" name="gridColor" catalog="System" colorSpace="catalog"/>
<tableColumns>
<tableColumn identifier="0" editable="NO" width="74" minWidth="40" maxWidth="1000" id="11">
<tableHeaderCell key="headerCell" lineBreakMode="truncatingTail" borderStyle="border" alignment="left" title="Attribute">
<font key="font" metaFont="smallSystem"/>
<color key="textColor" name="headerTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" white="0.33333299" alpha="1" colorSpace="calibratedWhite"/>
</tableHeaderCell>
<textFieldCell key="dataCell" lineBreakMode="truncatingTail" selectable="YES" editable="YES" alignment="left" id="39">
<font key="font" metaFont="smallSystem"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
<tableColumnResizingMask key="resizingMask" userResizable="YES"/>
</tableColumn>
<tableColumn identifier="1" editable="NO" width="260" minWidth="40" maxWidth="1000" id="9">
<tableHeaderCell key="headerCell" lineBreakMode="truncatingTail" borderStyle="border" alignment="left" title="Selected">
<font key="font" metaFont="smallSystem"/>
<color key="textColor" name="headerTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" white="0.33333299" alpha="1" colorSpace="calibratedWhite"/>
</tableHeaderCell>
<textFieldCell key="dataCell" lineBreakMode="truncatingTail" selectable="YES" editable="YES" alignment="left" id="37">
<font key="font" metaFont="smallSystem"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
<tableColumnResizingMask key="resizingMask" resizeWithTable="YES" userResizable="YES"/>
</tableColumn>
<tableColumn identifier="2" editable="NO" width="248" minWidth="56.4755859375" maxWidth="1000" id="10">
<tableHeaderCell key="headerCell" lineBreakMode="truncatingTail" borderStyle="border" alignment="left" title="Reference">
<font key="font" metaFont="smallSystem"/>
<color key="textColor" name="headerTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="headerColor" catalog="System" colorSpace="catalog"/>
</tableHeaderCell>
<textFieldCell key="dataCell" lineBreakMode="truncatingTail" selectable="YES" editable="YES" alignment="left" id="38">
<font key="font" metaFont="smallSystem"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
<tableColumnResizingMask key="resizingMask" resizeWithTable="YES" userResizable="YES"/>
</tableColumn>
</tableColumns>
<connections>
<outlet property="dataSource" destination="-2" id="43"/>
</connections>
</tableView>
</subviews>
</clipView>
<scroller key="horizontalScroller" hidden="YES" verticalHuggingPriority="750" horizontal="YES" id="41">
<rect key="frame" x="-100" y="-100" width="394" height="15"/>
<autoresizingMask key="autoresizingMask"/>
</scroller>
<scroller key="verticalScroller" hidden="YES" verticalHuggingPriority="750" horizontal="NO" id="40">
<rect key="frame" x="-30" y="17" width="15" height="147"/>
<autoresizingMask key="autoresizingMask"/>
</scroller>
<tableHeaderView key="headerView" id="42">
<rect key="frame" x="0.0" y="0.0" width="591" height="23"/>
<autoresizingMask key="autoresizingMask"/>
</tableHeaderView>
</scrollView>
<splitView vertical="YES" id="20">
<rect key="frame" x="0.0" y="0.0" width="593" height="225"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<customView id="18">
<rect key="frame" x="0.0" y="0.0" width="291" height="225"/>
<autoresizingMask key="autoresizingMask"/>
<subviews>
<progressIndicator horizontalHuggingPriority="750" verticalHuggingPriority="750" maxValue="100" displayedWhenStopped="NO" bezeled="NO" indeterminate="YES" controlSize="small" style="spinning" id="27">
<rect key="frame" x="255" y="201" width="16" height="16"/>
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMinY="YES"/>
</progressIndicator>
<imageView id="16">
<rect key="frame" x="0.0" y="0.0" width="288" height="193"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" image="NSApplicationIcon" id="34"/>
</imageView>
<textField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="NO" id="14">
<rect key="frame" x="-3" y="201" width="294" height="17"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
<textFieldCell key="cell" sendsActionOnEndEditing="YES" alignment="center" title="Selected" id="33">
<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>
</subviews>
</customView>
<customView id="19">
<rect key="frame" x="300" y="0.0" width="293" height="225"/>
<autoresizingMask key="autoresizingMask"/>
<subviews>
<progressIndicator horizontalHuggingPriority="750" verticalHuggingPriority="750" maxValue="100" displayedWhenStopped="NO" bezeled="NO" indeterminate="YES" controlSize="small" style="spinning" id="29">
<rect key="frame" x="257" y="203" width="16" height="16"/>
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMinY="YES"/>
</progressIndicator>
<imageView id="17">
<rect key="frame" x="0.0" y="0.0" width="289" height="195"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" image="NSApplicationIcon" id="36"/>
</imageView>
<textField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="NO" id="15">
<rect key="frame" x="-3" y="203" width="295" height="17"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
<textFieldCell key="cell" sendsActionOnEndEditing="YES" alignment="center" title="Reference" id="35">
<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>
</subviews>
</customView>
</subviews>
<holdingPriorities>
<real value="250"/>
<real value="250"/>
</holdingPriorities>
</splitView>
</subviews>
</view>
</window>
</objects>
<resources>
<image name="NSApplicationIcon" width="128" height="128"/>
</resources>
</document>

+ 4
- 4
cocoa/DetailsPanel.h View File

@@ -1,5 +1,5 @@
/*
Copyright 2015 Hardcoded Software (http://www.hardcoded.net)
Copyright 2017 Virgil Dupras

This software is licensed under the "GPLv3" License as described in the "LICENSE" file,
which should be included with this package. The terms are also available at
@@ -12,7 +12,7 @@ http://www.gnu.org/licenses/gpl-3.0.html

@interface DetailsPanel : NSWindowController <NSTableViewDataSource>
{
NSTableView *detailsTable;
IBOutlet NSTableView *detailsTable;
PyDetailsPanel *model;
}
@@ -22,10 +22,10 @@ http://www.gnu.org/licenses/gpl-3.0.html
- (id)initWithPyRef:(PyObject *)aPyRef;
- (PyDetailsPanel *)model;

- (NSWindow *)createWindow;
- (NSString *)getWindowNibName;
- (BOOL)isVisible;
- (void)toggleVisibility;

/* Python --> Cocoa */
- (void)refresh;
@end
@end

+ 4
- 6
cocoa/DetailsPanel.m View File

@@ -1,5 +1,5 @@
/*
Copyright 2015 Hardcoded Software (http://www.hardcoded.net)
Copyright 2017 Virgil Dupras

This software is licensed under the "GPLv3" License as described in the "LICENSE" file,
which should be included with this package. The terms are also available at
@@ -8,7 +8,6 @@ http://www.gnu.org/licenses/gpl-3.0.html

#import "DetailsPanel.h"
#import "HSPyUtil.h"
#import "DetailsPanel_UI.h"

@implementation DetailsPanel

@@ -16,8 +15,7 @@ http://www.gnu.org/licenses/gpl-3.0.html

- (id)initWithPyRef:(PyObject *)aPyRef
{
self = [super initWithWindow:nil];
[self setWindow:[self createWindow]];
self = [super initWithWindowNibName:[self getWindowNibName]];
model = [[PyDetailsPanel alloc] initWithModel:aPyRef];
[model bindCallback:createCallback(@"DetailsPanelView", self)];
return self;
@@ -34,9 +32,9 @@ http://www.gnu.org/licenses/gpl-3.0.html
return (PyDetailsPanel *)model;
}

- (NSWindow *)createWindow
- (NSString *)getWindowNibName
{
return createDetailsPanel_UI(self);
return @"DetailsPanel";
}

- (void)refreshDetails


+ 5
- 5
cocoa/DetailsPanelPicture.h View File

@@ -1,5 +1,5 @@
/*
Copyright 2015 Hardcoded Software (http://www.hardcoded.net)
Copyright 2017 Virgil Dupras

This software is licensed under the "GPLv3" License as described in the "LICENSE" file,
which should be included with this package. The terms are also available at
@@ -12,10 +12,10 @@ http://www.gnu.org/licenses/gpl-3.0.html

@interface DetailsPanelPicture : DetailsPanel
{
NSImageView *dupeImage;
NSProgressIndicator *dupeProgressIndicator;
NSImageView *refImage;
NSProgressIndicator *refProgressIndicator;
IBOutlet NSImageView *dupeImage;
IBOutlet NSProgressIndicator *dupeProgressIndicator;
IBOutlet NSImageView *refImage;
IBOutlet NSProgressIndicator *refProgressIndicator;
PyDupeGuru *pyApp;
BOOL _needsRefresh;


+ 3
- 4
cocoa/DetailsPanelPicture.m View File

@@ -1,5 +1,5 @@
/*
Copyright 2015 Hardcoded Software (http://www.hardcoded.net)
Copyright 2017 Virgil Dupras

This software is licensed under the "GPLv3" License as described in the "LICENSE" file,
which should be included with this package. The terms are also available at
@@ -12,7 +12,6 @@ http://www.gnu.org/licenses/gpl-3.0.html
#import "PyDupeGuru.h"
#import "DetailsPanelPicture.h"
#import "Consts.h"
#import "DetailsPanelPicture_UI.h"

@implementation DetailsPanelPicture

@@ -30,9 +29,9 @@ http://www.gnu.org/licenses/gpl-3.0.html
return self;
}

- (NSWindow *)createWindow
- (NSString *)getWindowNibName
{
return createDetailsPanelPicture_UI(self);
return @"DetailsPanelPicture";
}

- (void)loadImageAsync:(NSString *)imagePath


+ 0
- 32
cocoa/ui/details_panel.py View File

@@ -1,32 +0,0 @@
ownerclass = 'DetailsPanel'
ownerimport = 'DetailsPanel.h'

result = Panel(451, 146, "Details of Selected File")
table = TableView(result)

owner.detailsTable = table

result.style = PanelStyle.Utility
result.xProportion = 0.2
result.yProportion = 0.4
result.canMinimize = False
result.autosaveName = 'DetailsPanel'
result.minSize = Size(result.width, result.height)

table.dataSource = owner
table.allowsColumnReordering = False
table.allowsColumnSelection = False
table.allowsMultipleSelection = False
table.font = Font(FontFamily.System, FontSize.SmallSystem)
table.rowHeight = 14
table.editable = False
col = table.addColumn('0', "Attribute", 70)
col.autoResizable = True
col = table.addColumn('1', "Selected", 198)
col.autoResizable = True
col = table.addColumn('2', "Reference", 172)
col.autoResizable = True

table.packToCorner(Pack.UpperLeft, margin=0)
table.fill(Pack.LowerRight, margin=0)
table.setAnchor(Pack.UpperLeft, growX=True, growY=True)

+ 0
- 70
cocoa/ui/details_panel_picture.py View File

@@ -1,70 +0,0 @@
ownerclass = 'DetailsPanelPicture'
ownerimport = 'DetailsPanelPicture.h'

result = Panel(593, 398, "Details of Selected File")
table = TableView(result)
split = SplitView(result, 2, vertical=True)
leftSplit, rightSplit = split.subviews
selectedLabel = Label(leftSplit, "Selected")
selectedImage = ImageView(leftSplit, 'NSApplicationIcon')
leftSpinner = ProgressIndicator(leftSplit)
referenceLabel = Label(rightSplit, "Reference")
referenceImage = ImageView(rightSplit, 'NSApplicationIcon')
rightSpinner = ProgressIndicator(rightSplit)

owner.detailsTable = table
owner.dupeImage = selectedImage
owner.dupeProgressIndicator = leftSpinner
owner.refImage = referenceImage
owner.refProgressIndicator = rightSpinner
table.dataSource = owner

result.style = PanelStyle.Utility
result.xProportion = 0.6
result.yProportion = 0.6
result.canMinimize = False
result.autosaveName = 'DetailsPanel'
result.minSize = Size(451, 240)

table.allowsColumnReordering = False
table.allowsColumnSelection = False
table.allowsMultipleSelection = False
table.font = Font(FontFamily.System, FontSize.SmallSystem)
table.rowHeight = 14
table.editable = False
col = table.addColumn('0', "Attribute", 70)
col.autoResizable = True
col = table.addColumn('1', "Selected", 198)
col.autoResizable = True
col = table.addColumn('2', "Reference", 172)
col.autoResizable = True
table.height = 165

sides = [
(leftSplit, selectedLabel, selectedImage, leftSpinner),
(rightSplit, referenceLabel, referenceImage, rightSpinner),
]
for subSplit, label, image, spinner in sides:
label.alignment = TextAlignment.Center
spinner.style = const.NSProgressIndicatorSpinningStyle
spinner.controlSize = const.NSSmallControlSize
spinner.displayedWhenStopped = False
label.packToCorner(Pack.UpperLeft, margin=0)
label.fill(Pack.Right, margin=0)
label.setAnchor(Pack.UpperLeft, growX=True)
image.packRelativeTo(label, Pack.Below)
image.fill(Pack.LowerRight, margin=0)
image.setAnchor(Pack.UpperLeft, growX=True, growY=True)
spinner.y = label.y
spinner.x = subSplit.width - 30
spinner.setAnchor(Pack.UpperRight)

table.packToCorner(Pack.UpperLeft, margin=0)
table.fill(Pack.Right, margin=0)
table.setAnchor(Pack.UpperLeft, growX=True)

split.packRelativeTo(table, Pack.Below)
split.fill(Pack.LowerRight, margin=0)
split.setAnchor(Pack.UpperLeft, growX=True, growY=True)


+ 84
- 12
dupeGuru.xcodeproj/project.pbxproj View File

@@ -53,8 +53,6 @@
CE9720F31E74E40300A598C9 /* ResultTable.m in Sources */ = {isa = PBXBuildFile; fileRef = CE9720E31E74E40300A598C9 /* ResultTable.m */; };
CE9720F41E74E40300A598C9 /* ResultWindow.m in Sources */ = {isa = PBXBuildFile; fileRef = CE9720E51E74E40300A598C9 /* ResultWindow.m */; };
CE9720F51E74E40300A598C9 /* StatsLabel.m in Sources */ = {isa = PBXBuildFile; fileRef = CE9720E71E74E40300A598C9 /* StatsLabel.m */; };
CE97213E1E74E41D00A598C9 /* DetailsPanel_UI.m in Sources */ = {isa = PBXBuildFile; fileRef = CE9720FA1E74E41C00A598C9 /* DetailsPanel_UI.m */; };
CE97213F1E74E41D00A598C9 /* DetailsPanelPicture_UI.m in Sources */ = {isa = PBXBuildFile; fileRef = CE9720FC1E74E41C00A598C9 /* DetailsPanelPicture_UI.m */; };
CE9721401E74E41D00A598C9 /* DirectoryPanel_UI.m in Sources */ = {isa = PBXBuildFile; fileRef = CE9720FE1E74E41C00A598C9 /* DirectoryPanel_UI.m */; };
CE9721451E74E41D00A598C9 /* ObjP.m in Sources */ = {isa = PBXBuildFile; fileRef = CE9721081E74E41C00A598C9 /* ObjP.m */; };
CE9721461E74E41D00A598C9 /* PreferencesPanelMusic_UI.m in Sources */ = {isa = PBXBuildFile; fileRef = CE97210A1E74E41C00A598C9 /* PreferencesPanelMusic_UI.m */; };
@@ -84,6 +82,8 @@
CE9EF6DF1E9345100089CA20 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = CE9EF6DD1E9345100089CA20 /* MainMenu.xib */; };
CED88C1F1E763F2700C9B98C /* py in Resources */ = {isa = PBXBuildFile; fileRef = CED88C1E1E763F2700C9B98C /* py */; };
CEF093DE1E9474F700CD0BF3 /* DeletionOptions.xib in Resources */ = {isa = PBXBuildFile; fileRef = CEF093DC1E9474F700CD0BF3 /* DeletionOptions.xib */; };
CEF093FF1E94795600CD0BF3 /* DetailsPanel.xib in Resources */ = {isa = PBXBuildFile; fileRef = CEF093FD1E94795600CD0BF3 /* DetailsPanel.xib */; };
CEF094201E947AF700CD0BF3 /* DetailsPanelPicture.xib in Resources */ = {isa = PBXBuildFile; fileRef = CEF0941E1E947AF700CD0BF3 /* DetailsPanelPicture.xib */; };
CEFC8A251E74F23000965F37 /* dg_cocoa.py in Resources */ = {isa = PBXBuildFile; fileRef = CEFC8A231E74F23000965F37 /* dg_cocoa.py */; };
CEFC8A261E74F23000965F37 /* dupeguru.icns in Resources */ = {isa = PBXBuildFile; fileRef = CEFC8A241E74F23000965F37 /* dupeguru.icns */; };
CEFC8A281E74F28100965F37 /* help in Resources */ = {isa = PBXBuildFile; fileRef = CEFC8A271E74F28100965F37 /* help */; };
@@ -295,10 +295,6 @@
CE9720E51E74E40300A598C9 /* ResultWindow.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = ResultWindow.m; path = cocoa/ResultWindow.m; sourceTree = "<group>"; };
CE9720E61E74E40300A598C9 /* StatsLabel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = StatsLabel.h; path = cocoa/StatsLabel.h; sourceTree = "<group>"; };
CE9720E71E74E40300A598C9 /* StatsLabel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = StatsLabel.m; path = cocoa/StatsLabel.m; sourceTree = "<group>"; };
CE9720F91E74E41C00A598C9 /* DetailsPanel_UI.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DetailsPanel_UI.h; path = cocoa/autogen/DetailsPanel_UI.h; sourceTree = "<group>"; };
CE9720FA1E74E41C00A598C9 /* DetailsPanel_UI.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = DetailsPanel_UI.m; path = cocoa/autogen/DetailsPanel_UI.m; sourceTree = "<group>"; };
CE9720FB1E74E41C00A598C9 /* DetailsPanelPicture_UI.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DetailsPanelPicture_UI.h; path = cocoa/autogen/DetailsPanelPicture_UI.h; sourceTree = "<group>"; };
CE9720FC1E74E41C00A598C9 /* DetailsPanelPicture_UI.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = DetailsPanelPicture_UI.m; path = cocoa/autogen/DetailsPanelPicture_UI.m; sourceTree = "<group>"; };
CE9720FD1E74E41C00A598C9 /* DirectoryPanel_UI.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DirectoryPanel_UI.h; path = cocoa/autogen/DirectoryPanel_UI.h; sourceTree = "<group>"; };
CE9720FE1E74E41C00A598C9 /* DirectoryPanel_UI.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = DirectoryPanel_UI.m; path = cocoa/autogen/DirectoryPanel_UI.m; sourceTree = "<group>"; };
CE9721071E74E41C00A598C9 /* ObjP.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ObjP.h; path = cocoa/autogen/ObjP.h; sourceTree = "<group>"; };
@@ -385,6 +381,38 @@
CEF093F81E94751900CD0BF3 /* uk */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = uk; path = cocoa/uk.lproj/DeletionOptions.strings; sourceTree = "<group>"; };
CEF093FA1E94751B00CD0BF3 /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "cocoa/zh-Hans.lproj/DeletionOptions.strings"; sourceTree = "<group>"; };
CEF093FC1E94751C00CD0BF3 /* vi */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = vi; path = cocoa/vi.lproj/DeletionOptions.strings; sourceTree = "<group>"; };
CEF093FE1E94795600CD0BF3 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = cocoa/Base.lproj/DetailsPanel.xib; sourceTree = "<group>"; };
CEF094011E94797800CD0BF3 /* fr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fr; path = cocoa/fr.lproj/DetailsPanel.strings; sourceTree = "<group>"; };
CEF094031E94797900CD0BF3 /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = de; path = cocoa/de.lproj/DetailsPanel.strings; sourceTree = "<group>"; };
CEF094051E94797A00CD0BF3 /* cs */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = cs; path = cocoa/cs.lproj/DetailsPanel.strings; sourceTree = "<group>"; };
CEF094071E94797B00CD0BF3 /* es */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = es; path = cocoa/es.lproj/DetailsPanel.strings; sourceTree = "<group>"; };
CEF094091E94797C00CD0BF3 /* el */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = el; path = cocoa/el.lproj/DetailsPanel.strings; sourceTree = "<group>"; };
CEF0940B1E94797E00CD0BF3 /* it */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = it; path = cocoa/it.lproj/DetailsPanel.strings; sourceTree = "<group>"; };
CEF0940D1E94798000CD0BF3 /* nl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = nl; path = cocoa/nl.lproj/DetailsPanel.strings; sourceTree = "<group>"; };
CEF0940F1E94798100CD0BF3 /* pl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = pl; path = cocoa/pl.lproj/DetailsPanel.strings; sourceTree = "<group>"; };
CEF094111E94798200CD0BF3 /* ko */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ko; path = cocoa/ko.lproj/DetailsPanel.strings; sourceTree = "<group>"; };
CEF094131E94798400CD0BF3 /* hy */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = hy; path = cocoa/hy.lproj/DetailsPanel.strings; sourceTree = "<group>"; };
CEF094151E94798500CD0BF3 /* pt-BR */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "pt-BR"; path = "cocoa/pt-BR.lproj/DetailsPanel.strings"; sourceTree = "<group>"; };
CEF094171E94798700CD0BF3 /* ru */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ru; path = cocoa/ru.lproj/DetailsPanel.strings; sourceTree = "<group>"; };
CEF094191E94798800CD0BF3 /* uk */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = uk; path = cocoa/uk.lproj/DetailsPanel.strings; sourceTree = "<group>"; };
CEF0941B1E94798A00CD0BF3 /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "cocoa/zh-Hans.lproj/DetailsPanel.strings"; sourceTree = "<group>"; };
CEF0941D1E94798B00CD0BF3 /* vi */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = vi; path = cocoa/vi.lproj/DetailsPanel.strings; sourceTree = "<group>"; };
CEF0941F1E947AF700CD0BF3 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = cocoa/Base.lproj/DetailsPanelPicture.xib; sourceTree = "<group>"; };
CEF094221E947B0000CD0BF3 /* fr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fr; path = cocoa/fr.lproj/DetailsPanelPicture.strings; sourceTree = "<group>"; };
CEF094241E947B0200CD0BF3 /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = de; path = cocoa/de.lproj/DetailsPanelPicture.strings; sourceTree = "<group>"; };
CEF094261E947B0300CD0BF3 /* cs */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = cs; path = cocoa/cs.lproj/DetailsPanelPicture.strings; sourceTree = "<group>"; };
CEF094281E947B0400CD0BF3 /* es */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = es; path = cocoa/es.lproj/DetailsPanelPicture.strings; sourceTree = "<group>"; };
CEF0942A1E947B0500CD0BF3 /* el */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = el; path = cocoa/el.lproj/DetailsPanelPicture.strings; sourceTree = "<group>"; };
CEF0942C1E947B0600CD0BF3 /* it */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = it; path = cocoa/it.lproj/DetailsPanelPicture.strings; sourceTree = "<group>"; };
CEF0942E1E947B0700CD0BF3 /* nl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = nl; path = cocoa/nl.lproj/DetailsPanelPicture.strings; sourceTree = "<group>"; };
CEF094301E947B0900CD0BF3 /* pl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = pl; path = cocoa/pl.lproj/DetailsPanelPicture.strings; sourceTree = "<group>"; };
CEF094321E947B0A00CD0BF3 /* ko */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ko; path = cocoa/ko.lproj/DetailsPanelPicture.strings; sourceTree = "<group>"; };
CEF094341E947B0C00CD0BF3 /* hy */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = hy; path = cocoa/hy.lproj/DetailsPanelPicture.strings; sourceTree = "<group>"; };
CEF094361E947B0D00CD0BF3 /* pt-BR */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "pt-BR"; path = "cocoa/pt-BR.lproj/DetailsPanelPicture.strings"; sourceTree = "<group>"; };
CEF094381E947B0E00CD0BF3 /* ru */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ru; path = cocoa/ru.lproj/DetailsPanelPicture.strings; sourceTree = "<group>"; };
CEF0943A1E947B1000CD0BF3 /* uk */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = uk; path = cocoa/uk.lproj/DetailsPanelPicture.strings; sourceTree = "<group>"; };
CEF0943C1E947B1100CD0BF3 /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "cocoa/zh-Hans.lproj/DetailsPanelPicture.strings"; sourceTree = "<group>"; };
CEF0943E1E947B1200CD0BF3 /* vi */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = vi; path = cocoa/vi.lproj/DetailsPanelPicture.strings; sourceTree = "<group>"; };
CEFC8A231E74F23000965F37 /* dg_cocoa.py */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.python; name = dg_cocoa.py; path = cocoa/dg_cocoa.py; sourceTree = "<group>"; };
CEFC8A241E74F23000965F37 /* dupeguru.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = dupeguru.icns; path = cocoa/dupeguru.icns; sourceTree = "<group>"; };
CEFC8A271E74F28100965F37 /* help */ = {isa = PBXFileReference; lastKnownFileType = folder; name = help; path = build/help; sourceTree = "<group>"; };
@@ -409,6 +437,8 @@
CE549CDA1E933C7600C75A05 /* ResultWindow.xib */,
CE0559851E762105008EB4F8 /* IgnoreListDialog.xib */,
CEF093DC1E9474F700CD0BF3 /* DeletionOptions.xib */,
CEF093FD1E94795600CD0BF3 /* DetailsPanel.xib */,
CEF0941E1E947AF700CD0BF3 /* DetailsPanelPicture.xib */,
);
name = xib;
sourceTree = "<group>";
@@ -542,10 +572,6 @@
CE9720F61E74E40E00A598C9 /* autogen */ = {
isa = PBXGroup;
children = (
CE9720F91E74E41C00A598C9 /* DetailsPanel_UI.h */,
CE9720FA1E74E41C00A598C9 /* DetailsPanel_UI.m */,
CE9720FB1E74E41C00A598C9 /* DetailsPanelPicture_UI.h */,
CE9720FC1E74E41C00A598C9 /* DetailsPanelPicture_UI.m */,
CE9720FD1E74E41C00A598C9 /* DirectoryPanel_UI.h */,
CE9720FE1E74E41C00A598C9 /* DirectoryPanel_UI.m */,
CE9721071E74E41C00A598C9 /* ObjP.h */,
@@ -720,9 +746,11 @@
CE7CA6061E76337700874874 /* about.xib in Resources */,
CE7CA6071E76337700874874 /* cocoalib.strings in Resources */,
CE0559871E762105008EB4F8 /* IgnoreListDialog.xib in Resources */,
CEF094201E947AF700CD0BF3 /* DetailsPanelPicture.xib in Resources */,
CEFC8A261E74F23000965F37 /* dupeguru.icns in Resources */,
CE65D0CC1E7781640092126E /* progress.xib in Resources */,
CE9EF6DF1E9345100089CA20 /* MainMenu.xib in Resources */,
CEF093FF1E94795600CD0BF3 /* DetailsPanel.xib in Resources */,
CEFC8A281E74F28100965F37 /* help in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
@@ -734,7 +762,6 @@
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
CE97213F1E74E41D00A598C9 /* DetailsPanelPicture_UI.m in Sources */,
CE6F7E041E74EA12004C0518 /* HSColumns.m in Sources */,
CE9720ED1E74E40300A598C9 /* DirectoryPanel.m in Sources */,
CE6F7DF01E74E9E4004C0518 /* Utils.m in Sources */,
@@ -788,7 +815,6 @@
CE6F7E071E74EA12004C0518 /* HSPopUpList.m in Sources */,
CE97215A1E74E41D00A598C9 /* PySelectableList.m in Sources */,
CE6F7E051E74EA12004C0518 /* HSGUIController.m in Sources */,
CE97213E1E74E41D00A598C9 /* DetailsPanel_UI.m in Sources */,
CE6F7E141E74EA26004C0518 /* HSOutlineView.m in Sources */,
CE97214F1E74E41D00A598C9 /* PyDetailsPanel.m in Sources */,
CE6F7E171E74EA26004C0518 /* NSTableViewAdditions.m in Sources */,
@@ -1012,6 +1038,52 @@
name = DeletionOptions.xib;
sourceTree = "<group>";
};
CEF093FD1E94795600CD0BF3 /* DetailsPanel.xib */ = {
isa = PBXVariantGroup;
children = (
CEF093FE1E94795600CD0BF3 /* Base */,
CEF094011E94797800CD0BF3 /* fr */,
CEF094031E94797900CD0BF3 /* de */,
CEF094051E94797A00CD0BF3 /* cs */,
CEF094071E94797B00CD0BF3 /* es */,
CEF094091E94797C00CD0BF3 /* el */,
CEF0940B1E94797E00CD0BF3 /* it */,
CEF0940D1E94798000CD0BF3 /* nl */,
CEF0940F1E94798100CD0BF3 /* pl */,
CEF094111E94798200CD0BF3 /* ko */,
CEF094131E94798400CD0BF3 /* hy */,
CEF094151E94798500CD0BF3 /* pt-BR */,
CEF094171E94798700CD0BF3 /* ru */,
CEF094191E94798800CD0BF3 /* uk */,
CEF0941B1E94798A00CD0BF3 /* zh-Hans */,
CEF0941D1E94798B00CD0BF3 /* vi */,
);
name = DetailsPanel.xib;
sourceTree = "<group>";
};
CEF0941E1E947AF700CD0BF3 /* DetailsPanelPicture.xib */ = {
isa = PBXVariantGroup;
children = (
CEF0941F1E947AF700CD0BF3 /* Base */,
CEF094221E947B0000CD0BF3 /* fr */,
CEF094241E947B0200CD0BF3 /* de */,
CEF094261E947B0300CD0BF3 /* cs */,
CEF094281E947B0400CD0BF3 /* es */,
CEF0942A1E947B0500CD0BF3 /* el */,
CEF0942C1E947B0600CD0BF3 /* it */,
CEF0942E1E947B0700CD0BF3 /* nl */,
CEF094301E947B0900CD0BF3 /* pl */,
CEF094321E947B0A00CD0BF3 /* ko */,
CEF094341E947B0C00CD0BF3 /* hy */,
CEF094361E947B0D00CD0BF3 /* pt-BR */,
CEF094381E947B0E00CD0BF3 /* ru */,
CEF0943A1E947B1000CD0BF3 /* uk */,
CEF0943C1E947B1100CD0BF3 /* zh-Hans */,
CEF0943E1E947B1200CD0BF3 /* vi */,
);
name = DetailsPanelPicture.xib;
sourceTree = "<group>";
};
/* End PBXVariantGroup section */

/* Begin XCBuildConfiguration section */


Loading…
Cancel
Save