<property name="spacing">5</property>
<property name="layout_style">center</property>
<child>
- <object class="GtkButton" id="button1">
- <property name="label" translatable="yes">Update</property>
+ <object class="GtkLabel" id="label1">
<property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">True</property>
- <signal name="clicked" handler="on_button1_clicked"/>
+ <property name="label" translatable="yes">0</property>
</object>
<packing>
<property name="expand">False</property>
</packing>
</child>
<child>
- <object class="GtkButton" id="button2">
- <property name="label" translatable="yes">Image</property>
+ <object class="GtkHBox" id="hbox2">
<property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">True</property>
- <signal name="clicked" handler="on_button2_clicked"/>
+ <child>
+ <object class="GtkButton" id="button1">
+ <property name="label" translatable="yes"> Update </property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="image">image9</property>
+ <property name="relief">none</property>
+ <signal name="clicked" handler="on_button1_clicked"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="button2">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="relief">none</property>
+ <signal name="button_release_event" handler="on_button2_button_release_event"/>
+ <child>
+ <object class="GtkArrow" id="arrow1">
+ <property name="visible">True</property>
+ <property name="arrow_type">down</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
</object>
<packing>
<property name="expand">False</property>
<property name="visible">True</property>
<property name="stock">gtk-find</property>
</object>
+ <object class="GtkImage" id="image9">
+ <property name="visible">True</property>
+ <property name="stock">gtk-go-up</property>
+ </object>
+ <object class="GtkMenu" id="menu_update">
+ <property name="visible">True</property>
+ <child>
+ <object class="GtkImageMenuItem" id="menuitem_twitpic">
+ <property name="label" translatable="yes">Upload Image (twitpic)</property>
+ <property name="visible">True</property>
+ <property name="image">image10</property>
+ <property name="use_stock">False</property>
+ <signal name="activate" handler="on_menuitem_twitpic_activate"/>
+ </object>
+ </child>
+ </object>
+ <object class="GtkImage" id="image10">
+ <property name="visible">True</property>
+ <property name="stock">gtk-open</property>
+ </object>
</interface>
self.builder.add_from_file(gladefile)
# Connect signals
self.builder.connect_signals(self)
+
self.notebook = self.builder.get_object("notebook1")
+ self.textview = self.builder.get_object("textview1")
+ self.textview.get_buffer().connect("changed", self.on_textbuffer_changed)
+ self.btnupdate = self.builder.get_object("button1")
+ self.charcount = self.builder.get_object("label1")
# Set Default Mention Flag
self.re = 0
# Get text
def get_textview(self):
- textview = self.builder.get_object("textview1")
- buf = textview.get_buffer()
+ buf = self.textview.get_buffer()
start, end = buf.get_start_iter(), buf.get_end_iter()
return buf.get_text(start, end)
# Set text
def set_textview(self, txt, focus = False):
- textview = self.builder.get_object("textview1")
- buf = textview.get_buffer()
+ buf = self.textview.get_buffer()
buf.set_text(txt)
- if focus: textview.grab_focus()
+ if focus: self.textview.grab_focus()
# Add text at cursor
def add_textview(self, txt, focus = False):
- textview = self.builder.get_object("textview1")
- buf = textview.get_buffer()
+ buf = self.textview.get_buffer()
buf.insert_at_cursor(txt)
- if focus: textview.grab_focus()
+ if focus: self.textview.grab_focus()
# Clear text
def clear_textview(self, focus = False):
self.re = status.id
name = status.user.screen_name
- textview = self.builder.get_object("textview1")
- buf = textview.get_buffer()
+ buf = self.textview.get_buffer()
buf.set_text("@%s " % (name))
- textview.grab_focus()
+ self.textview.grab_focus()
########################################
self.re = None
self.clear_textview()
-
+
+ # Update menu popup
+ def on_button2_button_release_event(self, widget, event):
+ menu = self.builder.get_object("menu_update")
+ menu.popup(None, None, None, event.button, event.time)
+
# Image upload for twitpic
- def on_button2_clicked(self, widget):
+ def on_menuitem_twitpic_activate(self, widget):
dialog = gtk.FileChooserDialog("Upload Image...")
dialog.add_button(gtk.STOCK_OPEN, gtk.RESPONSE_OK)
dialog.add_button(gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL)
# Enter == 65293
if event.keyval == 65293 and event.state & gtk.gdk.CONTROL_MASK:
txt = self.get_textview()
- self.twitter.status_update(txt, self.re, self.msgfooter)
- self.re = None
- self.clear_textview()
+ if len(txt) <= 140:
+ self.twitter.status_update(txt, self.re, self.msgfooter)
+ self.re = None
+ self.clear_textview()
+
+ return True
+
+ # Character count
+ def on_textbuffer_changed(self, textbuffer):
+ n = textbuffer.get_char_count()
+ if n <= 140:
+ self.charcount.set_text(str(n))
+ self.btnupdate.set_sensitive(True)
+ else:
+ self.charcount.set_markup("<b><span foreground='#FF0000'>%s</span></b>" % n)
+ self.btnupdate.set_sensitive(False)