1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

''' 

Task Coach - Your friendly task manager 

Copyright (C) 2004-2010 Task Coach developers <developers@taskcoach.org> 

 

Task Coach is free software: you can redistribute it and/or modify 

it under the terms of the GNU General Public License as published by 

the Free Software Foundation, either version 3 of the License, or 

(at your option) any later version. 

 

Task Coach is distributed in the hope that it will be useful, 

but WITHOUT ANY WARRANTY; without even the implied warranty of 

MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 

GNU General Public License for more details. 

 

You should have received a copy of the GNU General Public License 

along with this program.  If not, see <http://www.gnu.org/licenses/>. 

''' 

 

from taskcoachlib import patterns 

from taskcoachlib.i18n import _ 

from taskcoachlib.domain import category 

import base 

 

 

class NewCategoryCommand(base.NewItemCommand): 

    singular_name = _('New category') 

 

    def __init__(self, *args, **kwargs): 

        subject = kwargs.pop('subject', _('New category')) 

        description = kwargs.pop('description', '') 

        attachments = kwargs.pop('attachments', []) 

        super(NewCategoryCommand, self).__init__(*args, **kwargs) 

        self.items = self.createNewCategories(subject=subject, 

            description=description, attachments=attachments) 

 

    def createNewCategories(self, **kwargs): 

        return [category.Category(**kwargs)] 

 

 

class NewSubCategoryCommand(base.NewSubItemCommand): 

    plural_name = _('New subcategories') 

    singular_name = _('New subcategory of "%s"') 

 

    def __init__(self, *args, **kwargs): 

        subject = kwargs.pop('subject', _('New subcategory')) 

        description = kwargs.pop('description', '') 

        attachments = kwargs.pop('attachments', []) 

        super(NewSubCategoryCommand, self).__init__(*args, **kwargs) 

        self.items = self.createNewCategories(subject=subject, 

            description=description, attachments=attachments) 

 

    def createNewCategories(self, **kwargs): 

        return [parent.newChild(**kwargs) for parent in self.items] 

 

 

class EditCategoryCommand(base.EditCommand): 

    plural_name = _('Edit categories') 

    singular_name = _('Edit category "%s"') 

 

    def getItemsToSave(self): 

        return self.items 

 

 

class EditExclusiveSubcategoriesCommand(base.BaseCommand): 

    plural_name = _('Edit exclusive subcategories') 

    singular_name = _('Edit exclusive subcategories of "%s"') 

 

    def __init__(self, *args, **kwargs): 

        self.__newExclusivity = kwargs.pop('exclusivity') 

        super(EditExclusiveSubcategoriesCommand, self).__init__(*args, **kwargs) 

        self.__oldExclusivities = [item.hasExclusiveSubcategories() for item in self.items] 

 

    @patterns.eventSource 

    def do_command(self, event=None): 

        for item in self.items: 

            item.makeSubcategoriesExclusive(self.__newExclusivity, event=event) 

 

    @patterns.eventSource 

    def undo_command(self, event=None): 

        for item, oldExclusivity in zip(self.items, self.__oldExclusivities): 

            item.makeSubcategoriesExclusive(oldExclusivity, event=event) 

 

    def redo_command(self): 

        self.do_command() 

 

 

class DeleteCategoryCommand(base.DeleteCommand): 

    plural_name = _('Delete categories') 

    singular_name = _('Delete category "%s"') 

 

 

class DragAndDropCategoryCommand(base.DragAndDropCommand): 

    plural_name = _('Drag and drop categories') 

 

 

class AddCategoryNoteCommand(base.AddNoteCommand): 

    plural_name = _('Add note to categories')