[vlc-commits] macosx: Revive error panel for error and warning messages
David Fuhrmann
git at videolan.org
Fri Apr 14 13:43:08 CEST 2017
vlc | branch: master | David Fuhrmann <dfuhrmann at videolan.org> | Fri Apr 14 12:27:27 2017 +0200| [e75e8fe0eda748794fd153fa7911e4fe67e9e885] | committer: David Fuhrmann
macosx: Revive error panel for error and warning messages
VLC needs a list of errors as multiple errors can occur at the
same time.
This revives the existing error panel from
e3f2ec3e00f68f6dad9ea5ab732b7397a1b9891f.
refs #17262
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=e75e8fe0eda748794fd153fa7911e4fe67e9e885
---
.../package/macosx/VLC.xcodeproj/project.pbxproj | 12 ++-
modules/gui/macosx/Makefile.am | 3 +
modules/gui/macosx/UI/ErrorPanel.xib | 96 ++++++++++++++++++++++
modules/gui/macosx/UI/MainMenu.xib | 11 ++-
modules/gui/macosx/VLCCoreDialogProvider.h | 4 +
modules/gui/macosx/VLCCoreDialogProvider.m | 13 ++-
modules/gui/macosx/VLCErrorWindowController.h | 40 +++++++++
modules/gui/macosx/VLCErrorWindowController.m | 96 ++++++++++++++++++++++
modules/gui/macosx/VLCMainMenu.h | 3 +-
modules/gui/macosx/VLCMainMenu.m | 7 ++
po/POTFILES.in | 2 +
11 files changed, 275 insertions(+), 12 deletions(-)
diff --git a/extras/package/macosx/VLC.xcodeproj/project.pbxproj b/extras/package/macosx/VLC.xcodeproj/project.pbxproj
index a323e05167..23456d5f08 100644
--- a/extras/package/macosx/VLC.xcodeproj/project.pbxproj
+++ b/extras/package/macosx/VLC.xcodeproj/project.pbxproj
@@ -160,6 +160,7 @@
1C3114281E508D1B00D4DD76 /* VLCFullScreenPanel.xib in Sources */ = {isa = PBXBuildFile; fileRef = 6B8224181E4D2A9000833BE1 /* VLCFullScreenPanel.xib */; };
1C3114291E508D1B00D4DD76 /* VLCRendererDialog.xib in Sources */ = {isa = PBXBuildFile; fileRef = 6B8224191E4D2A9000833BE1 /* VLCRendererDialog.xib */; };
1C31142A1E508D1B00D4DD76 /* VLCStatusBarIconMainMenu.xib in Sources */ = {isa = PBXBuildFile; fileRef = 6B82241A1E4D2A9000833BE1 /* VLCStatusBarIconMainMenu.xib */; };
+ 1CFE8D591EA0D42A00E94451 /* VLCErrorWindowController.m in Sources */ = {isa = PBXBuildFile; fileRef = 1CFE8D581EA0D42A00E94451 /* VLCErrorWindowController.m */; };
6B3BE42C1E6217CB008D098A /* VLCHUDImageButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 6B3BE42B1E6217CB008D098A /* VLCHUDImageButton.m */; };
6B3BE4321E621F24008D098A /* VLCHUDToggleButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 6B3BE4311E621F24008D098A /* VLCHUDToggleButton.m */; };
6B4D50901E79781F004479B5 /* VLCHotkeyChangeWindow.m in Sources */ = {isa = PBXBuildFile; fileRef = 6B4D508F1E79781F004479B5 /* VLCHotkeyChangeWindow.m */; };
@@ -186,6 +187,9 @@
1CCB5F2F1A62A6A5004C3E90 /* Pseudo-VLC.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "Pseudo-VLC.app"; sourceTree = BUILT_PRODUCTS_DIR; };
1CD366791B7A242E0054E39F /* VLCTimeSelectionPanelController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = VLCTimeSelectionPanelController.h; sourceTree = "<group>"; };
1CD3667A1B7A242E0054E39F /* VLCTimeSelectionPanelController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = VLCTimeSelectionPanelController.m; sourceTree = "<group>"; };
+ 1CFE8D561EA0D3D300E94451 /* ErrorPanel.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = ErrorPanel.xib; sourceTree = "<group>"; };
+ 1CFE8D571EA0D42A00E94451 /* VLCErrorWindowController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = VLCErrorWindowController.h; sourceTree = "<group>"; };
+ 1CFE8D581EA0D42A00E94451 /* VLCErrorWindowController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = VLCErrorWindowController.m; sourceTree = "<group>"; };
5CCED71014C0D4A90057F8D1 /* VLCExtensionsDialogProvider.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = VLCExtensionsDialogProvider.h; sourceTree = "<group>"; };
5CCED71114C0D4A90057F8D1 /* VLCExtensionsDialogProvider.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = VLCExtensionsDialogProvider.m; sourceTree = "<group>"; };
5CCED71214C0D4A90057F8D1 /* VLCExtensionsManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = VLCExtensionsManager.h; sourceTree = "<group>"; };
@@ -938,6 +942,8 @@
1C67C8A71D58C0A40079E1C1 /* VLCAboutWindowController.m */,
1C67C8A31D58C0980079E1C1 /* VLCHelpWindowController.h */,
1C67C8A41D58C0980079E1C1 /* VLCHelpWindowController.m */,
+ 1CFE8D571EA0D42A00E94451 /* VLCErrorWindowController.h */,
+ 1CFE8D581EA0D42A00E94451 /* VLCErrorWindowController.m */,
7DF0435E1972E26A0022B534 /* VLCAddonListItem.h */,
7DF0435F1972E26A0022B534 /* VLCAddonListItem.m */,
7DB65D5218ABD6380053B874 /* VLCAddonsWindowController.h */,
@@ -1829,6 +1835,7 @@
6B8224031E4D2A9000833BE1 /* ConvertAndSave.xib */,
6B8224041E4D2A9000833BE1 /* CoreDialogs.xib */,
6B8224051E4D2A9000833BE1 /* DetachedVideoWindow.xib */,
+ 1CFE8D561EA0D3D300E94451 /* ErrorPanel.xib */,
6B8224061E4D2A9000833BE1 /* FSPanel.xib */,
6B8224071E4D2A9000833BE1 /* Help.xib */,
6B8224081E4D2A9000833BE1 /* LogMessageWindow.xib */,
@@ -1886,7 +1893,7 @@
};
};
};
- buildConfigurationList = C2F2A6EA09588F1B00018C74 /* Build configuration list for PBXProject "VLC" */;
+ buildConfigurationList = C2F2A6EA09588F1B00018C74 /* Build configuration list for PBXProject "vlc" */;
compatibilityVersion = "Xcode 3.2";
developmentRegion = English;
hasScannedForEncodings = 1;
@@ -1943,6 +1950,7 @@
1C31142A1E508D1B00D4DD76 /* VLCStatusBarIconMainMenu.xib in Sources */,
1C3114021E508C8800D4DD76 /* AppleRemote.h in Sources */,
1C3114031E508C8800D4DD76 /* AppleRemote.m in Sources */,
+ 1CFE8D591EA0D42A00E94451 /* VLCErrorWindowController.m in Sources */,
1C3114041E508C8800D4DD76 /* SideBarItem.h in Sources */,
1C3114051E508C8800D4DD76 /* SideBarItem.m in Sources */,
6B4D50961E7A7D16004479B5 /* NSSound+VLCAdditions.m in Sources */,
@@ -2229,7 +2237,7 @@
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Default;
};
- C2F2A6EA09588F1B00018C74 /* Build configuration list for PBXProject "VLC" */ = {
+ C2F2A6EA09588F1B00018C74 /* Build configuration list for PBXProject "vlc" */ = {
isa = XCConfigurationList;
buildConfigurations = (
C2F2A6EB09588F1B00018C74 /* Development */,
diff --git a/modules/gui/macosx/Makefile.am b/modules/gui/macosx/Makefile.am
index 7e4f74a661..e73345e100 100644
--- a/modules/gui/macosx/Makefile.am
+++ b/modules/gui/macosx/Makefile.am
@@ -32,6 +32,7 @@ libmacosx_plugin_la_SOURCES = \
VLCMainWindowControlsBar.m VLCMainWindowControlsBar.h \
VLCConvertAndSaveWindowController.h VLCConvertAndSaveWindowController.m \
VLCCoreInteraction.h VLCCoreInteraction.m \
+ VLCErrorWindowController.h VLCErrorWindowController.m \
VLCExtensionsDialogProvider.h VLCExtensionsDialogProvider.m \
VLCExtensionsManager.h VLCExtensionsManager.m \
VLCHelpWindowController.h VLCHelpWindowController.m \
@@ -106,6 +107,7 @@ nobase_libmacosx_plugin_la_DATA = \
UI/ConvertAndSave.nib \
UI/CoreDialogs.nib \
UI/DetachedVideoWindow.nib \
+ UI/ErrorPanel.nib \
UI/FSPanel.nib \
UI/Help.nib \
UI/LogMessageWindow.nib \
@@ -136,6 +138,7 @@ libmacosx_plugin_la_SOURCES += \
UI/ConvertAndSave.xib \
UI/CoreDialogs.xib \
UI/DetachedVideoWindow.xib \
+ UI/ErrorPanel.xib \
UI/FSPanel.xib \
UI/Help.xib \
UI/LogMessageWindow.xib \
diff --git a/modules/gui/macosx/UI/ErrorPanel.xib b/modules/gui/macosx/UI/ErrorPanel.xib
new file mode 100644
index 0000000000..9a33498e3f
--- /dev/null
+++ b/modules/gui/macosx/UI/ErrorPanel.xib
@@ -0,0 +1,96 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="10117" systemVersion="15G1421" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none">
+ <dependencies>
+ <deployment version="1060" identifier="macosx"/>
+ <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="10117"/>
+ </dependencies>
+ <objects>
+ <customObject id="-2" userLabel="File's Owner" customClass="VLCErrorWindowController">
+ <connections>
+ <outlet property="o_cleanup_button" destination="11" id="13"/>
+ <outlet property="o_error_table" destination="8" id="12"/>
+ <outlet property="window" destination="5" id="75"/>
+ </connections>
+ </customObject>
+ <customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
+ <customObject id="-3" userLabel="Application"/>
+ <window title="Errors and Warnings" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" hidesOnDeactivate="YES" releasedWhenClosed="NO" visibleAtLaunch="NO" frameAutosaveName="ErrorsAndWarnings" animationBehavior="default" id="5" userLabel="Non-Blocking errors" customClass="NSPanel">
+ <windowStyleMask key="styleMask" titled="YES" closable="YES" miniaturizable="YES" resizable="YES" utility="YES"/>
+ <windowPositionMask key="initialPositionMask" leftStrut="YES" rightStrut="YES" topStrut="YES" bottomStrut="YES"/>
+ <rect key="contentRect" x="304" y="373" width="397" height="209"/>
+ <rect key="screenRect" x="0.0" y="0.0" width="1680" height="1027"/>
+ <value key="minSize" type="size" width="260" height="120"/>
+ <view key="contentView" id="6">
+ <rect key="frame" x="0.0" y="0.0" width="397" height="209"/>
+ <autoresizingMask key="autoresizingMask"/>
+ <subviews>
+ <scrollView autohidesScrollers="YES" horizontalLineScroll="47" horizontalPageScroll="10" verticalLineScroll="47" verticalPageScroll="10" usesPredominantAxisScrolling="NO" id="7">
+ <rect key="frame" x="0.0" y="39" width="398" height="170"/>
+ <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+ <clipView key="contentView" id="vJx-40-Cca">
+ <rect key="frame" x="1" y="1" width="396" height="168"/>
+ <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+ <subviews>
+ <tableView verticalHuggingPriority="750" allowsExpansionToolTips="YES" columnAutoresizingStyle="lastColumnOnly" alternatingRowBackgroundColors="YES" columnReordering="NO" multipleSelection="NO" autosaveColumns="NO" rowHeight="45" id="8">
+ <rect key="frame" x="0.0" y="0.0" width="396" height="168"/>
+ <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="icon" editable="NO" width="45" minWidth="32" maxWidth="1000" id="9">
+ <tableHeaderCell key="headerCell" lineBreakMode="truncatingTail" borderStyle="border" alignment="center" title="icons">
+ <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>
+ <imageCell key="dataCell" refusesFirstResponder="YES" alignment="left" animates="YES" imageScaling="proportionallyDown" id="18"/>
+ <tableColumnResizingMask key="resizingMask" resizeWithTable="YES" userResizable="YES"/>
+ </tableColumn>
+ <tableColumn identifier="error_msg" width="344.99560000000002" minWidth="39.995609999999999" maxWidth="1000" id="10">
+ <tableHeaderCell key="headerCell" lineBreakMode="truncatingTail" borderStyle="border" alignment="left" title="errors">
+ <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" selectable="YES" editable="YES" alignment="left" id="23">
+ <font key="font" metaFont="smallSystem"/>
+ <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
+ <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
+ </textFieldCell>
+ <tableColumnResizingMask key="resizingMask" resizeWithTable="YES" userResizable="YES"/>
+ </tableColumn>
+ </tableColumns>
+ <connections>
+ <outlet property="dataSource" destination="-2" id="16"/>
+ <outlet property="delegate" destination="-2" id="17"/>
+ </connections>
+ </tableView>
+ </subviews>
+ <color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
+ </clipView>
+ <scroller key="horizontalScroller" hidden="YES" verticalHuggingPriority="750" horizontal="YES" id="74">
+ <rect key="frame" x="1" y="-30" width="381" height="15"/>
+ <autoresizingMask key="autoresizingMask"/>
+ </scroller>
+ <scroller key="verticalScroller" hidden="YES" verticalHuggingPriority="750" horizontal="NO" id="73">
+ <rect key="frame" x="-30" y="1" width="15" height="168"/>
+ <autoresizingMask key="autoresizingMask"/>
+ </scroller>
+ </scrollView>
+ <button verticalHuggingPriority="750" id="11">
+ <rect key="frame" x="15" y="7" width="94" height="28"/>
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+ <buttonCell key="cell" type="push" title="Clean up" bezelStyle="rounded" alignment="center" controlSize="small" borderStyle="border" inset="2" id="71">
+ <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
+ <font key="font" metaFont="smallSystem"/>
+ </buttonCell>
+ <connections>
+ <action selector="cleanupTable:" target="-2" id="15"/>
+ </connections>
+ </button>
+ </subviews>
+ </view>
+ </window>
+ </objects>
+</document>
diff --git a/modules/gui/macosx/UI/MainMenu.xib b/modules/gui/macosx/UI/MainMenu.xib
index bca91fd878..3bcfccf979 100644
--- a/modules/gui/macosx/UI/MainMenu.xib
+++ b/modules/gui/macosx/UI/MainMenu.xib
@@ -1,9 +1,9 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="11542" systemVersion="15G1108" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
+<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="10117" systemVersion="15G1421" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
<dependencies>
<deployment identifier="macosx"/>
<development version="7000" identifier="xcode"/>
- <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="11542"/>
+ <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="10117"/>
</dependencies>
<objects>
<customObject id="-2" userLabel="File's Owner" customClass="VLCMainMenu">
@@ -50,6 +50,7 @@
<outlet property="donation" destination="2298" id="ZzJ-yC-jOi"/>
<outlet property="double_window" destination="1171" id="DIg-sW-WS6"/>
<outlet property="editMenu" destination="205" id="6Mt-eK-QAx"/>
+ <outlet property="errorsAndWarnings" destination="n1B-wa-XGR" id="gNg-1z-gua"/>
<outlet property="extensions" destination="4942" id="qSU-2W-Chy"/>
<outlet property="extensionsMenu" destination="4943" id="IAw-5Z-Wvo"/>
<outlet property="fileMenu" destination="81" id="lbA-s5-6qj"/>
@@ -776,6 +777,12 @@
<menuItem isSeparatorItem="YES" id="2394">
<modifierMask key="keyEquivalentModifierMask" command="YES"/>
</menuItem>
+ <menuItem title="Errors and Warnings" keyEquivalent="m" id="n1B-wa-XGR">
+ <modifierMask key="keyEquivalentModifierMask" option="YES" command="YES"/>
+ <connections>
+ <action selector="showErrorsAndWarnings:" target="-2" id="4xx-kx-Wxo"/>
+ </connections>
+ </menuItem>
<menuItem title="Messages..." keyEquivalent="M" id="1003">
<connections>
<action selector="showMessagesPanel:" target="-2" id="Suq-dt-QZE"/>
diff --git a/modules/gui/macosx/VLCCoreDialogProvider.h b/modules/gui/macosx/VLCCoreDialogProvider.h
index d074c087fb..211b4eee21 100644
--- a/modules/gui/macosx/VLCCoreDialogProvider.h
+++ b/modules/gui/macosx/VLCCoreDialogProvider.h
@@ -30,6 +30,8 @@
* VLCCoreDialogProvider interface
*****************************************************************************/
+ at class VLCErrorWindowController;
+
@interface VLCCoreDialogProvider : NSObject
{
/* authentication dialog */
@@ -52,6 +54,8 @@
IBOutlet NSWindow *progressWindow;
}
+ at property (readonly) VLCErrorWindowController* errorPanel;
+
@property (atomic,readwrite) BOOL progressCancelled;
- (IBAction)authenticationDialogAction:(id)sender;
diff --git a/modules/gui/macosx/VLCCoreDialogProvider.m b/modules/gui/macosx/VLCCoreDialogProvider.m
index 49cbfe4a9d..1ed2fa68b3 100644
--- a/modules/gui/macosx/VLCCoreDialogProvider.m
+++ b/modules/gui/macosx/VLCCoreDialogProvider.m
@@ -26,6 +26,8 @@
#import "VLCCoreDialogProvider.h"
#import "misc.h"
+#import "VLCErrorWindowController.h"
+
/* for the icon in our custom error panel */
#import <ApplicationServices/ApplicationServices.h>
@@ -153,6 +155,8 @@ static void updateProgressCallback(void *p_data,
msg_Dbg(getIntf(), "Register dialog provider");
[NSBundle loadNibNamed:@"CoreDialogs" owner: self];
+ _errorPanel = [[VLCErrorWindowController alloc] init];
+
intf_thread_t *p_intf = getIntf();
/* subscribe to various interactive dialogues */
@@ -194,13 +198,8 @@ static void updateProgressCallback(void *p_data,
- (void)displayError:(NSArray *)dialogData
{
- NSAlert *alert = [NSAlert alertWithMessageText:[dialogData objectAtIndex:0]
- defaultButton:_NS("OK")
- alternateButton:nil
- otherButton:nil
- informativeTextWithFormat:@"%@", [dialogData objectAtIndex:1]];
- [alert setAlertStyle:NSCriticalAlertStyle];
- [alert runModal];
+ [_errorPanel showWindow:nil];
+ [_errorPanel addError:[dialogData objectAtIndex:0] withMsg:[dialogData objectAtIndex:1]];
}
- (void)displayLoginDialog:(NSArray *)dialogData
diff --git a/modules/gui/macosx/VLCErrorWindowController.h b/modules/gui/macosx/VLCErrorWindowController.h
new file mode 100644
index 0000000000..d01a5456cb
--- /dev/null
+++ b/modules/gui/macosx/VLCErrorWindowController.h
@@ -0,0 +1,40 @@
+/*****************************************************************************
+ * HelpWindowController.h
+ *****************************************************************************
+ * Copyright (C) 2017 VLC authors and VideoLAN
+ * $Id$
+ *
+ * Authors: Derk-Jan Hartman <thedj at users.sourceforge.net>
+ * Felix Paul Kühne <fkuehne -at- videolan.org>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
+ *****************************************************************************/
+
+#import <Cocoa/Cocoa.h>
+
+ at interface VLCErrorWindowController : NSWindowController
+{
+ IBOutlet id o_cleanup_button;
+ IBOutlet id o_error_table;
+
+ NSMutableArray *o_errors;
+ NSMutableArray *o_icons;
+}
+
+- (IBAction)cleanupTable:(id)sender;
+
+-(void)addError:(NSString *)o_error withMsg:(NSString *)o_msg;
+
+ at end
diff --git a/modules/gui/macosx/VLCErrorWindowController.m b/modules/gui/macosx/VLCErrorWindowController.m
new file mode 100644
index 0000000000..4bbf9abca5
--- /dev/null
+++ b/modules/gui/macosx/VLCErrorWindowController.m
@@ -0,0 +1,96 @@
+/*****************************************************************************
+ * HelpWindowController.m
+ *****************************************************************************
+ * Copyright (C) 2017 VLC authors and VideoLAN
+ * $Id$
+ *
+ * Authors: Derk-Jan Hartman <thedj at users.sourceforge.net>
+ * Felix Paul Kühne <fkuehne -at- videolan.org>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
+ *****************************************************************************/
+
+#import "VLCErrorWindowController.h"
+
+#import "VLCStringUtility.h"
+
+ at implementation VLCErrorWindowController
+
+- (id)init
+{
+ self = [super initWithWindowNibName:@"ErrorPanel"];
+ if (self) {
+ /* init data sources */
+ o_errors = [[NSMutableArray alloc] init];
+ o_icons = [[NSMutableArray alloc] init];
+ }
+
+ return self;
+}
+
+- (void)windowDidLoad
+{
+ /* init strings */
+ [[self window] setTitle: _NS("Errors and Warnings")];
+ [o_cleanup_button setTitle: _NS("Clean up")];
+}
+
+-(void)addError: (NSString *)o_error withMsg:(NSString *)o_msg
+{
+ /* format our string as desired */
+ NSMutableAttributedString * ourError;
+ ourError = [[NSMutableAttributedString alloc] initWithString:
+ [NSString stringWithFormat:@"%@\n%@", o_error, o_msg]
+ attributes:
+ [NSDictionary dictionaryWithObject: [NSFont systemFontOfSize:11] forKey: NSFontAttributeName]];
+ [ourError
+ addAttribute: NSFontAttributeName
+ value: [NSFont boldSystemFontOfSize:11]
+ range: NSMakeRange(0, [o_error length])];
+ [o_errors addObject: ourError];
+
+ [o_icons addObject: [[NSWorkspace sharedWorkspace] iconForFileType:NSFileTypeForHFSTypeCode(kAlertStopIcon)]];
+
+ [o_error_table reloadData];
+}
+
+-(IBAction)cleanupTable:(id)sender
+{
+ [o_errors removeAllObjects];
+ [o_icons removeAllObjects];
+ [o_error_table reloadData];
+}
+
+/*----------------------------------------------------------------------------
+ * data source methods
+ *---------------------------------------------------------------------------*/
+- (NSInteger)numberOfRowsInTableView:(NSTableView *)theDataTable
+{
+ return [o_errors count];
+}
+
+- (id)tableView:(NSTableView *)theDataTable objectValueForTableColumn:
+(NSTableColumn *)theTableColumn row: (NSInteger)row
+{
+ if ([[theTableColumn identifier] isEqualToString: @"error_msg"])
+ return [o_errors objectAtIndex:row];
+
+ if ([[theTableColumn identifier] isEqualToString: @"icon"])
+ return [o_icons objectAtIndex:row];
+
+ return @"";
+}
+
+ at end
diff --git a/modules/gui/macosx/VLCMainMenu.h b/modules/gui/macosx/VLCMainMenu.h
index 167412bc1b..36a69dd14f 100644
--- a/modules/gui/macosx/VLCMainMenu.h
+++ b/modules/gui/macosx/VLCMainMenu.h
@@ -172,6 +172,7 @@
@property (readwrite, weak) IBOutlet NSMenuItem *bookmarks;
@property (readwrite, weak) IBOutlet NSMenuItem *playlist;
@property (readwrite, weak) IBOutlet NSMenuItem *info;
+ at property (readwrite, weak) IBOutlet NSMenuItem *errorsAndWarnings;
@property (readwrite, weak) IBOutlet NSMenuItem *messages;
@property (readwrite, weak) IBOutlet NSMenuItem *bring_atf;
@@ -182,7 +183,6 @@
@property (readwrite, weak) IBOutlet NSMenuItem *website;
@property (readwrite, weak) IBOutlet NSMenuItem *donation;
@property (readwrite, weak) IBOutlet NSMenuItem *forum;
- at property (readwrite, weak) IBOutlet NSMenuItem *errorsAndWarnings;
/* dock menu */
@property (readwrite, weak) IBOutlet NSMenuItem *dockMenuplay;
@@ -278,6 +278,7 @@
- (IBAction)openWebsite:(id)sender;
- (IBAction)openForum:(id)sender;
- (IBAction)openDonate:(id)sender;
+- (IBAction)showErrorsAndWarnings:(id)sender;
- (IBAction)showMessagesPanel:(id)showMessagesPanel;
- (IBAction)showMainWindow:(id)sender;
- (IBAction)showPlaylist:(id)sender;
diff --git a/modules/gui/macosx/VLCMainMenu.m b/modules/gui/macosx/VLCMainMenu.m
index 7264ed73b9..e0281d47e1 100644
--- a/modules/gui/macosx/VLCMainMenu.m
+++ b/modules/gui/macosx/VLCMainMenu.m
@@ -31,6 +31,7 @@
#import "VLCAboutWindowController.h"
#import "VLCOpenWindowController.h"
#import "VLCAudioEffectsWindowController.h"
+#import "VLCErrorWindowController.h"
#import "VLCTrackSynchronizationWindowController.h"
#import "VLCHelpWindowController.h"
#import "VLCVideoEffectsWindowController.h"
@@ -39,6 +40,7 @@
#import "VLCPlaylist.h"
#import "VLCPlaylistInfo.h"
#import "VLCVoutView.h"
+#import "VLCCoreDialogProvider.h"
#import "VLCCoreInteraction.h"
#import "VLCMainWindow.h"
#import "VLCMainWindowControlsBar.h"
@@ -1207,6 +1209,11 @@
[_addonsController showWindow:self];
}
+- (IBAction)showErrorsAndWarnings:(id)sender
+{
+ [[[[VLCMain sharedInstance] coreDialogProvider] errorPanel] showWindow:self];
+}
+
- (IBAction)showMessagesPanel:(id)showMessagesPanel
{
[[[VLCMain sharedInstance] debugMsgPanel] showWindow:self];
diff --git a/po/POTFILES.in b/po/POTFILES.in
index 0281098f86..a07b215bb1 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -543,6 +543,8 @@ modules/gui/macosx/VLCCoreDialogProvider.h
modules/gui/macosx/VLCCoreDialogProvider.m
modules/gui/macosx/VLCCoreInteraction.h
modules/gui/macosx/VLCCoreInteraction.m
+modules/gui/macosx/VLCErrorWindowController.h
+modules/gui/macosx/VLCErrorWindowController.m
modules/gui/macosx/VLCExtensionsDialogProvider.h
modules/gui/macosx/VLCExtensionsDialogProvider.m
modules/gui/macosx/VLCExtensionsManager.h
More information about the vlc-commits
mailing list