All pastes #771918 Raw Edit

PI_calculator

public text v1 · immutable
·published 2007-11-13 10:52 UTC
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 Пи_класа;

public class Пи_графички : Window
{
	TextBuffer рез;
	SpinButton _децимали;
	string додавач;
	Thread сметање_пи;

	public static void Main ()
	{
		Application.Init (); 
		Пи_графички window = new Пи_графички();
		window.ShowAll();
		Application.Run ();
	}



	public Пи_графички() : base("Пи Сметач")
	{
		//*****************************Горен Дел**********************
		//****************сметај_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);
		//******************************************

		//****************Прозорец******************

// This is obselete now since this class inherits the Gtk.Window class
//		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 ();
		
		//******************************************
	}

	void window_destroy (object obj, DeleteEventArgs args)
	{
		Application.Quit();
	}

	void _smetaj (object obj, EventArgs a)
	{         
		сметање_пи = new Thread(сметач);
		сметање_пи.Start();
	}


	void _убиј (object obj, EventArgs a)
	{
		Gtk.Application.Invoke (delegate {сметање_пи.Abort(); Console.Write("Убиец");});
	}

	void сметач()
	{   
		Пи_класа.pi ps = new Пи_класа.pi();
		додавач = "3."+ps.сметај(_децимали.ValueAsInt);
		рез.Text = додавач; 
		Console.Write(рез.Text);            
	}


}
//mcs -pkg:gtk-sharp-2.0 главна.cs