Latinično u ćirilično pismo i obrnuto


Program je namenjen za promenu teksta koji je napisan u Latiničnom pismu u Ćirilično i obrnuto. Ovaj put, ne radi se o konzolnoj aplikaciji već o Windows Form aplikaciji, iz više razloga,a najbitniji je funkcionalnost grafičkog korisničkog interfejsa koji omogućava unos teksta, na više načina, a najbitniji i najlakši je preko select-copy-paste operacije.

Prilikom kreiranja Windows Form aplikacije , u okviru Form dizajnera je dodato nekoliko kontrola :

dva richTextBox-a za unos i ispis teksta , sa inicijalnim tekstom koji služi kao uputstvo , dva button-a za odabir u kom smeru će se obavljati promena teksta dve label-e za naslov richtextBox-ova koje korisnik vidi na ekranu sam prozor je ograničen promenom veličine samo putem klika na Maximize odnosno Minimize dugme na prozoru. Na slici možete videti kako izgleda grafički korisnički interfejs. Po kreiranju grafičkog korisničkkog interfejsa , odabrana su četiri događaja u okviru kojih je smešten programski kod :

Prvi je MainFormSizeChanged koji se aktivira kada korisnik klikne na dugme "MaximizeBox" ili "MinimizeBox" za promenu veličine prozora kada je neophodno promeniti i veličinu i položaj samih kontrola unutar prozora. Kada se veličina prozora povećava i veličina kontrola se povećava i obrnuto.

Vidite priložen kod:

void MainFormSizeChanged(object sender, EventArgs e)

{

//

// povećava veličinu richTextBox 1 i 2 kada se maksimalno poveća

// veličina osnovnog prozora

//

if (WindowState == FormWindowState.Maximized)

{

richTextBox1.Width = 575;

richTextBox2.Width = 575;

}

//

// smanjuje veličinu richTextBox 1 i 2 kada se veličina osnovnog prozora

// vrati na normalu

//


if (WindowState == FormWindowState.Normal)

{

richTextBox1.Width = 255;

richTextBox2.Width = 255;

}

}

Drugi i treći događaj su praktično identični ali imaju drugačiju svrhu i samim time i drugačiji programski kod.

Radi se o Button1Click i Button2Click. koji se aktiviraju kada korisnik klikne na neko od dugmadi , a koja služe za odabir u kom smeru će se vršiti promena teksta. Jedno dugme i njegov događaj je za promenu iz Latiničnog pisma u Ćirilično , a drugo dugme ima obrnut smer promena.U skladu stime je napisan i programski kod:

void Button1Click(object sender, EventArgs e)

