1 /*
2    Project: LaternaMagica
3    AppController.h
4 
5    Copyright (C) 2006-2015 Riccardo Mottola
6 
7    Author: Riccardo Mottola
8 
9    Created: 2006-01-16
10 
11    This application is free software; you can redistribute it and/or
12    modify it under the terms of the GNU General Public
13    License as published by the Free Software Foundation; either
14    version 2 of the License, or (at your option) any later version.
15 
16    This application is distributed in the hope that it will be useful,
17    but WITHOUT ANY WARRANTY; without even the implied warranty of
18    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
19    Library General Public License for more details.
20 
21    You should have received a copy of the GNU General Public
22    License along with this library; if not, write to the Free
23    Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
24 */
25 
26 
27 #import <AppKit/AppKit.h>
28 
29 #import <FileTable.h>
30 #import <LMFlipView.h>
31 #import "LMWindow.h"
32 
33 @interface AppController : NSObject
34 {
35     IBOutlet FileTable    *fileListData;
36     IBOutlet NSTableView  *fileListView;
37     IBOutlet NSWindow     *controlWin;
38     IBOutlet NSWindow     *smallWindow;
39     IBOutlet LMFlipView   *smallView;
40     IBOutlet NSScrollView *scrollView;
41     IBOutlet NSButton     *fitButton;
42     IBOutlet NSTextField  *fieldImageCount;
43     IBOutlet NSMenuItem   *fullScreenMenuItem;
44     IBOutlet NSButton     *fullScreenButton;
45     IBOutlet NSMenuItem   *saveAsMenuItem;
46 
47     /* save As options */
48     IBOutlet NSView        *saveOptionsView;
49     IBOutlet NSPopUpButton *fileTypePopUp;
50     IBOutlet NSTextField   *jpegCompressionField;
51     IBOutlet NSSlider      *jpegCompressionSlider;
52 
53     BOOL                  scaleToFit;
54     NSWindow              *window;
55     LMWindow              *fullWindow;
56     LMFlipView            *view;
57     LMFlipView            *fullView;
58     NSSavePanel           *savePanel;
59 
60     /* preferences */
61     IBOutlet NSPanel *prefPanel;
62     IBOutlet NSButton *destroyOrRecycleButton;
63     IBOutlet NSButton *askBeforeDeletingButton;
64 
65     /* exporter */
66     IBOutlet NSPanel             *exporterPanel;
67     IBOutlet NSTextField         *fieldOutputPath;
68     IBOutlet NSTextField         *fieldWidth;
69     IBOutlet NSTextField         *fieldHeight;
70     IBOutlet NSProgressIndicator *exportProgress;
71     IBOutlet NSPopUpButton       *popupConstraints;
72     IBOutlet NSPopUpButton       *popupFileType;
73     IBOutlet NSPopUpButton       *popupFileQuality;
74 }
75 
76 - (IBAction)addFiles:(id)sender;
77 - (IBAction)setScaleToFit:(id)sender;
78 - (IBAction)setFullScreen:(id)sender;
79 - (IBAction)prevImage:(id)sender;
80 - (IBAction)nextImage:(id)sender;
81 - (IBAction)removeAllImages:(id)sender;
82 - (IBAction)scrambleList:(id)sender;
83 - (IBAction)removeImage:(id)sender;
84 - (IBAction)eraseImage:(id)sender;
85 - (IBAction)rotateImage90:(id)sender;
86 - (IBAction)rotateImage180:(id)sender;
87 - (IBAction)rotateImage270:(id)sender;
88 
89 - (void)updateImageCount;
90 
91 - (NSImage *)rotate: (NSImage *)image byAngle:(unsigned)angle;
92 
93 - (IBAction)saveImageAs:(id)sender;
94 - (IBAction)setCompressionType:(id)sender;
95 - (IBAction)setCompressionLevel:(id)sender;
96 
97 /* exporter */
98 - (IBAction)exportImages:(id)sender;
99 - (IBAction)setExportPath:(id)sender;
100 - (IBAction)execExportImages:(id)sender;
101 
102 /* preferences */
103 - (IBAction)showPreferences:(id)sender;
104 - (IBAction)savePreferences:(id)sender;
105 - (IBAction)cancelPreferences:(id)sender;
106 
107 - (void)print:(id)sender;
108 
109 @end
110