mirror of
https://github.com/ultimatepp/ultimatepp.git
synced 2026-05-16 14:16:09 -06:00
CtrlLib: ChCoco
git-svn-id: svn://ultimatepp.org/upp/trunk@12279 f0d560ea-af0d-0410-9eb7-867de7ffcac7
This commit is contained in:
parent
6f59ef3dbb
commit
cbf64d097d
6 changed files with 81 additions and 33 deletions
|
|
@ -1,7 +1,7 @@
|
|||
sooner:
|
||||
|
||||
- Information etc.. Images
|
||||
|
||||
- Ctrl gets stuck
|
||||
- fix package organiser link options (joining link options missing space)
|
||||
|
||||
later:
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
#include "ChCoco.h"
|
||||
|
||||
#ifdef PLAFORM_COCOA
|
||||
#ifdef PLATFORM_COCOA
|
||||
|
||||
namespace Upp {
|
||||
|
||||
|
|
@ -11,7 +11,7 @@ Image Hot3(const Image& m)
|
|||
}
|
||||
|
||||
Image Coco_ThemeImage(Color bg, int cx, int cy, int margin, int type,
|
||||
int value = 0, int state = CTRL_NORMAL, bool focus = false)
|
||||
int value, int state, bool focus)
|
||||
{
|
||||
Size isz(cx + 2 * margin, cy + 2 * margin);
|
||||
ImageDraw iw(isz);
|
||||
|
|
@ -63,25 +63,31 @@ void SOImages(int imli, int type, int value)
|
|||
CtrlsImg::Set(imli++, Hot3(h[i]));
|
||||
}
|
||||
|
||||
void CocoButton(Button::Style& s, int value)
|
||||
void CocoButton(Image *h, int type, int value)
|
||||
{
|
||||
Image h[4];
|
||||
h[0] = Coco_ThemeImage(DPI(40), DPI(32), 10, COCO_BUTTON, value, CTRL_NORMAL);
|
||||
h[1] = Coco_ThemeImage(DPI(40), DPI(32), 10, COCO_BUTTON, value, CTRL_HOT); // same as Normal
|
||||
h[2] = Coco_ThemeImage(DPI(40), DPI(32), 10, COCO_BUTTON, value, CTRL_PRESSED);
|
||||
h[3] = Coco_ThemeImage(DPI(40), DPI(32), 10, COCO_BUTTON, value, CTRL_DISABLED);
|
||||
h[0] = Coco_ThemeImage(DPI(40), DPI(32), 10, type, value, CTRL_NORMAL);
|
||||
h[1] = Coco_ThemeImage(DPI(40), DPI(32), 10, type, value, CTRL_HOT); // same as Normal
|
||||
h[2] = Coco_ThemeImage(DPI(40), DPI(32), 10, type, value, CTRL_PRESSED);
|
||||
h[3] = Coco_ThemeImage(DPI(40), DPI(32), 10, type, value, CTRL_DISABLED);
|
||||
|
||||
AutoCrop(h, 4);
|
||||
|
||||
for(int i = 0; i < 4; i++)
|
||||
h[i] = Hot3(h[i]);
|
||||
}
|
||||
|
||||
void CocoButton(Button::Style& s, int type, int value)
|
||||
{
|
||||
Image h[4];
|
||||
CocoButton(h, type, value);
|
||||
Size sz = h[0].GetSize();
|
||||
for(int i = 0; i < 4; i++) {
|
||||
Image img = Hot3(h[i]);
|
||||
s.look[i] = img;
|
||||
s.look[i] = h[i];
|
||||
Image gg = CreateImage(h[i].GetSize(), SColorFace());
|
||||
Over(gg, h[i]);
|
||||
s.textcolor[i] = i == CTRL_DISABLED ? SColorDisabled()
|
||||
: Grayscale(AvgColor(gg, img.GetSize().cy / 3)) > 160 ? SColorText()
|
||||
: White();
|
||||
: Grayscale(AvgColor(gg, h[i].GetSize().cy / 3)) > 160 ? SColorText()
|
||||
: White();
|
||||
}
|
||||
s.overpaint = 5;
|
||||
s.pressoffset = Point(0, 0);
|
||||
|
|
@ -126,9 +132,24 @@ void ChHostSkin()
|
|||
SOImages(CtrlsImg::I_O1, COCO_CHECKBOX, 1);
|
||||
SOImages(CtrlsImg::I_O2, COCO_CHECKBOX, 2);
|
||||
|
||||
CocoButton(Button::StyleNormal().Write(), 0);
|
||||
CocoButton(Button::StyleOk().Write(), 1);
|
||||
|
||||
CocoButton(Button::StyleNormal().Write(), COCO_BUTTON, 0);
|
||||
CocoButton(Button::StyleOk().Write(), COCO_BUTTON, 1);
|
||||
CocoButton(Button::StyleEdge().Write(), COCO_BEVELBUTTON, 0);
|
||||
CocoButton(Button::StyleScroll().Write(), COCO_BEVELBUTTON, 0);
|
||||
|
||||
{
|
||||
auto& s = ToolButton::StyleDefault().Write();
|
||||
Image h[4];
|
||||
CocoButton(h, COCO_ROUNDEDBUTTON, 0);
|
||||
s.look[CTRL_NORMAL] = Image();
|
||||
s.look[CTRL_HOT] = h[CTRL_HOT];
|
||||
s.look[CTRL_PRESSED] = h[CTRL_PRESSED];
|
||||
s.look[CTRL_DISABLED] = Image();
|
||||
CocoButton(h, COCO_ROUNDEDBUTTON, 1);
|
||||
s.look[CTRL_CHECKED] = h[CTRL_NORMAL];
|
||||
s.look[CTRL_HOTCHECKED] = h[CTRL_HOT];
|
||||
}
|
||||
|
||||
{
|
||||
Color menuink = CocoColor(COCO_SELECTEDMENUTEXT);
|
||||
SColorMenu_Write(AvgColor(AutoCrop(Coco_ThemeImage(30, 20, 10, COCO_MENU, 0, CTRL_NORMAL))));
|
||||
|
|
@ -139,12 +160,6 @@ void ChHostSkin()
|
|||
|
||||
SColorMenu_Write(SColorFace());
|
||||
|
||||
// s.popupframe = WithHotSpot(mimg, m, m);
|
||||
// s.popupbody = Crop(mimg, m, m, 32 - 2 * m, 32 - 2 * m);
|
||||
// s.leftgap = DPI(16) + Zx(6);
|
||||
// s.itemtext = ChGtkColor(2, menu_item);
|
||||
// s.menutext = SColorMenuText();
|
||||
|
||||
s.topitem[1] = s.topitem[0] = SColorFace();
|
||||
s.topitemtext[1] = SColorText();
|
||||
Image m = AutoCrop(Coco_ThemeImage(50, 50, 10, COCO_MENUITEM, 0, CTRL_HOT));
|
||||
|
|
@ -157,8 +172,28 @@ void ChHostSkin()
|
|||
s.itemtext = s.topitemtext[2] = menuink;
|
||||
s.look = SColorFace();
|
||||
s.opaquetest = false;
|
||||
// s.breaksep.l1 = Color(img[31][15]);
|
||||
// s.breaksep.l2 = Null;
|
||||
}
|
||||
|
||||
{
|
||||
ScrollBar::Style& s = ScrollBar::StyleDefault().Write();
|
||||
s.arrowsize = 0; // no arrows
|
||||
s.through = true;
|
||||
s.barsize = s.thumbwidth = Coco_Metric(0); // kThemeMetricScrollBarWidth
|
||||
for(int status = CTRL_NORMAL; status <= CTRL_DISABLED; status++) {
|
||||
s.vupper[status] = s.vlower[status] =
|
||||
Hot3(Coco_ThemeImage(SColorFace(), s.barsize, 40, 0, COCO_SCROLLTRACK, 0, status));
|
||||
Image thumb = Coco_ThemeImage(s.barsize, 50, 0, COCO_SCROLLTHUMB, 0, status);
|
||||
Rect bounds = FindBounds(thumb);
|
||||
thumb = Crop(thumb, Rect(0, bounds.top, thumb.GetWidth(), bounds.bottom));
|
||||
s.vthumb[status] = Hot3(thumb);
|
||||
|
||||
s.hupper[status] = s.hlower[status] =
|
||||
Hot3(Coco_ThemeImage(SColorFace(), 40, s.barsize, 0, COCO_SCROLLTRACK, 1, status));
|
||||
thumb = Coco_ThemeImage(50, s.barsize, 0, COCO_SCROLLTHUMB, 1, status);
|
||||
bounds = FindBounds(thumb);
|
||||
thumb = Crop(thumb, Rect(bounds.left, 0, bounds.right, thumb.GetHeight()));
|
||||
s.hthumb[status] = Hot3(thumb);
|
||||
}
|
||||
}
|
||||
|
||||
// DDUMP(Coco_ThemeColor(1));
|
||||
|
|
|
|||
|
|
@ -6,6 +6,8 @@
|
|||
|
||||
namespace Upp {
|
||||
|
||||
Image Coco_ThemeImage(Color bg, int cx, int cy, int margin, int type,
|
||||
int value = 0, int state = CTRL_NORMAL, bool focus = false);
|
||||
Image Coco_ThemeImage(int cx, int cy, int margin, int type,
|
||||
int value = 0, int state = CTRL_NORMAL, bool focus = false);
|
||||
|
||||
|
|
|
|||
|
|
@ -5,6 +5,8 @@ enum ChCocoControlTypes {
|
|||
COCO_BUTTON,
|
||||
COCO_CHECKBOX,
|
||||
COCO_RADIOBUTTON,
|
||||
COCO_BEVELBUTTON,
|
||||
COCO_ROUNDEDBUTTON,
|
||||
COCO_SCROLLTHUMB,
|
||||
COCO_SCROLLTRACK,
|
||||
COCO_BRUSH,
|
||||
|
|
|
|||
|
|
@ -1,10 +1,11 @@
|
|||
#include <CtrlCore/CocoMM.h>
|
||||
#include <Core/config.h>
|
||||
|
||||
#ifdef PLATFORM_COCOA
|
||||
|
||||
#include <Carbon/Carbon.h>
|
||||
#include "ChCocoMM.h"
|
||||
#include <CtrlLib/CtrlLib.h>
|
||||
#include <CtrlCore/CocoMM.h>
|
||||
#include "ChCocoMM.h"
|
||||
|
||||
void Coco_ThemePaint(void *cgcontext, const Upp::Rect& r, int type, int value, int state, bool focus)
|
||||
{
|
||||
|
|
@ -72,13 +73,15 @@ void Coco_ThemePaint(void *cgcontext, const Upp::Rect& r, int type, int value, i
|
|||
tdi.kind = kThemeScrollBarMedium;
|
||||
tdi.bounds = cr;
|
||||
tdi.min = 0;
|
||||
tdi.max = 100;
|
||||
tdi.max = 1;
|
||||
tdi.value = 0;
|
||||
tdi.attributes = kThemeTrackNoScrollBarArrows|
|
||||
(type == COCO_SCROLLTHUMB ? kThemeTrackHideTrack|kThemeTrackShowThumb : 0);
|
||||
(type == COCO_SCROLLTHUMB ? kThemeTrackHideTrack|kThemeTrackShowThumb : 0)|
|
||||
(value * kThemeTrackHorizontal);
|
||||
tdi.enableState = state == Upp::CTRL_DISABLED ? kThemeTrackDisabled : kThemeTrackActive;
|
||||
tdi.trackInfo.scrollbar.viewsize = 50;
|
||||
tdi.trackInfo.scrollbar.pressState = state == Upp::CTRL_PRESSED ? kThemeThumbPressed : 0;
|
||||
tdi.trackInfo.scrollbar.viewsize = 200;
|
||||
if(type == COCO_SCROLLTHUMB && state == Upp::CTRL_HOT || state == Upp::CTRL_PRESSED)
|
||||
tdi.trackInfo.scrollbar.pressState |= kThemeThumbPressed;
|
||||
|
||||
HIThemeDrawTrack(&tdi, &cr, cg, kHIThemeOrientationNormal);
|
||||
}
|
||||
|
|
@ -89,7 +92,13 @@ void Coco_ThemePaint(void *cgcontext, const Upp::Rect& r, int type, int value, i
|
|||
bdi.state = st;
|
||||
bdi.kind = Upp::decode(type, COCO_CHECKBOX, (int)kThemeCheckBox,
|
||||
COCO_RADIOBUTTON, (int)kThemeRadioButton,
|
||||
COCO_BEVELBUTTON, (int)kThemeBevelButtonMedium,
|
||||
COCO_ROUNDEDBUTTON, (int)kThemeRoundedBevelButton,
|
||||
(int)kThemePushButtonNormal);
|
||||
#ifdef _DEBUG
|
||||
if(type < 0)
|
||||
bdi.kind = -type;
|
||||
#endif
|
||||
bdi.adornment = focus ? kThemeAdornmentFocus : kThemeAdornmentNone;
|
||||
|
||||
HIThemeDrawButton(&cr, &bdi, cg, kHIThemeOrientationNormal, 0);
|
||||
|
|
|
|||
|
|
@ -296,9 +296,9 @@ LAYOUT(OutputModeLayout, 672, 480)
|
|||
ITEM(LabelBox, dv___8, SetLabel(t_("Export project")).LeftPosZ(8, 656).TopPosZ(392, 48))
|
||||
ITEM(Label, dv___9, SetLabel(t_("To directory")).LeftPosZ(12, 68).TopPosZ(408, 21))
|
||||
ITEM(EditString, export_dir, LeftPosZ(80, 368).TopPosZ(409, 19))
|
||||
ITEM(Button, export_used, SetLabel(t_("Used")).LeftPosZ(456, 64).TopPosZ(404, 24))
|
||||
ITEM(Button, export_all, SetLabel(t_("All")).LeftPosZ(524, 64).TopPosZ(404, 24))
|
||||
ITEM(Button, export_makefile, SetLabel(t_("Makefile")).LeftPosZ(592, 64).TopPosZ(404, 24))
|
||||
ITEM(Button, export_used, SetLabel(t_("Used")).LeftPosZ(456, 64).TopPosZ(407, 24))
|
||||
ITEM(Button, export_all, SetLabel(t_("All")).LeftPosZ(524, 64).TopPosZ(407, 24))
|
||||
ITEM(Button, export_makefile, SetLabel(t_("Makefile")).LeftPosZ(592, 64).TopPosZ(407, 24))
|
||||
ITEM(Button, reset_blitz, SetLabel(t_("Reset BLITZ")).LeftPosZ(8, 88).TopPosZ(448, 24))
|
||||
ITEM(Button, cmd_options, SetLabel(t_("Command line &options..")).LeftPosZ(100, 140).TopPosZ(448, 24))
|
||||
ITEM(Button, ok, SetLabel(t_("OK")).LeftPosZ(532, 64).TopPosZ(448, 24))
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue