/* Интерфејс на програмата за пресметување на Пи, со 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