ajustes finais na IHM grafica, criacao da tela de diagnosticos

This commit is contained in:
Diego Freitas 2026-07-23 17:38:02 -03:00
parent 539ec1b0ec
commit efe7cc2e88
35 changed files with 7673 additions and 3878 deletions

View File

@ -396,6 +396,9 @@
<Compile Include="Forms\IHM\Controls\HmiAutonomyResourceCard.cs">
<SubType>UserControl</SubType>
</Compile>
<Compile Include="Forms\IHM\Controls\HmiBufferedListView.cs">
<SubType>Component</SubType>
</Compile>
<Compile Include="Forms\IHM\Controls\HmiCameraSelector.cs">
<SubType>UserControl</SubType>
</Compile>
@ -441,12 +444,6 @@
<Compile Include="Forms\IHM\Controls\HmiNozzleGliph.cs">
<SubType>Component</SubType>
</Compile>
<Compile Include="Forms\IHM\Controls\HmiNumericField.cs">
<SubType>UserControl</SubType>
</Compile>
<Compile Include="Forms\IHM\Controls\HmiNumericParameterCard.cs">
<SubType>UserControl</SubType>
</Compile>
<Compile Include="Forms\IHM\Controls\HmiOperationTabButton.cs">
<SubType>Component</SubType>
</Compile>
@ -463,7 +460,7 @@
<SubType>Component</SubType>
</Compile>
<Compile Include="Forms\IHM\Controls\HmiRoundedPanel.cs">
<SubType>UserControl</SubType>
<SubType>Component</SubType>
</Compile>
<Compile Include="Forms\IHM\Controls\HmiShortcutButton.cs">
<SubType>UserControl</SubType>
@ -481,6 +478,9 @@
<Compile Include="Forms\IHM\Controls\HmiSprayerTelemetryRow.cs">
<SubType>UserControl</SubType>
</Compile>
<Compile Include="Forms\IHM\Controls\HmiStatusLegend.cs">
<SubType>Component</SubType>
</Compile>
<Compile Include="Forms\IHM\Controls\HmiStatusRow.cs">
<SubType>UserControl</SubType>
</Compile>
@ -514,10 +514,10 @@
<DependentUpon>frmOperacao.cs</DependentUpon>
</Compile>
<Compile Include="Forms\IHM\FuncoesIHM.cs" />
<Compile Include="Forms\IHM\Operacao\HmiCompactMetricCard.cs">
<Compile Include="Forms\IHM\Controls\HmiCompactMetricCard.cs">
<SubType>UserControl</SubType>
</Compile>
<Compile Include="Forms\IHM\Operacao\HmiCompactMetricCard.Designer.cs">
<Compile Include="Forms\IHM\Controls\HmiCompactMetricCard.Designer.cs">
<DependentUpon>HmiCompactMetricCard.cs</DependentUpon>
</Compile>
<Compile Include="Forms\IHM\Operacao\Parametros\ucParametrosAtuador.cs">
@ -971,6 +971,21 @@
<DependentUpon>frmOperacao.cs</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource>
<EmbeddedResource Include="Forms\IHM\Operacao\Parametros\ucParametrosAtuador.resx">
<DependentUpon>ucParametrosAtuador.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Forms\IHM\Operacao\ucOperacaoMovimentacao.resx">
<DependentUpon>ucOperacaoMovimentacao.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Forms\IHM\Operacao\ucOperacaoNavegacao.resx">
<DependentUpon>ucOperacaoNavegacao.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Forms\IHM\Operacao\ucOperacaoParametros.resx">
<DependentUpon>ucOperacaoParametros.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Forms\IHM\Operacao\ucOperacaoPulverizador.resx">
<DependentUpon>ucOperacaoPulverizador.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Forms\Simuladores\frmSimulacaoMapaGPS.resx">
<DependentUpon>frmSimulacaoMapaGPS.cs</DependentUpon>
</EmbeddedResource>

View File

@ -0,0 +1,88 @@
using System.Collections.Generic;
using System;
using System.Windows.Forms;
namespace AgroBase.Forms.IHM.Controls
{
public class HmiBufferedListView : ListView
{
public HmiBufferedListView()
{
DoubleBuffered = true;
SetStyle(
ControlStyles.OptimizedDoubleBuffer |
ControlStyles.AllPaintingInWmPaint,
true);
UpdateStyles();
}
public void SincronizarLista(IList<string> novosItens)
{
var lista = this;
if (lista == null)
return;
novosItens = novosItens ?? new List<string>();
lista.BeginUpdate();
try
{
int quantidadeComum = Math.Min(lista.Items.Count, novosItens.Count);
/*
* Atualiza somente os itens cujo texto mudou.
*/
for (int i = 0; i < quantidadeComum; i++)
{
string novoTexto = novosItens[i] ?? string.Empty;
if (lista.Items[i].Text != novoTexto)
lista.Items[i].Text = novoTexto;
}
/*
* Adiciona somente os itens novos.
*/
for (int i = lista.Items.Count; i < novosItens.Count; i++)
{
lista.Items.Add(new ListViewItem(novosItens[i] ?? string.Empty));
}
/*
* Remove somente os itens excedentes.
* Remove de trás para frente.
*/
for (int i = lista.Items.Count - 1; i >= novosItens.Count; i--)
{
lista.Items.RemoveAt(i);
}
}
finally
{
lista.EndUpdate();
}
}
public bool EstaNoFinalDaLista()
{
var lista = this;
if (lista == null || lista.Items.Count == 0)
{
return true;
}
ListViewItem ultimoVisivel = lista.GetItemAt(2, Math.Max(0, lista.ClientSize.Height - 2));
if (ultimoVisivel == null)
return true;
return ultimoVisivel.Index >= lista.Items.Count - 2;
}
}
}

View File

@ -1,171 +1,230 @@
using System;
using System.Collections.ObjectModel;
using System.ComponentModel;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Windows.Forms;
using static AgroBase.Models.Enums;
namespace AgroBase.Forms.IHM.Controls
{
public enum HmiModuleState
{
Operante = 0,
Alerta = 1,
Falha = 2,
Desconectado = 3,
Selecionado = 4
}
[DefaultEvent("Click")]
public class HmiModuleBadge : Control
{
private HmiModuleState _state = HmiModuleState.Operante;
private string _moduleCode = "MOD";
private StatusModulo _state = StatusModulo.Desconectado;
private bool _selecionado;
private T_Code _moduleCode = T_Code.Vzo;
private S_Code _moduleSubCode = S_Code.sVZO;
private string _moduleId = string.Empty;
private bool _mandatorio;
private bool _emUso;
public ObservableCollection<string> CondicoesOperacionais { get; } = new ObservableCollection<string>();
public ObservableCollection<string> Logs { get; } = new ObservableCollection<string>();
public HmiModuleBadge()
{
SetStyle(
ControlStyles.SupportsTransparentBackColor |
ControlStyles.UserPaint |
ControlStyles.AllPaintingInWmPaint |
ControlStyles.OptimizedDoubleBuffer |
ControlStyles.ResizeRedraw,
true);
SetStyle(ControlStyles.SupportsTransparentBackColor | ControlStyles.UserPaint | ControlStyles.AllPaintingInWmPaint | ControlStyles.OptimizedDoubleBuffer | ControlStyles.ResizeRedraw, true);
DoubleBuffered = true;
BackColor = Color.Transparent;
ForeColor = HmiTheme.Text;
Cursor = Cursors.Hand;
Font = new Font("Segoe UI", 8F, FontStyle.Bold);
Size = new Size(45, 27);
MinimumSize = new Size(42, 26);
Font = new Font("Verdana", 6F, FontStyle.Bold);
Size = new Size(42, 20);
MinimumSize = new Size(53, 20);
UpdateStyles();
}
[Category("Conteúdo")]
public string ModuleCode
public T_Code ModuleCode
{
get { return _moduleCode; }
get
{
return _moduleCode;
}
set
{
_moduleCode = value ?? string.Empty;
_moduleCode = value;
Invalidate();
}
}
[Category("Estado")]
public HmiModuleState State
[Category("Conteúdo")]
public S_Code ModuleSubCode
{
get { return _state; }
get
{
return _moduleSubCode;
}
set
{
_moduleSubCode = value;
Invalidate();
}
}
[Category("Conteúdo")]
public string ModuleID
{
get
{
return _moduleId;
}
set
{
_moduleId = value ?? string.Empty;
Invalidate();
}
}
[Category("Estado")]
public StatusModulo State
{
get
{
return _state;
}
set
{
_state = value;
Invalidate();
}
}
private Color Accent
[Category("Estado")]
[DefaultValue(false)]
public bool Selecionado
{
get
{
switch (_state)
{
case HmiModuleState.Alerta:
return HmiTheme.Warning;
return _selecionado;
}
set
{
if (_selecionado == value)
return;
case HmiModuleState.Falha:
return HmiTheme.Danger;
case HmiModuleState.Desconectado:
return HmiTheme.TextMuted;
case HmiModuleState.Selecionado:
return HmiTheme.Info;
case HmiModuleState.Operante:
default:
return HmiTheme.Success;
}
_selecionado = value;
Invalidate();
}
}
[Category("Estado")]
[DefaultValue(false)]
public bool Mandatorio
{
get
{
return _mandatorio;
}
set
{
_mandatorio = value;
Invalidate();
}
}
[Category("Estado")]
[DefaultValue(true)]
public bool EmUso
{
get
{
return _emUso;
}
set
{
_emUso = value;
Invalidate();
}
}
protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e);
e.Graphics.SmoothingMode = SmoothingMode.AntiAlias;
Rectangle rect = new Rectangle(0, 0, Width - 1, Height - 1);
using (GraphicsPath path = CriarCaminhoArredondado(rect, 7))
e.Graphics.PixelOffsetMode = PixelOffsetMode.HighQuality;
Rectangle rect = new Rectangle(0, 0, Math.Max(1, Width - 1), Math.Max(1, Height - 1));
Color accent = FuncoesIHM.CorPorStatusModulo(State);
/*
* Fora de uso continua mostrando o estado conhecido,
* mas visualmente fica bastante reduzido.
*/
int alphaFundo = _emUso ? 34 : 14;
int alphaBorda = _emUso ? 255 : 95;
Color corFundo = Color.FromArgb(alphaFundo, accent.R, accent.G, accent.B);
Color corBorda = Color.FromArgb(alphaBorda, accent.R, accent.G, accent.B);
using (GraphicsPath path = CriarCaminhoArredondado(rect, 6))
using (SolidBrush fill = new SolidBrush(corFundo))
using (Pen border = new Pen(corBorda, 1.1F))
{
Color accent = Accent;
e.Graphics.FillPath(fill, path);
e.Graphics.DrawPath(border, path);
}
using (SolidBrush fill = new SolidBrush(
Color.FromArgb(34, accent.R, accent.G, accent.B)))
{
e.Graphics.FillPath(fill, path);
}
if (_selecionado)
{
Rectangle rectSelecao = new Rectangle(1, 1, Math.Max(1, Width - 3), Math.Max(1, Height - 3));
using (Pen border = new Pen(
accent,
_state == HmiModuleState.Selecionado ? 2F : 1.2F))
using (GraphicsPath pathSelecao = CriarCaminhoArredondado(rectSelecao, 6))
using (Pen brilho = new Pen(Color.FromArgb(90, HmiTheme.Info.R, HmiTheme.Info.G, HmiTheme.Info.B), 3.5F))
using (Pen bordaSelecao = new Pen(HmiTheme.Info, 1.7F))
{
e.Graphics.DrawPath(border, path);
e.Graphics.DrawPath(brilho, pathSelecao);
e.Graphics.DrawPath(bordaSelecao, pathSelecao);
}
}
TextRenderer.DrawText(
e.Graphics,
_moduleCode,
Font,
rect,
_state == HmiModuleState.Desconectado
? HmiTheme.TextMuted
: HmiTheme.Text,
TextFormatFlags.HorizontalCenter |
TextFormatFlags.VerticalCenter |
TextFormatFlags.EndEllipsis);
Rectangle lockRect = new Rectangle(5, (Height - 12) / 2, 9, 12);
DesenharCadeado(e.Graphics, lockRect, _mandatorio, _emUso ? accent : HmiTheme.TextMuted);
Rectangle textRect = new Rectangle(15, 1, Math.Max(1, Width - 18), Math.Max(1, Height - 2));
Color corTexto;
if (!_emUso)
{
corTexto = HmiTheme.TextMuted;
}
else if (_state == StatusModulo.Desconectado)
{
corTexto = HmiTheme.TextMuted;
}
else
{
corTexto = HmiTheme.Text;
}
TextRenderer.DrawText(e.Graphics, Text, Font, textRect, corTexto, TextFormatFlags.HorizontalCenter | TextFormatFlags.VerticalCenter | TextFormatFlags.EndEllipsis | TextFormatFlags.NoPadding);
}
private static GraphicsPath CriarCaminhoArredondado(
Rectangle bounds,
int radius)
private static void DesenharCadeado(Graphics graphics, Rectangle bounds, bool fechado, Color cor)
{
using (Pen pen = new Pen(cor, 1.3F))
using (SolidBrush brush = new SolidBrush(Color.FromArgb(55, cor.R, cor.G, cor.B)))
{
pen.StartCap = LineCap.Round;
pen.EndCap = LineCap.Round;
Rectangle corpo = new Rectangle(bounds.X, bounds.Y + 5, bounds.Width, bounds.Height - 5);
graphics.FillRectangle(brush, corpo);
graphics.DrawRectangle(pen, corpo);
if (fechado)
{
Rectangle arco = new Rectangle(bounds.X + 2, bounds.Y, bounds.Width - 4, 9);
graphics.DrawArc(pen, arco, 180, 180);
}
else
{
Rectangle arco = new Rectangle(bounds.X - 3, bounds.Y, bounds.Width - 4, 9);
graphics.DrawArc(pen, arco, 180, 180);
}
Point centro = new Point(corpo.Left + corpo.Width / 2, corpo.Top + corpo.Height / 2);
using (SolidBrush keyBrush = new SolidBrush(cor))
{
graphics.FillEllipse(keyBrush, centro.X - 1, centro.Y - 1, 2, 2);
}
}
}
private static GraphicsPath CriarCaminhoArredondado(Rectangle bounds, int radius)
{
GraphicsPath path = new GraphicsPath();
int diameter = radius * 2;
path.AddArc(
bounds.Left,
bounds.Top,
diameter,
diameter,
180,
90);
path.AddArc(
bounds.Right - diameter,
bounds.Top,
diameter,
diameter,
270,
90);
path.AddArc(
bounds.Right - diameter,
bounds.Bottom - diameter,
diameter,
diameter,
0,
90);
path.AddArc(
bounds.Left,
bounds.Bottom - diameter,
diameter,
diameter,
90,
90);
int diameter = Math.Min(radius * 2, Math.Min(bounds.Width, bounds.Height));
if (diameter <= 0)
{
path.AddRectangle(bounds);
path.CloseFigure();
return path;
}
path.AddArc(bounds.Left, bounds.Top, diameter, diameter, 180, 90);
path.AddArc(bounds.Right - diameter, bounds.Top, diameter, diameter, 270, 90);
path.AddArc(bounds.Right - diameter, bounds.Bottom - diameter, diameter, diameter, 0, 90);
path.AddArc(bounds.Left, bounds.Bottom - diameter, diameter, diameter, 90, 90);
path.CloseFigure();
return path;
}

View File

@ -1,159 +0,0 @@
using System;
using System.ComponentModel;
using System.Drawing;
using System.Windows.Forms;
namespace AgroBase.Forms.IHM.Controls
{
/// <summary>
/// Campo numérico compacto, padronizado e amigável para touchscreen.
/// </summary>
[DefaultEvent("ValueChanged")]
public class HmiNumericField : UserControl
{
private readonly TableLayoutPanel _layout;
private readonly Label _lblTitulo;
private readonly NumericUpDown _numeric;
private readonly Label _lblUnidade;
public event EventHandler ValueChanged;
public HmiNumericField()
{
DoubleBuffered = true;
BackColor = Color.Transparent;
Height = 53;
MinimumSize = Size.Empty;
Dock = DockStyle.Fill;
Margin = new Padding(2);
_layout = new TableLayoutPanel
{
Dock = DockStyle.Fill,
BackColor = Color.Transparent,
ColumnCount = 2,
RowCount = 2,
Margin = Padding.Empty,
Padding = Padding.Empty
};
_layout.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 100F));
_layout.ColumnStyles.Add(new ColumnStyle(SizeType.AutoSize));
_layout.RowStyles.Add(new RowStyle(SizeType.Absolute, 21F));
_layout.RowStyles.Add(new RowStyle(SizeType.Percent, 100F));
_lblTitulo = new Label
{
Dock = DockStyle.Fill,
AutoSize = false,
AutoEllipsis = true,
BackColor = Color.Transparent,
ForeColor = HmiTheme.TextMuted,
Font = new Font("Segoe UI", 7.6F, FontStyle.Regular),
Text = "Parâmetro",
TextAlign = ContentAlignment.BottomLeft,
Margin = Padding.Empty
};
_numeric = new NumericUpDown
{
Dock = DockStyle.Fill,
BackColor = HmiTheme.SurfaceRaised,
ForeColor = HmiTheme.Text,
BorderStyle = BorderStyle.FixedSingle,
Font = new Font("Segoe UI", 10.5F, FontStyle.Bold),
TextAlign = HorizontalAlignment.Center,
DecimalPlaces = 1,
Minimum = -100000,
Maximum = 100000,
Increment = 1,
Margin = new Padding(0, 2, 4, 0),
ThousandsSeparator = false
};
_lblUnidade = new Label
{
AutoSize = true,
Anchor = AnchorStyles.Right,
BackColor = Color.Transparent,
ForeColor = HmiTheme.TextMuted,
Font = new Font("Segoe UI", 8F, FontStyle.Bold),
Text = string.Empty,
TextAlign = ContentAlignment.MiddleRight,
Margin = new Padding(3, 0, 2, 0)
};
_layout.Controls.Add(_lblTitulo, 0, 0);
_layout.SetColumnSpan(_lblTitulo, 2);
_layout.Controls.Add(_numeric, 0, 1);
_layout.Controls.Add(_lblUnidade, 1, 1);
Controls.Add(_layout);
_numeric.ValueChanged += delegate
{
if (ValueChanged != null)
ValueChanged(this, EventArgs.Empty);
};
}
[Category("Conteúdo")]
public string Titulo
{
get { return _lblTitulo.Text; }
set { _lblTitulo.Text = value ?? string.Empty; }
}
[Category("Conteúdo")]
public string Unidade
{
get { return _lblUnidade.Text; }
set { _lblUnidade.Text = value ?? string.Empty; }
}
[Category("Dados")]
public decimal Value
{
get { return _numeric.Value; }
set
{
decimal ajustado = Math.Max(_numeric.Minimum, Math.Min(_numeric.Maximum, value));
_numeric.Value = ajustado;
}
}
[Category("Dados")]
public decimal Minimum
{
get { return _numeric.Minimum; }
set { _numeric.Minimum = value; }
}
[Category("Dados")]
public decimal Maximum
{
get { return _numeric.Maximum; }
set { _numeric.Maximum = value; }
}
[Category("Dados")]
public decimal Increment
{
get { return _numeric.Increment; }
set { _numeric.Increment = value; }
}
[Category("Dados")]
public int DecimalPlaces
{
get { return _numeric.DecimalPlaces; }
set { _numeric.DecimalPlaces = Math.Max(0, Math.Min(4, value)); }
}
[Browsable(false)]
public NumericUpDown NumericControl
{
get { return _numeric; }
}
}
}

View File

@ -1,185 +0,0 @@
using AgroBase.Forms.IHM.Controls;
using System;
using System.ComponentModel;
using System.Drawing;
using System.Windows.Forms;
namespace AgroBase.Forms.IHM.Operacao.Parametros.Controls
{
[DefaultEvent("ValueChanged")]
public class HmiNumericParameterCard : UserControl
{
private readonly Label _lblTitulo;
private readonly Label _lblDescricao;
private readonly NumericUpDown _numeric;
private readonly Label _lblUnidade;
private readonly ToolTip _toolTip;
public event EventHandler ValueChanged;
public HmiNumericParameterCard()
{
DoubleBuffered = true;
BackColor = HmiTheme.SurfaceRaised;
Margin = new Padding(3);
Padding = new Padding(10, 7, 10, 7);
MinimumSize = new Size(180, 88);
TableLayoutPanel root = new TableLayoutPanel
{
Dock = DockStyle.Fill,
BackColor = Color.Transparent,
ColumnCount = 2,
RowCount = 3,
Margin = Padding.Empty,
Padding = Padding.Empty
};
root.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 100F));
root.ColumnStyles.Add(new ColumnStyle(SizeType.Absolute, 42F));
root.RowStyles.Add(new RowStyle(SizeType.Absolute, 28F));
root.RowStyles.Add(new RowStyle(SizeType.Percent, 100F));
_lblTitulo = new Label
{
Dock = DockStyle.Fill,
AutoSize = false,
BackColor = Color.Transparent,
ForeColor = HmiTheme.Text,
Font = new Font("Segoe UI", 8.2F, FontStyle.Bold),
Text = "Parâmetro",
TextAlign = ContentAlignment.MiddleLeft,
AutoEllipsis = true,
Margin = Padding.Empty
};
_lblDescricao = new Label
{
Dock = DockStyle.Fill,
AutoSize = false,
BackColor = Color.Transparent,
ForeColor = HmiTheme.TextMuted,
Font = new Font("Segoe UI", 6.5F),
Text = "Descrição",
TextAlign = ContentAlignment.TopLeft,
AutoEllipsis = true,
Margin = Padding.Empty
};
_toolTip = new ToolTip();
_numeric = new NumericUpDown
{
Dock = DockStyle.Fill,
BackColor = HmiTheme.Surface,
ForeColor = HmiTheme.Text,
BorderStyle = BorderStyle.FixedSingle,
Font = new Font("Segoe UI", 9.5F, FontStyle.Bold),
TextAlign = HorizontalAlignment.Center,
Minimum = 0,
Maximum = 100,
DecimalPlaces = 1,
Increment = 0.5M,
Margin = new Padding(0, 3, 5, 3)
};
_lblUnidade = new Label
{
Dock = DockStyle.Fill,
AutoSize = false,
BackColor = Color.Transparent,
ForeColor = HmiTheme.TextMuted,
Font = new Font("Segoe UI", 8F, FontStyle.Bold),
Text = "m",
TextAlign = ContentAlignment.MiddleCenter,
Margin = new Padding(0, 3, 0, 3)
};
root.Controls.Add(_lblTitulo, 0, 0);
root.SetColumnSpan(_lblTitulo, 2);
root.Controls.Add(_numeric, 0, 1);
root.Controls.Add(_lblUnidade, 1, 1);
Controls.Add(root);
_numeric.ValueChanged += delegate
{
if (ValueChanged != null)
ValueChanged(this, EventArgs.Empty);
};
}
[Category("Conteúdo")]
public string Titulo
{
get { return _lblTitulo.Text; }
set { _lblTitulo.Text = value ?? string.Empty; }
}
[Category("Conteúdo")]
public string Descricao
{
get { return _lblDescricao.Text; }
set
{
_lblDescricao.Text = value ?? string.Empty;
_toolTip.SetToolTip(this, _lblDescricao.Text);
_toolTip.SetToolTip(_lblTitulo, _lblDescricao.Text);
_toolTip.SetToolTip(_numeric, _lblDescricao.Text);
}
}
[Category("Conteúdo")]
public string Unidade
{
get { return _lblUnidade.Text; }
set { _lblUnidade.Text = value ?? string.Empty; }
}
[Category("Dados")]
public decimal Value
{
get { return _numeric.Value; }
set
{
decimal novo = Math.Max(_numeric.Minimum, Math.Min(_numeric.Maximum, value));
_numeric.Value = novo;
}
}
[Category("Dados")]
public decimal Minimum
{
get { return _numeric.Minimum; }
set { _numeric.Minimum = value; }
}
[Category("Dados")]
public decimal Maximum
{
get { return _numeric.Maximum; }
set { _numeric.Maximum = value; }
}
[Category("Dados")]
public decimal Increment
{
get { return _numeric.Increment; }
set { _numeric.Increment = value; }
}
[Category("Dados")]
public int DecimalPlaces
{
get { return _numeric.DecimalPlaces; }
set { _numeric.DecimalPlaces = Math.Max(0, value); }
}
[Browsable(false)]
public NumericUpDown Numeric
{
get { return _numeric; }
}
}
}

View File

@ -6,7 +6,7 @@ using System.Windows.Forms;
namespace AgroBase.Forms.IHM.Controls
{
public class HmiRoundedPanel : UserControl
public class HmiRoundedPanel : Panel
{
private Color _fillColor = HmiTheme.Surface;
private Color _borderColor = HmiTheme.Border;

View File

@ -1,6 +1,8 @@
using System.ComponentModel;
using System;
using System.ComponentModel;
using System.Drawing;
using System.Windows.Forms;
using static AgroBase.Models.Enums;
namespace AgroBase.Forms.IHM.Controls.Operacao
{
@ -93,28 +95,31 @@ namespace AgroBase.Forms.IHM.Controls.Operacao
}
[Category("Conteúdo")]
public string Saude
public double Saude
{
get { return _lblSaude.Text; }
set { _lblSaude.Text = value ?? string.Empty; }
get
{
double.TryParse(_lblSaude.Text.Replace("%", ""), out double _saude);
return _saude;
}
set { _lblSaude.Text = $"{value:F0}%"; }
}
[Category("Conteúdo")]
public string Status
public StatusModulo Status
{
get { return _lblStatus.Text; }
set { _lblStatus.Text = value ?? string.Empty; }
}
[Category("Aparência")]
public Color StatusColor
{
get { return _lblStatus.ForeColor; }
get
{
Enum.TryParse(_lblStatus.Text, out StatusModulo _status);
return _status;
}
set
{
_lblStatus.ForeColor = value;
_lblSaude.ForeColor = value;
_lblStatus.Text = value.ToString();
_lblStatus.ForeColor = FuncoesIHM.CorPorStatusModulo(value);
_lblSaude.ForeColor = FuncoesIHM.CorPorStatusModulo(value);
}
}
}
}

