eric6/WebBrowser/Bookmarks/BookmarkNode.py

changeset 6942
2602857055c5
parent 6645
ad476851d7e0
child 7229
53054eb5b15a
equal deleted inserted replaced
6941:f99d60d6b59b 6942:2602857055c5
1 # -*- coding: utf-8 -*-
2
3 # Copyright (c) 2009 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
4 #
5
6 """
7 Module implementing the bookmark node.
8 """
9
10 from __future__ import unicode_literals
11
12 from PyQt5.QtCore import QDateTime
13
14
15 class BookmarkNode(object):
16 """
17 Class implementing the bookmark node type.
18 """
19 # possible bookmark node types
20 Root = 0
21 Folder = 1
22 Bookmark = 2
23 Separator = 3
24
25 # possible timestamp types
26 TsAdded = 0
27 TsModified = 1
28 TsVisited = 2
29
30 def __init__(self, type_=Root, parent=None):
31 """
32 Constructor
33
34 @param type_ type of the bookmark node (BookmarkNode.Type)
35 @param parent reference to the parent node (BookmarkNode)
36 """
37 self.url = ""
38 self.title = ""
39 self.desc = ""
40 self.expanded = False
41 self.added = QDateTime()
42 self.modified = QDateTime()
43 self.visited = QDateTime()
44 self.visitCount = 0
45
46 self._children = []
47 self._parent = parent
48 self._type = type_
49
50 if parent is not None:
51 parent.add(self)
52
53 def type(self):
54 """
55 Public method to get the bookmark's type.
56
57 @return bookmark type (BookmarkNode.Type)
58 """
59 return self._type
60
61 def setType(self, type_):
62 """
63 Public method to set the bookmark's type.
64
65 @param type_ type of the bookmark node (BookmarkNode.Type)
66 """
67 self._type = type_
68
69 def children(self):
70 """
71 Public method to get the list of child nodes.
72
73 @return list of all child nodes (list of BookmarkNode)
74 """
75 return self._children[:]
76
77 def parent(self):
78 """
79 Public method to get a reference to the parent node.
80
81 @return reference to the parent node (BookmarkNode)
82 """
83 return self._parent
84
85 def add(self, child, offset=-1):
86 """
87 Public method to add/insert a child node.
88
89 @param child reference to the node to add (BookmarkNode)
90 @param offset position where to insert child (integer, -1 = append)
91 """
92 if child._type == BookmarkNode.Root:
93 return
94
95 if child._parent is not None:
96 child._parent.remove(child)
97
98 child._parent = self
99 if offset == -1:
100 self._children.append(child)
101 else:
102 self._children.insert(offset, child)
103
104 def remove(self, child):
105 """
106 Public method to remove a child node.
107
108 @param child reference to the child node (BookmarkNode)
109 """
110 child._parent = None
111 if child in self._children:
112 self._children.remove(child)

eric ide

mercurial