TheIDE: IconDes keys now definable

git-svn-id: svn://ultimatepp.org/upp/trunk@861 f0d560ea-af0d-0410-9eb7-867de7ffcac7
This commit is contained in:
cxl 2009-02-13 15:15:06 +00:00
parent 490ff74fcd
commit 7093b350ec
5 changed files with 112 additions and 78 deletions

View file

@ -2,6 +2,11 @@
NAMESPACE_UPP
#define KEYNAMESPACE IconDesKeys
#define KEYGROUPNAME "Icon designer"
#define KEYFILE <IconDes/IconDes.key>
#include <CtrlLib/key_source.h>
void IconDes::SetPen(int _pen)
{
pen = _pen;
@ -92,92 +97,80 @@ void IconDes::EditBar(Bar& bar)
void IconDes::SettingBar(Bar& bar)
{
using namespace IconDesKeys;
Slot *c = IsCurrent() ? &Current() : NULL;
bar.Add(c, "Zoom out", IconDesImg::ZoomMinus(), THISBACK(ZoomOut))
.Enable(magnify > 1)
.Key(K_SHIFT_CTRL_SUBRACT);
bar.Add(c, "Zoom in", IconDesImg::ZoomPlus(), THISBACK(ZoomIn))
.Enable(magnify < 27)
.Key(K_SHIFT_CTRL_ADD);
bar.Add("Paste transparent/opaque",
bar.Add(c, AK_ZOOM_IN, IconDesImg::ZoomMinus(), THISBACK(ZoomOut))
.Enable(magnify > 1);
bar.Add(c, AK_ZOOM_OUT, IconDesImg::ZoomPlus(), THISBACK(ZoomIn))
.Enable(magnify < 27);
bar.Add(AK_PASTE_MODE,
paste_opaque ? IconDesImg::PasteOpaque()
: IconDesImg::PasteTransparent(),
THISBACK(TogglePaste))
.Key(K_ALT_T);
THISBACK(TogglePaste));
}
void IconDes::SelectBar(Bar& bar)
{
using namespace IconDesKeys;
Slot *c = IsCurrent() ? &Current() : NULL;
bar.Add(c, "Select", IconDesImg::Select(), THISBACK(Select))
.Check(doselection)
.Key(K_SPACE);
bar.Add(c, "Invert selection", IconDesImg::InvertSelect(), THISBACK(InvertSelect))
.Key(K_CTRL_I);
bar.Add(c, "Cancel selection", IconDesImg::CancelSelect(), THISBACK(CancelSelect))
.Key(K_CTRL_E);
bar.Add(c, "Select and move rectangle", IconDesImg::SelectRect(), THISBACK(SelectRect))
.Check(selectrect)
.Key(K_CTRL_R);
bar.Add(c, "Move", IconDesImg::Move(), THISBACK(Move))
.Check(IsPasting())
.Key(K_CTRL_M);
bar.Add(c, AK_SELECT, IconDesImg::Select(), THISBACK(Select))
.Check(doselection);
bar.Add(c, AK_INVERT_SEL, IconDesImg::InvertSelect(), THISBACK(InvertSelect));
bar.Add(c, AK_CANCEL_SEL, IconDesImg::CancelSelect(), THISBACK(CancelSelect));
bar.Add(c, AK_SELECT_MOVE, IconDesImg::SelectRect(), THISBACK(SelectRect))
.Check(selectrect);
bar.Add(c, AK_MOVE, IconDesImg::Move(), THISBACK(Move))
.Check(IsPasting());
}
void IconDes::ImageBar(Bar& bar)
{
using namespace IconDesKeys;
Slot *c = IsCurrent() ? &Current() : NULL;
if(c && c->supersampling)
bar.Add(c, "Smooth resize 3x down", IconDesImg::ResizeDown(), THISBACK(ResizeDown))
.Key(K_TAB);
.Key(AK_SUPERSAMPLING);
else
bar.Add(c && c->image.GetLength() < 256 * 256, "Resize 3x up (supersampling)",
IconDesImg::ResizeUp(), THISBACK(ResizeUp))
.Key(K_TAB);
.Key(AK_SUPERSAMPLING);
bar.Separator();
bar.Add(c, "Set color", IconDesImg::SetColor(), THISBACK(SetColor));
bar.Add(c, "Empty", IconDesImg::Delete(), THISBACK(DoDelete))
.Key(K_DELETE);
bar.Add(c, "Interpolate", IconDesImg::Interpolate(), THISBACK(Interpolate));
bar.Add(c, "Horizontal mirror", IconDesImg::MirrorX(), THISBACK(MirrorX));
bar.Add(c, "Vertical mirror", IconDesImg::MirrorY(), THISBACK(MirrorY));
bar.Add(c, "Horizontal symmetry", IconDesImg::SymmX(), THISBACK(SymmX));
bar.Add(c, "Vertical symmetry", IconDesImg::SymmY(), THISBACK(SymmY));
bar.Add(c, "Rotate", IconDesImg::Rotate(), THISBACK(Rotate));
bar.Add(c, "Free Rotate", IconDesImg::FreeRotate(), THISBACK(FreeRotate));
bar.Add(c, "Smooth Rescale", IconDesImg::Rescale(), THISBACK(SmoothRescale));
bar.Add(c, "Blur/Sharpen", IconDesImg::BlurSharpen(), THISBACK(BlurSharpen));
bar.Add(c, "Colorize", IconDesImg::Colorize(), THISBACK(Colorize));
bar.Add(c, "Chroma", IconDesImg::Chroma(), THISBACK(Chroma));
bar.Add(c, "Contrast", IconDesImg::Contrast(), THISBACK(Contrast));
bar.Add(c, "Alpha", IconDesImg::AlphaI(), THISBACK(Alpha));
bar.Add(c, "Colors", IconDesImg::Colors(), THISBACK(Colors));
bar.Add(c, AK_SETCOLOR, IconDesImg::SetColor(), THISBACK(SetColor));
bar.Add(c, AK_EMPTY, IconDesImg::Delete(), THISBACK(DoDelete));
bar.Add(c, AK_INTERPOLATE, IconDesImg::Interpolate(), THISBACK(Interpolate));
bar.Add(c, AK_HMIRROR, IconDesImg::MirrorX(), THISBACK(MirrorX));
bar.Add(c, AK_VMIRROR, IconDesImg::MirrorY(), THISBACK(MirrorY));
bar.Add(c, AK_HSYM, IconDesImg::SymmX(), THISBACK(SymmX));
bar.Add(c, AK_VSYM, IconDesImg::SymmY(), THISBACK(SymmY));
bar.Add(c, AK_ROTATE, IconDesImg::Rotate(), THISBACK(Rotate));
bar.Add(c, AK_FREE_ROTATE, IconDesImg::FreeRotate(), THISBACK(FreeRotate));
bar.Add(c, AK_RESCALE, IconDesImg::Rescale(), THISBACK(SmoothRescale));
bar.Add(c, AK_BLUR, IconDesImg::BlurSharpen(), THISBACK(BlurSharpen));
bar.Add(c, AK_COLORIZE, IconDesImg::Colorize(), THISBACK(Colorize));
bar.Add(c, AK_CHROMA, IconDesImg::Chroma(), THISBACK(Chroma));
bar.Add(c, AK_CONTRAST, IconDesImg::Contrast(), THISBACK(Contrast));
bar.Add(c, AK_ALPHA, IconDesImg::AlphaI(), THISBACK(Alpha));
bar.Add(c, AK_COLORS, IconDesImg::Colors(), THISBACK(Colors));
}
void IconDes::DrawBar(Bar& bar)
{
using namespace IconDesKeys;
bool notpasting = !IsPasting();
bar.Add("FreeHand", IconDesImg::FreeHand(), THISBACK1(SetTool, &IconDes::FreehandTool))
.Check(tool == &IconDes::FreehandTool && notpasting)
.Key(K_H);
bar.Add("Lines", IconDesImg::Lines(), THISBACK1(SetTool, &IconDes::LineTool))
.Check(tool == &IconDes::LineTool && notpasting)
.Key(K_L);
bar.Add("Ellipses", IconDesImg::Circles(), THISBACK1(SetTool, &IconDes::EllipseTool))
.Check(tool == &IconDes::EllipseTool && notpasting)
.Key(K_E);
bar.Add("Empty ellipses", IconDesImg::EmptyCircles(), THISBACK1(SetTool, &IconDes::EmptyEllipseTool))
.Check(tool == &IconDes::EmptyEllipseTool && notpasting)
.Key(K_W);
bar.Add("Rectangles", IconDesImg::Rects(), THISBACK1(SetTool, &IconDes::RectTool))
.Check(tool == &IconDes::RectTool && notpasting)
.Key(K_R);
bar.Add("Empty rectangles", IconDesImg::EmptyRects(), THISBACK1(SetTool, &IconDes::EmptyRectTool))
.Check(tool == &IconDes::EmptyRectTool && notpasting && !selectrect)
.Key(K_T);
bar.Add("Hotspots", IconDesImg::HotSpot(), THISBACK1(SetTool, &IconDes::HotSpotTool))
.Check(tool == &IconDes::HotSpotTool)
.Key(K_H);
bar.Add(AK_FREEHAND, IconDesImg::FreeHand(), THISBACK1(SetTool, &IconDes::FreehandTool))
.Check(tool == &IconDes::FreehandTool && notpasting);
bar.Add(AK_LINES, IconDesImg::Lines(), THISBACK1(SetTool, &IconDes::LineTool))
.Check(tool == &IconDes::LineTool && notpasting);
bar.Add(AK_ELLIPSES, IconDesImg::Circles(), THISBACK1(SetTool, &IconDes::EllipseTool))
.Check(tool == &IconDes::EllipseTool && notpasting);
bar.Add(AK_EMPTY_ELLIPSES, IconDesImg::EmptyCircles(), THISBACK1(SetTool, &IconDes::EmptyEllipseTool))
.Check(tool == &IconDes::EmptyEllipseTool && notpasting);
bar.Add(AK_RECTANGLES, IconDesImg::Rects(), THISBACK1(SetTool, &IconDes::RectTool))
.Check(tool == &IconDes::RectTool && notpasting);
bar.Add(AK_EMPTY_RECTANGLES, IconDesImg::EmptyRects(), THISBACK1(SetTool, &IconDes::EmptyRectTool))
.Check(tool == &IconDes::EmptyRectTool && notpasting && !selectrect);
bar.Add(AK_HOTSPOTS, IconDesImg::HotSpot(), THISBACK1(SetTool, &IconDes::HotSpotTool))
.Check(tool == &IconDes::HotSpotTool);
bar.Separator();
for(int i = 1; i <= 6; i++)
bar.Add("Pen " + AsString(i), IconDesImg::Get(IconDesImg::I_Pen1 + i - 1), THISBACK1(SetPen, i))

View file

@ -13,6 +13,11 @@ NAMESPACE_UPP
#define LAYOUTFILE <IconDes/IconDes.lay>
#include <CtrlCore/lay.h>
#define KEYNAMESPACE IconDesKeys
#define KEYGROUPNAME "Icon designer"
#define KEYFILE <IconDes/IconDes.key>
#include <CtrlLib/key_header.h>
class AlphaCtrl : public Ctrl {
public:
virtual void Layout();

View file

@ -0,0 +1,40 @@
KEY(INSERT_IMAGE, "Insert image..", K_INSERT)
KEY(IMAGE, "Image..", 0)
KEY(REMOVE_IMAGE, "Remove image", 0)
KEY(DUPLICATE, "Duplicate", K_CTRL_D)
KEY(INSERT_CLIP, "Insert from clipboard", K_ALT_V)
KEY(INSERT_FILE, "Insert from file(s)..", K_ALT_O)
KEY(MOVE_UP, "Move up", K_ALT|K_CTRL_UP)
KEY(MOVE_DOWN, "Move down", K_ALT|K_CTRL_DOWN)
KEY(ZOOM_OUT, "Zoom out", K_SHIFT_CTRL_SUBRACT)
KEY(ZOOM_IN, "Zoom in", K_SHIFT_CTRL_ADD)
KEY(PASTE_MODE, "Paste transparent/opaque", K_ALT_T)
KEY(SELECT, "Select", K_SPACE)
KEY(INVERT_SEL, "Invert selection", K_CTRL_I)
KEY(CANCEL_SEL, "Cancel selection", K_CTRL_E)
KEY(SELECT_MOVE, "Select and move rectangle", K_CTRL_R)
KEY(MOVE, "Move", K_CTRL_M)
KEY(SUPERSAMPLING, "Supersampling", K_TAB)
KEY(SETCOLOR, "Set color", 0)
KEY(EMPTY, "Empty", K_DELETE)
KEY(INTERPOLATE, "Interpolate", 0)
KEY(HMIRROR, "Horizontal mirror", 0)
KEY(VMIRROR, "Vertical mirror", 0)
KEY(HSYM, "Horizontal symmetry", 0)
KEY(VSYM, "Vertical symmetry", 0)
KEY(ROTATE, "Rotate", 0)
KEY(FREE_ROTATE, "Free Rotate", 0)
KEY(RESCALE, "Smooth Rescale", 0)
KEY(BLUR, "Blur/Sharpen", 0)
KEY(COLORIZE, "Colorize", 0)
KEY(CHROMA, "Chroma", 0)
KEY(CONTRAST, "Contrast", 0)
KEY(ALPHA, "Alpha", 0)
KEY(COLORS, "Colors", 0)
KEY(FREEHAND, "FreeHand", K_H)
KEY(LINES, "Lines", K_L)
KEY(ELLIPSES, "Ellipses", K_E)
KEY(EMPTY_ELLIPSES, "Empty ellipses", K_W)
KEY(RECTANGLES, "Rectangles", K_R)
KEY(EMPTY_RECTANGLES, "Empty rectangles", K_T)
KEY(HOTSPOTS, "Hotspots", K_H)

View file

@ -7,6 +7,7 @@ uses
file
IconDes.h,
IconDes.key,
AlphaCtrl.cpp,
RGBACtrl.cpp,
ImageOp.cpp optimize_speed,

View file

@ -257,23 +257,18 @@ void IconDes::MoveSlot(int d)
void IconDes::ListMenu(Bar& bar)
{
bar.Add("Insert image..", IconDesImg::Insert(), THISBACK(InsertImage))
.Key(K_INSERT);
bar.Add(IsCurrent(), "Image..", IconDesImg::Edit(), THISBACK(EditImage));
bar.Add(IsCurrent(), "Remove image", IconDesImg::Remove(), THISBACK(RemoveImage));
bar.Add(IsCurrent(), "Duplicate", IconDesImg::Duplicate(), THISBACK(Duplicate))
.Key(K_CTRL_D);
bar.Add("Insert from clipboard", IconDesImg::InsertPaste(), THISBACK(InsertPaste))
.Key(K_ALT_V);
bar.Add("Insert from file(s)..", IconDesImg::InsertFile(), THISBACK(InsertFile))
.Key(K_ALT_O);
using namespace IconDesKeys;
bar.Add(AK_INSERT_IMAGE, IconDesImg::Insert(), THISBACK(InsertImage));
bar.Add(IsCurrent(), AK_IMAGE, IconDesImg::Edit(), THISBACK(EditImage));
bar.Add(IsCurrent(), AK_REMOVE_IMAGE, IconDesImg::Remove(), THISBACK(RemoveImage));
bar.Add(IsCurrent(), AK_DUPLICATE, IconDesImg::Duplicate(), THISBACK(Duplicate));
bar.Add(AK_INSERT_CLIP, IconDesImg::InsertPaste(), THISBACK(InsertPaste));
bar.Add(AK_INSERT_FILE, IconDesImg::InsertFile(), THISBACK(InsertFile));
bar.Separator();
bar.Add(IsCurrent() && list.GetCursor() > 0, "Move up", IconDesImg::MoveUp(),
THISBACK1(MoveSlot, -1))
.Key(K_ALT|K_CTRL_UP);
bar.Add(IsCurrent() && list.GetCursor() < slot.GetCount() - 1, "Move down", IconDesImg::MoveDown(),
THISBACK1(MoveSlot, 1))
.Key(K_ALT|K_CTRL_DOWN);
bar.Add(IsCurrent() && list.GetCursor() > 0, AK_MOVE_UP, IconDesImg::MoveUp(),
THISBACK1(MoveSlot, -1));
bar.Add(IsCurrent() && list.GetCursor() < slot.GetCount() - 1, AK_MOVE_DOWN, IconDesImg::MoveDown(),
THISBACK1(MoveSlot, 1));
if(removed.GetCount()) {
bar.Separator();
for(int i = removed.GetCount() - 1; i >= 0; i--) {