Compare commits
18 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| d5cc094120 | |||
| 639f563a5c | |||
| 56a5ce232b | |||
| 4f8b75fe86 | |||
| d34b6e0954 | |||
| 9d1a88c06a | |||
| 4d3a6105d3 | |||
| 6aceab7282 | |||
| 5c4dc289b9 | |||
| 7a80404180 | |||
| e6e29bf7c6 | |||
| 25abced9f5 | |||
| 1d905c6a70 | |||
| f8f6c5cad5 | |||
| 6339336048 | |||
| b92a5cb366 | |||
| 79245e937c | |||
| 862af085c5 |
1
.gitignore
vendored
@@ -1 +0,0 @@
|
||||
.DS_Store
|
||||
@@ -1,6 +1,9 @@
|
||||
# Changelog
|
||||
All notable changes to this project will be documented in this file.
|
||||
|
||||
## [0.1.8]
|
||||
- Tweaks and bugfixes
|
||||
|
||||
## [0.1.7]
|
||||
- Updated Pashua binary
|
||||
|
||||
|
||||
65
Console/Console.platypus
Normal file
@@ -0,0 +1,65 @@
|
||||
<?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">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>AcceptsFiles</key>
|
||||
<false/>
|
||||
<key>AcceptsText</key>
|
||||
<false/>
|
||||
<key>Authentication</key>
|
||||
<false/>
|
||||
<key>Author</key>
|
||||
<string>profiteroles</string>
|
||||
<key>BundledFiles</key>
|
||||
<array/>
|
||||
<key>Creator</key>
|
||||
<string>Platypus-5.2</string>
|
||||
<key>DeclareService</key>
|
||||
<false/>
|
||||
<key>DevelopmentVersion</key>
|
||||
<false/>
|
||||
<key>Droppable</key>
|
||||
<false/>
|
||||
<key>IconPath</key>
|
||||
<string>/Volumes/Code/Minat/master/Console/icon.icns</string>
|
||||
<key>Identifier</key>
|
||||
<string>org.profiteroles.Console</string>
|
||||
<key>InterfaceType</key>
|
||||
<string>Text Window</string>
|
||||
<key>InterpreterPath</key>
|
||||
<string>/bin/bash</string>
|
||||
<key>Name</key>
|
||||
<string>Console</string>
|
||||
<key>NibPath</key>
|
||||
<string>/usr/local/share/platypus/MainMenu.nib</string>
|
||||
<key>OptimizeApplication</key>
|
||||
<true/>
|
||||
<key>Overwrite</key>
|
||||
<false/>
|
||||
<key>PromptForFileOnLaunch</key>
|
||||
<false/>
|
||||
<key>RemainRunning</key>
|
||||
<false/>
|
||||
<key>RunInBackground</key>
|
||||
<true/>
|
||||
<key>ScriptPath</key>
|
||||
<string>/Volumes/Code/Minat/master/Console/tail.sh</string>
|
||||
<key>TextBackground</key>
|
||||
<string>#23030e</string>
|
||||
<key>TextFont</key>
|
||||
<string>SFMono-Regular</string>
|
||||
<key>TextForeground</key>
|
||||
<string>#ffc3bd</string>
|
||||
<key>TextSize</key>
|
||||
<real>11</real>
|
||||
<key>UniformTypes</key>
|
||||
<array>
|
||||
<string>public.item</string>
|
||||
<string>public.folder</string>
|
||||
</array>
|
||||
<key>UseXMLPlistFormat</key>
|
||||
<false/>
|
||||
<key>Version</key>
|
||||
<string>0.1.0.0</string>
|
||||
</dict>
|
||||
</plist>
|
||||
BIN
Console/icon.icns
Normal file
87
MainMenu.nib/designable.nib
generated
@@ -52,20 +52,20 @@
|
||||
</customObject>
|
||||
<window allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" releasedWhenClosed="NO" visibleAtLaunch="NO" frameAutosaveName="ProgressBarWindow" animationBehavior="default" id="21" userLabel="ProgressWindow">
|
||||
<windowStyleMask key="styleMask" titled="YES" miniaturizable="YES" resizable="YES"/>
|
||||
<rect key="contentRect" x="472" y="537" width="438" height="83"/>
|
||||
<rect key="contentRect" x="472" y="537" width="600" height="83"/>
|
||||
<rect key="screenRect" x="0.0" y="0.0" width="1440" height="878"/>
|
||||
<value key="minSize" type="size" width="438" height="83"/>
|
||||
<value key="maxSize" type="size" width="600" height="83"/>
|
||||
<value key="minSize" type="size" width="600" height="83"/>
|
||||
<value key="maxSize" type="size" width="1200" height="83"/>
|
||||
<view key="contentView" id="2">
|
||||
<rect key="frame" x="0.0" y="0.0" width="438" height="83"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="600" height="83"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<subviews>
|
||||
<progressIndicator wantsLayer="YES" verticalHuggingPriority="750" maxValue="100" bezeled="NO" indeterminate="YES" style="bar" id="204">
|
||||
<rect key="frame" x="18" y="27" width="310" height="20"/>
|
||||
<rect key="frame" x="18" y="27" width="472" height="20"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
|
||||
</progressIndicator>
|
||||
<textField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" id="205">
|
||||
<rect key="frame" x="18" y="55" width="403" height="17"/>
|
||||
<rect key="frame" x="18" y="55" width="565" height="17"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
|
||||
<textFieldCell key="cell" lineBreakMode="clipping" sendsActionOnEndEditing="YES" baseWritingDirection="leftToRight" alignment="left" id="472">
|
||||
<font key="font" metaFont="system"/>
|
||||
@@ -74,7 +74,7 @@
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<button verticalHuggingPriority="750" id="206">
|
||||
<rect key="frame" x="338" y="20" width="86" height="32"/>
|
||||
<rect key="frame" x="500" y="20" width="86" height="32"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMinY="YES"/>
|
||||
<buttonCell key="cell" type="push" title="Quit" bezelStyle="rounded" alignment="center" borderStyle="border" inset="2" id="473">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
@@ -108,19 +108,19 @@ Gw
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<scrollView autohidesScrollers="YES" horizontalLineScroll="10" horizontalPageScroll="10" verticalLineScroll="10" verticalPageScroll="10" hasHorizontalScroller="NO" usesPredominantAxisScrolling="NO" id="304">
|
||||
<rect key="frame" x="20" y="-203" width="393" height="202"/>
|
||||
<rect key="frame" x="20" y="-203" width="555" height="202"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
|
||||
<clipView key="contentView" drawsBackground="NO" copiesOnScroll="NO" id="2mm-QF-kpX">
|
||||
<rect key="frame" x="1" y="1" width="391" height="200"/>
|
||||
<rect key="frame" x="1" y="1" width="553" height="200"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<textView editable="NO" importsGraphics="NO" richText="NO" verticallyResizable="YES" findStyle="panel" allowsDocumentBackgroundColorChange="YES" linkDetection="YES" id="307">
|
||||
<rect key="frame" x="0.0" y="0.0" width="391" height="200"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="553" height="200"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
<size key="minSize" width="391" height="200"/>
|
||||
<size key="maxSize" width="463" height="10000000"/>
|
||||
<size key="minSize" width="553" height="200"/>
|
||||
<size key="maxSize" width="555" height="10000000"/>
|
||||
<color key="insertionPointColor" name="textColor" catalog="System" colorSpace="catalog"/>
|
||||
<connections>
|
||||
<outlet property="delegate" destination="207" id="489"/>
|
||||
@@ -163,10 +163,9 @@ Gw
|
||||
<action selector="menuItemSelected:" target="207" id="x6l-Tq-pHp"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Check for Updates..." id="C0p-oO-R2b">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<menuItem title="Check for Updates..." keyEquivalent="u" id="jWa-5b-mBK" userLabel="Check for updates...">
|
||||
<connections>
|
||||
<action selector="menuItemSelected:" target="207" id="iT2-Ph-VrL"/>
|
||||
<action selector="menuItemSelected:" target="207" id="VBb-a8-Cku"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Services" id="235">
|
||||
@@ -488,16 +487,15 @@ Gw
|
||||
<menuItem title="Window" id="19">
|
||||
<menu key="submenu" title="Window" systemMenu="window" id="24">
|
||||
<items>
|
||||
<menuItem title="Show Debug Console" id="lMd-a8-8Ow">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<menuItem title="Console" keyEquivalent="0" id="ZMj-KE-Xmg">
|
||||
<connections>
|
||||
<action selector="menuItemSelected:" target="207" id="2Lz-zY-3KO"/>
|
||||
<action selector="menuItemSelected:" target="207" id="uTf-9L-ThU"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Zoom" keyEquivalent="z" id="197">
|
||||
<menuItem title="Zoom" keyEquivalent="z" id="bf1-wK-fgP">
|
||||
<modifierMask key="keyEquivalentModifierMask" shift="YES" command="YES"/>
|
||||
<connections>
|
||||
<action selector="performZoom:" target="-1" id="198"/>
|
||||
<action selector="performZoom:" target="-1" id="xLL-JF-YCG"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Minimize" keyEquivalent="m" id="23">
|
||||
@@ -550,7 +548,7 @@ Gw
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<clipView key="contentView" drawsBackground="NO" copiesOnScroll="NO" id="Hk1-72-Owa">
|
||||
<rect key="frame" x="1" y="1" width="559" height="365"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<textView editable="NO" importsGraphics="NO" richText="NO" verticallyResizable="YES" usesFontPanel="YES" findStyle="panel" allowsDocumentBackgroundColorChange="YES" linkDetection="YES" id="225">
|
||||
<rect key="frame" x="0.0" y="0.0" width="559" height="365"/>
|
||||
@@ -664,14 +662,14 @@ Gw
|
||||
</window>
|
||||
<window title="Droplet" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" visibleAtLaunch="NO" frameAutosaveName="DropletWindow" animationBehavior="default" id="490" userLabel="DropletWindow">
|
||||
<windowStyleMask key="styleMask" titled="YES" closable="YES" miniaturizable="YES"/>
|
||||
<rect key="contentRect" x="157" y="273" width="188" height="188"/>
|
||||
<rect key="contentRect" x="157" y="273" width="294" height="280"/>
|
||||
<rect key="screenRect" x="0.0" y="0.0" width="1440" height="878"/>
|
||||
<view key="contentView" id="491">
|
||||
<rect key="frame" x="0.0" y="0.0" width="188" height="188"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="294" height="280"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<subviews>
|
||||
<textField hidden="YES" verticalHuggingPriority="750" misplaced="YES" allowsCharacterPickerTouchBarItem="YES" id="519">
|
||||
<rect key="frame" x="0.0" y="0.0" width="188" height="188"/>
|
||||
<textField hidden="YES" verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" id="519">
|
||||
<rect key="frame" x="0.0" y="0.0" width="294" height="280"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||
<textFieldCell key="cell" enabled="NO" allowsUndo="NO" sendsActionOnEndEditing="YES" drawsBackground="YES" id="520">
|
||||
<font key="font" metaFont="system"/>
|
||||
@@ -679,19 +677,19 @@ Gw
|
||||
<color key="backgroundColor" name="disabledControlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<box autoresizesSubviews="NO" misplaced="YES" borderType="line" titlePosition="noTitle" id="494">
|
||||
<rect key="frame" x="17" y="16" width="154" height="154"/>
|
||||
<box autoresizesSubviews="NO" borderType="line" titlePosition="noTitle" id="494">
|
||||
<rect key="frame" x="17" y="16" width="260" height="246"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||
<view key="contentView" id="q0i-G4-K1a">
|
||||
<rect key="frame" x="1" y="1" width="152" height="152"/>
|
||||
<rect key="frame" x="1" y="1" width="258" height="244"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<progressIndicator wantsLayer="YES" horizontalHuggingPriority="750" verticalHuggingPriority="750" misplaced="YES" maxValue="100" displayedWhenStopped="NO" bezeled="NO" indeterminate="YES" style="spinning" id="496">
|
||||
<rect key="frame" x="61" y="61" width="32" height="32"/>
|
||||
<progressIndicator wantsLayer="YES" horizontalHuggingPriority="750" verticalHuggingPriority="750" maxValue="100" displayedWhenStopped="NO" bezeled="NO" indeterminate="YES" style="spinning" id="496">
|
||||
<rect key="frame" x="112" y="128" width="32" height="32"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||
</progressIndicator>
|
||||
<textField verticalHuggingPriority="750" misplaced="YES" allowsCharacterPickerTouchBarItem="YES" id="499">
|
||||
<rect key="frame" x="41" y="59" width="71" height="34"/>
|
||||
<textField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" id="499">
|
||||
<rect key="frame" x="92" y="112" width="71" height="34"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||
<textFieldCell key="cell" controlSize="mini" sendsActionOnEndEditing="YES" alignment="center" title="Drop files here" id="500">
|
||||
<font key="font" metaFont="system"/>
|
||||
@@ -699,6 +697,15 @@ Gw
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" id="505">
|
||||
<rect key="frame" x="18" y="44" width="218" height="76"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||
<textFieldCell key="cell" controlSize="small" sendsActionOnEndEditing="YES" alignment="center" id="506">
|
||||
<font key="font" metaFont="smallSystem"/>
|
||||
<color key="textColor" name="disabledControlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
</subviews>
|
||||
</view>
|
||||
</box>
|
||||
@@ -709,21 +716,5 @@ Gw
|
||||
</connections>
|
||||
<point key="canvasLocation" x="608" y="262"/>
|
||||
</window>
|
||||
<textField verticalHuggingPriority="750" misplaced="YES" allowsCharacterPickerTouchBarItem="YES" id="505">
|
||||
<rect key="frame" x="0.0" y="0.0" width="116" height="24"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES" heightSizable="YES"/>
|
||||
<textFieldCell key="cell" controlSize="small" sendsActionOnEndEditing="YES" alignment="center" id="506">
|
||||
<font key="font" metaFont="smallSystem"/>
|
||||
<color key="textColor" name="disabledControlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
<point key="canvasLocation" x="608" y="270"/>
|
||||
</textField>
|
||||
<menuItem title="Check for Updates..." id="U6h-y5-bg3">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="menuItemSelected:" target="207" id="RcS-Le-Wo9"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
</objects>
|
||||
</document>
|
||||
|
||||
BIN
MainMenu.nib/keyedobjects.nib
generated
BIN
Minat.app.zip
Normal file
121
Minat.php
@@ -3,40 +3,35 @@
|
||||
// Minat
|
||||
// Minat Is Not a Transcoder
|
||||
|
||||
$version = file_get_contents(__DIR__."/version.txt");
|
||||
$version = file_get_contents(__DIR__."/current_version.txt");
|
||||
|
||||
// Includes
|
||||
|
||||
require (__DIR__."/functions.php");
|
||||
|
||||
// Prefs
|
||||
// Load preferences
|
||||
|
||||
$prefs = __DIR__."/prefs.php";
|
||||
if (!file_exists($prefs)) {
|
||||
|
||||
alert("Can't read prefs file");
|
||||
die;
|
||||
|
||||
} else {
|
||||
|
||||
$p = unserialize(file_get_contents($prefs));
|
||||
|
||||
// Extra prefs
|
||||
|
||||
$p['phpbin'] = "/usr/bin/php";
|
||||
$p['flacbin'] = __DIR__."/bin/flac";
|
||||
$p['metaflacbin'] = __DIR__."/bin/metaflac";
|
||||
$p['lamebin'] = __DIR__."/bin/lame";
|
||||
$p['soxbin'] = __DIR__."/bin/sox";
|
||||
|
||||
$p['workdir'] = "/tmp/minat/";
|
||||
$p['logfile'] = getLogPath("minat.log");
|
||||
$p['disable_tags'] = 0;
|
||||
$p['disable_artwork'] = 0;
|
||||
$p['premature'] = 0;
|
||||
$p['max_size'] = 1000;
|
||||
|
||||
$prefs_file = "/Users/".get_current_user()."/Library/Preferences/org.profiteroles.Minat.php";
|
||||
if (!file_exists($prefs_file)) {
|
||||
if (!copy(__DIR__."/prefs.php",$prefs_file)) {
|
||||
echo "Error creating preferences file";
|
||||
die;
|
||||
}
|
||||
}
|
||||
$p = unserialize(file_get_contents($prefs_file));
|
||||
|
||||
$p['phpbin'] = "/usr/bin/php";
|
||||
$p['flacbin'] = __DIR__."/bin/flac";
|
||||
$p['metaflacbin'] = __DIR__."/bin/metaflac";
|
||||
$p['lamebin'] = __DIR__."/bin/lame";
|
||||
$p['soxbin'] = __DIR__."/bin/sox";
|
||||
|
||||
$p['workdir'] = "/tmp/minat/";
|
||||
$p['logfile'] = getLogPath("minat.log");
|
||||
$p['disable_tags'] = 0;
|
||||
$p['disable_artwork'] = 0;
|
||||
$p['premature'] = 0;
|
||||
$p['max_size'] = 1000;
|
||||
|
||||
if ($p['mode'] != 1) { $p['premature'] = 1; addline("MODE ".$p['mode']." NOT YET IMPLEMENTED."); }
|
||||
|
||||
@@ -59,46 +54,34 @@ addline("Minat: ".$version);
|
||||
addline("PHP: ".PHP_VERSION);
|
||||
addline(exec("sw_vers | grep ProductVersion"));
|
||||
|
||||
// Launch without argv (no files dragged)
|
||||
// No files dragged
|
||||
|
||||
array_shift($argv);
|
||||
|
||||
if(count($argv) == 0) {
|
||||
addline("Launch without argv");
|
||||
die;
|
||||
}
|
||||
|
||||
// Preferences
|
||||
|
||||
if ($argv[0] == "Preferences...") {
|
||||
exec($p['phpbin']." ".__DIR__."/MinatPrefs.php");
|
||||
addline("Launch preferences");
|
||||
die;
|
||||
}
|
||||
|
||||
// Version check
|
||||
|
||||
if ($argv[0] == "Check for Updates...") {
|
||||
|
||||
$curr_version = file_get_contents("https://www.profiteroles.org/git/profiteroles/Minat/raw/branch/master/version.txt");
|
||||
addline("Version check, me=".$version." latest=".$curr_version);
|
||||
if ($curr_version > $version) {
|
||||
if(askMulti("Minat ".$curr_version." is available (you have ".$version.")", array("Cancel","Download")) == 1) {
|
||||
exec("open http://git.profiteroles.org/profiteroles/Minat");
|
||||
switch (@$argv[0]) {
|
||||
case NULL:
|
||||
addline("Launch without argv");
|
||||
die;
|
||||
case "Preferences...":
|
||||
exec(escapeshellarg($p['phpbin'])." ".escapeshellarg(__DIR__."/MinatPrefs.php"));
|
||||
addline("Launch preferences");
|
||||
die;
|
||||
case "Console":
|
||||
exec("open -n ".__DIR__."/bin/Console.app --args ".$p['logfile']);
|
||||
die;
|
||||
case "Check for Updates...":
|
||||
$curr_version = file_get_contents("https://www.profiteroles.org/git/p/Minat/raw/master/current_version.txt");
|
||||
if ($curr_version > $version) {
|
||||
if(askMulti("Minat ".$curr_version." is available (you have ".$version.")", array("Cancel","Download")) == 1) {
|
||||
exec("open https://www.profiteroles.org/git/p/Minat");
|
||||
echo "QUITAPP\n";
|
||||
} else {
|
||||
die;
|
||||
}
|
||||
} else {
|
||||
echo "\nALERT:Up-to-date|".$version." is the latest version.\n";
|
||||
die;
|
||||
}
|
||||
} else {
|
||||
alert($version." is the latest version","Up-to-date");
|
||||
die;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// Console
|
||||
|
||||
if ($argv[0] == "Show Debug Console") {
|
||||
exec("open -n Console.app --args ".$p['logfile']);
|
||||
die;
|
||||
}
|
||||
|
||||
$stamp = md5(serialize($argv))."_".time();
|
||||
@@ -175,7 +158,7 @@ foreach ($argv as $target) {
|
||||
|
||||
if (!$p['disable_artwork']) {
|
||||
|
||||
$mimecmd = $p['metaflacbin']." --list --block-type=PICTURE ".escapeshellarg($files[0])." | head -10 | grep MIME | sed 's:.*/::'";
|
||||
$mimecmd = escapeshellarg($p['metaflacbin'])." --list --block-type=PICTURE ".escapeshellarg($files[0])." | head -10 | grep MIME | sed 's:.*/::'";
|
||||
addline($mimecmd);
|
||||
$mime = exec($mimecmd);
|
||||
if ($mime == " MIME type:") {
|
||||
@@ -187,7 +170,7 @@ foreach ($argv as $target) {
|
||||
addline("embedded cover found in ".$files[0]);
|
||||
|
||||
$coverdest = $workdir."cover.".$mime;
|
||||
exec($p['metaflacbin']." --export-picture-to=".escapeshellarg($coverdest)." ".escapeshellarg($files[0]));
|
||||
exec(escapeshellarg($p['metaflacbin'])." --export-picture-to=".escapeshellarg($coverdest)." ".escapeshellarg($files[0]));
|
||||
if (file_exists($coverdest)) { $usecover = $coverdest; } else { addline ("error extracting file"); }
|
||||
|
||||
} elseif ($extcover = findCover($target)) {
|
||||
@@ -228,13 +211,13 @@ foreach ($argv as $target) {
|
||||
addline("Processing ".$file);
|
||||
|
||||
if ($p['check']) {
|
||||
if (exec($p['flacbin']." -ts ".escapeshellarg($file)." 2>&1")) {
|
||||
if (exec(escapeshellarg($p['flacbin'])." -ts ".escapeshellarg($file)." 2>&1")) {
|
||||
addline("Skipping corrupted flac: ".$file);
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
$tagcmd = $p['soxbin']." --i -a ".escapeshellarg($file);
|
||||
$tagcmd = escapeshellarg($p['soxbin'])." --i -a ".escapeshellarg($file);
|
||||
|
||||
if (!$p['disable_tags']) {
|
||||
|
||||
@@ -246,8 +229,8 @@ foreach ($argv as $target) {
|
||||
|
||||
$dest = $destdir.basename($file,".flac").".mp3";
|
||||
$lockfile = $workdir.md5($target).".".basename($file,".flac").".lock";
|
||||
$cmd_flac = $p['flacbin']." -dcs -- ".escapeshellarg($file);
|
||||
$cmd_lame = $p['lamebin']." -S ".$p['lameopts']." --id3v2-utf16 ".$tags." ".$covertags." - ".escapeshellarg($dest);
|
||||
$cmd_flac = escapeshellarg($p['flacbin'])." -dcs -- ".escapeshellarg($file);
|
||||
$cmd_lame = escapeshellarg($p['lamebin'])." -S ".$p['lameopts']." --id3v2-utf16 ".$tags." ".$covertags." - ".escapeshellarg($dest);
|
||||
$cmd_lock = "touch ".escapeshellarg($lockfile);
|
||||
|
||||
$line[] = $cmd_flac." | ".$cmd_lame." ; ".$cmd_lock;
|
||||
@@ -310,7 +293,7 @@ if ($p['ding']) {
|
||||
$pass[] = 1;
|
||||
}
|
||||
|
||||
$cmd = "open -n ".__DIR__."/Parallel.app --args ".implode(" ",$pass);
|
||||
$cmd = "open -n ".escapeshellarg(__DIR__."/bin/Parallel.app")." --args ".implode(" ",$pass);
|
||||
|
||||
addline($cmd);
|
||||
exec($cmd);
|
||||
|
||||
70
Minat.platypus
Normal file
@@ -0,0 +1,70 @@
|
||||
<?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">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>AcceptsFiles</key>
|
||||
<true/>
|
||||
<key>AcceptsText</key>
|
||||
<false/>
|
||||
<key>Authentication</key>
|
||||
<false/>
|
||||
<key>Author</key>
|
||||
<string>profiteroles</string>
|
||||
<key>BundledFiles</key>
|
||||
<array>
|
||||
<string>/Volumes/Code/Minat/bin</string>
|
||||
<string>/Volumes/Code/Minat/master/current_version.txt</string>
|
||||
<string>/Volumes/Code/Minat/master/functions.php</string>
|
||||
<string>/Volumes/Code/Minat/master/prefs.php</string>
|
||||
<string>/Volumes/Code/Minat/master/Minat.php</string>
|
||||
<string>/Volumes/Code/Minat/master/MinatPrefs.php</string>
|
||||
<string>/Volumes/Code/Minat/master/hr.png</string>
|
||||
</array>
|
||||
<key>Creator</key>
|
||||
<string>Platypus-5.3</string>
|
||||
<key>DeclareService</key>
|
||||
<false/>
|
||||
<key>DevelopmentVersion</key>
|
||||
<false/>
|
||||
<key>Droppable</key>
|
||||
<true/>
|
||||
<key>IconPath</key>
|
||||
<string>/Volumes/Code/Minat/master/icon.icns</string>
|
||||
<key>Identifier</key>
|
||||
<string>org.profiteroles.Minat</string>
|
||||
<key>InterfaceType</key>
|
||||
<string>Droplet</string>
|
||||
<key>InterpreterPath</key>
|
||||
<string>/usr/bin/php</string>
|
||||
<key>Name</key>
|
||||
<string>Minat</string>
|
||||
<key>NibPath</key>
|
||||
<string>/Volumes/Code/Minat/master/MainMenu.nib</string>
|
||||
<key>OptimizeApplication</key>
|
||||
<true/>
|
||||
<key>Overwrite</key>
|
||||
<false/>
|
||||
<key>PromptForFileOnLaunch</key>
|
||||
<false/>
|
||||
<key>RemainRunning</key>
|
||||
<true/>
|
||||
<key>RunInBackground</key>
|
||||
<false/>
|
||||
<key>ScriptPath</key>
|
||||
<string>/Volumes/Code/Minat/master/script</string>
|
||||
<key>TextBackground</key>
|
||||
<string>#ffffff</string>
|
||||
<key>TextFont</key>
|
||||
<string>Monaco</string>
|
||||
<key>TextForeground</key>
|
||||
<string>#000000</string>
|
||||
<key>TextSize</key>
|
||||
<real>13</real>
|
||||
<key>UniformTypes</key>
|
||||
<array>
|
||||
<string>public.folder</string>
|
||||
</array>
|
||||
<key>Version</key>
|
||||
<string>0.0.0.0</string>
|
||||
</dict>
|
||||
</plist>
|
||||
132
MinatPrefs.php
@@ -1,16 +1,121 @@
|
||||
<?php
|
||||
|
||||
// MinatPrefs 0.1.0
|
||||
// MinatPrefs
|
||||
//
|
||||
|
||||
// Includes
|
||||
function makeWindowString($p, $strings) {
|
||||
|
||||
require (__DIR__."/functions.php");
|
||||
require (__DIR__."/functions.pashua.php");
|
||||
$conf = "
|
||||
# Set window title
|
||||
*.title = Preferences
|
||||
*.floating = 1
|
||||
|
||||
hr.type = image
|
||||
hr.path = ".__DIR__."/hr.png"."
|
||||
hr.width = 320
|
||||
hr.height = 2
|
||||
hr.x = 0
|
||||
hr.y = 564
|
||||
|
||||
mode.type = popup
|
||||
mode.label = Minat Operation
|
||||
mode.option = ".$strings[2][0]."
|
||||
mode.option = ".$strings[2][1]."
|
||||
mode.option = ".$strings[2][2]."
|
||||
mode.default = ".$strings[2][$p['mode']]."
|
||||
mode.width = 320
|
||||
mode.rely = 20
|
||||
mode.disabled = 1
|
||||
|
||||
dest.type = popup
|
||||
dest.label = Destination
|
||||
dest.option = ".$strings[0][0]."
|
||||
dest.option = ".$strings[0][1]."
|
||||
dest.option = ".$strings[0][2]."
|
||||
dest.default = ".$strings[0][$p['dest']]."
|
||||
dest.width = 160
|
||||
|
||||
destpath.type = openbrowser
|
||||
destpath.filetype = directory
|
||||
destpath.label = Custom destination
|
||||
destpath.default = ".$p['destpath']."
|
||||
destpath.width = 320
|
||||
|
||||
lameopts.type = textfield
|
||||
lameopts.label = LAME flags
|
||||
lameopts.default = ".$p['lameopts']."
|
||||
lameopts.placeholder = -h -b 320 --ignore-tag-errors
|
||||
lameopts.width = 320
|
||||
|
||||
check.type = checkbox
|
||||
check.label = Check flacs
|
||||
check.default = ".$p['check']."
|
||||
|
||||
warn_art.type = checkbox
|
||||
warn_art.label = Warn for missing art
|
||||
warn_art.default = ".$p['warn_art']."
|
||||
warn_art.x = 120
|
||||
warn_art.y = 338
|
||||
|
||||
template.type = textfield
|
||||
template.label = Rename template
|
||||
template.default = ".$p['template']."
|
||||
template.placeholder = ^ARTIST^ - ^YEAR^ - ^ALBUM^ {LABEL CAT} [FORMAT]
|
||||
template.width = 320
|
||||
template.disabled = 1
|
||||
|
||||
spec_dims_x.type = textfield
|
||||
spec_dims_x.label = Spec dimensions
|
||||
spec_dims_x.default = ".$p['spec_dims'][0]."
|
||||
spec_dims_x.width = 60
|
||||
spec_dims_x.disabled = 1
|
||||
|
||||
spec_dims_y.type = textfield
|
||||
spec_dims_y.default = ".$p['spec_dims'][1]."
|
||||
spec_dims_y.width = 60
|
||||
spec_dims_y.x = 80
|
||||
spec_dims_y.y = 214
|
||||
spec_dims_y.disabled = 1
|
||||
|
||||
postflight.type = popup
|
||||
postflight.label = When finished
|
||||
postflight.option = ".$strings[1][0]."
|
||||
postflight.option = ".$strings[1][1]."
|
||||
postflight.option = ".$strings[1][2]."
|
||||
postflight.option = ".$strings[1][3]."
|
||||
postflight.default = ".$strings[1][$p['postflight']]."
|
||||
postflight.width = 160
|
||||
|
||||
handler.type = openbrowser
|
||||
handler.filetype = app
|
||||
handler.label = Handler application
|
||||
handler.default = ".$p['handler']."
|
||||
handler.width = 320
|
||||
|
||||
stay_open.type = checkbox
|
||||
stay_open.label = Stay open
|
||||
stay_open.default = ".$p['stay_open']."
|
||||
|
||||
ding.type = checkbox
|
||||
ding.label = Ding
|
||||
ding.default = ".$p['ding']."
|
||||
ding.x = 100
|
||||
ding.y = 48
|
||||
|
||||
cb.type = cancelbutton
|
||||
db.type = defaultbutton
|
||||
db.label = Save
|
||||
";
|
||||
|
||||
return $conf;
|
||||
|
||||
}
|
||||
|
||||
// Read Prefs
|
||||
|
||||
$p = unserialize(file_get_contents(__DIR__."/prefs.php"));
|
||||
$prefs_file = "/Users/".get_current_user()."/Library/Preferences/org.profiteroles.Minat.php";
|
||||
$p = unserialize(file_get_contents($prefs_file));
|
||||
|
||||
if(!$p['destpath']) {
|
||||
$p['destpath'] = "/Users/".get_current_user()."/Desktop";
|
||||
}
|
||||
@@ -21,8 +126,19 @@ $strings[] = array("Temp","Inline","Custom (specify below)");
|
||||
$strings[] = array("Do nothing","Quicklook","Show in Finder","Open with handler (specify below)");
|
||||
$strings[] = array("Rename","Transcode","Spectrogram");
|
||||
|
||||
$result = Pashua::showDialog(makeWindowString($p, $strings));
|
||||
// Launch Pashua and parse results
|
||||
|
||||
$path = __DIR__."/bin/Pashua.app/Contents/MacOS/Pashua";
|
||||
$raw = shell_exec("echo ".escapeshellarg(makeWindowString($p, $strings))." | ".escapeshellarg($path)." - ");
|
||||
$result = array();
|
||||
foreach (explode("\n", $raw) as $line) {
|
||||
preg_match('/^(\w+)=(.*)$/', $line, $matches);
|
||||
if (empty($matches) or empty($matches[1])) {
|
||||
continue;
|
||||
}
|
||||
$result[$matches[1]] = $matches[2];
|
||||
}
|
||||
|
||||
// User cancelled
|
||||
|
||||
if (@$result['cb']) {
|
||||
@@ -43,13 +159,13 @@ if(!$p['destpath']) {
|
||||
$p['destpath'] = "/Users/".get_current_user()."/Desktop";
|
||||
}
|
||||
|
||||
// Fix a fucking Pashua bug
|
||||
// Fix a Pashua bug
|
||||
|
||||
$result['destpath'] = str_replace("Desktop/Desktop","Desktop",$result['destpath']);
|
||||
|
||||
// Write Prefs
|
||||
|
||||
file_put_contents("prefs.php",serialize($result));
|
||||
file_put_contents($prefs_file,serialize($result));
|
||||
echo "1";
|
||||
|
||||
?>
|
||||
BIN
Parallel/.DS_Store
vendored
70
Parallel/Parallel.platypus
Normal file
@@ -0,0 +1,70 @@
|
||||
<?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">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>AcceptsFiles</key>
|
||||
<false/>
|
||||
<key>AcceptsText</key>
|
||||
<false/>
|
||||
<key>Authentication</key>
|
||||
<false/>
|
||||
<key>Author</key>
|
||||
<string>profiteroles</string>
|
||||
<key>BundledFiles</key>
|
||||
<array>
|
||||
<string>/Volumes/Code/Minat/bin/parallel</string>
|
||||
<string>/Volumes/Code/Minat/master/Parallel/ding.mp3</string>
|
||||
</array>
|
||||
<key>Creator</key>
|
||||
<string>Platypus-5.2</string>
|
||||
<key>DeclareService</key>
|
||||
<false/>
|
||||
<key>DevelopmentVersion</key>
|
||||
<false/>
|
||||
<key>Droppable</key>
|
||||
<false/>
|
||||
<key>IconPath</key>
|
||||
<string>/Volumes/Code/Minat/master/Parallel/icon.icns</string>
|
||||
<key>Identifier</key>
|
||||
<string>org.profiteroles.Parallel</string>
|
||||
<key>InterfaceType</key>
|
||||
<string>Progress Bar</string>
|
||||
<key>InterpreterPath</key>
|
||||
<string>/usr/bin/php</string>
|
||||
<key>Name</key>
|
||||
<string>Parallel</string>
|
||||
<key>NibPath</key>
|
||||
<string>/Volumes/Code/Minat/master/Parallel/MainMenu.nib</string>
|
||||
<key>OptimizeApplication</key>
|
||||
<true/>
|
||||
<key>Overwrite</key>
|
||||
<false/>
|
||||
<key>PromptForFileOnLaunch</key>
|
||||
<false/>
|
||||
<key>RemainRunning</key>
|
||||
<false/>
|
||||
<key>RunInBackground</key>
|
||||
<true/>
|
||||
<key>ScriptArgs</key>
|
||||
<array/>
|
||||
<key>ScriptPath</key>
|
||||
<string>/Volumes/Code/Minat/master/Parallel/Parallel.php</string>
|
||||
<key>TextBackground</key>
|
||||
<string>#ffffff</string>
|
||||
<key>TextFont</key>
|
||||
<string>Monaco</string>
|
||||
<key>TextForeground</key>
|
||||
<string>#000000</string>
|
||||
<key>TextSize</key>
|
||||
<real>13</real>
|
||||
<key>UniformTypes</key>
|
||||
<array>
|
||||
<string>public.item</string>
|
||||
<string>public.folder</string>
|
||||
</array>
|
||||
<key>UseXMLPlistFormat</key>
|
||||
<false/>
|
||||
<key>Version</key>
|
||||
<string>0.1.0.0</string>
|
||||
</dict>
|
||||
</plist>
|
||||
BIN
Parallel/icon.icns
Normal file
12471
Parallel/parallel
18
README.md
@@ -1,31 +1,27 @@
|
||||
<img align="left" src="https://www.profiteroles.org/assets/minat.png" style="float: left; margin-right: 30px;" width="120">
|
||||
<img align='left' src='icon.iconset/icon_512x512.png' width='128'>
|
||||
|
||||
# Minat
|
||||
|
||||
**Minat** is a simple multithreaded audio transcoder for Mac OS. Minat supports one operation: transcoding flac to mp3, preserving tags and album artwork. Written in PHP, Minat is lightweight and easy to modify.
|
||||
**Minat** is a simple multithreaded audio transcoder for macOS. Minat supports one operation: transcoding flac to mp3, preserving tags and album artwork. Written in PHP, Minat is lightweight and easy to modify.
|
||||
|
||||
Support is planned for two other operations:
|
||||
|
||||
* Generate specs from audio files supported by sox
|
||||
* Rename folders based on the tags of the audio files inside
|
||||
|
||||
* **⇩ [Download Minat 0.1.7](https://www.profiteroles.org/downloads/Minat_0.1.7.zip)**
|
||||
####[⇩ Download Minat 0.1.8.0](https://git1.profiteroles.org/p/Minat/raw/master/Minat.app.zip) ([Changelog](CHANGELOG.md))
|
||||
|
||||
## Screenshot
|
||||
## Screenshots
|
||||
|
||||
<img src="https://www.profiteroles.org/assets/minat_prefs.png" width="400">
|
||||
<img src='screenshot_1.png' width='475'>
|
||||
|
||||
## Notes
|
||||
|
||||
Running Minat requires disabling Gatekeeper by running `sudo spctl --master-disable` in the Terminal.
|
||||
|
||||
## Changelog
|
||||
|
||||
http://git.profiteroles.org/profiteroles/Minat/src/branch/master/CHANGELOG.md
|
||||
Running Minat may require disabling Gatekeeper by running `sudo spctl --master-disable` in the Terminal.
|
||||
|
||||
## Building from source
|
||||
|
||||
Building Minat requires Platypus and Pashua
|
||||
|
||||
* https://github.com/sveinbjornt/Platypus
|
||||
* https://github.com/BlueM/Pashua
|
||||
* https://github.com/BlueM/Pashua
|
||||
|
||||
BIN
bin/.DS_Store
vendored
BIN
bin/metaflac
1
current_version.txt
Executable file
@@ -0,0 +1 @@
|
||||
0.1.8.0
|
||||
@@ -1,165 +0,0 @@
|
||||
<?php
|
||||
|
||||
// Pashua Stuff
|
||||
|
||||
/**
|
||||
* Static class which wraps the two simple methods used for communicating with Pashua
|
||||
*/
|
||||
class Pashua
|
||||
{
|
||||
/**
|
||||
* Invokes a Pashua dialog window with the given window configuration
|
||||
*
|
||||
* @param string $conf Configuration string to pass to Pashua
|
||||
* @param string $customLocation Filesystem path to directory containing Pashua
|
||||
*
|
||||
* @throws \RuntimeException
|
||||
* @return array Associative array of values returned by Pashua
|
||||
*/
|
||||
public static function showDialog($conf, $customLocation = null)
|
||||
{
|
||||
if (ini_get('safe_mode')) {
|
||||
$msg = "To use Pashua you will have to disable safe mode or " .
|
||||
"change " . __FUNCTION__ . "() to fit your environment.\n";
|
||||
fwrite(STDERR, $msg);
|
||||
exit(1);
|
||||
}
|
||||
|
||||
// Write configuration string to temporary config file
|
||||
$configfile = tempnam('/tmp', 'Pashua_');
|
||||
if (false === $fp = @fopen($configfile, 'w')) {
|
||||
throw new \RuntimeException("Error trying to open $configfile");
|
||||
}
|
||||
fwrite($fp, $conf);
|
||||
fclose($fp);
|
||||
|
||||
$path = __DIR__."/Pashua.app/Contents/MacOS/Pashua";
|
||||
|
||||
// Call pashua binary with config file as argument and read result
|
||||
$result = shell_exec(escapeshellarg($path) . ' ' . escapeshellarg($configfile));
|
||||
|
||||
@unlink($configfile);
|
||||
|
||||
// Parse result
|
||||
$parsed = array();
|
||||
foreach (explode("\n", $result) as $line) {
|
||||
preg_match('/^(\w+)=(.*)$/', $line, $matches);
|
||||
if (empty($matches) or empty($matches[1])) {
|
||||
continue;
|
||||
}
|
||||
$parsed[$matches[1]] = $matches[2];
|
||||
}
|
||||
|
||||
return $parsed;
|
||||
}
|
||||
}
|
||||
|
||||
function makeWindowString($p, $strings) {
|
||||
|
||||
$conf = "
|
||||
# Set window title
|
||||
*.title = Preferences
|
||||
*.floating = 1
|
||||
|
||||
hr.type = image
|
||||
hr.path = ".__DIR__."/hr.png"."
|
||||
hr.width = 320
|
||||
hr.height = 2
|
||||
hr.x = 0
|
||||
hr.y = 564
|
||||
|
||||
mode.type = popup
|
||||
mode.label = Minat Operation
|
||||
mode.option = ".$strings[2][0]."
|
||||
mode.option = ".$strings[2][1]."
|
||||
mode.option = ".$strings[2][2]."
|
||||
mode.default = ".$strings[2][$p['mode']]."
|
||||
mode.width = 320
|
||||
mode.rely = 20
|
||||
mode.disabled = 1
|
||||
|
||||
dest.type = popup
|
||||
dest.label = Destination
|
||||
dest.option = ".$strings[0][0]."
|
||||
dest.option = ".$strings[0][1]."
|
||||
dest.option = ".$strings[0][2]."
|
||||
dest.default = ".$strings[0][$p['dest']]."
|
||||
dest.width = 160
|
||||
|
||||
destpath.type = openbrowser
|
||||
destpath.filetype = directory
|
||||
destpath.label = Custom destination
|
||||
destpath.default = ".$p['destpath']."
|
||||
destpath.width = 320
|
||||
|
||||
lameopts.type = textfield
|
||||
lameopts.label = LAME flags
|
||||
lameopts.default = ".$p['lameopts']."
|
||||
lameopts.placeholder = -h -b 320 --ignore-tag-errors
|
||||
lameopts.width = 320
|
||||
|
||||
check.type = checkbox
|
||||
check.label = Check flacs
|
||||
check.default = ".$p['check']."
|
||||
|
||||
warn_art.type = checkbox
|
||||
warn_art.label = Warn for missing art
|
||||
warn_art.default = ".$p['warn_art']."
|
||||
warn_art.x = 120
|
||||
warn_art.y = 338
|
||||
|
||||
template.type = textfield
|
||||
template.label = Rename template
|
||||
template.default = ".$p['template']."
|
||||
template.placeholder = ^ARTIST^ - ^YEAR^ - ^ALBUM^ {LABEL CAT} [FORMAT]
|
||||
template.width = 320
|
||||
template.disabled = 1
|
||||
|
||||
spec_dims_x.type = textfield
|
||||
spec_dims_x.label = Spec dimensions
|
||||
spec_dims_x.default = ".$p['spec_dims'][0]."
|
||||
spec_dims_x.width = 60
|
||||
spec_dims_x.disabled = 1
|
||||
|
||||
spec_dims_y.type = textfield
|
||||
spec_dims_y.default = ".$p['spec_dims'][1]."
|
||||
spec_dims_y.width = 60
|
||||
spec_dims_y.x = 80
|
||||
spec_dims_y.y = 214
|
||||
spec_dims_y.disabled = 1
|
||||
|
||||
postflight.type = popup
|
||||
postflight.label = When finished
|
||||
postflight.option = ".$strings[1][0]."
|
||||
postflight.option = ".$strings[1][1]."
|
||||
postflight.option = ".$strings[1][2]."
|
||||
postflight.option = ".$strings[1][3]."
|
||||
postflight.default = ".$strings[1][$p['postflight']]."
|
||||
postflight.width = 160
|
||||
|
||||
handler.type = openbrowser
|
||||
handler.filetype = app
|
||||
handler.label = Handler application
|
||||
handler.default = ".$p['handler']."
|
||||
handler.width = 320
|
||||
|
||||
stay_open.type = checkbox
|
||||
stay_open.label = Stay open
|
||||
stay_open.default = ".$p['stay_open']."
|
||||
|
||||
ding.type = checkbox
|
||||
ding.label = Ding
|
||||
ding.default = ".$p['ding']."
|
||||
ding.x = 100
|
||||
ding.y = 48
|
||||
|
||||
cb.type = cancelbutton
|
||||
db.type = defaultbutton
|
||||
db.label = Save
|
||||
";
|
||||
|
||||
return $conf;
|
||||
|
||||
}
|
||||
|
||||
?>
|
||||
BIN
icon.iconset/icon_128x128.png
Normal file
|
After Width: | Height: | Size: 6.3 KiB |
BIN
icon.iconset/icon_128x128@2x.png
Normal file
|
After Width: | Height: | Size: 13 KiB |
BIN
icon.iconset/icon_16x16.png
Normal file
|
After Width: | Height: | Size: 1.0 KiB |
BIN
icon.iconset/icon_16x16@2x.png
Normal file
|
After Width: | Height: | Size: 1.7 KiB |
BIN
icon.iconset/icon_256x256.png
Normal file
|
After Width: | Height: | Size: 13 KiB |
BIN
icon.iconset/icon_256x256@2x.png
Normal file
|
After Width: | Height: | Size: 31 KiB |
BIN
icon.iconset/icon_32x32.png
Normal file
|
After Width: | Height: | Size: 1.7 KiB |
BIN
icon.iconset/icon_32x32@2x.png
Normal file
|
After Width: | Height: | Size: 3.2 KiB |
BIN
icon.iconset/icon_512x512.png
Normal file
|
After Width: | Height: | Size: 31 KiB |
BIN
icon.iconset/icon_512x512@2x.png
Normal file
|
After Width: | Height: | Size: 43 KiB |
BIN
screenshot_1.png
Normal file
|
After Width: | Height: | Size: 333 KiB |
@@ -1 +0,0 @@
|
||||
0.1.7
|
||||