changed inputs for second section and implemented Clone and Copy traits for Alignment data structure

This commit is contained in:
2024-04-14 20:13:15 +04:00
parent 5687d6773a
commit 48057646a8
11 changed files with 399 additions and 433 deletions

View File

@@ -1,7 +1,7 @@
use gtk4 as gtk;
use gtk::{Align};
use gtk::builders::*;
use gtk::Align;
/**
* Types
@@ -13,7 +13,7 @@ pub type Margin = (i32, i32, i32, i32);
* Enums
*/
pub enum MarginData{
pub enum MarginData {
EqualsMargin(i32),
MultipleMargin(Margin),
}
@@ -26,40 +26,41 @@ pub enum MarginData{
pub struct Size {
pub width: i32,
pub height: i32
pub height: i32,
}
#[derive(Copy, Clone)]
pub struct Alignment {
pub horizontal: Align,
pub vertical : Align
pub vertical: Align,
}
/**
* Traits
*/
pub trait Setters{
pub trait Setters {
fn set_margin(self, margin: MarginData) -> Self;
fn set_align(self, align: Alignment) -> Self;
}
pub trait TextViewSetters{
pub trait TextViewSetters {
fn set_text_view_margin(self, margin: MarginData) -> Self;
}
impl TextViewSetters for TextViewBuilder{
fn set_text_view_margin(self, margin: MarginData) -> Self{
match margin{
MarginData::EqualsMargin(margin) =>
self.top_margin(margin)
.left_margin(margin)
.bottom_margin(margin)
.right_margin(margin),
MarginData::MultipleMargin(margins) =>
self.top_margin(margins.0)
.left_margin(margins.1)
.bottom_margin(margins.2)
.right_margin(margins.3),
impl TextViewSetters for TextViewBuilder {
fn set_text_view_margin(self, margin: MarginData) -> Self {
match margin {
MarginData::EqualsMargin(margin) => self
.top_margin(margin)
.left_margin(margin)
.bottom_margin(margin)
.right_margin(margin),
MarginData::MultipleMargin(margins) => self
.top_margin(margins.0)
.left_margin(margins.1)
.bottom_margin(margins.2)
.right_margin(margins.3),
}
}
}
@@ -95,24 +96,25 @@ macro_rules! impl_setters {
}
}
impl_setters!{ButtonBuilder, EntryBuilder, TextViewBuilder,
impl_setters! {ButtonBuilder, EntryBuilder, TextViewBuilder,
BoxBuilder, SwitchBuilder, FrameBuilder, LabelBuilder}
#[allow(dead_code)]
impl Size{
pub fn new(w: i32, h: i32) -> Size{
Size{
impl Size {
pub fn new(w: i32, h: i32) -> Size {
Size {
width: w,
height: h,
}
}
}
impl Alignment{
pub fn new(horizontal: Align, vertical : Align) -> Alignment{
Alignment{
impl Alignment {
pub fn new(horizontal: Align, vertical: Align) -> Alignment {
Alignment {
horizontal,
vertical,
}
}
}
}