Focus is handled in Gtk, accelerators and some menu items work

This commit is contained in:
2015-04-04 21:25:52 -06:00
parent d8581f47d2
commit 48e918adb0
11 changed files with 92 additions and 38 deletions

View File

@@ -29,3 +29,7 @@ class basePanel(Gtk.VBox):
self.list.select_item(self.list.get_count()-1)
else:
self.list.select_item(0)
def set_focus_function(self, f):
tree_selection = self.list.list.get_selection()
tree_selection.connect("changed", f)

View File

@@ -16,7 +16,7 @@ def delete_tweet_dialog(parent):
return answer
def exit_dialog(parent):
dialog = Gtk.MessageDialog(None, 0, Gtk.MessageType.QUESTION, Gtk.ButtonsType.YES_NO, _(u"Exit"))
dialog = Gtk.MessageDialog(parent, 0, Gtk.MessageType.QUESTION, Gtk.ButtonsType.YES_NO, _(u"Exit"))
dialog.format_secondary_text(_(u"Do you really want to close TW Blue?"))
answer = dialog.run()
dialog.destroy()

View File

@@ -8,6 +8,7 @@ class textLimited(widgetUtils.baseDialog):
def createTextArea(self, message="", text=""):
self.label = Gtk.Label(message)
self.set_title(message, titleWindow=True)
self.text = Gtk.Entry()
self.text.set_text(text)
self.text.set_placeholder_text(message)
@@ -16,6 +17,18 @@ class textLimited(widgetUtils.baseDialog):
self.textBox.add(self.label)
self.textBox.add(self.text)
def get(self, control):
if control == "upload_image":
return self.upload_image.get_label()
elif control == "cb":
return self.cb.get_active_text()
def set(self, control, val):
if control == "upload_image":
self.upload_image.set_label(val)
elif control == "cb":
self.cb.set_active_text(val)
def text_focus(self):
self.text.grab_focus()
@@ -25,8 +38,11 @@ class textLimited(widgetUtils.baseDialog):
def set_text(self, text):
self.text.set_text(text)
def set_title(self, new_title):
self.text.set_placeholder_text(new_title)
def set_title(self, new_title, titleWindow=False):
if titleWindow == False:
self.text.set_placeholder_text(new_title)
else:
super(textLimited, self).set_title(new_title)
# self.set_title(new_title)
def enable_button(self, buttonName):
@@ -78,10 +94,27 @@ class tweet(textLimited):
self.show_all()
def get_image(self):
openFileDialog = wx.FileDialog(self, _(u"Select the picture to be uploaded"), "", "", _("Image files (*.png, *.jpg, *.gif)|*.png; *.jpg; *.gif"), wx.FD_OPEN | wx.FD_FILE_MUST_EXIST)
if openFileDialog.ShowModal() == wx.ID_CANCEL:
dialog = Gtk.FileChooserDialog(_(u"Select the picture to be uploaded"), self, Gtk.FileChooserAction.OPEN, (Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL, Gtk.STOCK_OPEN, Gtk.ResponseType.OK))
filter_jpg = Gtk.FileFilter()
filter_jpg.set_name(_(u"JPG images"))
filter_jpg.add_mime_type("image/jpeg")
dialog.add_filter(filter_jpg)
filter_gif = Gtk.FileFilter()
filter_gif.set_name(_(u"GIF images"))
filter_gif.add_mime_type("image/gif")
dialog.add_filter(filter_gif)
filter_png = Gtk.FileFilter()
filter_png.set_name(_(u"PNG Images"))
filter_png.add_mime_type("image/png")
dialog.add_filter(filter_png)
answer = dialog.run()
if answer == widgetUtils.OK:
image = dialog.get_filename()
dialog.destroy()
return open(image, "rb")
else:
dialog.destroy()
return None
return open(openFileDialog.GetPath(), "rb")
class dm(textLimited):
def createControls(self, title, message, users):
@@ -121,11 +154,6 @@ class dm(textLimited):
self.box.add(self.buttonsBox1)
self.text.grab_focus()
def get(self, control):
if control == "cb":
return self.cb.get_active_text()
def __init__(self, title, message, users):
super(dm, self).__init__()
self.createControls(message, title, users)
@@ -150,7 +178,7 @@ class reply(tweet):
class viewTweet(widgetUtils.baseDialog):
def set_title(self, lenght):
pass
# self.set_title(_(u"Tweet - %i characters ") % (lenght,))
self.set_title(_(u"Tweet - %i characters ") % (lenght,))
def __init__(self, text, rt_count, favs_count):
super(viewTweet, self).__init__(buttons=(Gtk.STOCK_OK, widgetUtils.OK, Gtk.STOCK_CANCEL, widgetUtils.CANCEL))
@@ -158,8 +186,8 @@ class viewTweet(widgetUtils.baseDialog):
self.text = Gtk.TextView()
self.textBuffer = self.text.get_buffer()
self.textBuffer.set_text(text)
self.textBuffer.set_editable(False)
self.text.set_placeholder_text(message)
self.text.set_editable(False)
# self.textBuffer.set_placeholder_text(message)
textBox = Gtk.Box(spacing=6)
textBox.add(label)
textBox.add(self.text)
@@ -191,7 +219,7 @@ class viewTweet(widgetUtils.baseDialog):
buttonsBox.add(self.spellcheck)
buttonsBox.add(self.unshortenButton)
buttonsBox.add(self.translateButton)
self.box.Add(buttonsBox)
self.box.add(buttonsBox)
self.show_all()
def set_text(self, text):