{

//

// Promena iz latiničnog u ćirilično pismo

//

richTextBox2.Text = String.Empty;

richTextBox2.Refresh();

//

// Deklaracija promenljivih

//

string LatiničniTekst = String.Empty;

string ĆiriličniTekst = String.Empty;

string LatiničnoSlovo = String.Empty;

string ĆiriličnoSlovo = String.Empty;

int DužinaLatiničnogTeksta = 0;

int Brojač = 0;

bool Promena = false;

richTextBox1.Refresh();

LatiničniTekst = richTextBox1.Text;

DužinaLatiničnogTeksta = LatiničniTekst.Length;

while ( Brojač < DužinaLatiničnogTeksta )

{

Promena = false;

ĆiriličnoSlovo = String.Empty;

if (Brojač != DužinaLatiničnogTeksta - 1 )

{

LatiničnoSlovo = LatiničniTekst.Substring(Brojač,2);

switch (LatiničnoSlovo)

{

case "lj" : ĆiriličnoSlovo = "љ";Promena = true;

break;

case "nj" : ĆiriličnoSlovo = "њ";Promena = true;

break;

case "dž" : ĆiriličnoSlovo = "џ";Promena = true;

break;

case "Lj" : ĆiriličnoSlovo = "Љ";Promena = true;

break;

case "Nj" : ĆiriličnoSlovo = "Њ";Promena = true;

break;

case "Dž" : ĆiriličnoSlovo = "Џ";Promena = true;

break;

}

if ( Promena == true )

{

Brojač += 2;

ĆiriličniTekst += ĆiriličnoSlovo;

}

}

if ( ĆiriličnoSlovo == String.Empty & Promena == false)

{

LatiničnoSlovo = LatiničniTekst.Substring(Brojač,1);

switch (LatiničnoSlovo)

{

case "a" : ĆiriličnoSlovo = "а";Promena = true;

break;

case "b" : ĆiriličnoSlovo = "б";Promena = true;

break;

case "v" : ĆiriličnoSlovo = "в";Promena = true;

break;

case "g" : ĆiriličnoSlovo = "г";Promena = true;

break;

case "d" : ĆiriličnoSlovo = "д";Promena = true;

break;

case "đ" : ĆiriličnoSlovo = "ђ";Promena = true;

break;

case "e" : ĆiriličnoSlovo = "е";Promena = true;

break;

case "ž" : ĆiriličnoSlovo = "ж";Promena = true;

break;

case "z" : ĆiriličnoSlovo = "з";Promena = true;

break;

case "i" : ĆiriličnoSlovo = "и";Promena = true;

break;

case "j" : ĆiriličnoSlovo = "ј";Promena = true;

break;

case "k" : ĆiriličnoSlovo = "к";Promena = true;

break;

case "l" : ĆiriličnoSlovo = "л";Promena = true;

break;

case "m" : ĆiriličnoSlovo = "м";Promena = true;

break;

case "n" : ĆiriličnoSlovo = "н";Promena = true;

break;

case "o" : ĆiriličnoSlovo = "о";Promena = true;

break;

case "p" : ĆiriličnoSlovo = "п";Promena = true;

break;

case "r" : ĆiriličnoSlovo = "р";Promena = true;

break;

case "s" : ĆiriličnoSlovo = "с";Promena = true;

break;

case "t" : ĆiriličnoSlovo = "т";Promena = true;

break;

case "ć" : ĆiriličnoSlovo = "ћ";Promena = true;

break;

case "u" : ĆiriličnoSlovo = "у";Promena = true;

break;

case "f" : ĆiriličnoSlovo = "ф";Promena = true;

break;

case "h" : ĆiriličnoSlovo = "х";Promena = true;

break;

case "c" : ĆiriličnoSlovo = "ц";Promena = true;

break;

case "č" : ĆiriličnoSlovo = "ч";Promena = true;

break;

case "š" : ĆiriličnoSlovo = "ш";Promena = true;

break;

case "A" : ĆiriličnoSlovo = "А";Promena = true;

break;

case "B" : ĆiriličnoSlovo = "Б";Promena = true;

break;

case "V" : ĆiriličnoSlovo = "В";Promena = true;

break;

case "G" : ĆiriličnoSlovo = "Г";Promena = true;

break;

case "D" : ĆiriličnoSlovo = "Д";Promena = true;

break;

case "Đ" : ĆiriličnoSlovo = "Ђ";Promena = true;

break;

case "E" : ĆiriličnoSlovo = "Е";Promena = true;

break;

case "Ž" : ĆiriličnoSlovo = "Ж";Promena = true;

break;

case "Z" : ĆiriličnoSlovo = "З";Promena = true;

break;

case "I" : ĆiriličnoSlovo = "И";Promena = true;

break;

case "J" : ĆiriličnoSlovo = "Ј";Promena = true;

break;

case "K" : ĆiriličnoSlovo = "К";Promena = true;

break;

case "L" : ĆiriličnoSlovo = "Л";Promena = true;

break;

case "M" : ĆiriličnoSlovo = "М";Promena = true;

break;

case "N" : ĆiriličnoSlovo = "Н";Promena = true;

break;

case "O" : ĆiriličnoSlovo = "О";Promena = true;

break;

case "P" : ĆiriličnoSlovo = "П";Promena = true;

break;

case "R" : ĆiriličnoSlovo = "Р";Promena = true;

break;

case "S" : ĆiriličnoSlovo = "С";Promena = true;

break;

case "T" : ĆiriličnoSlovo = "Т";Promena = true;

break;

case "Ć" : ĆiriličnoSlovo = "Ћ";Promena = true;

break;

case "U" : ĆiriličnoSlovo = "У";Promena = true;

break;

case "F" : ĆiriličnoSlovo = "Ф";Promena = true;

break;

case "H" : ĆiriličnoSlovo = "Х";Promena = true;

break;

case "C" : ĆiriličnoSlovo = "Ц";Promena = true;

break;

case "Č" : ĆiriličnoSlovo = "Ч";Promena = true;

break;

case "Š" : ĆiriličnoSlovo = "Ш";Promena = true;

break;

}

if ( Promena == true)

{

Brojač++;

ĆiriličniTekst += ĆiriličnoSlovo;

}

else

{

Brojač++;

ĆiriličniTekst += LatiničnoSlovo;

}

}

}

richTextBox2.Text = ĆiriličniTekst;

Refresh();

}

