mirror of
https://github.com/Sygil-Dev/sygil-webui.git
synced 2024-12-14 22:13:41 +03:00
more work on canvas(flet ui)
This commit is contained in:
parent
58db3ffe02
commit
2cc91e3d07
@ -18,6 +18,8 @@ class Canvas(ft.Container):
|
|||||||
|
|
||||||
self.overlay.canvas_size.content.color = self.page.text_color
|
self.overlay.canvas_size.content.color = self.page.text_color
|
||||||
self.overlay.canvas_size.content.size = self.page.text_size
|
self.overlay.canvas_size.content.size = self.page.text_size
|
||||||
|
self.add_layer_image(self.page.canvas_background)
|
||||||
|
self.center_canvas()
|
||||||
self.refresh_canvas()
|
self.refresh_canvas()
|
||||||
|
|
||||||
def refresh_canvas(self):
|
def refresh_canvas(self):
|
||||||
@ -26,9 +28,14 @@ class Canvas(ft.Container):
|
|||||||
def set_current_tool(self,tool):
|
def set_current_tool(self,tool):
|
||||||
self.page.current_tool = tool
|
self.page.current_tool = tool
|
||||||
|
|
||||||
|
def add_layer_image(self, image):
|
||||||
|
self.image_stack.add_layer_image(image)
|
||||||
|
self.update()
|
||||||
|
|
||||||
def center_canvas(self):
|
def center_canvas(self):
|
||||||
self.image_stack.left = (self.page.workspace_width * 0.5) - (self.page.canvas_size[0] * 0.5),
|
width, height = self.page.get_viewport_size()
|
||||||
self.image_stack.top = (self.page.workspace_height * 0.5) - (self.page.canvas_size[1] * 0.5),
|
self.image_stack.left = (width * 0.5) - 2048
|
||||||
|
self.image_stack.top = (height * 0.5) - 2048
|
||||||
canvas.update()
|
canvas.update()
|
||||||
|
|
||||||
def pan_canvas(self):
|
def pan_canvas(self):
|
||||||
@ -47,34 +54,54 @@ class CanvasOverlay(ft.Stack):
|
|||||||
self.update()
|
self.update()
|
||||||
|
|
||||||
class ImageStack(ft.GestureDetector):
|
class ImageStack(ft.GestureDetector):
|
||||||
def add_layer_image(self):
|
def add_layer_image(self, image):
|
||||||
pass
|
layer_image = LayerImage(
|
||||||
|
mouse_cursor = ft.MouseCursor.GRAB,
|
||||||
|
drag_interval = 50,
|
||||||
|
on_pan_update = self.drag_layer,
|
||||||
|
left = 0,
|
||||||
|
top = 0,
|
||||||
|
width = image.width,
|
||||||
|
height = image.height,
|
||||||
|
content = ft.Image(
|
||||||
|
src_base64 = flet_utils.convert_image_to_base64(image),
|
||||||
|
width = image.width,
|
||||||
|
height = image.height,
|
||||||
|
gapless_playback = True,
|
||||||
|
),
|
||||||
|
)
|
||||||
|
self.content.controls.append(layer_image)
|
||||||
|
|
||||||
|
def center_layer(self, e):
|
||||||
class LayerImage(ft.GestureDetector):
|
width, height = self.page.get_viewport_size()
|
||||||
def center_layer(self):
|
self.left = (width * 0.5) - (self.width * 0.5),
|
||||||
self.left = (self.page.workspace_width * 0.5) - (self.page.canvas_size[0] * 0.5),
|
self.top = (height * 0.5) - (self.height * 0.5),
|
||||||
self.top = (self.page.workspace_height * 0.5) - (self.page.canvas_size[1] * 0.5),
|
|
||||||
canvas.update()
|
canvas.update()
|
||||||
|
|
||||||
def drag_layer(self):
|
def drag_layer(self, e):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
def resize_layer(self):
|
def resize_layer(self, e):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
def draw_on_layer(self):
|
def draw_on_layer(self, e):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
def paint_on_layer(self):
|
def paint_on_layer(self, e):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
class LayerImage(ft.GestureDetector):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def pan_canvas(e):
|
||||||
|
canvas.pan_canvas(e)
|
||||||
|
|
||||||
image_stack = ImageStack(
|
image_stack = ImageStack(
|
||||||
mouse_cursor = ft.MouseCursor.GRAB,
|
# mouse_cursor = ft.MouseCursor.GRAB,
|
||||||
drag_interval = 50,
|
drag_interval = 50,
|
||||||
on_pan_update = None,
|
on_pan_update = pan_canvas,
|
||||||
on_scroll = None,
|
width = 4096,
|
||||||
|
height = 4096,
|
||||||
left = 0,
|
left = 0,
|
||||||
top = 0,
|
top = 0,
|
||||||
content = ft.Stack(),
|
content = ft.Stack(),
|
||||||
@ -115,6 +142,11 @@ canvas_tools = ft.Container(
|
|||||||
),
|
),
|
||||||
top = 4,
|
top = 4,
|
||||||
right = 4,
|
right = 4,
|
||||||
|
padding = 4,
|
||||||
|
border_radius = 10,
|
||||||
|
opacity = 0.5,
|
||||||
|
bgcolor = 'black',
|
||||||
|
|
||||||
)
|
)
|
||||||
|
|
||||||
canvas_tools.zoom_in = zoom_in_button
|
canvas_tools.zoom_in = zoom_in_button
|
||||||
@ -135,7 +167,6 @@ canvas = Canvas(
|
|||||||
image_stack,
|
image_stack,
|
||||||
canvas_overlay,
|
canvas_overlay,
|
||||||
],
|
],
|
||||||
clip_behavior = None,
|
|
||||||
),
|
),
|
||||||
clip_behavior = 'antiAlias',
|
clip_behavior = 'antiAlias',
|
||||||
alignment = ft.alignment.center,
|
alignment = ft.alignment.center,
|
||||||
|
@ -63,9 +63,8 @@ class Messages(ft.Container):
|
|||||||
message_list.controls.append(msg)
|
message_list.controls.append(msg)
|
||||||
self.prune_messages()
|
self.prune_messages()
|
||||||
|
|
||||||
message_list = ft.Column(
|
message_list = ft.ListView(
|
||||||
spacing = 0,
|
spacing = 4,
|
||||||
scroll = 'auto',
|
|
||||||
auto_scroll = True,
|
auto_scroll = True,
|
||||||
controls = [],
|
controls = [],
|
||||||
)
|
)
|
||||||
|
@ -68,8 +68,8 @@ class ToolManager(ft.Container):
|
|||||||
self.tool_properties.padding = self.page.container_padding
|
self.tool_properties.padding = self.page.container_padding
|
||||||
self.tool_properties.margin = self.page.container_margin
|
self.tool_properties.margin = self.page.container_margin
|
||||||
|
|
||||||
self.dragbar.content.width = self.page.vertical_divider_width
|
self.dragbar.width = self.page.vertical_divider_width
|
||||||
self.dragbar.content.color = self.page.tertiary_color
|
self.dragbar.color = self.page.tertiary_color
|
||||||
|
|
||||||
def resize_tool_manager(self, e: ft.DragUpdateEvent):
|
def resize_tool_manager(self, e: ft.DragUpdateEvent):
|
||||||
self.page.tool_manager_width = max(50, self.page.tool_manager_width + e.delta_x)
|
self.page.tool_manager_width = max(50, self.page.tool_manager_width + e.delta_x)
|
||||||
@ -176,7 +176,6 @@ tool_manager = ToolManager(
|
|||||||
tool_properties,
|
tool_properties,
|
||||||
],
|
],
|
||||||
alignment = 'start',
|
alignment = 'start',
|
||||||
horizontal_alignment = 'center',
|
|
||||||
expand = True,
|
expand = True,
|
||||||
),
|
),
|
||||||
tool_manager_dragbar,
|
tool_manager_dragbar,
|
||||||
@ -189,5 +188,5 @@ tool_manager = ToolManager(
|
|||||||
tool_manager.toolbox = toolbox
|
tool_manager.toolbox = toolbox
|
||||||
tool_manager.tool_divider = tool_divider.content.content
|
tool_manager.tool_divider = tool_divider.content.content
|
||||||
tool_manager.tool_properties = tool_properties
|
tool_manager.tool_properties = tool_properties
|
||||||
tool_manager.dragbar = tool_manager_dragbar
|
tool_manager.dragbar = tool_manager_dragbar.content
|
||||||
|
|
||||||
|
@ -91,7 +91,7 @@ def get_image_from_uploads(name):
|
|||||||
|
|
||||||
def get_canvas_background(path):
|
def get_canvas_background(path):
|
||||||
image = Image.open(path)
|
image = Image.open(path)
|
||||||
image = image.resize((512,512))
|
image = image.resize((4096,4096))
|
||||||
image = image.convert("RGBA")
|
image = image.convert("RGBA")
|
||||||
return image
|
return image
|
||||||
|
|
||||||
|
@ -80,7 +80,6 @@ def main(page: ft.Page):
|
|||||||
# layouts
|
# layouts
|
||||||
def set_layout(e):
|
def set_layout(e):
|
||||||
page.current_layout = e.control.value
|
page.current_layout = e.control.value
|
||||||
set_property_panel_options()
|
|
||||||
page.update()
|
page.update()
|
||||||
|
|
||||||
page.set_layout = set_layout
|
page.set_layout = set_layout
|
||||||
@ -91,19 +90,16 @@ def main(page: ft.Page):
|
|||||||
|
|
||||||
# asset manager
|
# asset manager
|
||||||
page.asset_manager = asset_manager
|
page.asset_manager = asset_manager
|
||||||
page.layer_list = []
|
|
||||||
page.visible_layer_list = []
|
|
||||||
page.active_layer_list = []
|
|
||||||
|
|
||||||
# canvas
|
# canvas
|
||||||
page.canvas = canvas
|
page.canvas = canvas
|
||||||
page.canvas_background = flet_utils.get_canvas_background('webui/flet/assets/images/templategrid_albedo.png')
|
page.canvas_background = flet_utils.get_canvas_background('webui/flet/assets/images/templategrid_albedo.png')
|
||||||
page.canvas_size = (512,512)
|
page.canvas_size = [512,512]
|
||||||
|
|
||||||
def get_viewport_size():
|
def get_viewport_size():
|
||||||
viewport_width = page.width - (page.tool_manager_width + (page.vertical_divider_width * 3) + page.left_panel_width + page.right_panel_width)
|
viewport_width = page.width - (page.tool_manager_width + (page.vertical_divider_width * 3) + page.left_panel_width + page.right_panel_width)
|
||||||
viewport_height = page.height - (page.appbar_height * 3) - page.bottom_panel_height
|
viewport_height = page.height - (page.titlebar_height * 3) - page.bottom_panel_height
|
||||||
return (viewport_width, viewport_height)
|
return viewport_width, viewport_height
|
||||||
|
|
||||||
page.get_viewport_size = get_viewport_size
|
page.get_viewport_size = get_viewport_size
|
||||||
|
|
||||||
@ -288,25 +284,6 @@ def main(page: ft.Page):
|
|||||||
|
|
||||||
# layouts ############################################################
|
# layouts ############################################################
|
||||||
|
|
||||||
def set_current_tools():
|
|
||||||
layout = page.current_layout
|
|
||||||
if layout == 'Default':
|
|
||||||
set_tools(default_tools)
|
|
||||||
elif layout == 'Textual Inversion':
|
|
||||||
set_tools(textual_inversion_tools)
|
|
||||||
elif layout == 'Node Editor':
|
|
||||||
set_tools(node_editor_tools)
|
|
||||||
tool_manager.update()
|
|
||||||
|
|
||||||
def set_property_panel_options():
|
|
||||||
layout = page.current_layout
|
|
||||||
if layout == 'Default':
|
|
||||||
set_properties(default_properties)
|
|
||||||
elif layout == 'Textual Inversion':
|
|
||||||
set_properties(textual_inversion_properties)
|
|
||||||
elif layout == 'Node Editor':
|
|
||||||
set_properties(node_editor_properties)
|
|
||||||
|
|
||||||
default_layout = ft.Row(
|
default_layout = ft.Row(
|
||||||
controls = [
|
controls = [
|
||||||
tool_manager,
|
tool_manager,
|
||||||
|
Loading…
Reference in New Issue
Block a user