Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
V
vlc-gpu
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Redmine
Redmine
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Metrics
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
videolan
vlc-gpu
Commits
f4ea890c
Commit
f4ea890c
authored
Nov 22, 2007
by
Damien Fouilleul
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
eyetv: functional GUI panel, replaced Carbon style AppleScript with NSAppleScript
parent
59f74cc4
Changes
3
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
210 additions
and
178 deletions
+210
-178
modules/gui/macosx/eyetv.h
modules/gui/macosx/eyetv.h
+1
-2
modules/gui/macosx/eyetv.m
modules/gui/macosx/eyetv.m
+186
-166
modules/gui/macosx/open.m
modules/gui/macosx/open.m
+23
-10
No files found.
modules/gui/macosx/eyetv.h
View file @
f4ea890c
...
...
@@ -35,7 +35,6 @@
-
(
void
)
launchEyeTV
;
-
(
void
)
switchChannelUp
:(
BOOL
)
b_yesOrNo
;
-
(
void
)
selectChannel
:(
int
)
theChannelNum
;
-
(
int
)
getNumberOfChannels
;
-
(
NSString
*
)
getNameOfChannel
:(
int
)
theChannelNum
;
-
(
NSEnumerator
*
)
getChannels
;
@end
modules/gui/macosx/eyetv.m
View file @
f4ea890c
...
...
@@ -23,7 +23,7 @@
#import "eyetv.h"
/* for apple event interaction [carbon] */
#import <ApplicationServices/ApplicationServices.h>
//#import <Foundation/NSAppleScript>
/* for various VLC core related calls */
#import "intf.h"
...
...
@@ -85,86 +85,106 @@ static VLCEyeTVController *_o_sharedInstance = nil;
-
(
void
)
launchEyeTV
{
OSStatus
stat
;
FSRef
eyetvPath
;
stat
=
LSFindApplicationForInfo
(
'
EyTV
'
,
CFSTR
(
"com.elgato.eyetv"
),
NULL
,
&
eyetvPath
,
NULL
);
if
(
stat
!=
noErr
)
msg_Err
(
VLCIntf
,
"finding EyeTV failed with error code %i"
,
(
int
)
stat
);
stat
=
LSOpenFSRef
(
&
eyetvPath
,
NULL
);
if
(
stat
!=
noErr
)
msg_Err
(
VLCIntf
,
"opening EyeTV failed with error code %i"
,
(
int
)
stat
);
NSAppleScript
*
script
=
[[
NSAppleScript
alloc
]
initWithSource
:
@"tell application
\"
EyeTV
\"
to launch with server mode"
];
NSDictionary
*
errorDict
;
NSAppleEventDescriptor
*
descriptor
=
[
script
executeAndReturnError
:
&
errorDict
];
if
(
nil
==
descriptor
)
{
NSString
*
errorString
=
[
errorDict
objectForKey
:
NSAppleScriptErrorMessage
];
msg_Err
(
VLCIntf
,
"opening EyeTV failed with error code %s"
,
[
errorString
UTF8String
]
);
}
[
script
release
];
}
-
(
void
)
switchChannelUp
:(
BOOL
)
b_yesOrNo
{
OSErr
err
;
AppleEvent
ourAE
=
{
typeNull
,
nil
};
AEBuildError
theBuildError
;
const
OSType
eyetvSignature
=
'
EyTV
'
;
/* carbon FOURCC style */
OSType
eyetvCommand
;
NSAppleScript
*
script
;
NSDictionary
*
errorDict
;
NSAppleEventDescriptor
*
descriptor
;
if
(
b_yesOrNo
==
YES
)
{
eyetvCommand
=
'
Chup
'
;
/* same style */
script
=
[[
NSAppleScript
alloc
]
initWithSource
:
@"tell application
\"
EyeTV
\"
to channel_up"
];
msg_Dbg
(
VLCIntf
,
"telling eyetv to switch 1 channel up"
);
}
else
{
eyetvCommand
=
'
Chdn
'
;
/* same style again */
script
=
[[
NSAppleScript
alloc
]
initWithSource
:
@"tell application
\"
EyeTV
\"
to channel_down"
];
msg_Dbg
(
VLCIntf
,
"telling eyetv to switch 1 channel down"
);
}
err
=
AEBuildAppleEvent
(
/* EyeTV script suite */
eyetvSignature
,
/* command */
eyetvCommand
,
/* signature type */
typeApplSignature
,
/* signature */
&
eyetvSignature
,
/* signature size */
sizeof
(
eyetvSignature
),
/* basic return id */
kAutoGenerateReturnID
,
/* generic transaction id */
kAnyTransactionID
,
/* to-be-created AE */
&
ourAE
,
/* get some possible errors */
&
theBuildError
,
/* got no params for now */
""
);
if
(
err
!=
aeBuildSyntaxNoErr
)
descriptor
=
[
script
executeAndReturnError
:
&
errorDict
];
if
(
nil
==
descriptor
)
{
msg_Err
(
VLCIntf
,
"Error %i encountered while trying to the build the AE to launch eyetv.
\n
"
\
"additionally, the following info was returned: AEBuildErrorCode:%i at pos:%i"
,
(
int
)
err
,
theBuildError
.
fError
,
theBuildError
.
fErrorPos
);
return
;
NSString
*
errorString
=
[
errorDict
objectForKey
:
NSAppleScriptErrorMessage
];
msg_Err
(
VLCIntf
,
"EyeTV channel change failed with error code %s"
,
[
errorString
UTF8String
]
);
}
else
msg_Dbg
(
VLCIntf
,
"AE created successfully, trying to send now"
);
err
=
AESendMessage
(
/* our AE */
&
ourAE
,
/* no need for a response-AE */
NULL
,
/* we neither want a response nor user interaction */
kAENoReply
|
kAENeverInteract
,
/* we don't need a special time-out */
kAEDefaultTimeout
);
if
(
err
!=
noErr
)
msg_Err
(
VLCIntf
,
"Error %i encountered while trying to tell EyeTV to switch channel"
,
(
int
)
err
);
err
=
AEDisposeDesc
(
&
ourAE
);
[
script
release
];
}
-
(
void
)
selectChannel
:
(
int
)
theChannelNum
{
NSAppleScript
*
script
;
switch
(
theChannelNum
)
{
case
-
2
:
// Composite
script
=
[[
NSAppleScript
alloc
]
initWithSource
:
@"tell application
\"
EyeTV
\"
to input_change input source composite video input"
];
break
;
case
-
1
:
// S-Video
script
=
[[
NSAppleScript
alloc
]
initWithSource
:
@"tell application
\"
EyeTV
\"
to input_change input source S video input"
];
break
;
case
0
:
// Tuner
script
=
[[
NSAppleScript
alloc
]
initWithSource
:
@"tell application
\"
EyeTV
\"
to input_change input source tuner input"
];
break
;
default:
if
(
theChannelNum
>
0
)
{
NSString
*
channel_change
=
[
NSString
stringWithFormat
:
@"tell application
\"
EyeTV
\"
to channel_change channel number %d"
,
theChannelNum
];
script
=
[[
NSAppleScript
alloc
]
initWithSource
:
channel_change
];
}
else
return
;
}
NSDictionary
*
errorDict
;
NSAppleEventDescriptor
*
descriptor
=
[
script
executeAndReturnError
:
&
errorDict
];
if
(
nil
==
descriptor
)
{
NSString
*
errorString
=
[
errorDict
objectForKey
:
NSAppleScriptErrorMessage
];
msg_Err
(
VLCIntf
,
"EyeTV source change failed with error code %s"
,
[
errorString
UTF8String
]
);
}
[
script
release
];
}
-
(
int
)
getNumberOfChannels
{
return
2
;
}
-
(
NSString
*
)
getNameOfChannel
:
(
int
)
theChannelNum
-
(
NSEnumerator
*
)
getChannels
{
return
@"dummy name"
;
NSEnumerator
*
channels
=
nil
;
NSAppleScript
*
script
=
[[
NSAppleScript
alloc
]
initWithSource
:
@"tell application
\"
EyeTV
\"
to get name of every channel"
];
NSDictionary
*
errorDict
;
NSAppleEventDescriptor
*
descriptor
=
[
script
executeAndReturnError
:
&
errorDict
];
if
(
nil
==
descriptor
)
{
NSString
*
errorString
=
[
errorDict
objectForKey
:
NSAppleScriptErrorMessage
];
msg_Err
(
VLCIntf
,
"EyeTV channel inventory failed with error code %s"
,
[
errorString
UTF8String
]
);
}
else
{
int
count
=
[
descriptor
numberOfItems
];
int
x
=
0
;
NSMutableArray
*
channelArray
=
[
NSMutableArray
arrayWithCapacity
:
count
];
while
(
x
++
<
count
)
{
[
channelArray
addObject
:[[
descriptor
descriptorAtIndex
:
x
]
stringValue
]];
}
channels
=
[
channelArray
objectEnumerator
];
}
[
script
release
];
return
channels
;
}
@end
modules/gui/macosx/open.m
View file @
f4ea890c
...
...
@@ -804,7 +804,7 @@ static VLCOpen *_o_sharedMainInstance = nil;
[[[
VLCMain
sharedInstance
]
getEyeTVController
]
switchChannelUp
:
NO
];
else
if
(
sender
==
o_eyetv_channels_pop
)
[[[
VLCMain
sharedInstance
]
getEyeTVController
]
selectChannel
:
[
sender
indexOfSelectedItem
]];
[
[
sender
selectedItem
]
tag
]];
else
msg_Err
(
VLCIntf
,
"eyetvSwitchChannel sent by unknown object"
);
}
...
...
@@ -856,16 +856,29 @@ static VLCOpen *_o_sharedMainInstance = nil;
[
o_eyetv_chn_status_txt
setHidden
:
NO
];
/* retrieve info */
int
x
=
0
;
int
channelCount
=
(
[[[
VLCMain
sharedInstance
]
getEyeTVController
]
getNumberOfChannels
]
+
1
);
while
(
x
!=
channelCount
)
NSEnumerator
*
channels
=
[[[
VLCMain
sharedInstance
]
getEyeTVController
]
getChannels
];
int
x
=
-
2
;
[[[
o_eyetv_channels_pop
menu
]
addItemWithTitle
:
_NS
(
"Composite input"
)
action:
nil
keyEquivalent:
@""
]
setTag
:
x
++
];
[[[
o_eyetv_channels_pop
menu
]
addItemWithTitle
:
_NS
(
"S-Video input"
)
action:
nil
keyEquivalent:
@""
]
setTag
:
x
++
];
if
(
channels
)
{
NSString
*
channel
;
[[[
o_eyetv_channels_pop
menu
]
addItemWithTitle
:
_NS
(
"Tuner"
)
action:
nil
keyEquivalent:
@""
]
setTag
:
x
++
];
[[
o_eyetv_channels_pop
menu
]
addItem
:
[
NSMenuItem
separatorItem
]];
while
(
channel
=
[
channels
nextObject
]
)
{
/* we have to add items this way, because we accept duplicates
* additionally, we save a bit of time */
[[
o_eyetv_channels_pop
menu
]
addItemWithTitle
:
[[[
VLCMain
sharedInstance
]
getEyeTVController
]
getNameOfChannel
:
x
]
[[[
o_eyetv_channels_pop
menu
]
addItemWithTitle
:
channel
action:
nil
keyEquivalent:
@""
];
x
+=
1
;
keyEquivalent:
@""
]
setTag
:
x
++
];
}
}
/* clean up GUI */
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment