From 6ae9c2545e9548bd0cb01f6b244614559c71e34a Mon Sep 17 00:00:00 2001 From: Andreas Butti Date: Sun, 20 Jan 2019 11:03:52 +0100 Subject: [PATCH 1/2] Tool / menu handling moved to glade as much as possible --- src/gui/Layout.cpp | 17 -- src/gui/toolbarMenubar/ToolMenuHandler.cpp | 259 ++++++++++----------- ui/main.glade | 44 ++++ 3 files changed, 168 insertions(+), 152 deletions(-) diff --git a/src/gui/Layout.cpp b/src/gui/Layout.cpp index 14d9ab12..bde605fd 100644 --- a/src/gui/Layout.cpp +++ b/src/gui/Layout.cpp @@ -51,23 +51,6 @@ void Layout::checkScroll(GtkAdjustment* adjustment, double& lastScroll) XOJ_CHECK_TYPE(Layout); lastScroll = gtk_adjustment_get_value(adjustment); - -/** - * This causes issues. - * - * Disabling devices does not work - * Removing Touch mask does not work - * - * So an X11 / Wayland etc. implementation should be created - */ -// ToolHandler* h = view->getControl()->getToolHandler(); -// -// if (!view->shouldIgnoreTouchEvents() || h->getToolType() == TOOL_HAND) -// { -// lastScroll = gtk_adjustment_get_value(adjustment); -// return; -// } -// gtk_adjustment_set_value(adjustment, lastScroll); } /** diff --git a/src/gui/toolbarMenubar/ToolMenuHandler.cpp b/src/gui/toolbarMenubar/ToolMenuHandler.cpp index d6030932..a866ef4a 100644 --- a/src/gui/toolbarMenubar/ToolMenuHandler.cpp +++ b/src/gui/toolbarMenubar/ToolMenuHandler.cpp @@ -283,28 +283,19 @@ void ToolMenuHandler::initPenToolItem() { XOJ_CHECK_TYPE(ToolMenuHandler); - ToolButton* tbPen = new ToolButton(listener, gui, "PEN", ACTION_TOOL_PEN, GROUP_TOOL, true, "tool_pencil.svg", - _("Pen"), gui->get("menuToolsPen")); + ToolButton* tbPen = new ToolButton(listener, gui, "PEN", ACTION_TOOL_PEN, GROUP_TOOL, true, "tool_pencil.svg", _("Pen")); registerMenupoint(tbPen->registerPopupMenuEntry(_("standard"), "line-style-plain.svg"), ACTION_TOOL_LINE_STYLE_PLAIN, GROUP_LINE_STYLE); - registerMenupoint(gui->get("penStandard"), - ACTION_TOOL_LINE_STYLE_PLAIN, GROUP_LINE_STYLE); registerMenupoint(tbPen->registerPopupMenuEntry(_("dashed"), "line-style-dash.svg"), ACTION_TOOL_LINE_STYLE_DASH, GROUP_LINE_STYLE); - registerMenupoint(gui->get("penStyleDashed"), - ACTION_TOOL_LINE_STYLE_DASH, GROUP_LINE_STYLE); registerMenupoint(tbPen->registerPopupMenuEntry(_("dash-/ doted"), "line-style-dash-dot.svg"), ACTION_TOOL_LINE_STYLE_DASH_DOT, GROUP_LINE_STYLE); - registerMenupoint(gui->get("penStyleDashDotted"), - ACTION_TOOL_LINE_STYLE_DASH_DOT, GROUP_LINE_STYLE); registerMenupoint(tbPen->registerPopupMenuEntry(_("dotted"), "line-style-dot.svg"), ACTION_TOOL_LINE_STYLE_DOT, GROUP_LINE_STYLE); - registerMenupoint(gui->get("penStyleDotted"), - ACTION_TOOL_LINE_STYLE_DOT, GROUP_LINE_STYLE); addToolItem(tbPen); } @@ -314,16 +305,11 @@ void ToolMenuHandler::initEraserToolItem() XOJ_CHECK_TYPE(ToolMenuHandler); ToolButton* tbEraser = new ToolButton(listener, gui, "ERASER", ACTION_TOOL_ERASER, GROUP_TOOL, true, - "tool_eraser.svg", _("Eraser"), gui->get("menuToolsEraser")); + "tool_eraser.svg", _("Eraser")); registerMenupoint(tbEraser->registerPopupMenuEntry(_("standard")), ACTION_TOOL_ERASER_STANDARD, GROUP_ERASER_MODE); - registerMenupoint(gui->get("eraserStandard"), ACTION_TOOL_ERASER_STANDARD, GROUP_ERASER_MODE); - registerMenupoint(tbEraser->registerPopupMenuEntry(_("whiteout")), ACTION_TOOL_ERASER_WHITEOUT, GROUP_ERASER_MODE); - registerMenupoint(gui->get("eraserWhiteout"), ACTION_TOOL_ERASER_WHITEOUT, GROUP_ERASER_MODE); - registerMenupoint(tbEraser->registerPopupMenuEntry(_("delete stroke")), ACTION_TOOL_ERASER_DELETE_STROKE, GROUP_ERASER_MODE); - registerMenupoint(gui->get("eraserDeleteStrokes"), ACTION_TOOL_ERASER_DELETE_STROKE, GROUP_ERASER_MODE); addToolItem(tbEraser); } @@ -333,7 +319,18 @@ void ToolMenuHandler::signalConnectCallback(GtkBuilder* builder, GObject* object { XOJ_CHECK_TYPE_OBJ(self, ToolMenuHandler); - ActionType action = ActionType_fromString(handlerName); + string actionName = handlerName; + string groupName = ""; + + size_t pos = actionName.find(':'); + if (pos != string::npos) + { + groupName = actionName.substr(pos + 1); + actionName = actionName.substr(0, pos); + } + + ActionGroup group = GROUP_NOGROUP; + ActionType action = ActionType_fromString(actionName); if (action == ACTION_NONE) { @@ -341,6 +338,11 @@ void ToolMenuHandler::signalConnectCallback(GtkBuilder* builder, GObject* object return; } + if (groupName != "") + { + group = ActionGroup_fromString(groupName); + } + if (GTK_IS_MENU_ITEM(object)) { for (AbstractToolItem* it : self->toolItems) @@ -354,7 +356,7 @@ void ToolMenuHandler::signalConnectCallback(GtkBuilder* builder, GObject* object } // There is no toolbar item -> register the menu only - self->registerMenupoint(GTK_WIDGET(object), action); + self->registerMenupoint(GTK_WIDGET(object), action, group); } else { @@ -362,171 +364,158 @@ void ToolMenuHandler::signalConnectCallback(GtkBuilder* builder, GObject* object } } +// Use GTK Stock icon +#define ADD_STOCK_ITEM(name, action, stockIcon, text) addToolItem(new ToolButton(listener, name, action, stockIcon, text)) + +// Use Custom loading Icon +#define ADD_CUSTOM_ITEM(name, action, icon, text) addToolItem(new ToolButton(listener, gui, name, action, icon, text)) + +// Use Custom loading Icon, toggle item +// switchOnly: You can select pen, eraser etc. but you cannot unselect pen. +#define ADD_CUSTOM_ITEM_TGL(name, action, group, switchOnly, icon, text) addToolItem(new ToolButton(listener, gui, name, action, group, switchOnly, icon, text)) + void ToolMenuHandler::initToolItems() { XOJ_CHECK_TYPE(ToolMenuHandler); - addToolItem(new ToolButton(listener, "NEW", ACTION_NEW, "document-new", _("New Xournal"))); - addToolItem(new ToolButton(listener, "OPEN", ACTION_OPEN, "document-open", _("Open file"))); + // Items ordered by menu, if possible. + // There are some entries which are not available in the menu, like the Zoom slider + // All menu items without tool icon are not listed here - they are connected by Glade Signals - addToolItem(new ToolButton(listener, "SAVE", ACTION_SAVE, "document-save", _("Save"))); + // Menu File + // ************************************************************************ - addToolItem(new ToolButton(listener, "CUT", ACTION_CUT, "edit-cut", _("Cut"))); - addToolItem(new ToolButton(listener, "COPY", ACTION_COPY, "edit-copy", _("Copy"))); - addToolItem(new ToolButton(listener, "PASTE", ACTION_PASTE, "edit-paste", _("Paste"))); + ADD_STOCK_ITEM("NEW", ACTION_NEW, "document-new", _("New Xournal")); + ADD_STOCK_ITEM("OPEN", ACTION_OPEN, "document-open", _("Open file")); + ADD_STOCK_ITEM("SAVE", ACTION_SAVE, "document-save", _("Save")); - addToolItem(new ToolButton(listener, "SEARCH", ACTION_SEARCH, "edit-find", _("Search"))); + // Menu Edit + // ************************************************************************ - undoButton = new ToolButton(listener, "UNDO", ACTION_UNDO, "edit-undo", _("Undo"), gui->get("menuEditUndo")); - redoButton = new ToolButton(listener, "REDO", ACTION_REDO, "edit-redo", _("Redo"), gui->get("menuEditRedo")); + // Undo / Redo Texts are updated from code, therefore a reference is hold for this items + undoButton = new ToolButton(listener, "UNDO", ACTION_UNDO, "edit-undo", _("Undo")); + redoButton = new ToolButton(listener, "REDO", ACTION_REDO, "edit-redo", _("Redo")); addToolItem(undoButton); addToolItem(redoButton); - addToolItem(new ToolButton(listener, "GOTO_FIRST", ACTION_GOTO_FIRST, "go-first", _("Go to first page"))); - addToolItem(new ToolButton(listener, "GOTO_BACK", ACTION_GOTO_BACK, "go-previous", _("Back"))); + ADD_STOCK_ITEM("CUT", ACTION_CUT, "edit-cut", _("Cut")); + ADD_STOCK_ITEM("COPY", ACTION_COPY, "edit-copy", _("Copy")); + ADD_STOCK_ITEM("PASTE", ACTION_PASTE, "edit-paste", _("Paste")); - addToolItem(new ToolButton(listener, gui, "GOTO_PAGE", ACTION_GOTO_PAGE, "goto.svg", _("Go to page"))); + ADD_STOCK_ITEM("SEARCH", ACTION_SEARCH, "edit-find", _("Search")); - addToolItem(new ToolButton(listener, "GOTO_NEXT", ACTION_GOTO_NEXT, "go-next", _("Next"))); - addToolItem(new ToolButton(listener, "GOTO_LAST", ACTION_GOTO_LAST, "go-last", _("Go to last page"))); + ADD_STOCK_ITEM("DELETE", ACTION_DELETE, "edit-delete", _("Delete")); - addToolItem(new ToolButton(listener, "GOTO_PREVIOUS_LAYER", ACTION_GOTO_PREVIOUS_LAYER, "go-previous", _("Go to previous layer"))); - addToolItem(new ToolButton(listener, "GOTO_NEXT_LAYER", ACTION_GOTO_NEXT_LAYER, "go-next", _("Go to next layer"))); - addToolItem(new ToolButton(listener, "GOTO_TOP_LAYER", ACTION_GOTO_TOP_LAYER, "go-top", _("Go to top layer"))); + // Icon snapping.svg made by www.freepik.com from www.flaticon.com + ADD_CUSTOM_ITEM_TGL("ROTATION_SNAPPING", ACTION_ROTATION_SNAPPING, GROUP_SNAPPING, false, "snapping.svg", _("Rotation Snapping")); + ADD_CUSTOM_ITEM_TGL("GRID_SNAPPING", ACTION_GRID_SNAPPING, GROUP_GRID_SNAPPING, false, "grid_snapping.svg", _("Grid Snapping")); - addToolItem(new ToolButton(listener, gui, "GOTO_NEXT_ANNOTATED_PAGE", ACTION_GOTO_NEXT_ANNOTATED_PAGE, - "nextAnnotatedPage.svg", _("Next annotated page"))); + // Menu View + // ************************************************************************ - addToolItem(new ToolButton(listener, "ZOOM_OUT", ACTION_ZOOM_OUT, "zoom-out", _("Zoom out"))); - addToolItem(new ToolButton(listener, "ZOOM_IN", ACTION_ZOOM_IN, "zoom-in", _("Zoom in"))); - addToolItem(new ToolButton(listener, "ZOOM_FIT", ACTION_ZOOM_FIT, "zoom-fit-best", _("Zoom fit to screen"))); - addToolItem(new ToolButton(listener, "ZOOM_100", ACTION_ZOOM_100, "zoom-original", _("Zoom to 100%"))); + ADD_CUSTOM_ITEM_TGL("TWO_PAGES", ACTION_VIEW_TWO_PAGES, GROUP_TWOPAGES, false, "showtwopages.svg", _("Two pages")); + ADD_CUSTOM_ITEM_TGL("PRESENTATION_MODE", ACTION_VIEW_PRESENTATION_MODE, GROUP_PRESENTATION_MODE, false, "showtwopages.svg", _("Presentation mode")); + ADD_CUSTOM_ITEM_TGL("FULLSCREEN", ACTION_FULLSCREEN, GROUP_FULLSCREEN, false, "fullscreen.svg", _("Toggle fullscreen")); - addToolItem(new ToolButton(listener, gui, "FULLSCREEN", ACTION_FULLSCREEN, GROUP_FULLSCREEN, false, - "fullscreen.svg", _("Toggle fullscreen"))); + ADD_STOCK_ITEM("ZOOM_OUT", ACTION_ZOOM_OUT, "zoom-out", _("Zoom out")); + ADD_STOCK_ITEM("ZOOM_IN", ACTION_ZOOM_IN, "zoom-in", _("Zoom in")); + ADD_STOCK_ITEM("ZOOM_FIT", ACTION_ZOOM_FIT, "zoom-fit-best", _("Zoom fit to screen")); + ADD_STOCK_ITEM("ZOOM_100", ACTION_ZOOM_100, "zoom-original", _("Zoom to 100%")); - addToolItem(new ToolButton(listener, gui, "RECSTOP", ACTION_RECSTOP, GROUP_REC, false, - "rec.svg", _("Rec / Stop"), gui->get("menuRecStop"))); + // Menu Navigation + // ************************************************************************ - //Icon snapping.svg made by www.freepik.com from www.flaticon.com - addToolItem(new ToolButton(listener, gui, "ROTATION_SNAPPING", ACTION_ROTATION_SNAPPING, GROUP_SNAPPING, false, - "snapping.svg", _("Rotation Snapping"))); + ADD_STOCK_ITEM("GOTO_FIRST", ACTION_GOTO_FIRST, "go-first", _("Go to first page")); + ADD_STOCK_ITEM("GOTO_BACK", ACTION_GOTO_BACK, "go-previous", _("Back")); + ADD_CUSTOM_ITEM("GOTO_PAGE", ACTION_GOTO_PAGE, "goto.svg", _("Go to page")); + ADD_STOCK_ITEM("GOTO_NEXT", ACTION_GOTO_NEXT, "go-next", _("Next")); + ADD_STOCK_ITEM("GOTO_LAST", ACTION_GOTO_LAST, "go-last", _("Go to last page")); - addToolItem(new ToolButton(listener, gui, "GRID_SNAPPING", ACTION_GRID_SNAPPING, GROUP_GRID_SNAPPING, false, - "grid_snapping.svg", _("Grid Snapping"))); + ADD_STOCK_ITEM("GOTO_PREVIOUS_LAYER", ACTION_GOTO_PREVIOUS_LAYER, "go-previous", _("Go to previous layer")); + ADD_STOCK_ITEM("GOTO_NEXT_LAYER", ACTION_GOTO_NEXT_LAYER, "go-next", _("Go to next layer")); + ADD_STOCK_ITEM("GOTO_TOP_LAYER", ACTION_GOTO_TOP_LAYER, "go-top", _("Go to top layer")); - addToolItem(new ColorToolItem(listener, toolHandler, this->parent, 0xff0000, true)); + ADD_CUSTOM_ITEM("GOTO_NEXT_ANNOTATED_PAGE", ACTION_GOTO_NEXT_ANNOTATED_PAGE, "nextAnnotatedPage.svg", _("Next annotated page")); - initPenToolItem(); - initEraserToolItem(); + // Menu Journal + // ************************************************************************ + + ToolButton* tbInsertNewPage = new ToolButton(listener, gui, "INSERT_NEW_PAGE", ACTION_NEW_PAGE_AFTER, "addPage.svg", _("Insert page")); + addToolItem(tbInsertNewPage); + tbInsertNewPage->setPopupMenu(this->newPageType->getMenu()); - addToolItem(new ToolButton(listener, gui, "DELETE_CURRENT_PAGE", ACTION_DELETE_PAGE, "delPage.svg", _("Delete current page"))); + ADD_CUSTOM_ITEM("DELETE_CURRENT_PAGE", ACTION_DELETE_PAGE, "delPage.svg", _("Delete current page")); - addToolItem(new ToolSelectCombocontrol(this, listener, gui, "SELECT")); + gtk_menu_item_set_submenu(GTK_MENU_ITEM(gui->get("menuJournalPaperBackground")), pageBackgroundChangeController->getMenu()); - addToolItem(new ToolDrawCombocontrol(this, listener, gui, "DRAW")); + // Menu Tool + // ************************************************************************ - ToolButton* tbInsertNewPage = new ToolButton(listener, gui, "INSERT_NEW_PAGE", ACTION_NEW_PAGE_AFTER, - "addPage.svg", _("Insert page")); - addToolItem(tbInsertNewPage); - tbInsertNewPage->setPopupMenu(this->newPageType->getMenu()); + initPenToolItem(); + initEraserToolItem(); - addToolItem(new ToolButton(listener, gui, "HILIGHTER", ACTION_TOOL_HILIGHTER, GROUP_TOOL, true, - "tool_highlighter.svg", _("Highlighter"), gui->get("menuToolsHighlighter"))); - addToolItem(new ToolButton(listener, gui, "TEXT", ACTION_TOOL_TEXT, GROUP_TOOL, true, - "tool_text.svg", _("Text"), gui->get("menuToolsText"))); - addToolItem(new ToolButton(listener, gui, "IMAGE", ACTION_TOOL_IMAGE, GROUP_TOOL, true, - "tool_image.svg", _("Image"), gui->get("menuToolsImage"))); - - addToolItem(new ToolButton(listener, gui, "SELECT_REGION", ACTION_TOOL_SELECT_REGION, GROUP_TOOL, true, - "lasso.svg", _("Select Region"), gui->get("menuToolsSelectRegion"))); - addToolItem(new ToolButton(listener, gui, "SELECT_RECTANGLE", ACTION_TOOL_SELECT_RECT, GROUP_TOOL, true, - "rect-select.svg", _("Select Rectangle"), gui->get("menuToolsSelectRectangle"))); - addToolItem(new ToolButton(listener, gui, "SELECT_OBJECT", ACTION_TOOL_SELECT_OBJECT, GROUP_TOOL, true, - "object-select.svg", _("Select Object"), gui->get("menuToolsSelectObject"))); - - addToolItem(new ToolButton(listener, gui, "PLAY_OBJECT", ACTION_TOOL_PLAY_OBJECT, GROUP_TOOL, true, - "object-play.svg", _("Play Object"), gui->get("menuToolsPlayObject"))); - - addToolItem(new ToolButton(listener, gui, "DRAW_CIRCLE", ACTION_TOOL_DRAW_CIRCLE, GROUP_RULER, false, - "circle-draw.svg", _("Draw Circle"), gui->get("menuToolsDrawCircle"))); - addToolItem(new ToolButton(listener, gui, "DRAW_RECTANGLE", ACTION_TOOL_DRAW_RECT, GROUP_RULER, false, - "rect-draw.svg", _("Draw Rectangle"), gui->get("menuToolsDrawRect"))); - addToolItem(new ToolButton(listener, gui, "DRAW_ARROW", ACTION_TOOL_DRAW_ARROW, GROUP_RULER, false, - "arrow-draw.svg", _("Draw Arrow"), gui->get("menuToolsDrawArrow"))); - addToolItem(new ToolButton(listener, gui, "DRAW_COORDINATE_SYSTEM", ACTION_TOOL_DRAW_COORDINATE_SYSTEM, GROUP_RULER, false, - "coordinate-system-draw.svg", _("Draw coordinate system"), gui->get("menuToolsDrawCoordinateSystem"))); - - addToolItem(new ToolButton(listener, gui, "VERTICAL_SPACE", ACTION_TOOL_VERTICAL_SPACE, GROUP_TOOL, true, - "stretch.svg", _("Vertical Space"), gui->get("menuToolsVerticalSpace"))); - addToolItem(new ToolButton(listener, gui, "HAND", ACTION_TOOL_HAND, GROUP_TOOL, true, "hand.svg", _("Hand"), - gui->get("menuToolsHand"))); - - addToolItem(new ToolButton(listener, gui, "SHAPE_RECOGNIZER", ACTION_SHAPE_RECOGNIZER, GROUP_RULER, false, - "shape_recognizer.svg", _("Shape Recognizer"), gui->get("menuToolsShapeRecognizer"))); - addToolItem(new ToolButton(listener, gui, "RULER", ACTION_RULER, GROUP_RULER, false, - "ruler.svg", _("Ruler"), gui->get("menuToolsRuler"))); - - addToolItem(new ToolButton(listener, gui, "FINE", ACTION_SIZE_FINE, GROUP_SIZE, true, - "thickness_thin.svg", _("Thin"))); - addToolItem(new ToolButton(listener, gui, "MEDIUM", ACTION_SIZE_MEDIUM, GROUP_SIZE, true, - "thickness_medium.svg", _("Medium"))); - addToolItem(new ToolButton(listener, gui, "THICK", ACTION_SIZE_THICK, GROUP_SIZE, true, - "thickness_thick.svg", _("Thick"))); - - addToolItem(new ToolButton(listener, gui, "DEFAULT_TOOL", ACTION_TOOL_DEFAULT, GROUP_NOGROUP, false, - "default.svg", _("Default Tool"), gui->get("menuToolsDefault"))); - - addToolItem(new ToolButton(listener, gui, "TOOL_FILL", ACTION_TOOL_FILL, GROUP_FILL, false, - "fill.svg", _("Fill"))); + ADD_CUSTOM_ITEM_TGL("HILIGHTER", ACTION_TOOL_HILIGHTER, GROUP_TOOL, true, "tool_highlighter.svg", _("Highlighter")); + ADD_CUSTOM_ITEM_TGL("TEXT", ACTION_TOOL_TEXT, GROUP_TOOL, true, "tool_text.svg", _("Text")); + ADD_CUSTOM_ITEM_TGL("IMAGE", ACTION_TOOL_IMAGE, GROUP_TOOL, true, "tool_image.svg", _("Image")); + ADD_CUSTOM_ITEM("DEFAULT_TOOL", ACTION_TOOL_DEFAULT, "default.svg", _("Default Tool")); + + ADD_CUSTOM_ITEM_TGL("SHAPE_RECOGNIZER", ACTION_SHAPE_RECOGNIZER, GROUP_RULER, false, "shape_recognizer.svg", _("Shape Recognizer")); + ADD_CUSTOM_ITEM_TGL("DRAW_RECTANGLE", ACTION_TOOL_DRAW_RECT, GROUP_RULER, false, "rect-draw.svg", _("Draw Rectangle")); + ADD_CUSTOM_ITEM_TGL("DRAW_CIRCLE", ACTION_TOOL_DRAW_CIRCLE, GROUP_RULER, false, "circle-draw.svg", _("Draw Circle")); + ADD_CUSTOM_ITEM_TGL("DRAW_ARROW", ACTION_TOOL_DRAW_ARROW, GROUP_RULER, false, "arrow-draw.svg", _("Draw Arrow")); + ADD_CUSTOM_ITEM_TGL("DRAW_COORDINATE_SYSTEM", ACTION_TOOL_DRAW_COORDINATE_SYSTEM, GROUP_RULER, false, "coordinate-system-draw.svg", _("Draw coordinate system")); + ADD_CUSTOM_ITEM_TGL("RULER", ACTION_RULER, GROUP_RULER, false, "ruler.svg", _("Ruler")); + + ADD_CUSTOM_ITEM_TGL("SELECT_REGION", ACTION_TOOL_SELECT_REGION, GROUP_TOOL, true, "lasso.svg", _("Select Region")); + ADD_CUSTOM_ITEM_TGL("SELECT_RECTANGLE", ACTION_TOOL_SELECT_RECT, GROUP_TOOL, true, "rect-select.svg", _("Select Rectangle")); + ADD_CUSTOM_ITEM_TGL("SELECT_OBJECT", ACTION_TOOL_SELECT_OBJECT, GROUP_TOOL, true, "object-select.svg", _("Select Object")); + ADD_CUSTOM_ITEM_TGL("VERTICAL_SPACE", ACTION_TOOL_VERTICAL_SPACE, GROUP_TOOL, true, "stretch.svg", _("Vertical Space")); + ADD_CUSTOM_ITEM_TGL("PLAY_OBJECT", ACTION_TOOL_PLAY_OBJECT, GROUP_TOOL, true, "object-play.svg", _("Play Object")); + ADD_CUSTOM_ITEM_TGL("HAND", ACTION_TOOL_HAND, GROUP_TOOL, true, "hand.svg", _("Hand")); fontButton = new FontButton(listener, gui, "SELECT_FONT", ACTION_FONT_BUTTON_CHANGED, _("Select Font")); addToolItem(fontButton); + ADD_CUSTOM_ITEM_TGL("RECSTOP", ACTION_RECSTOP, GROUP_REC, false, "rec.svg", _("Rec / Stop")); + + // Menu Help + // ************************************************************************ + // All tools are registered by the Glade Signals + + + /////////////////////////////////////////////////////////////////////////// + + // Footer tools + // ************************************************************************ toolPageSpinner = new ToolPageSpinner(gui, listener, "PAGE_SPIN", ACTION_FOOTER_PAGESPIN); addToolItem(toolPageSpinner); ToolZoomSlider* toolZoomSlider = new ToolZoomSlider(listener, "ZOOM_SLIDER", ACTION_FOOTER_ZOOM_SLIDER, zoom); addToolItem(toolZoomSlider); - addToolItem(new ToolButton(listener, gui, "TWO_PAGES", ACTION_VIEW_TWO_PAGES, GROUP_TWOPAGES, false, - "showtwopages.svg", _("Two pages"))); - - addToolItem(new ToolButton(listener, gui, "PRESENTATION_MODE", ACTION_VIEW_PRESENTATION_MODE, GROUP_PRESENTATION_MODE, false, - "showtwopages.svg", _("Presentation mode"))); - toolPageLayer = new ToolPageLayer(control->getLayerController(), gui, listener, "LAYER", ACTION_FOOTER_LAYER); addToolItem(toolPageLayer); - gtk_menu_item_set_submenu(GTK_MENU_ITEM(gui->get("menuJournalPaperBackground")), pageBackgroundChangeController->getMenu()); - - addToolItem(new ToolButton(listener, "DELETE", ACTION_DELETE, "edit-delete", _("Delete"))); - - registerMenupoint(gui->get("eraserFine"), ACTION_TOOL_ERASER_SIZE_FINE, GROUP_ERASER_SIZE); - registerMenupoint(gui->get("eraserMedium"), ACTION_TOOL_ERASER_SIZE_MEDIUM, GROUP_ERASER_SIZE); - registerMenupoint(gui->get("eraserThick"), ACTION_TOOL_ERASER_SIZE_THICK, GROUP_ERASER_SIZE); + ADD_CUSTOM_ITEM_TGL("TOOL_FILL", ACTION_TOOL_FILL, GROUP_FILL, false, "fill.svg", _("Fill")); - registerMenupoint(gui->get("penthicknessVeryFine"), ACTION_TOOL_PEN_SIZE_VERY_THIN, GROUP_PEN_SIZE); - registerMenupoint(gui->get("penthicknessFine"), ACTION_TOOL_PEN_SIZE_FINE, GROUP_PEN_SIZE); - registerMenupoint(gui->get("penthicknessMedium"), ACTION_TOOL_PEN_SIZE_MEDIUM, GROUP_PEN_SIZE); - registerMenupoint(gui->get("penthicknessThick"), ACTION_TOOL_PEN_SIZE_THICK, GROUP_PEN_SIZE); - registerMenupoint(gui->get("penthicknessVeryThick"), ACTION_TOOL_PEN_SIZE_VERY_THICK, GROUP_PEN_SIZE); - registerMenupoint(gui->get("penFill"), ACTION_TOOL_PEN_FILL, GROUP_PEN_FILL); - registerMenupoint(gui->get("penFillTransparency"), ACTION_TOOL_PEN_FILL_TRANSPARENCY); + // Non-menu items + // ************************************************************************ - registerMenupoint(gui->get("highlighterFine"), ACTION_TOOL_HILIGHTER_SIZE_FINE, GROUP_HILIGHTER_SIZE); - registerMenupoint(gui->get("highlighterMedium"), ACTION_TOOL_HILIGHTER_SIZE_MEDIUM, GROUP_HILIGHTER_SIZE); - registerMenupoint(gui->get("highlighterThick"), ACTION_TOOL_HILIGHTER_SIZE_THICK, GROUP_HILIGHTER_SIZE); + // Color item - not in the menu + addToolItem(new ColorToolItem(listener, toolHandler, this->parent, 0xff0000, true)); - registerMenupoint(gui->get("highlighterFill"), ACTION_TOOL_HILIGHTER_FILL, GROUP_HILIGHTER_FILL); - registerMenupoint(gui->get("highlighterFillTransparency"), ACTION_TOOL_HILIGHTER_FILL_TRANSPARENCY); + addToolItem(new ToolSelectCombocontrol(this, listener, gui, "SELECT")); + addToolItem(new ToolDrawCombocontrol(this, listener, gui, "DRAW")); - registerMenupoint(gui->get("menuToolsTextFont"), ACTION_SELECT_FONT); + // General tool configuration - working for every tool which support it + ADD_CUSTOM_ITEM_TGL("FINE", ACTION_SIZE_FINE, GROUP_SIZE, true, "thickness_thin.svg", _("Thin")); + ADD_CUSTOM_ITEM_TGL("MEDIUM", ACTION_SIZE_MEDIUM, GROUP_SIZE, true, "thickness_medium.svg", _("Medium")); + ADD_CUSTOM_ITEM_TGL("THICK", ACTION_SIZE_THICK, GROUP_SIZE, true, "thickness_thick.svg", _("Thick")); - registerMenupoint(gui->get("menuEditTex"), ACTION_TEX); + // now connect all Glade Signals gtk_builder_connect_signals_full(gui->getBuilder(), (GtkBuilderConnectFunc)signalConnectCallback, this); } diff --git a/ui/main.glade b/ui/main.glade index 923ad17d..f79af638 100644 --- a/ui/main.glade +++ b/ui/main.glade @@ -182,6 +182,7 @@ False True True + @@ -722,6 +723,7 @@ _Pen True True + @@ -732,6 +734,7 @@ _Eraser True True + @@ -742,6 +745,7 @@ _Highlighter True True + @@ -752,6 +756,7 @@ _Text True True + @@ -762,6 +767,7 @@ _Image True True + @@ -771,6 +777,7 @@ False _Default Tools True + @@ -785,6 +792,7 @@ False _Shape Recognizer True + @@ -794,6 +802,7 @@ False Draw Rectangle True + @@ -803,6 +812,7 @@ False Draw Circle True + @@ -812,6 +822,7 @@ False Draw Arrow True + @@ -821,6 +832,7 @@ False Draw Arrow True + @@ -830,6 +842,7 @@ False Draw _Line True + @@ -846,6 +859,7 @@ Select Region True True + @@ -856,6 +870,7 @@ Select Rectangle True True + @@ -866,6 +881,7 @@ Select Object True True + @@ -876,6 +892,7 @@ _Vertical Space True True + @@ -887,6 +904,7 @@ Play Object True True + @@ -896,6 +914,7 @@ H_and Tool True True + @@ -922,6 +941,7 @@ _very fine True True + @@ -931,6 +951,7 @@ _fine True True + @@ -940,6 +961,7 @@ _medium True True + @@ -949,6 +971,7 @@ _thick True True + @@ -958,6 +981,7 @@ ver_y thick True True + @@ -973,6 +997,7 @@ standard True True + @@ -982,6 +1007,7 @@ dashed True True + @@ -991,6 +1017,7 @@ dash-/ doted True True + @@ -1000,6 +1027,7 @@ dotted True True + @@ -1014,6 +1042,7 @@ False Fi_ll True + @@ -1022,6 +1051,7 @@ False Fill transparency True + @@ -1045,6 +1075,7 @@ _fine True True + @@ -1054,6 +1085,7 @@ _medium True True + @@ -1063,6 +1095,7 @@ _thick True True + @@ -1078,6 +1111,7 @@ _standard True True + @@ -1087,6 +1121,7 @@ _whiteout True True + @@ -1096,6 +1131,7 @@ _delete strokes True True + @@ -1119,6 +1155,7 @@ _fine True True + @@ -1128,6 +1165,7 @@ _medium True True + @@ -1137,6 +1175,7 @@ _thick True True + @@ -1151,6 +1190,7 @@ False Fi_ll True + @@ -1159,6 +1199,7 @@ False Fill transparency True + @@ -1171,6 +1212,7 @@ False Text Font... True + @@ -1180,6 +1222,7 @@ True False Rec-Stop + @@ -1188,6 +1231,7 @@ False Add/Edit Tex True + From 148e1dd0fa223d80293f1652c63ff6ea58ae0224 Mon Sep 17 00:00:00 2001 From: Andreas Butti Date: Sun, 20 Jan 2019 11:10:55 +0100 Subject: [PATCH 2/2] Fixed missing signals --- ui/main.glade | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/ui/main.glade b/ui/main.glade index f79af638..8ca6c641 100644 --- a/ui/main.glade +++ b/ui/main.glade @@ -92,8 +92,8 @@ True True - + @@ -119,8 +119,8 @@ Export as... True - + @@ -172,6 +172,7 @@ False True True + @@ -422,8 +423,8 @@ True True - + @@ -434,8 +435,8 @@ True True - +