View File

@ -0,0 +1,84 @@
using System;
using System.Drawing;
using System.Windows.Forms;
namespace AgroBase.Forms.IHM.Controls
{
public class HmiStatusLegend : Control
{
public HmiStatusLegend()
{
SetStyle(
ControlStyles.UserPaint |
ControlStyles.AllPaintingInWmPaint |
ControlStyles.OptimizedDoubleBuffer |
ControlStyles.ResizeRedraw |
ControlStyles.SupportsTransparentBackColor,
true);
BackColor = Color.Transparent;
Font = new Font("Segoe UI", 7.5F);
Height = 24;
}
protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e);
string[] textos =
{
"Operante",
"Alerta",
"Falha",
"Desconectado"
};
Color[] cores =
{
HmiTheme.Success,
HmiTheme.Warning,
HmiTheme.Danger,
HmiTheme.TextMuted
};
const int espacamento = 10;
const int diametro = 7;
const int distanciaTexto = 4;
int larguraTotal = 0;
for (int i = 0; i < textos.Length; i++)
{
Size tamanhoTexto = TextRenderer.MeasureText(textos[i], Font, Size.Empty, TextFormatFlags.NoPadding);
larguraTotal += diametro + distanciaTexto + tamanhoTexto.Width;
if (i < textos.Length - 1)
larguraTotal += espacamento;
}
int x = Math.Max(0, (Width - larguraTotal) / 2);
int centroY = Height / 2;
for (int i = 0; i < textos.Length; i++)
{
Rectangle circulo = new Rectangle(x, centroY - diametro / 2, diametro, diametro);
using (SolidBrush brush = new SolidBrush(cores[i]))
{
e.Graphics.FillEllipse(brush, circulo);
}
x += diametro + distanciaTexto;
Size tamanhoTexto = TextRenderer.MeasureText(textos[i], Font, Size.Empty, TextFormatFlags.NoPadding);
Rectangle textoRect = new Rectangle(x, 0, tamanhoTexto.Width, Height);
TextRenderer.DrawText(e.Graphics, textos[i], Font, textoRect, HmiTheme.TextMuted, TextFormatFlags.VerticalCenter | TextFormatFlags.NoPadding);
x += tamanhoTexto.Width + espacamento;
}
}
}
}

View File

@ -343,14 +343,14 @@ namespace AgroBase.Forms.IHM.Controls.Operacao
public string DirecionalSp
{
get { return _lblDirSp.Text; }
set { _lblDirSp.Text = "SP " + (value ?? string.Empty); }
set { _lblDirSp.Text = "SP " + (value ?? string.Empty).Replace("SP ", ""); }
}
[Category("Conteúdo")]
public string DirecionalAtual
{
get { return _lblDirAtual.Text; }
set { _lblDirAtual.Text = "AT " + (value ?? string.Empty); }
set { _lblDirAtual.Text = "AT " + (value ?? string.Empty).Replace("AT ", ""); }
}
[Category("Conteúdo")]
@ -364,14 +364,14 @@ namespace AgroBase.Forms.IHM.Controls.Operacao
public string MovimentoSp
{
get { return _lblMovSp.Text; }
set { _lblMovSp.Text = "SP " + (value ?? string.Empty); }
set { _lblMovSp.Text = "SP " + (value ?? string.Empty).Replace("SP ", ""); }
}
[Category("Conteúdo")]
public string MovimentoAtual
{
get { return _lblMovAtual.Text; }
set { _lblMovAtual.Text = "AT " + (value ?? string.Empty); }
set { _lblMovAtual.Text = "AT " + (value ?? string.Empty).Replace("AT ", ""); }
}
[Category("Conteúdo")]

View File

@ -1,4 +1,9 @@
using AgroBase.Models;
using MathNet.Numerics.Distributions;
using Newtonsoft.Json.Linq;
using System.Windows.Forms;
using System.Windows.Forms.DataVisualization.Charting;
using static System.Net.Mime.MediaTypeNames;
namespace AgroBase.Forms.IHM.Operacao.Parametros
{
@ -28,8 +33,8 @@ namespace AgroBase.Forms.IHM.Operacao.Parametros
this.paramKd = new AgroBase.Forms.IHM.Operacao.Parametros.Controls.HmiCompactNumericField();
this.pnlPulverizacao = new AgroBase.Forms.IHM.Controls.HmiRoundedPanel();
this.pulverizacaoLayout = new System.Windows.Forms.TableLayoutPanel();
this.lblPulverizacaoTitulo = new System.Windows.Forms.Label();
this.pulverizacaoHeaderLayout = new System.Windows.Forms.TableLayoutPanel();
this.lblPulverizacaoTitulo = new System.Windows.Forms.Label();
this.chkPulverizadorAutomatico = new System.Windows.Forms.CheckBox();
this.lblPulverizacaoDescricao = new System.Windows.Forms.Label();
this.parametrosLayout = new System.Windows.Forms.TableLayoutPanel();
@ -51,7 +56,7 @@ namespace AgroBase.Forms.IHM.Operacao.Parametros
//
// rootLayout
//
this.rootLayout.BackColor = AgroBase.Forms.IHM.Controls.HmiTheme.Background;
this.rootLayout.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(12)))), ((int)(((byte)(17)))), ((int)(((byte)(20)))));
this.rootLayout.ColumnCount = 2;
this.rootLayout.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 40F));
this.rootLayout.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 60F));
@ -59,9 +64,8 @@ namespace AgroBase.Forms.IHM.Operacao.Parametros
this.rootLayout.Controls.Add(this.pnlPulverizacao, 1, 0);
this.rootLayout.Dock = System.Windows.Forms.DockStyle.Fill;
this.rootLayout.Location = new System.Drawing.Point(0, 0);
this.rootLayout.Margin = System.Windows.Forms.Padding.Empty;
this.rootLayout.Margin = new System.Windows.Forms.Padding(0);
this.rootLayout.Name = "rootLayout";
this.rootLayout.Padding = System.Windows.Forms.Padding.Empty;
this.rootLayout.RowCount = 1;
this.rootLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
this.rootLayout.Size = new System.Drawing.Size(760, 286);
@ -69,9 +73,20 @@ namespace AgroBase.Forms.IHM.Operacao.Parametros
//
// pnlAgitador
//
ConfigurePanel(this.pnlAgitador, this.agitadorLayout);
this.pnlAgitador.AccentColor = System.Drawing.Color.FromArgb(((int)(((byte)(72)))), ((int)(((byte)(210)))), ((int)(((byte)(122)))));
this.pnlAgitador.BackColor = System.Drawing.Color.Transparent;
this.pnlAgitador.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(53)))), ((int)(((byte)(63)))), ((int)(((byte)(69)))));
this.pnlAgitador.Controls.Add(this.agitadorLayout);
this.pnlAgitador.CornerRadius = 9;
this.pnlAgitador.Dock = System.Windows.Forms.DockStyle.Fill;
this.pnlAgitador.FillColor = System.Drawing.Color.FromArgb(((int)(((byte)(24)))), ((int)(((byte)(29)))), ((int)(((byte)(33)))));
this.pnlAgitador.Location = new System.Drawing.Point(0, 0);
this.pnlAgitador.Margin = new System.Windows.Forms.Padding(0, 0, 3, 0);
this.pnlAgitador.MinimumSize = new System.Drawing.Size(30, 25);
this.pnlAgitador.Name = "pnlAgitador";
this.pnlAgitador.Padding = new System.Windows.Forms.Padding(8);
this.pnlAgitador.Size = new System.Drawing.Size(301, 286);
this.pnlAgitador.TabIndex = 0;
//
// agitadorLayout
//
@ -85,34 +100,53 @@ namespace AgroBase.Forms.IHM.Operacao.Parametros
this.agitadorLayout.Location = new System.Drawing.Point(8, 8);
this.agitadorLayout.Margin = new System.Windows.Forms.Padding(0);
this.agitadorLayout.Name = "agitadorLayout";
this.agitadorLayout.Padding = System.Windows.Forms.Padding.Empty;
this.agitadorLayout.RowCount = 4;
this.agitadorLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 26F));
this.agitadorLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 34F));
this.agitadorLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 50F));
this.agitadorLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
this.agitadorLayout.Size = new System.Drawing.Size(282, 270);
this.agitadorLayout.Size = new System.Drawing.Size(285, 270);
this.agitadorLayout.TabIndex = 0;
//
// lblAgitadorTitulo
//
SetupSectionTitle(this.lblAgitadorTitulo, "AGITADOR DE CALDA");
this.lblAgitadorTitulo.AutoEllipsis = true;
this.lblAgitadorTitulo.BackColor = System.Drawing.Color.Transparent;
this.lblAgitadorTitulo.Dock = System.Windows.Forms.DockStyle.Fill;
this.lblAgitadorTitulo.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Bold);
this.lblAgitadorTitulo.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(241)))), ((int)(((byte)(245)))), ((int)(((byte)(247)))));
this.lblAgitadorTitulo.Location = new System.Drawing.Point(0, 0);
this.lblAgitadorTitulo.Margin = new System.Windows.Forms.Padding(0);
this.lblAgitadorTitulo.Name = "lblAgitadorTitulo";
this.lblAgitadorTitulo.Size = new System.Drawing.Size(285, 26);
this.lblAgitadorTitulo.TabIndex = 0;
this.lblAgitadorTitulo.Text = "AGITADOR DE CALDA";
this.lblAgitadorTitulo.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
// lblAgitadorDescricao
//
SetupSectionDescription(this.lblAgitadorDescricao, "Selecione o modo e ajuste os ganhos PID usados no controle do agitador.");
this.lblAgitadorDescricao.AutoEllipsis = true;
this.lblAgitadorDescricao.BackColor = System.Drawing.Color.Transparent;
this.lblAgitadorDescricao.Dock = System.Windows.Forms.DockStyle.Fill;
this.lblAgitadorDescricao.Font = new System.Drawing.Font("Segoe UI", 7F);
this.lblAgitadorDescricao.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(164)))), ((int)(((byte)(174)))), ((int)(((byte)(181)))));
this.lblAgitadorDescricao.Location = new System.Drawing.Point(0, 26);
this.lblAgitadorDescricao.Margin = new System.Windows.Forms.Padding(0);
this.lblAgitadorDescricao.Name = "lblAgitadorDescricao";
this.lblAgitadorDescricao.Size = new System.Drawing.Size(285, 34);
this.lblAgitadorDescricao.TabIndex = 1;
this.lblAgitadorDescricao.Text = "Selecione o modo e ajuste os ganhos PID usados no controle do agitador.";
//
// seletorModoAgitador
//
this.seletorModoAgitador.BackColor = System.Drawing.Color.Transparent;
this.seletorModoAgitador.Dock = System.Windows.Forms.DockStyle.Fill;
this.seletorModoAgitador.Location = new System.Drawing.Point(0, 63);
this.seletorModoAgitador.Margin = new System.Windows.Forms.Padding(0, 3, 0, 5);
this.seletorModoAgitador.MinimumSize = new System.Drawing.Size(0, 40);
this.seletorModoAgitador.Name = "seletorModoAgitador";
this.seletorModoAgitador.SelectedMode = Enums.ModoAgitadorCalda.SemAgitacao;
this.seletorModoAgitador.Size = new System.Drawing.Size(282, 42);
this.seletorModoAgitador.SelectedMode = AgroBase.Models.Enums.ModoAgitadorCalda.SemAgitacao;
this.seletorModoAgitador.Size = new System.Drawing.Size(285, 42);
this.seletorModoAgitador.TabIndex = 2;
//
// pidLayout
@ -132,32 +166,115 @@ namespace AgroBase.Forms.IHM.Operacao.Parametros
this.pidLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 33.33F));
this.pidLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 33.33F));
this.pidLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 33.34F));
this.pidLayout.Size = new System.Drawing.Size(282, 160);
this.pidLayout.Size = new System.Drawing.Size(285, 160);
this.pidLayout.TabIndex = 3;
//
// paramKp
//
SetupNumeric(this.paramKp, "Kp", "", 1.10M, 0M, 20M, 0.05M, 2);
this.paramKp.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(36)))), ((int)(((byte)(41)))));
this.paramKp.DecimalPlaces = 2;
this.paramKp.Dock = System.Windows.Forms.DockStyle.Fill;
this.paramKp.Increment = new decimal(new int[] {
5,
0,
0,
131072});
this.paramKp.Location = new System.Drawing.Point(0, 2);
this.paramKp.Margin = new System.Windows.Forms.Padding(0, 2, 0, 4);
this.paramKp.Maximum = new decimal(new int[] {
20,
0,
0,
0});
this.paramKp.MinimumSize = new System.Drawing.Size(0, 60);
this.paramKp.Name = "paramKp";
this.paramKp.Padding = new System.Windows.Forms.Padding(4, 2, 4, 3);
this.paramKp.Size = new System.Drawing.Size(285, 60);
this.paramKp.TabIndex = 0;
this.paramKp.Titulo = "Kp";
this.paramKp.Unidade = "";
this.paramKp.Value = new decimal(new int[] {
110,
0,
0,
131072});
//
// paramKi
//
SetupNumeric(this.paramKi, "Ki", "", 0.12M, 0M, 20M, 0.01M, 2);
this.paramKi.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(36)))), ((int)(((byte)(41)))));
this.paramKi.DecimalPlaces = 2;
this.paramKi.Dock = System.Windows.Forms.DockStyle.Fill;
this.paramKi.Increment = new decimal(new int[] {
1,
0,
0,
131072});
this.paramKi.Location = new System.Drawing.Point(0, 52);
this.paramKi.Margin = new System.Windows.Forms.Padding(0, 2, 0, 4);
this.paramKi.Maximum = new decimal(new int[] {
20,
0,
0,
0});
this.paramKi.MinimumSize = new System.Drawing.Size(0, 60);
this.paramKi.Name = "paramKi";
this.paramKi.Padding = new System.Windows.Forms.Padding(4, 2, 4, 3);
this.paramKi.Size = new System.Drawing.Size(285, 60);
this.paramKi.TabIndex = 1;
this.paramKi.Titulo = "Ki";
this.paramKi.Unidade = "";
this.paramKi.Value = new decimal(new int[] {
12,
0,
0,
131072});
//
// paramKd
//
SetupNumeric(this.paramKd, "Kd", "", 0.03M, 0M, 20M, 0.01M, 2);
this.paramKd.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(36)))), ((int)(((byte)(41)))));
this.paramKd.DecimalPlaces = 2;
this.paramKd.Dock = System.Windows.Forms.DockStyle.Fill;
this.paramKd.Increment = new decimal(new int[] {
1,
0,
0,
131072});
this.paramKd.Location = new System.Drawing.Point(0, 102);
this.paramKd.Margin = new System.Windows.Forms.Padding(0, 2, 0, 3);
this.paramKd.Maximum = new decimal(new int[] {
20,
0,
0,
0});
this.paramKd.MinimumSize = new System.Drawing.Size(0, 60);
this.paramKd.Name = "paramKd";
this.paramKd.Padding = new System.Windows.Forms.Padding(4, 2, 4, 3);
this.paramKd.Size = new System.Drawing.Size(285, 60);
this.paramKd.TabIndex = 2;
this.paramKd.Titulo = "Kd";
this.paramKd.Unidade = "";
this.paramKd.Value = new decimal(new int[] {
3,
0,
0,
131072});
//
// pnlPulverizacao
//
ConfigurePanel(this.pnlPulverizacao, this.pulverizacaoLayout);
this.pnlPulverizacao.AccentColor = System.Drawing.Color.FromArgb(((int)(((byte)(72)))), ((int)(((byte)(210)))), ((int)(((byte)(122)))));
this.pnlPulverizacao.BackColor = System.Drawing.Color.Transparent;
this.pnlPulverizacao.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(53)))), ((int)(((byte)(63)))), ((int)(((byte)(69)))));
this.pnlPulverizacao.Controls.Add(this.pulverizacaoLayout);
this.pnlPulverizacao.CornerRadius = 9;
this.pnlPulverizacao.Dock = System.Windows.Forms.DockStyle.Fill;
this.pnlPulverizacao.FillColor = System.Drawing.Color.FromArgb(((int)(((byte)(24)))), ((int)(((byte)(29)))), ((int)(((byte)(33)))));
this.pnlPulverizacao.Location = new System.Drawing.Point(307, 0);
this.pnlPulverizacao.Margin = new System.Windows.Forms.Padding(3, 0, 0, 0);
this.pnlPulverizacao.MinimumSize = new System.Drawing.Size(30, 25);
this.pnlPulverizacao.Name = "pnlPulverizacao";
this.pnlPulverizacao.Padding = new System.Windows.Forms.Padding(8);
this.pnlPulverizacao.Size = new System.Drawing.Size(453, 286);
this.pnlPulverizacao.TabIndex = 1;
//
// pulverizacaoLayout
//
@ -170,12 +287,11 @@ namespace AgroBase.Forms.IHM.Operacao.Parametros
this.pulverizacaoLayout.Location = new System.Drawing.Point(8, 8);
this.pulverizacaoLayout.Margin = new System.Windows.Forms.Padding(0);
this.pulverizacaoLayout.Name = "pulverizacaoLayout";
this.pulverizacaoLayout.Padding = System.Windows.Forms.Padding.Empty;
this.pulverizacaoLayout.RowCount = 3;
this.pulverizacaoLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 26F));
this.pulverizacaoLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 34F));
this.pulverizacaoLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
this.pulverizacaoLayout.Size = new System.Drawing.Size(434, 270);
this.pulverizacaoLayout.Size = new System.Drawing.Size(437, 270);
this.pulverizacaoLayout.TabIndex = 0;
//
// pulverizacaoHeaderLayout
@ -187,36 +303,60 @@ namespace AgroBase.Forms.IHM.Operacao.Parametros
this.pulverizacaoHeaderLayout.Controls.Add(this.lblPulverizacaoTitulo, 0, 0);
this.pulverizacaoHeaderLayout.Controls.Add(this.chkPulverizadorAutomatico, 1, 0);
this.pulverizacaoHeaderLayout.Dock = System.Windows.Forms.DockStyle.Fill;
this.pulverizacaoHeaderLayout.Margin = System.Windows.Forms.Padding.Empty;
this.pulverizacaoHeaderLayout.Padding = System.Windows.Forms.Padding.Empty;
this.pulverizacaoHeaderLayout.Location = new System.Drawing.Point(0, 0);
this.pulverizacaoHeaderLayout.Margin = new System.Windows.Forms.Padding(0);
this.pulverizacaoHeaderLayout.Name = "pulverizacaoHeaderLayout";
this.pulverizacaoHeaderLayout.RowCount = 1;
this.pulverizacaoHeaderLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
//
// chkPulverizadorAutomatico
//
this.chkPulverizadorAutomatico.AutoSize = false;
this.chkPulverizadorAutomatico.Dock = System.Windows.Forms.DockStyle.Fill;
this.chkPulverizadorAutomatico.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.chkPulverizadorAutomatico.FlatAppearance.BorderSize = 0;
this.chkPulverizadorAutomatico.BackColor = System.Drawing.Color.Transparent;
this.chkPulverizadorAutomatico.ForeColor = AgroBase.Forms.IHM.Controls.HmiTheme.Success;
this.chkPulverizadorAutomatico.Font = new System.Drawing.Font("Segoe UI", 7F, System.Drawing.FontStyle.Bold);
this.chkPulverizadorAutomatico.Text = "Pulverizador automático";
this.chkPulverizadorAutomatico.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
this.chkPulverizadorAutomatico.CheckAlign = System.Drawing.ContentAlignment.MiddleRight;
this.chkPulverizadorAutomatico.Margin = new System.Windows.Forms.Padding(0, 0, 2, 0);
this.chkPulverizadorAutomatico.Name = "chkPulverizadorAutomatico";
this.chkPulverizadorAutomatico.TabIndex = 0;
this.pulverizacaoHeaderLayout.Size = new System.Drawing.Size(437, 26);
this.pulverizacaoHeaderLayout.TabIndex = 0;
//
// lblPulverizacaoTitulo
//
SetupSectionTitle(this.lblPulverizacaoTitulo, "PULVERIZAÇÃO E WEED WORKER");
this.lblPulverizacaoTitulo.AutoEllipsis = true;
this.lblPulverizacaoTitulo.BackColor = System.Drawing.Color.Transparent;
this.lblPulverizacaoTitulo.Dock = System.Windows.Forms.DockStyle.Fill;
this.lblPulverizacaoTitulo.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Bold);
this.lblPulverizacaoTitulo.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(241)))), ((int)(((byte)(245)))), ((int)(((byte)(247)))));
this.lblPulverizacaoTitulo.Location = new System.Drawing.Point(0, 0);
this.lblPulverizacaoTitulo.Margin = new System.Windows.Forms.Padding(0);
this.lblPulverizacaoTitulo.Name = "lblPulverizacaoTitulo";
this.lblPulverizacaoTitulo.Size = new System.Drawing.Size(267, 26);
this.lblPulverizacaoTitulo.TabIndex = 0;
this.lblPulverizacaoTitulo.Text = "PULVERIZAÇÃO E WEED WORKER";
this.lblPulverizacaoTitulo.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
// chkPulverizadorAutomatico
//
this.chkPulverizadorAutomatico.BackColor = System.Drawing.Color.Transparent;
this.chkPulverizadorAutomatico.CheckAlign = System.Drawing.ContentAlignment.MiddleRight;
this.chkPulverizadorAutomatico.Dock = System.Windows.Forms.DockStyle.Fill;
this.chkPulverizadorAutomatico.FlatAppearance.BorderSize = 0;
this.chkPulverizadorAutomatico.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.chkPulverizadorAutomatico.Font = new System.Drawing.Font("Segoe UI", 7F, System.Drawing.FontStyle.Bold);
this.chkPulverizadorAutomatico.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(72)))), ((int)(((byte)(210)))), ((int)(((byte)(122)))));
this.chkPulverizadorAutomatico.Location = new System.Drawing.Point(267, 0);
this.chkPulverizadorAutomatico.Margin = new System.Windows.Forms.Padding(0, 0, 2, 0);
this.chkPulverizadorAutomatico.Name = "chkPulverizadorAutomatico";
this.chkPulverizadorAutomatico.Size = new System.Drawing.Size(168, 26);
this.chkPulverizadorAutomatico.TabIndex = 0;
this.chkPulverizadorAutomatico.Text = "Pulverizador automático";
this.chkPulverizadorAutomatico.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
this.chkPulverizadorAutomatico.UseVisualStyleBackColor = false;
//
// lblPulverizacaoDescricao
//
SetupSectionDescription(this.lblPulverizacaoDescricao, "Defina os recursos da operação e os limites da região de atuação de cada bico.");
this.lblPulverizacaoDescricao.AutoEllipsis = true;
this.lblPulverizacaoDescricao.BackColor = System.Drawing.Color.Transparent;
this.lblPulverizacaoDescricao.Dock = System.Windows.Forms.DockStyle.Fill;
this.lblPulverizacaoDescricao.Font = new System.Drawing.Font("Segoe UI", 7F);
this.lblPulverizacaoDescricao.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(164)))), ((int)(((byte)(174)))), ((int)(((byte)(181)))));
this.lblPulverizacaoDescricao.Location = new System.Drawing.Point(0, 26);
this.lblPulverizacaoDescricao.Margin = new System.Windows.Forms.Padding(0);
this.lblPulverizacaoDescricao.Name = "lblPulverizacaoDescricao";
this.lblPulverizacaoDescricao.Size = new System.Drawing.Size(437, 34);
this.lblPulverizacaoDescricao.TabIndex = 1;
this.lblPulverizacaoDescricao.Text = "Defina os recursos da operação e os limites da região de atuação de cada bico.";
//
// parametrosLayout
//
@ -234,54 +374,163 @@ namespace AgroBase.Forms.IHM.Operacao.Parametros
this.parametrosLayout.Location = new System.Drawing.Point(0, 60);
this.parametrosLayout.Margin = new System.Windows.Forms.Padding(0);
this.parametrosLayout.Name = "parametrosLayout";
this.parametrosLayout.Padding = System.Windows.Forms.Padding.Empty;
this.parametrosLayout.RowCount = 3;
this.parametrosLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 33.33F));
this.parametrosLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 33.33F));
this.parametrosLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 33.34F));
this.parametrosLayout.Size = new System.Drawing.Size(434, 210);
this.parametrosLayout.Size = new System.Drawing.Size(437, 210);
this.parametrosLayout.TabIndex = 2;
//
// paramBicosEmUso
//
SetupNumeric(this.paramBicosEmUso, "Bicos em uso", "", 7M, 1M, 12M, 1M, 0);
this.paramBicosEmUso.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(36)))), ((int)(((byte)(41)))));
this.paramBicosEmUso.Dock = System.Windows.Forms.DockStyle.Fill;
this.paramBicosEmUso.Location = new System.Drawing.Point(2, 2);
this.paramBicosEmUso.Margin = new System.Windows.Forms.Padding(2, 2, 4, 4);
this.paramBicosEmUso.Maximum = new decimal(new int[] {
12,
0,
0,
0});
this.paramBicosEmUso.Minimum = new decimal(new int[] {
1,
0,
0,
0});
this.paramBicosEmUso.MinimumSize = new System.Drawing.Size(0, 60);
this.paramBicosEmUso.Name = "paramBicosEmUso";
this.paramBicosEmUso.Padding = new System.Windows.Forms.Padding(7, 5, 7, 5);
this.paramBicosEmUso.Size = new System.Drawing.Size(212, 63);
this.paramBicosEmUso.TabIndex = 0;
this.paramBicosEmUso.Titulo = "Bicos em uso";
this.paramBicosEmUso.Unidade = "";
this.paramBicosEmUso.Value = new decimal(new int[] {
7,
0,
0,
0});
//
// paramPressaoLinha
//
SetupNumeric(this.paramPressaoLinha, "Pressão da linha", "psi", 18M, 0M, 120M, 1M, 0);
this.paramPressaoLinha.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(36)))), ((int)(((byte)(41)))));
this.paramPressaoLinha.Dock = System.Windows.Forms.DockStyle.Fill;
this.paramPressaoLinha.Location = new System.Drawing.Point(222, 2);
this.paramPressaoLinha.Margin = new System.Windows.Forms.Padding(4, 2, 2, 4);
this.paramPressaoLinha.Maximum = new decimal(new int[] {
120,
0,
0,
0});
this.paramPressaoLinha.MinimumSize = new System.Drawing.Size(0, 60);
this.paramPressaoLinha.Name = "paramPressaoLinha";
this.paramPressaoLinha.Padding = new System.Windows.Forms.Padding(7, 5, 7, 5);
this.paramPressaoLinha.Size = new System.Drawing.Size(213, 63);
this.paramPressaoLinha.TabIndex = 1;
this.paramPressaoLinha.Titulo = "Pressão da linha";
this.paramPressaoLinha.Unidade = "psi";
this.paramPressaoLinha.Value = new decimal(new int[] {
18,
0,
0,
0});
//
// paramInicioTela
//
SetupNumeric(this.paramInicioTela, "Início da atuação", "%", 85M, 0M, 100M, 1M, 0);
this.paramInicioTela.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(36)))), ((int)(((byte)(41)))));
this.paramInicioTela.Dock = System.Windows.Forms.DockStyle.Fill;
this.paramInicioTela.Location = new System.Drawing.Point(2, 71);
this.paramInicioTela.Margin = new System.Windows.Forms.Padding(2, 2, 4, 4);
this.paramInicioTela.MinimumSize = new System.Drawing.Size(0, 60);
this.paramInicioTela.Name = "paramInicioTela";
this.paramInicioTela.Padding = new System.Windows.Forms.Padding(7, 5, 7, 5);
this.paramInicioTela.Size = new System.Drawing.Size(212, 63);
this.paramInicioTela.TabIndex = 2;
this.paramInicioTela.Titulo = "Início da atuação";
this.paramInicioTela.Unidade = "%";
this.paramInicioTela.Value = new decimal(new int[] {
85,
0,
0,
0});
//
// paramAlturaArea
//
SetupNumeric(this.paramAlturaArea, "Altura da área", "%", 15M, 1M, 100M, 1M, 0);
this.paramAlturaArea.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(36)))), ((int)(((byte)(41)))));
this.paramAlturaArea.Dock = System.Windows.Forms.DockStyle.Fill;
this.paramAlturaArea.Location = new System.Drawing.Point(222, 71);
this.paramAlturaArea.Margin = new System.Windows.Forms.Padding(4, 2, 2, 4);
this.paramAlturaArea.Minimum = new decimal(new int[] {
1,
0,
0,
0});
this.paramAlturaArea.MinimumSize = new System.Drawing.Size(0, 60);
this.paramAlturaArea.Name = "paramAlturaArea";
this.paramAlturaArea.Padding = new System.Windows.Forms.Padding(7, 5, 7, 5);
this.paramAlturaArea.Size = new System.Drawing.Size(213, 63);
this.paramAlturaArea.TabIndex = 3;
this.paramAlturaArea.Titulo = "Altura da área";
this.paramAlturaArea.Unidade = "%";
this.paramAlturaArea.Value = new decimal(new int[] {
15,
0,
0,
0});
//
// paramErvasOn
//
SetupNumeric(this.paramErvasOn, "Ervas para ligar", "%", 25.0M, 0M, 100M, 0.5M, 1);
this.paramErvasOn.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(36)))), ((int)(((byte)(41)))));
this.paramErvasOn.DecimalPlaces = 1;
this.paramErvasOn.Dock = System.Windows.Forms.DockStyle.Fill;
this.paramErvasOn.Increment = new decimal(new int[] {
5,
0,
0,
65536});
this.paramErvasOn.Location = new System.Drawing.Point(2, 140);
this.paramErvasOn.Margin = new System.Windows.Forms.Padding(2, 2, 4, 0);
this.paramErvasOn.MinimumSize = new System.Drawing.Size(0, 60);
this.paramErvasOn.Name = "paramErvasOn";
this.paramErvasOn.Padding = new System.Windows.Forms.Padding(7, 5, 7, 5);
this.paramErvasOn.Size = new System.Drawing.Size(212, 70);
this.paramErvasOn.TabIndex = 4;
this.paramErvasOn.Titulo = "Ervas para ligar";
this.paramErvasOn.Unidade = "%";
this.paramErvasOn.Value = new decimal(new int[] {
250,
0,
0,
65536});
//
// paramErvasOff
//
SetupNumeric(this.paramErvasOff, "Ervas para desligar", "%", 15.0M, 0M, 100M, 0.5M, 1);
this.paramErvasOff.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(36)))), ((int)(((byte)(41)))));
this.paramErvasOff.DecimalPlaces = 1;
this.paramErvasOff.Dock = System.Windows.Forms.DockStyle.Fill;
this.paramErvasOff.Increment = new decimal(new int[] {
5,
0,
0,
65536});
this.paramErvasOff.Location = new System.Drawing.Point(222, 140);
this.paramErvasOff.Margin = new System.Windows.Forms.Padding(4, 2, 2, 0);
this.paramErvasOff.MinimumSize = new System.Drawing.Size(0, 60);
this.paramErvasOff.Name = "paramErvasOff";
this.paramErvasOff.Padding = new System.Windows.Forms.Padding(7, 5, 7, 5);
this.paramErvasOff.Size = new System.Drawing.Size(213, 70);
this.paramErvasOff.TabIndex = 5;
this.paramErvasOff.Titulo = "Ervas para desligar";
this.paramErvasOff.Unidade = "%";
this.paramErvasOff.Value = new decimal(new int[] {
150,
0,
0,
65536});
//
// ucParametrosAtuador
//
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;
this.BackColor = AgroBase.Forms.IHM.Controls.HmiTheme.Background;
this.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(12)))), ((int)(((byte)(17)))), ((int)(((byte)(20)))));
this.Controls.Add(this.rootLayout);
this.DoubleBuffered = true;
this.Margin = new System.Windows.Forms.Padding(0);
@ -296,53 +545,7 @@ namespace AgroBase.Forms.IHM.Operacao.Parametros
this.pulverizacaoHeaderLayout.ResumeLayout(false);
this.parametrosLayout.ResumeLayout(false);
this.ResumeLayout(false);
}
private static void ConfigurePanel(AgroBase.Forms.IHM.Controls.HmiRoundedPanel panel, System.Windows.Forms.Control child)
{
panel.BorderColor = AgroBase.Forms.IHM.Controls.HmiTheme.Border;
panel.Controls.Add(child);
panel.CornerRadius = 9;
panel.Dock = System.Windows.Forms.DockStyle.Fill;
panel.FillColor = AgroBase.Forms.IHM.Controls.HmiTheme.Surface;
panel.Padding = new System.Windows.Forms.Padding(8);
}
private static void SetupSectionTitle(System.Windows.Forms.Label label, string text)
{
label.AutoEllipsis = true;
label.BackColor = System.Drawing.Color.Transparent;
label.Dock = System.Windows.Forms.DockStyle.Fill;
label.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Bold);
label.ForeColor = AgroBase.Forms.IHM.Controls.HmiTheme.Text;
label.Margin = System.Windows.Forms.Padding.Empty;
label.Text = text;
label.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
}
private static void SetupSectionDescription(System.Windows.Forms.Label label, string text)
{
label.AutoEllipsis = true;
label.BackColor = System.Drawing.Color.Transparent;
label.Dock = System.Windows.Forms.DockStyle.Fill;
label.Font = new System.Drawing.Font("Segoe UI", 7F);
label.ForeColor = AgroBase.Forms.IHM.Controls.HmiTheme.TextMuted;
label.Margin = System.Windows.Forms.Padding.Empty;
label.Text = text;
label.TextAlign = System.Drawing.ContentAlignment.TopLeft;
}
private static void SetupNumeric(AgroBase.Forms.IHM.Operacao.Parametros.Controls.HmiCompactNumericField field, string title, string unit, decimal value, decimal minimum, decimal maximum, decimal increment, int decimalPlaces)
{
field.Dock = System.Windows.Forms.DockStyle.Fill;
field.MinimumSize = new System.Drawing.Size(0, 60);
field.Titulo = title;
field.Unidade = unit;
field.Minimum = minimum;
field.Maximum = maximum;
field.Increment = increment;
field.DecimalPlaces = decimalPlaces;
field.Value = value;
}
#endregion

