Author: jprantan
Date: Wed May 20 03:53:24 2009
New Revision: 66
Modified:
trunk/src/mabot/ui/abstracttkdialog.py
trunk/src/mabot/ui/main.py
trunk/src/mabot/ui/ui.py
trunk/src/mabot/utils/utils.py
Log:
Improved adding and removing tags.
Modified: trunk/src/mabot/ui/abstracttkdialog.py
==============================================================================
--- trunk/src/mabot/ui/abstracttkdialog.py (original)
+++ trunk/src/mabot/ui/abstracttkdialog.py Wed May 20 03:53:24 2009
@@ -27,7 +27,7 @@
self.result = None
body = Frame(self)
self.initial_focus = self.body(body)
- body.pack(padx=5, pady=5)
+ body.pack(padx=5, pady=5, expand=1, fill=BOTH)
self.buttonbox()
self.grab_set()
if not self.initial_focus:
Modified: trunk/src/mabot/ui/main.py
==============================================================================
--- trunk/src/mabot/ui/main.py (original)
+++ trunk/src/mabot/ui/main.py Wed May 20 03:53:24 2009
@@ -17,6 +17,7 @@
from Tkinter import _setit
import tkMessageBox
import tkFileDialog
+import tkSimpleDialog
from idlelib import TreeWidget
from tree import SuiteTreeItem
@@ -205,32 +206,34 @@
self._create_new_editor()
def _add_tag(self, event=None):
- if self._active_node is not None \
+ if self._active_node \
and not self._active_node.item.model_item.is_keyword():
- dialog = EditTagDialog(self.root, "Add")
- if dialog.pressed == 'OK':
- self._add_new_tag(dialog.message)
- dialog.destroy()
+ tags = tkSimpleDialog.askstring('Add Tags',
+ "Add tags (separated with ', ' i.e. tag-1,
tag-2)")
+ self._add_new_tags(tags)
else:
self._no_node_selected("No test suite or test case selected!")
def _remove_tag(self, event=None):
if self._active_node is not None \
and not self._active_node.item.model_item.is_keyword():
- dialog = EditTagDialog(self.root, "Remove")
+ tags =
sorted(self._active_node.item.model_item.get_all_visible_tags([]))
+ dialog = RemoveTagsDialog(self.root, tags)
if dialog.pressed == 'OK':
- self._remove_old_tag(dialog.message)
+ self._remove_old_tag(dialog.tags)
dialog.destroy()
else:
self._no_node_selected("No test suite or test case selected!")
- def _add_new_tag(self, tag):
- self._active_node.item.model_item.add_tag(tag)
+ def _add_new_tags(self, tags):
+ for tag in utils.get_tags_from_string(tags):
+ self._active_node.item.model_item.add_tag(tag)
self._create_new_editor()
self._update_visibility()
- def _remove_old_tag(self, tag):
- self._active_node.item.model_item.remove_tag(tag)
+ def _remove_old_tag(self, tags):
+ for tag in tags:
+ self._active_node.item.model_item.remove_tag(tag)
self._create_new_editor()
self._update_visibility()
@@ -267,12 +270,14 @@
saved, changes = self.io.save_data(path)
progress.destroy()
if changes:
+ print "Changes!"
self._init_tree_view()
self._update_visibility()
self._create_new_editor()
if saved:
message = 'Wrote output to ' + self.io.output
self._statusbar_right.configure(text=message)
+ self.current_editor.update()
else:
if changes:
message = 'Loaded changes from ' + self.io.output
Modified: trunk/src/mabot/ui/ui.py
==============================================================================
--- trunk/src/mabot/ui/ui.py (original)
+++ trunk/src/mabot/ui/ui.py Wed May 20 03:53:24 2009
@@ -44,6 +44,27 @@
def validate(self):
return self.message_field.get(START, END) != ''
+class EntryDialog(AbstractTkDialog):
+
+ def __init__(self, parent, title, label, default_message=""):
+ self._label = label
+ self._default_message = default_message
+ AbstractTkDialog.__init__(self, parent, title)
+
+ def body(self, master):
+ Label(master, text=self._label).grid(row=0, sticky=W+E)
+ self._entry = Entry(master)
+ self._entry.insert(0, self._default_message)
+ self._entry.grid(row=1, sticky=W+E)
+ return self._entry # initial focus
+
+ def apply(self):
+ self.message = self._entry.get()
+
+ def validate(self):
+ return self._entry.get() != ''
+
+
class SettingsDialog(AbstractTkDialog):
def __init__(self, parent, title):
@@ -148,11 +169,39 @@
"Give reason for failure:" , 5, 50,
SETTINGS["default_message"])
-class EditTagDialog(TextMessageDialog):
+class AddTagsDialog(EntryDialog):
+
+ def __init__(self, parent):
+ EntryDialog.__init__(self, parent, "Add Tags",
+ "Give tags (i.e. tag1, tag2)")
+
+ def apply(self):
+ EntryDialog.apply(self)
+ self.tags = utils.get_tags_from_string(self.message)
+
+class RemoveTagsDialog(AbstractTkDialog):
+
+ def __init__(self, parent, tags):
+ self._all_tags = tags
+ self.tags = []
+ AbstractTkDialog.__init__(self, parent, 'Remove Tags')
+
+ def body(self, master):
+ scrollbar = Scrollbar(master, orient=VERTICAL)
+ self.listbox = Listbox(master, selectmode=EXTENDED,
+ yscrollcommand=scrollbar.set)
+ scrollbar.config(command=self.listbox.yview)
+ scrollbar.pack(side=RIGHT, fill=Y)
+ self.listbox.pack(fill=BOTH, expand=1)
+ for tag in self._all_tags:
+ self.listbox.insert(END, tag)
+
+ def validate(self):
+ return self.listbox.curselection()
+
+ def apply(self):
+ self.tags = [ self._all_tags[int(i)] for i in
self.listbox.curselection() ]
- def __init__(self, parent, type):
- TextMessageDialog.__init__(self, parent, type + " Tag",
- "Give tag:", 2, 20)
class AskAdditionalTagsDialog(TextMessageDialog):
Modified: trunk/src/mabot/utils/utils.py
==============================================================================
--- trunk/src/mabot/utils/utils.py (original)
+++ trunk/src/mabot/utils/utils.py Wed May 20 03:53:24 2009
@@ -15,7 +15,10 @@
def get_tags_from_string(tags_string):
"""Return list of tags from given string"""
- tags = tags_string.split(', ')
+ if tags_string:
+ tags = tags_string.split(', ')
+ else:
+ tags = []
return [ tag for tag in tags if tag ]
def get_status_color(item):