mirror of
https://github.com/Ttanasart-pt/Pixel-Composer.git
synced 2025-01-23 19:38:05 +01:00
- [Canvas] Fix apply node not working.
This commit is contained in:
parent
5e2eb0a352
commit
caf9ae292c
8 changed files with 62 additions and 18 deletions
|
@ -137,7 +137,7 @@ event_inherited();
|
|||
|
||||
if(!_node) return;
|
||||
|
||||
if(is_instanceof(context, Node_Canvas)) {
|
||||
if(is_instanceof(context, Node_Canvas) || is_instanceof(context, Node_Canvas_Group)) {
|
||||
UNDO_HOLDING = true;
|
||||
context.nodeTool = new canvas_tool_node(context, _node).init();
|
||||
UNDO_HOLDING = false;
|
||||
|
|
|
@ -10,6 +10,7 @@ function buttonGroup(_data, _onClick) : widget() constructor {
|
|||
tooltips = [];
|
||||
|
||||
current_selecting = 0;
|
||||
collapsable = true;
|
||||
|
||||
for(var i = 0; i < array_length(data); i++)
|
||||
buttons[i] = button(-1);
|
||||
|
@ -21,7 +22,8 @@ function buttonGroup(_data, _onClick) : widget() constructor {
|
|||
return self;
|
||||
}
|
||||
|
||||
static setTooltips = function(tt) { tooltips = tt; return self; }
|
||||
static setTooltips = function(tt) { tooltips = tt; return self; }
|
||||
static setCollape = function(cc) { collapsable = cc; return self; }
|
||||
|
||||
static trigger = function() {
|
||||
if(current_selecting + 1 >= array_length(data))
|
||||
|
@ -86,7 +88,7 @@ function buttonGroup(_data, _onClick) : widget() constructor {
|
|||
}
|
||||
}
|
||||
|
||||
display_button = total_width < _w;
|
||||
display_button = !collapsable || total_width < _w;
|
||||
var ww = (_mx? _tw : _w) / tamo;
|
||||
|
||||
if(display_button) {
|
||||
|
|
|
@ -81,6 +81,8 @@ function canvas_tool_node(canvas, node) : canvas_tool() constructor {
|
|||
return noone;
|
||||
}
|
||||
|
||||
panelAdd("Panel_Inspector", true, false).content.setInspecting(nodeObject, true, false);
|
||||
|
||||
return self;
|
||||
}
|
||||
|
||||
|
|
|
@ -163,6 +163,34 @@ function canvas_tool_selection(selector = noone) : canvas_tool() constructor {
|
|||
is_selected = true;
|
||||
}
|
||||
|
||||
function selectAll() {
|
||||
var sel_w = surface_get_width(_canvas_surface);
|
||||
var sel_h = surface_get_height(_canvas_surface);
|
||||
|
||||
selection_surface = surface_verify(selection_surface, sel_w, sel_h);
|
||||
selection_mask = surface_verify(selection_mask, sel_w, sel_h);
|
||||
|
||||
surface_set_target(selection_surface);
|
||||
DRAW_CLEAR
|
||||
draw_surface_safe(_canvas_surface, 0, 0);
|
||||
surface_reset_target();
|
||||
|
||||
surface_set_target(selection_mask);
|
||||
draw_clear(c_white);
|
||||
surface_reset_target();
|
||||
|
||||
node.storeAction();
|
||||
surface_set_target(_canvas_surface);
|
||||
DRAW_CLEAR
|
||||
surface_reset_target();
|
||||
|
||||
node.surface_store_buffer();
|
||||
|
||||
selection_position = [ 0, 0 ];
|
||||
selection_size = [ sel_w, sel_h ];
|
||||
is_selected = true;
|
||||
}
|
||||
|
||||
function copySelection() {
|
||||
var s = surface_encode(selection_surface, false);
|
||||
s.position = selection_position;
|
||||
|
|
|
@ -32,7 +32,8 @@ function dialogPanelCall(_panel, _x = noone, _y = noone, params = {}) { #region
|
|||
dia.ystart = _y;
|
||||
dia.resetPosition();
|
||||
|
||||
setFocus(dia.id, "Dialog");
|
||||
if(struct_try_get(params, "focus", true))
|
||||
setFocus(dia.id, "Dialog");
|
||||
return dia;
|
||||
} #endregion
|
||||
|
||||
|
|
|
@ -235,7 +235,8 @@ function Node_Canvas(_x, _y, _group = noone) : Node(_x, _y, _group) constructor
|
|||
tool_attribute.drawLayer = 0;
|
||||
tool_attribute.pickColor = c_white;
|
||||
tool_drawLayer_edit = new buttonGroup( [ THEME.canvas_draw_layer, THEME.canvas_draw_layer, THEME.canvas_draw_layer ], function(val) { tool_attribute.drawLayer = val; })
|
||||
.setTooltips( [ "Draw on top", "Draw behind", "Draw inside" ] );
|
||||
.setTooltips( [ "Draw on top", "Draw behind", "Draw inside" ] )
|
||||
.setCollape(false);
|
||||
|
||||
tool_attribute.mirror = [ false, false, false ];
|
||||
tool_mirror_edit = new checkBoxGroup( THEME.canvas_mirror, function(ind, val) { tool_attribute.mirror[ind] = val; })
|
||||
|
@ -262,7 +263,8 @@ function Node_Canvas(_x, _y, _group = noone) : Node(_x, _y, _group) constructor
|
|||
|
||||
tool_attribute.fillType = 0;
|
||||
tool_fil8_edit = new buttonGroup( [ THEME.canvas_fill_type, THEME.canvas_fill_type, THEME.canvas_fill_type ], function(val) { tool_attribute.fillType = val; })
|
||||
.setTooltips( [ "Edge", "Edge + Corner", "Entire image" ] );
|
||||
.setTooltips( [ "Edge", "Edge + Corner", "Entire image" ] )
|
||||
.setCollape(false);
|
||||
tool_fil8 = [ "Fill", tool_fil8_edit, "fillType", tool_attribute ];
|
||||
|
||||
tool_attribute.button_apply = [ false, false ];
|
||||
|
@ -339,7 +341,8 @@ function Node_Canvas(_x, _y, _group = noone) : Node(_x, _y, _group) constructor
|
|||
});
|
||||
|
||||
nodeTool = noone;
|
||||
nodeToolPreview = new NodeTool( "Apply Node", THEME.canvas_tools_node, self ).setToolFn( __action_add_node );
|
||||
nodeToolPreview = new NodeTool( "Apply Node", THEME.canvas_tools_node, self ).setToolFn( __action_add_node )
|
||||
.setContext(self);
|
||||
|
||||
rightTools_general = [
|
||||
nodeToolPreview,
|
||||
|
@ -919,6 +922,11 @@ function Node_Canvas(_x, _y, _group = noone) : Node(_x, _y, _group) constructor
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(key_press(ord("A"), MOD_KEY.ctrl)) {
|
||||
if(tool_selection.is_selected) tool_selection.apply();
|
||||
tool_selection.selectAll();
|
||||
}
|
||||
#endregion
|
||||
|
||||
if(DRAGGING && hover&& mouse_release(mb_left)) { #region drag n drop
|
||||
|
|
|
@ -47,13 +47,13 @@
|
|||
PANEL_FILE = 0;
|
||||
} #endregion
|
||||
|
||||
function getPanelFromName(name, create = false) { #region
|
||||
function getPanelFromName(name, create = false, focus = true) { #region
|
||||
switch(name) {
|
||||
case "Panel_Menu" : var p = (create || findPanel(name))? new Panel_Menu() : PANEL_MENU; PANEL_MENU = p; return p;
|
||||
case "Panel_Inspector" : var p = (create || findPanel(name))? new Panel_Inspector() : PANEL_INSPECTOR; PANEL_INSPECTOR = p; return p;
|
||||
case "Panel_Animation" : var p = (create || findPanel(name))? new Panel_Animation() : PANEL_ANIMATION; PANEL_ANIMATION = p; return p;
|
||||
case "Panel_Preview" : var p = (create || findPanel(name))? new Panel_Preview() : PANEL_PREVIEW; PANEL_PREVIEW = p; return p;
|
||||
case "Panel_Graph" : var p = (create || findPanel(name))? new Panel_Graph() : PANEL_GRAPH; PANEL_GRAPH = p; return p;
|
||||
case "Panel_Menu" : var p = (create || findPanel(name))? new Panel_Menu() : PANEL_MENU; if(focus) { PANEL_MENU = p; } return p;
|
||||
case "Panel_Inspector" : var p = (create || findPanel(name))? new Panel_Inspector() : PANEL_INSPECTOR; if(focus) { PANEL_INSPECTOR = p; } return p;
|
||||
case "Panel_Animation" : var p = (create || findPanel(name))? new Panel_Animation() : PANEL_ANIMATION; if(focus) { PANEL_ANIMATION = p; } return p;
|
||||
case "Panel_Preview" : var p = (create || findPanel(name))? new Panel_Preview() : PANEL_PREVIEW; if(focus) { PANEL_PREVIEW = p; } return p;
|
||||
case "Panel_Graph" : var p = (create || findPanel(name))? new Panel_Graph() : PANEL_GRAPH; if(focus) { PANEL_GRAPH = p; } return p;
|
||||
|
||||
case "Panel_Collection" : return new Panel_Collection();
|
||||
case "Panel_Workspace" : return new Panel_Workspace();
|
||||
|
@ -138,11 +138,11 @@
|
|||
return val;
|
||||
} #endregion
|
||||
|
||||
function panelAdd(panel, create = false) { #region
|
||||
var pan = getPanelFromName(panel, create);
|
||||
function panelAdd(panel, create = false, focus = true) { #region
|
||||
var pan = getPanelFromName(panel, create, focus);
|
||||
if(pan == noone) return noone;
|
||||
|
||||
return dialogPanelCall(pan);
|
||||
return dialogPanelCall(pan, noone, noone, { focus });
|
||||
} #endregion
|
||||
|
||||
function panelObjectInit() { #region
|
||||
|
|
|
@ -47,6 +47,8 @@ function Panel_Inspector() : PanelContent() constructor {
|
|||
min_w = ui(160);
|
||||
|
||||
locked = false;
|
||||
focusable = true;
|
||||
|
||||
inspecting = noone;
|
||||
inspectings = [];
|
||||
inspectGroup = false;
|
||||
|
@ -214,11 +216,12 @@ function Panel_Inspector() : PanelContent() constructor {
|
|||
menu_junc_color.spacing = ui(24);
|
||||
#endregion
|
||||
|
||||
function setInspecting(inspecting, _lock = false) { #region
|
||||
function setInspecting(inspecting, _lock = false, _focus = true) { #region
|
||||
if(locked) return;
|
||||
|
||||
self.inspecting = inspecting;
|
||||
if(_lock) locked = true;
|
||||
focusable = _focus;
|
||||
|
||||
if(inspecting != noone)
|
||||
inspecting.onInspect();
|
||||
|
@ -233,7 +236,7 @@ function Panel_Inspector() : PanelContent() constructor {
|
|||
return inspecting.active? inspecting : noone;
|
||||
} #endregion
|
||||
|
||||
function onFocusBegin() { PANEL_INSPECTOR = self; }
|
||||
function onFocusBegin() { if(!focusable) return; PANEL_INSPECTOR = self; }
|
||||
|
||||
function onResize() { #region
|
||||
initSize();
|
||||
|
|
Loading…
Reference in a new issue