From 142bdd60c3cec32f856cd1c8304bf5aa0077d38c Mon Sep 17 00:00:00 2001 From: cxl Date: Sat, 16 May 2009 07:36:55 +0000 Subject: [PATCH] theide: Laydes: Resize layout with/without springs option git-svn-id: svn://ultimatepp.org/upp/trunk@1190 f0d560ea-af0d-0410-9eb7-867de7ffcac7 --- uppsrc/ide/LayDes/LayDes.h | 2 ++ uppsrc/ide/LayDes/LayDes.iml | 33 +++++++++++++++++++-------------- uppsrc/ide/LayDes/laydes.cpp | 11 ++++++++++- uppsrc/ide/LayDes/laywin.cpp | 13 ++++++++++++- 4 files changed, 43 insertions(+), 16 deletions(-) diff --git a/uppsrc/ide/LayDes/LayDes.h b/uppsrc/ide/LayDes/LayDes.h index 7517d541c..e8acd3e49 100644 --- a/uppsrc/ide/LayDes/LayDes.h +++ b/uppsrc/ide/LayDes/LayDes.h @@ -314,6 +314,7 @@ private: bool usegrid; bool ignoreminsize; + bool sizespring; WithMatrixLayout matrix; WithSettingLayout setting; @@ -392,6 +393,7 @@ private: void ToggleGrid(); void ToggleMinSize(); + void ToggleSizeSpring(); void Settings(); enum Code { diff --git a/uppsrc/ide/LayDes/LayDes.iml b/uppsrc/ide/LayDes/LayDes.iml index 9859b1bfa..ec7f917f3 100644 --- a/uppsrc/ide/LayDes/LayDes.iml +++ b/uppsrc/ide/LayDes/LayDes.iml @@ -1,3 +1,4 @@ +PREMULTIPLIED IMAGE_ID(CrossCursor) IMAGE_ID(RwIconSmall) IMAGE_ID(RwIconLarge) @@ -27,6 +28,7 @@ IMAGE_ID(SpringVCenter) IMAGE_ID(SpringBottom) IMAGE_ID(SpringTopLeft) IMAGE_ID(SpringAuto) +IMAGE_ID(SizeSpring) IMAGE_ID(Duplicate) IMAGE_ID(MoveUp) IMAGE_ID(MoveDown) @@ -89,17 +91,20 @@ IMAGE_DATA(142,106,237,91,227,151,226,154,167,132,95,222,23,236,181,0,0,0,0,0,0, IMAGE_END_DATA(608, 16) IMAGE_BEGIN_DATA -IMAGE_DATA(120,156,205,151,221,118,195,32,8,128,189,223,46,250,200,62,90,222,140,105,87,22,163,128,252,184,68,118,56,166,212,15) -IMAGE_DATA(4,140,117,233,149,94,9,32,173,20,80,42,203,31,199,33,170,134,47,67,136,151,124,88,214,79,249,152,241,105,168,211) -IMAGE_DATA(95,135,52,245,227,220,46,232,178,203,7,147,203,144,19,203,143,245,131,75,93,45,60,178,94,62,186,31,60,188,82,227) -IMAGE_DATA(18,59,12,34,27,12,155,18,97,87,248,192,231,95,201,57,67,171,181,89,189,237,234,35,194,247,126,226,188,191,22,103) -IMAGE_DATA(252,106,104,199,222,54,137,127,217,164,13,67,28,10,100,255,196,216,116,254,235,196,87,255,125,248,144,172,190,25,244,11) -IMAGE_DATA(167,116,103,126,129,68,55,115,232,101,90,240,50,59,132,63,204,116,245,127,138,31,15,115,91,206,94,126,245,143,153,87) -IMAGE_DATA(58,254,31,254,77,88,33,218,171,17,119,69,130,60,86,124,208,44,240,48,241,129,223,73,60,231,163,181,205,248,126,126) -IMAGE_DATA(239,79,195,35,71,173,229,14,62,178,254,72,253,40,86,219,63,137,213,236,31,163,238,33,223,229,239,230,195,64,124,137) -IMAGE_DATA(5,230,78,251,172,81,160,120,246,206,167,98,239,183,113,40,121,96,51,85,177,68,4,102,212,250,110,155,64,249,160,230) -IMAGE_DATA(115,177,103,243,165,207,146,175,136,143,125,100,118,77,201,217,190,112,100,234,88,124,67,251,89,195,34,195,61,91,124,244) -IMAGE_DATA(163,134,69,237,115,105,237,82,92,212,62,126,107,183,196,175,210,218,115,202,111,245,228,255,246,85,88,28,37,150,125,254) -IMAGE_DATA(196,231,214,64,245,31,115,104,69,202,225,186,30,24,175,9,90,254,147,43,37,38,254,193,248,146,206,120,147,124,149,95) -IMAGE_DATA(150,51,240,121,55,181,40,157,168,110,30,55,159,178,75,190,119,152,103,157,235,169,241,157,107,248,1,235,46,32,105,0) -IMAGE_END_DATA(416, 8) +IMAGE_DATA(120,156,205,151,91,118,196,32,8,134,125,111,31,102,199,101,105,179,51,27,211,48,49,10,8,66,19,255,30,142,137,245) +IMAGE_DATA(3,241,22,39,189,210,43,229,159,116,8,178,223,174,130,148,186,58,90,225,124,38,204,196,215,66,30,152,18,249,242,126) +IMAGE_DATA(212,77,241,222,248,129,249,83,18,124,158,60,223,71,58,39,15,15,159,241,142,139,239,205,127,36,32,231,34,138,119,216) +IMAGE_DATA(126,24,40,183,155,82,212,128,89,22,102,126,191,223,162,105,248,50,239,30,94,242,97,233,63,229,99,196,167,110,156,62) +IMAGE_DATA(51,164,220,216,164,219,128,89,158,242,193,228,210,229,196,242,253,248,229,203,184,90,120,100,103,121,239,122,152,225,149,230) +IMAGE_DATA(151,239,48,240,44,48,156,20,15,27,225,3,159,255,4,176,125,221,43,43,147,213,214,93,125,120,248,214,143,159,159,31) +IMAGE_DATA(139,51,126,169,168,203,182,110,16,255,178,72,43,134,56,20,200,249,19,99,211,249,199,105,110,252,215,225,93,138,190,25) +IMAGE_DATA(180,29,167,108,101,62,64,222,197,236,218,76,1,155,121,66,252,97,166,27,255,167,248,254,48,183,229,60,203,71,127,204) +IMAGE_DATA(102,213,240,255,240,51,33,66,218,171,17,119,69,218,127,71,230,129,129,192,231,129,15,252,159,196,115,62,234,186,17,223) +IMAGE_DATA(182,111,253,105,120,228,168,190,220,193,123,250,239,25,63,138,213,206,159,196,106,214,143,209,214,208,247,246,119,243,97,32) +IMAGE_DATA(110,98,129,185,179,126,52,81,89,241,60,219,158,138,189,222,194,161,244,192,98,42,178,68,204,76,169,245,93,79,2,229) +IMAGE_DATA(131,106,207,197,30,181,151,222,37,95,30,31,235,104,116,77,1,176,119,28,153,82,110,190,115,253,174,97,145,225,158,45) +IMAGE_DATA(62,218,82,195,162,181,185,212,245,82,92,180,54,126,93,111,137,95,84,215,67,130,221,102,242,223,125,109,44,150,18,203) +IMAGE_DATA(62,31,241,185,62,80,243,143,57,212,146,114,184,246,39,247,215,4,45,127,228,74,201,196,63,24,95,178,17,111,210,215) +IMAGE_DATA(246,101,57,3,159,119,83,139,209,137,234,218,113,237,169,122,201,247,10,237,172,109,103,198,248,206,62,252,2,158,162,10) +IMAGE_DATA(88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0) +IMAGE_END_DATA(512, 9) diff --git a/uppsrc/ide/LayDes/laydes.cpp b/uppsrc/ide/LayDes/laydes.cpp index 7c626f6e6..a23e1b277 100644 --- a/uppsrc/ide/LayDes/laydes.cpp +++ b/uppsrc/ide/LayDes/laydes.cpp @@ -649,10 +649,19 @@ void LayDes::MouseMove(Point p, dword keyflags) } p -= dragbase; if(draghandle < 3) { + Vector r; + r.SetCount(l.item.GetCount()); + for(int i = 0; i < l.item.GetCount(); i++) + r[i] = CtrlRect(l.item[i].pos, l.size); if((draghandle + 1) & 1) l.size.cx = max(0, draglayoutsize.cx + p.x) / gx * gx; if((draghandle + 1) & 2) l.size.cy = max(0, draglayoutsize.cy + p.y) / gy * gy; + if(!sizespring) + for(int i = 0; i < l.item.GetCount(); i++) { + LayoutItem& m = l.item[i]; + m.pos = MakeLogPos(m.pos, r[i], l.size); + } SetStatus(true); SetSb(); Sync(); @@ -681,7 +690,7 @@ void LayDes::MouseMove(Point p, dword keyflags) if(draghandle == 5 || draghandle == 7 || draghandle == 10) r.right = max(r.left + minsize.cx, (r.right + p.x) / gy * gy); if(draghandle == 12) { - Size sz = r.Size(); + Size sz = r.GetSize(); if(i == 0) { Rect q = r; r.left = (r.left + p.x) / gx * gx; diff --git a/uppsrc/ide/LayDes/laywin.cpp b/uppsrc/ide/LayDes/laywin.cpp index 53d44f41a..f70788718 100644 --- a/uppsrc/ide/LayDes/laywin.cpp +++ b/uppsrc/ide/LayDes/laywin.cpp @@ -144,6 +144,12 @@ void LayDes::ToggleMinSize() SetBar(); } +void LayDes::ToggleSizeSpring() +{ + sizespring = !sizespring; + SetBar(); +} + void LayDes::Settings() { setting.Execute(); @@ -157,6 +163,8 @@ void LayDes::OptionBar(Bar& bar) .Check(usegrid); bar.Add("Ignore min size", LayImg::MinSize(), THISBACK(ToggleMinSize)) .Check(ignoreminsize); + bar.Add("Resize with springs", LayImg::SizeSpring(), THISBACK(ToggleSizeSpring)) + .Check(sizespring); bar.Add("Settings..", THISBACK(Settings)); } @@ -215,11 +223,13 @@ class CVFrame : public CtrlFrame { void LayDes::Serialize(Stream& s) { - int version = 0; + int version = 1; s / version; s % setting.gridx % setting.gridy; s % setting.paintgrid % setting.showicons; s % ignoreminsize % usegrid; + if(version >= 1) + s % sizespring; s % lsplit % isplit % rsplit; item.SerializeHeader(s); SetBar(); @@ -244,6 +254,7 @@ LayDes::LayDes() usegrid = true; ignoreminsize = false; + sizespring = false; SetBar();