View File

@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View File

@ -1,4 +1,10 @@
using AgroBase.Models;
using MathNet.Numerics.Distributions;
using Newtonsoft.Json.Linq;
using System.Windows.Forms;
using System.Windows.Forms.DataVisualization.Charting;
using static System.Net.Mime.MediaTypeNames;
using static System.Windows.Forms.VisualStyles.VisualStyleElement.ProgressBar;
namespace AgroBase.Forms.IHM.Operacao.Parametros
{
@ -71,7 +77,12 @@ namespace AgroBase.Forms.IHM.Operacao.Parametros
this.rootLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 42F));
// Assistências
ConfigurePanel(this.pnlAssistencias, this.assistenciasLayout);
this.pnlAssistencias.BorderColor = AgroBase.Forms.IHM.Controls.HmiTheme.Border;
this.pnlAssistencias.Controls.Add(this.assistenciasLayout);
this.pnlAssistencias.CornerRadius = 9;
this.pnlAssistencias.Dock = System.Windows.Forms.DockStyle.Fill;
this.pnlAssistencias.FillColor = AgroBase.Forms.IHM.Controls.HmiTheme.Surface;
this.pnlAssistencias.Padding = new System.Windows.Forms.Padding(8);
this.pnlAssistencias.Margin = new System.Windows.Forms.Padding(0, 0, 3, 3);
this.pnlAssistencias.Padding = new System.Windows.Forms.Padding(8);
@ -88,8 +99,14 @@ namespace AgroBase.Forms.IHM.Operacao.Parametros
this.assistenciasLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 25F));
this.assistenciasLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
SetupSectionTitle(this.lblAssistenciasTitulo, "AUTOMAÇÃO E ASSISTÊNCIAS");
SetupSectionDescription(this.lblAssistenciasDescricao, "Defina quais recursos podem interferir no controle direcional.");
this.lblAssistenciasTitulo.AutoEllipsis = true;
this.lblAssistenciasTitulo.BackColor = System.Drawing.Color.Transparent;
this.lblAssistenciasTitulo.Dock = System.Windows.Forms.DockStyle.Fill;
this.lblAssistenciasTitulo.Font = new System.Drawing.Font("Segoe UI", 6.7F);
this.lblAssistenciasTitulo.ForeColor = AgroBase.Forms.IHM.Controls.HmiTheme.TextMuted;
this.lblAssistenciasTitulo.Margin = System.Windows.Forms.Padding.Empty;
this.lblAssistenciasTitulo.Text = "Defina quais recursos podem interferir no controle direcional.";
this.lblAssistenciasTitulo.TextAlign = System.Drawing.ContentAlignment.TopLeft;
this.checksLayout.BackColor = System.Drawing.Color.Transparent;
this.checksLayout.ColumnCount = 2;
@ -106,13 +123,37 @@ namespace AgroBase.Forms.IHM.Operacao.Parametros
this.checksLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F));
this.checksLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F));
SetupCheck(this.checkDirecionalAutomatico, "Direcional automático");
SetupCheck(this.checkAssistidoSonar, "Assistido por sonar");
SetupCheck(this.checkAssistidoImu, "Assistido por IMU");
SetupCheck(this.checkImuPrefereArco, "IMU prefere arco");
this.checkDirecionalAutomatico.Dock = System.Windows.Forms.DockStyle.Fill;
this.checkDirecionalAutomatico.Titulo = "Direcional automático";
this.checkDirecionalAutomatico.Checked = true;
this.checkDirecionalAutomatico.Margin = new System.Windows.Forms.Padding(3);
this.checkDirecionalAutomatico.MinimumSize = System.Drawing.Size.Empty;
this.checkAssistidoSonar.Dock = System.Windows.Forms.DockStyle.Fill;
this.checkAssistidoSonar.Titulo = "Assistido por sonar";
this.checkAssistidoSonar.Checked = true;
this.checkAssistidoSonar.Margin = new System.Windows.Forms.Padding(3);
this.checkAssistidoSonar.MinimumSize = System.Drawing.Size.Empty;
this.checkAssistidoImu.Dock = System.Windows.Forms.DockStyle.Fill;
this.checkAssistidoImu.Titulo = "Assistido por IMU";
this.checkAssistidoImu.Checked = true;
this.checkAssistidoImu.Margin = new System.Windows.Forms.Padding(3);
this.checkAssistidoImu.MinimumSize = System.Drawing.Size.Empty;
this.checkImuPrefereArco.Dock = System.Windows.Forms.DockStyle.Fill;
this.checkImuPrefereArco.Titulo = "IMU prefere arco";
this.checkImuPrefereArco.Checked = true;
this.checkImuPrefereArco.Margin = new System.Windows.Forms.Padding(3);
this.checkImuPrefereArco.MinimumSize = System.Drawing.Size.Empty;
// Controle direcional
ConfigurePanel(this.pnlControle, this.controleLayout);
this.pnlControle.BorderColor = AgroBase.Forms.IHM.Controls.HmiTheme.Border;
this.pnlControle.Controls.Add(this.controleLayout);
this.pnlControle.CornerRadius = 9;
this.pnlControle.Dock = System.Windows.Forms.DockStyle.Fill;
this.pnlControle.FillColor = AgroBase.Forms.IHM.Controls.HmiTheme.Surface;
this.pnlControle.Padding = new System.Windows.Forms.Padding(8);
this.pnlControle.Margin = new System.Windows.Forms.Padding(3, 0, 0, 3);
this.pnlControle.Padding = new System.Windows.Forms.Padding(8);
@ -133,8 +174,23 @@ namespace AgroBase.Forms.IHM.Operacao.Parametros
this.controleLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 25F));
this.controleLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
SetupSectionTitle(this.lblControleTitulo, "LIMITES DO DIRECIONAL");
SetupSectionDescription(this.lblControleDescricao, "Ajuste o ângulo máximo e a velocidade usada pelos motores de passo.");
this.lblControleTitulo.AutoEllipsis = true;
this.lblControleTitulo.BackColor = System.Drawing.Color.Transparent;
this.lblControleTitulo.Dock = System.Windows.Forms.DockStyle.Fill;
this.lblControleTitulo.Font = new System.Drawing.Font("Segoe UI", 8.5F, System.Drawing.FontStyle.Bold);
this.lblControleTitulo.ForeColor = AgroBase.Forms.IHM.Controls.HmiTheme.Text;
this.lblControleTitulo.Margin = System.Windows.Forms.Padding.Empty;
this.lblControleTitulo.Text = "LIMITES DO DIRECIONAL";
this.lblControleTitulo.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
this.lblControleDescricao.AutoEllipsis = true;
this.lblControleDescricao.BackColor = System.Drawing.Color.Transparent;
this.lblControleDescricao.Dock = System.Windows.Forms.DockStyle.Fill;
this.lblControleDescricao.Font = new System.Drawing.Font("Segoe UI", 6.7F);
this.lblControleDescricao.ForeColor = AgroBase.Forms.IHM.Controls.HmiTheme.TextMuted;
this.lblControleDescricao.Margin = System.Windows.Forms.Padding.Empty;
this.lblControleDescricao.Text = "Ajuste o ângulo máximo e a velocidade usada pelos motores de passo.";
this.lblControleDescricao.TextAlign = System.Drawing.ContentAlignment.TopLeft;
this.sliderAnguloMaximo.Dock = System.Windows.Forms.DockStyle.Fill;
this.sliderAnguloMaximo.Margin = new System.Windows.Forms.Padding(0, 2, 3, 0);
@ -157,7 +213,12 @@ namespace AgroBase.Forms.IHM.Operacao.Parametros
this.sliderVelocidadeDirecional.AccentColor = AgroBase.Forms.IHM.Controls.HmiTheme.Info;
// Controle e navegação
ConfigurePanel(this.pnlNavegacao, this.navegacaoLayout);
this.pnlNavegacao.BorderColor = AgroBase.Forms.IHM.Controls.HmiTheme.Border;
this.pnlNavegacao.Controls.Add(this.navegacaoLayout);
this.pnlNavegacao.CornerRadius = 9;
this.pnlNavegacao.Dock = System.Windows.Forms.DockStyle.Fill;
this.pnlNavegacao.FillColor = AgroBase.Forms.IHM.Controls.HmiTheme.Surface;
this.pnlNavegacao.Padding = new System.Windows.Forms.Padding(8);
this.pnlNavegacao.Margin = new System.Windows.Forms.Padding(0, 3, 0, 0);
this.pnlNavegacao.Padding = new System.Windows.Forms.Padding(8);
@ -177,18 +238,41 @@ namespace AgroBase.Forms.IHM.Operacao.Parametros
this.navegacaoLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 22F));
this.navegacaoLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
SetupSectionTitle(this.lblNavegacaoTitulo, "CONTROLE E NAVEGAÇÃO");
this.lblNavegacaoTitulo.AutoEllipsis = true;
this.lblNavegacaoTitulo.BackColor = System.Drawing.Color.Transparent;
this.lblNavegacaoTitulo.Dock = System.Windows.Forms.DockStyle.Fill;
this.lblNavegacaoTitulo.Font = new System.Drawing.Font("Segoe UI", 8.5F, System.Drawing.FontStyle.Bold);
this.lblNavegacaoTitulo.ForeColor = AgroBase.Forms.IHM.Controls.HmiTheme.Text;
this.lblNavegacaoTitulo.Margin = System.Windows.Forms.Padding.Empty;
this.lblNavegacaoTitulo.Text = "CONTROLE E NAVEGAÇÃO";
this.lblNavegacaoTitulo.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
this.seletorModoControle.Dock = System.Windows.Forms.DockStyle.Fill;
this.seletorModoControle.Margin = new System.Windows.Forms.Padding(0, 1, 3, 0);
this.seletorModoControle.MinimumSize = System.Drawing.Size.Empty;
this.seletorModoControle.SelectedMode = Enums.TiposControladorDirecional.MPC;
SetupNumeric(this.parametroHorizonte, "Horizonte de predição", "m", 4M, 1M, 30M, 0.5M, 1);
this.parametroHorizonte.Dock = System.Windows.Forms.DockStyle.Fill;
this.parametroHorizonte.MinimumSize = new System.Drawing.Size(0, 60);
this.parametroHorizonte.Titulo = "Horizonte de predição";
this.parametroHorizonte.Unidade = "m";
this.parametroHorizonte.Minimum = 1M;
this.parametroHorizonte.Maximum = 30M;
this.parametroHorizonte.Increment = 0.5M;
this.parametroHorizonte.DecimalPlaces = 1;
this.parametroHorizonte.Value = 4M;
this.parametroHorizonte.Margin = new System.Windows.Forms.Padding(3, 1, 3, 3);
this.parametroHorizonte.Name = "parametroHorizonte";
SetupNumeric(this.parametroDistanciaSaida, "Distância para manobra", "m", 5M, 0M, 20M, 0.5M, 1);
this.parametroDistanciaSaida.Dock = System.Windows.Forms.DockStyle.Fill;
this.parametroDistanciaSaida.MinimumSize = new System.Drawing.Size(0, 60);
this.parametroDistanciaSaida.Titulo = "Distância para manobra";
this.parametroDistanciaSaida.Unidade = "m";
this.parametroDistanciaSaida.Minimum = 0M;
this.parametroDistanciaSaida.Maximum = 20M;
this.parametroDistanciaSaida.Increment = 0.5M;
this.parametroDistanciaSaida.DecimalPlaces = 1;
this.parametroDistanciaSaida.Value = 5M;
this.parametroDistanciaSaida.Margin = new System.Windows.Forms.Padding(3, 1, 0, 3);
this.parametroDistanciaSaida.Name = "parametroDistanciaSaida";
@ -211,62 +295,6 @@ namespace AgroBase.Forms.IHM.Operacao.Parametros
this.ResumeLayout(false);
}
private static void ConfigurePanel(AgroBase.Forms.IHM.Controls.HmiRoundedPanel panel, System.Windows.Forms.Control child)
{
panel.BorderColor = AgroBase.Forms.IHM.Controls.HmiTheme.Border;
panel.Controls.Add(child);
panel.CornerRadius = 9;
panel.Dock = System.Windows.Forms.DockStyle.Fill;
panel.FillColor = AgroBase.Forms.IHM.Controls.HmiTheme.Surface;
panel.Padding = new System.Windows.Forms.Padding(8);
}
private static void SetupSectionTitle(System.Windows.Forms.Label label, string text)
{
label.AutoEllipsis = true;
label.BackColor = System.Drawing.Color.Transparent;
label.Dock = System.Windows.Forms.DockStyle.Fill;
label.Font = new System.Drawing.Font("Segoe UI", 8.5F, System.Drawing.FontStyle.Bold);
label.ForeColor = AgroBase.Forms.IHM.Controls.HmiTheme.Text;
label.Margin = System.Windows.Forms.Padding.Empty;
label.Text = text;
label.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
}
private static void SetupSectionDescription(System.Windows.Forms.Label label, string text)
{
label.AutoEllipsis = true;
label.BackColor = System.Drawing.Color.Transparent;
label.Dock = System.Windows.Forms.DockStyle.Fill;
label.Font = new System.Drawing.Font("Segoe UI", 6.7F);
label.ForeColor = AgroBase.Forms.IHM.Controls.HmiTheme.TextMuted;
label.Margin = System.Windows.Forms.Padding.Empty;
label.Text = text;
label.TextAlign = System.Drawing.ContentAlignment.TopLeft;
}
private static void SetupCheck(AgroBase.Forms.IHM.Operacao.Parametros.Controls.HmiCompactCheckRow check, string title)
{
check.Dock = System.Windows.Forms.DockStyle.Fill;
check.Titulo = title;
check.Checked = true;
check.Margin = new System.Windows.Forms.Padding(3);
check.MinimumSize = System.Drawing.Size.Empty;
}
private static void SetupNumeric(AgroBase.Forms.IHM.Operacao.Parametros.Controls.HmiCompactNumericField field, string title, string unit, decimal value, decimal minimum, decimal maximum, decimal increment, int decimalPlaces)
{
field.Dock = System.Windows.Forms.DockStyle.Fill;
field.MinimumSize = new System.Drawing.Size(0, 60);
field.Titulo = title;
field.Unidade = unit;
field.Minimum = minimum;
field.Maximum = maximum;
field.Increment = increment;
field.DecimalPlaces = decimalPlaces;
field.Value = value;
}
#endregion
private System.Windows.Forms.TableLayoutPanel rootLayout;

View File

@ -2,6 +2,7 @@
using AgroBase.Forms.IHM.Controls.Operacao;
using System.Drawing;
using System.Windows.Forms;
using System.Windows.Forms.DataVisualization.Charting;
namespace AgroBase.Forms.IHM.Operacao.Parametros
{
@ -127,10 +128,33 @@ namespace AgroBase.Forms.IHM.Operacao.Parametros
this.lblArquivoValor.Padding = new Padding(6, 0, 6, 0);
this.lblArquivoValor.Margin = new Padding(0, 0, 0, 4);
ConfigurarMetrica(this.metricRuas, "Ruas", "0 / 0", 82);
ConfigurarMetrica(this.metricDistancia, "Distância", "0,0 m", 88);
ConfigurarMetrica(this.metricTempo, "Tempo estimado", "00:00:00", 88);
ConfigurarMetrica(this.metricMapaTotal, "Mapa total", "0,0 m", 88);
this.metricRuas.Dock = DockStyle.Fill;
this.metricRuas.Margin = Padding.Empty;
this.metricRuas.Titulo = "Ruas";
this.metricRuas.Valor = "0 / 0";
this.metricRuas.LarguraValor = 82;
this.metricRuas.CorValor = HmiTheme.Success;
this.metricDistancia.Dock = DockStyle.Fill;
this.metricDistancia.Margin = Padding.Empty;
this.metricDistancia.Titulo = "Distância";
this.metricDistancia.Valor = "0,0 m";
this.metricDistancia.LarguraValor = 88;
this.metricDistancia.CorValor = HmiTheme.Success;
this.metricTempo.Dock = DockStyle.Fill;
this.metricTempo.Margin = Padding.Empty;
this.metricTempo.Titulo = "Tempo estimado";
this.metricTempo.Valor = "00:00:00";
this.metricTempo.LarguraValor = 88;
this.metricTempo.CorValor = HmiTheme.Success;
this.metricMapaTotal.Dock = DockStyle.Fill;
this.metricMapaTotal.Margin = Padding.Empty;
this.metricMapaTotal.Titulo = "Mapa total";
this.metricMapaTotal.Valor = "0,0 m";
this.metricMapaTotal.LarguraValor = 88;
this.metricMapaTotal.CorValor = HmiTheme.Success;
this.lblInstrucao.Dock = DockStyle.Fill;
this.lblInstrucao.BackColor = HmiTheme.SurfaceRaised;
@ -190,15 +214,6 @@ namespace AgroBase.Forms.IHM.Operacao.Parametros
this.ResumeLayout(false);
}
private static void ConfigurarMetrica(HmiNavigationMetric metric, string titulo, string valor, int larguraValor)
{
metric.Dock = DockStyle.Fill;
metric.Margin = Padding.Empty;
metric.Titulo = titulo;
metric.Valor = valor;
metric.LarguraValor = larguraValor;
metric.CorValor = HmiTheme.Success;
}
private TableLayoutPanel rootLayout;

