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 }