#!/usr/bin/python3 import gi import config from datetime import datetime gi.require_version("Gtk", "3.0") from gi.repository import Gtk class MainWindow(Gtk.Window): def __init__(self): super().__init__(title="bardzo biedny BBS %s"%config.version) ############################## Boxes ##################################### pad=15 self.main_box = Gtk.Box() self.main_box.set_orientation(Gtk.Orientation.HORIZONTAL) # left side self.left_box = Gtk.Box() self.left_box.set_orientation(Gtk.Orientation.VERTICAL) self.left_box.set_spacing(0) self.left_button_box = Gtk.Box() self.left_button_box.set_orientation(Gtk.Orientation.HORIZONTAL) self.left_button_box.set_spacing(pad) # right side self.right_box = Gtk.Box() self.right_box.set_orientation(Gtk.Orientation.VERTICAL) self.right_box.set_spacing(0) self.title_author_box = Gtk.Box() self.title_author_box.set_orientation(Gtk.Orientation.HORIZONTAL) self.title_author_box.set_spacing(pad) self.message_box = Gtk.Box() self.message_box.set_orientation(Gtk.Orientation.VERTICAL) self.message_box.set_spacing(2) self.date_time_box = Gtk.Box() self.date_time_box.set_orientation(Gtk.Orientation.HORIZONTAL) self.date_time_box.set_spacing(pad) self.synthesize_listen_box = Gtk.Box() self.synthesize_listen_box.set_orientation(Gtk.Orientation.HORIZONTAL) self.synthesize_listen_box.set_spacing(pad) self.clear_save_box = Gtk.Box() self.clear_save_box.set_orientation(Gtk.Orientation.HORIZONTAL) self.clear_save_box.set_spacing(pad) ################################ Widgets ###################################### # left side self.transmission_list = Gtk.ListBox() self.transmission_list.connect("row-activated", self.on_picked_transmission) for count in range(5): label = Gtk.Label() label.set_text("row %i" % (count)) self.transmission_list.add(label) self.add_transmission_button = Gtk.Button(label="Add transmission") self.add_transmission_button.connect("clicked", self.on_add_transmission) self.delete_transmission_button = Gtk.Button(label="Delete transmission") self.delete_transmission_button.connect("clicked", self.on_delete_transmission) # right side self.title = Gtk.Entry() self.title.set_placeholder_text("Title") self.author = Gtk.Entry() self.author.set_placeholder_text("Author") self.message_label = Gtk.Label(label="Message") self.message = Gtk.TextView() self.calendar = Gtk.Calendar() self.calendar.connect("day-selected", self.on_date_picked) self.synthesize_button = Gtk.Button(label="synthesize") self.listen_button = Gtk.Button(label="listen") self.clear_button = Gtk.Button(label="clear") self.save_button = Gtk.Button(label="save") ######################### organise objects ################################### self.add(self.main_box) self.main_box.pack_start(self.left_box, True, True, pad) self.main_box.pack_start(self.right_box, True, True, pad) self.left_box.pack_start(self.transmission_list, True, True, pad) self.left_box.pack_start(self.left_button_box, False, True, pad) self.left_button_box.pack_start(self.add_transmission_button, True, True, 0) self.left_button_box.pack_start(self.delete_transmission_button, True, True, 0) self.right_box.pack_start(self.title_author_box, False, True, pad) self.title_author_box.pack_start(self.title, True, True, 0) self.title_author_box.pack_start(self.author, True, True, 0) self.right_box.pack_start(self.message_box, True, True, pad) self.message_box.pack_start(self.message_label, False, True, 0) self.message_box.pack_start(self.message, True, True, 0) self.right_box.pack_start(self.date_time_box, True, True, pad) self.date_time_box.pack_start(self.calendar, True, True, 0) self.right_box.pack_start(self.synthesize_listen_box, False, True, pad) self.synthesize_listen_box.pack_start(self.synthesize_button, True, True, 0) self.synthesize_listen_box.pack_start(self.listen_button, True, True, 0) self.right_box.pack_start(self.clear_save_box, False, True, pad) self.clear_save_box.pack_start(self.clear_button, True, True, 0) self.clear_save_box.pack_start(self.save_button, True, True, 0) def on_picked_transmission(self, row, user_data): print("row %i activated" % user_data.get_index()) def on_add_transmission(self, user_data): print("new transmission %s"%(datetime.now().isoformat())) def on_delete_transmission(self, user_data): print("transmission %s deleted" % self.transmission_list.get_selected_row().get_index()) def on_date_picked(self, user_data): year, month, day = self.calendar.get_date() month +=1 print("Date selected: %i/%i/%i" %(year,month,day)) def on_transmission_saved(self, user_data): print("title: %s" % self.title.get_buffer().get_text()) win = MainWindow() win.connect("destroy", Gtk.main_quit) win.show_all() Gtk.main()