import tkinter as tk
from tkinter import scrolledtext
from tkinter.font import Font
from PIL import ImageTk, Image
import tkinter.messagebox as messagebox
import tkinter.scrolledtext as tkscrolled
def convert_arabic_to_latin():
arabic_word = arabic_text.get("1.0", tk.END).strip()
converted_word = convert_arabic_to_latin_mapping(arabic_word)
converted_word = capitalize_sentences(converted_word)
latin_text.delete("1.0", tk.END)
latin_text.insert(tk.END, converted_word)
def convert_arabic_to_latin_mapping(text):
# Arabic to Latin mapping
mapping = {
'ت': 't',
'و': 'w',
'ي':'y',
'د': 'd',
'ا': 'a',
'أ':'ʾa',
'إ':'ʾe',
'چ': 'ch',
'ب': 'b',
'ج': 'j',
'ح': 'ḥ',
'خ': 'kh',
'ر': 'r',
'ز': 'z',
'س': 's',
'ش': 'sh',
'ڛ': 'ŝ',
'ص': 'ṣ',
'ض': 'ḍ',
'ط': 'ṭ',
'ڞ': 'ẑ',
'ع': 'ʿ',
'غ': 'gh',
'ف': 'f',
'ق': 'q',
'ك': 'k',
'ل': 'l',
'ڸ': 'ḽ',
'م': 'm',
'ن': 'n',
'ه': 'h',
'ء':'ʾ',
'ُ': 'u',
'ِ':'e',
'َ':'a'
}
converted_text = ""
for char in text:
if char in mapping:
converted_text += mapping[char]
else:
if char=='ْ':
continue
if char =='ّ':
converted_text += converted_text[len(converted_text)-1]
else:
converted_text += char
return converted_text
def capitalize_sentences(text):
sentences = text.split('. ')
capitalized_sentences = []
for sentence in sentences:
capitalized_sentence = sentence.capitalize()
capitalized_sentences.append(capitalized_sentence)
return '. '.join(capitalized_sentences)
def clear_text():
arabic_text.delete("1.0", tk.END)
latin_text.delete("1.0", tk.END)
def copy_text():
selected_text = arabic_text.selection_get() if arabic_text.focus_get() == arabic_text else latin_text.selection_get()
if selected_text:
window.clipboard_clear()
window.clipboard_append(selected_text)
def paste_text():
if arabic_text.focus_get() == arabic_text:
text = window.clipboard_get()
if text:
arabic_text.insert(tk.INSERT, text)
""" def resize_background_image(event):
new_width = event.width
new_height = event.height
resized_image = background_image.resize((new_width, new_height), Image.ANTIALIAS)
global background_photo
background_photo = ImageTk.PhotoImage(resized_image)
background_label.config(image=background_photo) """
def on_enter_convert(event):
convert_button.config(bg="green",fg="white")
def on_leave_convert(event):
convert_button.config(bg="SystemButtonFace", fg="black")
def on_enter_clear(event):
clear_button.config(bg="red", fg="white")
def on_leave_clear(event):
clear_button.config(bg="SystemButtonFace",fg="black")
# Create the main window
window = tk.Tk()
window.title("Arabic to Latin Converter")
window.geometry("600x300") # Set the initial size of the window (width x height)
window.configure(bg="green")
window.option_add('*text', '')
# Load the background image
background_image = Image.open("socotra.jpg")
background_image = background_image.resize((600, 300), Image.ANTIALIAS) # Resize the image to fit the window size
background_photo = ImageTk.PhotoImage(background_image)
# Create a Label widget to display the background image
background_label = tk.Label(window, image=background_photo)
background_label.place(x=0, y=0, relwidth=1, relheight=1)
# Set custom colors
bg_color = "white"
fg_color = "black"
# Create the GUI components
arabic_label = tk.Label(window, text="Arabic Word:", font=("Arial", 14, "bold"))
arabic_text = scrolledtext.ScrolledText(window, width=35, height=5, wrap=tk.WORD, bg=bg_color, fg=fg_color,
font=("Arial", 14, "bold"))
convert_button = tk.Button(window, text="Convert", command=convert_arabic_to_latin, font=("Arial", 12, "bold"))
latin_label = tk.Label(window, text="Latin:", font=("Arial", 14, "bold"))
latin_text = scrolledtext.ScrolledText(window, width=35, height=5, wrap=tk.WORD, bg=bg_color, fg=fg_color,
font=("Arial", 14, "bold"))
clear_button = tk.Button(window, text="Clear", command=clear_text, font=("Arial", 12, "bold"))
# Grid layout
arabic_label.grid(row=0, column=0, padx=5, pady=5, sticky=tk.W)
arabic_text.grid(row=0, column=1, padx=5, pady=5, sticky=tk.W)
convert_button.grid(row=1, column=0, columnspan=2, padx=5, pady=5)
clear_button.grid(row=1, column=1, columnspan=2, padx=5, pady=5)
latin_label.grid(row=2, column=0, padx=5, pady=5, sticky=tk.W)
latin_text.grid(row=2, column=1, padx=5, pady=5, sticky=tk.W)
# Bind hover events to buttons
convert_button.bind("", on_enter_convert)
convert_button.bind("", on_leave_convert)
clear_button.bind("", on_enter_clear)
clear_button.bind("", on_leave_clear)
# Copy and Paste options in menu
edit_menu = tk.Menu(window)
edit_menu.add_command(label="Copy", command=copy_text)
edit_menu.add_command(label="Paste", command=paste_text)
window.config(menu=edit_menu)
# Start the main event loop
window.mainloop()