1 /* 2 Copyright © 2020, Inochi2D Project 3 Distributed under the 2-Clause BSD License, see LICENSE file. 4 5 Authors: Luna Nielsen 6 */ 7 module creator.widgets.toolbar; 8 import creator.viewport; 9 import creator.widgets; 10 import creator.core; 11 import creator; 12 import i18n; 13 14 void incToolbar() { 15 auto flags = 16 ImGuiWindowFlags.NoSavedSettings | 17 ImGuiWindowFlags.NoScrollbar | 18 ImGuiWindowFlags.MenuBar; 19 20 igPushStyleVar(ImGuiStyleVar.FramePadding, ImVec2(0, 10)); 21 if (igBeginViewportSideBar("##Toolbar", igGetMainViewport(), ImGuiDir.Up, 32, flags)) { 22 23 if (igBeginMenuBar()) { 24 igPopStyleVar(); 25 26 27 // Render toolbar 28 igPushStyleVar(ImGuiStyleVar.FramePadding, ImVec2(0, 0)); 29 igPushStyleVar(ImGuiStyleVar.FrameRounding, 0); 30 igPushFont(incIconFont()); 31 32 // Draw the toolbar relevant for that viewport 33 incViewportToolbar(); 34 igPopFont(); 35 igPopStyleVar(2); 36 37 // Render mode switch buttons 38 ImVec2 avail; 39 igGetContentRegionAvail(&avail); 40 igDummy(ImVec2(avail.x-(32*3)-8, 0)); 41 42 igPushStyleVar(ImGuiStyleVar.FramePadding, ImVec2(0, 0)); 43 igPushStyleVar(ImGuiStyleVar.FrameRounding, 0); 44 igPushFont(incIconFont()); 45 igPushStyleVar(ImGuiStyleVar.ItemSpacing, ImVec2(0, 0)); 46 if(incEditMode != EditMode.VertexEdit) { 47 if (incButtonColored("", ImVec2(32, 32), incEditMode == EditMode.ModelEdit ? ImVec4.init : ImVec4(0.6f, 0.6f, 0.6f, 1f))) { 48 incSetEditMode(EditMode.ModelEdit); 49 } 50 incTooltip(_("Edit Puppet")); 51 52 if (incButtonColored("", ImVec2(32, 32), incEditMode == EditMode.AnimEdit ? ImVec4.init : ImVec4(0.6f, 0.6f, 0.6f, 1f))) { 53 incSetEditMode(EditMode.AnimEdit); 54 } 55 incTooltip(_("Edit Animation")); 56 57 if (incButtonColored("", ImVec2(32, 32), incEditMode == EditMode.ModelTest ? ImVec4.init : ImVec4(0.6f, 0.6f, 0.6f, 1f))) { 58 incSetEditMode(EditMode.ModelTest); 59 } 60 incTooltip(_("Test Puppet")); 61 } 62 igPopStyleVar(); 63 64 igPopFont(); 65 igPopStyleVar(2); 66 67 igEndMenuBar(); 68 } else { 69 igPopStyleVar(); 70 } 71 72 igEnd(); 73 } else { 74 igPopStyleVar(); 75 } 76 }