void Button2Click(object sender, EventArgs e)

{

//

// Promena iz ćiriličnog u latinično pismo

//

richTextBox1.Text = String.Empty;

richTextBox1.Refresh();

//

// Deklaracija promenljivih

//

string ĆiriličniTekst = String.Empty;

string LatiničniTekst = String.Empty;

string LatiničnoSlovo = String.Empty;

string ĆiriličnoSlovo = String.Empty;

int DužinaĆiriličnogTeksta = 0;

int Brojač = 0;

bool Promena = false;

richTextBox2.Refresh();

ĆiriličniTekst = richTextBox2.Text;

DužinaĆiriličnogTeksta = ĆiriličniTekst.Length;

while ( Brojač < DužinaĆiriličnogTeksta )

{

Promena = false;

LatiničnoSlovo = String.Empty;

ĆiriličnoSlovo = ĆiriličniTekst.Substring(Brojač,1);

switch (ĆiriličnoSlovo)

{

case "a" : LatiničnoSlovo = "a";Promena = true;

break;

case "б" : LatiničnoSlovo = "b";Promena = true;

break;

case "в" : LatiničnoSlovo = "v";Promena = true;

break;

case "г" : LatiničnoSlovo = "g";Promena = true;

break;

case "д" : LatiničnoSlovo = "d";Promena = true;

break;

case "ђ" : LatiničnoSlovo = "đ";Promena = true;

break;

case "е" : LatiničnoSlovo = "e";Promena = true;

break;

case "ж" : LatiničnoSlovo = "ž";Promena = true;

break;

case "з" : LatiničnoSlovo = "z";Promena = true;

break;

case "и" : LatiničnoSlovo = "i";Promena = true;

break;

case "ј" : LatiničnoSlovo = "j";Promena = true;

break;

case "к" : LatiničnoSlovo = "k";Promena = true;

break;

case "л" : LatiničnoSlovo = "l";Promena = true;

break;

case "љ" : LatiničnoSlovo = "lj";Promena = true;

break;

case "м" : LatiničnoSlovo = "m";Promena = true;

break;

case "н" : LatiničnoSlovo = "n";Promena = true;

break;

case "њ" : LatiničnoSlovo = "nj";Promena = true;

break;

case "о" : LatiničnoSlovo = "o";Promena = true;

break;

case "п" : LatiničnoSlovo = "p";Promena = true;

break;

case "р" : LatiničnoSlovo = "r";Promena = true;

break;

case "с" : LatiničnoSlovo = "s";Promena = true;

break;

case "т" : LatiničnoSlovo = "t";Promena = true;

break;

case "ћ" : LatiničnoSlovo = "ć";Promena = true;

break;

case "у" : LatiničnoSlovo = "u";Promena = true;

break;

case "ф" : LatiničnoSlovo = "f";Promena = true;

break;

case "х" : LatiničnoSlovo = "h";Promena = true;

break;

case "ц" : LatiničnoSlovo = "c";Promena = true;

break;

case "ч" : LatiničnoSlovo = "č";Promena = true;

break;

case "џ" : LatiničnoSlovo = "dž";Promena = true;

break;

case "ш" : LatiničnoSlovo = "š";Promena = true;

break;

case "А" : LatiničnoSlovo = "A";Promena = true;

break;

case "Б" : LatiničnoSlovo = "B";Promena = true;

break;

case "В" : LatiničnoSlovo = "V";Promena = true;

break;

case "Г" : LatiničnoSlovo = "G";Promena = true;

break;

case "Д" : LatiničnoSlovo = "D";Promena = true;

break;

case "Ђ" : LatiničnoSlovo = "Đ";Promena = true;

break;

case "Е" : LatiničnoSlovo = "E";Promena = true;

break;

case "Ж" : LatiničnoSlovo = "Ž";Promena = true;

break;

case "З" : LatiničnoSlovo = "Z";Promena = true;

break;

case "И" : LatiničnoSlovo = "I";Promena = true;

break;

case "Ј" : LatiničnoSlovo = "J";Promena = true;

break;

case "К" : LatiničnoSlovo = "K";Promena = true;

break;

case "Л" : LatiničnoSlovo = "L";Promena = true;

break;

case "Љ" : LatiničnoSlovo = "Lj";Promena = true;

break;

case "М" : LatiničnoSlovo = "M";Promena = true;

break;

case "Н" : LatiničnoSlovo = "N";Promena = true;

break;

case "Њ" : LatiničnoSlovo = "Nj";Promena = true;

break;

case "О" : LatiničnoSlovo = "O";Promena = true;

break;

case "П" : LatiničnoSlovo = "P";Promena = true;

break;

case "Р" : LatiničnoSlovo = "R";Promena = true;

break;

case "С" : LatiničnoSlovo = "S";Promena = true;

break;

case "Т" : LatiničnoSlovo = "T";Promena = true;

break;

case "Ћ" : LatiničnoSlovo = "Ć";Promena = true;

break;

case "У" : LatiničnoSlovo = "U";Promena = true;

break;

case "Ф" : LatiničnoSlovo = "F";Promena = true;

break;

case "Х" : LatiničnoSlovo = "H";Promena = true;

break;

case "Ц" : LatiničnoSlovo = "C";Promena = true;

break;

case "Ч" : LatiničnoSlovo = "Č";Promena = true;

break;

case "Џ" : LatiničnoSlovo = "Dž";Promena = true;

break;

case "Ш" : LatiničnoSlovo = "Š";Promena = true;

break;

}

if ( Promena == true)

{

Brojač++;

LatiničniTekst += LatiničnoSlovo;

}

else

{

Brojač++;

LatiničniTekst += ĆiriličnoSlovo;

}

}

richTextBox1.Text = LatiničniTekst;

Refresh();

}

