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 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134
|
//
// "$Id: Fl_Sys_Menu_Bar.H 11795 2016-06-22 07:49:34Z greg.ercolano $"
//
// MacOS system menu bar header file for the Fast Light Tool Kit (FLTK).
//
// Copyright 1998-2010 by Bill Spitzak and others.
//
// This library is free software. Distribution and use rights are outlined in
// the file "COPYING" which should have been included with this file. If this
// file is missing or damaged, see the license at:
//
// http://www.fltk.org/COPYING.php
//
// Please report all bugs and problems on the following page:
//
// http://www.fltk.org/str.php
//
#ifndef Fl_Sys_Menu_Bar_H
#define Fl_Sys_Menu_Bar_H
#include "Fl_Menu_Bar.H"
#include "x.H"
#if defined(__APPLE__) || defined(FL_DOXYGEN)
/**
A class to create, modify and delete menus that appear on Mac OS X in the menu bar at the top of the screen.
On other than Mac OS X platforms, Fl_Sys_Menu_Bar is a synonym of class Fl_Menu_Bar.
\n To use this class, just replace Fl_Menu_Bar by Fl_Sys_Menu_Bar, and, on the Mac platform,
a system menu at the top of the screen will be available. This menu will match an array
of Fl_Menu_Item's exactly as with standard FLTK menus.
Changes to the menu state are immediately visible in the menubar when they are made
using member functions of the Fl_Sys_Menu_Bar class. Other changes (e.g., by a call to
Fl_Menu_Item::set()) should be followed by a call to Fl_Sys_Menu_Bar::update() to be
visible in the menubar across all platforms.
A few FLTK features are not supported by the Mac System menu:
\li no symbolic labels
\li no embossed labels
\li no font sizes
You can configure a callback for the 'About' menu item to invoke your own code with fl_mac_set_about().
*/
class FL_EXPORT Fl_Sys_Menu_Bar : public Fl_Menu_Bar {
#if FLTK_ABI_VERSION >= 10304
// NEW -- update() public (STR#3317)
public:
void update();
protected:
void draw();
#else
// OLD -- update() protected
protected:
void update();
void draw();
#endif
public:
Fl_Sys_Menu_Bar(int x,int y,int w,int h,const char *l=0);
~Fl_Sys_Menu_Bar();
/** Return the system menu's array of Fl_Menu_Item's
*/
const Fl_Menu_Item *menu() const {return Fl_Menu_::menu();}
void menu(const Fl_Menu_Item *m);
int add(const char* label, int shortcut, Fl_Callback*, void *user_data=0, int flags=0);
/** Adds a new menu item.
\see Fl_Menu_::add(const char* label, int shortcut, Fl_Callback*, void *user_data=0, int flags=0)
*/
int add(const char* label, const char* shortcut, Fl_Callback* cb, void *user_data=0, int flags=0) {
return add(label, fl_old_shortcut(shortcut), cb, user_data, flags);
}
int add(const char* str);
int insert(int index, const char* label, int shortcut, Fl_Callback *cb, void *user_data=0, int flags=0);
/** Insert a new menu item.
\see Fl_Menu_::insert(int index, const char* label, const char* shortcut, Fl_Callback *cb, void *user_data=0, int flags=0)
*/
int insert(int index, const char* label, const char* shortcut, Fl_Callback *cb, void *user_data=0, int flags=0) {
return insert(index, label, fl_old_shortcut(shortcut), cb, user_data, flags);
}
void remove(int n);
void replace(int index, const char *name);
/** Set the Fl_Menu_Item array pointer to null, indicating a zero-length menu.
\see Fl_Menu_::clear()
*/
void clear();
/** Clears the specified submenu pointed to by index of all menu items.
\see Fl_Menu_::clear_submenu(int index)
*/
int clear_submenu(int index);
/** Make the shortcuts for this menu work no matter what window has the focus when you type it.
*/
void global() {};
/** Sets the flags of item i
\see Fl_Menu_::mode(int i, int fl) */
void mode (int i, int fl) {
Fl_Menu_::mode(i, fl);
update();
}
/** Gets the flags of item i.
*/
int mode(int i) const { return Fl_Menu_::mode(i); }
/** Changes the shortcut of item i to n.
*/
void shortcut (int i, int s) { Fl_Menu_::shortcut(i, s); update(); }
/** Turns the radio item "on" for the menu item and turns "off" adjacent radio items of the same group.*/
void setonly (Fl_Menu_Item *item) { Fl_Menu_::setonly(item); update(); }
};
#else
#if FLTK_ABI_VERSION >= 10304
// NEW -- small class for update()
class FL_EXPORT Fl_Sys_Menu_Bar : public Fl_Menu_Bar {
public:
Fl_Sys_Menu_Bar(int x,int y,int w,int h,const char *l=0) : Fl_Menu_Bar(x,y,w,h,l) {}
inline void update() {}
};
#else
// OLD -- simple typedef
typedef Fl_Menu_Bar Fl_Sys_Menu_Bar;
#endif
#endif // defined(__APPLE__) || defined(FL_DOXYGEN)
#endif // Fl_Sys_Menu_Bar_H
//
// End of "$Id: Fl_Sys_Menu_Bar.H 11795 2016-06-22 07:49:34Z greg.ercolano $".
//
|