Add methods getPos and setPos to FRect and FWidget
This commit is contained in:
parent
2afa9907ac
commit
2a44a415f3
|
@ -1,3 +1,6 @@
|
||||||
|
2015-09-27 Markus Gans <guru.mail@muenster.de>
|
||||||
|
* Add methods getPos and setPos to FRect and FWidget
|
||||||
|
|
||||||
2015-09-24 Markus Gans <guru.mail@muenster.de>
|
2015-09-24 Markus Gans <guru.mail@muenster.de>
|
||||||
* Add macro _METHOD_CALLBACK and _FUNCTION_CALLBACK
|
* Add macro _METHOD_CALLBACK and _FUNCTION_CALLBACK
|
||||||
to simplify the use callback functions
|
to simplify the use callback functions
|
||||||
|
|
|
@ -13,6 +13,7 @@ FMenu::FMenu(FWidget* parent)
|
||||||
: FWindow(parent)
|
: FWindow(parent)
|
||||||
, item(0)
|
, item(0)
|
||||||
, super_menu(0)
|
, super_menu(0)
|
||||||
|
, next_item_pos(1,1)
|
||||||
, maxItemWidth(0)
|
, maxItemWidth(0)
|
||||||
, current(0)
|
, current(0)
|
||||||
, mouse_down(false)
|
, mouse_down(false)
|
||||||
|
@ -25,6 +26,7 @@ FMenu::FMenu (FString& txt, FWidget* parent)
|
||||||
: FWindow(parent)
|
: FWindow(parent)
|
||||||
, item(0)
|
, item(0)
|
||||||
, super_menu(0)
|
, super_menu(0)
|
||||||
|
, next_item_pos(1,1)
|
||||||
, maxItemWidth(0)
|
, maxItemWidth(0)
|
||||||
, current(0)
|
, current(0)
|
||||||
, mouse_down(false)
|
, mouse_down(false)
|
||||||
|
@ -38,6 +40,7 @@ FMenu::FMenu (const std::string& txt, FWidget* parent)
|
||||||
: FWindow(parent)
|
: FWindow(parent)
|
||||||
, item(0)
|
, item(0)
|
||||||
, super_menu(0)
|
, super_menu(0)
|
||||||
|
, next_item_pos(1,1)
|
||||||
, maxItemWidth(0)
|
, maxItemWidth(0)
|
||||||
, current(0)
|
, current(0)
|
||||||
, mouse_down(false)
|
, mouse_down(false)
|
||||||
|
@ -51,6 +54,7 @@ FMenu::FMenu (const char* txt, FWidget* parent)
|
||||||
: FWindow(parent)
|
: FWindow(parent)
|
||||||
, item(0)
|
, item(0)
|
||||||
, super_menu(0)
|
, super_menu(0)
|
||||||
|
, next_item_pos(1,1)
|
||||||
, maxItemWidth(0)
|
, maxItemWidth(0)
|
||||||
, current(0)
|
, current(0)
|
||||||
, mouse_down(false)
|
, mouse_down(false)
|
||||||
|
|
19
src/fmenu.h
19
src/fmenu.h
|
@ -16,16 +16,16 @@
|
||||||
// ▕▁▁▁▁▁▁▁▁▁▏
|
// ▕▁▁▁▁▁▁▁▁▁▏
|
||||||
// ▲
|
// ▲
|
||||||
// │
|
// │
|
||||||
// ▕▔▔▔▔▔▔▔▔▔▏ ▕▔▔▔▔▔▔▔▔▔▔▔▏1 *▕▔▔▔▔▔▔▔▔▔▔▔▏
|
// ▕▔▔▔▔▔▔▔▔▔▏ ▕▔▔▔▔▔▔▔▔▔▔▔▏ ▕▔▔▔▔▔▔▔▔▔▔▔▏
|
||||||
// ▕ FWindow ▏ ▕ FMenuList ▏- - - -▕ FMenuItem ▏
|
// ▕ FWindow ▏ ▕ FMenuList ▏- - - -▕ FMenuItem ▏
|
||||||
// ▕▁▁▁▁▁▁▁▁▁▏ ▕▁▁▁▁▁▁▁▁▁▁▁▏ ▕▁▁▁▁▁▁▁▁▁▁▁▏
|
// ▕▁▁▁▁▁▁▁▁▁▏ ▕▁▁▁▁▁▁▁▁▁▁▁▏1 *▕▁▁▁▁▁▁▁▁▁▁▁▏
|
||||||
// ▲ ▲
|
// ▲ ▲ 1:
|
||||||
// │ │
|
// │ │ :
|
||||||
// └─────┬─────┘
|
// └─────┬─────┘ :
|
||||||
// │
|
// │ 1 :
|
||||||
// ▕▔▔▔▔▔▔▔▏
|
// ▕▔▔▔▔▔▔▔▏- - - ┘ ▕▔▔▔▔▔▔▔▔▔▔▔▏
|
||||||
// ▕ FMenu ▏
|
// ▕ FMenu ▏- - - - - - - -▕ FMenuItem ▏
|
||||||
// ▕▁▁▁▁▁▁▁▏
|
// ▕▁▁▁▁▁▁▁▏1 1▕▁▁▁▁▁▁▁▁▁▁▁▏
|
||||||
|
|
||||||
#ifndef _FMENU_H
|
#ifndef _FMENU_H
|
||||||
#define _FMENU_H
|
#define _FMENU_H
|
||||||
|
@ -47,6 +47,7 @@ class FMenu : public FWindow, public FMenuList
|
||||||
private:
|
private:
|
||||||
FMenuItem* item;
|
FMenuItem* item;
|
||||||
FMenuList* super_menu;
|
FMenuList* super_menu;
|
||||||
|
FPoint next_item_pos;
|
||||||
uInt maxItemWidth;
|
uInt maxItemWidth;
|
||||||
int current;
|
int current;
|
||||||
bool mouse_down;
|
bool mouse_down;
|
||||||
|
|
|
@ -12,6 +12,7 @@
|
||||||
FMenuBar::FMenuBar(FWidget* parent)
|
FMenuBar::FMenuBar(FWidget* parent)
|
||||||
: FWindow(parent)
|
: FWindow(parent)
|
||||||
, mouse_down(false)
|
, mouse_down(false)
|
||||||
|
, next_item_pos(1,1)
|
||||||
, x(-1)
|
, x(-1)
|
||||||
{
|
{
|
||||||
init();
|
init();
|
||||||
|
|
|
@ -45,6 +45,7 @@ class FMenuBar : public FWindow, public FMenuList
|
||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
bool mouse_down;
|
bool mouse_down;
|
||||||
|
FPoint next_item_pos;
|
||||||
int x;
|
int x;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
|
@ -19,6 +19,7 @@ FMenuItem::FMenuItem (FWidget* parent)
|
||||||
, selected(false)
|
, selected(false)
|
||||||
, separator(false)
|
, separator(false)
|
||||||
, checked(false)
|
, checked(false)
|
||||||
|
, text_length(0)
|
||||||
, hotkey(0)
|
, hotkey(0)
|
||||||
//, accel_key(0)
|
//, accel_key(0)
|
||||||
, menu(0)
|
, menu(0)
|
||||||
|
@ -35,6 +36,7 @@ FMenuItem::FMenuItem (FString& txt, FWidget* parent)
|
||||||
, selected(false)
|
, selected(false)
|
||||||
, separator(false)
|
, separator(false)
|
||||||
, checked(false)
|
, checked(false)
|
||||||
|
, text_length(0)
|
||||||
, hotkey(0)
|
, hotkey(0)
|
||||||
//, accel_key(0)
|
//, accel_key(0)
|
||||||
, menu(0)
|
, menu(0)
|
||||||
|
@ -51,6 +53,7 @@ FMenuItem::FMenuItem (const std::string& txt, FWidget* parent)
|
||||||
, selected(false)
|
, selected(false)
|
||||||
, separator(false)
|
, separator(false)
|
||||||
, checked(false)
|
, checked(false)
|
||||||
|
, text_length(0)
|
||||||
, hotkey(0)
|
, hotkey(0)
|
||||||
//, accel_key(0)
|
//, accel_key(0)
|
||||||
, menu(0)
|
, menu(0)
|
||||||
|
@ -67,6 +70,7 @@ FMenuItem::FMenuItem (const char* txt, FWidget* parent)
|
||||||
, selected(false)
|
, selected(false)
|
||||||
, separator(false)
|
, separator(false)
|
||||||
, checked(false)
|
, checked(false)
|
||||||
|
, text_length(0)
|
||||||
, hotkey(0)
|
, hotkey(0)
|
||||||
//, accel_key(0)
|
//, accel_key(0)
|
||||||
, menu(0)
|
, menu(0)
|
||||||
|
@ -84,8 +88,11 @@ FMenuItem::~FMenuItem() // destructor
|
||||||
//----------------------------------------------------------------------
|
//----------------------------------------------------------------------
|
||||||
void FMenuItem::init (FWidget* parent)
|
void FMenuItem::init (FWidget* parent)
|
||||||
{
|
{
|
||||||
|
text_length = text.getLength();
|
||||||
hotkey = getHotkey();
|
hotkey = getHotkey();
|
||||||
setGeometry (1,1,1,1);
|
if ( hotkey )
|
||||||
|
text_length--;
|
||||||
|
setGeometry (1,1,text_length+2,1);
|
||||||
|
|
||||||
if ( parent )
|
if ( parent )
|
||||||
{
|
{
|
||||||
|
@ -200,19 +207,31 @@ void FMenuItem::setSelected()
|
||||||
inline void FMenuItem::setText (FString& txt)
|
inline void FMenuItem::setText (FString& txt)
|
||||||
{
|
{
|
||||||
text = txt;
|
text = txt;
|
||||||
|
text_length = text.getLength();
|
||||||
hotkey = getHotkey();
|
hotkey = getHotkey();
|
||||||
|
if ( hotkey )
|
||||||
|
text_length--;
|
||||||
|
setWidth(text_length);
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------
|
//----------------------------------------------------------------------
|
||||||
inline void FMenuItem::setText (const std::string& txt)
|
inline void FMenuItem::setText (const std::string& txt)
|
||||||
{
|
{
|
||||||
text = txt;
|
text = txt;
|
||||||
|
text_length = text.getLength();
|
||||||
hotkey = getHotkey();
|
hotkey = getHotkey();
|
||||||
|
if ( hotkey )
|
||||||
|
text_length--;
|
||||||
|
setWidth(text_length);
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------
|
//----------------------------------------------------------------------
|
||||||
inline void FMenuItem::setText (const char* txt)
|
inline void FMenuItem::setText (const char* txt)
|
||||||
{
|
{
|
||||||
text = txt;
|
text = txt;
|
||||||
|
text_length = text.getLength();
|
||||||
hotkey = getHotkey();
|
hotkey = getHotkey();
|
||||||
|
if ( hotkey )
|
||||||
|
text_length--;
|
||||||
|
setWidth(text_length);
|
||||||
}
|
}
|
||||||
|
|
|
@ -48,6 +48,7 @@ class FMenuItem : public FWidget
|
||||||
bool selected;
|
bool selected;
|
||||||
bool separator;
|
bool separator;
|
||||||
bool checked;
|
bool checked;
|
||||||
|
uInt text_length;
|
||||||
int hotkey;
|
int hotkey;
|
||||||
//int accel_key;
|
//int accel_key;
|
||||||
FMenu* menu;
|
FMenu* menu;
|
||||||
|
|
|
@ -16,14 +16,21 @@
|
||||||
#include "fwidget.h"
|
#include "fwidget.h"
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
- FMenuBar muß die x + y Positionen des nächsten
|
||||||
|
einzufügenden FMenuItem kennen
|
||||||
|
|
||||||
|
- FMenu muß die x + y Positionen des nächsten
|
||||||
|
einzufügenden FMenuItem kennen
|
||||||
|
|
||||||
┌─────────┐ ┌──────────┐
|
┌─────────┐ ┌──────────┐
|
||||||
│ FWindow │◄───┐ ┌───┤ FMenuBar │
|
│ FWindow │◄───┐ ┌───┤ FMenuBar │
|
||||||
└─────────┘ ├─┤ └──────────┘
|
└─────────┘ │ │ └──────────┘
|
||||||
┌───────────┐◄───┘ │ ┌───────┐
|
├──┤
|
||||||
│ FMenuList ├-----┐└───┤ FMenu │
|
┌───────────┐ │ │ ┌───────┐
|
||||||
└───────────┘ : └───────┘
|
│ FMenuList │◄───┘ └───┤ FMenu │
|
||||||
|
└─────┬─────┘ └───────┘
|
||||||
: ┌───────────┐
|
: ┌───────────┐
|
||||||
└----┤ FMenuItem │
|
└-----------------┤ FMenuItem │
|
||||||
└───────────┘
|
└───────────┘
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
|
@ -67,6 +67,20 @@ void FRect::setY (int n)
|
||||||
Y2 = short(Y1 + dY);
|
Y2 = short(Y1 + dY);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
void FRect::setPos (int x, int y)
|
||||||
|
{
|
||||||
|
X1 = short(x);
|
||||||
|
Y1 = short(y);
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
void FRect::setPos (const FPoint& p)
|
||||||
|
{
|
||||||
|
X1 = short(p.getX());
|
||||||
|
Y1 = short(p.getY());
|
||||||
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------
|
//----------------------------------------------------------------------
|
||||||
void FRect::setWidth (int w)
|
void FRect::setWidth (int w)
|
||||||
{
|
{
|
||||||
|
|
|
@ -44,6 +44,7 @@ class FRect
|
||||||
int getY2() const;
|
int getY2() const;
|
||||||
int getX() const;
|
int getX() const;
|
||||||
int getY() const;
|
int getY() const;
|
||||||
|
FPoint getPos() const;
|
||||||
int getWidth() const;
|
int getWidth() const;
|
||||||
int getHeight() const;
|
int getHeight() const;
|
||||||
|
|
||||||
|
@ -53,6 +54,8 @@ class FRect
|
||||||
void setY2 (int);
|
void setY2 (int);
|
||||||
void setX (int);
|
void setX (int);
|
||||||
void setY (int);
|
void setY (int);
|
||||||
|
void setPos (int, int);
|
||||||
|
void setPos (const FPoint&);
|
||||||
void setWidth (int);
|
void setWidth (int);
|
||||||
void setHeight (int);
|
void setHeight (int);
|
||||||
void setRect (const FRect&);
|
void setRect (const FRect&);
|
||||||
|
@ -119,6 +122,10 @@ inline int FRect::getX() const
|
||||||
inline int FRect::getY() const
|
inline int FRect::getY() const
|
||||||
{ return Y1; }
|
{ return Y1; }
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
inline FPoint FRect::getPos() const
|
||||||
|
{ return FPoint(X1,Y1); }
|
||||||
|
|
||||||
//----------------------------------------------------------------------
|
//----------------------------------------------------------------------
|
||||||
inline int FRect::getWidth() const
|
inline int FRect::getWidth() const
|
||||||
{ return X2 - X1 + 1; }
|
{ return X2 - X1 + 1; }
|
||||||
|
|
|
@ -1483,6 +1483,41 @@ void FWidget::setY (int y, bool adjust)
|
||||||
adjustSize();
|
adjustSize();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
void FWidget::setPos (const FPoint& p, bool adjust)
|
||||||
|
{
|
||||||
|
setPos (p.getX(), p.getY(), adjust);
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
void FWidget::setPos (int x, int y, bool adjust)
|
||||||
|
{
|
||||||
|
if ( xpos == x && widgetSize.getX() == x )
|
||||||
|
return;
|
||||||
|
if ( ypos == y && widgetSize.getY() == y )
|
||||||
|
return;
|
||||||
|
|
||||||
|
if ( ! isWindow() )
|
||||||
|
{
|
||||||
|
(x > 0) ? xpos = x : xpos = 1;
|
||||||
|
(y > 0) ? ypos = y : ypos = 1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
xpos = x;
|
||||||
|
ypos = y;
|
||||||
|
}
|
||||||
|
|
||||||
|
widgetSize.setPos(xpos,ypos);
|
||||||
|
adjustWidgetSize.setPos(xpos,ypos);
|
||||||
|
adjustWidgetSizeShadow = adjustWidgetSize + shadow;
|
||||||
|
adjustWidgetSizeGlobal.setPos(xpos + xmin - 1, ypos + ymin - 1);
|
||||||
|
adjustWidgetSizeGlobalShadow = adjustWidgetSizeGlobal + shadow;
|
||||||
|
|
||||||
|
if ( adjust )
|
||||||
|
adjustSize();
|
||||||
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------
|
//----------------------------------------------------------------------
|
||||||
void FWidget::setWidth (int w, bool adjust)
|
void FWidget::setWidth (int w, bool adjust)
|
||||||
{
|
{
|
||||||
|
|
|
@ -391,6 +391,7 @@ class FWidget : public FObject, public FTerm
|
||||||
int getBackgroundColor() const;
|
int getBackgroundColor() const;
|
||||||
int getX() const;
|
int getX() const;
|
||||||
int getY() const;
|
int getY() const;
|
||||||
|
const FPoint getPos() const;
|
||||||
int getGlobalX() const;
|
int getGlobalX() const;
|
||||||
int getGlobalY() const;
|
int getGlobalY() const;
|
||||||
const FPoint getGlobalPos() const;
|
const FPoint getGlobalPos() const;
|
||||||
|
@ -412,6 +413,8 @@ class FWidget : public FObject, public FTerm
|
||||||
void setBackgroundColor (int);
|
void setBackgroundColor (int);
|
||||||
void setX (int, bool adjust=true);
|
void setX (int, bool adjust=true);
|
||||||
void setY (int, bool adjust=true);
|
void setY (int, bool adjust=true);
|
||||||
|
void setPos (const FPoint&, bool adjust=true);
|
||||||
|
void setPos (int, int, bool adjust=true);
|
||||||
void setWidth (int, bool adjust=true);
|
void setWidth (int, bool adjust=true);
|
||||||
void setHeight (int, bool adjust=true);
|
void setHeight (int, bool adjust=true);
|
||||||
void setTopPadding (int, bool adjust=true);
|
void setTopPadding (int, bool adjust=true);
|
||||||
|
@ -585,6 +588,10 @@ inline int FWidget::getX() const
|
||||||
inline int FWidget::getY() const
|
inline int FWidget::getY() const
|
||||||
{ return ypos; }
|
{ return ypos; }
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
inline const FPoint FWidget::getPos() const
|
||||||
|
{ return adjustWidgetSize.getPos(); }
|
||||||
|
|
||||||
//----------------------------------------------------------------------
|
//----------------------------------------------------------------------
|
||||||
inline int FWidget::getGlobalX() const
|
inline int FWidget::getGlobalX() const
|
||||||
{ return xpos+xmin-1; }
|
{ return xpos+xmin-1; }
|
||||||
|
|
Loading…
Reference in New Issue