View File

@ -1,4 +1,10 @@
namespace AgroBase.Forms.IHM.Operacao.Parametros
using MathNet.Numerics.Distributions;
using System.Windows.Forms;
using System.Windows.Forms.DataVisualization.Charting;
using static System.Net.Mime.MediaTypeNames;
using static System.Windows.Forms.VisualStyles.VisualStyleElement.ProgressBar;
namespace AgroBase.Forms.IHM.Operacao.Parametros
{
partial class ucParametrosMovimento
{
@ -55,7 +61,12 @@
this.rootLayout.RowCount = 1;
this.rootLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
ConfigurePanel(this.pnlAutomacao, this.automacaoLayout);
this.pnlAutomacao.BorderColor = AgroBase.Forms.IHM.Controls.HmiTheme.Border;
this.pnlAutomacao.Controls.Add(this.automacaoLayout);
this.pnlAutomacao.CornerRadius = 9;
this.pnlAutomacao.Dock = System.Windows.Forms.DockStyle.Fill;
this.pnlAutomacao.FillColor = AgroBase.Forms.IHM.Controls.HmiTheme.Surface;
this.pnlAutomacao.Padding = new System.Windows.Forms.Padding(10);
this.pnlAutomacao.Margin = new System.Windows.Forms.Padding(0, 0, 3, 0);
this.automacaoLayout.ColumnCount = 1;
@ -71,8 +82,23 @@
this.automacaoLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 32F));
this.automacaoLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
SetupSectionTitle(this.lblAutomacaoTitulo, "AUTOMAÇÃO E ASSISTÊNCIAS");
SetupSectionDescription(this.lblAutomacaoDescricao, "Ative somente os recursos que devem participar do controle de movimento.");
this.lblAutomacaoTitulo.AutoEllipsis = true;
this.lblAutomacaoTitulo.BackColor = System.Drawing.Color.Transparent;
this.lblAutomacaoTitulo.Dock = System.Windows.Forms.DockStyle.Fill;
this.lblAutomacaoTitulo.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Bold);
this.lblAutomacaoTitulo.ForeColor = AgroBase.Forms.IHM.Controls.HmiTheme.Text;
this.lblAutomacaoTitulo.Margin = System.Windows.Forms.Padding.Empty;
this.lblAutomacaoTitulo.Text = "AUTOMAÇÃO E ASSISTÊNCIAS";
this.lblAutomacaoTitulo.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
this.lblAutomacaoDescricao.AutoEllipsis = true;
this.lblAutomacaoDescricao.BackColor = System.Drawing.Color.Transparent;
this.lblAutomacaoDescricao.Dock = System.Windows.Forms.DockStyle.Fill;
this.lblAutomacaoDescricao.Font = new System.Drawing.Font("Segoe UI", 7F);
this.lblAutomacaoDescricao.ForeColor = AgroBase.Forms.IHM.Controls.HmiTheme.TextMuted;
this.lblAutomacaoDescricao.Margin = System.Windows.Forms.Padding.Empty;
this.lblAutomacaoDescricao.Text = "Ative somente os recursos que devem participar do controle de movimento.";
this.lblAutomacaoDescricao.TextAlign = System.Drawing.ContentAlignment.TopLeft;
this.checksLayout.BackColor = System.Drawing.Color.Transparent;
this.checksLayout.ColumnCount = 2;
@ -92,14 +118,48 @@
this.checksLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 33.33F));
this.checksLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 33.34F));
SetupCheck(this.checkMovimentoAutomatico, "Movimento automático");
SetupCheck(this.checkAssistidoSonar, "Assistido por sonar");
SetupCheck(this.checkParadaObstaculo, "Parada por obstáculo");
SetupCheck(this.checkAssistidoImu, "Assistido por IMU");
SetupCheck(this.checkParadaInclinacao, "Parada por inclinação");
SetupCheck(this.checkFrenagemParar, "Frenagem ao parar");
this.checkMovimentoAutomatico.Dock = System.Windows.Forms.DockStyle.Fill;
this.checkMovimentoAutomatico.Titulo = "Movimento automático";
this.checkMovimentoAutomatico.Checked = true;
this.checkMovimentoAutomatico.Margin = new System.Windows.Forms.Padding(3);
this.checkMovimentoAutomatico.MinimumSize = System.Drawing.Size.Empty;
ConfigurePanel(this.pnlVelocidades, this.velocidadesLayout);
this.checkAssistidoSonar.Dock = System.Windows.Forms.DockStyle.Fill;
this.checkAssistidoSonar.Titulo = "Assistido por sonar";
this.checkAssistidoSonar.Checked = true;
this.checkAssistidoSonar.Margin = new System.Windows.Forms.Padding(3);
this.checkAssistidoSonar.MinimumSize = System.Drawing.Size.Empty;
this.checkParadaObstaculo.Dock = System.Windows.Forms.DockStyle.Fill;
this.checkParadaObstaculo.Titulo = "Parada por obstáculo";
this.checkParadaObstaculo.Checked = true;
this.checkParadaObstaculo.Margin = new System.Windows.Forms.Padding(3);
this.checkParadaObstaculo.MinimumSize = System.Drawing.Size.Empty;
this.checkAssistidoImu.Dock = System.Windows.Forms.DockStyle.Fill;
this.checkAssistidoImu.Titulo = "Assistido por IMU";
this.checkAssistidoImu.Checked = true;
this.checkAssistidoImu.Margin = new System.Windows.Forms.Padding(3);
this.checkAssistidoImu.MinimumSize = System.Drawing.Size.Empty;
this.checkParadaInclinacao.Dock = System.Windows.Forms.DockStyle.Fill;
this.checkParadaInclinacao.Titulo = "Parada por inclinação";
this.checkParadaInclinacao.Checked = true;
this.checkParadaInclinacao.Margin = new System.Windows.Forms.Padding(3);
this.checkParadaInclinacao.MinimumSize = System.Drawing.Size.Empty;
this.checkFrenagemParar.Dock = System.Windows.Forms.DockStyle.Fill;
this.checkFrenagemParar.Titulo = "Frenagem ao parar";
this.checkFrenagemParar.Checked = true;
this.checkFrenagemParar.Margin = new System.Windows.Forms.Padding(3);
this.checkFrenagemParar.MinimumSize = System.Drawing.Size.Empty;
this.pnlVelocidades.BorderColor = AgroBase.Forms.IHM.Controls.HmiTheme.Border;
this.pnlVelocidades.Controls.Add(this.velocidadesLayout);
this.pnlVelocidades.CornerRadius = 9;
this.pnlVelocidades.Dock = System.Windows.Forms.DockStyle.Fill;
this.pnlVelocidades.FillColor = AgroBase.Forms.IHM.Controls.HmiTheme.Surface;
this.pnlVelocidades.Padding = new System.Windows.Forms.Padding(10);
this.pnlVelocidades.Margin = new System.Windows.Forms.Padding(3, 0, 0, 0);
this.velocidadesLayout.ColumnCount = 1;
@ -117,8 +177,23 @@
this.velocidadesLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F));
this.velocidadesLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F));
SetupSectionTitle(this.lblVelocidadesTitulo, "LIMITES DE VELOCIDADE");
SetupSectionDescription(this.lblVelocidadesDescricao, "A velocidade em km/h é calculada pelo percentual da velocidade máxima do equipamento.");
this.lblVelocidadesTitulo.AutoEllipsis = true;
this.lblVelocidadesTitulo.BackColor = System.Drawing.Color.Transparent;
this.lblVelocidadesTitulo.Dock = System.Windows.Forms.DockStyle.Fill;
this.lblVelocidadesTitulo.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Bold);
this.lblVelocidadesTitulo.ForeColor = AgroBase.Forms.IHM.Controls.HmiTheme.Text;
this.lblVelocidadesTitulo.Margin = System.Windows.Forms.Padding.Empty;
this.lblVelocidadesTitulo.Text = "LIMITES DE VELOCIDADE";
this.lblVelocidadesTitulo.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
this.lblVelocidadesDescricao.AutoEllipsis = true;
this.lblVelocidadesDescricao.BackColor = System.Drawing.Color.Transparent;
this.lblVelocidadesDescricao.Dock = System.Windows.Forms.DockStyle.Fill;
this.lblVelocidadesDescricao.Font = new System.Drawing.Font("Segoe UI", 7F);
this.lblVelocidadesDescricao.ForeColor = AgroBase.Forms.IHM.Controls.HmiTheme.TextMuted;
this.lblVelocidadesDescricao.Margin = System.Windows.Forms.Padding.Empty;
this.lblVelocidadesDescricao.Text = "A velocidade em km/h é calculada pelo percentual da velocidade máxima do equipamento.";
this.lblVelocidadesDescricao.TextAlign = System.Drawing.ContentAlignment.TopLeft;
this.sliderSemErvas.Dock = System.Windows.Forms.DockStyle.Fill;
this.sliderSemErvas.Margin = new System.Windows.Forms.Padding(0, 2, 0, 3);
@ -150,49 +225,6 @@
this.ResumeLayout(false);
}
private static void ConfigurePanel(AgroBase.Forms.IHM.Controls.HmiRoundedPanel panel, System.Windows.Forms.Control child)
{
panel.BorderColor = AgroBase.Forms.IHM.Controls.HmiTheme.Border;
panel.Controls.Add(child);
panel.CornerRadius = 9;
panel.Dock = System.Windows.Forms.DockStyle.Fill;
panel.FillColor = AgroBase.Forms.IHM.Controls.HmiTheme.Surface;
panel.Padding = new System.Windows.Forms.Padding(10);
}
private static void SetupSectionTitle(System.Windows.Forms.Label label, string text)
{
label.AutoEllipsis = true;
label.BackColor = System.Drawing.Color.Transparent;
label.Dock = System.Windows.Forms.DockStyle.Fill;
label.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Bold);
label.ForeColor = AgroBase.Forms.IHM.Controls.HmiTheme.Text;
label.Margin = System.Windows.Forms.Padding.Empty;
label.Text = text;
label.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
}
private static void SetupSectionDescription(System.Windows.Forms.Label label, string text)
{
label.AutoEllipsis = true;
label.BackColor = System.Drawing.Color.Transparent;
label.Dock = System.Windows.Forms.DockStyle.Fill;
label.Font = new System.Drawing.Font("Segoe UI", 7F);
label.ForeColor = AgroBase.Forms.IHM.Controls.HmiTheme.TextMuted;
label.Margin = System.Windows.Forms.Padding.Empty;
label.Text = text;
label.TextAlign = System.Drawing.ContentAlignment.TopLeft;
}
private static void SetupCheck(AgroBase.Forms.IHM.Operacao.Parametros.Controls.HmiCompactCheckRow check, string title)
{
check.Dock = System.Windows.Forms.DockStyle.Fill;
check.Titulo = title;
check.Checked = true;
check.Margin = new System.Windows.Forms.Padding(3);
check.MinimumSize = System.Drawing.Size.Empty;
}
#endregion
private System.Windows.Forms.TableLayoutPanel rootLayout;

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View File

