From 70326b65a44d7a1b1bda5a998a2f00335af8854c Mon Sep 17 00:00:00 2001 From: Vadim Lopatin <coolreader.org@gmail.com> Date: Thu, 29 Jan 2015 11:54:13 +0300 Subject: [PATCH] update builder --- src/dlangide/builders/extprocess.d | 19 ++++++++++++++++--- src/dlangide/ui/commands.d | 4 ++-- src/dlangide/ui/frame.d | 12 ++++-------- src/dlangide/workspace/workspace.d | 12 ++++++++++++ views/res/mdpi/configure.png | Bin 0 -> 606 bytes views/res/mdpi/run-build-clean.png | Bin 0 -> 865 bytes views/res/mdpi/run-build-configure.png | Bin 0 -> 803 bytes views/res/mdpi/run-build.png | Bin 0 -> 759 bytes views/resources.list | 3 +++ 9 files changed, 37 insertions(+), 13 deletions(-) create mode 100644 views/res/mdpi/configure.png create mode 100644 views/res/mdpi/run-build-clean.png create mode 100644 views/res/mdpi/run-build-configure.png create mode 100644 views/res/mdpi/run-build.png diff --git a/src/dlangide/builders/extprocess.d b/src/dlangide/builders/extprocess.d index 4cccd2d..24eaf02 100644 --- a/src/dlangide/builders/extprocess.d +++ b/src/dlangide/builders/extprocess.d @@ -236,6 +236,7 @@ class ExternalProcess { } ExternalProcessState run(char[] program, char[][]args, char[] dir, TextWriter stdoutTarget, TextWriter stderrTarget = null) { + Log.d("ExternalProcess.run ", program, " ", args); _state = ExternalProcessState.None; _program = program; _args = args; @@ -272,29 +273,39 @@ class ExternalProcess { } protected void waitForReadingCompletion() { + Log.d("waitForReadingCompletion - closing stdin"); try { _pipes.stdin.close(); } catch (Exception e) { Log.e("Cannot close stdin for ", _program, " ", e); } + Log.d("waitForReadingCompletion - closed stdin"); try { - if (_stdoutReader && !_stdoutReader.finished) + if (_stdoutReader && !_stdoutReader.finished) { + Log.d("waitForReadingCompletion - waiting for stdout"); _stdoutReader.join(false); + Log.d("waitForReadingCompletion - joined stdout"); + } _stdoutReader = null; } catch (Exception e) { Log.e("Exception while waiting for stdout reading completion for ", _program, " ", e); } try { - if (_stderrReader && !_stderrReader.finished) + if (_stderrReader && !_stderrReader.finished) { + Log.d("waitForReadingCompletion - waiting for stderr"); _stderrReader.join(false); - _stderrReader = null; + _stderrReader = null; + Log.d("waitForReadingCompletion - joined stderr"); + } } catch (Exception e) { Log.e("Exception while waiting for stderr reading completion for ", _program, " ", e); } + Log.d("waitForReadingCompletion - done"); } /// polls all available output from process streams ExternalProcessState poll() { + Log.d("ExternalProcess.poll"); bool res = true; if (_state == ExternalProcessState.Error || _state == ExternalProcessState.None || _state == ExternalProcessState.Stopped) return _state; @@ -315,6 +326,7 @@ class ExternalProcess { /// waits until termination ExternalProcessState wait() { + Log.d("ExternalProcess.wait"); if (_state == ExternalProcessState.Error || _state == ExternalProcessState.None || _state == ExternalProcessState.Stopped) return _state; try { @@ -330,6 +342,7 @@ class ExternalProcess { /// request process stop ExternalProcessState kill() { + Log.d("ExternalProcess.kill"); if (_state == ExternalProcessState.Error || _state == ExternalProcessState.None || _state == ExternalProcessState.Stopped) return _state; if (_state == ExternalProcessState.Running) { diff --git a/src/dlangide/ui/commands.d b/src/dlangide/ui/commands.d index 13c0ac2..c68952f 100644 --- a/src/dlangide/ui/commands.d +++ b/src/dlangide/ui/commands.d @@ -47,8 +47,8 @@ const Action ACTION_FILE_EXIT = new Action(IDEActions.FileExit, "MENU_FILE_EXIT" const Action ACTION_WORKSPACE_BUILD = new Action(IDEActions.BuildWorkspace, "MENU_BUILD_WORKSPACE_BUILD"c); const Action ACTION_WORKSPACE_REBUILD = new Action(IDEActions.RebuildWorkspace, "MENU_BUILD_WORKSPACE_REBUILD"c); const Action ACTION_WORKSPACE_CLEAN = new Action(IDEActions.CleanWorkspace, "MENU_BUILD_WORKSPACE_CLEAN"c); -const Action ACTION_PROJECT_BUILD = new Action(IDEActions.BuildProject, "MENU_BUILD_PROJECT_BUILD"c, null, KeyCode.F7, 0); -const Action ACTION_PROJECT_REBUILD = new Action(IDEActions.RebuildProject, "MENU_BUILD_PROJECT_REBUILD"c, null, KeyCode.F7, KeyFlag.Control); +const Action ACTION_PROJECT_BUILD = new Action(IDEActions.BuildProject, "MENU_BUILD_PROJECT_BUILD"c, "run-build", KeyCode.F7, 0); +const Action ACTION_PROJECT_REBUILD = new Action(IDEActions.RebuildProject, "MENU_BUILD_PROJECT_REBUILD"c, "run-build-clean", KeyCode.F7, KeyFlag.Control); const Action ACTION_PROJECT_CLEAN = new Action(IDEActions.CleanProject, "MENU_BUILD_PROJECT_CLEAN"c, null); const Action ACTION_PROJECT_SET_STARTUP = new Action(IDEActions.SetStartupProject, "MENU_PROJECT_SET_AS_STARTUP"c, null); const Action ACTION_PROJECT_SETTINGS = new Action(IDEActions.ProjectSettings, "MENU_PROJECT_SETTINGS"c, null); diff --git a/src/dlangide/ui/frame.d b/src/dlangide/ui/frame.d index 7bc17cd..3faa8ac 100644 --- a/src/dlangide/ui/frame.d +++ b/src/dlangide/ui/frame.d @@ -147,7 +147,7 @@ class IDEFrame : AppFrame { TabItem tab = _tabs.tab(index); ProjectSourceFile file = cast(ProjectSourceFile)tab.objectParam; if (file) { - setCurrentProject(file.project); + //setCurrentProject(file.project); // tab is source file editor _wsPanel.selectItem(file); focusEditor(file.filename); @@ -341,6 +341,7 @@ class IDEFrame : AppFrame { tb.addButtons(ACTION_DEBUG_START); ToolBarComboBox cbBuildConfiguration = new ToolBarComboBox("buildConfig", ["Debug"d, "Release"d, "Unittest"d]); tb.addControl(cbBuildConfiguration); + tb.addButtons(ACTION_PROJECT_BUILD); tb = res.getOrAddToolbar("Edit"); tb.addButtons(ACTION_EDIT_COPY, ACTION_EDIT_PASTE, ACTION_EDIT_CUT, ACTION_SEPARATOR, @@ -474,15 +475,10 @@ class IDEFrame : AppFrame { _wsPanel.workspace = ws; } - Project currentProject; - void setCurrentProject(Project project) { - currentProject = project; - } - void buildProject() { - if (!currentProject) + if (!currentWorkspace || !currentWorkspace.startupProject) return; - Builder op = new Builder(this, currentProject, _logPanel); + Builder op = new Builder(this, currentWorkspace.startupProject, _logPanel); setBackgroundOperation(op); } } diff --git a/src/dlangide/workspace/workspace.d b/src/dlangide/workspace/workspace.d index 7067a94..9727b54 100644 --- a/src/dlangide/workspace/workspace.d +++ b/src/dlangide/workspace/workspace.d @@ -38,6 +38,16 @@ class Workspace : WorkspaceItem { return _projects; } + protected Project _startupProject; + + @property Project startupProject() { return _startupProject; } + @property void startupProject(Project project) { _startupProject = project; } + + protected void fillStartupProject() { + if (!_startupProject && _projects.length) + _startupProject = _projects[0]; + } + /// tries to find source file in one of projects, returns found project source file item, or null if not found ProjectSourceFile findSourceFileItem(string filename) { foreach (Project p; _projects) { @@ -60,6 +70,7 @@ class Workspace : WorkspaceItem { void addProject(Project p) { _projects ~= p; p.workspace = this; + fillStartupProject(); } string absoluteToRelativePath(string path) { @@ -130,6 +141,7 @@ class Workspace : WorkspaceItem { Log.e("Cannot read workspace file", e); return false; } + fillStartupProject(); return true; } void close() { diff --git a/views/res/mdpi/configure.png b/views/res/mdpi/configure.png new file mode 100644 index 0000000000000000000000000000000000000000..0c2f5eae94f95a896ddcada9b8ef5ed499dda8f6 GIT binary patch literal 606 zcmV-k0-^nhP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV0006dNkl<ZcmZP| z227kd!R-9`b6d`yJM(n^fxXvOtzOZZm7UH*l;+^DVEy~|?|uFE@8AEo@815OHht>v zsOZRZ7MAAbL>Z7@kT><^s~7*jfB*LX$dSWefkIwD%nihh#OP-M8gLHi^#30}e)xa& z>a|a7Y;1xI!~$&{Ey)E7=lz;FYsUW%Km$H}c>jOyyg7@rvom<NY~8HiKcTM&uK}%X zEeS`D9sXZbT=c)9s`~${S1<qX-M{C5M@Rd+Teoli&&kcXf=@s5j-A^Nw6?eZuc)s1 zZ)NZJf9K9!|8L#8`G5NKssA@`-SkI5Kp+#VP7zTNrd_*tc6|Qy@&CR1cmLZsIQ`Gc z$@#x=^QQlI@7?)dQBnRwSXj6hsFV{!b4F%5&w&H`R~<ci<p0*KTmS$0^ZWnKT|2+| z2l!uibg*A9C@5G9ROSf8Y?yv-ZBpF5d*_82Gp7BwvbOqv=<uQcOP4M=29&Y}VgXRB z;Ph}qQ@zWEjq6_L=H>hsmk|Fyb=s8w8#isd43ttN6kAMn4K;;}mMr)c5gGoUkB{$v zYI^E_U^Kmyl$5X_7}ss>&1ExYP5U1m9ra&ZTl;@dNYMXv8&-ceGc%1ODz(j>H|ySn zNj?8V!@~Y2r6m4eymaATFE7sqsDB9qpoZNOCiniIIJxit%-K`_g@gvr1PXHzom@M+ sJ5)Nm+xFJfRbCAY@&`o`4+9AR0Ht>d+)<QBjsO4v07*qoM6N<$f_m;b8~^|S literal 0 HcmV?d00001 diff --git a/views/res/mdpi/run-build-clean.png b/views/res/mdpi/run-build-clean.png new file mode 100644 index 0000000000000000000000000000000000000000..c1040407185565d931d31b7a3e67c5b31c755653 GIT binary patch literal 865 zcmV-n1D^beP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV0009hNkl<Zc-nPR zTTD`M7^l|O>cw7Kt)8ma9($>+R*%gti<KcF3KrRQnW@!sT4|snh(w^Kl^`f~B=v9( z-~~8HVY(QSt=rJeOMq)mU%X7uFAmLG%f9WmegEIS@AuvQy!Fg%HXojunOTU(;|msx z<;Z$5c2nggvcB-cZ^GelobY<R8Jy2BjCN&Z1sr@n-xH1t1OmcfFnDS$o@}~5Hq@my zCm-G2-6v;fXE8T7hw15QEH5u(adDC5u(Y&<si`T<&(DL4ak+X<`CTph-Ns`0J9UTF zs!L+A7!qwG8jXS^Npy5{B#{v31d@CtGKRJ`>lM1C(#e=hVt>svGBSek@o`WTjp+9{ zLg65Sp<zr;d`}44@%7s`ya~L6JYSgCrj$YdK=vw`==b{%dORL&BoaYlPJI0mfz4Ti z(Bw0WMw{`<sYq~R@cMipn@U;Ia0?A(xiCDGRU`%a`udg=%faaAC>sukF*F#2oZJCw zObo|(Hq_qT=<Q`-R_Ea@QI6O3cR^HSv4rYk`>%7@?Mqzc;o)JH8)1M6;I4HG?s@j0 zz_S-6^fol;G$7O$KsDS3rN05IT*S62B)<d*f;dJ|lz|iBE-*9{L_yhU+^}rNmDZiO zRel`m+v#|z%!5srhnCXwuqrZPdYpX|Ka78t=ytogE-*1M37T?1r`4h9MKjE`B`}qX zV1IfYntMVh^UtCpKMnd)+0oz0G))T_h5-j|AF)^*(fAJx_7bSSlL}|uRW#mDB;7d! zn?eAKJOjIUyscf00^Zsl_+0f+D3lcV_~|ozE`oJx1gI<Gqg^fpRU<)tK`Lmi6vjsa z{PVY6E*HPQzhA=nooz3zgO)-ROAoVeUtC+ItHgL-%m?#S3Zg0<Zo|chtxC9MK*`_8 zThEMog``WD3y<~!7+ntQGvusxszexU$bmy6Vh0*8JIGq;E?afx=6{mwlxe&k_4yP^ zopGsKl||E);;^GuJoDa^3$h{&%oE9Kk3l9UHPRHaI&%Z>f7YcEZ|YErQ(mjG_Ssa~ rM@?nvGGoaZ!l%o5R#SBDz*^i-eIz%TrYlt400000NkvXXu0mjfXGE9} literal 0 HcmV?d00001 diff --git a/views/res/mdpi/run-build-configure.png b/views/res/mdpi/run-build-configure.png new file mode 100644 index 0000000000000000000000000000000000000000..faf21851bbbb7706f7f8bbe8402e49f5c70e5e07 GIT binary patch literal 803 zcmV+;1Kj+HP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV0008&Nkl<Zc-obc z>r2y77{^x#6$FU|hC=8oFZ}~4Solh^dLc?m`a)Aov+`Zq3(;x1S;lgvrq0V&38qUo z-KL_=%YMsUOx<RaH8-Q?HWlxtbNc&seo>Jafe#$ch4Ve1@AEu|^{;4cZH-!7T-;t* zSlA}(%fF6Kak!kw{QSHN%m%<gQGb8`_0iGMWM)m~s=d8E?C<YGrBXi^i`#iS+uyOd zwTW5VXLN|$X2`XZf5bgKJvY|Y*08?54yV%zM(pu;Xs_2x_x1I{>2hM%>xEiPAu{5U zjYt^KiNEP-#4eVWmf&`~(cRq*u~-a=M2g(pdvG|uVQXUpa)lhq_sX<?=4~(-FgG^` znM@A1a}fs9Bqj~xC@m|6R4T#p@-l2T8<Y5%-<qQ00)G}oQ4zz#!&P>>9b;o-uv+Zs z?B&7W5TIXM0l8d(B6cB6CKFaxSLoMoM0-!3mgj$*7`J9;XDL{NgM+&h6BC%8o~Df^ zBXrtHl=YlL@7ELvWe-tXSC69NVg!eT!R4OEnC1iBAgBjLsTem&ESXH^VaR&Do@P=| zjcAb9=7U^GASS1#pwVg(5p@NbcXRNzqaE{32TDrV@IUY05gHnLoJEQitxzalYBU<S zTrQ03r|^h#6L$L-SS(g}c6T7|>_mJ*Jh)sg;^N{y1q1|^5W3HSA`T4=VTusROx)-Y zdo32+axQc_9XK2gghC+*h_QW)j6<I&Nu{FD)Z9pD?Fb4ELUKwnj3xtVWfy6q17@=s zT9VGdz`(6T545z1Qfq3f@S=tfzq5V_zZeEetpcB4Nn5Q}7>&lCU0{k$Y8HP$oS2y4 z%d4zdEh%Hu;bGwj2?;@$^c_k|AJZ0#1tTLP)yzGmQkhEV35V!SO$~+oY97)vZX@Pu z41}+maVINt#%!L!?CdP0QfV~nf6*dpP7^fNfw(|}pceNZ<V=&})2yQeuku-45xZb6 hJtIv-w!TNv{s2^~{@PDmQ<?w(002ovPDHLkV1mdqb7%kn literal 0 HcmV?d00001 diff --git a/views/res/mdpi/run-build.png b/views/res/mdpi/run-build.png new file mode 100644 index 0000000000000000000000000000000000000000..3ae4c73d369cb042c70816c84cf4584d36484ea1 GIT binary patch literal 759 zcmV<T0to$yP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV0008MNkl<ZcmZuw z-%FEW6#fdj_NFen>7od_=`ZM_i~flqP`b!e7-6PPb|Zlyte`Z4Ml`obl-ZWDH8*v? z-R3surrXs0n46pEbW==lI*_MxUixA}54@a@_dP$J^PKZZG6n|+g;gjN!p_ajwe9Wg z)pvJy>pq|FwbX?E{(k8aR4SFQlarIr<U5<qHga)sfkvZ&rKP1`^1a<|Z)K~~=_CQQ zS}klK5b(3}^7688b91wDdU}eJlM`|3^*XZIY&{l>S<cSRP$(3N9HUe!B>}x&-*J3= zjB2%t!^1=H_tw@H=I7@@6|ug)4*8whLZwpSxA!8ry}eynq8Z%T*%3}=vsnaZG8sBq zxLht63<mIfKA#7%EpbeDcenHpBvh5CaUjvniQ^8K;0hSAx*A71ox$wvEY{Z6;C8zq z$yi)meByLEKQK+|odrWGmByI43mY{(a=$0=!}|i^aF8n_7z`qjNN|$x^xehdI*&vm zRAp848jHm-@pA-ULib_Kx4~9;if{1;_-yEa!{J0SnG`Id(I|*DB<lCv@AtF%C>D!k zqxd>L47KMbRPNgtaNog@_ZEgVkKyrnQ7V-<n3+&Q2PC7>I7GeK`GQ+WB~x%Y+~|CJ z0|WNEP+0HbrS3YkS`AiKR<OOjjZi4WS_P)3r$0$e3(_DxP^;C5njd3YEuO!6gihr{ zjDCDav=i9h-{;D*h}WcMOifK$cw8QjN6gyq50Gd<M5r~^=IH1Mxm-?Ew^%G29Mjv| zD+!oPrq*ycEL3JenQFOQ#=*e>ACZugq*5uw<8k3*wOZda{}@-Oa+y|@E0ox>Gpo(h zk-urgX-+_**L!+;TKf9>Bms>^Ba+ZQjL0o5EG&%k$oP1@ULRdu{d=#bqAj$U(j{=V pW;-)8qu^Cer_-Qa8U3FR;}5H+b3Z)K5G4Qr002ovPDHLkV1m^taq$2E literal 0 HcmV?d00001 diff --git a/views/resources.list b/views/resources.list index 0e90c77..383c363 100644 --- a/views/resources.list +++ b/views/resources.list @@ -16,4 +16,7 @@ res/mdpi/edit-redo.png res/mdpi/edit-undo.png res/mdpi/project-development.png res/mdpi/project-open.png +res/mdpi/run-build.png +res/mdpi/run-build-clean.png +res/mdpi/run-build-configure.png res/mdpi/tx_fabric.jpg