gtg team mailing list archive
-
gtg team
-
Mailing list archive
-
Message #03941
[Merge] lp:~atit-anand-cs/gtg/random_tag_color into lp:gtg
Atit Anand has proposed merging lp:~atit-anand-cs/gtg/random_tag_color into lp:gtg.
Requested reviews:
Gtg developers (gtg)
For more details, see:
https://code.launchpad.net/~atit-anand-cs/gtg/random_tag_color/+merge/208450
Fix for the bug #644993. Automatic generation of tag color
--
https://code.launchpad.net/~atit-anand-cs/gtg/random_tag_color/+merge/208450
Your team Gtg developers is requested to review the proposed merge of lp:~atit-anand-cs/gtg/random_tag_color into lp:gtg.
=== modified file 'AUTHORS'
--- AUTHORS 2014-02-25 18:19:31 +0000
+++ AUTHORS 2014-02-26 18:23:44 +0000
@@ -131,3 +131,5 @@
* Pawan Hegde <h.pawan@xxxxxxxxx>
* Sagar Ghuge <ghugesss@xxxxxxxxx>
* Sushant Raikar <sushantthecoder@xxxxxxxxx>
+* Atit Anand <atit.anand.cs@xxxxxxxxx>
+
=== modified file 'CHANGELOG'
--- CHANGELOG 2014-02-25 18:38:16 +0000
+++ CHANGELOG 2014-02-26 18:23:44 +0000
@@ -14,6 +14,8 @@
* Fix for bug #1248185: due label in task editor says "Due for" should say "Due on", by Pawan Hegde
* Fix for bug #1282955: Clicking out side the calender widget should close the widget by Sagar Ghuge
* Fix for bug #1033268: Mouseover String Incorrect, by Sushant Raikar
+ * Fix for bug #644993 : Automatic generation of tag color, by Atit Anand
+
2013-11-24 Getting Things GNOME! 0.3.1
* Fix for bug #1024473: Have 'Show Main Window' in notification area, by Antonio Roquentin
@@ -43,7 +45,7 @@
* Fix for bug #1242384: send-email: toolbar item is not removed from an opened task, by Fabiano Fidencio
* Fix for bug #1029342: Give an option to remove tag color, by kpytang
* Fixed Hamster Plugin: bugs #487582, #487585, #1236066, #1242083 and #1242279, by Parin Porecha
-
+
2012-11-06 Getting Things GNOME! 0.3
* Hide tasks with due date someday, #931376
* New Date class by Paul Kishimoto and Izidor Matušov
=== modified file 'GTG/gtk/browser/CellRendererTags.py'
--- GTG/gtk/browser/CellRendererTags.py 2013-11-25 02:37:46 +0000
+++ GTG/gtk/browser/CellRendererTags.py 2014-02-26 18:23:44 +0000
@@ -61,7 +61,6 @@
def __count_viewable_tags(self):
count = 0
-
if self.tag_list is not None:
for my_tag in self.tag_list:
my_tag_color = my_tag.get_attribute("color")
=== modified file 'GTG/gtk/browser/tag_context_menu.py'
--- GTG/gtk/browser/tag_context_menu.py 2013-11-25 02:37:46 +0000
+++ GTG/gtk/browser/tag_context_menu.py 2014-02-26 18:23:44 +0000
@@ -27,7 +27,7 @@
"""
from gi.repository import Gtk
-
+from GTG.gtk.colors import generate_tag_color, color_add, color_remove
from GTG import _
@@ -53,8 +53,12 @@
# Color chooser FIXME: SHOULD BECOME A COLOR PICKER
self.mi_cc = Gtk.MenuItem()
self.mi_cc.set_label(_("Edit Tag..."))
+ self.mi_ctag = Gtk.MenuItem()
+ self.mi_ctag.set_label(_("Generate Color"))
self.append(self.mi_cc)
+ self.append(self.mi_ctag)
self.mi_cc.connect('activate', self.on_mi_cc_activate)
+ self.mi_ctag.connect('activate', self.on_mi_ctag_activate)
if self.tag.is_search_tag():
self.mi_del = Gtk.MenuItem()
self.mi_del.set_label(_("Delete"))
@@ -74,6 +78,14 @@
"""Callback: show the tag editor upon request"""
self.vmanager.open_tag_editor(self.tag)
+ def on_mi_ctag_activate(self, widget):
+ random_color = generate_tag_color()
+ present_color = self.tag.get_attribute('color')
+ if(present_color is not None):
+ color_remove(present_color)
+ self.tag.set_attribute('color', random_color)
+ color_add(random_color)
+
def on_mi_del_activate(self, widget):
""" delete a selected search """
self.req.remove_tag(self.tag.get_name())
=== modified file 'GTG/gtk/browser/tag_editor.py'
--- GTG/gtk/browser/tag_editor.py 2014-01-15 10:40:09 +0000
+++ GTG/gtk/browser/tag_editor.py 2014-02-26 18:23:44 +0000
@@ -32,6 +32,7 @@
from GTG import _
from GTG.gtk.browser.simple_color_selector import SimpleColorSelector
from GTG.tools.logger import Log
+from GTG.gtk.colors import color_add, color_remove
class TagIconSelector(Gtk.Window):
@@ -469,6 +470,13 @@
"""Callback: update the tag color depending on the current color
selection"""
color = self.tc_cc_colsel.get_selected_color()
+ if (color is None):
+ color_remove(self.tag.get_attribute('color'))
+ else:
+ my_color = Gdk.color_parse(color)
+ color = Gdk.Color(my_color.red, my_color.green, my_color.blue).to_string()
+ color_add(color)
+
if self.tag is not None:
if color is not None:
self.tag.set_attribute('color', color)
=== modified file 'GTG/gtk/browser/treeview_factory.py'
--- GTG/gtk/browser/treeview_factory.py 2013-11-25 02:37:46 +0000
+++ GTG/gtk/browser/treeview_factory.py 2014-02-26 18:23:44 +0000
@@ -77,9 +77,7 @@
search_parent = self.req.get_tag(CoreConfig.SEARCH_TAG)
for search_tag in search_parent.get_children():
tag = self.req.get_tag(search_tag)
- match = search_filter(node,
- parse_search_query(
- tag.get_attribute('query')))
+ match = search_filter(node, parse_search_query(tag.get_attribute('query')))
if match and search_tag not in tags:
tags.append(tag)
=== modified file 'GTG/gtk/colors.py'
--- GTG/gtk/colors.py 2013-11-25 02:37:46 +0000
+++ GTG/gtk/colors.py 2014-02-26 18:23:44 +0000
@@ -19,10 +19,12 @@
from gi.repository import Gdk
from functools import reduce
-
+import random
# Take list of Tags and give the background color that should be applied
# The returned color might be None (in which case, the default is used)
+used_color = []
+
def background_color(tags, bgcolor=None):
if not bgcolor:
@@ -35,6 +37,8 @@
blue = 0
for my_tag in tags:
my_color_str = my_tag.get_attribute("color")
+ if my_color_str is not None and my_color_str not in used_color:
+ used_color.append(my_color_str)
if my_color_str:
my_color = Gdk.color_parse(my_color_str)
color_count = color_count + 1
@@ -90,4 +94,30 @@
tags_txt = reduce(lambda a, b: a + ", " + b, tag_markups)
return tags_txt
+
+def generate_tag_color():
+
+ maxvalue = 65535
+ flag = 0
+ while(flag == 0):
+ red = random.randint(0, maxvalue)
+ green = random.randint(0, maxvalue)
+ blue = random.randint(0, maxvalue)
+ my_color = Gdk.Color(red, green, blue).to_string()
+ if my_color not in used_color:
+ flag = 1
+ used_color.append(my_color)
+ return my_color
+
+
+def color_add(present_color):
+
+ if present_color not in used_color:
+ used_color.append(present_color)
+
+
+def color_remove(present_color):
+
+ if present_color in used_color:
+ used_color.remove(present_color)
# -----------------------------------------------------------------------------
Follow ups