@ -1,4 +1,7 @@
namespace AgroBase.Forms.IHM.Operacao
using static System.Net.Mime.MediaTypeNames;
using System.Drawing;
namespace AgroBase.Forms.IHM.Operacao
{
partial class ucOperacaoParametros
{
@ -22,29 +25,22 @@
this.btnAbaDirecional = new System.Windows.Forms.Button();
this.btnAbaAtuador = new System.Windows.Forms.Button();
this.btnAbaMapa = new System.Windows.Forms.Button();
this.pnlDescricaoAba = new AgroBase.Forms.IHM.Controls.HmiRoundedPanel();
this.lblDescricaoAba = new System.Windows.Forms.Label();
this.pnlConteudo = new AgroBase.Forms.IHM.Controls.HmiRoundedPanel();
this.footerPanel = new AgroBase.Forms.IHM.Controls.HmiRoundedPanel();
this.footerLayout = new System.Windows.Forms.TableLayoutPanel();
this.campoModoLayout = new System.Windows.Forms.TableLayoutPanel();
this.lblModoOperacao = new System.Windows.Forms.Label();
this.cmbModoOperacao = new System.Windows.Forms.ComboBox();
this.campoModoLayout = new System.Windows.Forms.TableLayoutPanel();
this.campoDescricaoLayout = new System.Windows.Forms.TableLayoutPanel();
this.campoRegistroLayout = new System.Windows.Forms.TableLayoutPanel();
this.lblDescricaoOperacao = new System.Windows.Forms.Label();
this.txtDescricaoOperacao = new System.Windows.Forms.TextBox();
this.campoRegistroLayout = new System.Windows.Forms.TableLayoutPanel();
this.lblRegistroDados = new System.Windows.Forms.Label();
this.chkRegistrarPosProcessamento = new System.Windows.Forms.CheckBox();
this.btnRedefinir = new AgroBase.Forms.IHM.Controls.HmiSidebarButton();
this.btnSalvar = new AgroBase.Forms.IHM.Controls.HmiSidebarButton();
this.rootLayout.SuspendLayout();
this.tabsLayout.SuspendLayout();
this.pnlDescricaoAba.SuspendLayout();
@ -54,9 +50,10 @@
this.campoDescricaoLayout.SuspendLayout();
this.campoRegistroLayout.SuspendLayout();
this.SuspendLayout();
//
// rootLayout
this.rootLayout.BackColor = AgroBase.Forms.IHM.Controls.HmiTheme.Background;
//
this.rootLayout.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(12)))), ((int)(((byte)(17)))), ((int)(((byte)(20)))));
this.rootLayout.ColumnCount = 1;
this.rootLayout.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
this.rootLayout.Controls.Add(this.tabsLayout, 0, 0);
@ -64,15 +61,19 @@
this.rootLayout.Controls.Add(this.pnlConteudo, 0, 2);
this.rootLayout.Controls.Add(this.footerPanel, 0, 3);
this.rootLayout.Dock = System.Windows.Forms.DockStyle.Fill;
this.rootLayout.Margin = System.Windows.Forms.Padding.Empty;
this.rootLayout.Padding = System.Windows.Forms.Padding.Empty;
this.rootLayout.Location = new System.Drawing.Point(0, 0);
this.rootLayout.Margin = new System.Windows.Forms.Padding(0);
this.rootLayout.Name = "rootLayout";
this.rootLayout.RowCount = 4;
this.rootLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 45F));
this.rootLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 28F));
this.rootLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
this.rootLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 62F));
this.rootLayout.Size = new System.Drawing.Size(784, 435);
this.rootLayout.TabIndex = 0;
//
// tabsLayout
//
this.tabsLayout.BackColor = System.Drawing.Color.Transparent;
this.tabsLayout.ColumnCount = 4;
this.tabsLayout.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 25F));
@ -84,53 +85,149 @@
this.tabsLayout.Controls.Add(this.btnAbaAtuador, 2, 0);
this.tabsLayout.Controls.Add(this.btnAbaMapa, 3, 0);
this.tabsLayout.Dock = System.Windows.Forms.DockStyle.Fill;
this.tabsLayout.Location = new System.Drawing.Point(0, 0);
this.tabsLayout.Margin = new System.Windows.Forms.Padding(0, 0, 0, 3);
this.tabsLayout.Padding = System.Windows.Forms.Padding.Empty;
this.tabsLayout.Name = "tabsLayout";
this.tabsLayout.RowCount = 1;
this.tabsLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
SetupTabButton(this.btnAbaMovimento, "↔ Movimento");
SetupTabButton(this.btnAbaDirecional, "◉ Direcional");
SetupTabButton(this.btnAbaAtuador, "♨ Atuador");
SetupTabButton(this.btnAbaMapa, "⌖ Mapa e Navegação");
this.tabsLayout.Size = new System.Drawing.Size(784, 42);
this.tabsLayout.TabIndex = 0;
//
// btnAbaMovimento
//
this.btnAbaMovimento.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(24)))), ((int)(((byte)(29)))), ((int)(((byte)(33)))));
this.btnAbaMovimento.Cursor = System.Windows.Forms.Cursors.Hand;
this.btnAbaMovimento.Dock = System.Windows.Forms.DockStyle.Fill;
this.btnAbaMovimento.FlatAppearance.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(53)))), ((int)(((byte)(63)))), ((int)(((byte)(69)))));
this.btnAbaMovimento.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.btnAbaMovimento.Font = new System.Drawing.Font("Segoe UI", 8.5F, System.Drawing.FontStyle.Bold);
this.btnAbaMovimento.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(164)))), ((int)(((byte)(174)))), ((int)(((byte)(181)))));
this.btnAbaMovimento.Location = new System.Drawing.Point(2, 0);
this.btnAbaMovimento.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
this.btnAbaMovimento.Name = "btnAbaMovimento";
this.btnAbaMovimento.Size = new System.Drawing.Size(192, 42);
this.btnAbaMovimento.TabIndex = 0;
this.btnAbaMovimento.Text = "↔ Movimento";
this.btnAbaMovimento.UseVisualStyleBackColor = false;
//
// btnAbaDirecional
//
this.btnAbaDirecional.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(24)))), ((int)(((byte)(29)))), ((int)(((byte)(33)))));
this.btnAbaDirecional.Cursor = System.Windows.Forms.Cursors.Hand;
this.btnAbaDirecional.Dock = System.Windows.Forms.DockStyle.Fill;
this.btnAbaDirecional.FlatAppearance.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(53)))), ((int)(((byte)(63)))), ((int)(((byte)(69)))));
this.btnAbaDirecional.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.btnAbaDirecional.Font = new System.Drawing.Font("Segoe UI", 8.5F, System.Drawing.FontStyle.Bold);
this.btnAbaDirecional.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(164)))), ((int)(((byte)(174)))), ((int)(((byte)(181)))));
this.btnAbaDirecional.Location = new System.Drawing.Point(198, 0);
this.btnAbaDirecional.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
this.btnAbaDirecional.Name = "btnAbaDirecional";
this.btnAbaDirecional.Size = new System.Drawing.Size(192, 42);
this.btnAbaDirecional.TabIndex = 1;
this.btnAbaDirecional.Text = "◉ Direcional";
this.btnAbaDirecional.UseVisualStyleBackColor = false;
//
// btnAbaAtuador
//
this.btnAbaAtuador.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(24)))), ((int)(((byte)(29)))), ((int)(((byte)(33)))));
this.btnAbaAtuador.Cursor = System.Windows.Forms.Cursors.Hand;
this.btnAbaAtuador.Dock = System.Windows.Forms.DockStyle.Fill;
this.btnAbaAtuador.FlatAppearance.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(53)))), ((int)(((byte)(63)))), ((int)(((byte)(69)))));
this.btnAbaAtuador.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.btnAbaAtuador.Font = new System.Drawing.Font("Segoe UI", 8.5F, System.Drawing.FontStyle.Bold);
this.btnAbaAtuador.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(164)))), ((int)(((byte)(174)))), ((int)(((byte)(181)))));
this.btnAbaAtuador.Location = new System.Drawing.Point(394, 0);
this.btnAbaAtuador.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
this.btnAbaAtuador.Name = "btnAbaAtuador";
this.btnAbaAtuador.Size = new System.Drawing.Size(192, 42);
this.btnAbaAtuador.TabIndex = 2;
this.btnAbaAtuador.Text = "♨ Atuador";
this.btnAbaAtuador.UseVisualStyleBackColor = false;
//
// btnAbaMapa
//
this.btnAbaMapa.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(24)))), ((int)(((byte)(29)))), ((int)(((byte)(33)))));
this.btnAbaMapa.Cursor = System.Windows.Forms.Cursors.Hand;
this.btnAbaMapa.Dock = System.Windows.Forms.DockStyle.Fill;
this.btnAbaMapa.FlatAppearance.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(53)))), ((int)(((byte)(63)))), ((int)(((byte)(69)))));
this.btnAbaMapa.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.btnAbaMapa.Font = new System.Drawing.Font("Segoe UI", 8.5F, System.Drawing.FontStyle.Bold);
this.btnAbaMapa.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(164)))), ((int)(((byte)(174)))), ((int)(((byte)(181)))));
this.btnAbaMapa.Location = new System.Drawing.Point(590, 0);
this.btnAbaMapa.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
this.btnAbaMapa.Name = "btnAbaMapa";
this.btnAbaMapa.Size = new System.Drawing.Size(192, 42);
this.btnAbaMapa.TabIndex = 3;
this.btnAbaMapa.Text = "⌖ Mapa e Navegação";
this.btnAbaMapa.UseVisualStyleBackColor = false;
//
// pnlDescricaoAba
this.pnlDescricaoAba.BorderColor = AgroBase.Forms.IHM.Controls.HmiTheme.Border;
//
this.pnlDescricaoAba.AccentColor = System.Drawing.Color.FromArgb(((int)(((byte)(72)))), ((int)(((byte)(210)))), ((int)(((byte)(122)))));
this.pnlDescricaoAba.BackColor = System.Drawing.Color.Transparent;
this.pnlDescricaoAba.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(53)))), ((int)(((byte)(63)))), ((int)(((byte)(69)))));
this.pnlDescricaoAba.Controls.Add(this.lblDescricaoAba);
this.pnlDescricaoAba.CornerRadius = 7;
this.pnlDescricaoAba.Dock = System.Windows.Forms.DockStyle.Fill;
this.pnlDescricaoAba.FillColor = AgroBase.Forms.IHM.Controls.HmiTheme.SurfaceRaised;
this.pnlDescricaoAba.FillColor = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(36)))), ((int)(((byte)(41)))));
this.pnlDescricaoAba.Location = new System.Drawing.Point(0, 45);
this.pnlDescricaoAba.Margin = new System.Windows.Forms.Padding(0, 0, 0, 3);
this.pnlDescricaoAba.MinimumSize = new System.Drawing.Size(30, 25);
this.pnlDescricaoAba.Name = "pnlDescricaoAba";
this.pnlDescricaoAba.Padding = new System.Windows.Forms.Padding(10, 0, 10, 0);
this.pnlDescricaoAba.Size = new System.Drawing.Size(784, 25);
this.pnlDescricaoAba.TabIndex = 1;
//
// lblDescricaoAba
//
this.lblDescricaoAba.AutoEllipsis = true;
this.lblDescricaoAba.BackColor = System.Drawing.Color.Transparent;
this.lblDescricaoAba.Dock = System.Windows.Forms.DockStyle.Fill;
this.lblDescricaoAba.Font = new System.Drawing.Font("Segoe UI", 7.2F);
this.lblDescricaoAba.ForeColor = AgroBase.Forms.IHM.Controls.HmiTheme.TextMuted;
this.lblDescricaoAba.Margin = System.Windows.Forms.Padding.Empty;
this.lblDescricaoAba.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(164)))), ((int)(((byte)(174)))), ((int)(((byte)(181)))));
this.lblDescricaoAba.Location = new System.Drawing.Point(10, 0);
this.lblDescricaoAba.Margin = new System.Windows.Forms.Padding(0);
this.lblDescricaoAba.Name = "lblDescricaoAba";
this.lblDescricaoAba.Size = new System.Drawing.Size(764, 25);
this.lblDescricaoAba.TabIndex = 0;
this.lblDescricaoAba.Text = "Automação, assistências e velocidades de deslocamento";
this.lblDescricaoAba.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
// pnlConteudo
this.pnlConteudo.BorderColor = AgroBase.Forms.IHM.Controls.HmiTheme.Border;
//
this.pnlConteudo.AccentColor = System.Drawing.Color.FromArgb(((int)(((byte)(72)))), ((int)(((byte)(210)))), ((int)(((byte)(122)))));
this.pnlConteudo.BackColor = System.Drawing.Color.Transparent;
this.pnlConteudo.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(53)))), ((int)(((byte)(63)))), ((int)(((byte)(69)))));
this.pnlConteudo.CornerRadius = 9;
this.pnlConteudo.Dock = System.Windows.Forms.DockStyle.Fill;
this.pnlConteudo.FillColor = AgroBase.Forms.IHM.Controls.HmiTheme.Surface;
this.pnlConteudo.FillColor = System.Drawing.Color.FromArgb(((int)(((byte)(24)))), ((int)(((byte)(29)))), ((int)(((byte)(33)))));
this.pnlConteudo.Location = new System.Drawing.Point(0, 73);
this.pnlConteudo.Margin = new System.Windows.Forms.Padding(0, 0, 0, 3);
this.pnlConteudo.MinimumSize = new System.Drawing.Size(30, 25);
this.pnlConteudo.Name = "pnlConteudo";
this.pnlConteudo.Padding = new System.Windows.Forms.Padding(6);
this.pnlConteudo.Size = new System.Drawing.Size(784, 297);
this.pnlConteudo.TabIndex = 2;
//
// footerPanel
this.footerPanel.BorderColor = AgroBase.Forms.IHM.Controls.HmiTheme.Border;
//
this.footerPanel.AccentColor = System.Drawing.Color.FromArgb(((int)(((byte)(72)))), ((int)(((byte)(210)))), ((int)(((byte)(122)))));
this.footerPanel.BackColor = System.Drawing.Color.Transparent;
this.footerPanel.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(53)))), ((int)(((byte)(63)))), ((int)(((byte)(69)))));
this.footerPanel.Controls.Add(this.footerLayout);
this.footerPanel.CornerRadius = 9;
this.footerPanel.Dock = System.Windows.Forms.DockStyle.Fill;
this.footerPanel.FillColor = AgroBase.Forms.IHM.Controls.HmiTheme.Surface;
this.footerPanel.Margin = System.Windows.Forms.Padding.Empty;
this.footerPanel.FillColor = System.Drawing.Color.FromArgb(((int)(((byte)(24)))), ((int)(((byte)(29)))), ((int)(((byte)(33)))));
this.footerPanel.Location = new System.Drawing.Point(0, 373);
this.footerPanel.Margin = new System.Windows.Forms.Padding(0);
this.footerPanel.MinimumSize = new System.Drawing.Size(30, 25);
this.footerPanel.Name = "footerPanel";
this.footerPanel.Padding = new System.Windows.Forms.Padding(8, 6, 8, 6);
this.footerPanel.Size = new System.Drawing.Size(784, 62);
this.footerPanel.TabIndex = 3;
//
// footerLayout
//
this.footerLayout.BackColor = System.Drawing.Color.Transparent;
this.footerLayout.ColumnCount = 5;
this.footerLayout.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 145F));
@ -144,158 +241,210 @@
this.footerLayout.Controls.Add(this.btnRedefinir, 3, 0);
this.footerLayout.Controls.Add(this.btnSalvar, 4, 0);
this.footerLayout.Dock = System.Windows.Forms.DockStyle.Fill;
this.footerLayout.Margin = System.Windows.Forms.Padding.Empty;
this.footerLayout.Padding = System.Windows.Forms.Padding.Empty;
this.footerLayout.Location = new System.Drawing.Point(8, 6);
this.footerLayout.Margin = new System.Windows.Forms.Padding(0);
this.footerLayout.Name = "footerLayout";
this.footerLayout.RowCount = 1;
this.footerLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
// lblModoOperacao
ConfigurarCampoFooter(this.campoModoLayout);
this.footerLayout.Size = new System.Drawing.Size(768, 50);
this.footerLayout.TabIndex = 0;
//
// campoModoLayout
//
this.campoModoLayout.BackColor = System.Drawing.Color.Transparent;
this.campoModoLayout.ColumnCount = 1;
this.campoModoLayout.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
this.campoModoLayout.Controls.Add(this.lblModoOperacao, 0, 0);
this.campoModoLayout.Controls.Add(this.cmbModoOperacao, 0, 1);
SetupFooterLabel(this.lblModoOperacao, "Modo da operação");
this.campoModoLayout.Dock = System.Windows.Forms.DockStyle.Fill;
this.campoModoLayout.Location = new System.Drawing.Point(0, 0);
this.campoModoLayout.Margin = new System.Windows.Forms.Padding(0);
this.campoModoLayout.Name = "campoModoLayout";
this.campoModoLayout.RowCount = 2;
this.campoModoLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 17F));
this.campoModoLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
this.campoModoLayout.Size = new System.Drawing.Size(145, 50);
this.campoModoLayout.TabIndex = 0;
//
// lblModoOperacao
//
this.lblModoOperacao.AutoEllipsis = true;
this.lblModoOperacao.BackColor = System.Drawing.Color.Transparent;
this.lblModoOperacao.Dock = System.Windows.Forms.DockStyle.Fill;
this.lblModoOperacao.Font = new System.Drawing.Font("Segoe UI", 7.2F, System.Drawing.FontStyle.Bold);
this.lblModoOperacao.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(164)))), ((int)(((byte)(174)))), ((int)(((byte)(181)))));
this.lblModoOperacao.Location = new System.Drawing.Point(0, 0);
this.lblModoOperacao.Margin = new System.Windows.Forms.Padding(0);
this.lblModoOperacao.Name = "lblModoOperacao";
this.lblModoOperacao.Size = new System.Drawing.Size(145, 17);
this.lblModoOperacao.TabIndex = 0;
this.lblModoOperacao.Text = "Modo da operação";
this.lblModoOperacao.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
// cmbModoOperacao
//
this.cmbModoOperacao.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(36)))), ((int)(((byte)(41)))));
this.cmbModoOperacao.Dock = System.Windows.Forms.DockStyle.Fill;
this.cmbModoOperacao.BackColor = AgroBase.Forms.IHM.Controls.HmiTheme.SurfaceRaised;
this.cmbModoOperacao.DropDownHeight = 150;
this.cmbModoOperacao.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.cmbModoOperacao.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.cmbModoOperacao.Font = new System.Drawing.Font("Segoe UI", 7.5F, System.Drawing.FontStyle.Bold);
this.cmbModoOperacao.ForeColor = AgroBase.Forms.IHM.Controls.HmiTheme.Text;
this.cmbModoOperacao.Margin = new System.Windows.Forms.Padding(0, 1, 5, 3);
this.cmbModoOperacao.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(241)))), ((int)(((byte)(245)))), ((int)(((byte)(247)))));
this.cmbModoOperacao.IntegralHeight = false;
this.cmbModoOperacao.DropDownHeight = 150;
// lblDescricao
ConfigurarCampoFooter(this.campoDescricaoLayout);
this.cmbModoOperacao.Location = new System.Drawing.Point(0, 18);
this.cmbModoOperacao.Margin = new System.Windows.Forms.Padding(0, 1, 5, 3);
this.cmbModoOperacao.Name = "cmbModoOperacao";
this.cmbModoOperacao.Size = new System.Drawing.Size(140, 20);
this.cmbModoOperacao.TabIndex = 1;
//
// campoDescricaoLayout
//
this.campoDescricaoLayout.BackColor = System.Drawing.Color.Transparent;
this.campoDescricaoLayout.ColumnCount = 1;
this.campoDescricaoLayout.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
this.campoDescricaoLayout.Controls.Add(this.lblDescricaoOperacao, 0, 0);
this.campoDescricaoLayout.Controls.Add(this.txtDescricaoOperacao, 0, 1);
SetupFooterLabel(this.lblDescricaoOperacao, "Descrição");
this.txtDescricaoOperacao.AutoSize = false;
this.txtDescricaoOperacao.Dock = System.Windows.Forms.DockStyle.Fill;
this.txtDescricaoOperacao.BackColor = AgroBase.Forms.IHM.Controls.HmiTheme.SurfaceRaised;
this.txtDescricaoOperacao.ForeColor = AgroBase.Forms.IHM.Controls.HmiTheme.Text;
this.campoDescricaoLayout.Dock = System.Windows.Forms.DockStyle.Fill;
this.campoDescricaoLayout.Location = new System.Drawing.Point(145, 0);
this.campoDescricaoLayout.Margin = new System.Windows.Forms.Padding(0);
this.campoDescricaoLayout.Name = "campoDescricaoLayout";
this.campoDescricaoLayout.RowCount = 2;
this.campoDescricaoLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 17F));
this.campoDescricaoLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
this.campoDescricaoLayout.Size = new System.Drawing.Size(198, 50);
this.campoDescricaoLayout.TabIndex = 1;
//
// lblDescricaoOperacao
//
this.lblDescricaoOperacao.AutoEllipsis = true;
this.lblDescricaoOperacao.BackColor = System.Drawing.Color.Transparent;
this.lblDescricaoOperacao.Dock = System.Windows.Forms.DockStyle.Fill;
this.lblDescricaoOperacao.Font = new System.Drawing.Font("Segoe UI", 7.2F, System.Drawing.FontStyle.Bold);
this.lblDescricaoOperacao.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(164)))), ((int)(((byte)(174)))), ((int)(((byte)(181)))));
this.lblDescricaoOperacao.Location = new System.Drawing.Point(0, 0);
this.lblDescricaoOperacao.Margin = new System.Windows.Forms.Padding(0);
this.lblDescricaoOperacao.Name = "lblDescricaoOperacao";
this.lblDescricaoOperacao.Size = new System.Drawing.Size(198, 17);
this.lblDescricaoOperacao.TabIndex = 0;
this.lblDescricaoOperacao.Text = "Descrição";
this.lblDescricaoOperacao.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
// txtDescricaoOperacao
//
this.txtDescricaoOperacao.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(36)))), ((int)(((byte)(41)))));
this.txtDescricaoOperacao.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.txtDescricaoOperacao.Dock = System.Windows.Forms.DockStyle.Fill;
this.txtDescricaoOperacao.Font = new System.Drawing.Font("Segoe UI", 7.5F);
this.txtDescricaoOperacao.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(241)))), ((int)(((byte)(245)))), ((int)(((byte)(247)))));
this.txtDescricaoOperacao.Location = new System.Drawing.Point(3, 18);
this.txtDescricaoOperacao.Margin = new System.Windows.Forms.Padding(3, 1, 5, 3);
this.txtDescricaoOperacao.MaxLength = 120;
// posProcessamentoLayout
ConfigurarCampoFooter(this.campoRegistroLayout);
this.txtDescricaoOperacao.Name = "txtDescricaoOperacao";
this.txtDescricaoOperacao.Size = new System.Drawing.Size(190, 29);
this.txtDescricaoOperacao.TabIndex = 1;
//
// campoRegistroLayout
//
this.campoRegistroLayout.BackColor = System.Drawing.Color.Transparent;
this.campoRegistroLayout.ColumnCount = 1;
this.campoRegistroLayout.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
this.campoRegistroLayout.Controls.Add(this.lblRegistroDados, 0, 0);
this.campoRegistroLayout.Controls.Add(this.chkRegistrarPosProcessamento, 0, 1);
SetupFooterLabel(this.lblRegistroDados, "Registro de dados");
this.campoRegistroLayout.Dock = System.Windows.Forms.DockStyle.Fill;
this.campoRegistroLayout.Location = new System.Drawing.Point(343, 0);
this.campoRegistroLayout.Margin = new System.Windows.Forms.Padding(0);
this.campoRegistroLayout.Name = "campoRegistroLayout";
this.campoRegistroLayout.RowCount = 2;
this.campoRegistroLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 17F));
this.campoRegistroLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
this.campoRegistroLayout.Size = new System.Drawing.Size(145, 50);
this.campoRegistroLayout.TabIndex = 2;
//
// lblRegistroDados
//
this.lblRegistroDados.AutoEllipsis = true;
this.lblRegistroDados.BackColor = System.Drawing.Color.Transparent;
this.lblRegistroDados.Dock = System.Windows.Forms.DockStyle.Fill;
this.lblRegistroDados.Font = new System.Drawing.Font("Segoe UI", 7.2F, System.Drawing.FontStyle.Bold);
this.lblRegistroDados.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(164)))), ((int)(((byte)(174)))), ((int)(((byte)(181)))));
this.lblRegistroDados.Location = new System.Drawing.Point(0, 0);
this.lblRegistroDados.Margin = new System.Windows.Forms.Padding(0);
this.lblRegistroDados.Name = "lblRegistroDados";
this.lblRegistroDados.Size = new System.Drawing.Size(145, 17);
this.lblRegistroDados.TabIndex = 0;
this.lblRegistroDados.Text = "Registro de dados";
this.lblRegistroDados.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
// chkRegistrarPosProcessamento
//
this.chkRegistrarPosProcessamento.Appearance = System.Windows.Forms.Appearance.Button;
this.chkRegistrarPosProcessamento.AutoSize = false;
this.chkRegistrarPosProcessamento.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(36)))), ((int)(((byte)(41)))));
this.chkRegistrarPosProcessamento.Cursor = System.Windows.Forms.Cursors.Hand;
this.chkRegistrarPosProcessamento.Dock = System.Windows.Forms.DockStyle.Fill;
this.chkRegistrarPosProcessamento.FlatAppearance.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(53)))), ((int)(((byte)(63)))), ((int)(((byte)(69)))));
this.chkRegistrarPosProcessamento.FlatAppearance.CheckedBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(90)))), ((int)(((byte)(46)))));
this.chkRegistrarPosProcessamento.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.chkRegistrarPosProcessamento.FlatAppearance.BorderSize = 1;
this.chkRegistrarPosProcessamento.FlatAppearance.BorderColor = AgroBase.Forms.IHM.Controls.HmiTheme.Border;
this.chkRegistrarPosProcessamento.FlatAppearance.CheckedBackColor = System.Drawing.Color.FromArgb(30, 90, 46);
this.chkRegistrarPosProcessamento.BackColor = AgroBase.Forms.IHM.Controls.HmiTheme.SurfaceRaised;
this.chkRegistrarPosProcessamento.ForeColor = AgroBase.Forms.IHM.Controls.HmiTheme.TextMuted;
this.chkRegistrarPosProcessamento.Font = new System.Drawing.Font("Segoe UI", 7F, System.Drawing.FontStyle.Bold);
this.chkRegistrarPosProcessamento.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(164)))), ((int)(((byte)(174)))), ((int)(((byte)(181)))));
this.chkRegistrarPosProcessamento.Location = new System.Drawing.Point(3, 18);
this.chkRegistrarPosProcessamento.Margin = new System.Windows.Forms.Padding(3, 1, 5, 3);
this.chkRegistrarPosProcessamento.Name = "chkRegistrarPosProcessamento";
this.chkRegistrarPosProcessamento.Size = new System.Drawing.Size(137, 29);
this.chkRegistrarPosProcessamento.TabIndex = 1;
this.chkRegistrarPosProcessamento.Text = "DESATIVADO";
this.chkRegistrarPosProcessamento.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
this.chkRegistrarPosProcessamento.Cursor = System.Windows.Forms.Cursors.Hand;
this.chkRegistrarPosProcessamento.UseVisualStyleBackColor = false;
//
// btnRedefinir
SetupFooterAction(this.btnRedefinir, "REDEFINIR", "↻", AgroBase.Forms.IHM.Controls.HmiTheme.Warning);
//
this.btnRedefinir.AccentColor = System.Drawing.Color.FromArgb(((int)(((byte)(244)))), ((int)(((byte)(181)))), ((int)(((byte)(68)))));
this.btnRedefinir.BackColor = System.Drawing.Color.Transparent;
this.btnRedefinir.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(244)))), ((int)(((byte)(181)))), ((int)(((byte)(68)))));
this.btnRedefinir.Cursor = System.Windows.Forms.Cursors.Hand;
this.btnRedefinir.Dock = System.Windows.Forms.DockStyle.Fill;
this.btnRedefinir.FillColor = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(36)))), ((int)(((byte)(41)))));
this.btnRedefinir.IconText = "↻";
this.btnRedefinir.Location = new System.Drawing.Point(491, 0);
this.btnRedefinir.Margin = new System.Windows.Forms.Padding(3, 0, 0, 0);
this.btnRedefinir.Name = "btnRedefinir";
this.btnRedefinir.Size = new System.Drawing.Size(132, 50);
this.btnRedefinir.TabIndex = 3;
this.btnRedefinir.Text = "REDEFINIR";
//
// btnSalvar
SetupFooterAction(this.btnSalvar, "SALVAR", "▣", AgroBase.Forms.IHM.Controls.HmiTheme.Success);
//
this.btnSalvar.AccentColor = System.Drawing.Color.FromArgb(((int)(((byte)(72)))), ((int)(((byte)(210)))), ((int)(((byte)(122)))));
this.btnSalvar.BackColor = System.Drawing.Color.Transparent;
this.btnSalvar.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(72)))), ((int)(((byte)(210)))), ((int)(((byte)(122)))));
this.btnSalvar.Cursor = System.Windows.Forms.Cursors.Hand;
this.btnSalvar.Dock = System.Windows.Forms.DockStyle.Fill;
this.btnSalvar.FillColor = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(36)))), ((int)(((byte)(41)))));
this.btnSalvar.IconText = "▣";
this.btnSalvar.Location = new System.Drawing.Point(626, 0);
this.btnSalvar.Margin = new System.Windows.Forms.Padding(3, 0, 0, 0);
this.btnSalvar.Name = "btnSalvar";
this.btnSalvar.Size = new System.Drawing.Size(142, 50);
this.btnSalvar.TabIndex = 4;
this.btnSalvar.Text = "SALVAR";
//
// ucOperacaoParametros
//
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;
this.BackColor = AgroBase.Forms.IHM.Controls.HmiTheme.Background;
this.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(12)))), ((int)(((byte)(17)))), ((int)(((byte)(20)))));
this.Controls.Add(this.rootLayout);
this.DoubleBuffered = true;
this.Name = "ucOperacaoParametros";
this.Size = new System.Drawing.Size(784, 435);
this.campoModoLayout.ResumeLayout(true);
this.campoModoLayout.PerformLayout();
this.campoDescricaoLayout.ResumeLayout(true);
this.campoDescricaoLayout.PerformLayout();
this.campoRegistroLayout.ResumeLayout(true);
this.campoRegistroLayout.PerformLayout();
this.footerLayout.ResumeLayout(true);
this.footerLayout.PerformLayout();
this.footerPanel.ResumeLayout(true);
this.footerPanel.PerformLayout();
this.pnlDescricaoAba.ResumeLayout(true);
this.pnlDescricaoAba.PerformLayout();
this.tabsLayout.ResumeLayout(true);
this.tabsLayout.PerformLayout();
this.rootLayout.ResumeLayout(true);
this.rootLayout.PerformLayout();
this.rootLayout.ResumeLayout(false);
this.tabsLayout.ResumeLayout(false);
this.pnlDescricaoAba.ResumeLayout(false);
this.footerPanel.ResumeLayout(false);
this.footerLayout.ResumeLayout(false);
this.campoModoLayout.ResumeLayout(false);
this.campoDescricaoLayout.ResumeLayout(false);
this.campoRegistroLayout.ResumeLayout(false);
this.ResumeLayout(false);
this.PerformLayout();
}
private static void SetupTabButton(System.Windows.Forms.Button button, string text)
{
button.BackColor = AgroBase.Forms.IHM.Controls.HmiTheme.Surface;
button.Cursor = System.Windows.Forms.Cursors.Hand;
button.Dock = System.Windows.Forms.DockStyle.Fill;
button.FlatAppearance.BorderColor = AgroBase.Forms.IHM.Controls.HmiTheme.Border;
button.FlatAppearance.BorderSize = 1;
button.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
button.Font = new System.Drawing.Font("Segoe UI", 8.5F, System.Drawing.FontStyle.Bold);
button.ForeColor = AgroBase.Forms.IHM.Controls.HmiTheme.TextMuted;
button.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
button.Text = text;
button.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
button.UseVisualStyleBackColor = false;
}
private static void SetupFooterLabel(System.Windows.Forms.Label label, string text)
{
label.AutoEllipsis = true;
label.BackColor = System.Drawing.Color.Transparent;
label.Dock = System.Windows.Forms.DockStyle.Fill;
label.Font = new System.Drawing.Font("Segoe UI", 7.2F, System.Drawing.FontStyle.Bold);
label.ForeColor = AgroBase.Forms.IHM.Controls.HmiTheme.TextMuted;
label.Margin = System.Windows.Forms.Padding.Empty;
label.Text = text;
label.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
}
private static void SetupFooterAction(AgroBase.Forms.IHM.Controls.HmiSidebarButton button, string text, string icon, System.Drawing.Color accent)
{
button.AccentColor = accent;
button.BorderColor = accent;
button.Cursor = System.Windows.Forms.Cursors.Hand;
button.Dock = System.Windows.Forms.DockStyle.Fill;
button.FillColor = AgroBase.Forms.IHM.Controls.HmiTheme.SurfaceRaised;
button.IconText = icon;
button.Margin = new System.Windows.Forms.Padding(3, 0, 0, 0);
button.MaximumSize = System.Drawing.Size.Empty;
button.MinimumSize = System.Drawing.Size.Empty;
button.Text = text;
}
private static void ConfigurarCampoFooter(System.Windows.Forms.TableLayoutPanel layout)
{
layout.BackColor = System.Drawing.Color.Transparent;
layout.ColumnCount = 1;
layout.ColumnStyles.Clear();
layout.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
layout.RowCount = 2;
layout.RowStyles.Clear();
layout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 17F));
layout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
layout.Dock = System.Windows.Forms.DockStyle.Fill;
layout.Margin = System.Windows.Forms.Padding.Empty;
layout.Padding = System.Windows.Forms.Padding.Empty;
}
#endregion

View File

@ -73,7 +73,6 @@ namespace AgroBase.Forms.IHM.Operacao
try
{
var operacao = operacaoParametrizando?.Sensoriamento?.Operacao;
var parametros = operacaoParametrizando?.Parametros;
ModoOperacao modo = operacaoParametrizando?.Parametros?.Modo ?? ModoOperacao.NaoDefinido;
int indiceModo = (int)modo;
@ -212,7 +211,8 @@ namespace AgroBase.Forms.IHM.Operacao
novaOperacao.Parametros.Mapa = dadosMapaAtual;
novaOperacao.Parametros.TipoMapa = tipoMapaAtual;
novaOperacao.Parametros.RuasPercorrer = new List<string>();
novaOperacao.Parametros.Descricao = descricaoAtual;
if (!string.IsNullOrEmpty(descricaoAtual))
novaOperacao.Parametros.Descricao = descricaoAtual;
if (novaOperacao.Parametros?.Controle != null)
novaOperacao.Parametros.Controle.RegistrarDadosPosProcessamento = registrarDados;
}

View File

@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

File diff suppressed because it is too large Load Diff

View File

@ -20,6 +20,7 @@ namespace AgroBase.Forms.IHM.Operacao
private bool _controleDescartado;
private OperacaoModel op => Variaveis.OperacaoEmAndamento;
private bool ModoManual => (op?.Parametros?.Controle?.ControleManualAcionado ?? false) || (op?.Parametros?.Modo ?? ModoOperacao.NaoDefinido) == ModoOperacao.Manual;
private readonly List<HmiNozzleCard> _bicos = new List<HmiNozzleCard>();
public IList<HmiNozzleCard> Bicos
@ -56,6 +57,9 @@ namespace AgroBase.Forms.IHM.Operacao
cardPressaoSp.Valor = pressaoSP.ToString("F1");
cardStatusBomba.Valor = bombaLigada ? "Ligada" : "Desligada";
cardStatusBomba.CorValor = bombaLigada ? HmiTheme.Success : HmiTheme.Danger;
btnLigarBomba.Enabled = ModoManual;
btnDesligarBomba.Enabled = ModoManual;
}
private void AtualizarDadosAgitador()
@ -66,6 +70,9 @@ namespace AgroBase.Forms.IHM.Operacao
cardModoAgitador.Valor = modo.ToString();
cardStatusAgitador.Valor = agitadorLigado ? "Ligado" : "Desligado";
cardStatusAgitador.CorValor = agitadorLigado ? HmiTheme.Success : HmiTheme.Danger;
btnLigarAgitador.Enabled = ModoManual;
btnDesligarAgitador.Enabled = ModoManual;
}
private void AtualizarSaudeModulos()
@ -93,12 +100,11 @@ namespace AgroBase.Forms.IHM.Operacao
void DefinirSaudeModulo(HmiSprayerModuleHealthRow card, HmiRoundedPanel pnl, double saude, StatusModulo status)
{
card.Saude = saude.ToString("F0") + "%";
card.Status = status.ToString();
card.StatusColor = FuncoesIHM.CorPorStatusModulo(status);
card.Saude = saude;
card.Status = status;
if (pnl != null)
FuncoesIHM.AplicarEstadoPainel(pnl, card.StatusColor);
FuncoesIHM.AplicarEstadoPainel(pnl, FuncoesIHM.CorPorStatusModulo(status));
}
DefinirSaudeModulo(healthBomba, pnlBomba, saudeBomba?.saude ?? 0, saudeBomba?.status ?? StatusModulo.Desconectado);

View File

@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View File

