rendered paste body/*
Интерфејс на програмата за пресметување на Пи,
со n-ти децимал.
Цели на интерфејсот:
1 Да ја отвора класата за сметање пи.
2 Да нуди можност да се внесе променлива вредност до класата.
3 Да ја стопира класата ако долго смета.
4 Да го прикаже резултатот.
5 Понатамошно извезување на резултат.
Inteface of the program for calculating Pi,
with n digits.
Goals of the interface:
1 To open the class pi calculator.
2 To have way to add the var in into the class.
3 To kill the class if the class calculate long time.
4 To show the result.
5 And other ways to export or format the result.
*/
using System;
using Gtk;
using System.Threading;
using Пи_класа;
class Пи_графички
{
static void Main ()
{
Application.Init ();
прозорец();
Application.Run ();
}
static TextBuffer рез;
static SpinButton _децимали;
public static void прозорец()
{
//*****************************Горен Дел**********************
//****************сметај_btn****************
Button сметај_btn = new Button("Сметај");
сметај_btn.Clicked += _smetaj;
//******************************************
//****************ram_goren*****************
Frame ram_goren = new Frame("Променливи:");
//ram_goren.Shadow(gtk.SHADOW_ETCHED_IN );
//******************************************
//****************ram_goren*****************
_децимали = new SpinButton( 0f, 100f, 1f );
_децимали.SetRange (4, int.MaxValue );
//******************************************
//****************убиј_btn******************
Button убиј_btn = new Button("Запри");
убиј_btn.Clicked += _убиј;
//******************************************
//****************гл_управувачи*************
HBox гл_управувачи = new HBox ( false, 4 );
гл_управувачи.PackStart ( _децимали, false, false, 3 );
гл_управувачи.PackEnd ( сметај_btn, false, false, 4 );
//******************************************
ram_goren.Add( гл_управувачи );
//*****************************Долен Дел**********************
//****************верт_пакет_долу****************
VBox верт_пакет_долу = new VBox ( false, 0 );
//******************************************
//****************врм_почни*****************
Label врм_почни = new Label(" Почна во: xx:xx:xx");
верт_пакет_долу.PackStart ( врм_почни , false, false, 0 );
//******************************************
//****************врм_крај*****************
Label врм_крај = new Label("Заврши во: xx:xx:xx");
верт_пакет_долу.PackStart ( врм_крај , false, false, 0 );
//******************************************
//****************врм_разл*****************
Label врм_разл = new Label(" Вкупно: xx:xx:xx");
верт_пакет_долу.PackStart ( врм_разл , false, false, 0 );
//******************************************
//****************облик*********************
ScrolledWindow облик = new ScrolledWindow();
верт_пакет_долу.PackEnd ( облик , false, true, 0 );
//******************************************
//****************_ширач********************
Expander _ширач = new Expander ( "Резултат" );
_ширач.Add(верт_пакет_долу);
//******************************************
//****************_резултат*****************
TextView _резултат;
_резултат = new TextView ();
_резултат.Editable = false;
_резултат.CursorVisible = false;
_резултат.WrapMode = WrapMode.Char;
рез = _резултат.Buffer;
рез.Text = "0.00";
облик.AddWithViewport ( _резултат );
//******************************************
//****************верт_пакет****************
VBox верт_пакет = new VBox ( false, 0 );
верт_пакет.PackStart ( ram_goren , false, false, 0 );
верт_пакет.PackStart ( убиј_btn , false, false, 0 );
//******************************************
//****************дводел********************
VPaned дводел = new VPaned();
дводел.Pack1(верт_пакет,false,false);
дводел .Pack2(_ширач,false,false);
//******************************************
//****************Прозорец******************
Window прозор_главна = new Window ("Пи Сметач");
прозор_главна.Resizable=false;
прозор_главна.Add (дводел);//Го додава дводел во прозорецот.
прозор_главна.DeleteEvent += new DeleteEventHandler(window_destroy);
прозор_главна.ShowAll ();
/*
this.Resizable=false;
this.Add (дводел);//Го додава дводел во прозорецот.
this.DeleteEvent += new DeleteEventHandler(window_destroy);
this.ShowAll ();
*/
//******************************************
}
static void window_destroy (object obj, DeleteEventArgs args)
{
Application.Quit();
}
static void _smetaj (object obj, EventArgs a)
{
сметање_пи = new Thread(сметач);
сметање_пи.Start();
}
void чистач()
{
}
static void _убиј (object obj, EventArgs a)
{
Gtk.Application.Invoke (delegate {сметање_пи.Abort(); Console.Write("Убиец");});
}
static void сметач()
{
Gtk.Application.Invoke (delegate
{
Пи_класа.pi ps = new Пи_класа.pi();
додавач = "3."+ps.сметај(_децимали.ValueAsInt);
рез.Text = додавач;
Console.Write(рез.Text);
});
}
static string додавач;
static Thread сметање_пи;
}
//mcs -pkg:gtk-sharp-2.0 главна.cs