2018-01-29 13:39:29 +00:00
|
|
|
|
// This is free and unencumbered software released into the public domain.
|
|
|
|
|
// Happy coding!!! - GtkSharp Team
|
|
|
|
|
|
|
|
|
|
using Gtk;
|
|
|
|
|
using System;
|
|
|
|
|
using System.Timers;
|
|
|
|
|
|
|
|
|
|
namespace Samples
|
|
|
|
|
{
|
|
|
|
|
[Section(ContentType = typeof(ProgressBar), Category = Category.Widgets)]
|
|
|
|
|
class ProgressBarSection : ListSection
|
|
|
|
|
{
|
|
|
|
|
public ProgressBarSection()
|
|
|
|
|
{
|
|
|
|
|
AddItem(CreateSimpleProgressBar());
|
|
|
|
|
AddItem(CreateFractionProgressBar());
|
|
|
|
|
AddItem(CreatePulseProgressBar());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public (string, Widget) CreateSimpleProgressBar()
|
|
|
|
|
{
|
|
|
|
|
var pb = new ProgressBar();
|
|
|
|
|
|
|
|
|
|
// lets add a visible request size in our example
|
|
|
|
|
pb.WidthRequest = 100;
|
|
|
|
|
|
|
|
|
|
// add a text
|
|
|
|
|
pb.Text = "Some progress...";
|
|
|
|
|
|
|
|
|
|
// to show text it must be set to true
|
|
|
|
|
pb.ShowText = true;
|
|
|
|
|
|
|
|
|
|
// progressbar is used in percentage mode values between 0.0 and 1.0
|
|
|
|
|
pb.Fraction = 0.60d;
|
|
|
|
|
|
|
|
|
|
return ("Progress Bar:", pb);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public (string, Widget) CreateFractionProgressBar()
|
|
|
|
|
{
|
|
|
|
|
// this is used when application can report progress
|
|
|
|
|
|
|
|
|
|
var pb = new ProgressBar();
|
|
|
|
|
|
|
|
|
|
pb.WidthRequest = 200;
|
|
|
|
|
|
|
|
|
|
pb.Text = "0%";
|
|
|
|
|
pb.ShowText = true;
|
|
|
|
|
pb.Fraction = 0d;
|
|
|
|
|
|
|
|
|
|
// lets add a timer to demo it
|
|
|
|
|
var timer = new Timer();
|
|
|
|
|
timer.Interval = 1000;
|
|
|
|
|
|
|
|
|
|
timer.Elapsed += (sender, e) =>
|
|
|
|
|
{
|
|
|
|
|
pb.Fraction += 0.1d;
|
|
|
|
|
if (pb.Fraction >= 1d)
|
|
|
|
|
pb.Fraction = 0d;
|
|
|
|
|
|
|
|
|
|
pb.Text = $"{Math.Truncate(pb.Fraction * 100)}%";
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
timer.Start();
|
|
|
|
|
|
|
|
|
|
return ("Progress Bar with fraction:", pb);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public (string, Widget) CreatePulseProgressBar()
|
|
|
|
|
{
|
2018-03-21 22:50:28 +00:00
|
|
|
|
// this is used when application can't report progress
|
2018-01-29 13:39:29 +00:00
|
|
|
|
|
|
|
|
|
var pb = new ProgressBar();
|
|
|
|
|
|
|
|
|
|
pb.WidthRequest = 200;
|
|
|
|
|
|
|
|
|
|
pb.Text = "Task time is unknown";
|
|
|
|
|
pb.ShowText = true;
|
|
|
|
|
|
|
|
|
|
// define how much is the pulse step
|
|
|
|
|
pb.PulseStep = 0.1d;
|
|
|
|
|
|
|
|
|
|
// lets add a timer to demo it
|
|
|
|
|
var timer = new Timer();
|
|
|
|
|
timer.Interval = 200;
|
|
|
|
|
|
|
|
|
|
timer.Elapsed += (sender, e) => pb.Pulse();
|
|
|
|
|
|
|
|
|
|
timer.Start();
|
|
|
|
|
|
|
|
|
|
return ("Progress Bar with pulse:", pb);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|