summaryrefslogtreecommitdiff
path: root/tikzit/src/gtk/Menu.h
blob: e0f78d4b7427efcf79dba9ed04c7cb95d4a4d7a4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
/*
 * Copyright 2011  Alex Merry <alex.merry@kdemail.net>
 *
 * 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, see <http://www.gnu.org/licenses/>.
 */

#import "TZFoundation.h"
#import <gtk/gtk.h>

@class Window;
@class PickSupport;

/**
 * Manages the menu
 */
@interface Menu: NSObject {
    GtkWidget      *menubar;
    GtkActionGroup *appActions;
    GtkActionGroup *windowActions;
    GtkAction      *undoAction;  // no ref
    GtkAction      *redoAction;  // no ref
    GtkAction      *pasteAction; // no ref
    GtkAction     **nodeSelBasedActions;
    guint           nodeSelBasedActionCount;
    GtkAction     **edgeSelBasedActions;
    guint           edgeSelBasedActionCount;
    GtkAction     **selBasedActions;
    guint           selBasedActionCount;
}

/**
 * The menubar widget, to be inserted into the window
 */
@property (readonly) GtkWidget *menubar;

/**
 * Constructs the menu for @p window
 *
 * @param window  the window that will be acted upon
 */
- (id) initForWindow:(Window*)window;

/**
 * Enables or disables the undo action
 */
- (void) setUndoActionEnabled:(BOOL)enabled;
/**
 * Sets the text that describes what action will be undone
 *
 * @param detail  a text description of the action, or nil
 */
- (void) setUndoActionDetail:(NSString*)detail;
/**
 * Enables or disables the redo action
 */
- (void) setRedoActionEnabled:(BOOL)enabled;
/**
 * Sets the text that describes what action will be redone
 *
 * @param detail  a text description of the action, or nil
 */
- (void) setRedoActionDetail:(NSString*)detail;

/**
 * Gets the paste action
 */
- (GtkAction*) pasteAction;

/**
 * Enables or disables the actions that act on a selection
 */
- (void) notifySelectionChanged:(PickSupport*)pickSupport;
@end

// vim:ft=objc:ts=8:et:sts=4:sw=4