Merge lp:~wingpanel-devs/slingshot/wingpanel-indicator into lp:~elementary-pantheon/slingshot/trunk
- wingpanel-indicator
- Merge into trunk
Proposed by
Cody Garver
Status: | Merged | ||||||||
---|---|---|---|---|---|---|---|---|---|
Approved by: | Cody Garver | ||||||||
Approved revision: | 540 | ||||||||
Merged at revision: | 603 | ||||||||
Proposed branch: | lp:~wingpanel-devs/slingshot/wingpanel-indicator | ||||||||
Merge into: | lp:~elementary-pantheon/slingshot/trunk | ||||||||
Diff against target: |
881 lines (+215/-291) 9 files modified
CMakeLists.txt (+36/-64) lib/synapse-core/CMakeLists.txt (+18/-14) lib/synapse-plugins/CMakeLists.txt (+22/-17) src/Backend/DBusService.vala (+1/-1) src/CMakeLists.txt (+54/-0) src/Slingshot.vala (+52/-79) src/SlingshotView.vala (+31/-113) src/Widgets/AppEntry.vala (+0/-2) src/Widgets/CategoryView.vala (+1/-1) |
||||||||
To merge this branch: | bzr merge lp:~wingpanel-devs/slingshot/wingpanel-indicator | ||||||||
Related bugs: |
|
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
elementary Pantheon team | Pending | ||
Review via email: mp+278758@code.launchpad.net |
Commit message
Convert to wingpanel indicator
Description of the change
To post a comment you must log in.
Preview Diff
[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1 | === modified file 'CMakeLists.txt' |
2 | --- CMakeLists.txt 2015-11-25 05:48:28 +0000 |
3 | +++ CMakeLists.txt 2015-11-27 00:35:16 +0000 |
4 | @@ -1,14 +1,17 @@ |
5 | -# Check http://webdev.elementaryos.org/docs/developer-guide/cmake for documentation |
6 | - |
7 | +# Main configuration |
8 | cmake_minimum_required (VERSION 2.6) |
9 | cmake_policy (VERSION 2.6) |
10 | list (APPEND CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake) |
11 | |
12 | +# Project information |
13 | project (slingshot) |
14 | +set (INDICATORTITLE "Slingshot") |
15 | +set (INDICATORDESCRIPTION "Application menu") |
16 | |
17 | -set (APPNAME "${CMAKE_PROJECT_NAME}-launcher") |
18 | -set (DATADIR "${CMAKE_INSTALL_PREFIX}/share") |
19 | -set (PKGDATADIR "${DATADIR}/${CMAKE_PROJECT_NAME}") |
20 | +# Set some variables |
21 | +include (GNUInstallDirs) |
22 | +set (DATADIR "${CMAKE_INSTALL_FULL_LIBDIR}/wingpanel") |
23 | +set (PKGDATADIR "${DATADIR}") |
24 | set (GETTEXT_PACKAGE "${CMAKE_PROJECT_NAME}") |
25 | set (RELEASE_NAME "Donatello") |
26 | set (VERSION "0.8.2") |
27 | @@ -18,8 +21,8 @@ |
28 | # Files |
29 | file (GLOB applications_menu "${CMAKE_CURRENT_SOURCE_DIR}/data/pantheon-applications.menu") |
30 | |
31 | -# Configure file |
32 | -configure_file (${CMAKE_SOURCE_DIR}/config.h.cmake ${CMAKE_BINARY_DIR}/config.h) |
33 | +# Configuration file |
34 | +configure_file (${CMAKE_SOURCE_DIR}/config.h.cmake ${CMAKE_BINARY_DIR}/lib/synapse-core/config.h) |
35 | |
36 | # Add 'make dist' command for creating release tarball |
37 | set (CPACK_PACKAGE_VERSION ${VERSION}) |
38 | @@ -27,13 +30,12 @@ |
39 | set (CPACK_SOURCE_PACKAGE_FILE_NAME "${CMAKE_PROJECT_NAME}-${CPACK_PACKAGE_VERSION}") |
40 | set (CPACK_SOURCE_IGNORE_FILES "/build/;/.bzr/;/.bzrignore;~$;${CPACK_SOURCE_IGNORE_FILES}") |
41 | |
42 | +# Include CPack |
43 | include (CPack) |
44 | add_custom_target (dist COMMAND ${CMAKE_MAKE_PROGRAM} package_source) |
45 | |
46 | -# Slingshot |
47 | - |
48 | +# Option to configure the use of the unity integration |
49 | option (USE_UNITY "Use Unity integration" ON) |
50 | - |
51 | if (USE_UNITY) |
52 | message ("-- Unity integration enabled") |
53 | set (UNITY_DEPS unity) |
54 | @@ -42,8 +44,8 @@ |
55 | message ("-- Unity integration disabled") |
56 | endif () |
57 | |
58 | +# Option to configure the use of the zeitgeist integration |
59 | option (USE_ZEITGEIST "Use Zeitgeist integration" ON) |
60 | - |
61 | if (USE_ZEITGEIST) |
62 | message ("-- Zeitgeist integration enabled") |
63 | set (ZEITGEIST_DEPS zeitgeist-2.0) |
64 | @@ -52,7 +54,16 @@ |
65 | message ("-- Zeitgeist integration disabled") |
66 | endif () |
67 | |
68 | +# Gettext package |
69 | +add_definitions (-DGETTEXT_PACKAGE=\"${GETTEXT_PACKAGE}\") |
70 | + |
71 | +# Comment this out to enable C compiler warnings |
72 | +add_definitions (-w) |
73 | + |
74 | +# Load PkgConfig |
75 | find_package (PkgConfig) |
76 | + |
77 | +# Check for Vala |
78 | |
79 | pkg_check_modules(PLANK011 QUIET plank>=0.10.9) |
80 | if (PLANK011_FOUND) |
81 | @@ -67,7 +78,7 @@ |
82 | endif () |
83 | |
84 | set (CORE_DEPS "gobject-2.0;glib-2.0;gio-2.0;gio-unix-2.0;libsoup-2.4;gee-0.8;libgnome-menu-3.0;json-glib-1.0;${UNITY_DEPS};${PLANK_DEPS};") |
85 | -set (UI_DEPS "gtk+-3.0>=3.12.0;granite;${ZEITGEIST_DEPS};") |
86 | +set (UI_DEPS "wingpanel-2.0;gtk+-3.0>=3.12.0;granite;${ZEITGEIST_DEPS};") |
87 | |
88 | pkg_check_modules (DEPS REQUIRED "${CORE_DEPS}${UI_DEPS}" gthread-2.0) |
89 | |
90 | @@ -75,68 +86,29 @@ |
91 | include (ValaVersion) |
92 | ensure_vala_version ("0.26.2" MINIMUM) |
93 | |
94 | +# Include vala precompile |
95 | include (ValaPrecompile) |
96 | -vala_precompile (VALA_C ${APPNAME} |
97 | - src/Slingshot.vala |
98 | - src/SlingshotView.vala |
99 | - src/Settings.vala |
100 | - src/Utils.vala |
101 | - src/Pixels.vala |
102 | - src/Backend/AppSystem.vala |
103 | - src/Backend/DBusService.vala |
104 | - src/Backend/App.vala |
105 | - src/Backend/RelevancyService.vala |
106 | - src/Backend/SynapseSearch.vala |
107 | - src/Widgets/AppEntry.vala |
108 | - src/Widgets/Grid.vala |
109 | - src/Widgets/Switcher.vala |
110 | - src/Widgets/SearchView.vala |
111 | - src/Widgets/SearchItem.vala |
112 | - src/Widgets/Sidebar.vala |
113 | - src/Widgets/CategoryView.vala |
114 | -PACKAGES |
115 | - ${CORE_DEPS} |
116 | - ${UI_DEPS} |
117 | - synapse-core |
118 | - synapse-plugins |
119 | -CUSTOM_VAPIS |
120 | - vapi/config.vapi |
121 | -OPTIONS |
122 | - --thread |
123 | - --target-glib=2.32 |
124 | - --vapidir=${CMAKE_BINARY_DIR}/lib/synapse-core |
125 | - --vapidir=${CMAKE_BINARY_DIR}/lib/synapse-plugins |
126 | - -g |
127 | - ${UNITY_OPTIONS} |
128 | - ${ZEITGEIST_OPTIONS} |
129 | - ${PLANK_OPTIONS} |
130 | -) |
131 | - |
132 | -include_directories(${CMAKE_BINARY_DIR}/lib/synapse-core) |
133 | -include_directories(${CMAKE_BINARY_DIR}/lib/synapse-plugins) |
134 | - |
135 | -add_subdirectory(lib/synapse-core) |
136 | -add_subdirectory(lib/synapse-plugins) |
137 | - |
138 | -# Comment this out to enable C compiler warnings |
139 | -add_definitions (-w) |
140 | - |
141 | + |
142 | +# Synapse libraries |
143 | +include_directories (${CMAKE_BINARY_DIR}/lib/synapse-core) |
144 | +include_directories (${CMAKE_BINARY_DIR}/lib/synapse-plugins) |
145 | + |
146 | +# Link some libraries |
147 | add_definitions (${DEPS_CFLAGS} -DGMENU_I_KNOW_THIS_IS_UNSTABLE -include config.h) |
148 | link_libraries (${DEPS_LIBRARIES}) |
149 | link_directories (${DEPS_LIBRARY_DIRS}) |
150 | |
151 | -add_executable (${APPNAME} ${VALA_C}) |
152 | -target_link_libraries(${APPNAME} m synapse-core synapse-plugins) |
153 | - |
154 | # Installation |
155 | install (TARGETS ${APPNAME} RUNTIME DESTINATION bin) |
156 | install (FILES ${applications_menu} DESTINATION /etc/xdg/menus) |
157 | +file (GLOB resources "${CMAKE_CURRENT_SOURCE_DIR}/data/*") |
158 | |
159 | -# |
160 | -# GSettings Schema |
161 | -# |
162 | +# Settings schema |
163 | include (GSettings) |
164 | add_schema ("org.pantheon.desktop.slingshot.gschema.xml") |
165 | |
166 | -# Translations |
167 | +# Directories |
168 | +add_subdirectory (lib/synapse-core) |
169 | +add_subdirectory (lib/synapse-plugins) |
170 | +add_subdirectory (src) |
171 | add_subdirectory (po) |
172 | |
173 | === modified file 'lib/synapse-core/CMakeLists.txt' |
174 | --- lib/synapse-core/CMakeLists.txt 2014-07-03 06:38:42 +0000 |
175 | +++ lib/synapse-core/CMakeLists.txt 2015-11-27 00:35:16 +0000 |
176 | @@ -1,7 +1,8 @@ |
177 | -set(CORE_LIB_VERSION 0.1) |
178 | -set(CORE_LIB_SOVERSION 0) |
179 | -set(CORE_LIBRARY_NAME synapse-core) |
180 | -set(CORE_PKG |
181 | +# Library information |
182 | +set (CORE_LIB_VERSION 0.1) |
183 | +set (CORE_LIB_SOVERSION 0) |
184 | +set (CORE_LIBRARY_NAME synapse-core) |
185 | +set (CORE_PKG |
186 | glib-2.0 |
187 | zeitgeist-2.0 |
188 | gio-unix-2.0 |
189 | @@ -10,9 +11,11 @@ |
190 | gtk+-3.0 |
191 | ) |
192 | |
193 | -pkg_check_modules(CORE_DEPS REQUIRED ${CORE_PKG}) |
194 | +# Check for dependencies |
195 | +pkg_check_modules (CORE_DEPS REQUIRED ${CORE_PKG}) |
196 | |
197 | -set(CORE_SOURCE |
198 | +# Source files |
199 | +set (CORE_SOURCE |
200 | common-actions.vala |
201 | config-service.vala |
202 | data-sink.vala |
203 | @@ -28,9 +31,8 @@ |
204 | volume-service.vala |
205 | ) |
206 | |
207 | -set(LINK_MODE STATIC) |
208 | - |
209 | -vala_precompile(CORE_VALA_C ${CORE_LIBRARY_NAME} |
210 | +# Compile |
211 | +vala_precompile (CORE_VALA_C ${CORE_LIBRARY_NAME} |
212 | ${CORE_SOURCE} |
213 | PACKAGES |
214 | ${CORE_PKG} |
215 | @@ -40,15 +42,17 @@ |
216 | ${CORE_LIBRARY_NAME} |
217 | ) |
218 | |
219 | -add_definitions(${CORE_DEPS_CFLAGS} -include config.h -w) |
220 | -link_directories(${CORE_DEPS_LIBRARY_DIRS}) |
221 | +# Some compiler flags |
222 | +add_definitions (${CORE_DEPS_CFLAGS} -fPIC -include config.h -w) |
223 | +link_directories (${CORE_DEPS_LIBRARY_DIRS}) |
224 | |
225 | -add_library(${CORE_LIBRARY_NAME} STATIC ${CORE_VALA_C}) |
226 | +# Library |
227 | +add_library (${CORE_LIBRARY_NAME} STATIC ${CORE_VALA_C}) |
228 | target_link_libraries (${CORE_LIBRARY_NAME} ${CORE_DEPS_LIBRARIES}) |
229 | |
230 | -set_target_properties(${CORE_LIBRARY_NAME} PROPERTIES |
231 | +# Set some properties |
232 | +set_target_properties (${CORE_LIBRARY_NAME} PROPERTIES |
233 | OUTPUT_NAME ${CORE_LIBRARY_NAME} |
234 | VERSION ${CORE_LIB_VERSION} |
235 | SOVERSION ${CORE_LIB_SOVERSION} |
236 | ) |
237 | - |
238 | |
239 | === modified file 'lib/synapse-plugins/CMakeLists.txt' |
240 | --- lib/synapse-plugins/CMakeLists.txt 2015-06-03 19:10:24 +0000 |
241 | +++ lib/synapse-plugins/CMakeLists.txt 2015-11-27 00:35:16 +0000 |
242 | @@ -1,7 +1,8 @@ |
243 | -set(PLUGINS_LIB_VERSION 0.1) |
244 | -set(PLUGINS_LIB_SOVERSION 0) |
245 | -set(PLUGINS_LIBRARY_NAME synapse-plugins) |
246 | -set(PLUGINS_PKG |
247 | +# Library information |
248 | +set (PLUGINS_LIB_VERSION 0.1) |
249 | +set (PLUGINS_LIB_SOVERSION 0) |
250 | +set (PLUGINS_LIBRARY_NAME synapse-plugins) |
251 | +set (PLUGINS_PKG |
252 | glib-2.0 |
253 | gio-unix-2.0 |
254 | gee-0.8 |
255 | @@ -9,9 +10,11 @@ |
256 | switchboard-2.0 |
257 | ) |
258 | |
259 | -pkg_check_modules(PLUGINS_DEPS REQUIRED ${PLUGINS_PKG}) |
260 | +# Check for dependencies |
261 | +pkg_check_modules (PLUGINS_DEPS REQUIRED ${PLUGINS_PKG}) |
262 | |
263 | -set(PLUGINS_SOURCE |
264 | +# Source files |
265 | +set (PLUGINS_SOURCE |
266 | calculator-plugin.vala |
267 | command-plugin.vala |
268 | desktop-file-plugin.vala |
269 | @@ -19,9 +22,8 @@ |
270 | system-managment.vala |
271 | ) |
272 | |
273 | -set(LINK_MODE STATIC) |
274 | - |
275 | -vala_precompile(PLUGINS_VALA_C ${PLUGINS_LIBRARY_NAME} |
276 | +# Compile |
277 | +vala_precompile (PLUGINS_VALA_C ${PLUGINS_LIBRARY_NAME} |
278 | ${PLUGINS_SOURCE} |
279 | PACKAGES |
280 | ${PLUGINS_PKG} |
281 | @@ -34,17 +36,20 @@ |
282 | ${PLUGINS_LIBRARY_NAME} |
283 | ) |
284 | |
285 | -add_definitions(${PLUGINS_DEPS_CFLAGS} -include config.h -w) |
286 | -link_directories(${PLUGINS_DEPS_LIBRARY_DIRS}) |
287 | -include_directories(${CMAKE_BINARY_DIR}/lib/synapse-core) |
288 | - |
289 | -add_library(${PLUGINS_LIBRARY_NAME} STATIC ${PLUGINS_VALA_C}) |
290 | - |
291 | -set_target_properties(${PLUGINS_LIBRARY_NAME} PROPERTIES |
292 | +# Compiler flags |
293 | +add_definitions (${PLUGINS_DEPS_CFLAGS} -fPIC -include config.h -w) |
294 | +link_directories (${PLUGINS_DEPS_LIBRARY_DIRS}) |
295 | +include_directories (${CMAKE_BINARY_DIR}/lib/synapse-core) |
296 | + |
297 | +# Add library |
298 | +add_library (${PLUGINS_LIBRARY_NAME} STATIC ${PLUGINS_VALA_C}) |
299 | + |
300 | +# Set some properties |
301 | +set_target_properties (${PLUGINS_LIBRARY_NAME} PROPERTIES |
302 | OUTPUT_NAME ${PLUGINS_LIBRARY_NAME} |
303 | VERSION ${PLUGINS_LIB_VERSION} |
304 | SOVERSION ${PLUGINS_LIB_SOVERSION} |
305 | ) |
306 | |
307 | +# Link libraries |
308 | target_link_libraries (${PLUGINS_LIBRARY_NAME} ${PLUGINS_DEPS_LIBRARIES} synapse-core) |
309 | - |
310 | |
311 | === modified file 'src/Backend/DBusService.vala' |
312 | --- src/Backend/DBusService.vala 2013-12-26 00:08:04 +0000 |
313 | +++ src/Backend/DBusService.vala 2015-11-27 00:35:16 +0000 |
314 | @@ -66,4 +66,4 @@ |
315 | // Emit initial state |
316 | service.on_view_visibility_change (); |
317 | } |
318 | -} |
319 | \ No newline at end of file |
320 | +} |
321 | |
322 | === added file 'src/CMakeLists.txt' |
323 | --- src/CMakeLists.txt 1970-01-01 00:00:00 +0000 |
324 | +++ src/CMakeLists.txt 2015-11-27 00:35:16 +0000 |
325 | @@ -0,0 +1,54 @@ |
326 | +# Some dependencies |
327 | +set (CORE_DEPS "gobject-2.0;gio-2.0;gio-unix-2.0;libsoup-2.4;gee-0.8;libgnome-menu-3.0;${UNITY_DEPS};${PLANK_DEPS};") |
328 | +set (UI_DEPS "gtk+-3.0>=3.12.0;granite;wingpanel-2.0;${ZEITGEIST_DEPS};") |
329 | + |
330 | +# Check for these dependencies |
331 | +pkg_check_modules (DEPS REQUIRED "${CORE_DEPS}${UI_DEPS}" gthread-2.0) |
332 | + |
333 | +# Compiling options |
334 | +vala_precompile (VALA_C ${CMAKE_PROJECT_NAME} |
335 | + Slingshot.vala |
336 | + SlingshotView.vala |
337 | + Settings.vala |
338 | + Utils.vala |
339 | + Pixels.vala |
340 | + Backend/AppSystem.vala |
341 | + Backend/DBusService.vala |
342 | + Backend/App.vala |
343 | + Backend/RelevancyService.vala |
344 | + Backend/SynapseSearch.vala |
345 | + Widgets/AppEntry.vala |
346 | + Widgets/Grid.vala |
347 | + Widgets/Switcher.vala |
348 | + Widgets/SearchView.vala |
349 | + Widgets/SearchItem.vala |
350 | + Widgets/Sidebar.vala |
351 | + Widgets/CategoryView.vala |
352 | +PACKAGES |
353 | + ${CORE_DEPS} |
354 | + ${UI_DEPS} |
355 | + synapse-core |
356 | + synapse-plugins |
357 | +CUSTOM_VAPIS |
358 | + ../vapi/config.vapi |
359 | +OPTIONS |
360 | + --thread |
361 | + --target-glib=2.32 |
362 | + --vapidir=${CMAKE_BINARY_DIR}/lib/synapse-core |
363 | + --vapidir=${CMAKE_BINARY_DIR}/lib/synapse-plugins |
364 | + -g |
365 | + ${UNITY_OPTIONS} |
366 | + ${ZEITGEIST_OPTIONS} |
367 | + ${PLANK_OPTIONS} |
368 | +) |
369 | + |
370 | +add_definitions(${DEPS_CFLAGS}) |
371 | + |
372 | +# Library |
373 | +add_library (${CMAKE_PROJECT_NAME} MODULE ${VALA_C}) |
374 | +target_link_libraries(${CMAKE_PROJECT_NAME} ${DEPS_LIBRARIES}) |
375 | + |
376 | +target_link_libraries(${CMAKE_PROJECT_NAME} synapse-plugins) |
377 | + |
378 | +# Installation |
379 | +install (TARGETS ${CMAKE_PROJECT_NAME} DESTINATION ${PKGDATADIR}) |
380 | |
381 | === modified file 'src/Slingshot.vala' |
382 | --- src/Slingshot.vala 2015-01-17 23:56:32 +0000 |
383 | +++ src/Slingshot.vala 2015-11-27 00:35:16 +0000 |
384 | @@ -16,92 +16,65 @@ |
385 | // along with this program. If not, see <http://www.gnu.org/licenses/>. |
386 | // |
387 | |
388 | -public class Slingshot.Slingshot : Granite.Application { |
389 | - |
390 | - private SlingshotView view = null; |
391 | - public static bool silent = false; |
392 | - public static bool command_mode = false; |
393 | +public class Slingshot.Slingshot : Wingpanel.Indicator { |
394 | + |
395 | + private SlingshotView? view = null; |
396 | + |
397 | + private Gtk.Label? indicator_label = null; |
398 | |
399 | public static Settings settings { get; private set; default = null; } |
400 | - //public static CssProvider style_provider { get; private set; default = null; } |
401 | public static Gtk.IconTheme icon_theme { get; set; default = null; } |
402 | + |
403 | private DBusService? dbus_service = null; |
404 | |
405 | - construct { |
406 | - |
407 | - build_data_dir = Build.DATADIR; |
408 | - build_pkg_data_dir = Build.PKGDATADIR; |
409 | - build_release_name = Build.RELEASE_NAME; |
410 | - build_version = Build.VERSION; |
411 | - build_version_info = Build.VERSION_INFO; |
412 | - |
413 | - program_name = "Slingshot"; |
414 | - exec_name = "slingshot-launcher"; |
415 | - app_copyright = "GPLv3"; |
416 | - app_icon = ""; |
417 | - app_launcher = ""; |
418 | - app_years = "2011-2012"; |
419 | - application_id = "net.launchpad.slingshot"; |
420 | - main_url = "https://launchpad.net/slingshot"; |
421 | - bug_url = "https://bugs.launchpad.net/slingshot"; |
422 | - help_url = "https://answers.launchpad.net/slingshot"; |
423 | - translate_url = "https://translations.launchpad.net/slingshot"; |
424 | - |
425 | - about_authors = {"Giulio Collura <random.cpp@gmail.com>", |
426 | - "Andrea Basso <andrea@elementaryos.org"}; |
427 | - about_artists = {"Harvey Cabaguio 'BassUltra' <harveycabaguio@gmail.com>", |
428 | - "Daniel Foré <bunny@go-docky.com>"}; |
429 | - about_translators = "Launchpad Translators"; |
430 | - about_license_type = Gtk.License.GPL_3_0; |
431 | - |
432 | - } |
433 | - |
434 | public Slingshot () { |
435 | - settings = new Settings (); |
436 | - } |
437 | - |
438 | - protected override void activate () { |
439 | - if (get_windows () == null) { |
440 | + Object (code_name: Wingpanel.Indicator.APP_LAUNCHER, |
441 | + display_name: _("Slingshot"), |
442 | + description:_("The app-menu indicator")); |
443 | + } |
444 | + |
445 | + void on_close_indicator () { |
446 | + close (); |
447 | + } |
448 | + |
449 | + public override Gtk.Widget? get_widget () { |
450 | + if (view == null) { |
451 | + settings = new Settings (); |
452 | + |
453 | view = new SlingshotView (); |
454 | - view.set_application (this); |
455 | + |
456 | + view.close_indicator.connect (on_close_indicator); |
457 | |
458 | if (dbus_service == null) |
459 | dbus_service = new DBusService (view); |
460 | - |
461 | - if (!silent) { |
462 | - view.show_slingshot (); |
463 | - } |
464 | - } else { |
465 | - if (view.visible && !silent) |
466 | - view.hide (); |
467 | - else |
468 | - view.show_slingshot (); |
469 | - } |
470 | - silent = false; |
471 | - } |
472 | - |
473 | - static const OptionEntry[] entries = { |
474 | - { "silent", 's', 0, OptionArg.NONE, ref silent, "Launch Slingshot as a background process without it appearing visually.", null }, |
475 | - { "command-mode", 'c', 0, OptionArg.NONE, ref command_mode, "This feature is not implemented yet. When it is, description will be changed.", null }, |
476 | - { null } |
477 | - }; |
478 | - |
479 | - public static int main (string[] args) { |
480 | - if (args.length > 1) { |
481 | - var context = new OptionContext (""); |
482 | - context.add_main_entries (entries, "slingshot"); |
483 | - context.add_group (Gtk.get_option_group (true)); |
484 | - |
485 | - try { |
486 | - context.parse (ref args); |
487 | - } catch (Error e) { |
488 | - print (e.message + "\n"); |
489 | - } |
490 | - } |
491 | - |
492 | - var app = new Slingshot (); |
493 | - |
494 | - return app.run (args); |
495 | - } |
496 | - |
497 | -} |
498 | + } |
499 | + |
500 | + return view; |
501 | + } |
502 | + |
503 | + public override Gtk.Widget get_display_widget () { |
504 | + if (indicator_label == null) |
505 | + indicator_label = new Gtk.Label ("Applications"); |
506 | + |
507 | + visible = true; |
508 | + |
509 | + return indicator_label; |
510 | + } |
511 | + |
512 | + public override void opened () { |
513 | + if (view != null) |
514 | + view.show_slingshot (); |
515 | + } |
516 | + |
517 | + public override void closed () { |
518 | + // TODO: Do we need to do anyhting here? |
519 | + } |
520 | + |
521 | +} |
522 | + |
523 | +public Wingpanel.Indicator get_indicator (Module module) { |
524 | + debug ("Activating Slingshot"); |
525 | + var indicator = new Slingshot.Slingshot (); |
526 | + return indicator; |
527 | +} |
528 | + |
529 | |
530 | === modified file 'src/SlingshotView.vala' |
531 | --- src/SlingshotView.vala 2015-02-01 15:13:15 +0000 |
532 | +++ src/SlingshotView.vala 2015-11-27 00:35:16 +0000 |
533 | @@ -24,8 +24,7 @@ |
534 | SEARCH_VIEW |
535 | } |
536 | |
537 | - public class SlingshotView : Granite.Widgets.CompositedWindow { |
538 | - |
539 | + public class SlingshotView : Gtk.Grid { |
540 | // Widgets |
541 | public Gtk.SearchEntry search_entry; |
542 | public Gtk.Stack stack; |
543 | @@ -42,8 +41,6 @@ |
544 | public Gtk.Stack main_stack; |
545 | public Gtk.Box content_area; |
546 | private Gtk.EventBox event_box; |
547 | - private Gtk.Popover popover; |
548 | - private Gtk.Grid ref_grid; |
549 | |
550 | public Backend.AppSystem app_system; |
551 | private Gee.ArrayList<GMenu.TreeDirectory> categories; |
552 | @@ -77,16 +74,11 @@ |
553 | |
554 | private int primary_monitor = 0; |
555 | |
556 | + Gdk.Screen screen; |
557 | + |
558 | + public signal void close_indicator (); |
559 | + |
560 | public SlingshotView () { |
561 | - |
562 | - // Window properties |
563 | - this.title = "Slingshot"; |
564 | - this.skip_pager_hint = true; |
565 | - this.skip_taskbar_hint = true; |
566 | - this.set_keep_above (true); |
567 | - this.set_type_hint (Gdk.WindowTypeHint.MENU); |
568 | - this.focus_on_map = true; |
569 | - |
570 | // Have the window in the right place |
571 | read_settings (true); |
572 | |
573 | @@ -98,6 +90,8 @@ |
574 | categories = app_system.get_categories (); |
575 | apps = app_system.get_apps (); |
576 | |
577 | + screen = get_screen (); |
578 | + |
579 | primary_monitor = screen.get_primary_monitor (); |
580 | Gdk.Rectangle geometry; |
581 | screen.get_monitor_geometry (primary_monitor, out geometry); |
582 | @@ -132,7 +126,7 @@ |
583 | default_columns--; |
584 | } |
585 | |
586 | - while ((calculate_grid_height () >= 2 * geometry.width / 3)) { |
587 | + while ((calculate_grid_height () >= 2 * geometry.height / 3)) { |
588 | default_rows--; |
589 | } |
590 | |
591 | @@ -216,14 +210,7 @@ |
592 | event_box.add (container); |
593 | // Add the container to the dialog's content area |
594 | |
595 | - ref_grid = new Gtk.Grid (); |
596 | - this.add (ref_grid); |
597 | - |
598 | - popover = new Gtk.Popover (ref_grid); |
599 | - popover.add (event_box); |
600 | - popover.set_position (Gtk.PositionType.TOP); |
601 | - |
602 | - this.show.connect (() => popover.show ()); |
603 | + this.add (event_box); |
604 | |
605 | if (Slingshot.settings.use_category) |
606 | set_modality (Modality.CATEGORY_VIEW); |
607 | @@ -232,40 +219,12 @@ |
608 | debug ("Ui setup completed"); |
609 | } |
610 | |
611 | - public void grab_device () { |
612 | - var display = Gdk.Display.get_default (); |
613 | - var pointer = display.get_device_manager ().get_client_pointer (); |
614 | - var keyboard = pointer.associated_device; |
615 | - var keyboard_status = Gdk.GrabStatus.SUCCESS; |
616 | - |
617 | - if (keyboard != null && keyboard.input_source == Gdk.InputSource.KEYBOARD) { |
618 | - keyboard_status = keyboard.grab (get_window (), Gdk.GrabOwnership.NONE, true, |
619 | - Gdk.EventMask.KEY_PRESS_MASK | Gdk.EventMask.KEY_RELEASE_MASK, |
620 | - null, Gdk.CURRENT_TIME); |
621 | - } |
622 | - |
623 | - var pointer_status = pointer.grab (get_window (), Gdk.GrabOwnership.NONE, true, |
624 | - Gdk.EventMask.SMOOTH_SCROLL_MASK | Gdk.EventMask.BUTTON_PRESS_MASK | |
625 | - Gdk.EventMask.BUTTON_RELEASE_MASK | Gdk.EventMask.POINTER_MOTION_MASK, |
626 | - null, Gdk.CURRENT_TIME); |
627 | - |
628 | - if (pointer_status != Gdk.GrabStatus.SUCCESS || keyboard_status != Gdk.GrabStatus.SUCCESS) { |
629 | - // If grab failed, retry again. Happens when "Applications" button is long held. |
630 | - Timeout.add (100, () => { |
631 | - if (visible) |
632 | - grab_device (); |
633 | - |
634 | - return false; |
635 | - }); |
636 | - } |
637 | - } |
638 | - |
639 | public override bool button_press_event (Gdk.EventButton event) { |
640 | var pointer = Gdk.Display.get_default ().get_device_manager ().get_client_pointer (); |
641 | |
642 | // get_window_at_position returns null if the window belongs to another application. |
643 | if (pointer.get_window_at_position (null, null) == null) { |
644 | - hide (); |
645 | + close_indicator (); |
646 | |
647 | return true; |
648 | } |
649 | @@ -273,21 +232,6 @@ |
650 | return false; |
651 | } |
652 | |
653 | - public override void get_preferred_width (out int minimum_width, out int natural_width) { |
654 | - popover.get_preferred_width (out minimum_width, out natural_width); |
655 | - } |
656 | - |
657 | - public override void get_preferred_height (out int minimum_height, out int natural_height) { |
658 | - popover.get_preferred_height (out minimum_height, out natural_height); |
659 | - } |
660 | - |
661 | - public override bool map_event (Gdk.EventAny event) { |
662 | - if (visible) |
663 | - grab_device (); |
664 | - |
665 | - return false; |
666 | - } |
667 | - |
668 | private bool hotcorner_trigger (Gdk.EventMotion event) { |
669 | if (can_trigger_hotcorner && event.x_root <= 0 && event.y_root <= 0) { |
670 | Gdk.Display.get_default ().get_device_manager ().get_client_pointer ().ungrab (event.time); |
671 | @@ -309,11 +253,6 @@ |
672 | event_box.key_press_event.connect (on_key_press); |
673 | search_entry.key_press_event.connect (search_entry_key_press); |
674 | // Showing a menu reverts the effect of the grab_device function. |
675 | - search_entry.populate_popup.connect ((menu) => { |
676 | - menu.hide.connect (() => { |
677 | - grab_device (); |
678 | - }); |
679 | - }); |
680 | search_entry.search_changed.connect (() => { |
681 | if (modality != Modality.SEARCH_VIEW) |
682 | set_modality (Modality.SEARCH_VIEW); |
683 | @@ -322,7 +261,8 @@ |
684 | search_entry.grab_focus (); |
685 | search_entry.activate.connect (search_entry_activated); |
686 | |
687 | - search_view.app_launched.connect (() => hide ()); |
688 | + // FIXME: signals chain up is not supported |
689 | + search_view.app_launched.connect (() => { close_indicator (); }); |
690 | |
691 | // This function must be after creating the page switcher |
692 | populate_grid_view (); |
693 | @@ -353,18 +293,6 @@ |
694 | if (Slingshot.settings.screen_resolution != @"$(geometry.width)x$(geometry.height)") { |
695 | setup_size (); |
696 | } |
697 | - reposition (); |
698 | - }); |
699 | - screen.monitors_changed.connect (() => { |
700 | - reposition (); |
701 | - }); |
702 | - |
703 | - get_style_context ().notify["direction"].connect (() => { |
704 | - reposition (); |
705 | - }); |
706 | - |
707 | - popover.hide.connect (() => { |
708 | - hide (); |
709 | }); |
710 | |
711 | // check for change in gala settings |
712 | @@ -383,22 +311,6 @@ |
713 | } |
714 | } |
715 | |
716 | - private void reposition () { |
717 | - debug("Repositioning"); |
718 | - |
719 | - Gdk.Rectangle monitor_dimensions; |
720 | - screen.get_monitor_geometry (this.screen.get_primary_monitor(), out monitor_dimensions); |
721 | - if (get_style_context ().direction == Gtk.TextDirection.LTR) { |
722 | - popover.set_pointing_to ({36, 0, 0, 0}); |
723 | - // Added 36px to y to be aligned with other popovers. |
724 | - move (monitor_dimensions.x, monitor_dimensions.y + 36); |
725 | - } else { |
726 | - popover.set_pointing_to ({ref_grid.get_window ().get_width () - 36, 0, 0, 0}); |
727 | - // Added 36px to y to be aligned with other popovers. |
728 | - move (monitor_dimensions.x + monitor_dimensions.width - this.get_window ().get_width (), monitor_dimensions.y + 36); |
729 | - } |
730 | - } |
731 | - |
732 | private void change_view_mode (string key) { |
733 | switch (key) { |
734 | case "1": // Normal view |
735 | @@ -413,7 +325,7 @@ |
736 | // Handle super+space when the user is typing in the search entry |
737 | private bool search_entry_key_press (Gdk.EventKey event) { |
738 | if ((event.keyval == Gdk.Key.space) && ((event.state & Gdk.ModifierType.SUPER_MASK) != 0)) { |
739 | - hide (); |
740 | + close_indicator (); |
741 | return true; |
742 | } |
743 | |
744 | @@ -425,16 +337,18 @@ |
745 | return true; |
746 | } |
747 | |
748 | - return false; |
749 | + return on_key_press (event); |
750 | } |
751 | |
752 | private void search_entry_activated () { |
753 | if (modality == Modality.SEARCH_VIEW) { |
754 | if (search_view.launch_selected ()) |
755 | - hide (); |
756 | + close_indicator (); |
757 | } else { |
758 | +/* TODO |
759 | if (get_focus () as Widgets.AppEntry != null) // checking the selected widget is an AppEntry |
760 | ((Widgets.AppEntry) get_focus ()).launch_app (); |
761 | +*/ |
762 | } |
763 | } |
764 | |
765 | @@ -462,7 +376,7 @@ |
766 | switch (key) { |
767 | case "F4": |
768 | if ((event.state & Gdk.ModifierType.MOD1_MASK) != 0) { |
769 | - hide (); |
770 | + close_indicator (); |
771 | } |
772 | |
773 | break; |
774 | @@ -471,7 +385,7 @@ |
775 | if (search_entry.text.length > 0) { |
776 | search_entry.text = ""; |
777 | } else { |
778 | - hide (); |
779 | + close_indicator (); |
780 | } |
781 | |
782 | return true; |
783 | @@ -481,10 +395,12 @@ |
784 | case "KP_Enter": |
785 | if (modality == Modality.SEARCH_VIEW) { |
786 | if (search_view.launch_selected ()) |
787 | - hide (); |
788 | + close_indicator (); |
789 | } else { |
790 | +/* TODO |
791 | if (get_focus () as Widgets.AppEntry != null) // checking the selected widget is an AppEntry |
792 | ((Widgets.AppEntry)get_focus ()).launch_app (); |
793 | +*/ |
794 | } |
795 | return true; |
796 | |
797 | @@ -698,14 +614,12 @@ |
798 | public void show_slingshot () { |
799 | search_entry.text = ""; |
800 | |
801 | - reposition (); |
802 | - show_all (); |
803 | - popover.show_all (); |
804 | - present (); |
805 | - |
806 | +/* TODO |
807 | set_focus (null); |
808 | +*/ |
809 | + |
810 | search_entry.grab_focus (); |
811 | - //This is needed in order to not animate if the previous view was the search view. |
812 | + // This is needed in order to not animate if the previous view was the search view. |
813 | view_selector_revealer.transition_type = Gtk.RevealerTransitionType.NONE; |
814 | stack.transition_type = Gtk.StackTransitionType.NONE; |
815 | set_modality ((Modality) view_selector.selected); |
816 | @@ -826,7 +740,7 @@ |
817 | grid_view.clear (); |
818 | foreach (Backend.App app in app_system.get_apps_by_name ()) { |
819 | var app_entry = new Widgets.AppEntry (app); |
820 | - app_entry.app_launched.connect (() => hide ()); |
821 | + app_entry.app_launched.connect (() => close_indicator ()); |
822 | grid_view.append (app_entry); |
823 | app_entry.show_all (); |
824 | } |
825 | @@ -860,6 +774,7 @@ |
826 | } |
827 | |
828 | private void normal_move_focus (int delta_column, int delta_row) { |
829 | +/* TODO |
830 | if (get_focus () as Widgets.AppEntry != null) { // we check if any AppEntry has focus. If it does, we move |
831 | if (column_focus + delta_column < 0 || row_focus + delta_row < 0) |
832 | return; |
833 | @@ -891,6 +806,7 @@ |
834 | grid_view.get_child_at (column_focus, 0).grab_focus (); |
835 | row_focus = 0; |
836 | } |
837 | +*/ |
838 | } |
839 | |
840 | private void category_move_focus (int delta_column, int delta_row) { |
841 | @@ -944,6 +860,8 @@ |
842 | category_column_focus = 0; |
843 | category_row_focus = 0; |
844 | } |
845 | + |
846 | + |
847 | } |
848 | |
849 | } |
850 | |
851 | === modified file 'src/Widgets/AppEntry.vala' |
852 | --- src/Widgets/AppEntry.vala 2015-11-03 15:36:28 +0000 |
853 | +++ src/Widgets/AppEntry.vala 2015-11-27 00:35:16 +0000 |
854 | @@ -118,7 +118,6 @@ |
855 | this.drag_end.connect ( () => { |
856 | this.dragging = false; |
857 | var slingshot_app = (Gtk.Application) GLib.Application.get_default (); |
858 | - ((SlingshotView)slingshot_app.active_window).grab_device (); |
859 | }); |
860 | |
861 | this.drag_data_get.connect ( (ctx, sel, info, time) => { |
862 | @@ -162,7 +161,6 @@ |
863 | // Showing a menu reverts the effect of the grab_device function. |
864 | menu.hide.connect (() => { |
865 | var slingshot_app = (Gtk.Application) GLib.Application.get_default (); |
866 | - ((SlingshotView)slingshot_app.active_window).grab_device (); |
867 | }); |
868 | |
869 | foreach (var action in application.actions) { |
870 | |
871 | === modified file 'src/Widgets/CategoryView.vala' |
872 | --- src/Widgets/CategoryView.vala 2015-01-17 23:56:32 +0000 |
873 | +++ src/Widgets/CategoryView.vala 2015-11-27 00:35:16 +0000 |
874 | @@ -96,7 +96,7 @@ |
875 | |
876 | private void add_app (Backend.App app) { |
877 | var app_entry = new AppEntry (app); |
878 | - app_entry.app_launched.connect (() => view.hide ()); |
879 | + app_entry.app_launched.connect (() => view.close_indicator ()); |
880 | app_view.append (app_entry); |
881 | app_view.show_all (); |
882 |