I na kraju četvrti događaj koji se aktivira kada korisnik klikne na url adresu koja je navedena u okviru teksta , kada se pokreće Windows explorer sa zadatom adresom.

Vidite programski kod:

void RichTextBox1LinkClicked(object sender, LinkClickedEventArgs e)

{

//

// Ukoliko korisnik u okviru teksta klikne na url adresu

// pokreće se internet explorer sa zadatom adresom

//

System.Diagnostics.Process.Start(e.LinkText);


}

Naravno na početku programa moraju se navesti using reference:

/*

* Created by SharpDevelop.

* User: PC

* Date: 31.01.2012

* Time: 18:23

*

* To change this template use Tools | Options | Coding | Edit Standard Headers.

*/

using System;

using System.Windows.Forms;


namespace Latinično_u_Ćirilično

{

/// <summary>

/// Description of MainForm.

/// </summary>

public partial class MainForm : Form

{

public MainForm()

{

Ovaj program nema napisan Algoritam , pokušajte sami , takođe može da se nadogradi delom koji bi omogućio korisniku da klikom na dugme , otvori FolderBrowserDialog i da pronađe tekstualni dokument u kome se nalazi text za promenu , učita ga u željeni richTextBox a zatim po promeni teksta , snimi isti u novi dokument.

Na dole navedenom linku možete preuzeti kompletan projekat za Ide SharpDevelop C# 4.0, zahteva .Net framework 4.0 pa ukoliko ga koristite preuzmite ga i možete da odradite nadogradnju programa po želji. Ukoliko imate problema sa otvaranjem ZIP arhiva , to je verovatno zato što nemate originalni WinZip arhiver !