@ -1,4 +1,7 @@
using System.Windows.Forms;
using AgroBase.Forms.IHM.Controls;
using Newtonsoft.Json.Linq;
using System.Windows.Forms;
using System.Windows.Forms.DataVisualization.Charting;
namespace AgroBase.Forms.IHM
{
@ -51,32 +54,32 @@ namespace AgroBase.Forms.IHM
this.redeCan = new AgroBase.Forms.IHM.Controls.HmiNetworkEditor();
this.rightLayout = new System.Windows.Forms.TableLayoutPanel();
this.pnlGeometria = new AgroBase.Forms.IHM.Controls.HmiRoundedPanel();
this.geometriaLayout = new System.Windows.Forms.TableLayoutPanel();
this.lblGeometria = new System.Windows.Forms.Label();
this.fldLeverFrontal = new AgroBase.Forms.IHM.Operacao.Parametros.Controls.HmiCompactNumericField();
this.fldLeverLateral = new AgroBase.Forms.IHM.Operacao.Parametros.Controls.HmiCompactNumericField();
this.fldEntreEixos = new AgroBase.Forms.IHM.Operacao.Parametros.Controls.HmiCompactNumericField();
this.fldAnguloFrontal = new AgroBase.Forms.IHM.Operacao.Parametros.Controls.HmiCompactNumericField();
this.fldAnguloLateral = new AgroBase.Forms.IHM.Operacao.Parametros.Controls.HmiCompactNumericField();
this.pnlBateria = new AgroBase.Forms.IHM.Controls.HmiRoundedPanel();
this.bateriaLayout = new System.Windows.Forms.TableLayoutPanel();
this.lblBateria = new System.Windows.Forms.Label();
this.fldTensaoMin = new AgroBase.Forms.IHM.Operacao.Parametros.Controls.HmiCompactNumericField();
this.fldTensaoMax = new AgroBase.Forms.IHM.Operacao.Parametros.Controls.HmiCompactNumericField();
this.fldCorrenteMax = new AgroBase.Forms.IHM.Operacao.Parametros.Controls.HmiCompactNumericField();
this.fldPercentualTensaoMin = new AgroBase.Forms.IHM.Operacao.Parametros.Controls.HmiCompactNumericField();
this.pnlReservatorio = new AgroBase.Forms.IHM.Controls.HmiRoundedPanel();
this.reservatorioLayout = new System.Windows.Forms.TableLayoutPanel();
this.lblReservatorio = new System.Windows.Forms.Label();
this.fldCapacidadeReservatorio = new AgroBase.Forms.IHM.Operacao.Parametros.Controls.HmiCompactNumericField();
this.fldReservatorioMin = new AgroBase.Forms.IHM.Operacao.Parametros.Controls.HmiCompactNumericField();
this.fldReservatorioCritico = new AgroBase.Forms.IHM.Operacao.Parametros.Controls.HmiCompactNumericField();
this.pnlFooter = new AgroBase.Forms.IHM.Controls.HmiRoundedPanel();
this.footerLayout = new System.Windows.Forms.TableLayoutPanel();
this.lblAlteracoes = new System.Windows.Forms.Label();
this.btnRestaurar = new AgroBase.Forms.IHM.Controls.HmiSidebarButton();
this.btnSalvar = new AgroBase.Forms.IHM.Controls.HmiSidebarButton();
this.btnTestarComunicacao = new AgroBase.Forms.IHM.Controls.HmiSidebarButton();
this.geometriaLayout = new System.Windows.Forms.TableLayoutPanel();
this.fldLeverFrontal = new AgroBase.Forms.IHM.Operacao.Parametros.Controls.HmiCompactNumericField();
this.fldLeverLateral = new AgroBase.Forms.IHM.Operacao.Parametros.Controls.HmiCompactNumericField();
this.fldEntreEixos = new AgroBase.Forms.IHM.Operacao.Parametros.Controls.HmiCompactNumericField();
this.fldAnguloFrontal = new AgroBase.Forms.IHM.Operacao.Parametros.Controls.HmiCompactNumericField();
this.fldAnguloLateral = new AgroBase.Forms.IHM.Operacao.Parametros.Controls.HmiCompactNumericField();
this.lblGeometria = new System.Windows.Forms.Label();
this.bateriaLayout = new System.Windows.Forms.TableLayoutPanel();
this.fldTensaoMin = new AgroBase.Forms.IHM.Operacao.Parametros.Controls.HmiCompactNumericField();
this.fldTensaoMax = new AgroBase.Forms.IHM.Operacao.Parametros.Controls.HmiCompactNumericField();
this.fldCorrenteMax = new AgroBase.Forms.IHM.Operacao.Parametros.Controls.HmiCompactNumericField();
this.fldPercentualTensaoMin = new AgroBase.Forms.IHM.Operacao.Parametros.Controls.HmiCompactNumericField();
this.lblBateria = new System.Windows.Forms.Label();
this.reservatorioLayout = new System.Windows.Forms.TableLayoutPanel();
this.fldCapacidadeReservatorio = new AgroBase.Forms.IHM.Operacao.Parametros.Controls.HmiCompactNumericField();
this.fldReservatorioMin = new AgroBase.Forms.IHM.Operacao.Parametros.Controls.HmiCompactNumericField();
this.fldReservatorioCritico = new AgroBase.Forms.IHM.Operacao.Parametros.Controls.HmiCompactNumericField();
this.lblReservatorio = new System.Windows.Forms.Label();
this.rootLayout.SuspendLayout();
this.pnlHeader.SuspendLayout();
this.headerLayout.SuspendLayout();
@ -89,11 +92,14 @@ namespace AgroBase.Forms.IHM
this.pnlRedes.SuspendLayout();
this.redesLayout.SuspendLayout();
this.rightLayout.SuspendLayout();
this.pnlGeometria.SuspendLayout();
this.geometriaLayout.SuspendLayout();
this.pnlBateria.SuspendLayout();
this.bateriaLayout.SuspendLayout();
this.pnlReservatorio.SuspendLayout();
this.reservatorioLayout.SuspendLayout();
this.pnlFooter.SuspendLayout();
this.footerLayout.SuspendLayout();
this.geometriaLayout.SuspendLayout();
this.bateriaLayout.SuspendLayout();
this.reservatorioLayout.SuspendLayout();
this.SuspendLayout();
//
// rootLayout
@ -137,9 +143,9 @@ namespace AgroBase.Forms.IHM
//
this.headerLayout.BackColor = System.Drawing.Color.Transparent;
this.headerLayout.ColumnCount = 3;
this.headerLayout.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 102F));
this.headerLayout.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 112F));
this.headerLayout.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
this.headerLayout.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 176F));
this.headerLayout.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 165F));
this.headerLayout.Controls.Add(this.btnVoltar, 0, 0);
this.headerLayout.Controls.Add(this.headerTextLayout, 1, 0);
this.headerLayout.Controls.Add(this.pnlRover, 2, 0);
@ -155,16 +161,17 @@ namespace AgroBase.Forms.IHM
//
this.btnVoltar.AccentColor = System.Drawing.Color.FromArgb(((int)(((byte)(61)))), ((int)(((byte)(165)))), ((int)(((byte)(255)))));
this.btnVoltar.BackColor = System.Drawing.Color.Transparent;
this.btnVoltar.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(53)))), ((int)(((byte)(63)))), ((int)(((byte)(69)))));
this.btnVoltar.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(57)))), ((int)(((byte)(119)))), ((int)(((byte)(151)))));
this.btnVoltar.Cursor = System.Windows.Forms.Cursors.Hand;
this.btnVoltar.Dock = System.Windows.Forms.DockStyle.Fill;
this.btnVoltar.FillColor = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(36)))), ((int)(((byte)(41)))));
this.btnVoltar.IconText = "←";
this.btnVoltar.Location = new System.Drawing.Point(0, 2);
this.btnVoltar.Margin = new System.Windows.Forms.Padding(0, 2, 8, 2);
this.btnVoltar.MinimumSize = new System.Drawing.Size(102, 36);
this.btnVoltar.Location = new System.Drawing.Point(0, 4);
this.btnVoltar.Margin = new System.Windows.Forms.Padding(0, 4, 8, 4);
this.btnVoltar.MaximumSize = new System.Drawing.Size(112, 44);
this.btnVoltar.MinimumSize = new System.Drawing.Size(96, 36);
this.btnVoltar.Name = "btnVoltar";
this.btnVoltar.Size = new System.Drawing.Size(102, 42);
this.btnVoltar.Size = new System.Drawing.Size(104, 38);
this.btnVoltar.TabIndex = 0;
this.btnVoltar.Text = "VOLTAR";
//
@ -176,13 +183,13 @@ namespace AgroBase.Forms.IHM
this.headerTextLayout.Controls.Add(this.lblTitulo, 0, 0);
this.headerTextLayout.Controls.Add(this.lblSubtitulo, 0, 1);
this.headerTextLayout.Dock = System.Windows.Forms.DockStyle.Fill;
this.headerTextLayout.Location = new System.Drawing.Point(102, 0);
this.headerTextLayout.Margin = new System.Windows.Forms.Padding(0);
this.headerTextLayout.Location = new System.Drawing.Point(122, 0);
this.headerTextLayout.Margin = new System.Windows.Forms.Padding(10, 0, 5, 0);
this.headerTextLayout.Name = "headerTextLayout";
this.headerTextLayout.RowCount = 2;
this.headerTextLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 60F));
this.headerTextLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 40F));
this.headerTextLayout.Size = new System.Drawing.Size(486, 46);
this.headerTextLayout.Size = new System.Drawing.Size(472, 46);
this.headerTextLayout.TabIndex = 1;
//
// lblTitulo
@ -194,7 +201,7 @@ namespace AgroBase.Forms.IHM
this.lblTitulo.Location = new System.Drawing.Point(0, 0);
this.lblTitulo.Margin = new System.Windows.Forms.Padding(0);
this.lblTitulo.Name = "lblTitulo";
this.lblTitulo.Size = new System.Drawing.Size(486, 27);
this.lblTitulo.Size = new System.Drawing.Size(472, 27);
this.lblTitulo.TabIndex = 0;
this.lblTitulo.Text = "AJUSTES DO EQUIPAMENTO";
this.lblTitulo.TextAlign = System.Drawing.ContentAlignment.BottomLeft;
@ -208,7 +215,7 @@ namespace AgroBase.Forms.IHM
this.lblSubtitulo.Location = new System.Drawing.Point(0, 27);
this.lblSubtitulo.Margin = new System.Windows.Forms.Padding(0);
this.lblSubtitulo.Name = "lblSubtitulo";
this.lblSubtitulo.Size = new System.Drawing.Size(486, 19);
this.lblSubtitulo.Size = new System.Drawing.Size(472, 19);
this.lblSubtitulo.TabIndex = 1;
this.lblSubtitulo.Text = "Configurações físicas, câmeras e comunicação do rover";
//
@ -221,12 +228,12 @@ namespace AgroBase.Forms.IHM
this.pnlRover.CornerRadius = 9;
this.pnlRover.Dock = System.Windows.Forms.DockStyle.Fill;
this.pnlRover.FillColor = System.Drawing.Color.FromArgb(((int)(((byte)(18)))), ((int)(((byte)(58)))), ((int)(((byte)(46)))));
this.pnlRover.Location = new System.Drawing.Point(593, 0);
this.pnlRover.Location = new System.Drawing.Point(604, 0);
this.pnlRover.Margin = new System.Windows.Forms.Padding(5, 0, 0, 0);
this.pnlRover.MinimumSize = new System.Drawing.Size(30, 30);
this.pnlRover.Name = "pnlRover";
this.pnlRover.Padding = new System.Windows.Forms.Padding(8);
this.pnlRover.Size = new System.Drawing.Size(171, 46);
this.pnlRover.Size = new System.Drawing.Size(160, 46);
this.pnlRover.TabIndex = 2;
//
// lblRover
@ -237,7 +244,7 @@ namespace AgroBase.Forms.IHM
this.lblRover.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(72)))), ((int)(((byte)(210)))), ((int)(((byte)(122)))));
this.lblRover.Location = new System.Drawing.Point(8, 8);
this.lblRover.Name = "lblRover";
this.lblRover.Size = new System.Drawing.Size(155, 30);
this.lblRover.Size = new System.Drawing.Size(144, 30);
this.lblRover.TabIndex = 0;
this.lblRover.Text = "ROVER 01\r\nConfiguração local";
this.lblRover.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
@ -290,22 +297,18 @@ namespace AgroBase.Forms.IHM
this.pnlCameras.MinimumSize = new System.Drawing.Size(30, 30);
this.pnlCameras.Name = "pnlCameras";
this.pnlCameras.Padding = new System.Windows.Forms.Padding(10, 6, 10, 6);
this.pnlCameras.Size = new System.Drawing.Size(388, 258);
this.pnlCameras.Size = new System.Drawing.Size(388, 281);
this.pnlCameras.TabIndex = 0;
//
// camerasLayout
//
this.camerasLayout.BackColor = System.Drawing.Color.Transparent;
this.camerasLayout.ColumnCount = 2;
this.camerasLayout.ColumnStyles.Clear();
this.camerasLayout.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
this.camerasLayout.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 140F));
this.camerasLayout.Controls.Add(this.lblCameras, 0, 0);
this.camerasLayout.SetColumnSpan(this.lblCameras, 2);
this.camerasLayout.Controls.Add(this.cameraFrontal, 0, 1);
this.camerasLayout.SetColumnSpan(this.cameraFrontal, 2);
this.camerasLayout.Controls.Add(this.cameraErvas, 0, 2);
this.camerasLayout.SetColumnSpan(this.cameraErvas, 2);
this.camerasLayout.Controls.Add(this.btnAtualizarCameras, 1, 3);
this.camerasLayout.Dock = System.Windows.Forms.DockStyle.Fill;
this.camerasLayout.Location = new System.Drawing.Point(10, 6);
@ -316,12 +319,13 @@ namespace AgroBase.Forms.IHM
this.camerasLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 102F));
this.camerasLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 102F));
this.camerasLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
this.camerasLayout.Size = new System.Drawing.Size(368, 246);
this.camerasLayout.Size = new System.Drawing.Size(368, 269);
this.camerasLayout.TabIndex = 0;
//
// lblCameras
//
this.lblCameras.BackColor = System.Drawing.Color.Transparent;
this.camerasLayout.SetColumnSpan(this.lblCameras, 2);
this.lblCameras.Dock = System.Windows.Forms.DockStyle.Fill;
this.lblCameras.Font = new System.Drawing.Font("Segoe UI", 10F, System.Drawing.FontStyle.Bold);
this.lblCameras.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(241)))), ((int)(((byte)(245)))), ((int)(((byte)(247)))));
@ -336,6 +340,7 @@ namespace AgroBase.Forms.IHM
// cameraFrontal
//
this.cameraFrontal.BackColor = System.Drawing.Color.Transparent;
this.camerasLayout.SetColumnSpan(this.cameraFrontal, 2);
this.cameraFrontal.Dock = System.Windows.Forms.DockStyle.Fill;
this.cameraFrontal.Location = new System.Drawing.Point(0, 25);
this.cameraFrontal.Margin = new System.Windows.Forms.Padding(0, 1, 0, 2);
@ -352,8 +357,9 @@ namespace AgroBase.Forms.IHM
// cameraErvas
//
this.cameraErvas.BackColor = System.Drawing.Color.Transparent;
this.camerasLayout.SetColumnSpan(this.cameraErvas, 2);
this.cameraErvas.Dock = System.Windows.Forms.DockStyle.Fill;
this.cameraErvas.Location = new System.Drawing.Point(0, 118);
this.cameraErvas.Location = new System.Drawing.Point(0, 127);
this.cameraErvas.Margin = new System.Windows.Forms.Padding(0, 1, 0, 2);
this.cameraErvas.MinimumSize = new System.Drawing.Size(300, 100);
this.cameraErvas.Name = "cameraErvas";
@ -369,16 +375,17 @@ namespace AgroBase.Forms.IHM
//
this.btnAtualizarCameras.AccentColor = System.Drawing.Color.FromArgb(((int)(((byte)(61)))), ((int)(((byte)(165)))), ((int)(((byte)(255)))));
this.btnAtualizarCameras.BackColor = System.Drawing.Color.Transparent;
this.btnAtualizarCameras.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(53)))), ((int)(((byte)(63)))), ((int)(((byte)(69)))));
this.btnAtualizarCameras.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(57)))), ((int)(((byte)(111)))), ((int)(((byte)(137)))));
this.btnAtualizarCameras.Cursor = System.Windows.Forms.Cursors.Hand;
this.btnAtualizarCameras.Dock = System.Windows.Forms.DockStyle.Fill;
this.btnAtualizarCameras.Anchor = System.Windows.Forms.AnchorStyles.None;
this.btnAtualizarCameras.Dock = System.Windows.Forms.DockStyle.Left;
this.btnAtualizarCameras.FillColor = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(36)))), ((int)(((byte)(41)))));
this.btnAtualizarCameras.IconText = "↻";
this.btnAtualizarCameras.Location = new System.Drawing.Point(0, 212);
this.btnAtualizarCameras.Margin = new System.Windows.Forms.Padding(4, 3, 0, 0);
this.btnAtualizarCameras.MinimumSize = System.Drawing.Size.Empty;
this.btnAtualizarCameras.Location = new System.Drawing.Point(228, 230);
this.btnAtualizarCameras.Margin = new System.Windows.Forms.Padding(0, 2, 0, 0);
this.btnAtualizarCameras.MaximumSize = new System.Drawing.Size(142, 34);
this.btnAtualizarCameras.MinimumSize = new System.Drawing.Size(110, 32);
this.btnAtualizarCameras.Name = "btnAtualizarCameras";
this.btnAtualizarCameras.Size = new System.Drawing.Size(140, 34);
this.btnAtualizarCameras.TabIndex = 3;
this.btnAtualizarCameras.Text = "ATUALIZAR";
//
@ -391,12 +398,12 @@ namespace AgroBase.Forms.IHM
this.pnlRedes.CornerRadius = 10;
this.pnlRedes.Dock = System.Windows.Forms.DockStyle.Fill;
this.pnlRedes.FillColor = System.Drawing.Color.FromArgb(((int)(((byte)(24)))), ((int)(((byte)(29)))), ((int)(((byte)(33)))));
this.pnlRedes.Location = new System.Drawing.Point(0, 262);
this.pnlRedes.Location = new System.Drawing.Point(0, 285);
this.pnlRedes.Margin = new System.Windows.Forms.Padding(0);
this.pnlRedes.MinimumSize = new System.Drawing.Size(30, 30);
this.pnlRedes.Name = "pnlRedes";
this.pnlRedes.Padding = new System.Windows.Forms.Padding(10, 6, 10, 6);
this.pnlRedes.Size = new System.Drawing.Size(388, 199);
this.pnlRedes.Size = new System.Drawing.Size(388, 176);
this.pnlRedes.TabIndex = 1;
//
// redesLayout
@ -415,7 +422,7 @@ namespace AgroBase.Forms.IHM
this.redesLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 24F));
this.redesLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F));
this.redesLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F));
this.redesLayout.Size = new System.Drawing.Size(368, 187);
this.redesLayout.Size = new System.Drawing.Size(368, 164);
this.redesLayout.TabIndex = 0;
//
// lblRedes
@ -442,9 +449,9 @@ namespace AgroBase.Forms.IHM
this.redeHaLow.Location = new System.Drawing.Point(0, 25);
this.redeHaLow.Margin = new System.Windows.Forms.Padding(0, 1, 0, 2);
this.redeHaLow.Mask = "";
this.redeHaLow.MinimumSize = new System.Drawing.Size(260, 78);
this.redeHaLow.MinimumSize = new System.Drawing.Size(250, 63);
this.redeHaLow.Name = "redeHaLow";
this.redeHaLow.Size = new System.Drawing.Size(368, 78);
this.redeHaLow.Size = new System.Drawing.Size(368, 67);
this.redeHaLow.Status = "Não testada";
this.redeHaLow.StatusColor = System.Drawing.Color.FromArgb(((int)(((byte)(164)))), ((int)(((byte)(174)))), ((int)(((byte)(181)))));
this.redeHaLow.TabIndex = 1;
@ -457,12 +464,12 @@ namespace AgroBase.Forms.IHM
this.redeCan.Gateway = "";
this.redeCan.InterfaceName = "";
this.redeCan.Ip = "";
this.redeCan.Location = new System.Drawing.Point(0, 106);
this.redeCan.Location = new System.Drawing.Point(0, 95);
this.redeCan.Margin = new System.Windows.Forms.Padding(0, 1, 0, 0);
this.redeCan.Mask = "";
this.redeCan.MinimumSize = new System.Drawing.Size(260, 78);
this.redeCan.MinimumSize = new System.Drawing.Size(250, 63);
this.redeCan.Name = "redeCan";
this.redeCan.Size = new System.Drawing.Size(368, 81);
this.redeCan.Size = new System.Drawing.Size(368, 69);
this.redeCan.Status = "Não testada";
this.redeCan.StatusColor = System.Drawing.Color.FromArgb(((int)(((byte)(164)))), ((int)(((byte)(174)))), ((int)(((byte)(181)))));
this.redeCan.TabIndex = 2;
@ -489,43 +496,400 @@ namespace AgroBase.Forms.IHM
//
// pnlGeometria
//
this.pnlGeometria.AccentColor = System.Drawing.Color.FromArgb(((int)(((byte)(72)))), ((int)(((byte)(210)))), ((int)(((byte)(122)))));
this.pnlGeometria.AccentColor = System.Drawing.Color.FromArgb(((int)(((byte)(155)))), ((int)(((byte)(106)))), ((int)(((byte)(222)))));
this.pnlGeometria.BackColor = System.Drawing.Color.Transparent;
this.pnlGeometria.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(53)))), ((int)(((byte)(63)))), ((int)(((byte)(69)))));
this.pnlGeometria.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(155)))), ((int)(((byte)(106)))), ((int)(((byte)(222)))));
this.pnlGeometria.Controls.Add(this.geometriaLayout);
this.pnlGeometria.CornerRadius = 10;
this.pnlGeometria.Dock = System.Windows.Forms.DockStyle.Fill;
this.pnlGeometria.FillColor = System.Drawing.Color.FromArgb(((int)(((byte)(24)))), ((int)(((byte)(29)))), ((int)(((byte)(33)))));
this.pnlGeometria.Location = new System.Drawing.Point(3, 3);
this.pnlGeometria.MinimumSize = new System.Drawing.Size(30, 30);
this.pnlGeometria.Location = new System.Drawing.Point(0, 0);
this.pnlGeometria.Margin = new System.Windows.Forms.Padding(0, 0, 0, 4);
this.pnlGeometria.MinimumSize = new System.Drawing.Size(30, 25);
this.pnlGeometria.Name = "pnlGeometria";
this.pnlGeometria.Padding = new System.Windows.Forms.Padding(12);
this.pnlGeometria.Size = new System.Drawing.Size(150, 150);
this.pnlGeometria.Padding = new System.Windows.Forms.Padding(10, 6, 10, 6);
this.pnlGeometria.Size = new System.Drawing.Size(388, 152);
this.pnlGeometria.TabIndex = 0;
//
// geometriaLayout
//
this.geometriaLayout.BackColor = System.Drawing.Color.Transparent;
this.geometriaLayout.ColumnCount = 3;
this.geometriaLayout.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 33.33F));
this.geometriaLayout.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 33.33F));
this.geometriaLayout.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 33.34F));
this.geometriaLayout.Controls.Add(this.lblGeometria, 0, 0);
this.geometriaLayout.Controls.Add(this.fldLeverFrontal, 0, 1);
this.geometriaLayout.Controls.Add(this.fldLeverLateral, 1, 1);
this.geometriaLayout.Controls.Add(this.fldEntreEixos, 2, 1);
this.geometriaLayout.Controls.Add(this.fldAnguloFrontal, 0, 2);
this.geometriaLayout.Controls.Add(this.fldAnguloLateral, 1, 2);
this.geometriaLayout.Dock = System.Windows.Forms.DockStyle.Fill;
this.geometriaLayout.Location = new System.Drawing.Point(10, 6);
this.geometriaLayout.Margin = new System.Windows.Forms.Padding(0);
this.geometriaLayout.Name = "geometriaLayout";
this.geometriaLayout.RowCount = 3;
this.geometriaLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 24F));
this.geometriaLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F));
this.geometriaLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F));
this.geometriaLayout.Size = new System.Drawing.Size(368, 140);
this.geometriaLayout.TabIndex = 0;
//
// lblGeometria
//
this.lblGeometria.BackColor = System.Drawing.Color.Transparent;
this.geometriaLayout.SetColumnSpan(this.lblGeometria, 3);
this.lblGeometria.Dock = System.Windows.Forms.DockStyle.Fill;
this.lblGeometria.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Bold);
this.lblGeometria.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(155)))), ((int)(((byte)(106)))), ((int)(((byte)(222)))));
this.lblGeometria.Location = new System.Drawing.Point(0, 0);
this.lblGeometria.Margin = new System.Windows.Forms.Padding(0);
this.lblGeometria.Name = "lblGeometria";
this.lblGeometria.Size = new System.Drawing.Size(368, 24);
this.lblGeometria.TabIndex = 0;
this.lblGeometria.Text = "▌ GEOMETRIA";
this.lblGeometria.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
// fldLeverFrontal
//
this.fldLeverFrontal.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(36)))), ((int)(((byte)(41)))));
this.fldLeverFrontal.DecimalPlaces = 1;
this.fldLeverFrontal.Dock = System.Windows.Forms.DockStyle.Fill;
this.fldLeverFrontal.Location = new System.Drawing.Point(2, 26);
this.fldLeverFrontal.Margin = new System.Windows.Forms.Padding(2, 2, 3, 3);
this.fldLeverFrontal.Maximum = new decimal(new int[] {
1000,
0,
0,
0});
this.fldLeverFrontal.Minimum = new decimal(new int[] {
1000,
0,
0,
-2147483648});
this.fldLeverFrontal.MinimumSize = new System.Drawing.Size(0, 48);
this.fldLeverFrontal.Name = "fldLeverFrontal";
this.fldLeverFrontal.Padding = new System.Windows.Forms.Padding(4, 2, 4, 3);
this.fldLeverFrontal.Size = new System.Drawing.Size(117, 53);
this.fldLeverFrontal.TabIndex = 0;
this.fldLeverFrontal.Titulo = "Lever arm frontal";
this.fldLeverFrontal.Unidade = "cm";
//
// fldLeverLateral
//
this.fldLeverLateral.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(36)))), ((int)(((byte)(41)))));
this.fldLeverLateral.DecimalPlaces = 1;
this.fldLeverLateral.Dock = System.Windows.Forms.DockStyle.Fill;
this.fldLeverLateral.Location = new System.Drawing.Point(125, 26);
this.fldLeverLateral.Margin = new System.Windows.Forms.Padding(3, 2, 3, 3);
this.fldLeverLateral.Maximum = new decimal(new int[] {
1000,
0,
0,
0});
this.fldLeverLateral.Minimum = new decimal(new int[] {
1000,
0,
0,
-2147483648});
this.fldLeverLateral.MinimumSize = new System.Drawing.Size(0, 48);
this.fldLeverLateral.Name = "fldLeverLateral";
this.fldLeverLateral.Padding = new System.Windows.Forms.Padding(4, 2, 4, 3);
this.fldLeverLateral.Size = new System.Drawing.Size(116, 53);
this.fldLeverLateral.TabIndex = 1;
this.fldLeverLateral.Titulo = "Lever arm lateral";
this.fldLeverLateral.Unidade = "cm";
//
// fldEntreEixos
//
this.fldEntreEixos.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(36)))), ((int)(((byte)(41)))));
this.fldEntreEixos.DecimalPlaces = 1;
this.fldEntreEixos.Dock = System.Windows.Forms.DockStyle.Fill;
this.fldEntreEixos.Location = new System.Drawing.Point(247, 26);
this.fldEntreEixos.Margin = new System.Windows.Forms.Padding(3, 2, 2, 3);
this.fldEntreEixos.Maximum = new decimal(new int[] {
1000,
0,
0,
0});
this.fldEntreEixos.MinimumSize = new System.Drawing.Size(0, 48);
this.fldEntreEixos.Name = "fldEntreEixos";
this.fldEntreEixos.Padding = new System.Windows.Forms.Padding(4, 2, 4, 3);
this.fldEntreEixos.Size = new System.Drawing.Size(119, 53);
this.fldEntreEixos.TabIndex = 2;
this.fldEntreEixos.Titulo = "Distância entre eixos";
this.fldEntreEixos.Unidade = "cm";
//
// fldAnguloFrontal
//
this.fldAnguloFrontal.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(36)))), ((int)(((byte)(41)))));
this.fldAnguloFrontal.DecimalPlaces = 1;
this.fldAnguloFrontal.Dock = System.Windows.Forms.DockStyle.Fill;
this.fldAnguloFrontal.Location = new System.Drawing.Point(2, 84);
this.fldAnguloFrontal.Margin = new System.Windows.Forms.Padding(2, 2, 3, 2);
this.fldAnguloFrontal.Maximum = new decimal(new int[] {
90,
0,
0,
0});
this.fldAnguloFrontal.MinimumSize = new System.Drawing.Size(0, 48);
this.fldAnguloFrontal.Name = "fldAnguloFrontal";
this.fldAnguloFrontal.Padding = new System.Windows.Forms.Padding(4, 2, 4, 3);
this.fldAnguloFrontal.Size = new System.Drawing.Size(117, 54);
this.fldAnguloFrontal.TabIndex = 3;
this.fldAnguloFrontal.Titulo = "Ângulo máx. frontal";
this.fldAnguloFrontal.Unidade = "°";
//
// fldAnguloLateral
//
this.fldAnguloLateral.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(36)))), ((int)(((byte)(41)))));
this.fldAnguloLateral.DecimalPlaces = 1;
this.fldAnguloLateral.Dock = System.Windows.Forms.DockStyle.Fill;
this.fldAnguloLateral.Location = new System.Drawing.Point(125, 84);
this.fldAnguloLateral.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.fldAnguloLateral.Maximum = new decimal(new int[] {
90,
0,
0,
0});
this.fldAnguloLateral.MinimumSize = new System.Drawing.Size(0, 48);
this.fldAnguloLateral.Name = "fldAnguloLateral";
this.fldAnguloLateral.Padding = new System.Windows.Forms.Padding(4, 2, 4, 3);
this.fldAnguloLateral.Size = new System.Drawing.Size(116, 54);
this.fldAnguloLateral.TabIndex = 4;
this.fldAnguloLateral.Titulo = "Ângulo máx. lateral";
this.fldAnguloLateral.Unidade = "°";
//
// pnlBateria
//
this.pnlBateria.AccentColor = System.Drawing.Color.FromArgb(((int)(((byte)(72)))), ((int)(((byte)(210)))), ((int)(((byte)(122)))));
this.pnlBateria.BackColor = System.Drawing.Color.Transparent;
this.pnlBateria.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(53)))), ((int)(((byte)(63)))), ((int)(((byte)(69)))));
this.pnlBateria.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(72)))), ((int)(((byte)(210)))), ((int)(((byte)(122)))));
this.pnlBateria.Controls.Add(this.bateriaLayout);
this.pnlBateria.CornerRadius = 10;
this.pnlBateria.Dock = System.Windows.Forms.DockStyle.Fill;
this.pnlBateria.FillColor = System.Drawing.Color.FromArgb(((int)(((byte)(24)))), ((int)(((byte)(29)))), ((int)(((byte)(33)))));
this.pnlBateria.Location = new System.Drawing.Point(3, 159);
this.pnlBateria.MinimumSize = new System.Drawing.Size(30, 30);
this.pnlBateria.Location = new System.Drawing.Point(0, 156);
this.pnlBateria.Margin = new System.Windows.Forms.Padding(0, 0, 0, 4);
this.pnlBateria.MinimumSize = new System.Drawing.Size(30, 25);
this.pnlBateria.Name = "pnlBateria";
this.pnlBateria.Padding = new System.Windows.Forms.Padding(12);
this.pnlBateria.Size = new System.Drawing.Size(150, 146);
this.pnlBateria.Padding = new System.Windows.Forms.Padding(10, 6, 10, 6);
this.pnlBateria.Size = new System.Drawing.Size(388, 148);
this.pnlBateria.TabIndex = 1;
//
// bateriaLayout
//
this.bateriaLayout.BackColor = System.Drawing.Color.Transparent;
this.bateriaLayout.ColumnCount = 3;
this.bateriaLayout.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 33.33F));
this.bateriaLayout.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 33.33F));
this.bateriaLayout.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 33.34F));
this.bateriaLayout.Controls.Add(this.lblBateria, 0, 0);
this.bateriaLayout.Controls.Add(this.fldTensaoMin, 0, 1);
this.bateriaLayout.Controls.Add(this.fldTensaoMax, 1, 1);
this.bateriaLayout.Controls.Add(this.fldCorrenteMax, 2, 1);
this.bateriaLayout.Controls.Add(this.fldPercentualTensaoMin, 0, 2);
this.bateriaLayout.Dock = System.Windows.Forms.DockStyle.Fill;
this.bateriaLayout.Location = new System.Drawing.Point(10, 6);
this.bateriaLayout.Margin = new System.Windows.Forms.Padding(0);
this.bateriaLayout.Name = "bateriaLayout";
this.bateriaLayout.RowCount = 3;
this.bateriaLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 24F));
this.bateriaLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F));
this.bateriaLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F));
this.bateriaLayout.Size = new System.Drawing.Size(368, 136);
this.bateriaLayout.TabIndex = 0;
//
// lblBateria
//
this.lblBateria.BackColor = System.Drawing.Color.Transparent;
this.bateriaLayout.SetColumnSpan(this.lblBateria, 3);
this.lblBateria.Dock = System.Windows.Forms.DockStyle.Fill;
this.lblBateria.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Bold);
this.lblBateria.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(72)))), ((int)(((byte)(210)))), ((int)(((byte)(122)))));
this.lblBateria.Location = new System.Drawing.Point(0, 0);
this.lblBateria.Margin = new System.Windows.Forms.Padding(0);
this.lblBateria.Name = "lblBateria";
this.lblBateria.Size = new System.Drawing.Size(368, 24);
this.lblBateria.TabIndex = 0;
this.lblBateria.Text = "▌ BATERIA";
this.lblBateria.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
// fldTensaoMin
//
this.fldTensaoMin.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(36)))), ((int)(((byte)(41)))));
this.fldTensaoMin.DecimalPlaces = 1;
this.fldTensaoMin.Dock = System.Windows.Forms.DockStyle.Fill;
this.fldTensaoMin.Increment = new decimal(new int[] {
1,
0,
0,
65536});
this.fldTensaoMin.Location = new System.Drawing.Point(2, 26);
this.fldTensaoMin.Margin = new System.Windows.Forms.Padding(2, 2, 3, 3);
this.fldTensaoMin.MinimumSize = new System.Drawing.Size(0, 48);
this.fldTensaoMin.Name = "fldTensaoMin";
this.fldTensaoMin.Padding = new System.Windows.Forms.Padding(4, 2, 4, 3);
this.fldTensaoMin.Size = new System.Drawing.Size(117, 51);
this.fldTensaoMin.TabIndex = 0;
this.fldTensaoMin.Titulo = "Tensão mínima";
this.fldTensaoMin.Unidade = "V";
//
// fldTensaoMax
//
this.fldTensaoMax.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(36)))), ((int)(((byte)(41)))));
this.fldTensaoMax.DecimalPlaces = 1;
this.fldTensaoMax.Dock = System.Windows.Forms.DockStyle.Fill;
this.fldTensaoMax.Increment = new decimal(new int[] {
1,
0,
0,
65536});
this.fldTensaoMax.Location = new System.Drawing.Point(125, 26);
this.fldTensaoMax.Margin = new System.Windows.Forms.Padding(3, 2, 3, 3);
this.fldTensaoMax.MinimumSize = new System.Drawing.Size(0, 48);
this.fldTensaoMax.Name = "fldTensaoMax";
this.fldTensaoMax.Padding = new System.Windows.Forms.Padding(4, 2, 4, 3);
this.fldTensaoMax.Size = new System.Drawing.Size(116, 51);
this.fldTensaoMax.TabIndex = 1;
this.fldTensaoMax.Titulo = "Tensão máxima";
this.fldTensaoMax.Unidade = "V";
//
// fldCorrenteMax
//
this.fldCorrenteMax.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(36)))), ((int)(((byte)(41)))));
this.fldCorrenteMax.DecimalPlaces = 1;
this.fldCorrenteMax.Dock = System.Windows.Forms.DockStyle.Fill;
this.fldCorrenteMax.Location = new System.Drawing.Point(247, 26);
this.fldCorrenteMax.Margin = new System.Windows.Forms.Padding(3, 2, 2, 3);
this.fldCorrenteMax.Maximum = new decimal(new int[] {
1000,
0,
0,
0});
this.fldCorrenteMax.MinimumSize = new System.Drawing.Size(0, 48);
this.fldCorrenteMax.Name = "fldCorrenteMax";
this.fldCorrenteMax.Padding = new System.Windows.Forms.Padding(4, 2, 4, 3);
this.fldCorrenteMax.Size = new System.Drawing.Size(119, 51);
this.fldCorrenteMax.TabIndex = 2;
this.fldCorrenteMax.Titulo = "Corrente máxima";
this.fldCorrenteMax.Unidade = "A";
//
// fldPercentualTensaoMin
//
this.fldPercentualTensaoMin.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(36)))), ((int)(((byte)(41)))));
this.fldPercentualTensaoMin.Dock = System.Windows.Forms.DockStyle.Fill;
this.fldPercentualTensaoMin.Location = new System.Drawing.Point(2, 82);
this.fldPercentualTensaoMin.Margin = new System.Windows.Forms.Padding(2, 2, 3, 2);
this.fldPercentualTensaoMin.MinimumSize = new System.Drawing.Size(0, 48);
this.fldPercentualTensaoMin.Name = "fldPercentualTensaoMin";
this.fldPercentualTensaoMin.Padding = new System.Windows.Forms.Padding(4, 2, 4, 3);
this.fldPercentualTensaoMin.Size = new System.Drawing.Size(117, 52);
this.fldPercentualTensaoMin.TabIndex = 3;
this.fldPercentualTensaoMin.Titulo = "Tensão mínima";
this.fldPercentualTensaoMin.Unidade = "%";
//
// pnlReservatorio
//
this.pnlReservatorio.AccentColor = System.Drawing.Color.FromArgb(((int)(((byte)(72)))), ((int)(((byte)(210)))), ((int)(((byte)(122)))));
this.pnlReservatorio.AccentColor = System.Drawing.Color.FromArgb(((int)(((byte)(244)))), ((int)(((byte)(181)))), ((int)(((byte)(68)))));
this.pnlReservatorio.BackColor = System.Drawing.Color.Transparent;
this.pnlReservatorio.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(53)))), ((int)(((byte)(63)))), ((int)(((byte)(69)))));
this.pnlReservatorio.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(244)))), ((int)(((byte)(181)))), ((int)(((byte)(68)))));
this.pnlReservatorio.Controls.Add(this.reservatorioLayout);
this.pnlReservatorio.CornerRadius = 10;
this.pnlReservatorio.Dock = System.Windows.Forms.DockStyle.Fill;
this.pnlReservatorio.FillColor = System.Drawing.Color.FromArgb(((int)(((byte)(24)))), ((int)(((byte)(29)))), ((int)(((byte)(33)))));
this.pnlReservatorio.Location = new System.Drawing.Point(3, 311);
this.pnlReservatorio.MinimumSize = new System.Drawing.Size(30, 30);
this.pnlReservatorio.Location = new System.Drawing.Point(0, 308);
this.pnlReservatorio.Margin = new System.Windows.Forms.Padding(0);
this.pnlReservatorio.MinimumSize = new System.Drawing.Size(30, 25);
this.pnlReservatorio.Name = "pnlReservatorio";
this.pnlReservatorio.Padding = new System.Windows.Forms.Padding(12);
this.pnlReservatorio.Size = new System.Drawing.Size(150, 147);
this.pnlReservatorio.Padding = new System.Windows.Forms.Padding(10, 6, 10, 6);
this.pnlReservatorio.Size = new System.Drawing.Size(388, 153);
this.pnlReservatorio.TabIndex = 2;
//
// reservatorioLayout
//
this.reservatorioLayout.BackColor = System.Drawing.Color.Transparent;
this.reservatorioLayout.ColumnCount = 2;
this.reservatorioLayout.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
this.reservatorioLayout.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
this.reservatorioLayout.Controls.Add(this.lblReservatorio, 0, 0);
this.reservatorioLayout.Controls.Add(this.fldCapacidadeReservatorio, 0, 1);
this.reservatorioLayout.Controls.Add(this.fldReservatorioMin, 1, 1);
this.reservatorioLayout.Controls.Add(this.fldReservatorioCritico, 0, 2);
this.reservatorioLayout.Dock = System.Windows.Forms.DockStyle.Fill;
this.reservatorioLayout.Location = new System.Drawing.Point(10, 6);
this.reservatorioLayout.Margin = new System.Windows.Forms.Padding(0);
this.reservatorioLayout.Name = "reservatorioLayout";
this.reservatorioLayout.RowCount = 3;
this.reservatorioLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 24F));
this.reservatorioLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F));
this.reservatorioLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F));
this.reservatorioLayout.Size = new System.Drawing.Size(368, 141);
this.reservatorioLayout.TabIndex = 0;
//
// lblReservatorio
//
this.lblReservatorio.BackColor = System.Drawing.Color.Transparent;
this.reservatorioLayout.SetColumnSpan(this.lblReservatorio, 2);
this.lblReservatorio.Dock = System.Windows.Forms.DockStyle.Fill;
this.lblReservatorio.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Bold);
this.lblReservatorio.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(244)))), ((int)(((byte)(181)))), ((int)(((byte)(68)))));
this.lblReservatorio.Location = new System.Drawing.Point(0, 0);
this.lblReservatorio.Margin = new System.Windows.Forms.Padding(0);
this.lblReservatorio.Name = "lblReservatorio";
this.lblReservatorio.Size = new System.Drawing.Size(368, 24);
this.lblReservatorio.TabIndex = 0;
this.lblReservatorio.Text = "▌ RESERVATÓRIO";
this.lblReservatorio.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
// fldCapacidadeReservatorio
//
this.fldCapacidadeReservatorio.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(36)))), ((int)(((byte)(41)))));
this.fldCapacidadeReservatorio.DecimalPlaces = 1;
this.fldCapacidadeReservatorio.Dock = System.Windows.Forms.DockStyle.Fill;
this.fldCapacidadeReservatorio.Location = new System.Drawing.Point(2, 26);
this.fldCapacidadeReservatorio.Margin = new System.Windows.Forms.Padding(2, 2, 3, 3);
this.fldCapacidadeReservatorio.Maximum = new decimal(new int[] {
1000,
0,
0,
0});
this.fldCapacidadeReservatorio.MinimumSize = new System.Drawing.Size(0, 48);
this.fldCapacidadeReservatorio.Name = "fldCapacidadeReservatorio";
this.fldCapacidadeReservatorio.Padding = new System.Windows.Forms.Padding(4, 2, 4, 3);
this.fldCapacidadeReservatorio.Size = new System.Drawing.Size(179, 53);
this.fldCapacidadeReservatorio.TabIndex = 0;
this.fldCapacidadeReservatorio.Titulo = "Capacidade";
this.fldCapacidadeReservatorio.Unidade = "L";
//
// fldReservatorioMin
//
this.fldReservatorioMin.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(36)))), ((int)(((byte)(41)))));
this.fldReservatorioMin.Dock = System.Windows.Forms.DockStyle.Fill;
this.fldReservatorioMin.Location = new System.Drawing.Point(187, 26);
this.fldReservatorioMin.Margin = new System.Windows.Forms.Padding(3, 2, 2, 3);
this.fldReservatorioMin.MinimumSize = new System.Drawing.Size(0, 48);
this.fldReservatorioMin.Name = "fldReservatorioMin";
this.fldReservatorioMin.Padding = new System.Windows.Forms.Padding(4, 2, 4, 3);
this.fldReservatorioMin.Size = new System.Drawing.Size(179, 53);
this.fldReservatorioMin.TabIndex = 1;
this.fldReservatorioMin.Titulo = "Mínimo";
this.fldReservatorioMin.Unidade = "%";
//
// fldReservatorioCritico
//
this.fldReservatorioCritico.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(36)))), ((int)(((byte)(41)))));
this.fldReservatorioCritico.Dock = System.Windows.Forms.DockStyle.Fill;
this.fldReservatorioCritico.Location = new System.Drawing.Point(2, 84);
this.fldReservatorioCritico.Margin = new System.Windows.Forms.Padding(2);
this.fldReservatorioCritico.MinimumSize = new System.Drawing.Size(0, 48);
this.fldReservatorioCritico.Name = "fldReservatorioCritico";
this.fldReservatorioCritico.Padding = new System.Windows.Forms.Padding(4, 2, 4, 3);
this.fldReservatorioCritico.Size = new System.Drawing.Size(180, 55);
this.fldReservatorioCritico.TabIndex = 2;
this.fldReservatorioCritico.Titulo = "Mínimo crítico";
this.fldReservatorioCritico.Unidade = "%";
//
// pnlFooter
//
this.pnlFooter.AccentColor = System.Drawing.Color.FromArgb(((int)(((byte)(72)))), ((int)(((byte)(210)))), ((int)(((byte)(122)))));
@ -548,9 +912,9 @@ namespace AgroBase.Forms.IHM
this.footerLayout.BackColor = System.Drawing.Color.Transparent;
this.footerLayout.ColumnCount = 4;
this.footerLayout.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
this.footerLayout.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 130F));
this.footerLayout.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 145F));
this.footerLayout.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 155F));
this.footerLayout.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 145F));
this.footerLayout.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 145F));
this.footerLayout.Controls.Add(this.lblAlteracoes, 0, 0);
this.footerLayout.Controls.Add(this.btnRestaurar, 1, 0);
this.footerLayout.Controls.Add(this.btnSalvar, 2, 0);
@ -572,206 +936,61 @@ namespace AgroBase.Forms.IHM
this.lblAlteracoes.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(164)))), ((int)(((byte)(174)))), ((int)(((byte)(181)))));
this.lblAlteracoes.Location = new System.Drawing.Point(3, 0);
this.lblAlteracoes.Name = "lblAlteracoes";
this.lblAlteracoes.Size = new System.Drawing.Size(328, 41);
this.lblAlteracoes.Size = new System.Drawing.Size(323, 41);
this.lblAlteracoes.TabIndex = 0;
this.lblAlteracoes.Text = "Parâmetros sincronizados com o equipamento.";
this.lblAlteracoes.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
// btnRestaurar
//
this.btnRestaurar.AccentColor = System.Drawing.Color.FromArgb(((int)(((byte)(72)))), ((int)(((byte)(210)))), ((int)(((byte)(122)))));
this.btnRestaurar.AccentColor = System.Drawing.Color.FromArgb(((int)(((byte)(164)))), ((int)(((byte)(174)))), ((int)(((byte)(181)))));
this.btnRestaurar.BackColor = System.Drawing.Color.Transparent;
this.btnRestaurar.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(53)))), ((int)(((byte)(63)))), ((int)(((byte)(69)))));
this.btnRestaurar.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(114)))), ((int)(((byte)(122)))), ((int)(((byte)(127)))));
this.btnRestaurar.Cursor = System.Windows.Forms.Cursors.Hand;
this.btnRestaurar.Dock = System.Windows.Forms.DockStyle.Fill;
this.btnRestaurar.FillColor = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(36)))), ((int)(((byte)(41)))));
this.btnRestaurar.IconText = "●";
this.btnRestaurar.IconText = "↻";
this.btnRestaurar.Location = new System.Drawing.Point(334, 2);
this.btnRestaurar.Margin = new System.Windows.Forms.Padding(0, 2, 0, 2);
this.btnRestaurar.MinimumSize = new System.Drawing.Size(130, 36);
this.btnRestaurar.Margin = new System.Windows.Forms.Padding(5, 2, 0, 2);
this.btnRestaurar.MinimumSize = new System.Drawing.Size(60, 34);
this.btnRestaurar.Name = "btnRestaurar";
this.btnRestaurar.Size = new System.Drawing.Size(130, 37);
this.btnRestaurar.Size = new System.Drawing.Size(140, 37);
this.btnRestaurar.TabIndex = 1;
this.btnRestaurar.Text = "Restaurar";
this.btnRestaurar.Text = "RESTAURAR";
//
// btnSalvar
//
this.btnSalvar.AccentColor = System.Drawing.Color.FromArgb(((int)(((byte)(72)))), ((int)(((byte)(210)))), ((int)(((byte)(122)))));
this.btnSalvar.BackColor = System.Drawing.Color.Transparent;
this.btnSalvar.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(53)))), ((int)(((byte)(63)))), ((int)(((byte)(69)))));
this.btnSalvar.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(144)))), ((int)(((byte)(92)))));
this.btnSalvar.Cursor = System.Windows.Forms.Cursors.Hand;
this.btnSalvar.Dock = System.Windows.Forms.DockStyle.Fill;
this.btnSalvar.FillColor = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(36)))), ((int)(((byte)(41)))));
this.btnSalvar.IconText = "●";
this.btnSalvar.Location = new System.Drawing.Point(464, 2);
this.btnSalvar.Margin = new System.Windows.Forms.Padding(0, 2, 0, 2);
this.btnSalvar.MinimumSize = new System.Drawing.Size(130, 36);
this.btnSalvar.IconText = "✓";
this.btnSalvar.Location = new System.Drawing.Point(479, 2);
this.btnSalvar.Margin = new System.Windows.Forms.Padding(5, 2, 0, 2);
this.btnSalvar.MinimumSize = new System.Drawing.Size(60, 34);
this.btnSalvar.Name = "btnSalvar";
this.btnSalvar.Size = new System.Drawing.Size(145, 37);
this.btnSalvar.Size = new System.Drawing.Size(140, 37);
this.btnSalvar.TabIndex = 2;
this.btnSalvar.Text = "Salvar Parâmetros";
this.btnSalvar.Text = "SALVAR";
//
// btnTestarComunicacao
//
this.btnTestarComunicacao.AccentColor = System.Drawing.Color.FromArgb(((int)(((byte)(72)))), ((int)(((byte)(210)))), ((int)(((byte)(122)))));
this.btnTestarComunicacao.AccentColor = System.Drawing.Color.FromArgb(((int)(((byte)(61)))), ((int)(((byte)(165)))), ((int)(((byte)(255)))));
this.btnTestarComunicacao.BackColor = System.Drawing.Color.Transparent;
this.btnTestarComunicacao.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(53)))), ((int)(((byte)(63)))), ((int)(((byte)(69)))));
this.btnTestarComunicacao.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(57)))), ((int)(((byte)(119)))), ((int)(((byte)(151)))));
this.btnTestarComunicacao.Cursor = System.Windows.Forms.Cursors.Hand;
this.btnTestarComunicacao.Dock = System.Windows.Forms.DockStyle.Fill;
this.btnTestarComunicacao.FillColor = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(36)))), ((int)(((byte)(41)))));
this.btnTestarComunicacao.IconText = "●";
this.btnTestarComunicacao.Location = new System.Drawing.Point(609, 2);
this.btnTestarComunicacao.Margin = new System.Windows.Forms.Padding(0, 2, 0, 2);
this.btnTestarComunicacao.MinimumSize = new System.Drawing.Size(130, 36);
this.btnTestarComunicacao.IconText = "◉";
this.btnTestarComunicacao.Location = new System.Drawing.Point(624, 2);
this.btnTestarComunicacao.Margin = new System.Windows.Forms.Padding(5, 2, 0, 2);
this.btnTestarComunicacao.MinimumSize = new System.Drawing.Size(60, 34);
this.btnTestarComunicacao.Name = "btnTestarComunicacao";
this.btnTestarComunicacao.Size = new System.Drawing.Size(150, 37);
this.btnTestarComunicacao.Size = new System.Drawing.Size(140, 37);
this.btnTestarComunicacao.TabIndex = 3;
this.btnTestarComunicacao.Text = "Testar Comunicação";
//
// geometriaLayout
//
this.geometriaLayout.ColumnCount = 3;
this.geometriaLayout.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 33.33F));
this.geometriaLayout.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 33.33F));
this.geometriaLayout.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 33.34F));
this.geometriaLayout.Controls.Add(this.fldLeverFrontal, 0, 1);
this.geometriaLayout.Controls.Add(this.fldLeverLateral, 1, 1);
this.geometriaLayout.Controls.Add(this.fldEntreEixos, 2, 1);
this.geometriaLayout.Controls.Add(this.fldAnguloFrontal, 0, 2);
this.geometriaLayout.Controls.Add(this.fldAnguloLateral, 1, 2);
this.geometriaLayout.Location = new System.Drawing.Point(0, 0);
this.geometriaLayout.Name = "geometriaLayout";
this.geometriaLayout.RowCount = 3;
this.geometriaLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 24F));
this.geometriaLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F));
this.geometriaLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F));
this.geometriaLayout.Size = new System.Drawing.Size(200, 100);
this.geometriaLayout.TabIndex = 0;
this.geometriaLayout.Dock = System.Windows.Forms.DockStyle.Fill;
this.pnlGeometria.Controls.Add(this.geometriaLayout);
//
// fldLeverFrontal
//
SetupNumeric(this.fldLeverFrontal, "Lever arm frontal", "cm", 0M, -1000M, 1000M, 1M, 1);
this.fldLeverFrontal.Margin = new System.Windows.Forms.Padding(2, 2, 3, 3);
//
// fldLeverLateral
//
SetupNumeric(this.fldLeverLateral, "Lever arm lateral", "cm", 0M, -1000M, 1000M, 1M, 1);
this.fldLeverLateral.Margin = new System.Windows.Forms.Padding(3, 2, 3, 3);
//
// fldEntreEixos
//
SetupNumeric(this.fldEntreEixos, "Distância entre eixos", "cm", 0M, 0M, 1000M, 1M, 1);
this.fldEntreEixos.Margin = new System.Windows.Forms.Padding(3, 2, 2, 3);
//
// fldAnguloFrontal
//
SetupNumeric(this.fldAnguloFrontal, "Ângulo máx. frontal", "°", 0M, 0M, 90M, 1M, 1);
this.fldAnguloFrontal.Margin = new System.Windows.Forms.Padding(2, 2, 3, 2);
//
// fldAnguloLateral
//
SetupNumeric(this.fldAnguloLateral, "Ângulo máx. lateral", "°", 0M, 0M, 90M, 1M, 1);
this.fldAnguloLateral.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
//
// lblGeometria
//
this.lblGeometria.Location = new System.Drawing.Point(0, 0);
this.lblGeometria.Name = "lblGeometria";
this.lblGeometria.Size = new System.Drawing.Size(100, 23);
this.lblGeometria.TabIndex = 0;
//
// bateriaLayout
//
this.bateriaLayout.ColumnCount = 3;
this.bateriaLayout.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 33.33F));
this.bateriaLayout.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 33.33F));
this.bateriaLayout.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 33.34F));
this.bateriaLayout.Controls.Add(this.fldTensaoMin, 0, 1);
this.bateriaLayout.Controls.Add(this.fldTensaoMax, 1, 1);
this.bateriaLayout.Controls.Add(this.fldCorrenteMax, 2, 1);
this.bateriaLayout.Controls.Add(this.fldPercentualTensaoMin, 0, 2);
this.bateriaLayout.Location = new System.Drawing.Point(0, 0);
this.bateriaLayout.Name = "bateriaLayout";
this.bateriaLayout.RowCount = 3;
this.bateriaLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 24F));
this.bateriaLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F));
this.bateriaLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F));
this.bateriaLayout.Size = new System.Drawing.Size(200, 100);
this.bateriaLayout.TabIndex = 0;
this.bateriaLayout.Dock = System.Windows.Forms.DockStyle.Fill;
this.pnlBateria.Controls.Add(this.bateriaLayout);
//
// fldTensaoMin
//
SetupNumeric(this.fldTensaoMin, "Tensão mínima", "V", 0M, 0M, 100M, 0.1M, 1);
this.fldTensaoMin.Margin = new System.Windows.Forms.Padding(2, 2, 3, 3);
//
// fldTensaoMax
//
SetupNumeric(this.fldTensaoMax, "Tensão máxima", "V", 0M, 0M, 100M, 0.1M, 1);
this.fldTensaoMax.Margin = new System.Windows.Forms.Padding(3, 2, 3, 3);
//
// fldCorrenteMax
//
SetupNumeric(this.fldCorrenteMax, "Corrente máxima", "A", 0M, 0M, 1000M, 1M, 1);
this.fldCorrenteMax.Margin = new System.Windows.Forms.Padding(3, 2, 2, 3);
//
// fldPercentualTensaoMin
//
SetupNumeric(this.fldPercentualTensaoMin, "Tensão mínima", "%", 0M, 0M, 100M, 1M, 0);
this.fldPercentualTensaoMin.Margin = new System.Windows.Forms.Padding(2, 2, 3, 2);
//
// lblBateria
//
this.lblBateria.Location = new System.Drawing.Point(0, 0);
this.lblBateria.Name = "lblBateria";
this.lblBateria.Size = new System.Drawing.Size(100, 23);
this.lblBateria.TabIndex = 0;
//
// reservatorioLayout
//
this.reservatorioLayout.ColumnCount = 2;
this.reservatorioLayout.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
this.reservatorioLayout.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
this.reservatorioLayout.Controls.Add(this.fldCapacidadeReservatorio, 0, 1);
this.reservatorioLayout.Controls.Add(this.fldReservatorioMin, 1, 1);
this.reservatorioLayout.Controls.Add(this.fldReservatorioCritico, 0, 2);
this.reservatorioLayout.Location = new System.Drawing.Point(0, 0);
this.reservatorioLayout.Name = "reservatorioLayout";
this.reservatorioLayout.RowCount = 3;
this.reservatorioLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 24F));
this.reservatorioLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F));
this.reservatorioLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F));
this.reservatorioLayout.Size = new System.Drawing.Size(200, 100);
this.reservatorioLayout.TabIndex = 0;
this.reservatorioLayout.Dock = System.Windows.Forms.DockStyle.Fill;
this.pnlReservatorio.Controls.Add(this.reservatorioLayout);
//
// fldCapacidadeReservatorio
//
SetupNumeric(this.fldCapacidadeReservatorio, "Capacidade", "L", 0M, 0M, 1000M, 1M, 1);
this.fldCapacidadeReservatorio.Margin = new System.Windows.Forms.Padding(2, 2, 3, 3);
//
// fldReservatorioMin
//
SetupNumeric(this.fldReservatorioMin, "Mínimo", "%", 0M, 0M, 100M, 1M, 0);
this.fldReservatorioMin.Margin = new System.Windows.Forms.Padding(3, 2, 2, 3);
//
// fldReservatorioCritico
//
SetupNumeric(this.fldReservatorioCritico, "Mínimo crítico", "%", 0M, 0M, 100M, 1M, 0);
this.fldReservatorioCritico.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
//
// lblReservatorio
//
this.lblReservatorio.Location = new System.Drawing.Point(0, 0);
this.lblReservatorio.Name = "lblReservatorio";
this.lblReservatorio.Size = new System.Drawing.Size(100, 23);
this.lblReservatorio.TabIndex = 0;
this.btnTestarComunicacao.Text = "TESTAR REDE";
//
// frmAjustes
//
@ -798,28 +1017,18 @@ namespace AgroBase.Forms.IHM
this.pnlRedes.ResumeLayout(false);
this.redesLayout.ResumeLayout(false);
this.rightLayout.ResumeLayout(false);
this.pnlGeometria.ResumeLayout(false);
this.geometriaLayout.ResumeLayout(false);
this.pnlBateria.ResumeLayout(false);
this.bateriaLayout.ResumeLayout(false);
this.pnlReservatorio.ResumeLayout(false);
this.reservatorioLayout.ResumeLayout(false);
this.pnlFooter.ResumeLayout(false);
this.footerLayout.ResumeLayout(false);
this.geometriaLayout.ResumeLayout(false);
this.bateriaLayout.ResumeLayout(false);
this.reservatorioLayout.ResumeLayout(false);
this.ResumeLayout(false);
}
private static void SetupNumeric(AgroBase.Forms.IHM.Operacao.Parametros.Controls.HmiCompactNumericField field, string title, string unit, decimal value, decimal minimum, decimal maximum, decimal increment, int decimalPlaces)
{
field.Dock = DockStyle.Fill;
field.MinimumSize = new System.Drawing.Size(0, 48);
field.Titulo = title;
field.Unidade = unit;
field.Minimum = minimum;
field.Maximum = maximum;
field.Increment = increment;
field.DecimalPlaces = decimalPlaces;
field.Value = value;
}
#endregion
private System.Windows.Forms.TableLayoutPanel rootLayout;

