Merge pull request #637 from andreasb242/fill-tool

Fill tool
presentation
andreasb242 7 years ago committed by GitHub
commit 0bfed8e4fd
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 4
      src/control/Actions.h
  2. 39
      src/control/Control.cpp
  3. 3
      src/control/Control.h
  4. 24
      src/control/ToolHandler.cpp
  5. 5
      src/control/ToolHandler.h
  6. 3
      src/gui/toolbarMenubar/ToolMenuHandler.cpp
  7. 137
      ui/pixmaps/fill.svg
  8. 2
      ui/toolbar.ini

@ -118,6 +118,8 @@ enum ActionType
ACTION_TOOL_HILIGHTER_FILL,
ACTION_TOOL_HILIGHTER_FILL_TRANSPARENCY,
ACTION_TOOL_FILL,
ACTION_ROTATION_SNAPPING,
ACTION_GRID_SNAPPING,
@ -182,6 +184,8 @@ enum ActionGroup
GROUP_SNAPPING,
GROUP_GRID_SNAPPING,
GROUP_FILL,
};
class ActionHandler;

@ -661,6 +661,9 @@ void Control::actionPerformed(ActionType type, ActionGroup group, GdkEvent* even
selectDefaultTool();
}
break;
case ACTION_TOOL_FILL:
setFill(enabled);
break;
case ACTION_SIZE_VERY_THIN:
if (enabled)
@ -1646,6 +1649,12 @@ void Control::toolChanged()
fireEnableAction(ACTION_SIZE_VERY_THICK, enableSize);
fireEnableAction(ACTION_SIZE_VERY_THIN, enableSize);
bool enableFill = toolHandler->hasCapability(TOOL_CAP_FILL);
fireEnableAction(ACTION_TOOL_FILL, enableFill);
if (enableSize)
{
toolSizeChanged();
@ -1802,6 +1811,20 @@ void Control::toolSizeChanged()
}
}
void Control::toolFillChanged()
{
XOJ_CHECK_TYPE(Control);
if (toolHandler->getFill())
{
fireActionSelected(GROUP_FILL, ACTION_TOOL_FILL);
}
else
{
fireActionSelected(GROUP_FILL, ACTION_NONE);
}
}
/**
* Select the color for the tool
*
@ -2887,6 +2910,22 @@ void Control::setCopyPasteEnabled(bool enabled)
this->clipboardHandler->setCopyPasteEnabled(enabled);
}
void Control::setFill(bool fill)
{
XOJ_CHECK_TYPE(Control);
if (toolHandler->getToolType() == TOOL_PEN)
{
fireActionSelected(GROUP_PEN_FILL, fill ? ACTION_TOOL_PEN_FILL : ACTION_NONE);
this->toolHandler->setPenFillEnabled(fill, false);
}
else if (toolHandler->getToolType() == TOOL_HILIGHTER)
{
fireActionSelected(GROUP_HILIGHTER_FILL, fill ? ACTION_TOOL_HILIGHTER_FILL : ACTION_NONE);
this->toolHandler->setHilighterFillEnabled(fill, false);
}
}
void Control::setToolSize(ToolSize size)
{
XOJ_CHECK_TYPE(Control);

@ -108,6 +108,7 @@ public:
virtual void setCustomColorSelected();
virtual void toolChanged();
virtual void toolSizeChanged();
virtual void toolFillChanged();
void selectTool(ToolType type);
void selectDefaultTool();
@ -177,6 +178,8 @@ public:
void setToolSize(ToolSize size);
void setFill(bool fill);
TextEditor* getTextEditor();
GladeSearchpath* getGladeSearchPath();

@ -277,18 +277,16 @@ void ToolHandler::setHilighterSize(ToolSize size)
}
}
void ToolHandler::setPenFillEnabled(bool fill)
void ToolHandler::setPenFillEnabled(bool fill, bool fireEvent)
{
XOJ_CHECK_TYPE(ToolHandler);
this->tools[TOOL_PEN - TOOL_PEN]->fill = fill;
// TODO: Currently no toolbar event to send, but if there is a toolbar, here the event should be sent
// Ticket #598
// if (this->current->type == TOOL_PEN)
// {
// this->listener->toolSizeChanged();
// }
if (this->current->type == TOOL_PEN && fireEvent)
{
this->listener->toolFillChanged();
}
}
bool ToolHandler::getPenFillEnabled()
@ -312,18 +310,16 @@ int ToolHandler::getPenFill()
return this->tools[TOOL_PEN - TOOL_PEN]->fillAlpha;
}
void ToolHandler::setHilighterFillEnabled(bool fill)
void ToolHandler::setHilighterFillEnabled(bool fill, bool fireEvent)
{
XOJ_CHECK_TYPE(ToolHandler);
this->tools[TOOL_HILIGHTER - TOOL_PEN]->fill = fill;
// TODO: Currently no toolbar event to send, but if there is a toolbar, here the event should be sent
// Ticket #598
// if (this->current->type == TOOL_HILIGHTER)
// {
// this->listener->toolSizeChanged();
// }
if (this->current->type == TOOL_HILIGHTER && fireEvent)
{
this->listener->toolFillChanged();
}
}
bool ToolHandler::getHilighterFillEnabled()

@ -25,6 +25,7 @@ public:
virtual void toolColorChanged(bool userSelection) = 0;
virtual void setCustomColorSelected() = 0;
virtual void toolSizeChanged() = 0;
virtual void toolFillChanged() = 0;
virtual void toolChanged() = 0;
virtual ~ToolListener();
@ -71,12 +72,12 @@ public:
void setEraserSize(ToolSize size);
void setHilighterSize(ToolSize size);
void setPenFillEnabled(bool fill);
void setPenFillEnabled(bool fill, bool fireEvent = true);
bool getPenFillEnabled();
void setPenFill(int alpha);
int getPenFill();
void setHilighterFillEnabled(bool fill);
void setHilighterFillEnabled(bool fill, bool fireEvent = true);
bool getHilighterFillEnabled();
void setHilighterFill(int alpha);
int getHilighterFill();

@ -441,6 +441,9 @@ void ToolMenuHandler::initToolItems()
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")));
fontButton = new FontButton(listener, gui, "SELECT_FONT", ACTION_FONT_BUTTON_CHANGED, _("Select Font"));
addToolItem(fontButton);

@ -0,0 +1,137 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="22"
height="22"
id="svg3049"
version="1.1"
inkscape:version="0.91 r13725"
sodipodi:docname="fill-color.svg"
inkscape:export-filename="/home/uri/.kde/share/icons/NITRUX-KDE/16x16/actions/view-right-new.png"
inkscape:export-xdpi="30"
inkscape:export-ydpi="30">
<defs
id="defs3051">
<style
type="text/css"
id="current-color-scheme">
.ColorScheme-Text {
color:#4d4d4d;
}
.ColorScheme-Background {
color:#eff0f1;
}
.ColorScheme-Highlight {
color:#3daee9;
}
.ColorScheme-ViewText {
color:#31363b;
}
.ColorScheme-ViewBackground {
color:#fcfcfc;
}
.ColorScheme-ViewHover {
color:#93cee9;
}
.ColorScheme-ViewFocus{
color:#3daee9;
}
.ColorScheme-ButtonText {
color:#31363b;
}
.ColorScheme-ButtonBackground {
color:#eff0f1;
}
.ColorScheme-ButtonHover {
color:#93cee9;
}
.ColorScheme-ButtonFocus{
color:#3daee9;
}
</style>
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="8.1640625"
inkscape:cx="18.744584"
inkscape:cy="20.24396"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="true"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0"
inkscape:window-width="1920"
inkscape:window-height="1176"
inkscape:window-x="0"
inkscape:window-y="24"
inkscape:window-maximized="1"
inkscape:showpageshadow="false"
borderlayer="true"
inkscape:snap-bbox="true"
inkscape:snap-global="true">
<inkscape:grid
type="xygrid"
id="grid4085" />
<sodipodi:guide
position="2.0000044,14.00003"
orientation="12,0"
id="guide4075" />
<sodipodi:guide
position="2.0000044,2.0000296"
orientation="0,12"
id="guide4077" />
<sodipodi:guide
position="14.000004,2.0000296"
orientation="-12,0"
id="guide4079" />
<sodipodi:guide
position="22,22"
orientation="0,-12"
id="guide4081" />
</sodipodi:namedview>
<metadata
id="metadata3054">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Capa 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-421.71429,-525.79074)">
<path
style="color:#4d4d4d;fill:#486cc9;fill-opacity:1;stroke:none"
d="m 425.48601,538.39703 c 0.46884,1.70916 1.63998,3.17393 2.1459,4.35033 0.17703,0.34977 0.26352,0.74689 0.26352,1.17124 0,1.39043 -1.0746,2.5098 -2.40942,2.5098 -1.33483,0 -2.40943,-1.11937 -2.40943,-2.5098 0,-0.42435 0.12417,-0.82147 0.30118,-1.17124 0.50591,-1.1764 1.63942,-2.64117 2.10825,-4.35033 z"
id="rect4112-8"
inkscape:connector-curvature="0"
class="ColorScheme-Text" />
<path
style="color:#4d4d4d;fill:currentColor;fill-opacity:1;stroke:none"
d="m 432.62308,527.15303 c 1.79104,0 3.24298,1.4383 3.24298,3.21257 l 0,2.811 6.48594,6.42514 -6.89132,6.82671 -9.17153,-9.08555 2.28022,-2.25884 0.81074,-0.80314 0,-3.91532 c 0,-1.77427 1.45192,-3.21257 3.24297,-3.21257 z m 0,1.60629 c -0.89552,0 -1.62149,0.71916 -1.62149,1.60628 l 0,2.30904 2.17888,-2.15845 1.06409,1.05413 0,-1.20472 c 0,-0.88712 -0.72596,-1.60628 -1.62148,-1.60628 z m 0.55739,4.01571 -4.6111,4.56787 c 4.81863,5.45019 5.28945,-1.81009 11.50241,2.25884 l -6.89131,-6.82671 z"
id="rect3357"
inkscape:connector-curvature="0"
class="ColorScheme-Text" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 4.4 KiB

@ -35,7 +35,7 @@ name = Portrait
# Translated names
name[de] = Hochformat
toolbarTop1 = SAVE,NEW,OPEN,SEPARATOR, CUT,COPY,PASTE,SEPARATOR, UNDO,REDO,SEPARATOR, GOTO_FIRST,GOTO_BACK,GOTO_NEXT_ANNOTATED_PAGE,GOTO_NEXT,GOTO_LAST,INSERT_NEW_PAGE,DELETE_CURRENT_PAGE,SEPARATOR ,FULLSCREEN, SEPARATOR, SELECT_FONT
toolbarTop2 = PEN,ERASER,HILIGHTER,IMAGE,TEXT,DRAW,SEPARATOR, SELECT,VERTICAL_SPACE,HAND,SEPARATOR, DEFAULT_TOOL,SEPARATOR, FINE,MEDIUM,THICK,SEPARATOR,COLOR(0x000000),COLOR(0x008000),COLOR(0x00c0ff),COLOR(0x00ff00),COLOR(0x3333cc),COLOR(0x808080),COLOR(0xff0000),COLOR(0xff00ff),COLOR(0xff8000),COLOR(0xffff00),COLOR(0xffffff),COLOR_SELECT
toolbarTop2 = PEN,ERASER,HILIGHTER,IMAGE,TEXT,DRAW,SEPARATOR, SELECT,VERTICAL_SPACE,HAND,SEPARATOR, DEFAULT_TOOL,SEPARATOR, FINE,MEDIUM,THICK,SEPARATOR,TOOL_FILL,SEPARATOR,COLOR(0x000000),COLOR(0x008000),COLOR(0x00c0ff),COLOR(0x00ff00),COLOR(0x3333cc),COLOR(0x808080),COLOR(0xff0000),COLOR(0xff00ff),COLOR(0xff8000),COLOR(0xffff00),COLOR(0xffffff),COLOR_SELECT
toolbarBottom1 = PAGE_SPIN,SEPARATOR,LAYER, SPACER, TWO_PAGES,ZOOM_100,ZOOM_FIT,ZOOM_OUT,ZOOM_SLIDER,ZOOM_IN
[Xournal++]

Loading…
Cancel
Save