diff --git a/Feladat1/UI/MainWindow/LineDrawer.cs b/Feladat1/UI/MainWindow/LineDrawer.cs new file mode 100644 index 0000000..55d65de --- /dev/null +++ b/Feladat1/UI/MainWindow/LineDrawer.cs @@ -0,0 +1,32 @@ +using Gdk; +using Gtk; + +namespace Feladat1.UI.MainWindow; + +public partial class MainWindow +{ + private DrawingArea canvas; + private const string canvasId = "canvas"; + + private Adjustment lineWidthAdjustment; + private const string lineWidthAdjustmentId = "adjustment"; + + private double[] pointX = { 100, 100 }; + private double[] pointY = {200, 200}; + private double lineWidth = 5; + + private void Draw(DrawingArea drawingArea, Cairo.Context cr, int width, int height) + { + cr.SetSourceRgb(1, 1, 1); + + cr.Arc(pointX[0], pointX[1], 10, 0, 2 * Math.PI); + cr.Arc(pointY[0], pointY[1], 10, 0, 2 * Math.PI); + cr.Fill(); + + cr.LineWidth = lineWidth; + cr.MoveTo(pointX[0], pointX[1]); + cr.LineTo(pointY[0], pointY[1]); + + cr.Stroke(); + } +} diff --git a/Feladat1/UI/MainWindow/MainWindow.cs b/Feladat1/UI/MainWindow/MainWindow.cs index 0a4bfd5..240bf86 100644 --- a/Feladat1/UI/MainWindow/MainWindow.cs +++ b/Feladat1/UI/MainWindow/MainWindow.cs @@ -1,10 +1,11 @@ using Adw; +using Gtk; using Logic; using Models; namespace Feladat1.UI.MainWindow; -public class MainWindow +public partial class MainWindow { private ToastOverlay toastOverlay; private const string toastOverlayId = "toast_overlay"; @@ -12,7 +13,7 @@ public class MainWindow private IUserService userService; private const string windowId = "main_window"; - public Window Window; + public Adw.Window Window; private Gtk.Button saveBtn; private const string saveBtnId = "save_btn"; @@ -35,12 +36,36 @@ public class MainWindow private PasswordEntryRow passwordLabel; private const string passwordLabelId = "passwordLabel"; + private Button leftUpArrow; + private const string leftUpArrowId = "leftUpArrow"; + + private Button rightUpArrow; + private const string rightUpArrowId = "rightUpArrow"; + + private Button leftDownArrow; + private const string leftDownArrowId = "leftDownArrow"; + + private Button rightDownArrow; + private const string rightDownArrowId = "rightDownArrow"; + + private Button leftLeftArrow; + private const string leftLeftArrowId = "leftLeftArrow"; + + private Button rightLeftArrow; + private const string rightLeftArrowId = "rightLeftArrow"; + + private Button leftRightArrow; + private const string leftRightArrowId = "leftRightArrow"; + + private Button rightRightArrow; + private const string rightRightArrowId = "rightRightArrow"; + public MainWindow(IUserService userService) { this.userService = userService; var builder = new Gtk.Builder("Feladat1.UI.MainWindow.MainWindow.ui.xml"); - Window = builder.GetObject(windowId) as Window; + Window = builder.GetObject(windowId) as Adw.Window; if (Window == null) { throw new Exception("Failed to load embedded resource MainWindow.ui.xml"); @@ -96,6 +121,112 @@ public class MainWindow { throw new NullReferenceException(toastOverlayId); } + + canvas = builder.GetObject(canvasId) as DrawingArea; + if (canvas == null) + { + throw new NullReferenceException(canvasId); + } + canvas.SetDrawFunc(Draw); + + lineWidthAdjustment = builder.GetObject(lineWidthAdjustmentId) as Adjustment; + if (lineWidthAdjustment == null) + { + throw new NullReferenceException(lineWidthAdjustmentId); + } + lineWidthAdjustment.OnValueChanged += (sender, args) => + { + lineWidth = lineWidthAdjustment.Value; + canvas.QueueDraw(); + }; + + leftUpArrow = builder.GetObject(leftUpArrowId) as Button; + if (leftUpArrow == null) + { + throw new NullReferenceException(leftUpArrowId); + } + leftUpArrow.OnClicked += (sender, args) => + { + pointX[1] -= 5; + canvas.QueueDraw(); + }; + + rightUpArrow = builder.GetObject(rightUpArrowId) as Button; + if (rightUpArrow == null) + { + throw new NullReferenceException(rightUpArrowId); + } + rightUpArrow.OnClicked += (sender, args) => + { + pointY[1] -= 5; + canvas.QueueDraw(); + }; + + leftDownArrow = builder.GetObject(leftDownArrowId) as Button; + if (leftDownArrow == null) + { + throw new NullReferenceException(leftDownArrowId); + } + leftDownArrow.OnClicked += (sender, args) => + { + pointX[1] += 5; + canvas.QueueDraw(); + }; + + rightDownArrow = builder.GetObject(rightDownArrowId) as Button; + if (rightDownArrow == null) + { + throw new NullReferenceException(rightDownArrowId); + } + rightDownArrow.OnClicked += (sender, args) => + { + pointY[1] += 5; + canvas.QueueDraw(); + }; + + leftLeftArrow = builder.GetObject(leftLeftArrowId) as Button; + if (leftLeftArrow == null) + { + throw new NullReferenceException(leftLeftArrowId); + } + leftLeftArrow.OnClicked += (sender, args) => + { + pointX[0] -= 5; + canvas.QueueDraw(); + }; + + rightLeftArrow = builder.GetObject(rightLeftArrowId) as Button; + if (rightLeftArrow == null) + { + throw new NullReferenceException(rightLeftArrowId); + } + rightLeftArrow.OnClicked += (sender, args) => + { + pointY[0] -= 5; + canvas.QueueDraw(); + }; + + leftRightArrow = builder.GetObject(leftRightArrowId) as Button; + if (leftRightArrow == null) + { + throw new NullReferenceException(leftRightArrowId); + } + leftRightArrow.OnClicked += (sender, args) => + { + pointX[0] += 5; + canvas.QueueDraw(); + }; + + rightRightArrow = builder.GetObject(rightRightArrowId) as Button; + if (rightRightArrow == null) + { + throw new NullReferenceException(rightRightArrowId); + } + rightRightArrow.OnClicked += (sender, args) => + { + pointY[0] += 5; + canvas.QueueDraw(); + }; } catch (NullReferenceException e) { diff --git a/Feladat1/UI/MainWindow/MainWindow.ui.xml b/Feladat1/UI/MainWindow/MainWindow.ui.xml index a7bd7b9..e8542c7 100644 --- a/Feladat1/UI/MainWindow/MainWindow.ui.xml +++ b/Feladat1/UI/MainWindow/MainWindow.ui.xml @@ -1,111 +1,231 @@ - - - - 300 - 300 - 400 - 400 - - - - - - - - - stack - wide - - - - - - - True - - - save - document-save-as-symbolic - Save - - - - - - - Email - - - - - Felhasználónév - - - - - Jelszó - - - - - - - - Exportálás - center - center - - - - - - - - - load - Load - document-open-symbolic - - - - - - - Email - False - - - - - Felhasználónév - False - False - - - - - Jelszó - False - - - - - - - - - - - - - stack - - - - - - - + + + + 20 + 1 + 5 + 0.1 + 1 + + + 300 + 300 + 400 + 400 + + + + + + + + + stack + wide + + + + + + + True + + + save + document-save-as-symbolic + Save + + + + + + + Email + + + + + Felhasználónév + + + + + Jelszó + + + + + + + + Exportálás + center + center + + + + + + + + + load + Load + document-open-symbolic + + + + + + + Email + False + + + + + Felhasználónév + False + False + + + + + Jelszó + False + + + + + + + + + + + lines + Lines + function-linear-symbolic + + + vertical + + + 250 + 250 + + + + + horizontal + center + + + vertical + + + center + center + + + + + + horizontal + + + center + center + + + + + + center + center + + + + + + center + center + + + + + + + + + + vertical + + + center + center + + + + + + horizontal + + + center + center + + + + + + center + center + + + + + + center + center + + + + + + + + + + + + 0 + adjustment + 50 + 50 + 1 + + 1 + 0 + + + + + + + + + + + + stack + + + + + + + \ No newline at end of file