View File

@@ -1,7 +1,7 @@
# -*- coding: utf-8 -*-
import application
import widgetUtils
from gi.repository import Gtk
from gi.repository import Gtk, Gdk
class mainFrame(Gtk.Window):
""" Main class of the Frame. This is the Main Window."""
@@ -18,30 +18,38 @@ class mainFrame(Gtk.Window):
# Application menu
app = Gtk.Menu()
self.manage_accounts = Gtk.MenuItem(label="Manage accounts")
self.manage_accounts = Gtk.MenuItem(label=_(u"Manage accounts"))
self.updateProfile = Gtk.MenuItem(label="Update profile")
self.updateProfile.add_accelerator("activate", self.accel_group, ord("U"), Gdk.ModifierType.CONTROL_MASK, Gtk.AccelFlags.VISIBLE)
# As in Gtk is not possible to bind keyboard shorcuts to the system, we don't have support for an invisible interface.
self.show_hide = None
self.menuitem_search = Gtk.MenuItem(label="Search")
self.trends = Gtk.MenuItem(label="View trending topics")
self.trends.add_accelerator("activate", self.accel_group, ord("T"), Gdk.ModifierType.CONTROL_MASK, Gtk.AccelFlags.VISIBLE)
self.lists = Gtk.MenuItem(label="Lists manager")
self.sounds_tutorial = Gtk.MenuItem(label="Sounds tutorial")
self.keystrokes_editor = None
self.account_settings = Gtk.MenuItem(label="Account settings")
self.prefs = Gtk.MenuItem(label="Global settings")
self.close = Gtk.MenuItem(label="Close")
self.close.add_accelerator("activate", self.accel_group, ord("Q"), Gdk.ModifierType.CONTROL_MASK, Gtk.AccelFlags.VISIBLE)
self.append_to_menu(app, self.manage_accounts, self.updateProfile, self.menuitem_search, self.trends, self.lists, self.sounds_tutorial, self.account_settings, self.prefs, self.close)
app_menu = Gtk.MenuItem(label="Application")
app_menu.add_accelerator("activate", self.accel_group, ord("a"), Gdk.ModifierType.CONTROL_MASK, Gtk.AccelFlags.VISIBLE)
app_menu.set_submenu(app)
menuBar.append(app_menu)
# Tweet menu
tweet = Gtk.Menu()
self.compose = Gtk.MenuItem(label="Tweet")
self.compose.add_accelerator("activate", self.accel_group, ord("N"), Gdk.ModifierType.CONTROL_MASK, Gtk.AccelFlags.VISIBLE)
self.reply = Gtk.MenuItem(label="Reply")
self.reply.add_accelerator("activate", self.accel_group, ord("R"), Gdk.ModifierType.CONTROL_MASK, Gtk.AccelFlags.VISIBLE)
self.retweet = Gtk.MenuItem(label="Retweet")
self.retweet.add_accelerator("activate", self.accel_group, ord("T"), Gdk.ModifierType.CONTROL_MASK, Gtk.AccelFlags.VISIBLE)
self.fav = Gtk.MenuItem(label="Add to favourites")
self.fav.add_accelerator("activate", self.accel_group, ord("F"), Gdk.ModifierType.CONTROL_MASK, Gtk.AccelFlags.VISIBLE)
self.unfav = Gtk.MenuItem(label="Remove from favourites")
self.view = Gtk.MenuItem(label="Show tweet")
self.view_coordinates = Gtk.MenuItem(label="View address")
@@ -103,6 +111,8 @@ class mainFrame(Gtk.Window):
def __init__(self):
""" Main function of this class."""
super(mainFrame, self).__init__(title="TW Blue")
self.accel_group = Gtk.AccelGroup()
self.add_accel_group(self.accel_group)
self.box = Gtk.VBox()
self.makeMenus()
self.nb = widgetUtils.notebook()