@@ -40,6 +40,8 @@ def __init__(self, window=None, view=None, feedback=True):
40
40
self .view = self .window .active_view ()
41
41
self .lib_file_path = getLibrariesFileDataPath ()
42
42
self .quick_list = []
43
+ self .page = 1
44
+ self .keyword = ""
43
45
self .cwd = None
44
46
45
47
self .dprint = None
@@ -74,11 +76,13 @@ def download_list_async(self, keyword):
74
76
Arguments:
75
77
keyword {str} -- keyword to be search
76
78
"""
77
- thread = Thread (target = self .download_list , args = (keyword ,))
79
+ self .keyword = keyword
80
+
81
+ thread = Thread (target = self .download_list )
78
82
thread .start ()
79
83
ThreadProgress (thread , self .translate ('searching' ), '' )
80
84
81
- def download_list (self , keyword ):
85
+ def download_list (self ):
82
86
"""PlatformIO API
83
87
84
88
Search a library in the platformio API api.platformio.org.
@@ -90,7 +94,8 @@ def download_list(self, keyword):
90
94
Keyword to search the library in the platformio API
91
95
"""
92
96
request = {}
93
- request ['query' ] = keyword
97
+ request ['query' ] = self .keyword
98
+ request ['page' ] = self .page
94
99
query = urlencode (request )
95
100
96
101
url = 'http://api.platformio.org/lib/search?{0}' .format (query )
@@ -99,26 +104,23 @@ def download_list(self, keyword):
99
104
response = urlopen (req )
100
105
response_list = loads (response .read ().decode ())
101
106
102
- nloop = response_list ['total' ] / response_list ['perpage' ]
103
- if (nloop > 1 ):
104
-
105
- nloop = int (nloop ) + 1 if nloop > int (nloop ) else int (nloop )
106
- for page in range (2 , nloop + 1 ):
107
-
108
- request ['page' ] = page
109
- query = urlencode (request )
110
- req = Request (url , headers = get_headers ())
111
-
112
- response = urlopen (req )
113
- page_next = loads (response .read ().decode ())
114
- for item_next in page_next ['items' ]:
115
- response_list ['items' ].append (item_next )
107
+ pages = response_list ['total' ] / response_list ['perpage' ]
108
+ page_previous = self .page - 1
109
+ page_next = self .page + 1
116
110
117
111
if (len (response_list ['items' ]) == 0 ):
118
112
self .quick_list .append ([self .translate ('none_lib_found' )])
119
113
else :
120
114
self .quicked (response_list ['items' ])
121
115
self .quick_list .insert (0 , [self .translate ('select_library' ).upper ()])
116
+
117
+ if (self .page > 1 ):
118
+ caption = self .translate ("library_page_previous_{0}" , page_previous )
119
+ self .quick_list .insert (1 , [caption , page_previous ])
120
+
121
+ if (self .page < pages ):
122
+ caption = self .translate ("library_page_next_{0}" , page_next )
123
+ self .quick_list .insert (len (self .quick_list ), [caption , page_next ])
122
124
123
125
quick_panel (self .quick_list , self .library_install_async )
124
126
@@ -140,7 +142,10 @@ def quicked(self, source_list):
140
142
frameworks = ''
141
143
142
144
for framework in item ['frameworks' ]:
143
- frameworks += framework + ' '
145
+ try :
146
+ frameworks += framework + ' '
147
+ except :
148
+ frameworks += framework ["name" ] + ' '
144
149
145
150
info = "{0} | {1}" .format (id , frameworks )
146
151
quick_list .append ([name , description , info ])
@@ -157,9 +162,19 @@ def library_install_async(self, selected):
157
162
Arguments:
158
163
selected {int} -- user selection index
159
164
"""
165
+ list_selection = self .quick_list [selected ];
166
+
160
167
if (selected <= 0 ):
161
168
return
162
169
170
+ try :
171
+ page = int (list_selection [1 ])
172
+ self .page = page
173
+ self .download_list_async (self .keyword )
174
+ return
175
+ except :
176
+ pass
177
+
163
178
thread = Thread (target = self .library_install , args = (selected ,))
164
179
thread .start ()
165
180
ThreadProgress (thread , self .translate ('installing' ), '' )
0 commit comments