Changeset 374 for trunk/plugins
- Timestamp:
- 01/20/05 13:09:26 (4 years ago)
- Location:
- trunk/plugins/gtkgui
- Files:
-
- 3 modified
Legend:
- Unmodified
- Added
- Removed
-
trunk/plugins/gtkgui/config.py
r372 r374 265 265 del self.plugin.config['msg%i' % i] 266 266 i += 1 267 #Emoticons 268 model = self.emot_tree.get_model() 269 iter = model.get_iter_first() 270 emots = [] 271 while iter: 272 emots.append(model.get_value(iter, 0)) 273 emots.append(model.get_value(iter, 1)) 274 iter = model.iter_next(iter) 275 self.plugin.config['emoticons'] = string.join(emots, '\t') 267 276 #trayicon 268 277 if self.chk_trayicon.get_active(): … … 320 329 i += 1 321 330 331 def image_is_ok(self, image): 332 if not os.path.exists(image): 333 return 0 334 img = gtk.Image() 335 try: 336 img.set_from_file(image) 337 except: 338 return 0 339 if img.get_storage_type() == gtk.IMAGE_PIXBUF: 340 pix = img.get_pixbuf() 341 else: 342 return 0 343 if pix.get_width() > 24 or pix.get_height() > 24: 344 return 0 345 return 1 346 347 def load_emots(self): 348 emots = {} 349 split_line = string.split(self.plugin.config['emoticons'], '\t') 350 for i in range(0, len(split_line)/2): 351 if not self.image_is_ok(split_line[2*i+1]): 352 continue 353 emots[split_line[2*i]] = split_line[2*i+1] 354 return emots 355 356 def fill_emot_treeview(self): 357 model = self.emot_tree.get_model() 358 model.clear() 359 emots = self.load_emots() 360 for i in emots: 361 iter = model.append() 362 model.set(iter, 0, i, 1,emots[i]) 363 322 364 def on_msg_cell_edited(self, cell, row, new_text): 323 365 model = self.msg_tree.get_model() 366 iter = model.get_iter_from_string(row) 367 model.set_value(iter, 0, new_text) 368 369 def on_emot_cell_edited(self, cell, row, new_text): 370 model = self.emot_tree.get_model() 324 371 iter = model.get_iter_from_string(row) 325 372 model.set_value(iter, 0, new_text) … … 338 385 model.set(iter, 0, 'msg', 1, 'message') 339 386 387 def on_button_emoticons_clicked(self, widget, data=None): 388 (model, iter) = self.emot_tree.get_selection().get_selected() 389 if not iter: 390 return 391 file = model.get_value(iter, 1) 392 dialog = gtk.FileChooserDialog("Choose image", 393 None, 394 gtk.FILE_CHOOSER_ACTION_OPEN, 395 (gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL, 396 gtk.STOCK_OPEN, gtk.RESPONSE_OK)) 397 dialog.set_default_response(gtk.RESPONSE_OK) 398 filter = gtk.FileFilter() 399 filter.set_name("All files") 400 filter.add_pattern("*") 401 dialog.add_filter(filter) 402 403 filter = gtk.FileFilter() 404 filter.set_name("Images") 405 filter.add_mime_type("image/png") 406 filter.add_mime_type("image/jpeg") 407 filter.add_mime_type("image/gif") 408 filter.add_pattern("*.png") 409 filter.add_pattern("*.jpg") 410 filter.add_pattern("*.gif") 411 filter.add_pattern("*.tif") 412 filter.add_pattern("*.xpm") 413 dialog.add_filter(filter) 414 dialog.set_filter(filter) 415 416 file = os.path.join(os.getcwd(), file) 417 dialog.set_filename(file) 418 file = '' 419 ok = 0 420 while(ok == 0): 421 response = dialog.run() 422 if response == gtk.RESPONSE_OK: 423 file = dialog.get_filename() 424 if self.image_is_ok(file): 425 ok = 1 426 else: 427 ok = 1 428 dialog.destroy() 429 if file: 430 self.xml.get_widget('entry_emoticons').set_text(file) 431 self.xml.get_widget('image_emoticon').set_from_file(file) 432 model.set_value(iter, 1, file) 433 340 434 def on_delete_msg_button_clicked(self, widget, data=None): 341 435 (model, iter) = self.msg_tree.get_selection().get_selected() … … 344 438 buf.set_text('') 345 439 self.xml.get_widget('delete_msg_button').set_sensitive(False) 440 441 def on_button_new_emoticon_clicked(self, widget, data=None): 442 model = self.emot_tree.get_model() 443 iter = model.append() 444 model.set(iter, 0, 'smeiley', 1, '') 445 446 def on_button_remove_emoticon_clicked(self, widget, data=None): 447 (model, iter) = self.emot_tree.get_selection().get_selected() 448 if not iter: 449 return 450 model.remove(iter) 346 451 347 452 def on_msg_textview_changed(self, widget, data=None): … … 354 459 model.set_value(iter, 1, buf.get_text(first_iter, end_iter)) 355 460 461 def on_treeview_emoticons_cursor_changed(self, widget, data=None): 462 (model, iter) = self.emot_tree.get_selection().get_selected() 463 if not iter: 464 return 465 img_str = model.get_value(iter, 1) 466 self.xml.get_widget('entry_emoticons').set_text(img_str) 467 self.xml.get_widget('image_emoticon').set_from_file(img_str) 468 356 469 def on_chk_toggled(self, widget, widgets): 357 470 """set or unset sensitivity of widgets when widget is toggled""" … … 414 527 st = self.plugin.config['useemoticons'] 415 528 self.xml.get_widget('use_emoticons_checkbutton').set_active(st) 529 self.xml.get_widget('button_new_emoticon').set_sensitive(st) 530 self.xml.get_widget('button_remove_emoticon').set_sensitive(st) 531 self.xml.get_widget('treeview_emoticons').set_sensitive(st) 532 self.xml.get_widget('entry_emoticons').set_sensitive(st) 533 self.xml.get_widget('button_emoticons').set_sensitive(st) 534 self.xml.get_widget('image_emoticon').set_sensitive(st) 535 536 #emoticons 537 self.emot_tree = self.xml.get_widget('treeview_emoticons') 538 model = gtk.ListStore(gobject.TYPE_STRING, gobject.TYPE_STRING) 539 self.emot_tree.set_model(model) 540 col = gtk.TreeViewColumn('name') 541 self.emot_tree.append_column(col) 542 renderer = gtk.CellRendererText() 543 renderer.connect('edited', self.on_emot_cell_edited) 544 renderer.set_property('editable', True) 545 col.pack_start(renderer, True) 546 col.set_attributes(renderer, text=0) 547 self.fill_emot_treeview() 416 548 417 549 #Autopopup … … 511 643 self.xml.signal_connect('on_msg_treeview_cursor_changed', \ 512 644 self.on_msg_treeview_cursor_changed) 645 self.xml.signal_connect('on_treeview_emoticons_cursor_changed', \ 646 self.on_treeview_emoticons_cursor_changed) 647 self.xml.signal_connect('on_button_emoticons_clicked', \ 648 self.on_button_emoticons_clicked) 513 649 self.xml.signal_connect('on_new_msg_button_clicked', \ 514 650 self.on_new_msg_button_clicked) 515 651 self.xml.signal_connect('on_delete_msg_button_clicked', \ 516 652 self.on_delete_msg_button_clicked) 653 self.xml.signal_connect('on_button_new_emoticon_clicked', \ 654 self.on_button_new_emoticon_clicked) 655 self.xml.signal_connect('on_button_remove_emoticon_clicked', \ 656 self.on_button_remove_emoticon_clicked) 517 657 self.xml.signal_connect('on_chk_autopopup_toggled', \ 518 658 self.on_chk_toggled, [self.chk_autoppaway]) … … 521 661 self.xml.signal_connect('on_chk_autoxa_toggled', \ 522 662 self.on_chk_toggled, [self.spin_autoxatime]) 663 self.xml.signal_connect('on_use_emoticons_checkbutton_toggled', \ 664 self.on_chk_toggled, [self.xml.get_widget('button_new_emoticon'), 665 self.xml.get_widget('button_remove_emoticon'), 666 self.xml.get_widget('treeview_emoticons'), 667 self.xml.get_widget('entry_emoticons'), 668 self.xml.get_widget('button_emoticons'), 669 self.xml.get_widget('image_emoticon')]) 523 670 self.xml.signal_connect('on_lookfeel_button_clicked', \ 524 671 self.on_lookfeel_button_clicked) -
trunk/plugins/gtkgui/gtkgui.glade
r372 r374 4182 4182 <child> 4183 4183 <widget class="GtkVBox" id="vbox47"> 4184 <property name="border_width">5</property> 4184 4185 <property name="visible">True</property> 4185 4186 <property name="homogeneous">False</property> … … 4197 4198 <property name="inconsistent">False</property> 4198 4199 <property name="draw_indicator">True</property> 4200 <signal name="toggled" handler="on_use_emoticons_checkbutton_toggled" last_modification_time="Wed, 19 Jan 2005 23:02:04 GMT"/> 4199 4201 </widget> 4200 4202 <packing> … … 4211 4213 <packing> 4212 4214 <property name="padding">0</property> 4213 <property name="expand"> True</property>4215 <property name="expand">False</property> 4214 4216 <property name="fill">True</property> 4215 4217 </packing> … … 4228 4230 4229 4231 <child> 4230 <placeholder/> 4232 <widget class="GtkHBox" id="hbox2903"> 4233 <property name="border_width">5</property> 4234 <property name="visible">True</property> 4235 <property name="homogeneous">False</property> 4236 <property name="spacing">0</property> 4237 4238 <child> 4239 <widget class="GtkVBox" id="vbox49"> 4240 <property name="visible">True</property> 4241 <property name="homogeneous">False</property> 4242 <property name="spacing">5</property> 4243 4244 <child> 4245 <widget class="GtkButton" id="button_new_emoticon"> 4246 <property name="visible">True</property> 4247 <property name="can_focus">True</property> 4248 <property name="label">gtk-add</property> 4249 <property name="use_stock">True</property> 4250 <property name="relief">GTK_RELIEF_NORMAL</property> 4251 <property name="focus_on_click">True</property> 4252 <signal name="clicked" handler="on_button_new_emoticon_clicked" last_modification_time="Wed, 19 Jan 2005 22:25:07 GMT"/> 4253 </widget> 4254 <packing> 4255 <property name="padding">0</property> 4256 <property name="expand">False</property> 4257 <property name="fill">False</property> 4258 </packing> 4259 </child> 4260 4261 <child> 4262 <widget class="GtkButton" id="button_remove_emoticon"> 4263 <property name="visible">True</property> 4264 <property name="can_focus">True</property> 4265 <property name="label">gtk-remove</property> 4266 <property name="use_stock">True</property> 4267 <property name="relief">GTK_RELIEF_NORMAL</property> 4268 <property name="focus_on_click">True</property> 4269 <signal name="clicked" handler="on_button_remove_emoticon_clicked" last_modification_time="Wed, 19 Jan 2005 22:57:48 GMT"/> 4270 </widget> 4271 <packing> 4272 <property name="padding">0</property> 4273 <property name="expand">False</property> 4274 <property name="fill">False</property> 4275 </packing> 4276 </child> 4277 4278 <child> 4279 <widget class="GtkScrolledWindow" id="scrolledwindow25"> 4280 <property name="visible">True</property> 4281 <property name="can_focus">True</property> 4282 <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property> 4283 <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property> 4284 <property name="shadow_type">GTK_SHADOW_IN</property> 4285 <property name="window_placement">GTK_CORNER_TOP_LEFT</property> 4286 4287 <child> 4288 <widget class="GtkTreeView" id="treeview_emoticons"> 4289 <property name="visible">True</property> 4290 <property name="can_focus">True</property> 4291 <property name="headers_visible">False</property> 4292 <property name="rules_hint">False</property> 4293 <property name="reorderable">False</property> 4294 <property name="enable_search">True</property> 4295 <signal name="cursor_changed" handler="on_treeview_emoticons_cursor_changed" last_modification_time="Tue, 18 Jan 2005 22:12:10 GMT"/> 4296 </widget> 4297 </child> 4298 </widget> 4299 <packing> 4300 <property name="padding">0</property> 4301 <property name="expand">True</property> 4302 <property name="fill">True</property> 4303 </packing> 4304 </child> 4305 </widget> 4306 <packing> 4307 <property name="padding">0</property> 4308 <property name="expand">True</property> 4309 <property name="fill">True</property> 4310 </packing> 4311 </child> 4312 4313 <child> 4314 <widget class="GtkVBox" id="vbox48"> 4315 <property name="border_width">5</property> 4316 <property name="visible">True</property> 4317 <property name="homogeneous">False</property> 4318 <property name="spacing">5</property> 4319 4320 <child> 4321 <widget class="GtkHBox" id="hbox2904"> 4322 <property name="visible">True</property> 4323 <property name="homogeneous">False</property> 4324 <property name="spacing">5</property> 4325 4326 <child> 4327 <widget class="GtkEntry" id="entry_emoticons"> 4328 <property name="visible">True</property> 4329 <property name="can_focus">True</property> 4330 <property name="editable">False</property> 4331 <property name="visibility">True</property> 4332 <property name="max_length">0</property> 4333 <property name="text" translatable="yes"></property> 4334 <property name="has_frame">True</property> 4335 <property name="invisible_char">*</property> 4336 <property name="activates_default">False</property> 4337 </widget> 4338 <packing> 4339 <property name="padding">0</property> 4340 <property name="expand">True</property> 4341 <property name="fill">True</property> 4342 </packing> 4343 </child> 4344 4345 <child> 4346 <widget class="GtkButton" id="button_emoticons"> 4347 <property name="visible">True</property> 4348 <property name="can_focus">True</property> 4349 <property name="label" translatable="yes">...</property> 4350 <property name="use_underline">True</property> 4351 <property name="relief">GTK_RELIEF_NORMAL</property> 4352 <property name="focus_on_click">True</property> 4353 <signal name="clicked" handler="on_button_emoticons_clicked" last_modification_time="Wed, 19 Jan 2005 20:47:01 GMT"/> 4354 </widget> 4355 <packing> 4356 <property name="padding">0</property> 4357 <property name="expand">False</property> 4358 <property name="fill">False</property> 4359 <property name="pack_type">GTK_PACK_END</property> 4360 </packing> 4361 </child> 4362 </widget> 4363 <packing> 4364 <property name="padding">0</property> 4365 <property name="expand">False</property> 4366 <property name="fill">True</property> 4367 </packing> 4368 </child> 4369 4370 <child> 4371 <widget class="GtkImage" id="image_emoticon"> 4372 <property name="visible">True</property> 4373 <property name="xalign">0.5</property> 4374 <property name="yalign">0.5</property> 4375 <property name="xpad">0</property> 4376 <property name="ypad">0</property> 4377 </widget> 4378 <packing> 4379 <property name="padding">0</property> 4380 <property name="expand">True</property> 4381 <property name="fill">True</property> 4382 </packing> 4383 </child> 4384 </widget> 4385 <packing> 4386 <property name="padding">0</property> 4387 <property name="expand">True</property> 4388 <property name="fill">True</property> 4389 </packing> 4390 </child> 4391 </widget> 4392 <packing> 4393 <property name="padding">0</property> 4394 <property name="expand">True</property> 4395 <property name="fill">True</property> 4396 </packing> 4231 4397 </child> 4232 4398 </widget> -
trunk/plugins/gtkgui/gtkgui.py
r373 r374 1735 1735 browseAgent_Window(self.plugin, account) 1736 1736 1737 def image_is_ok(self, image): 1738 if not os.path.exists(image): 1739 return 0 1740 img = gtk.Image() 1741 try: 1742 img.set_from_file(image) 1743 except: 1744 return 0 1745 if img.get_storage_type() == gtk.IMAGE_PIXBUF: 1746 pix = img.get_pixbuf() 1747 else: 1748 return 0 1749 if pix.get_width() > 24 or pix.get_height() > 24: 1750 return 0 1751 return 1 1752 1737 1753 def mkemoticons(self): 1738 1754 """initialize emoticons array""" 1739 emots = {':-)' : 'smile.png',1740 ':)' : 'smile.png',1741 ';-)' : 'wink.png',1742 ';)' : 'wink.png',1743 ':-p' : 'tongue.png',1744 ':-P' : 'tongue.png',1745 ':p' : 'tongue.png',1746 ':P' : 'tongue.png',1747 ':d' : 'biggrin.png',1748 ':D' : 'biggrin.png',1749 ':-d' : 'biggrin.png',1750 ':-D' : 'biggrin.png',1751 ':>' : 'biggrin.png',1752 ':->' : 'biggrin.png',1753 ':(' : 'unhappy.png',1754 ':-(' : 'unhappy.png',1755 ';(' : 'cry.png',1756 ';-(' : 'cry.png',1757 ':\'(' : 'cry.png',1758 ';\'-(' : 'cry.png',1759 ':-O' : 'oh.png',1760 ':-o' : 'oh.png',1761 ':O' : 'oh.png',1762 ':o' : 'oh.png',1763 ':-@' : 'angry.png',1764 ':@' : 'angry.png',1765 ':-$' : 'blush.png',1766 ':$' : 'blush.png',1767 ':-|' : 'stare.png',1768 ':|' : 'stare.png',1769 ':-S' : 'frowing.png',1770 ':-s' : 'frowing.png',1771 ':S' : 'frowing.png',1772 ':s' : 'frowing.png',1773 'B-)' : 'coolglasses.png',1774 'B)' : 'coolglasses.png',1775 '8-)' : 'coolglasses.png',1776 '8)' : 'coolglasses.png',1777 '(H)' : 'coolglasses.png',1778 '(h)' : 'coolglasses.png',1779 ':-[' : 'bat.png',1780 ':[' : 'bat.png',1781 '(l)' : 'heart.png',1782 '(L)' : 'heart.png',1783 '(u)' : 'brheart.png',1784 '(U)' : 'brheart.png',1785 '(y)' : 'yes.png',1786 '(Y)' : 'yes.png',1787 '(n)' : 'no.png',1788 '(N)' : 'no.png',1789 '(z)' : 'boy.png',1790 '(Z)' : 'boy.png',1791 '(@)' : 'pussy.png',1792 '(})' : 'hugleft.png',1793 '({)' : 'hugright.png',1794 '(6)' : 'devil.png',1795 '(r)' : 'rainbow.png',1796 '(R)' : 'rainbow.png',1797 '(w)' : 'brflower.png',1798 '(W)' : 'brflower.png',1799 '(f)' : 'flower.png',1800 '(F)' : 'flower.png',1801 '(p)' : 'photo.png',1802 '(P)' : 'photo.png',1803 '(t)' : 'phone.png',1804 '(T)' : 'phone.png',1805 '(*)' : 'star.png',1806 '(8)' : 'music.png',1807 '(i)' : 'lamp.png',1808 '(I)' : 'lamp.png',1809 '(b)' : 'beer.png',1810 '(B)' : 'beer.png',1811 '(d)' : 'drink.png',1812 '(D)' : 'drink.png',1813 '(c)' : 'coffee.png',1814 '(C)' : 'coffee.png',1815 '(%)' : 'cuffs.png',1816 '(e)' : 'mail.png',1817 '(E)' : 'mail.png',1818 '(k)' : 'kiss.png',1819 '(K)' : 'kiss.png'1820 }1821 path = 'plugins/gtkgui/emoticons/'1822 1755 self.emoticons = {} 1823 1756 self.begin_emot = "" 1824 for e in emots: 1825 file = path + emots[e] 1826 if not os.path.exists(file): 1757 split_line = string.split(self.plugin.config['emoticons'], '\t') 1758 for i in range(0, len(split_line)/2): 1759 file = split_line[2*i+1] 1760 if not self.image_is_ok(file): 1827 1761 continue 1828 1762 pix = gtk.gdk.pixbuf_new_from_file(file) 1829 self.emoticons[ e] = pix1830 if not e[0] in self.begin_emot:1831 self.begin_emot += e[0]1763 self.emoticons[split_line[2*i]] = pix 1764 if not split_line[2*i][0] in self.begin_emot: 1765 self.begin_emot += split_line[2*i][0] 1832 1766 1833 1767 def mkpixbufs(self): … … 2693 2627 'mergeaccounts': 0,\ 2694 2628 'useemoticons': 1,\ 2629 'emoticons':':-)\tplugins/gtkgui/emoticons/smile.png\t(@)\tplugins/gtkgui/emoticons/pussy.png\t8)\tplugins/gtkgui/emoticons/coolglasses.png\t:(\tplugins/gtkgui/emoticons/unhappy.png\t:)\tplugins/gtkgui/emoticons/smile.png\t(})\tplugins/gtkgui/emoticons/hugleft.png\t:$\tplugins/gtkgui/emoticons/blush.png\t(Y)\tplugins/gtkgui/emoticons/yes.png\t:-@\tplugins/gtkgui/emoticons/angry.png\t:-D\tplugins/gtkgui/emoticons/biggrin.png\t(U)\tplugins/gtkgui/emoticons/brheart.png\t(F)\tplugins/gtkgui/emoticons/flower.png\t:-[\tplu
