All pastes #771898 Raw Edit

PI_calculator

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

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