/*
* This file is part of NixNote
* Copyright 2009 Randy Baumgarte
*
* This file may be licensed under the terms of of the
* GNU General Public License Version 2 (the ``GPL'').
*
* Software distributed under the License is distributed
* on an ``AS IS'' basis, WITHOUT WARRANTY OF ANY KIND, either
* express or implied. See the GPL for the specific language
* governing rights and limitations.
*
* You should have received a copy of the GPL along with this
* program. If not, go to http://www.gnu.org/licenses/gpl.html
* or write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*
*/
package cx.fbn.nevernote.gui;
import com.trolltech.qt.gui.QAction;
import com.trolltech.qt.gui.QMenu;
import com.trolltech.qt.gui.QMenuBar;
import cx.fbn.nevernote.Global;
public class ExternalBrowserMenuBar extends QMenuBar {
private final ExternalBrowse parent;
public QAction printAction; // Action when a user selects Print from the file menu
public QAction emailAction; // Action when a user selects "email"
public QAction editFind; // find text in the current note
public QAction editUndo; // Undo last change
public QAction editRedo; // Redo last change
public QAction editCut; // Cut selected text
public QAction editPaste; // Paste selected text
public QAction editPasteWithoutFormat; // Paste selected text
public QAction editCopy; // Copy selected text;
public QAction formatBold; // Bold selected text
public QAction formatItalic; // Italics selected text
public QAction formatUnderline; // Underline selected text
public QAction formatStrikethrough; // Strikethrough selected text
public QAction formatSuperscript; // Superscript selected text
public QAction formatSubscript; // Subscript selected text
public QAction formatNumberList; // insert a numbered list
public QAction formatBulletList; // insert a bulleted list;
public QAction alignLeftAction; // Left justify text
public QAction alignRightAction; // Right justify text
public QAction alignCenterAction; // Center text
public QAction horizontalLineAction; // Insert a horizontal line
public QAction indentAction; // Indent
public QAction outdentAction; // outdent menu action
public QAction spellCheckAction; // Spell checker
//**************************************************************************
//* External Browser Menu Bar.
//* We don't actually show this, but we use it to setup shortcuts.
//**************************************************************************
public QMenu fileMenu; // File menu
public QMenu editMenu; // Edit menu
private QMenu formatMenu; // Text format menu
private QMenu listMenu; // bullet or numbered list
private QMenu indentMenu; // indent or outdent menu
private QMenu alignMenu; // Left/Right/Center justify
public ExternalBrowserMenuBar(ExternalBrowse p) {
parent = p;
printAction = new QAction(tr("Print"), this);
printAction.setToolTip(tr("Print the current note"));
printAction.triggered.connect(parent, "printNote()");
setupShortcut(printAction, "File_Print");
emailAction = new QAction(tr("Email"), this);
emailAction.setToolTip(tr("Email the current note"));
emailAction.triggered.connect(parent, "emailNote()");
setupShortcut(emailAction, "File_Email");
editFind = new QAction(tr("Find In Note"), this);
editFind.setToolTip(tr("Find a string in the current note"));
editFind.triggered.connect(parent, "findText()");
setupShortcut(editFind, "Edit_Find_In_Note");
//editFind.setShortcut("Ctrl+F");
editUndo = new QAction(tr("Undo"), this);
editUndo.setToolTip(tr("Undo"));
editUndo.triggered.connect(parent.getBrowserWindow(), "undoClicked()");
setupShortcut(editUndo, "Edit_Undo");
//editUndo.setShortcut("Ctrl+Z");
editRedo = new QAction(tr("Redo"), this);
editRedo.setToolTip(tr("Redo"));
editRedo.triggered.connect(parent.getBrowserWindow(), "redoClicked()");
setupShortcut(editRedo, "Edit_Redo");
//editRedo.setShortcut("Ctrl+Y");
editCut = new QAction(tr("Cut"), this);
editCut.setToolTip(tr("Cut"));
editCut.triggered.connect(parent.getBrowserWindow(), "cutClicked()");
setupShortcut(editCut, "Edit_Cut");
//editCut.setShortcut("Ctrl+X");
editCopy = new QAction(tr("Copy"), this);
editCopy.setToolTip(tr("Copy"));
editCopy.triggered.connect(parent.getBrowserWindow(), "copyClicked()");
setupShortcut(editCopy, "Edit_Copy");
//editCopy.setShortcut("Ctrl+C");
editPaste = new QAction(tr("Paste"), this);
editPaste.setToolTip(tr("Paste"));
editPaste.triggered.connect(parent.getBrowserWindow(), "pasteClicked()");
setupShortcut(editPaste, "Edit_Paste");
editPasteWithoutFormat = new QAction(tr("Paste Without Formatting"), this);
editPasteWithoutFormat.setToolTip(tr("Paste Without Formatting"));
editPasteWithoutFormat.triggered.connect(parent.getBrowserWindow(), "pasteWithoutFormattingClicked()");
setupShortcut(editPasteWithoutFormat, "Edit_Paste_Without_Formatting");
alignLeftAction = new QAction(tr("Left"), this);
alignLeftAction.setToolTip(tr("Left Align"));
alignLeftAction.triggered.connect(parent.getBrowserWindow(), "justifyLeftClicked()");
setupShortcut(alignLeftAction, "Format_Alignment_Left");
//alignLeftAction.setShortcut("Ctrl+L");
alignRightAction = new QAction(tr("Right"), this);
alignRightAction.setToolTip(tr("Right Align"));
alignRightAction.triggered.connect(parent.getBrowserWindow(), "justifyRightClicked()");
setupShortcut(alignRightAction, "Format_Alignment_Right");
//alignRightAction.setShortcut("Ctrl+R");
alignCenterAction = new QAction(tr("Center"), this);
alignCenterAction.setToolTip(tr("Center Align"));
alignCenterAction.triggered.connect(parent.getBrowserWindow(), "justifyCenterClicked()");
setupShortcut(alignCenterAction, "Format_Alignment_Center");
//alignCenterAction.setShortcut("Ctrl+C");
formatBold = new QAction(tr("Bold"), this);
formatBold.setToolTip(tr("Bold"));
formatBold.triggered.connect(parent.getBrowserWindow(), "boldClicked()");
setupShortcut(formatBold, "Format_Bold");
//formatBold.setShortcut("Ctrl+B");
formatItalic = new QAction(tr("Italic"), this);
formatItalic.setToolTip(tr("Italic"));
formatItalic.triggered.connect(parent.getBrowserWindow(), "italicClicked()");
setupShortcut(formatItalic, "Format_Italic");
//formatItalic.setShortcut("Ctrl+I");
formatUnderline = new QAction(tr("Underline"), this);
formatUnderline.setToolTip(tr("Underline"));
formatUnderline.triggered.connect(parent.getBrowserWindow(), "underlineClicked()");
setupShortcut(formatUnderline, "Format_Underline");
// formatUnderline.setShortcut("Ctrl+U");
formatSuperscript = new QAction(tr("Superscript"), this);
formatSuperscript.setToolTip(tr("Superscript"));
formatSuperscript.triggered.connect(parent.getBrowserWindow(), "superscriptClicked()");
setupShortcut(formatSuperscript, "Format_Superscript");
formatSubscript = new QAction(tr("Subscript"), this);
formatSubscript.setToolTip(tr("Subscript"));
formatSubscript.triggered.connect(parent.getBrowserWindow(), "subscriptClicked()");
setupShortcut(formatSubscript, "Format_Subscript");
formatStrikethrough = new QAction(tr("Strikethrough"), this);
formatStrikethrough.setToolTip(tr("Strikethrough"));
formatStrikethrough.triggered.connect(parent.getBrowserWindow(), "strikethroughClicked()");
setupShortcut(formatStrikethrough, "Format_Strikethrough");
horizontalLineAction = new QAction(tr("Horizontal Line"), this);
horizontalLineAction.setToolTip(tr("Horizontal Line"));
horizontalLineAction.triggered.connect(parent.getBrowserWindow(), "hlineClicked()");
setupShortcut(horizontalLineAction, "Format_Horizontal_Line");
formatBulletList = new QAction(tr("Bulleted List"), this);
// formatBulletList.setText(tr("Numbered List"));
formatBulletList.triggered.connect(parent.getBrowserWindow(), "bulletListClicked()");
setupShortcut(formatBulletList, "Format_List_Bullet");
// formatBulletList.setShortcut("Ctrl+Shift+B");
formatNumberList = new QAction(tr("Numbered List"), this);
formatNumberList.setText(tr("Numbered list"));
formatNumberList.triggered.connect(parent.getBrowserWindow(), "numberListClicked()");
setupShortcut(formatNumberList, "Format_List_Numbered");
// formatNumberList.setShortcut("Ctrl+Shift+O");
indentAction = new QAction(tr(">> Increase"), this);
indentAction.setText(tr(">> Increase"));
indentAction.triggered.connect(parent.getBrowserWindow(), "indentClicked()");
setupShortcut(indentAction, "Format_Indent_Increase");
//indentAction.setShortcut("Ctrl+M");
outdentAction = new QAction(tr("<< Decrease"), this);
outdentAction.setText(tr("<< Decrease"));
outdentAction.triggered.connect(parent.getBrowserWindow(), "outdentClicked()");
setupShortcut(outdentAction, "Format_Indent_Decrease");
//outdentAction.setShortcut("Ctrl+Shift+M");
spellCheckAction = new QAction(tr("Spell Check"), this);
spellCheckAction.setToolTip(tr("Check for spelling errors"));
spellCheckAction.triggered.connect(parent.getBrowserWindow(), "spellCheckClicked()");
setupShortcut(spellCheckAction, "Tools_Spell_Check");
setupMenuBar();
}
public void setupMenuBar() {
fileMenu = addMenu(tr("&File"));
fileMenu.addSeparator();
fileMenu.addAction(emailAction);
fileMenu.addAction(printAction);
fileMenu.addSeparator();
editMenu = addMenu(tr("&Edit"));
editMenu.addAction(editFind);
editMenu.addSeparator();
editMenu.addAction(editUndo);
editMenu.addAction(editRedo);
editMenu.addSeparator();
editMenu.addAction(editCut);
editMenu.addAction(editCopy);
editMenu.addAction(editPaste);
editMenu.addAction(editPasteWithoutFormat);
formatMenu = addMenu(tr("&Format"));
formatMenu.addAction(formatBold);
formatMenu.addAction(formatUnderline);
formatMenu.addAction(formatItalic);
formatMenu.addSeparator();
formatMenu.addAction(formatStrikethrough);
formatMenu.addAction(horizontalLineAction);
formatMenu.addSeparator();
formatMenu.addAction(formatSuperscript);
formatMenu.addAction(formatSubscript);
formatMenu.addSeparator();
alignMenu = formatMenu.addMenu(tr("Alignment"));
alignMenu.addAction(alignLeftAction);
alignMenu.addAction(alignCenterAction);
alignMenu.addAction(alignRightAction);
listMenu = formatMenu.addMenu(tr("Lists"));
listMenu.addAction(formatBulletList);
listMenu.addAction(formatNumberList);
indentMenu = formatMenu.addMenu(tr("Indent"));
indentMenu.addAction(indentAction);
indentMenu.addAction(outdentAction);
addMenu(fileMenu);
addMenu(editMenu);
addMenu(formatMenu);
}
private void setupShortcut(QAction action, String text) {
if (!Global.shortcutKeys.containsAction(text))
return;
action.setShortcut(Global.shortcutKeys.getShortcut(text));
}
}