View File

@ -29,9 +29,6 @@ namespace AgroBase.Forms.IHM
{
InitializeComponent();
ConfigurarAparencia();
CorrigirLayoutInicial();
VincularEventos();
}
@ -59,471 +56,7 @@ namespace AgroBase.Forms.IHM
public void AtualizarDadosTela()
{
}
private void ConfigurarAparencia()
{
SuspendLayout();
try
{
ConfigurarSecao(
pnlGeometria,
geometriaLayout,
lblGeometria,
"▌ GEOMETRIA",
HmiTheme.Manual,
new Padding(0, 0, 0, 4));
ConfigurarSecao(
pnlBateria,
bateriaLayout,
lblBateria,
"▌ BATERIA",
HmiTheme.Success,
new Padding(0, 0, 0, 4));
ConfigurarSecao(
pnlReservatorio,
reservatorioLayout,
lblReservatorio,
"▌ RESERVATÓRIO",
HmiTheme.Warning,
Padding.Empty);
ConfigurarBotaoRodape(
btnRestaurar,
"RESTAURAR",
"↻",
HmiTheme.TextMuted);
ConfigurarBotaoRodape(
btnSalvar,
"SALVAR",
"✓",
HmiTheme.Success);
ConfigurarBotaoRodape(
btnTestarComunicacao,
"TESTAR REDE",
"◉",
HmiTheme.Info);
ConfigurarBotaoHeader(
btnVoltar,
"VOLTAR",
"←",
HmiTheme.Info);
btnVoltar.Dock = DockStyle.Fill;
btnVoltar.Margin = new Padding(0, 4, 8, 4);
ConfigurarBotaoSecao(
btnAtualizarCameras,
"ATUALIZAR",
"↻",
HmiTheme.Info,
142);
btnAtualizarCameras.Dock = DockStyle.Left;
btnAtualizarCameras.Width = 150;
btnAtualizarCameras.Margin =
new Padding(0, 2, 0, 0);
}
finally
{
ResumeLayout(true);
}
}
private void ConfigurarSecao(HmiRoundedPanel painel, TableLayoutPanel layout, Label titulo, string textoTitulo, Color corDestaque, Padding margem)
{
painel.SuspendLayout();
layout.SuspendLayout();
try
{
painel.Dock = DockStyle.Fill;
painel.FillColor = HmiTheme.Surface;
painel.BorderColor = corDestaque;
painel.BorderThickness = 1;
painel.CornerRadius = 10;
painel.AccentColor = corDestaque;
painel.ShowAccent = false;
painel.Margin = margem;
painel.Padding = new Padding(10, 6, 10, 6);
layout.Dock = DockStyle.Fill;
layout.BackColor = Color.Transparent;
layout.Margin = Padding.Empty;
layout.Padding = Padding.Empty;
titulo.Dock = DockStyle.Fill;
titulo.AutoSize = false;
titulo.BackColor = Color.Transparent;
titulo.ForeColor = corDestaque;
titulo.Font = new Font("Segoe UI", 9F, FontStyle.Bold);
titulo.Text = textoTitulo;
titulo.TextAlign = ContentAlignment.MiddleLeft;
titulo.Margin = Padding.Empty;
titulo.Padding = Padding.Empty;
if (!layout.Controls.Contains(titulo))
layout.Controls.Add(titulo, 0, 0);
if (!painel.Controls.Contains(layout))
{
painel.Controls.Clear();
painel.Controls.Add(layout);
}
layout.BringToFront();
}
finally
{
layout.ResumeLayout(true);
painel.ResumeLayout(true);
}
}
private void ConfigurarBotaoRodape(HmiSidebarButton botao, string texto, string icone, Color corDestaque)
{
botao.Dock = DockStyle.Fill;
botao.Text = texto;
botao.IconText = icone;
botao.AccentColor = corDestaque;
botao.BorderColor = MisturarCores(HmiTheme.Border, corDestaque, 0.55F);
botao.FillColor = HmiTheme.SurfaceRaised;
botao.CornerRadius = 9;
botao.Margin = new Padding(5, 2, 0, 2);
botao.Padding = Padding.Empty;
botao.Cursor = Cursors.Hand;
}
private void ConfigurarBotaoHeader(HmiSidebarButton botao, string texto, string icone, Color corDestaque)
{
botao.SuspendLayout();
try
{
botao.Text = texto;
botao.IconText = icone;
botao.AccentColor = corDestaque;
botao.BorderColor = MisturarCores(
HmiTheme.Border,
corDestaque,
0.55F);
botao.FillColor =
HmiTheme.SurfaceRaised;
botao.CornerRadius = 9;
botao.Dock = DockStyle.Fill;
/*
* Essencial: o botão antigo exigia 130 px,
* mas a coluna do header tem aproximadamente 112 px.
*/
botao.MinimumSize =
new Size(96, 36);
botao.MaximumSize =
new Size(112, 44);
botao.Margin =
new Padding(0, 3, 10, 3);
botao.Padding =
Padding.Empty;
botao.Cursor =
Cursors.Hand;
}
finally
{
botao.ResumeLayout(true);
}
}
private void ConfigurarBotaoSecao(HmiSidebarButton botao, string texto, string icone, Color corDestaque, int largura)
{
botao.SuspendLayout();
try
{
botao.Text = texto;
botao.IconText = icone;
botao.AccentColor =
corDestaque;
botao.BorderColor =
MisturarCores(
HmiTheme.Border,
corDestaque,
0.45F);
botao.FillColor =
HmiTheme.SurfaceRaised;
botao.CornerRadius = 8;
botao.Dock =
DockStyle.Left;
botao.MinimumSize =
new Size(110, 32);
botao.MaximumSize =
new Size(largura, 34);
botao.Width = largura;
botao.Height = 33;
botao.Margin =
new Padding(0, 2, 0, 0);
botao.Padding =
Padding.Empty;
botao.Cursor =
Cursors.Hand;
}
finally
{
botao.ResumeLayout(true);
}
}
private static Color MisturarCores(Color corBase, Color corDestaque, float pesoDestaque)
{
pesoDestaque = Math.Max(0F, Math.Min(1F, pesoDestaque));
float pesoBase = 1F - pesoDestaque;
return Color.FromArgb(
(int)(corBase.R * pesoBase + corDestaque.R * pesoDestaque),
(int)(corBase.G * pesoBase + corDestaque.G * pesoDestaque),
(int)( corBase.B * pesoBase + corDestaque.B * pesoDestaque)
);
}
private void CorrigirLayoutInicial()
{
SuspendLayout();
rootLayout.SuspendLayout();
contentLayout.SuspendLayout();
try
{
// =====================================================
// HEADER
// =====================================================
headerLayout.ColumnStyles.Clear();
headerLayout.ColumnStyles.Add(new ColumnStyle(SizeType.Absolute, 112F));
headerLayout.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 100F));
headerLayout.ColumnStyles.Add(new ColumnStyle(SizeType.Absolute, 165F));
headerTextLayout.Margin = new Padding(10, 0, 5, 0);
lblTitulo.Padding = Padding.Empty;
lblSubtitulo.Padding = Padding.Empty;
// =====================================================
// COLUNAS PRINCIPAIS
// =====================================================
contentLayout.ColumnStyles.Clear();
contentLayout.ColumnStyles.Add(
new ColumnStyle(
SizeType.Percent,
50F
)
);
contentLayout.ColumnStyles.Add(
new ColumnStyle(
SizeType.Percent,
50F
)
);
leftLayout.Dock = DockStyle.Fill;
rightLayout.Dock = DockStyle.Fill;
leftLayout.MinimumSize = Size.Empty;
rightLayout.MinimumSize = Size.Empty;
// =====================================================
// CÂMERAS
// =====================================================
/*cameraFrontal.MinimumSize =
Size.Empty;
cameraFrontal.Height = 86;
cameraErvas.MinimumSize =
Size.Empty;
cameraErvas.Height = 86;
camerasLayout.RowStyles.Clear();
camerasLayout.RowStyles.Add(
new RowStyle(
SizeType.Absolute,
24F
)
);
camerasLayout.RowStyles.Add(
new RowStyle(
SizeType.Absolute,
88F
)
);
camerasLayout.RowStyles.Add(
new RowStyle(
SizeType.Absolute,
88F
)
);
camerasLayout.RowStyles.Add(
new RowStyle(
SizeType.Percent,
100F
)
);*/
// =====================================================
// REDES
// =====================================================
redeHaLow.MinimumSize =
Size.Empty;
redeCan.MinimumSize =
Size.Empty;
redeHaLow.Height = 67;
redeCan.Height = 67;
redesLayout.RowStyles.Clear();
redesLayout.RowStyles.Add(
new RowStyle(
SizeType.Absolute,
24F
)
);
redesLayout.RowStyles.Add(
new RowStyle(
SizeType.Percent,
50F
)
);
redesLayout.RowStyles.Add(
new RowStyle(
SizeType.Percent,
50F
)
);
// =====================================================
// PAINÉIS DA DIREITA
// =====================================================
ConfigurarPainelDireito(
pnlGeometria,
geometriaLayout
);
ConfigurarPainelDireito(
pnlBateria,
bateriaLayout
);
ConfigurarPainelDireito(
pnlReservatorio,
reservatorioLayout
);
// =====================================================
// FOOTER
// =====================================================
btnRestaurar.Text =
"RESTAURAR";
btnRestaurar.IconText =
"↻";
btnSalvar.Text =
"SALVAR";
btnSalvar.IconText =
"✓";
btnTestarComunicacao.Text =
"TESTAR REDE";
btnTestarComunicacao.IconText =
"◉";
btnRestaurar.Margin =
new Padding(5, 2, 0, 2);
btnSalvar.Margin =
new Padding(5, 2, 0, 2);
btnTestarComunicacao.Margin =
new Padding(5, 2, 0, 2);
pnlGeometria.BringToFront();
pnlBateria.BringToFront();
pnlReservatorio.BringToFront();
contentLayout.PerformLayout();
rootLayout.PerformLayout();
}
finally
{
contentLayout.ResumeLayout(true);
rootLayout.ResumeLayout(true);
ResumeLayout(true);
}
}
private static void ConfigurarPainelDireito(HmiRoundedPanel painel, TableLayoutPanel layout)
{
painel.Dock = DockStyle.Fill;
painel.Visible = true;
painel.MinimumSize = Size.Empty;
layout.Dock = DockStyle.Fill;
layout.Visible = true;
layout.MinimumSize = Size.Empty;
if (!painel.Controls.Contains(layout))
{
painel.Controls.Clear();
painel.Controls.Add(layout);
}
layout.BringToFront();
lblRover.Text = $"ROVER {VariaveisEquipamento.Parametros.serial_number}\r\nConfiguração local";
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -56,7 +56,7 @@
this.lblTituloAtualizacoes = new System.Windows.Forms.Label();
this.picWifi = new System.Windows.Forms.PictureBox();
this.lblAtualizacaoResumo = new System.Windows.Forms.Label();
this.pgbAtualizacaoArquivos = new System.Windows.Forms.ProgressBar();
this.pgbAtualizacaoArquivos = new Controls.Operacao.HmiProgressBar();
this.lblProgressoAtualizacao = new System.Windows.Forms.Label();
this.pnlFooter = new System.Windows.Forms.Panel();
this.footerLayout = new System.Windows.Forms.TableLayoutPanel();
@ -168,7 +168,6 @@
this.lblTitulo.Size = new System.Drawing.Size(531, 31);
this.lblTitulo.TabIndex = 0;
this.lblTitulo.Text = "MENU DO EQUIPAMENTO";
this.lblTitulo.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
// lblStatus
//
@ -183,7 +182,7 @@
this.lblStatus.Size = new System.Drawing.Size(531, 19);
this.lblStatus.TabIndex = 1;
this.lblStatus.Text = "Acesso rápido para operação em campo";
this.lblStatus.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
this.lblStatus.TextAlign = System.Drawing.ContentAlignment.BottomLeft;
//
// pnlRoverStatus
//
@ -727,7 +726,6 @@
this.pgbAtualizacaoArquivos.Margin = new System.Windows.Forms.Padding(5, 3, 5, 2);
this.pgbAtualizacaoArquivos.Name = "pgbAtualizacaoArquivos";
this.pgbAtualizacaoArquivos.Size = new System.Drawing.Size(154, 11);
this.pgbAtualizacaoArquivos.Style = System.Windows.Forms.ProgressBarStyle.Continuous;
this.pgbAtualizacaoArquivos.TabIndex = 3;
//
// lblProgressoAtualizacao
@ -875,7 +873,7 @@
private System.Windows.Forms.Label lblTituloAtualizacoes;
private System.Windows.Forms.PictureBox picWifi;
private System.Windows.Forms.Label lblAtualizacaoResumo;
public System.Windows.Forms.ProgressBar pgbAtualizacaoArquivos;
public new Controls.Operacao.HmiProgressBar pgbAtualizacaoArquivos;
public System.Windows.Forms.Label lblProgressoAtualizacao;
private System.Windows.Forms.Panel pnlFooter;
private System.Windows.Forms.TableLayoutPanel footerLayout;

View File

@ -96,8 +96,9 @@ namespace AgroBase.Forms.IHM
tileDiagnosticos.SetStatus(existeFalha ? "Existe uma falha ativa" : "Saúde geral normal", existeFalha ? HmiTheme.Warning : HmiTheme.Info);
tileDiagnosticos.AccentColor = existeFalha ? HmiTheme.Warning : HmiTheme.Info;
bool pronto = operacaoLiberada && mqttConectado && iaConectada;
bool pronto = operacaoLiberada;
lblRoverNome.Text = $"ROVER {VariaveisEquipamento.Parametros.serial_number}";
lblRoverProntidao.Text = pronto ? "Pronto para operação" : "Aguardando condições";
lblRoverProntidao.ForeColor = pronto ? HmiTheme.Success : HmiTheme.Warning;
lblRoverDot.ForeColor = pronto ? HmiTheme.Success : HmiTheme.Warning;

View File

@ -1,5 +1,4 @@

using AgroBase.Forms.IHM.Controls;
using AgroBase.Forms.IHM.Controls;
using AgroBase.Forms.IHM.Operacao;
using AgroBase.Models;
using System;
@ -55,6 +54,8 @@ namespace AgroBase.Forms.IHM
lblStatusOperacao.Text = op_liberada ? "Operação Liberada" : "Operação Bloqueada";
lblStatusOperacao.ForeColor = op_liberada ? HmiTheme.Success : HmiTheme.Warning;
lblModoValor.Text = (op?.Parametros?.Modo ?? Enums.ModoOperacao.NaoDefinido).ToString();
switch (_abaAtual)
{
case AbaOperacaoIHM.Movimentacao:

View File

@ -22,6 +22,7 @@ using Newtonsoft.Json;
using AgroMonitor;
using System.Net;
using System.Net.Sockets;
using AgroBase.Forms.IHM.Controls.Operacao;
namespace AgroBase.Models
{
@ -1420,6 +1421,15 @@ namespace AgroBase.Models
pgb.Minimum;
}
public static void PreencheValorProgressBar(HmiProgressBar pgb, double Valor)
{
pgb.Value =
Valor >= pgb.Minimum && Valor <= pgb.Maximum ? pgb.Value = Convert.ToInt32(Valor) :
Valor < pgb.Minimum ? pgb.Value = pgb.Minimum :
Valor > pgb.Maximum ? pgb.Value = pgb.Maximum :
pgb.Minimum;
}
public static void PreencheValorTrackBar(TrackBar tkb, double Valor)
{
tkb.Value =

View File

@ -1487,12 +1487,11 @@ class CameraIMU(ModuloDiagnosticoBase):
sensors_count = int(data.get("sensors_count", 0) or 0)
sensors_valid_count = int(data.get("sensors_valid_count", 0) or 0)
sensors_ignored_count = int(data.get("sensors_ignored_count", 0) or 0)
fontes_count = len(data.get("fontes", []))
if sensors_count <= 0:
motivos.append(
"Nenhum dos módulos IMU configurados foi detectado"
)
elif sensors_valid_count <= 0 and sensors_ignored_count > 0:
motivos.append("Nenhum dos módulos IMU configurados foi detectado")
elif sensors_valid_count <= 0 and sensors_ignored_count > 0 and fontes_count > 0:
motivos.append("Câmeras detectadas, mas nenhuma IMU válida")
else:
motivos.append("Nenhuma IMU válida disponível")
@ -1553,9 +1552,13 @@ class CameraIMU(ModuloDiagnosticoBase):
saude = int(max(0, min(100, saude)))
modo = data.get("modo", "sem_imu")
status = StatusModulo.OPERANTE
if not conectado:
status = StatusModulo.DESCONECTADO
elif modo == "sem_imu":
status = StatusModulo.DESCONECTADO
elif not valido:
status = StatusModulo.FALHA
elif saude <= 45: