mirror of
https://github.com/danbee/persephone
synced 2025-03-04 08:39:11 +00:00
You can press a button and a thing happens!
This commit is contained in:
parent
4e284d0a21
commit
0bed74b7d3
@ -15,6 +15,7 @@
|
|||||||
E407863A2110CE70006887B1 /* PersephoneUITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = E40786392110CE70006887B1 /* PersephoneUITests.swift */; };
|
E407863A2110CE70006887B1 /* PersephoneUITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = E40786392110CE70006887B1 /* PersephoneUITests.swift */; };
|
||||||
E41B22C021FB6BBA00D544F6 /* libmpdclient.2.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = E41B22BF21FB6BBA00D544F6 /* libmpdclient.2.dylib */; settings = {ATTRIBUTES = (Required, ); }; };
|
E41B22C021FB6BBA00D544F6 /* libmpdclient.2.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = E41B22BF21FB6BBA00D544F6 /* libmpdclient.2.dylib */; settings = {ATTRIBUTES = (Required, ); }; };
|
||||||
E41B22C121FB6C3300D544F6 /* libmpdclient.2.dylib in Embed Libraries */ = {isa = PBXBuildFile; fileRef = E41B22BF21FB6BBA00D544F6 /* libmpdclient.2.dylib */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; };
|
E41B22C121FB6C3300D544F6 /* libmpdclient.2.dylib in Embed Libraries */ = {isa = PBXBuildFile; fileRef = E41B22BF21FB6BBA00D544F6 /* libmpdclient.2.dylib */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; };
|
||||||
|
E41B22C621FB932700D544F6 /* MPDClient.swift in Sources */ = {isa = PBXBuildFile; fileRef = E41B22C521FB932700D544F6 /* MPDClient.swift */; };
|
||||||
E465049A21E94DF500A70F4C /* WindowController.swift in Sources */ = {isa = PBXBuildFile; fileRef = E465049921E94DF500A70F4C /* WindowController.swift */; };
|
E465049A21E94DF500A70F4C /* WindowController.swift in Sources */ = {isa = PBXBuildFile; fileRef = E465049921E94DF500A70F4C /* WindowController.swift */; };
|
||||||
/* End PBXBuildFile section */
|
/* End PBXBuildFile section */
|
||||||
|
|
||||||
@ -65,6 +66,42 @@
|
|||||||
E407863B2110CE70006887B1 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
E407863B2110CE70006887B1 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
||||||
E41B22BF21FB6BBA00D544F6 /* libmpdclient.2.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libmpdclient.2.dylib; path = libmpdclient/output/libmpdclient.2.dylib; sourceTree = "<group>"; };
|
E41B22BF21FB6BBA00D544F6 /* libmpdclient.2.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libmpdclient.2.dylib; path = libmpdclient/output/libmpdclient.2.dylib; sourceTree = "<group>"; };
|
||||||
E41B22C421FB715A00D544F6 /* module.modulemap */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.module-map"; path = module.modulemap; sourceTree = "<group>"; };
|
E41B22C421FB715A00D544F6 /* module.modulemap */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.module-map"; path = module.modulemap; sourceTree = "<group>"; };
|
||||||
|
E41B22C521FB932700D544F6 /* MPDClient.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MPDClient.swift; sourceTree = "<group>"; };
|
||||||
|
E41B22C921FB966C00D544F6 /* connection.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = connection.h; sourceTree = "<group>"; };
|
||||||
|
E41B22CA21FB966C00D544F6 /* protocol.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = protocol.h; sourceTree = "<group>"; };
|
||||||
|
E41B22CB21FB966C00D544F6 /* error.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = error.h; sourceTree = "<group>"; };
|
||||||
|
E41B22CC21FB966C00D544F6 /* recv.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = recv.h; sourceTree = "<group>"; };
|
||||||
|
E41B22CD21FB966C00D544F6 /* client.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = client.h; sourceTree = "<group>"; };
|
||||||
|
E41B22CE21FB966C00D544F6 /* song.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = song.h; sourceTree = "<group>"; };
|
||||||
|
E41B22CF21FB966C00D544F6 /* response.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = response.h; sourceTree = "<group>"; };
|
||||||
|
E41B22D021FB966C00D544F6 /* status.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = status.h; sourceTree = "<group>"; };
|
||||||
|
E41B22D121FB966C00D544F6 /* tag.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = tag.h; sourceTree = "<group>"; };
|
||||||
|
E41B22D221FB966C00D544F6 /* compiler.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = compiler.h; sourceTree = "<group>"; };
|
||||||
|
E41B22D321FB966C00D544F6 /* settings.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = settings.h; sourceTree = "<group>"; };
|
||||||
|
E41B22D421FB966C00D544F6 /* version.h.in */ = {isa = PBXFileReference; lastKnownFileType = text; path = version.h.in; sourceTree = "<group>"; };
|
||||||
|
E41B22D521FB966C00D544F6 /* parser.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = parser.h; sourceTree = "<group>"; };
|
||||||
|
E41B22D621FB966C00D544F6 /* idle.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = idle.h; sourceTree = "<group>"; };
|
||||||
|
E41B22D721FB966C00D544F6 /* message.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = message.h; sourceTree = "<group>"; };
|
||||||
|
E41B22D821FB966C00D544F6 /* player.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = player.h; sourceTree = "<group>"; };
|
||||||
|
E41B22D921FB966C00D544F6 /* output.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = output.h; sourceTree = "<group>"; };
|
||||||
|
E41B22DA21FB966C00D544F6 /* mixer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = mixer.h; sourceTree = "<group>"; };
|
||||||
|
E41B22DB21FB966C00D544F6 /* list.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = list.h; sourceTree = "<group>"; };
|
||||||
|
E41B22DC21FB966C00D544F6 /* async.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = async.h; sourceTree = "<group>"; };
|
||||||
|
E41B22DD21FB966C00D544F6 /* directory.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = directory.h; sourceTree = "<group>"; };
|
||||||
|
E41B22DE21FB966C00D544F6 /* database.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = database.h; sourceTree = "<group>"; };
|
||||||
|
E41B22DF21FB966C00D544F6 /* entity.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = entity.h; sourceTree = "<group>"; };
|
||||||
|
E41B22E021FB966C00D544F6 /* pair.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = pair.h; sourceTree = "<group>"; };
|
||||||
|
E41B22E121FB966C00D544F6 /* send.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = send.h; sourceTree = "<group>"; };
|
||||||
|
E41B22E221FB966C00D544F6 /* password.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = password.h; sourceTree = "<group>"; };
|
||||||
|
E41B22E321FB966C00D544F6 /* audio_format.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = audio_format.h; sourceTree = "<group>"; };
|
||||||
|
E41B22E421FB966C00D544F6 /* mount.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = mount.h; sourceTree = "<group>"; };
|
||||||
|
E41B22E521FB966C00D544F6 /* sticker.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = sticker.h; sourceTree = "<group>"; };
|
||||||
|
E41B22E621FB966C00D544F6 /* search.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = search.h; sourceTree = "<group>"; };
|
||||||
|
E41B22E721FB966C00D544F6 /* socket.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = socket.h; sourceTree = "<group>"; };
|
||||||
|
E41B22E821FB966C00D544F6 /* stats.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = stats.h; sourceTree = "<group>"; };
|
||||||
|
E41B22E921FB966C00D544F6 /* capabilities.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = capabilities.h; sourceTree = "<group>"; };
|
||||||
|
E41B22EA21FB966C00D544F6 /* queue.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = queue.h; sourceTree = "<group>"; };
|
||||||
|
E41B22EB21FB966C00D544F6 /* playlist.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = playlist.h; sourceTree = "<group>"; };
|
||||||
E465049921E94DF500A70F4C /* WindowController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WindowController.swift; sourceTree = "<group>"; };
|
E465049921E94DF500A70F4C /* WindowController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WindowController.swift; sourceTree = "<group>"; };
|
||||||
/* End PBXFileReference section */
|
/* End PBXFileReference section */
|
||||||
|
|
||||||
@ -118,6 +155,7 @@
|
|||||||
E407861A2110CE6E006887B1 /* Persephone */ = {
|
E407861A2110CE6E006887B1 /* Persephone */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
|
E41B22C721FB966C00D544F6 /* include */,
|
||||||
E407861B2110CE6E006887B1 /* AppDelegate.swift */,
|
E407861B2110CE6E006887B1 /* AppDelegate.swift */,
|
||||||
E407861D2110CE6E006887B1 /* ViewController.swift */,
|
E407861D2110CE6E006887B1 /* ViewController.swift */,
|
||||||
E407861F2110CE70006887B1 /* Assets.xcassets */,
|
E407861F2110CE70006887B1 /* Assets.xcassets */,
|
||||||
@ -125,7 +163,7 @@
|
|||||||
E465049921E94DF500A70F4C /* WindowController.swift */,
|
E465049921E94DF500A70F4C /* WindowController.swift */,
|
||||||
E40786242110CE70006887B1 /* Info.plist */,
|
E40786242110CE70006887B1 /* Info.plist */,
|
||||||
E40786252110CE70006887B1 /* Persephone.entitlements */,
|
E40786252110CE70006887B1 /* Persephone.entitlements */,
|
||||||
E41B22C421FB715A00D544F6 /* module.modulemap */,
|
E41B22C521FB932700D544F6 /* MPDClient.swift */,
|
||||||
);
|
);
|
||||||
path = Persephone;
|
path = Persephone;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
@ -156,6 +194,57 @@
|
|||||||
name = Frameworks;
|
name = Frameworks;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
};
|
};
|
||||||
|
E41B22C721FB966C00D544F6 /* include */ = {
|
||||||
|
isa = PBXGroup;
|
||||||
|
children = (
|
||||||
|
E41B22C421FB715A00D544F6 /* module.modulemap */,
|
||||||
|
E41B22C821FB966C00D544F6 /* mpd */,
|
||||||
|
);
|
||||||
|
path = include;
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
|
E41B22C821FB966C00D544F6 /* mpd */ = {
|
||||||
|
isa = PBXGroup;
|
||||||
|
children = (
|
||||||
|
E41B22DC21FB966C00D544F6 /* async.h */,
|
||||||
|
E41B22E321FB966C00D544F6 /* audio_format.h */,
|
||||||
|
E41B22E921FB966C00D544F6 /* capabilities.h */,
|
||||||
|
E41B22CD21FB966C00D544F6 /* client.h */,
|
||||||
|
E41B22D221FB966C00D544F6 /* compiler.h */,
|
||||||
|
E41B22C921FB966C00D544F6 /* connection.h */,
|
||||||
|
E41B22DE21FB966C00D544F6 /* database.h */,
|
||||||
|
E41B22DD21FB966C00D544F6 /* directory.h */,
|
||||||
|
E41B22DF21FB966C00D544F6 /* entity.h */,
|
||||||
|
E41B22CB21FB966C00D544F6 /* error.h */,
|
||||||
|
E41B22D621FB966C00D544F6 /* idle.h */,
|
||||||
|
E41B22DB21FB966C00D544F6 /* list.h */,
|
||||||
|
E41B22D721FB966C00D544F6 /* message.h */,
|
||||||
|
E41B22DA21FB966C00D544F6 /* mixer.h */,
|
||||||
|
E41B22E421FB966C00D544F6 /* mount.h */,
|
||||||
|
E41B22D921FB966C00D544F6 /* output.h */,
|
||||||
|
E41B22E021FB966C00D544F6 /* pair.h */,
|
||||||
|
E41B22D521FB966C00D544F6 /* parser.h */,
|
||||||
|
E41B22E221FB966C00D544F6 /* password.h */,
|
||||||
|
E41B22D821FB966C00D544F6 /* player.h */,
|
||||||
|
E41B22EB21FB966C00D544F6 /* playlist.h */,
|
||||||
|
E41B22CA21FB966C00D544F6 /* protocol.h */,
|
||||||
|
E41B22EA21FB966C00D544F6 /* queue.h */,
|
||||||
|
E41B22CC21FB966C00D544F6 /* recv.h */,
|
||||||
|
E41B22CF21FB966C00D544F6 /* response.h */,
|
||||||
|
E41B22E621FB966C00D544F6 /* search.h */,
|
||||||
|
E41B22E121FB966C00D544F6 /* send.h */,
|
||||||
|
E41B22D321FB966C00D544F6 /* settings.h */,
|
||||||
|
E41B22E721FB966C00D544F6 /* socket.h */,
|
||||||
|
E41B22CE21FB966C00D544F6 /* song.h */,
|
||||||
|
E41B22E821FB966C00D544F6 /* stats.h */,
|
||||||
|
E41B22D021FB966C00D544F6 /* status.h */,
|
||||||
|
E41B22E521FB966C00D544F6 /* sticker.h */,
|
||||||
|
E41B22D121FB966C00D544F6 /* tag.h */,
|
||||||
|
E41B22D421FB966C00D544F6 /* version.h.in */,
|
||||||
|
);
|
||||||
|
path = mpd;
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
/* End PBXGroup section */
|
/* End PBXGroup section */
|
||||||
|
|
||||||
/* Begin PBXNativeTarget section */
|
/* Begin PBXNativeTarget section */
|
||||||
@ -225,6 +314,11 @@
|
|||||||
TargetAttributes = {
|
TargetAttributes = {
|
||||||
E40786172110CE6E006887B1 = {
|
E40786172110CE6E006887B1 = {
|
||||||
CreatedOnToolsVersion = 9.4.1;
|
CreatedOnToolsVersion = 9.4.1;
|
||||||
|
SystemCapabilities = {
|
||||||
|
com.apple.Sandbox = {
|
||||||
|
enabled = 0;
|
||||||
|
};
|
||||||
|
};
|
||||||
};
|
};
|
||||||
E40786292110CE70006887B1 = {
|
E40786292110CE70006887B1 = {
|
||||||
CreatedOnToolsVersion = 9.4.1;
|
CreatedOnToolsVersion = 9.4.1;
|
||||||
@ -289,6 +383,7 @@
|
|||||||
files = (
|
files = (
|
||||||
E407861E2110CE6E006887B1 /* ViewController.swift in Sources */,
|
E407861E2110CE6E006887B1 /* ViewController.swift in Sources */,
|
||||||
E465049A21E94DF500A70F4C /* WindowController.swift in Sources */,
|
E465049A21E94DF500A70F4C /* WindowController.swift in Sources */,
|
||||||
|
E41B22C621FB932700D544F6 /* MPDClient.swift in Sources */,
|
||||||
E407861C2110CE6E006887B1 /* AppDelegate.swift in Sources */,
|
E407861C2110CE6E006887B1 /* AppDelegate.swift in Sources */,
|
||||||
);
|
);
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
@ -471,10 +566,7 @@
|
|||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
PROVISIONING_PROFILE_SPECIFIER = "";
|
PROVISIONING_PROFILE_SPECIFIER = "";
|
||||||
SWIFT_VERSION = 4.0;
|
SWIFT_VERSION = 4.0;
|
||||||
SYSTEM_HEADER_SEARCH_PATHS = (
|
SYSTEM_HEADER_SEARCH_PATHS = Persephone/include;
|
||||||
libmpdclient/include,
|
|
||||||
Persephone,
|
|
||||||
);
|
|
||||||
USER_HEADER_SEARCH_PATHS = libmpdclient/output;
|
USER_HEADER_SEARCH_PATHS = libmpdclient/output;
|
||||||
};
|
};
|
||||||
name = Debug;
|
name = Debug;
|
||||||
@ -501,10 +593,7 @@
|
|||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
PROVISIONING_PROFILE_SPECIFIER = "";
|
PROVISIONING_PROFILE_SPECIFIER = "";
|
||||||
SWIFT_VERSION = 4.0;
|
SWIFT_VERSION = 4.0;
|
||||||
SYSTEM_HEADER_SEARCH_PATHS = (
|
SYSTEM_HEADER_SEARCH_PATHS = Persephone/include;
|
||||||
libmpdclient/include,
|
|
||||||
Persephone,
|
|
||||||
);
|
|
||||||
USER_HEADER_SEARCH_PATHS = libmpdclient/output;
|
USER_HEADER_SEARCH_PATHS = libmpdclient/output;
|
||||||
};
|
};
|
||||||
name = Release;
|
name = Release;
|
||||||
|
|||||||
@ -693,7 +693,6 @@
|
|||||||
<toolbar key="toolbar" implicitIdentifier="33DCB92B-74AF-496A-99FE-1F88002CB88A" autosavesConfiguration="NO" displayMode="iconOnly" sizeMode="regular" id="eNB-TI-KUS">
|
<toolbar key="toolbar" implicitIdentifier="33DCB92B-74AF-496A-99FE-1F88002CB88A" autosavesConfiguration="NO" displayMode="iconOnly" sizeMode="regular" id="eNB-TI-KUS">
|
||||||
<allowedToolbarItems>
|
<allowedToolbarItems>
|
||||||
<toolbarItem implicitItemIdentifier="NSToolbarSpaceItem" id="mhg-16-CNM"/>
|
<toolbarItem implicitItemIdentifier="NSToolbarSpaceItem" id="mhg-16-CNM"/>
|
||||||
<toolbarItem implicitItemIdentifier="NSToolbarFlexibleSpaceItem" id="NWn-Bn-Qn8"/>
|
|
||||||
<toolbarItem implicitItemIdentifier="2D01DD0F-DDD1-411E-9270-20E2B5B07FC2" label="Controls" paletteLabel="Controls" sizingBehavior="auto" id="p3r-ty-Pxf">
|
<toolbarItem implicitItemIdentifier="2D01DD0F-DDD1-411E-9270-20E2B5B07FC2" label="Controls" paletteLabel="Controls" sizingBehavior="auto" id="p3r-ty-Pxf">
|
||||||
<nil key="toolTip"/>
|
<nil key="toolTip"/>
|
||||||
<segmentedControl key="view" verticalHuggingPriority="750" id="Bbf-C6-1Gu">
|
<segmentedControl key="view" verticalHuggingPriority="750" id="Bbf-C6-1Gu">
|
||||||
@ -705,13 +704,15 @@
|
|||||||
<segment image="prevTrackButton" width="32"/>
|
<segment image="prevTrackButton" width="32"/>
|
||||||
<segment image="playButton" width="48" tag="1"/>
|
<segment image="playButton" width="48" tag="1"/>
|
||||||
<segment image="stopButton" width="32"/>
|
<segment image="stopButton" width="32"/>
|
||||||
<segment image="nextTrackButton" width="32">
|
<segment image="nextTrackButton" width="32"/>
|
||||||
<nil key="label"/>
|
|
||||||
</segment>
|
|
||||||
</segments>
|
</segments>
|
||||||
|
<connections>
|
||||||
|
<action selector="handleTransportControl:" target="B8D-0N-5wS" id="HTN-5E-y75"/>
|
||||||
|
</connections>
|
||||||
</segmentedCell>
|
</segmentedCell>
|
||||||
</segmentedControl>
|
</segmentedControl>
|
||||||
</toolbarItem>
|
</toolbarItem>
|
||||||
|
<toolbarItem implicitItemIdentifier="NSToolbarFlexibleSpaceItem" id="9ol-aR-mzv"/>
|
||||||
</allowedToolbarItems>
|
</allowedToolbarItems>
|
||||||
<defaultToolbarItems>
|
<defaultToolbarItems>
|
||||||
<toolbarItem reference="p3r-ty-Pxf"/>
|
<toolbarItem reference="p3r-ty-Pxf"/>
|
||||||
@ -762,13 +763,13 @@
|
|||||||
<rect key="frame" x="0.0" y="0.0" width="450" height="300"/>
|
<rect key="frame" x="0.0" y="0.0" width="450" height="300"/>
|
||||||
<autoresizingMask key="autoresizingMask"/>
|
<autoresizingMask key="autoresizingMask"/>
|
||||||
<subviews>
|
<subviews>
|
||||||
<scrollView borderType="none" autohidesScrollers="YES" horizontalLineScroll="26" horizontalPageScroll="10" verticalLineScroll="26" verticalPageScroll="10" usesPredominantAxisScrolling="NO" translatesAutoresizingMaskIntoConstraints="NO" id="S3o-nF-NN7">
|
<scrollView borderType="none" autohidesScrollers="YES" horizontalLineScroll="19" horizontalPageScroll="10" verticalLineScroll="19" verticalPageScroll="10" usesPredominantAxisScrolling="NO" translatesAutoresizingMaskIntoConstraints="NO" id="S3o-nF-NN7">
|
||||||
<rect key="frame" x="0.0" y="0.0" width="450" height="300"/>
|
<rect key="frame" x="0.0" y="0.0" width="450" height="300"/>
|
||||||
<clipView key="contentView" drawsBackground="NO" id="WI8-Pw-03L">
|
<clipView key="contentView" drawsBackground="NO" id="WI8-Pw-03L">
|
||||||
<rect key="frame" x="0.0" y="0.0" width="450" height="300"/>
|
<rect key="frame" x="0.0" y="0.0" width="450" height="300"/>
|
||||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||||
<subviews>
|
<subviews>
|
||||||
<outlineView verticalHuggingPriority="750" allowsExpansionToolTips="YES" columnAutoresizingStyle="lastColumnOnly" selectionHighlightStyle="sourceList" multipleSelection="NO" autosaveColumns="NO" rowHeight="24" rowSizeStyle="automatic" viewBased="YES" indentationPerLevel="16" outlineTableColumn="0Co-uF-CCB" id="jEJ-jg-fll">
|
<outlineView verticalHuggingPriority="750" allowsExpansionToolTips="YES" columnAutoresizingStyle="lastColumnOnly" selectionHighlightStyle="sourceList" multipleSelection="NO" autosaveColumns="NO" rowSizeStyle="automatic" viewBased="YES" indentationPerLevel="16" outlineTableColumn="0Co-uF-CCB" id="jEJ-jg-fll">
|
||||||
<rect key="frame" x="0.0" y="0.0" width="450" height="300"/>
|
<rect key="frame" x="0.0" y="0.0" width="450" height="300"/>
|
||||||
<autoresizingMask key="autoresizingMask"/>
|
<autoresizingMask key="autoresizingMask"/>
|
||||||
<size key="intercellSpacing" width="3" height="2"/>
|
<size key="intercellSpacing" width="3" height="2"/>
|
||||||
|
|||||||
62
Persephone/MPDClient.swift
Normal file
62
Persephone/MPDClient.swift
Normal file
@ -0,0 +1,62 @@
|
|||||||
|
//
|
||||||
|
// MPDClient.swift
|
||||||
|
// Persephone
|
||||||
|
//
|
||||||
|
// Created by Daniel Barber on 2019/1/25.
|
||||||
|
// Copyright © 2019 Dan Barber. All rights reserved.
|
||||||
|
//
|
||||||
|
|
||||||
|
import Foundation
|
||||||
|
import mpdclient
|
||||||
|
|
||||||
|
class MPDClient {
|
||||||
|
let HOST = "localhost"
|
||||||
|
let PORT: UInt32 = 6600
|
||||||
|
private let connection: OpaquePointer
|
||||||
|
private var status: OpaquePointer?
|
||||||
|
|
||||||
|
init?() {
|
||||||
|
guard let connection = mpd_connection_new(HOST, PORT, 0)
|
||||||
|
else { return nil }
|
||||||
|
|
||||||
|
mpd_connection_set_keepalive(connection, true)
|
||||||
|
|
||||||
|
self.connection = connection
|
||||||
|
}
|
||||||
|
|
||||||
|
deinit {
|
||||||
|
mpd_connection_free(connection)
|
||||||
|
}
|
||||||
|
|
||||||
|
func getStatus() {
|
||||||
|
status = mpd_status_begin()
|
||||||
|
}
|
||||||
|
|
||||||
|
func playPause() {
|
||||||
|
mpd_run_toggle_pause(connection)
|
||||||
|
}
|
||||||
|
|
||||||
|
func stop() {
|
||||||
|
mpd_run_stop(connection)
|
||||||
|
}
|
||||||
|
|
||||||
|
func prevTrack() {
|
||||||
|
mpd_run_previous(connection)
|
||||||
|
}
|
||||||
|
|
||||||
|
func nextTrack() {
|
||||||
|
mpd_run_next(connection)
|
||||||
|
}
|
||||||
|
|
||||||
|
func getLastErrorMessage() -> String! {
|
||||||
|
if mpd_connection_get_error(connection) == MPD_ERROR_SUCCESS {
|
||||||
|
return "no error"
|
||||||
|
}
|
||||||
|
|
||||||
|
if let errorMessage = mpd_connection_get_error_message(connection) {
|
||||||
|
return String(cString: errorMessage)
|
||||||
|
}
|
||||||
|
|
||||||
|
return "no error message"
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -1,10 +1,5 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||||
<plist version="1.0">
|
<plist version="1.0">
|
||||||
<dict>
|
<dict/>
|
||||||
<key>com.apple.security.app-sandbox</key>
|
|
||||||
<true/>
|
|
||||||
<key>com.apple.security.files.user-selected.read-only</key>
|
|
||||||
<true/>
|
|
||||||
</dict>
|
|
||||||
</plist>
|
</plist>
|
||||||
|
|||||||
@ -7,7 +7,6 @@
|
|||||||
//
|
//
|
||||||
|
|
||||||
import Cocoa
|
import Cocoa
|
||||||
import mpdclient
|
|
||||||
|
|
||||||
class ViewController: NSViewController {
|
class ViewController: NSViewController {
|
||||||
override func viewDidLoad() {
|
override func viewDidLoad() {
|
||||||
|
|||||||
@ -9,8 +9,36 @@
|
|||||||
import Cocoa
|
import Cocoa
|
||||||
|
|
||||||
class WindowController: NSWindowController {
|
class WindowController: NSWindowController {
|
||||||
override func windowDidLoad() {
|
enum TransportAction: Int {
|
||||||
super.windowDidLoad()
|
case prevTrack = 0
|
||||||
window?.titleVisibility = .hidden
|
case playPause = 1
|
||||||
|
case stop = 2
|
||||||
|
case nextTrack = 3
|
||||||
|
}
|
||||||
|
var mpdClient: MPDClient?
|
||||||
|
|
||||||
|
override func windowDidLoad() {
|
||||||
|
super.windowDidLoad()
|
||||||
|
window?.titleVisibility = .hidden
|
||||||
|
mpdClient = MPDClient()
|
||||||
|
mpdClient?.getStatus()
|
||||||
|
}
|
||||||
|
|
||||||
|
@IBAction func handleTransportControl(_ sender: NSSegmentedControl) {
|
||||||
|
guard let transportAction = TransportAction(rawValue: sender.selectedSegment)
|
||||||
|
else { return }
|
||||||
|
|
||||||
|
switch transportAction {
|
||||||
|
case .prevTrack:
|
||||||
|
mpdClient?.prevTrack()
|
||||||
|
case .playPause:
|
||||||
|
mpdClient?.playPause()
|
||||||
|
case .stop:
|
||||||
|
mpdClient?.stop()
|
||||||
|
case .nextTrack:
|
||||||
|
mpdClient?.nextTrack()
|
||||||
|
default:
|
||||||
|
break
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
5
Persephone/include/module.modulemap
Normal file
5
Persephone/include/module.modulemap
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
module mpdclient {
|
||||||
|
umbrella header "mpd/client.h"
|
||||||
|
export *
|
||||||
|
module * { export * }
|
||||||
|
}
|
||||||
1
Persephone/include/mpd
Symbolic link
1
Persephone/include/mpd
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
../../libmpdclient/include/mpd
|
||||||
@ -1,4 +0,0 @@
|
|||||||
module mpdclient [system] {
|
|
||||||
umbrella "mpd"
|
|
||||||
export *
|
|
||||||
}
|
|
||||||
Loading…
Reference in New Issue
Block a user