From 09780dd2efa0039f1c22f6477d4e0b4298a35d65 Mon Sep 17 00:00:00 2001 From: koldo Date: Wed, 23 Dec 2015 15:29:08 +0000 Subject: [PATCH] GrabYourScreen: Improved and included basic doc git-svn-id: svn://ultimatepp.org/upp/trunk@9325 f0d560ea-af0d-0410-9eb7-867de7ffcac7 --- bazaar/GrabYourScreen/GrabBook.cpp | 12 +-- bazaar/GrabYourScreen/GrabScreen.cpp | 76 +++++++++++------- bazaar/GrabYourScreen/GrabYourScreen.h | 14 +++- bazaar/GrabYourScreen/GrabYourScreen.lay | 19 ++--- bazaar/GrabYourScreen/GrabYourScreen.upp | 3 +- bazaar/GrabYourScreen/icon.ico | Bin 2862 -> 2862 bytes bazaar/GrabYourScreen/main.cpp | 21 +++-- .../srcdoc.tpp/GarbYourScreen$en-us.tpp | 34 ++++++++ 8 files changed, 122 insertions(+), 57 deletions(-) create mode 100644 bazaar/GrabYourScreen/srcdoc.tpp/GarbYourScreen$en-us.tpp diff --git a/bazaar/GrabYourScreen/GrabBook.cpp b/bazaar/GrabYourScreen/GrabBook.cpp index ecfe3aa11..4877a145b 100644 --- a/bazaar/GrabYourScreen/GrabBook.cpp +++ b/bazaar/GrabYourScreen/GrabBook.cpp @@ -13,7 +13,7 @@ void GrabBook::Init() { down <<= 900; split = true; - folder = AppendFileName(GetDesktopFolder(), "Libro"); + folder = AppendFileName(GetDesktopFolder(), t_("Book")); canvas.SetShowWindow(false); @@ -47,7 +47,7 @@ void GrabBook::OnCapture() { Rect screenRect; ::GetWindowRect(GetHWND(), screenRect); if (rPdf.Intersects(screenRect)) { - Exclamation("Ventana del programa interfiere con imagen a tomar"); + Exclamation(t_("Program window interferes with image")); return; } @@ -56,8 +56,8 @@ void GrabBook::OnCapture() { if (!DirectoryExists(folder)) RealizeDirectory(folder); Image img = ::GetRect(canvas.GetBackground(), Rect(left, up, right, down)); - if (!SaveImage(img, 100, AppendFileName(folder, Format("Pag%04d.jpg", int(actualPage))), ".jpg")) - Exclamation("Error saving image"); + if (!SaveImage(img, 100, AppendFileName(folder, Format("%s.jpg", Format(t_("Pag%04d"), int(actualPage)))))) + Exclamation(t_("Error saving image")); actualPage = actualPage + 1; } @@ -80,7 +80,7 @@ void GrabBook::OnSavePDF() { FileSel fs; fs.ActiveDir(GetDesktopFolder()); - fs.Type("Ficheros PDF", ".pdf"); + fs.Type(t_("PDF files"), ".pdf"); if (fs.ExecuteSaveAs(t_("Saving file"))) fileName = ~fs; @@ -96,7 +96,7 @@ void GrabBook::OnSavePDF() { if (i > 0) r.NewPage(); - String fileName = AppendFileName(folder, Format("Pag%04d.jpg", i)); + String fileName = AppendFileName(folder, Format("%s.jpg", Format(t_("Pag%04d"), i))); Image img = StreamRaster::LoadFileAny(fileName); Image imgIzq, imgDer; if (split) { diff --git a/bazaar/GrabYourScreen/GrabScreen.cpp b/bazaar/GrabYourScreen/GrabScreen.cpp index f9c896d39..512b013b6 100644 --- a/bazaar/GrabYourScreen/GrabScreen.cpp +++ b/bazaar/GrabYourScreen/GrabScreen.cpp @@ -1,5 +1,7 @@ #include "GrabYourScreen.h" +#include + GrabScreen::GrabScreen() { CtrlLayout(*this); } @@ -7,6 +9,7 @@ GrabScreen::GrabScreen() { void GrabScreen::Init(GrabYourScreen &_program) { program = &_program; editFileNameGrab <<= AppendFileName(GetDesktopFolder(), "ScreenGrab.avi"); + editFileNameGrab.Type(t_("Video file"), ".avi"); editTime <<= 5; editFrameRate <<= 1; opGrabMouse <<= true; @@ -37,24 +40,27 @@ void GrabScreen::Init(GrabYourScreen &_program) { height.Hide(); #endif + editLeft <<= 100; + editWidth <<= 1000; + editTop <<= 100; + editHeight <<= 900; + String extension; -#if defined(PLATFORM_WIN32) - extension = "bmp"; -#else - extension = "xwd"; -#endif - editFileNameSnap <<= AppendFileName(GetDesktopFolder(), "ScreenSnap." + extension); + editFileNameSnap <<= AppendFileName(GetDesktopFolder(), "ScreenSnap.jpg"); + editFileNameSnap.Type(t_("Image file"), ".jpg"); butSnap.WhenPush = THISBACK(ButSnap_Push); Array hWnd, processId; Array name, fileName, caption; - GetWindowsList(hWnd, processId, name, fileName, caption); + GetWindowsList(hWnd, processId, name, fileName, caption, false); Sort(caption); for (int i = 0; i < caption.GetCount(); ++i) { if (!Trim(caption[i]).IsEmpty()) editWindowTitle.Add(caption[i]); } editWindowTitle.SetData(editWindowTitle.GetValue(0)); + + SetTimeCallback(-1000, THISBACK(Timer)); } void GrabScreen::SwGrabMode_Action() { @@ -102,41 +108,49 @@ void GrabScreen::ButGrab_Push() { } void GrabScreen::ButSnap_Push() { - program->Minimize(); +/* program->Minimize(); TopWindow win; Button b; b.SetLabel("CLOSE"); b <<= win.Breaker(); - StaticImage image; - image.Set(Snap_Desktop()); - win.Add(image.SizePos()); + StaticImage desktop; + desktop.Set(Snap_Desktop()); + win.Add(desktop.SizePos()); win.Add(b.LeftPos(10, 100).TopPos(10, 30)); win.FullScreen().Run(); program->Overlap(); - return; +*/ + String fileName = ~editFileNameSnap; + FileDelete(fileName); + String ext = GetFileExt(fileName); - - FileDelete(editFileNameSnap.GetData().ToString()); - - if (swGrabMode.GetData() == 0) - Snap_Desktop(editFileNameSnap); - else if (swGrabMode.GetData() == 1) - Snap_Window(editFileNameSnap, GetWindowIdFromCaption(~editWindowTitle, false)); - else if (swGrabMode.GetData() == 2) - Snap_DesktopRectangle(editFileNameSnap, editLeft, editTop, editWidth, editHeight); - else - throw Exc("Unexpected value"); + if (ext == ".png") { + PNGEncoder encoder; + if (!encoder.SaveFile(fileName, canvasImage)) + Exclamation(Format(t_("Impossible to save %s"), fileName)); + } else if (ext == ".jpg") { + JPGEncoder encoder(90); + if (!encoder.SaveFile(fileName, canvasImage)) + Exclamation(Format(t_("Impossible to save %s"), fileName)); + } else + Exclamation(Format(t_("File format \"%s\" not found"), ext)); } -/* -A añadir: -- Listado de ventanas en Window Title -- Pantalla completa para seleccionar. Meterlo en Controls4U -- Jsonize para todos -- Que deje salir si un campo está vacio -- Ficheros con EditFile -*/ +void GrabScreen::Timer() { + NON_REENTRANT_V; + + switch(int(~swGrabMode)) { + case 0: canvasImage = Snap_Desktop(); + break; + case 1: canvasImage = Snap_Window(GetWindowIdFromCaption(~editWindowTitle, false)); + break; + case 2: canvasImage = Snap_DesktopRectangle(editLeft, editTop, editWidth, editHeight); + break; + } + + canvas.SetBackground(canvasImage); +} \ No newline at end of file diff --git a/bazaar/GrabYourScreen/GrabYourScreen.h b/bazaar/GrabYourScreen/GrabYourScreen.h index 03c0e1953..017055ab6 100644 --- a/bazaar/GrabYourScreen/GrabYourScreen.h +++ b/bazaar/GrabYourScreen/GrabYourScreen.h @@ -20,12 +20,15 @@ public: GrabScreen(); void Init(GrabYourScreen &program); + +private: void ButGrab_Push(); void ButSnap_Push(); void SwGrabMode_Action(); - -private: + void Timer(); + GrabYourScreen *program; + Image canvasImage; }; class GrabBook : public WithBook { @@ -33,8 +36,10 @@ public: typedef GrabBook CLASSNAME; GrabBook(); ~GrabBook(); - + void Init(); + +private: void OnPaint(Painter &painter); void OnReset(); void OnCapture(); @@ -49,7 +54,10 @@ class GrabYourScreen : public TopWindow { public: typedef GrabYourScreen CLASSNAME; GrabYourScreen(); + void Init(); + +private: void Exit(); TabCtrl mainTab; diff --git a/bazaar/GrabYourScreen/GrabYourScreen.lay b/bazaar/GrabYourScreen/GrabYourScreen.lay index 4cfee8d04..0376e40ac 100644 --- a/bazaar/GrabYourScreen/GrabYourScreen.lay +++ b/bazaar/GrabYourScreen/GrabYourScreen.lay @@ -18,7 +18,7 @@ LAYOUT(Book, 368, 292) ITEM(Option, split, SetLabel(t_("Split in two")).RightPosZ(4, 84).TopPosZ(136, 16)) END_LAYOUT -LAYOUT(Screen, 464, 204) +LAYOUT(Screen, 464, 352) ITEM(LabelBox, dv___0, SetLabel(t_("Image Snapshot")).LeftPosZ(8, 452).TopPosZ(68, 40)) ITEM(LabelBox, dv___1, SetLabel(t_("Video Grab")).LeftPosZ(8, 452).TopPosZ(4, 60)) ITEM(LabelBox, dv___2, SetLabel(t_("Mode")).LeftPosZ(8, 452).TopPosZ(112, 84)) @@ -26,18 +26,18 @@ LAYOUT(Screen, 464, 204) ITEM(Label, top, SetLabel(t_("Top:")).LeftPosZ(176, 24).TopPosZ(168, 19)) ITEM(Label, width, SetLabel(t_("Width:")).LeftPosZ(256, 36).TopPosZ(168, 19)) ITEM(Label, height, SetLabel(t_("Height:")).LeftPosZ(348, 40).TopPosZ(168, 19)) - ITEM(EditString, editFileNameSnap, NotNull(true).LeftPosZ(72, 316).TopPosZ(84, 19)) - ITEM(EditString, editFileNameGrab, NotNull(true).LeftPosZ(72, 316).TopPosZ(20, 19)) + ITEM(EditFile, editFileNameSnap, LeftPosZ(72, 316).TopPosZ(84, 19)) + ITEM(EditFile, editFileNameGrab, LeftPosZ(72, 316).TopPosZ(20, 19)) ITEM(EditIntNotNull, editTime, Min(1).LeftPosZ(72, 32).TopPosZ(40, 19)) ITEM(EditDoubleNotNull, editFrameRate, LeftPosZ(196, 24).TopPosZ(40, 19)) ITEM(Option, opGrabMouse, SetLabel(t_("Grab mouse")).LeftPosZ(288, 76).TopPosZ(44, 16)) ITEM(Switch, swGrabMode, LeftPosZ(16, 80).TopPosZ(128, 64)) - ITEM(EditInt, editLeft, Min(0).LeftPosZ(120, 44).TopPosZ(168, 19)) - ITEM(EditInt, editTop, Min(0).LeftPosZ(200, 44).TopPosZ(168, 19)) - ITEM(EditInt, editWidth, Min(0).LeftPosZ(292, 44).TopPosZ(168, 19)) - ITEM(EditInt, editHeight, Min(0).LeftPosZ(388, 44).TopPosZ(168, 19)) + ITEM(EditIntSpin, editLeft, Min(0).LeftPosZ(120, 48).TopPosZ(168, 19)) + ITEM(EditIntSpin, editTop, Min(0).LeftPosZ(200, 48).TopPosZ(168, 19)) + ITEM(EditIntSpin, editWidth, Min(0).LeftPosZ(292, 48).TopPosZ(168, 19)) + ITEM(EditIntSpin, editHeight, Min(0).LeftPosZ(388, 48).TopPosZ(168, 19)) ITEM(Label, left, SetLabel(t_("Left:")).LeftPosZ(96, 24).TopPosZ(168, 19)) - ITEM(Label, dv___18, SetLabel(t_("Window Title:")).LeftPosZ(96, 64).TopPosZ(148, 19)) + ITEM(Label, dv___18, SetLabel(t_("Window Title:")).LeftPosZ(96, 76).TopPosZ(148, 19)) ITEM(Label, dv___19, SetLabel(t_("File Name:")).LeftPosZ(16, 52).TopPosZ(84, 19)) ITEM(Label, dv___20, SetLabel(t_("File Name:")).LeftPosZ(16, 52).TopPosZ(20, 19)) ITEM(Button, butSnap, SetLabel(t_("Snap it!")).LeftPosZ(392, 56).TopPosZ(84, 20)) @@ -45,6 +45,7 @@ LAYOUT(Screen, 464, 204) ITEM(Label, dv___23, SetLabel(t_("Frame rate:")).LeftPosZ(140, 56).TopPosZ(40, 19)) ITEM(Label, dv___24, SetLabel(t_("sec")).LeftPosZ(104, 24).TopPosZ(40, 19)) ITEM(Label, dv___25, SetLabel(t_("Time:")).LeftPosZ(16, 52).TopPosZ(40, 19)) - ITEM(DropList, editWindowTitle, LeftPosZ(164, 268).TopPosZ(148, 19)) + ITEM(DropList, editWindowTitle, LeftPosZ(172, 264).TopPosZ(148, 19)) + ITEM(PainterCanvas, canvas, SetShowWindow(false).SetFrame(ThinInsetFrame()).HSizePosZ(4, 4).VSizePosZ(200, 4)) END_LAYOUT diff --git a/bazaar/GrabYourScreen/GrabYourScreen.upp b/bazaar/GrabYourScreen/GrabYourScreen.upp index a559cfed0..e8ef686d2 100644 --- a/bazaar/GrabYourScreen/GrabYourScreen.upp +++ b/bazaar/GrabYourScreen/GrabYourScreen.upp @@ -13,7 +13,8 @@ file GrabYourScreen.h, GrabYourScreen.lay, iml.iml, - rc.rc; + rc.rc, + srcdoc.tpp; mainconfig "" = "GUI SSE2"; diff --git a/bazaar/GrabYourScreen/icon.ico b/bazaar/GrabYourScreen/icon.ico index 00a334da6f93e2eb94f508acf31fea90c4f45b0c..9e1f1b623a25b919fd892a590f729b2d33ff6b4c 100644 GIT binary patch delta 835 zcmZ9KO={gh5QIB_nPlan0&L3U7I7nEedth|JBT3D8vHMUT$jtoVCvM{XZ!oi^W0usT$~+P ytj~u}FE_qv^U>pn`Rnh^x81UP_uNn3zTxrL>)+4s{o}^nPc9#;fBZc9^6U>E4Wh9C delta 798 zcmaKqPe{{Y9LAsi(V{L!NCh1Vq7GetCuM+wmGq=Uqp1P)6?_*Hm|+#<$Yh?_xt=l&-4BQ<$?0x*L}Vl ztU*nt9`(JQ=uEbwJ=un~WCuEOgBauh2B`I)E_CrB9;oi~8J;kOS*O0?3meeD00P{` z7Bg7pGM2cg^BKgLz&p+&!6ar>(_F<0ThYQ%-G8G>`E;=njU2%UH}RP-aQVNLMVbQS z7(x=CIBPu5%7veaO$XQe`!-;GUzK!J;w5afDSN`qG$Zi-@K$#XL3y za*dyGOVrJr$89;e!zHxpLw8F8DVj9SqnZ_{knn;76i1u|^@nklAJN2VK^1kpC7l+h ze@zB@(8H&A&MT<(DY7Ebj3O!^#}MlHUWt6bO~u!w7(I%v*>PpkSyzO9If`Ob&~MdW z1e#M4TgWqrT4|W7<7>efAY;lTWBNCcVL$rWi(Yoa*R7a}L@5dV#xF<22pO1yo@7(5 z@`~2Po5LD^;s?#Y5yu2$7-v>*Zh#iB@YiT)7I0GV37y9{iAm>qB8Uhs$YBg~2t#~~ zK0Z3AM&rm3`D>1xbHjZ}7q{~Quwg5@X~h^X{Y+6s8