Compare commits

...
681 Commits
Author SHA1 Message Date
Gokhan Simsek 8b812ffba2 Adding patch versioning changes 2017-06-07 09:18:38 +03:00
Gokhan Simsek 14d3caaa7a Attempt to prevent MAC OS Sierra crash related to updates notification bar 2017-06-07 08:57:30 +03:00
Gokhan Simsek 1124ec22c6 Merge branch 'master' into Rebranding 2017-04-26 11:01:25 +03:00
Gokhan Simsek ab367fc890 Change to fix a merge error 2017-04-26 11:01:04 +03:00
Gokhan Simsek 22c632794f Merge branch 'master' of https://github.com/paralect/robomongo 2017-04-26 10:40:39 +03:00
Gökhan Simsek 0fefd6d443 Update README.md
For version 1.0
2017-04-21 17:15:29 +03:00
Gokhan Simsek 89f24ea07c Updating changelog for 1.0 release 2017-04-21 09:04:07 +03:00
Gokhan Simsek d2a11bc0f2 UpdatesBar: Making the height of bar %30 bigger for MAC 2017-04-20 15:08:21 +03:00
Gokhan Simsek 575455b10e Removing the changes done in the previous commit "e858c68: Setting unified light blue color for all links in the application" 2017-04-20 12:45:58 +03:00
Gokhan Simsek e858c68fa6 Setting unified light blue color for all links in the application 2017-04-20 10:55:49 +03:00
Gokhan Simsek 2df26740c6 WelcomeTab: Changing background color from grey to base (white) 2017-04-20 10:52:15 +03:00
Gokhan Simsek 39209ee2b8 WelcomeTab: Making left (What's New) section's header dynamically read from remote server. 2017-04-20 10:50:31 +03:00
Gokhan Simsek 3e9cd11aa3 WelcomeTab: Fix to solve low resolution image problem 2017-04-12 09:43:54 +03:00
Gokhan Simsek f91b2c4a2f UpdatesBar: Adding fix for the problem where some menu items were still shown when focus changes to welcome tab from other shell tabs. Updating softwareID to 8 to receive Robomongo related updates. 2017-04-11 16:02:18 +03:00
Gökhan Simsek a2b1a07a4f Update RuntimeDependencies.md
Adding more debugging commands and options for Linux
2017-04-05 11:25:50 +03:00
Gokhan Simsek 82b5f434f9 Adding fix to solve problem where program was failing to start due to relocation errors during runtime shared library search on Linux 2017-04-05 09:33:46 +03:00
Gokhan Simsek a55b7398da EulaDialog: Adding first launch size which is almost the half of primary screen width and height 2017-03-30 12:54:44 +03:00
Gokhan Simsek d9b37b2094 Rebranding from RoboM to Robomongo 2017-03-30 11:26:50 +03:00
Gokhan Simsek 230c5f37bc ConnectionBasicTab: Adding fix for the cosmetic issue when creating new replica set connection, plus and minus buttons alignment issue for MAC and Linux. 2017-03-29 16:08:18 +03:00
Gokhan Simsek 561bdbf2b4 Changing shortcut for "Open/Refresh Welcome Tab" to "CTRL+SHIFT+W". Disabling File, Open, Save, Save As menu items when there is only Welcome Tab. 2017-03-27 09:29:10 +03:00
Gokhan Simsek 0bafec7ce5 To fix the vendor string on Windows programs list 2017-03-27 09:23:28 +03:00
Gokhan Simsek 34dca72a09 Fix: #501: Display Dates in - Local Timezone shows wrong date 2017-03-27 09:22:36 +03:00
Gokhan Simsek 428b576acf Fix: #1309: Time zone shown as "000:00" when UTC +00:00 is used as local time zone 2017-03-23 14:26:06 +03:00
Gokhan Simsek f26a08d9bc Fix: #1159: Timestamp value is represented incorrectly 2017-03-23 14:17:39 +03:00
Gokhan Simsek 92ae9affd6 ReplicaSets: #1302: Some enhancements and more informational error messages for the issue where same set name is used with different members. 2017-03-22 12:06:30 +03:00
Gokhan Simsek d52cd2e0c0 ReplicaSets: Adding "Set Name" option into connection basic tab UI and "setNameUserEntered" parameter into config file. 2017-03-21 18:41:32 +03:00
Gokhan Simsek e11cbd1a26 ReplicaSets: Renaming config file parameter "setName" as "cachedSetName" 2017-03-21 14:53:00 +03:00
Gokhan Simsek 4e58a6a6b4 EulaDialog: Re-enabling first license page for windows, disabling second email form page for linux 2017-03-21 09:44:32 +03:00
Gokhan Simsek e01de676fa ReplicaSets: #1302 - To avoid the problem when same set name is used with different members, which is not supported configuration, Robomongo might connect to wrong set. 2017-03-20 09:35:25 +03:00
Gokhan Simsek 9e43802e2a WelcomeTab: Using http for file downloads on Linux due to crashes and unstable behaviors 2017-03-17 10:09:12 +03:00
Gokhan Simsek f02f4f6116 Re-enabling first start connections dialog which was disabled for development purposes 2017-03-16 19:03:39 +03:00
Gokhan Simsek 306689f30d EulaDialog: Removing email form page for Linux 2017-03-16 18:39:43 +03:00
Gökhan Simsek 43bf28968b Update BuildingRobomongo.md 2017-03-15 13:13:13 +03:00
Gökhan Simsek df6e9a57d8 Updating Centos build steps 2017-03-13 11:51:31 +03:00
Gokhan Simsek cbcafd28c9 Minor re-factoring 2017-03-10 14:57:55 +03:00
Gokhan Simsek 4f181ec460 UpdatesBar: Adding functionality to auto-adjust height for updates label to fix issues with set word wrap problems. EulaDialog: Adding one space before main body text. 2017-03-10 11:39:27 +03:00
Gokhan Simsek a72583df76 Code Review: All changes between 1.0.0 (this commit) and 1.0.0-RC1 (commit 496f5c2, 1 Feb 2017). No behavioral changes. 2017-03-09 18:27:45 +03:00
Gokhan Simsek 8f508e5e0f Removing connection setting's program-lifetime uniqueID solution which was replaced with persistent (config. file) UUID solution 2017-03-06 19:49:38 +03:00
Gokhan Simsek 536f75fdb4 WelcomeTab: Making 'all logs button' fully left aligned for MAC 2017-03-06 16:00:13 +03:00
Gokhan Simsek f37a070eda WelcomeTab: Showing blog section widgets after loading what's new section widgets. 2017-03-06 12:47:41 +03:00
Gokhan Simsek 51c1267bf4 WelcomeTab: Disabling Recent Connections feature on UI, settings file and code. 2017-03-04 16:48:28 +03:00
Gokhan Simsek 6a0b972aac WelcomeTab: Adding 'Connect' tool button plus the clear all action instead of clear all button 2017-03-04 15:05:07 +03:00
Gokhan Simsek 94168f02ca Rebranding: Renaming config folder to robom and config file to robom.json 2017-03-03 19:51:48 +03:00
Gokhan Simsek 88c8dfa26e WelcomeTab: Fixing major problem which was causing cache files not to be saved 2017-03-03 19:49:58 +03:00
Gokhan Simsek c8050f0edd Rebranding: Major renaming to RoboM and 3T Software Labs Ltd 2017-03-03 19:04:16 +03:00
Gokhan Simsek e3d90e63e8 CallHome: Adding "os" parameter to send operating system information 2017-03-03 15:19:14 +03:00
Gokhan Simsek ec20a3e4c9 EulaDialog: Adding code for posting email, name and last name. Removing two checkboxes. 2017-03-03 15:01:34 +03:00
Gokhan Simsek 83bac6b8aa EulaDialog: Not showing first page(license) which is already shown in installer and hiding some buttons on second page on Windows.
Updates Bar: Not showing the bar if the string sent from server is empty.
2017-03-01 15:59:35 +03:00
Gokhan Simsek 34025743a1 Some refactoring for 1.0.0 changes, no functional changes. 2017-03-01 11:26:37 +03:00
Gokhan Simsek ff02a303c7 SettingsManager: Change of config. file path due to re-branding to 3T. 2017-02-28 14:10:53 +03:00
Gokhan Simsek 4552576fa3 Minor change: Fixing MAC build error. Disabling debug code. 2017-02-28 11:33:25 +03:00
Gokhan Simsek cc2c834359 WelcomeTab: Adding dynamic resizing functionality for text, image and blogs sections which are shown 60, 50 and 28 percent of tab respectively. Resizing happens any time tab or main window size is changed by user. 2017-02-28 10:35:45 +03:00
Gokhan Simsek b746aeb729 WelcomeTab: Adding code to show main text and image 50-60 percent and blogs section 30 percent of whole tab width which is calculated and adjusted every time the tab is opened or refreshed. 2017-02-27 20:16:20 +03:00
Gokhan Simsek 686fc08cef Not showing main window updates bar if there is network error. Disabling welcome tab's right click menu. 2017-02-27 15:18:16 +03:00
Gokhan Simsek 9d74aae3f5 WelcomeTab: Polishing left layout when there is no image or/and text is available (no cache, no internet). Not showing "What's New" header when there is no image and no text. 2017-02-27 11:14:51 +03:00
Gokhan Simsek b3fd99eb1b WelcomeTab: Fixing cropped image and text layout problems. Refactoring picture download handler. 2017-02-25 15:43:07 +03:00
Gokhan Simsek bf111c97f1 AboutDialog: Fixing broken robomongo link 2017-02-25 15:40:13 +03:00
Gokhan Simsek ac8d4cf899 Disabling welcome tab's icon for MAC. Adding initial size for setup wizard. 2017-02-24 16:41:33 +03:00
Gokhan Simsek 04bd7fbffa WelcomeTab: Adding a better adjusted icon. 2017-02-24 12:18:48 +03:00
Gokhan Simsek 8167e8d944 Adding functionality import connections to version 1.0.0 2017-02-24 11:49:57 +03:00
Gokhan Simsek 6c3174599a WelcomeTab: Adding functionality when 'Open/Refresh Welcome Tab' menu item is clicked, show/focus and reload welcome tab if tab is not closed; if tab is closed, insert it as first tab. 2017-02-24 11:28:23 +03:00
Gokhan Simsek 76aca637e8 Adding config file directory automatically created with PROJECT_VERSION.
WelcomeTab: Adding load/save to cache for RSS feed XML.
2017-02-24 09:05:39 +03:00
Gokhan Simsek 832d843ea1 WelcomeTab: To achieve much faster loading, adding cache mechanism for what's new section's main picture and text 2017-02-23 11:50:06 +03:00
Gokhan Simsek 9aa702efcd WelcomeTab: Adding underline on mouse hover functionality for blog links 2017-02-22 12:20:04 +03:00
Gokhan Simsek cde6d9eaae Doing unzipping/reading file content in-memory instead of extracting/reading from file. Fixing build error related to qzipreader.h for MAC/Linux. 2017-02-22 10:41:01 +03:00
Gokhan Simsek 91db033e3a WelcomeTab: Adding menu action 'Window > Open Welcome Tab' to be able to re-open/refresh welcome tab when closed. 2017-02-21 16:51:51 +03:00
Gokhan Simsek 7d6c0af7e7 WelcomeTab: Adding functionality to be able to download/load tab's main text, picture and blogs info rss from network. Changing maximum shown blog count to 10. 2017-02-21 16:29:23 +03:00
Gokhan Simsek d0c2345044 CallHome: Adding functionality to unzip 3T zip files (more specifically *.dat files) 2017-02-21 15:27:33 +03:00
Gokhan Simsek 51c4b93bc7 Adding one space at the beginning of updates bar's text. Making updates bar non-movable. Minor white space change in about dialog text. 2017-02-20 12:44:15 +03:00
Gokhan Simsek 242acbcd9d CallHome: Adding "checkForUpdates" flag into config file. Adding related "Check For Udates" menu action into main window "Options" menu. Not checking updates if the related flag is false. 2017-02-19 01:53:36 +03:00
Gokhan Simsek 3079801e0f CallHome: Adding code for first update check (30secs after program start) and hourly periodic update checks. 2017-02-19 01:24:11 +03:00
Gokhan Simsek fdc02400b9 CallHome: Adding updates bar into main window 2017-02-19 00:52:38 +03:00
Gokhan Simsek 499b0da006 CallHome: Adding functionality to find & save AnonymousID from the settings files inside .3T folder 2017-02-18 19:01:18 +03:00
Gokhan Simsek a7caf02ec6 Adding Qt XML module into the project 2017-02-18 18:57:03 +03:00
Gokhan Simsek 70b819700d CallHome: Renaming uuid to anonymousID in config file 2017-02-18 14:24:56 +03:00
Gokhan Simsek b1aca90888 SetupWizard: Adding acceptedEulaVersions array of strings into the config file. and the related functionality. 2017-02-17 18:34:08 +03:00
Gokhan Simsek 73ccc5d3ad SetupWizard: Converting eula dialog into a two page-setup wizard. Minor changes on about dialog. 2017-02-17 10:56:40 +03:00
Gokhan Simsek 47d3fd7db9 AboutDialog: Adding GNU license agreement tab. Updating names according to rebranding. 2017-02-15 17:33:30 +03:00
Gokhan Simsek 56d2d7cb12 Rebranding: Changing executable name to "studio-3t-robo" for Windows and Linux. Updating bin/run for Linux. 2017-02-15 11:55:22 +03:00
Gokhan Simsek ac3c078141 Rebranding: Name changes for MAC build effecting run, install and packing. 2017-02-15 09:54:09 +03:00
Gokhan Simsek 0110a0df8d Rebranding: Renaming from "Studio 3T Robo" and "3T Software Labs" in UI and cmake files. 2017-02-14 16:56:40 +03:00
Gokhan Simsek c1d6b51075 WelcomeTab: Minor change to fix a build error for MAC/Linux. 2017-02-14 14:02:58 +03:00
Gokhan Simsek bc6c6a36da WelcomeTab: Adding left and right vertical layouts. Moving blog posts section to the right side of the page. 2017-02-14 10:45:04 +03:00
Gokhan Simsek 806d76d9a2 WelcomeTab: For much faster image loading, adding capability to save/use cached image files instead of downloading from internet. 2017-02-13 20:16:55 +03:00
Gokhan Simsek a0a476b57d Minor change to fix MAC/Linux build errors. 2017-02-13 19:00:22 +03:00
Gokhan Simsek d5dd24fa51 WelcomeTab: Adding functionality to be able to delete recent connections one by one. 2017-02-12 19:41:08 +03:00
Gokhan Simsek 42561be37e WelcomeTab: Adding underline on mouse hover feature for recent connection items only. 2017-02-09 20:09:55 +03:00
Gokhan Simsek c2fdee9cf8 WelcomeTab: Adding functionality where removing a connection from connections list dialog will remove related recent connection label and related entry from config. file. 2017-02-09 14:02:06 +03:00
Gokhan Simsek 9972ee4113 Improving connection setting's program-lifetime uniqueID by replacing with persistent (config. file) UUID solution used in WelcomeTab and replica set cached set name feature. 2017-02-09 12:45:30 +03:00
Gokhan Simsek 846b0ce9fd WelcomeTab: Adding functionality to load/save recent connections from/into config. file. 2017-02-08 19:57:43 +03:00
Gokhan Simsek fe78fe4416 WelcomeTab: Adding first working version of Recent Connections feature without saving into config. file. 2017-02-08 12:33:54 +03:00
Gokhan Simsek 54d03ae788 WelcomeTab: Adding and showing an image downloaded from an internet URL. 2017-02-06 20:59:55 +03:00
Gokhan Simsek 55f895a7f5 Adding Qt Network module into cmake project to use in Welcome Tab. 2017-02-06 20:55:32 +03:00
Gokhan Simsek 22b557605b WelcomeTab: Adding first basic working version with static data and with 'What's New' and 'Blog Posts' sections 2017-02-06 12:25:45 +03:00
Gokhan Simsek 16ed6e844a EulaDialog: Adding UUID generation, eulaAccepted flag & UUID string into config file and related functionality. 2017-02-04 14:29:05 +03:00
Gokhan Simsek d96b3de97a Updating version to 1.0.0 and main window title to 1.0 2017-02-04 10:30:20 +03:00
Gokhan Simsek bd0436ffa0 EulaDialog: Adding first basic working version 2017-02-04 10:21:16 +03:00
Gokhan Simsek 496f5c256f Minor update for change log. 2017-02-01 16:43:51 +03:00
Gökhan Simsek 6617d07e1e Update README.md 2017-02-01 16:42:20 +03:00
Gökhan Simsek 99837f0b8f Update README.md 2017-02-01 16:39:53 +03:00
Gokhan Simsek 6ed27b7b83 Updating change log for 1.0-RC1 2017-02-01 15:24:05 +03:00
Gokhan Simsek 3247fd77d6 Replica Set: To fix the problem where shell tab does not update primary address when checked after 10 minutes primary changed. 2017-02-01 13:21:29 +03:00
Gokhan Simsek f9b9679b5e ReplicaSet: Minor text adjustment for test connection (diagnostics) dialog 2017-01-30 11:56:32 +03:00
Gokhan Simsek 685d264ab7 Updating icon for 'Open Shell' menu item for MAC due to alignment problems. 2017-01-26 18:03:18 +03:00
Gokhan Simsek 2355f0cb54 Updating main window title into short version "Robomongo 1.0-RC1" 2017-01-26 11:28:29 +03:00
Gokhan Simsek 68674fb1c2 ReplicaSet: Updating member add/remove buttons to support MAC style, making them absolute right aligned, decreasing vertical spacing between columns for better look. 2017-01-25 13:25:25 +03:00
Gokhan Simsek 0e1a942ecd Removing one improvement because it breaks 'show log' functionality. 2017-01-24 11:28:34 +03:00
Gokhan Simsek d01ce11e47 ReplicaSet: Clearing cached set name when a connections settings is changed & saved. Adding set's first member's hostname & port info into 'test' connection dialog. 2017-01-24 09:13:25 +03:00
Gokhan Simsek eee9e1cbd4 ReplicaSet: Always expand replica set folder, if an operation failed due unreachable primary. 2017-01-22 18:43:53 +03:00
Gokhan Simsek 54e2da3dc4 ReplicaSet: Adding additional check to detect & give error if any of the replica set member items does not contain ":" character between hostname and port after user clicks save on Connection Settings dialog. 2017-01-20 19:06:10 +03:00
Gokhan Simsek 6887850eae ReplicaSet: For cloned connections from connections dialog, cached set name should be set to empty string. 2017-01-20 18:50:35 +03:00
Gokhan Simsek ab16885112 ReplicaSet: Set replica set folder not-expanded after first connection, not-expanded after connection refresh, expanded after replica set folder user-manual-extending and after replica set folder context menu 'refresh' action. 2017-01-20 18:33:48 +03:00
Gokhan Simsek 5f3ff06403 Code Review: All changes between 1.0.0-RC1 (this commit) and 0.9.0 Final (commit 0786489, 15 october). No behavioral changes. 2017-01-20 16:35:06 +03:00
Gokhan Simsek 81f872fdaf Disabling unfinished export URI connection string feature 2017-01-17 18:38:55 +03:00
Gokhan Simsek 0ec739a2b7 Fix for the problem where all delete/remove document related operations were causing all related/unrelated tabs to re-run. 2017-01-17 18:09:11 +03:00
Gokhan Simsek 752bc51452 Implementing more maintainable solution to handle import using const static list of config file & import function pairs. 2017-01-17 17:37:29 +03:00
Gokhan Simsek 3a23c62070 Changing import behavior to find & import only from the latest version instead of importing from all old versions one by one. 2017-01-17 17:30:50 +03:00
Gokhan Simsek 4512b4c998 ReplicaSet: Adding more handlers for replica set item edit. Auto-remove white space; auto-delete item from widget if item text is empty; auto-remove non-numeric characters from port sub string; if there is no numeric character in port string, auto-add 27017 as default port number. 2017-01-17 10:39:26 +03:00
Gokhan Simsek 684d2abcdc ReplicaSet: Adding duplicate member checker & error message and adding plus and minus icons for replica set member add/remove. Adding 'Attributes' header into connections list dialog. Removing find set button and read preference from connection basic tab. 2017-01-16 16:16:39 +03:00
Gokhan Simsek db3eb8872c Updating Robomongo version to 1.0.0-RC1. Adding plus and minus sign icons for replica set member add/remove. 2017-01-16 15:29:29 +03:00
Gokhan Simsek 885f388201 Minor changes to clear MAC build warnings. 2017-01-12 11:17:53 +03:00
Gokhan Simsek 9431f7f2a8 ReplicaSet: Minor changes to fix some build errors for Linux. 2017-01-11 10:52:37 +03:00
Gokhan Simsek f7752fd2b7 ReplicaSet: Handle long lasting (e.g. overnight) connections which causes replica set monitor to be null. 2017-01-10 11:53:49 +03:00
Gokhan Simsek e4b2c2262e ReplicaSet: Minor change to fix a build error on MAC and Linux. 2017-01-06 23:16:51 +03:00
Gokhan Simsek 9a31b6259d Improving 'remove document' related operations triggered both from explorer and from result widget: Implementing ONE, MULTI and ALL logic, single error window and better logging. Improving Insert Document operation. 2017-01-05 16:38:08 +03:00
Gokhan Simsek 995abe9401 ReplicaSet: Improving re-run of an existing tab for set primary changes. In some cases, need to find the error manually and return error. 2017-01-05 10:10:49 +03:00
Gokhan Simsek a13b39907b ReplicaSet: Improving handler for 'Remove All Documents' and 'Remove Document' for single server and replica sets. Improved logging for fail and success cases. 2017-01-05 10:08:06 +03:00
Gökhan Simsek c64fec22ee Update BuildingRobomongo.md 2017-01-04 10:40:59 +03:00
Gokhan Simsek dd1d835dfe ReplicaSet refactoring on various modules. No behavioral changes. 2017-01-03 12:25:25 +03:00
Gokhan Simsek 5a78becc6f ReplicaSet refactoring: Restructuring mainly MongoWorker and some other modules. No behavioral changes. 2017-01-02 21:33:46 +03:00
Gokhan Simsek f598e62d1c ReplicaSet refactoring: Restructuring MongoServer for better readability. Adding new modules 'string_operations' and 'common' as utility libraries. 2017-01-02 13:16:06 +03:00
Gokhan Simsek b8ae4d0fc5 ReplicaSet: Implementing cached set name feature for 2 times faster first connections. 2017-01-02 10:35:10 +03:00
Gokhan Simsek 5403c16f48 ReplicaSet: Fix for an issue related to saving empty replica set member list. Fix for the issue where connections list was still showing 'Replica Set' after changing connection type from replica set to single server. 2016-12-30 11:13:13 +03:00
Gokhan Simsek 3d162032f4 ReplicaSet: Make replica set member addition smarter than expected by auto incrementing the port and using the last entered hostname by user. 2016-12-30 10:47:09 +03:00
Gokhan Simsek c591a7a91e ReplicaSet: Adding 'keep alive' functionality for replica set connections. 2016-12-29 11:44:34 +03:00
Gokhan Simsek fd2c476ae5 Disabling new create connection dialog, reverting back to original. 2016-12-28 11:48:43 +03:00
Gokhan Simsek 42bf58a0b5 ReplicaSet: Improvement for faster connection refresh by disabling unnecessary replica set refresh. Disabling settings save in MongoServer. Decreasing replica set refresh time to 2 seconds. 2016-12-23 11:19:00 +03:00
Gokhan Simsek 4d09e1b5a5 Fix for the problem where connections list comes empty if config file or it's directory do not exist (connections were imported only after second program opening) 2016-12-21 15:09:16 +03:00
Gokhan Simsek d825b065f2 ReplicaSet: Fix for the problem where primary unreachable case for one replica set connection was causing other unrelated replica set connections to go offline. 2016-12-21 14:25:51 +03:00
Gokhan Simsek 13428b5ed6 ReplicaSet: Removing unused context menu item "Refresh" for replica set member items on explorer widget. 2016-12-21 14:23:59 +03:00
Gokhan Simsek 521d1789bc Improved logging for connection establish & refresh server fail and success cases. 2016-12-21 10:20:46 +03:00
Gokhan Simsek f64257ae86 Improving handler for 'Create Database' for single server and replica sets.
Moving 'refresh databases' from event request to event response.
Improved logging for fail and success cases.
2016-12-19 20:53:38 +03:00
Gokhan Simsek d228ca1c4b Minor refactoring due to failing MAC build. 2016-12-19 19:33:05 +03:00
Gokhan Simsek 690f21e9ae Improving handler for 'Drop Database' for single server and replica sets. For replica set connections, it triggers replica set refresh on failure.
Moving 'refresh databases' from event request to event response. Improved logging for fail and success cases.
2016-12-19 18:23:14 +03:00
Gokhan Simsek 743710a9f0 Improving handler for 'Refresh Users' for single server and replica sets. For replica set connections, it triggers replica set refresh on failure.
Improved logging for fail and success cases.
2016-12-19 11:46:09 +03:00
Gokhan Simsek ba29971e20 Improving handler for 'Refresh Functions' for single server and replica sets. For replica set connections, it triggers replica set refresh on failure.
Improved logging for fail and success cases.
2016-12-19 11:37:17 +03:00
Gokhan Simsek f49e492a92 Improving handler for 'Refresh Collections' for single server and replica sets. For replica set connections, it triggers replica set refresh on failure.
Improved logging for fail and success cases.
2016-12-19 11:27:05 +03:00
Gokhan Simsek 1c62abaec0 Adding response handler for 'Drop User' for single server and replica sets. For replica set connections, it triggers replica set refresh on failure.
Moving 'refresh users' from event request to event response. Improved logging for fail and success cases.
2016-12-19 11:01:32 +03:00
Gokhan Simsek 1940a03a61 Improving handler for 'Create User' and 'Edit User' operations for single server and replica sets. For replica set connections, it triggers replica set refresh on failure.
Moving 'refresh users' from event request to event response. Improved logging for fail and success cases.
2016-12-19 09:59:18 +03:00
Gokhan Simsek 9bee2f443f C++11 transition, automatic clean up for possible memory leak. 2016-12-16 10:10:24 +03:00
Gokhan Simsek 1cf331f83c Fix for SSH connection issue. 2016-12-16 09:59:27 +03:00
Gokhan Simsek 685b835886 Adding response handler for 'Drop Function' for single server and replica sets. For replica set connections, it triggers replica set refresh on failure.
Moving 'refresh functions' from event request to event response. Improved logging for fail and success cases.
2016-12-15 17:48:32 +03:00
Gokhan Simsek ab2494a6ba Adding response handler for 'Create Function' and 'Update Function' operations for single server and replica sets. For replica set connections, it triggers replica set refresh on failure.
Moving 'refresh functions' from event request to event response. Improved logging for fail and success cases.
2016-12-15 17:21:11 +03:00
Gokhan Simsek 3ae0d61bd5 Improving 'Create Collection' for single server and replica sets. For replica set connections, it triggers replica set refresh on failure.
Handling create attempt of already-existing collection names.
Moving 'refresh collections' from event request to event response.
Improved logging for fail and success cases.
2016-12-14 11:53:53 +03:00
Gokhan Simsek f4e11b623f Improving response handler for 'DropCollection' which for replica set connections triggers replica set refresh on failure. Adding code to handle drop attempt of non-existing collections.
Moving 'refresh collections' from event request to event response.
Improved logging for fail and success cases.
2016-12-11 19:54:40 +03:00
Gokhan Simsek 938479e43f DuplicateCollection: Adding code to handle and show error for the case where duplicating a collection with a collection name which already exists finishes silently. 2016-12-11 18:16:26 +03:00
Gokhan Simsek 31ec650659 Implementing response handler for 'Duplicate Collection' which works for single server connections expectedly and for replica set connections triggers replica set refresh on failure.
Moving 'refresh collections' from event request to event response.
Improved logging for fail and success cases.
2016-12-11 18:09:15 +03:00
Gokhan Simsek 87c13ff74a Implementing global response handler for 'Rename Collection' which works for single server connections expectedly and for replica set connections triggers replica set refresh on failure.
Moving 'refresh collections' from event request to event response.
Improved logging for fail and success cases.
2016-12-11 15:50:48 +03:00
Gokhan Simsek 2c820daae4 #1256: Fix for in-progress widget not centered for "Update Documents/Remove Documents" context menu actions 2016-12-09 12:39:25 +03:00
Gokhan Simsek 3b0cdc0caa #1236: Fix for the two global problems where insert or update documents in one tab was causing auto reloading of other tabs and also multiple error windows to popup for each tab opened from same root connection.
ReplicaSets: Adding better handling for insert document failures for both originated from explorer collection context menu and from output document results context menu.
2016-12-08 20:15:23 +03:00
Gokhan Simsek 85570dd61d Adding adjusted log level prefix strings into logger. 2016-12-06 14:59:27 +03:00
Gokhan Simsek 400d3670be ReplicaSets: Adding refresh replica set on error feature for insert document operation. 2016-12-06 14:55:52 +03:00
Gokhan Simsek 45c93a7f3e ReplicaSets: Fixing an error and improving connection between tabs and explorerServerItem's mongo server in order to receive ReplicaSetRefreshed events correctly. 2016-12-06 10:26:20 +03:00
Gokhan Simsek 6ca3f492fe Adding code to handle global problem where re-run of existing shell tab with reachable server fails due to null mongo scope which is result when new shell opened before when server is unreachable. 2016-12-04 21:43:46 +03:00
Gokhan Simsek dee3768d34 ReplicaSets: Adding automatic replica set refresh for failed script queries when set's primary unreachable cases. 2016-12-04 16:57:33 +03:00
Gökhan Simsek d2570f9c44 Update README.md 2016-12-03 12:49:57 +03:00
Gokhan Simsek a630fa9f98 ReplicaSets: Reverting ExplorerServerTreeItem expand() for single server back to its original version. Fixing small error related to [SSL] [SSH] texts. 2016-11-30 00:20:41 +03:00
Gokhan Simsek 875d4248f5 ReplicaSets: Better error messages for failed connections and failed refresh events for SSL & replica sets and single server cases. Fixing a problem related to replica set refresh folder event. 2016-11-29 21:34:49 +03:00
Gokhan Simsek 9523ff2472 ReplicaSets: Adding refresh status of set on expand feature for explorer feature replica set folder 2016-11-28 09:39:35 +03:00
Gokhan Simsek cf92bda8db ReplicaSets: Fixing a potential problem by setting cached set name to empty when connection failed to all nodes. 2016-11-27 01:55:55 +03:00
Gokhan Simsek c73b5ed7dc ReplicaSets: Changes to achieve 3 times faster first connection to replica set. 2016-11-27 01:24:12 +03:00
Gokhan Simsek ceb32f63ad ReplicaSets: Adding new feature to be able to check replica set status even when primary is unreachable and there is at least one reachable secondary. Disabling some context menu items for ServerTreeItem and ReplicaSetFolderItem for the no primary case and all nodes unreachable case. 2016-11-25 15:07:15 +03:00
Gokhan Simsek 4065193dd8 ReplicaSets: Implementing slightly different design for "create collection" for replica set connections. Adding an using new event ReplicaSetFolderLoading. 2016-11-23 13:53:37 +03:00
Gokhan Simsek b4d7ae2d3e Renaming MongoServer::_client to _worker. 2016-11-21 20:30:13 +03:00
Gokhan Simsek 140dce8dd2 ReplicaSets: Fixing issue related to create database and drop database actions. 2016-11-21 16:34:26 +03:00
Gokhan Simsek e80fd77299 ReplicaSets: Major changes, re-implementing connection to replica set, refresh server for replica set and refresh for replica set folder. 2016-11-21 15:56:29 +03:00
Gokhan Simsek 7e552a4db0 ReplicaSets: Updating replica set member icons with transparent background. 2016-11-18 23:14:24 +03:00
Gokhan Simsek 7d28eec8d0 ReplicaSets: Updating replica set icon with transparent background. Adding replica set offline icon. 2016-11-18 23:09:10 +03:00
Gokhan Simsek c29f8bf2f4 Adding save/restore window size feature for Edit, View and Insert Document dialogs 2016-11-17 19:27:56 +03:00
Gokhan Simsek f76433729c Correcting typo for namespace HighDpiConstants 2016-11-16 23:55:15 +03:00
Gokhan Simsek db630fc549 Updating Robomongo version to 1.0.0 2016-11-15 22:14:52 +03:00
Gokhan Simsek 4eb13e84cc Adding first working import connections from 0.9 to 1.0 and from 0.8.5 to 1.0. Updating default config path to /.config/robomongo/1.0/ 2016-11-14 22:16:23 +03:00
Gokhan Simsek 16b8c8efea ConnectionString: Adding generate button, include passwords check box and related functionalities. Adding tooltip popup for copy to clipboard button. 2016-11-13 02:30:51 +03:00
Gokhan Simsek 9b2c72e4a2 ReplicaSets: Adding first working version of export URI connection string feature into ConnectionSettings advanced tab. Refactoring ConnectionSettings info() to hostAndPort(). 2016-11-11 21:53:31 +03:00
Gokhan Simsek b3b9c52144 Temporarily disabling export/import feature 2016-11-10 13:05:01 +03:00
Gokhan Simsek 4bc319e0bb Minor refactorings 2016-11-10 12:45:06 +03:00
Gökhan Simsek 50071a2980 Moving gitter badge next to "About Robomongo" text 2016-11-10 11:15:48 +03:00
Gökhan Simsek 2036ce4ba1 Merge pull request #1207 from revolter/patch-1
Move Gitter badge to the top
2016-11-10 10:14:28 +02:00
Gokhan Simsek f2624fea03 ReplicaSets: Better handling of server item's refresh and replica set folder item's refresh for set's unreachable cases. Adding code to show more correct error string for replica set connections. Updating script engine's dbname dynamically. 2016-11-09 14:56:45 +03:00
Gokhan Simsek 950bc3daaa ReplicaSets: Handling of cases where there is no reachable primary with reachable secondaries or no reachable nodes at all. 2016-11-07 02:18:13 +03:00
Gokhan Simsek 39b6779a8c ReplicaSets: Better and faster handling of set status change for "Replica Set" folder item. Adding new RefreshReplicaSet* event group. Adding new function MongoSever::tryRefreshReplicaSet(). 2016-11-06 14:51:30 +03:00
Gokhan Simsek 743486d88b ReplicaSets: Adding functionality to dynamically update script engine with correct primary node to be able to re-run an existing open tab even when primary changed. Adding ReplicaSet struct as an info class. 2016-11-04 19:21:19 +03:00
Gokhan Simsek 50b0e90495 ReplicaSets: Moving replica set primary update for script engine inside replica set if condition. 2016-11-02 18:38:31 +03:00
Gokhan Simsek a8b049686a Using ConnectionSettings pointer itself instead of deep copy in ConnectionsDialog and some const refactoring. 2016-11-02 18:36:57 +03:00
Gokhan Simsek 23f133dbbe ReplicaSets: Adding functionality to auto-find and auto-configure replica set (and settings) for the case at least one reachable set member is entered by user. 2016-10-31 13:24:02 +03:00
Gokhan Simsek b033375491 ReplicaSets: In order to be able to save some settings changes (i,e, replica set name) after an established connection, passing the original connection settings object to MongoServer instead of the clone. 2016-10-30 23:38:41 +02:00
Gokhan Simsek ca4060473d ReplicaSets: Updating script engine to work with replica sets. Adding remove set item button functionality. 2016-10-30 23:26:44 +02:00
Gokhan Simsek 472b6a8c46 ReplicaSets: Adding replica set info into ConnectionDiagnosticDialog and main window log widget. 2016-10-29 18:17:17 +03:00
Gokhan Simsek 0947bac63c ReplicaSets: Adding setName into ReplicaSetSettings. If set name comes from settings (URI), using it instead of trying to get set name with connecting to nodes. Adding "Topology" column into ConnectionsDialog. 2016-10-29 01:47:03 +03:00
Gokhan Simsek 1a414a2723 ReplicaSets: Adding server icons to represent primary & secondary replica nodes (draft versions) 2016-10-28 18:35:12 +03:00
Gokhan Simsek d7bbf37cbb ReplicaSets: Adding code to extract SSL and credentials information from mongo URI. 2016-10-28 18:21:28 +03:00
Gokhan Simsek 6063ff90eb ReplicaSets: Adding code to obtain replica set name needed by constructor of mongo::DBClientReplicaSet 2016-10-28 16:33:01 +03:00
Gokhan Simsek 20dd2eb564 ReplicaSets: Change to fix build error on MAC 2016-10-27 12:29:59 +03:00
Gokhan Simsek 4a80853be6 ReplicaSets: Adding link from CreateConnectionDialog "Create connection manually" label to ConnectionsDialog addManually() function 2016-10-24 01:28:39 +03:00
Gokhan Simsek b6cd30e22d Adding "Security" header column into ConnectionsDialog 2016-10-24 00:15:12 +03:00
Gokhan Simsek ea59ca59d3 ReplicaSets: Adding new dialog "create connection"; Adding parsing ability from MongoURI to ConnectionSettings; Adding ability to create new connection from mongo connection string URI. 2016-10-23 14:42:24 +03:00
Gokhan Simsek c67d8a942b ReplicaSets: If replica set item widget is down, disabling iteim, it's context menu and double click event; Adding replica set name into replicaSetFolderItem. 2016-10-20 10:33:29 +03:00
Gokhan Simsek 244d94b17d Export_Import_Temp: Removing merge conflicts 2016-10-14 01:02:13 +03:00
Gokhan Simsek b05b348198 Merge branch 'master' into Export_Import_Temp 2016-10-14 00:50:43 +03:00
Gokhan Simsek 38a8595d15 ReplicaSets: Showing grey server icon when a replica member is offline 2016-10-14 00:47:24 +03:00
Gokhan Simsek f2226c92b3 Export_Import: Cancelling some customizations done for the design attempt of export dialog with custom explorer tree items 2016-10-13 22:58:25 +03:00
Gokhan Simsek 466709df23 Export_Import: Cancelling tree widget structure due to unnecessary complexity created; Enabling export button only a collection is selected; Adding "show details" button and feature. 2016-10-13 12:01:17 +03:00
Gokhan Simsek 702459918b ReplicaSet: Adding functionality refresh replica set view via "Refresh" context menu items both on Server and Replica Set Folder explorer tree items. Adding ExplorerReplicaSetFolderItem as a new specialized class. Adding new connection type "ConnectionRefresh" and function MongoServer::tryRefresh function to use updating whole connection view. 2016-10-12 15:50:58 +03:00
Gokhan Simsek 4efbd8b90a Export_Import: Adding support for multiple simultaneous exports in auto mode as well; adding enableDisableWidgets function to disable some widgets during export operation 2016-10-10 02:22:52 +03:00
Gokhan Simsek 655bfcba0a Export_Import: Adding support for multiple simultaneous exports in manual mode; Making export dialog mode-less 2016-10-09 18:27:54 +03:00
Gokhan Simsek 041356ebac Export_Import: Adding progress dialog for long lasting exports for auto mode 2016-10-09 13:52:35 +03:00
Gokhan Simsek 32e9ceb741 Export_Import: Appending mongo export output into auto mode result dialog 2016-10-09 01:00:29 +03:00
Gokhan Simsek 1aeb0e42dc Export_Import: Adding manual export mode 2016-10-08 23:30:33 +03:00
Gokhan Simsek 9c419b1f2e ReplicaSet: Enabling this feature which was disabled code due to release 0.9.0 Final 2016-10-07 19:15:14 +03:00
Gökhan Simsek 0786489924 Update CHANGELOG 2016-10-05 17:28:02 +03:00
Iulian Onofrei 2835aa1685 Move Gitter badge to the top
This is quite a preferred position for most projects and it helps to be this visible. I personally thought Robomongo is not using Gitter at first.
2016-10-05 11:33:19 +03:00
Gokhan Simsek 9cc34df185 Fixing the problem where create collection dialog was too large after switching into non-advanced mode from non-option tabs in advanced mode 2016-10-04 22:19:15 +03:00
Gokhan Simsek d5adcdf988 Fixing not working paralect link in about menu; Hiding validate json button when create collection dialog is in basic mode. 2016-10-04 21:41:08 +03:00
Gokhan Simsek 837c0e1a17 MinimizeToTray: Fixing the problem where incorrect context menu was shown when user minimize and right-click on tray icon. 2016-10-04 21:16:46 +03:00
Gökhan Simsek d458f43b63 Update README.md 2016-10-04 20:58:16 +03:00
Gokhan Simsek 1cfb1b6287 Export_Import: Adding code to support query argument; Moving all changes to _mongoExportArgs into one location inside accept() function. 2016-10-02 22:23:49 +03:00
Gokhan Simsek 6f5124616a Export_Import: Adding support to export in CSV format 2016-10-02 21:40:21 +03:00
Gokhan Simsek 3ba2f8ae93 Export_Import: Working export getting arguments from UI; adding smart filename and path creation when collection selected; adding browse directory functionality. 2016-10-01 18:17:44 +03:00
Gokhan Simsek b6d87141f2 Export_Import: First working mongo export with local executable directory and static arguments 2016-09-30 22:56:31 +03:00
Gokhan Simsek 993e9355bb Export_Import: Not creating "Functions", "User" and "Indexes" folders if items are created inside exp/imp dialog 2016-09-30 22:01:52 +03:00
Gokhan Simsek be655902b4 Updating CHANGELOG for 0.9.0 Final 2016-09-30 19:37:26 +03:00
Gökhan Simsek f9332befb3 Update README.md for 0.9.0 Final. 2016-09-30 19:19:49 +03:00
Gökhan Simsek 66728df978 Update README.md 2016-09-30 18:32:26 +03:00
Gokhan Simsek 60dc85c2fc To fix the problem where "View Documents" window cannot be brought into front from the behind of floating output window 2016-09-29 12:38:36 +03:00
Gökhan Simsek 4b4eb623b9 Update README.md 2016-09-28 19:21:20 +03:00
Gokhan Simsek d2c98bf559 DockableOutputWindow: Adding code to support this feature after toggle orientation; updating tool tip for maximize output result button 2016-09-27 12:57:09 +03:00
Gokhan Simsek 9a31503996 DockableOutputWindow: Fixing problem where dock/undock icon wasn't updated after re-running existing query tab with undocked output window 2016-09-23 13:09:15 +03:00
Gokhan Simsek cb4622f61f Adding protection for all tray icon code which is Windows only 2016-09-22 14:55:21 +03:00
Gokhan Simsek 1ce1091eca Minor change due to MAC build error 2016-09-22 14:23:23 +03:00
Gokhan Simsek 4546eef1e3 Refactoring some functions to avoid access to private members for better encapsulation 2016-09-22 14:05:53 +03:00
Gokhan Simsek 1d8f24ced2 Code Review: Refactoring and non-major changes for commits from RC10 release (33c89ea) to this commit. 2016-09-22 13:32:40 +03:00
Gokhan Simsek 19a61ba517 Code Review: For pull request #1163(minimize to tray) - More minor refactoring and style changes. 2016-09-21 11:56:28 +03:00
Gokhan Simsek 2b377e35f1 Code Review: For pull request #1163(minimize to tray) - Adding fix for the problem when tray icon double clicked event was not caught and so context menu was showing wrong text. 2016-09-20 21:38:06 +03:00
Gokhan Simsek f5011630a3 Code review: For pull request #1127 (copy path & copy name), constness and access level edits, applying Robomongo Coding Style. 2016-09-20 20:26:54 +03:00
Gokhan Simsek 8967a84f12 DockableOutputWindow: Fix for possible Qt bug (MAC only) where dock window is not brought to front when connected tab is selected 2016-09-20 17:08:23 +03:00
Gokhan Simsek 38bed5e4eb Code review : MinimizeToTray pull request minor changes 2016-09-19 01:32:10 +03:00
Gokhan Simsek 5370ecedd8 ReplicaSet: Temporarily disable Replica Set feature - still under development 2016-09-15 13:18:53 +03:00
Gökhan Simsek 0e8cd5cefc Merge pull request #1163 from JoshJ1091/master
Add system tray icon and implement ability to close to system tray (Windows)
2016-09-14 13:37:10 +02:00
Gokhan Simsek e3c3649b0f Robomongo 0.9.0 2016-09-14 13:06:50 +03:00
Gokhan Simsek 19f953fa54 RepSet: Removing QShortCut due to failed build on Ubuntu 2016-09-14 12:10:28 +03:00
Gokhan Simsek ad1b5e35c7 Merge branch 'DockableOutputWindow' 2016-09-13 19:26:43 +03:00
Gokhan Simsek ff2eb0fef6 DockableOutputWindow: Updating clean versions of maximize and minimize icons; Minor change on ReplicaSetSettings due to failed build on MAC 2016-09-13 19:10:21 +03:00
Gokhan Simsek d356c14f87 DockableOutputWindow: Increasing size of dock/undock button icons 2016-09-12 00:57:14 +03:00
Gokhan Simsek 829cbf890b DockableOutputWindow: Adding new icons for maximize/minimize button 2016-09-11 23:40:12 +03:00
Gokhan Simsek 5ae52d4b4f DockableOutputWindow: Fix to solve crash when floating dock window hovered over bottom part of the maximized query widget 2016-09-11 18:50:18 +03:00
Gokhan Simsek 4608c6b7ee DockableOutputWindow: No maximize (via double click or any other source) if there is only one query result 2016-09-11 16:44:00 +03:00
Gokhan Simsek 7c7a818ca0 Merge branch 'DockableOutputWindow' 2016-09-11 15:59:32 +03:00
Gokhan Simsek 08c6d44185 DockableOutputWindow: Removing the additional horizontal line on bottom of tab title that is seen after undock 2016-09-11 15:56:50 +03:00
Gokhan Simsek dc8495b147 DockableOutputWindow: Adding code for frameless query results dock window; adding functionality to dock/undock from OutputItemHeaderWidget; adding dock/undock buttons and icons into OutputItemHeaderWidget; not showing OutputItemHeaderWidget maximize button if there is one query result; showing only one undock button if there are more than one query results. 2016-09-11 15:16:44 +03:00
Gokhan Simsek e2f5765a87 DockableOutputWindow: Adding code to show OutputWidget maximize button only if there are multiple query results 2016-09-10 16:24:46 +03:00
Gokhan Simsek 7ebc059430 Export_Import: Adding function to be able to customize ExplorerDatabaseTreeItem in order to use it inside Export Dialog 2016-09-09 19:52:46 +03:00
Gokhan Simsek 0d3fda185f Export_Import: Adding new dialog/class ExportDialog and it's first visual template; adding import action into main window 2016-09-09 13:41:25 +03:00
Gokhan Simsek 38df06261b New branch Export_Import; adding export tool bar item into main windows; adding icons for export and import 2016-09-08 14:09:11 +03:00
Gokhan Simsek 0086df54f0 DockableOutputWindow: Focus on active shell query tab when related dock output window is selected 2016-09-07 20:05:06 +03:00
Gokhan Simsek ddc0c910c8 DockableOutputWindow: Removing unused signal-slot connection 2016-09-07 14:02:04 +03:00
Gokhan Simsek 31f74baef7 DockableOutputWindow: Adding close button on dock output window with custom close event (dock instead of close) 2016-09-07 13:41:39 +03:00
Gokhan Simsek 8cd4f50304 DockableOutputWindow: Fix to solve crash on "Update Documents" 2016-09-07 11:06:55 +03:00
Gokhan Simsek 48f6abb361 DockableOutputWindow: Fix to solve un-selectable query window text issue when output window is floating. 2016-09-06 19:28:34 +03:00
Gokhan Simsek 27626665a1 RepSets: Adding code to check/save live status of Replica Set (health of members and who is primary) and show it in UI; showing Replica Set information/icon on ConnectionsDialog. 2016-09-06 14:38:50 +03:00
Gokhan Simsek 47039d8685 DockableOutputWindow: Adding code to support full window query editor when output window is docked 2016-09-06 02:51:25 +03:00
Gokhan Simsek bc9aded3b7 DockableOutputWindow: Bring the output dock window front when tabs changed on main window 2016-09-04 21:50:18 +03:00
Gokhan Simsek f919544d1e DockableOutputWindow: Adding docked and undocked(full screen space for queries) modes for query window (ScriptWidget). 2016-09-04 18:59:16 +03:00
Gokhan Simsek ea49d0508a DockableOutputWindow: Adding dock capability for query result window (OutputWidget) 2016-09-03 21:57:08 +03:00
Gökhan Simsek 894f508f6c Merge pull request #1145 from flier/currentOps
Addition of db.currentOp() and db.killOp() as a database context menu items
2016-09-02 15:53:37 +03:00
Gökhan Simsek 2f2d3d584e Merge pull request #1129 from xuser86/issue-1127
#1127: Added two new context menu options in document view: "Copy Path" and "Copy Name"
2016-09-02 15:42:55 +03:00
Gokhan Simsek 67ae8a614d Merge branch 'ReplicaSets' 2016-09-02 12:21:33 +03:00
Gokhan Simsek cbba0e639d RepSets: Adding code to connect to Replica Set (using DBClientReplicaSet class) 2016-09-01 18:10:22 +03:00
Gokhan Simsek 8f3fdf3d1d RepSets: Adding "Open Direct Connection" functionality for replica member UI items 2016-08-31 13:10:31 +03:00
Gokhan Simsek 650fdd60cc RepSets: Adding double-click open shell functionality for replica member items 2016-08-31 12:39:58 +03:00
Gokhan Simsek 8b114b5122 Merge branch 'ReplicaSets' 2016-08-31 12:12:54 +03:00
Gokhan Simsek bc96addce5 RepSets: Adding various right click menu functionalities for replica set member UI items 2016-08-31 12:12:14 +03:00
Gokhan Simsek bac2c9d5ec RepSets: Adding new GUI class ExplorerReplicaSetTreeItem to represent a replica set member; adding simple icon for replica set. 2016-08-30 18:13:53 +03:00
Gokhan Simsek 94e0c37cf8 Merge branch 'ReplicaSets' 2016-08-29 19:26:21 +03:00
Gokhan Simsek 42d6181724 RepSets: Minor coding style refactoring 2016-08-26 20:50:15 +03:00
Gokhan Simsek 4c5f2e99cb RepSets: Adding code to save&load replica members to/from connection settings. 2016-08-26 17:23:12 +03:00
Gokhan Simsek 95e2fef4a6 Minor changes in CHANGELOG file. 2016-08-26 14:40:19 +03:00
Gökhan Simsek 4d8e3e61a1 Update README.md - minor corrections. 2016-08-26 14:18:27 +03:00
Gökhan Simsek c227798a4b Update README.md for RC10 release. 2016-08-26 14:15:56 +03:00
Gokhan Simsek fc5a6b9ac6 Merge branch 'master' into ReplicaSets 2016-08-25 12:03:31 +03:00
Gokhan Simsek b820f17b3c RepSets: Adding ReplicaSetSettings class and code to load&save related settings between file and UI. 2016-08-25 12:02:46 +03:00
Gokhan Simsek 079ec51dac CreateCollection: Correcting typo which was causing crash on debug mode. 2016-08-25 11:05:27 +03:00
Gökhan Simsek 88dee956f2 Adding ObjectRocket as supported platforms. 2016-08-23 12:33:44 +03:00
Gökhan Simsek 53945eb095 Adding new feature to main robomongo.md page. 2016-08-19 13:53:52 +03:00
Josh 578447ecc3 Add system tray icon and implement ability to close to system tray
(Windows)
2016-08-18 16:52:26 +01:00
Gökhan Simsek 0cecad49b3 Doc: Adding section to mention about new page: Robomongo Code Quality 2016-08-16 11:29:22 +03:00
Gokhan Simsek 652df93690 ReplicaSets: Adding related main UI widgets 2016-08-15 15:24:08 +03:00
Gökhan Simsek efa81c11c5 Updating link to new build pages 2016-08-12 18:12:06 +03:00
Gokhan Simsek 4af070b5b8 Adding new branch ReplicaSets 2016-08-12 17:33:16 +03:00
Rafał Jeżewski 95faf9332e Merge branch 'master' into issue-1127 2016-08-09 22:36:01 +02:00
Gökhan Simsek 7e87befd3d Updating build steps for Linux 2016-08-08 20:09:22 +03:00
Gökhan Simsek d6155f4c35 Adding mLab as supported and note about support limitation for MongoDB Atlas. 2016-08-08 14:22:06 +03:00
Gokhan Simsek 33c89eac63 Updating changelog for RC10. 2016-08-08 10:46:34 +03:00
Gökhan Simsek 335adc6bdb Adding MongoDB Atlas and Compose as supported. 2016-08-06 16:19:24 +03:00
Gokhan Simseek a107084745 UI fix to hide the password visibility by default and setting default icon for Auth and SSH tabs. 2016-08-05 22:36:47 +03:00
Gokhan Simsek 67f60b19ea Minor cosmetic fix, on MAC selecting cancel on file browse dialog results with problem where focus goes to parent of parent dialog. 2016-08-04 18:49:49 +03:00
Gokhan Simsek 734b17d0e7 SSL: Minor refactoring on MAC build which effects bin/run and bin/install & bin/pack output executable and package. 2016-08-04 13:46:27 +03:00
Gokhan Simsek 7739c92064 RC10 2016-08-03 13:04:01 +03:00
Gokhan Simsek 0ae5f12024 SSLTab: Applying Robomongo coding styles and some minor refactorings. 2016-08-03 13:00:12 +03:00
Gokhan Simsek e05dd9d1e9 SSLTab: Resetting SSL global parameters after it is being used and before every (SSL or non-SSL) connection request. 2016-08-03 09:59:16 +03:00
Gökhan Simsek ecbbeaeeca Adding extra steps for MAC to fix failing command "bin/run" 2016-08-03 09:22:08 +03:00
Flier Lu ea164e82a7 add db.killOp() as template to the context menu item 2016-08-02 02:00:04 +08:00
Flier Lu bfa1e68ce0 add db.currentOps() as a context menu item 2016-08-02 01:29:10 +08:00
Gokhan Simsek dc010092ab Adding default values for SSL settings 2016-08-01 19:32:16 +03:00
Gokhan Simsek 82c6bd6452 Merge branch 'master' into SSLTab 2016-08-01 16:03:23 +03:00
Gokhan Simsek 49a1251091 SSL: For Linux, updating find OpenSSL location and adding lib install code. 2016-08-01 16:02:26 +03:00
Gökhan Simsek 97ffad1178 Updating OpenSSL build steps for Linux 2016-08-01 15:58:35 +03:00
Gökhan Simsek 592883af29 Adding OpenSSL build helper commands for Windows 2016-08-01 12:11:16 +03:00
Gökhan Simsek 51a38c5607 Adding helper commands 2016-08-01 12:08:17 +03:00
Gokhan Simsek 5a645015a2 SSL: Fix for pack cmd line error for Windows: "destination" in cmake must be relative directory. 2016-08-01 11:39:30 +03:00
Gokhan Simsek 064094489f SSLTab: Fix for dylib and rpath problem for MAC (where OpenSSL dylibs were not copied while packing and they had absolute library paths) 2016-08-01 11:25:25 +03:00
Gökhan Simsek 218310c23c Udpating build steps for MAC in order to fix dylib and rpath problem 2016-08-01 11:10:10 +03:00
Gokhan Simsek 7c48a9e28d RC10 Beta Version 2016-07-29 09:25:39 +03:00
Gokhan Simsek 8ecffcbddb Merge remote-tracking branch 'origin/master' into SSLTab 2016-07-28 13:23:35 +03:00
Gökhan Simsek c31f8d8275 Updating build steps for Windows due to Qt 5.7 transition. 2016-07-28 13:22:26 +03:00
Gokhan Simsek 6db3fe11b9 SSLTab: Fix for minor UI flickering issue on MAC. 2016-07-28 13:18:49 +03:00
Gökhan Simsek ae7735f6bd Updating build steps for Mac and Linux due to Qt 5.7 transition. 2016-07-28 13:02:58 +03:00
Gokhan Simsek 22dc364f7e SSLTab: Removing gtk2 as an attempt to fix bin\configure error in ubuntu, reason is gtk2 has been removed in Qt 5.7. 2016-07-28 12:45:35 +03:00
Gokhan Simsek f11f22f6bb SSLTab: Minor adjustment for MAC due to new longer self-signed info text truncation. 2016-07-28 11:47:28 +03:00
Gokhan Simsek 2e07f1a9cb SSLTab: Some minor UI changes; adding more information about self-signed option. 2016-07-28 11:37:30 +03:00
Gokhan Simsek 62bc7e5ff7 SSLTab: Second major non-functional refactoring of SSLTab branch commits 2016-07-27 16:11:30 +03:00
Gokhan Simsek 6b9dd95b26 SSLTab: Window size adjustment for MAC; adding port information into SSL passphrase prompt dialog 2016-07-27 12:26:43 +03:00
Gokhan Simsek 0f3fd3ace1 SSLTab: UI horizontal spacing adjustments for MAC and HiDPI windows 2016-07-27 12:12:49 +03:00
Gokhan Simsek 10b9e91c8e SSLTab: Removing check box "PEM key encrypted..." due to unnecessary complexity. 2016-07-27 10:47:59 +03:00
Gokhan Simsek f813bc42ed Cosmetic: Cross platform pushbutton size adjustments 2016-07-26 21:30:45 +03:00
Gokhan Simsek 1c713c0e7e For related connection tabs, updating password show/hide icon with a new icon and adjusting button sizes 2016-07-26 20:15:30 +03:00
Gokhan Simsek 6b36671ad7 SSLTab: Reverting to original/removing ConnectionFailedEvent::Reason::Unknown case due to increased complexity. 2016-07-26 18:32:16 +03:00
Gokhan Simsek 720ee7981b SSLTab: Updating/adding new show/hide password icons; adding credits for icon designer company into about Robomongo window. 2016-07-26 17:43:12 +03:00
Gokhan Simsek dbed9b88a4 SSLTab: Adding tooltip (hint) helper text for users. 2016-07-26 12:01:22 +03:00
Gokhan Simsek d5afee08af SSLTab: Adding function to reset global SSL params and conditional passing of CA file. 2016-07-26 11:58:59 +03:00
Gokhan Simsek 5ae70fcf29 SSLTab: Adding warning dialog and protection for the case when both SSL and SSH are enabled. 2016-07-26 10:29:08 +03:00
Gokhan Simsek 16621d9ce1 SSLTab: Attempt to fix memory leak and resulting never closed mongod connections problem caused by an SSL connection failure exception at _dbclient->connect(_connection->info()) between manual new and delete of conn owning pointer. 2016-07-26 10:05:57 +03:00
Gokhan Simsek 32bfb590a8 SSLTab: Adding more information about failed SSL connection attempts into ConnectionDiagnosticDialog and Main error window; important change-adding reset params code into MongoWorker::writeGlobalSSLparams(). 2016-07-25 15:53:34 +03:00
Gokhan Simsek 0e2f9b427f SSLTab: Adding prompt dialog for PEM passphrase into App; adding "ask passphrase each time" feature code into SslSettings and SSLTab modules 2016-07-22 14:21:36 +03:00
Gokhan Simsek 1f8abd1be7 SSLTab: Minor UI change - top alignment adjustment required only for Windows 2016-07-21 14:11:45 +03:00
Gokhan Simsek f7e24ba46c Merge remote-tracking branch 'origin/master' into SSLTab 2016-07-21 12:53:43 +03:00
Gokhan Simsek d3b993d67e SSLTab: Adding usePemFile and useAdvancedOptions for SslSettings; adding minimum width for ConnectionDialog; adding PEM passphrase validation and some UI changes. 2016-07-21 12:53:23 +03:00
Gökhan Simsek eddd6269e7 Update README.md 2016-07-21 12:35:14 +03:00
Gokhan Simsek ad14cf6a94 SSLTab: Updating UI by removing indented style sub options, and some refactorings 2016-07-19 19:08:11 +03:00
Gökhan Simsek 53f92d91e7 Doc: Adding Qt insallation steps for MAC and Linux in BuildingRobomongo.md 2016-07-19 14:34:50 +03:00
Gokhan Simsek 58e8c708c4 SSLTab: Adding code to fix the issue on Windows High DPI button height is slightly bigger than other widgets 2016-07-15 13:16:14 +03:00
Gokhan Simsek 3b7f1f9cce SSLTab: Adding UI changes for MAC OSX issues 2016-07-15 12:23:50 +03:00
Gokhan Simsek d921975e9f Enabling Qt 5.7 cross platform High DPI support 2016-07-15 11:05:30 +03:00
Gokhan Simsek 9db35b6597 Major UI change: making SSL tab UI more simplistic and expanding; adding show/hide passphrase icons. 2016-07-15 11:02:42 +03:00
Rafał Jeżewski c6c5bd179b coding style fix 2016-07-12 12:46:04 +02:00
Rafał Jeżewski dd1d3ebdc4 #1127: Added two new context menu options in document view: "Copy Path" and "Copy Name" 2016-07-12 11:51:25 +02:00
Gokhan Simsek d5110c4ac8 Adding trivial cosmetic changes and hint strings. 2016-07-11 11:43:03 +03:00
Gokhan Simsek e08775f18a Correcting function name typo in SSLTab class 2016-07-08 18:19:56 +03:00
Gokhan Simsek a1e273a147 More trivial refactoring on SSLTab module 2016-07-08 17:54:52 +03:00
Gokhan Simsek 79a7d163c4 Adding file existence check into SSLTab accept() 2016-07-08 13:56:25 +03:00
Gokhan Simsek 4fd1a633e7 Changing size policy of ConnectionDialog to adjustSize(), trivial refactoring on MainWindow.h 2016-07-08 12:07:29 +03:00
Gökhan Simsek ce126b0f1d SSL: Updating build steps for MAC and linux according to new SSL feature. 2016-07-07 15:58:37 +03:00
Gökhan Simsek 1ccde63c31 SSL: Correction for windows build steps, set ROBOMONGO_CMAKE_PREFIX_PATH should be done after cloning robomongo-shell. 2016-07-07 14:13:49 +03:00
Gökhan Simsek 713972aed0 SSL: Updating build steps for windows in BuildingRobomongoOnWindows.md according to new SSL feature. 2016-07-06 18:46:45 +03:00
Gokhan Simsek a1abb11ec4 Merge remote-tracking branch 'origin/master' into SSLTab 2016-07-06 14:33:04 +03:00
Gokhan Simsek 2f86b628f9 First refactoring attempt of SSLTab branch - only trivial changes, no behavioral changes. 2016-07-06 14:31:34 +03:00
Gökhan Simsek 23994758dd Merge pull request #1124 from Aahanbhatt/master
Edited README.md file, changed copyrights from 2015 to 2016
2016-07-06 13:59:05 +03:00
Gökhan Simsek 1c5b6a722a Update BuildingRobomongoOnWindows.md 2016-07-06 13:06:45 +03:00
Gokhan Simsek a62d826005 Updating Linux objects files according to SSL build of mongo shell, adding OpenSSL dynamic library for linux into FindOpenSSL.cmake file. 2016-07-04 17:14:52 +03:00
Aahanbhatt c98d72f0cd Edited README.md file, changed copyrights from 2015 to 2016 2016-07-04 16:58:45 +05:30
Gokhan Simsek 55d59c1944 Removing src\third-party\openssl directory and files since Robomongo will dynamically depend on OpenSSL instead of building OpenSSL itself. 2016-06-30 18:46:26 +03:00
Gokhan Simsek 064b0b5ee1 Updating cmake script for OSX for finding version and dynamic lib path. 2016-06-29 22:19:19 +03:00
Gokhan Simsek ebf03afa75 Cmake changes for first attempt to make OpenSSL dynamically dependent (static previously). 2016-06-29 16:09:32 +03:00
Gokhan Simsek 116b2efd5f Merge branch 'SSLTab' of https://github.com/paralect/robomongo into SSLTab 2016-06-27 17:37:20 +03:00
Gokhan Simsek dfa66b8113 Merge remote-tracking branch 'origin/master' into SSLTab 2016-06-27 17:34:56 +03:00
Gokhan Simsek 620b0ff59a Updating OSX objects files according to SSL build of mongo shell, adding openssl include directory needed by robomongo project build. 2016-06-27 17:16:03 +03:00
Gokhan Simsek bc01acfef0 Updating windows objects files according to SSL build of mongo shell. 2016-06-27 17:12:13 +03:00
Gokhan Simsek f8199eaa79 Chg: Minor refactoring on MongoWorker and SSLTab classes. 2016-06-26 19:29:10 +03:00
Gokhan Simsek bb7408979a Minor re-factoring and conditional passing of sslGlobalParams.sslPEMKeyPassword 2016-06-16 13:43:46 +03:00
Gokhan Simsek 93a42e752b Adding pemKeyEncrypted into SSLSettings, switching to all grid main layout, adding slot for toggling client cert passphrase checbox. 2016-06-16 12:56:37 +03:00
Gokhan Simsek 8959bcb912 SSLTab cosmetic changes: groupbox design approach. 2016-06-15 22:21:06 +03:00
Gokhan Simsek d533e3bf8e Adding advanced options - allowInvalidHostnames and CRL file. 2016-06-15 18:57:34 +03:00
Gokhan Simsek fbdd73ec58 Adding support for allowInvalidCertificates SSL option into MongoWorker, SslSettings and SSLTab. 2016-06-14 19:58:39 +03:00
Gokhan Simsek 3c5e570e04 Adding connections with pemKeyPassPhrase option support into SSLTab, SslSettings and MongoWorker classes. 2016-06-13 17:40:32 +03:00
Gokhan Simsek 263c02eaab Adding pem key file browse button and action 2016-06-09 19:37:38 +03:00
Gokhan Simsek 44ad01b3ad Adding first fully working version from UI version with sslCAFile - details: adding allowSSL into main.cpp for global SSL initialization, adding caFile member into SslSettings class, adding caFile browse button. 2016-06-09 11:07:22 +03:00
simsekgokhan a37736eed6 Update BuildingRobomongoOnWindows.md 2016-06-06 15:04:10 +03:00
simsekgokhan a3c09047e6 Update README.md 2016-06-06 15:00:19 +03:00
simsekgokhan dc30c28c02 Update README.md - minor alignment issue 2016-06-06 14:54:30 +03:00
simsekgokhan d17f2e6eb9 Update README.md 2016-06-06 14:39:52 +03:00
simsekgokhan fdabd03924 Update README.md 2016-06-06 14:39:01 +03:00
Gokhan Simsek a8a04186ed Adding all UI widgets 2016-06-03 14:16:09 +03:00
Gokhan Simsek 164dd1d7a5 Chg: Adding SSLTab into cmakelist and into Connection Dialog UI. 2016-06-03 12:07:51 +03:00
Gokhan Simsek 4fc487348a New branch SSLTab 2016-06-03 11:43:35 +03:00
schetnikovich 0bb566869e Minor typo fix for Collections dialog 2016-06-01 15:03:11 +03:00
Gokhan Simsek 9fb495d785 Chg: Updating change log for RC9. 2016-05-30 19:15:51 +03:00
Gokhan Simsek df86e7c8ec Chg: Create Collection dialog: Hiding powerOfTwoSizeCheckBox if db version is higher than 3.0. 2016-05-27 16:26:39 +03:00
Gokhan Simsek 1e6f4d8052 Chg: Create Collection dialog: powerOfTwoSizeCheckBox is checked by default if storage engine type is MMAPV1; showing/enabling deprecated options in UI; refactoring DBVersion. 2016-05-27 11:36:13 +03:00
Gokhan Simsek bd470b1330 Minor change, removing saveState() due to runtime warnings. saveGeometry() is already enough for related feature. 2016-05-26 18:45:32 +03:00
Gokhan Simsek 60b3494207 Chg: Minor adjustment for non-high-DPI screens. 2016-05-26 17:38:45 +03:00
Gokhan Simsek 475a7fc44c #1102: Chg: Updating code to handle multiple screen condition. Saving/restoring only size, not geometry for Connections Dialog and Create Collection (advanced view) in order to show sub-windows on the same screen as (and on top of) Main Window. 2016-05-26 17:34:11 +03:00
Gokhan Simsek f19c5a0dc0 Chg: Updating fix for create collection crash to use copy of extraOptions BSON object instead of unique_ptr. 2016-05-26 16:35:52 +03:00
Gokhan Simsek 3e35f1dea3 #1102: Adding support to save geometry for more actions (connect, cancel buttons for Connections dialog and create, advanced buttons for Create Collection dialog) 2016-05-26 10:46:10 +03:00
Gokhan Simsek d8197dd00e Fix: Create Collection dialog "'usePowerOf2Sizes" option should be enabled for 2.6.11 mongodb-version. 2016-05-25 16:28:54 +03:00
Gokhan Simsek 3205248519 Fix: CreateCollection dialog "maximum number of documents" option should be optional, not required. 2016-05-25 15:55:02 +03:00
Gokhan Simsek 224801dcd9 Reverting usage of std::unique_ptr from C++14 to C++11. 2016-05-25 13:58:49 +03:00
Gokhan Simsek e8c0de07de Merge branch 'RestoreWindowSettings' 2016-05-25 13:28:02 +03:00
Gokhan Simsek cf7e061c7a Feature: For CreateCollection dialog, adding advanced button and expandable advanced option tabs and functionality to save/restore window geometry. 2016-05-25 13:27:06 +03:00
Gokhan Simsek a75becd6c5 Feature: Adding functionality to be able to restore/save window geometry/state for MainWindsow and ConnectionsDialog. 2016-05-25 11:44:18 +03:00
Gokhan Simsek e411bbe3c4 Fix: #1090: Adding informative comment. 2016-05-25 10:07:32 +03:00
Gokhan Simsek c8ca4bc945 Fix: #1090: Patch for libssh2 for ssh connection failure due to Ubuntu 16.04/OSX's OpenSSH 6.9 version have disabled obsolete form of KEX "Diffie-Hellman group exchange" algorithm. 2016-05-25 10:05:02 +03:00
Gokhan Simsek ffd9d13d79 Fixing crash related to race problem between local objects destruction and threads processing. 2016-05-19 18:38:14 +03:00
schetnikovich 4addeb5835 #1086: Imported connections compared with existing and information message is shown. 2016-05-06 19:08:03 +03:00
Dmitry Schetnikovich c086c9ab83 Update BuildingRobomongo.md 2016-05-05 18:14:07 +03:00
Dmitry Schetnikovich 44e30e4520 Update BuildingMongoDB.md 2016-05-05 18:08:12 +03:00
Dmitry Schetnikovich 8f93cd7dd6 Update BuildingRobomongo.md 2016-05-05 18:04:35 +03:00
schetnikovich a4390d348b #1086: Importing of connection settings from previous versions of Robomongo 2016-04-29 21:23:10 +03:00
schetnikovich bd72766414 Connections Dialog top link's color changed 2016-04-29 13:27:59 +03:00
schetnikovich 866828c1ba #1083 Correct handling of create/drop of databases and collections. 2016-04-28 22:09:25 +03:00
schetnikovich 8cedcc5d55 Robomongo RC9 2016-04-25 14:29:29 +03:00
gokhan.simsek 860cee5f12 #1077: Support for all options when creating new collection 2016-04-22 20:01:47 +03:00
schetnikovich a75972cf3b #1080 Shell helpers for legacy and new UUID types 2016-04-19 17:45:58 +03:00
schetnikovich 03e3592443 bin/tag 2016-04-18 13:58:36 +03:00
schetnikovich c113244319 Minor UI improvement for "Ask for password" dialog 2016-04-14 12:55:18 +03:00
schetnikovich 3a64e1310b Do not log password 2016-04-13 17:34:35 +03:00
schetnikovich 306b759b74 Fixed incorrect validation on SSH tab 2016-04-13 16:53:29 +03:00
schetnikovich 5976884b0f Details about SSH server, user name and private key file path when asked about password/passphrase. 2016-04-13 15:10:53 +03:00
schetnikovich ee907c3321 Disable and clear password and passphrase fields when "Ask password each time" checkbox is selected 2016-04-13 13:43:42 +03:00
schetnikovich 86307a724f Different text for "ask password" and "ask passphrase" checkbox 2016-04-12 23:56:58 +03:00
schetnikovich 997aa44654 #609 Robomongo should not force to save SSH passwords
Added option to always ask user for SSH password or passphrase and never store it in a plain text
2016-04-12 21:05:38 +03:00
schetnikovich feb1d277e9 Support for "~" expansion and validation of file path for SSH private key 2016-04-12 19:33:07 +03:00
schetnikovich 7e1dac26f1 SSH tab moved before Advanced and other minor UI tweaks of settings tabs 2016-04-12 19:05:47 +03:00
schetnikovich a7b95d4caf #1074 Fixed: Crash when "Copy JSON" an object within an array 2016-04-12 17:46:23 +03:00
schetnikovich bb042fe70b Brace matching turned off on the Mac because of flickering issue with Scintilla 2016-04-12 16:38:18 +03:00
schetnikovich e50ee8fbee Turn off echo of autocompletion cache setup 2016-04-12 14:41:01 +03:00
schetnikovich 55d8a6ff76 DB collections autocompletion cached for fixed number of seconds 2016-04-12 14:05:12 +03:00
schetnikovich 576fc07b5b Limit serverHost to fixed number of characters 2016-04-12 10:10:20 +03:00
schetnikovich b4978269a5 Set focus to address textbox when SSH is enabled 2016-04-11 23:10:08 +03:00
schetnikovich 24e9a74a6c Fixed two issues of blinking text and UI
1. Latest version of QScintilla has a bug with lexers that makes UI blink when editing text. We downgraded back to v2.8.1
2. Adding of a new line to the script editor in the tab no longer forces unnecessary repaint and repositioning of widgets (no more blinking)
2016-04-11 21:40:09 +03:00
schetnikovich 61e79155b4 QScintilla downgraded to v2.8.4 (from v2.9.1) because of issue with lexers 2016-04-11 21:32:46 +03:00
schetnikovich d23d9a2e7a Ping timeout set to 3 seconds for the shell 2016-04-11 17:20:27 +03:00
schetnikovich ae13e30494 #1063 Fixed: OSX Edit/View Document Popup only opens on main display 2016-04-11 17:01:10 +03:00
schetnikovich 292c664941 Config-level settings for operation timeout: both for MongoDB client and for the shell 2016-04-11 15:36:53 +03:00
schetnikovich c78845571e Separate handling of NumberInt conversion 2016-04-11 09:25:09 +03:00
schetnikovich a0d5c67e48 #1069: Fixed: Double 0.0 gets converted to Int32 0 after editing 2016-04-10 18:28:47 +03:00
schetnikovich 059a3dcc37 Code style fixes for the most horrible disuse of whitespaces 2016-04-10 16:02:36 +03:00
schetnikovich d543bb4539 Unused variable removed 2016-04-10 14:44:02 +03:00
schetnikovich 3e8f800682 Handling of edge cases with proper reporting and changes in MongoWorker
1. Detailed error message link in Diagnostic window
2. Cleanup of opened MongoServers and SSH workers in case of failure
3. Better status messages in Diagnostic window when using SSH tunnel
4. Script engine is now starts after an attempt to connect to MongoDB
2016-04-10 14:09:58 +03:00
schetnikovich 368f2abe0d Diagnostic window resizes only if needed and without layout "jumps". 2016-04-09 12:48:35 +03:00
schetnikovich 1e8af399e7 Code typo fix 2016-04-08 21:39:24 +03:00
schetnikovich 72f669e189 Merge branch 'master' of github.com:paralect/robomongo 2016-04-08 21:15:50 +03:00
schetnikovich c787b54e7c Connection diagnostic rewritten
1. Checks creation of SSH tunnel
2. Checks connection to MongoDB
3. Checks ability to list databases
4. Checks ability to authorize
2016-04-08 21:15:08 +03:00
Dmitry Schetnikovich 3512be30cf Wrong header for Windows (fixed) 2016-04-07 15:32:01 +03:00
schetnikovich 0bb279eec8 Support for domain names and IPv6 address of remote SSH server 2016-04-07 15:18:48 +03:00
Dmitry Schetnikovich 75331d9025 Warnings-free compilation for MSVC (well, almost) 2016-04-06 19:09:13 +03:00
schetnikovich 99a46eafc8 Warnings-free compilation for Clang 2016-04-06 16:41:29 +03:00
Dmitry Schetnikovich ac9300f5be Better handling of client disconnection for SSH tunnel 2016-04-06 15:30:49 +03:00
Dmitry Schetnikovich 4e4e5154f4 Compilation of RC8 under Windows 2016-04-06 13:20:05 +03:00
schetnikovich b54c096762 Robomongo RC8 2016-04-05 16:29:51 +03:00
Dmitry Schetnikovich 5d409ec1de Merge pull request #1072 from paralect/ssh
Support for SSH protocol
2016-04-05 16:24:33 +03:00
schetnikovich 845315eeb5 Simplified LIBSSH2 CMake listfile 2016-04-05 16:19:42 +03:00
schetnikovich 803306eea5 Default to gnu99 for both GCC and Clang 2016-04-05 14:58:51 +03:00
schetnikovich 94ef0d75d7 Modified gitignore and missed header in OpenSSL 2016-04-05 13:24:37 +03:00
schetnikovich 604d439d57 OpenSSL CMake listfile tweaks 2016-04-05 12:39:25 +03:00
schetnikovich d37f8c7bab OpenSSL 1.0.1e 2016-04-04 21:47:50 +03:00
schetnikovich c7ab94a5a5 Ignore SIGPIPE signal 2016-04-04 20:01:42 +03:00
schetnikovich a6428ce968 Use of LIBSSH2 error codes 2016-04-04 16:31:42 +03:00
schetnikovich 8dd0cd3050 Restructuring of SSH submodule. Updated to the latest version of LIBSSH2. 2016-04-04 15:53:12 +03:00
schetnikovich baede8d8bd SSH tunnel: Log functions moved to separate file II 2016-04-02 13:34:28 +03:00
schetnikovich 2328ec7b31 SSH tunnel: Log functions moved to separate file 2016-04-02 13:34:01 +03:00
schetnikovich 719df7b241 Error handling for the most important operations is restored.
1. First steps to support automatic reconnection for SSH tunnel
2. UI tweaks for Explorer tree items (handling of errors and empty children)
3. Correct handling of invalid mongo::DBClientCursor
4. Null semantic of value type EventError is restored. Was broken by reliance on emptiness of error message string, dah!
5. Error state for several messages is restored. Not for all messages, but still something :)
6. Errors produced by MongoWorker now contains exact error message, instead of constant text.
7. More strict error handling for SSH worker
2016-04-02 01:19:58 +03:00
schetnikovich dff7f0539a Preparation to handle reconnection automatically 2016-03-31 13:56:37 +03:00
schetnikovich f03cf048d8 Minor changes with whitespace characters in the code 2016-03-29 20:43:41 +03:00
schetnikovich 22ffc2ec15 Do not print batch size in the logs 2016-03-29 19:51:49 +03:00
schetnikovich 09a0edb39a Check for availability of "rc" files (this removes unnecessary warnings in logs) 2016-03-29 19:44:10 +03:00
schetnikovich a0a8a7a13e Cleanup of SSH worker thread when no more connected clients 2016-03-29 18:06:05 +03:00
schetnikovich 8f97c06408 Shift + Return when selecting connection in order to enable debug level logging for SSH submodule 2016-03-29 14:57:13 +03:00
schetnikovich af9f8fc6a9 Shift + Connect in order to enable debug level logging for SSH submodule
Added WARN log level
2016-03-29 14:36:38 +03:00
schetnikovich ef6feb2377 Log levels for SSH submodule (ERROR, INFO, DEBUG) 2016-03-28 20:57:22 +03:00
schetnikovich 4e5ffae80c Single log function for SSH submodule 2016-03-28 20:16:45 +03:00
schetnikovich 3597f438cd Handling of different types of sockets moved to separate functions 2016-03-28 19:47:15 +03:00
schetnikovich ad9cc86117 Cleanup of SSH tunnel artifacts: sessions, channels, sockets. 2016-03-28 16:34:25 +03:00
schetnikovich 6656494fda Prefix all global or public C identifiers with "rbm_" 2016-03-27 18:23:57 +03:00
schetnikovich 06ac7dd8f1 Global set of SSH channels replaced with separate channels per each worker thread 2016-03-26 11:57:26 +03:00
schetnikovich 76f4d19b42 Logging to Log panel from SSH tunnel worker 2016-03-25 16:17:25 +03:00
schetnikovich d64a1f704b Real-time logging from SSH Tunnel worker thread. 2016-03-25 12:40:14 +03:00
schetnikovich aa27148868 Detailed errors messages for all system calls when establishing SSH tunnel. 2016-03-24 20:40:12 +03:00
schetnikovich 58c42df669 Better error handling when new connection is made (for normal and via SSH tunnel) 2016-03-24 17:16:10 +03:00
schetnikovich 9c0761826b Automatically bind local SSH tunnel to the first available local port 2016-03-22 23:51:43 +03:00
schetnikovich 63f90dfeb3 SSH tunnel on hard-coded local port 2016-03-22 22:28:40 +03:00
schetnikovich 10b31ef2a9 Two-step connection skeleton (SSH tunnel, and then MongoDB connection) 2016-03-22 20:25:36 +03:00
schetnikovich bb3fd81c4d SSH tunnel worker connection and auth 2016-03-19 20:36:05 +03:00
schetnikovich 2cd6ed2928 SSH public key 2016-03-18 18:42:24 +03:00
schetnikovich fde191f6aa SSH tunnel worker sketch 2016-03-18 18:05:01 +03:00
schetnikovich 1c76852b9c Enable C99 support 2016-03-17 16:27:43 +03:00
schetnikovich 2491f417da Loading and saving of SSH settings 2016-03-17 14:43:18 +03:00
schetnikovich 443b8070f2 SSH tab and settings stub 2016-03-15 22:53:07 +03:00
schetnikovich bb51c1395b Separate SSH channels for different socket connections on the same port
* Additional major fix: restored error handling when connectivity is lost
2016-03-15 20:52:51 +03:00
schetnikovich 3e03cf3d88 Single SSH channel for all socket connections 2016-03-13 21:28:37 +03:00
schetnikovich d6a6bf9719 SSH connection, handshake and authentication routines 2016-03-13 17:43:58 +03:00
schetnikovich 3a2a9d1b7d SSH tunnel config 2016-03-12 20:28:59 +03:00
schetnikovich dda68ff53f Direct port forwarding skeleton 2016-03-11 18:26:45 +03:00
schetnikovich 0ef17c6ad7 Libssh2 compilation 2016-03-11 13:47:29 +03:00
schetnikovich ac58d23713 Libssh2 1.7.0 2016-03-10 23:13:25 +03:00
schetnikovich 5971972525 CHANGELOG updated 2016-03-08 13:58:28 +03:00
schetnikovich 4cc6662837 Merge branch 'master' of github.com:paralect/robomongo 2016-03-06 15:52:50 +03:00
schetnikovich 226cbf48d8 CMake print utils changes 2016-03-06 15:52:01 +03:00
schetnikovich 7d9909c247 #1048: Support for CMake 3.0 2016-03-06 15:50:26 +03:00
Dmitry Schetnikovich 649c096e70 Update BuildingMongoDB.md 2016-03-06 12:47:34 +03:00
Dmitry Schetnikovich ce02d5f5c8 Update BuildingRobomongo.md 2016-03-06 12:45:27 +03:00
Dmitry Schetnikovich 90c667011d Update BuildingMongoDB.md 2016-03-06 12:42:22 +03:00
Dmitry Schetnikovich 0622e85e27 Update BuildingMongoDB.md 2016-03-06 12:41:29 +03:00
Dmitry Schetnikovich 355f01f0a4 Update BuildingMongoDB.md 2016-03-06 12:36:59 +03:00
Dmitry Schetnikovich b0d6cf0842 Update BuildingMongoDB.md 2016-03-06 12:35:35 +03:00
Dmitry Schetnikovich 16b15be81b Update BuildingMongoDB.md 2016-03-06 12:30:43 +03:00
schetnikovich 2b7a8ca14e Version updated to RC7 2016-03-03 18:12:23 +03:00
Dmitry Schetnikovich c338813d1c Update BuildingRobomongoOnWindows.md 2016-03-03 17:48:00 +03:00
schetnikovich 2f38d5b00d #1017: Disable editing in View Mode. Button "Validate" is also now hidden in this mode. 2016-03-03 17:09:17 +03:00
schetnikovich 7c6738e32b Config for "clang-format" tool 2016-03-01 20:32:49 +03:00
schetnikovich 86bfeba68a #929: Show keyboard shortcuts for expand/collapse in context menu 2016-03-01 19:40:37 +03:00
schetnikovich a94aa81c07 #1045: Logs are now shown in the panel at the bottom 2016-02-29 20:50:51 +03:00
schetnikovich 080c1ed865 #1042: Double click on collection should not expand it 2016-02-29 16:49:05 +03:00
schetnikovich c6f13e347c Confirmation dialog for BSON editor when ESC is hit and content is modified
And also clone url in documentation is changed to HTTPS instead of SSH, to allow
allow unauthorized cloning.

# Please enter a commit message to explain why this merge is necessary,
# especially if it merges an updated upstream into a topic branch.
#
# Lines starting with '#' will be ignored, and an empty message aborts
# the commit.
2016-02-28 22:26:05 +03:00
schetnikovich 3cea361cc9 Merge of PR #1037 2016-02-28 22:16:31 +03:00
schetnikovich f6546fc336 Minor code cleanup 2016-02-28 22:08:35 +03:00
schetnikovich 8d12ab45c9 Mac way to "expand recursively" in a BSON subtree #929. Implemented by Anton Zering 2016-02-28 21:46:39 +03:00
schetnikovich 7dfd9184b7 Fix for broken keyboard shortcut for single document #1039 2016-02-28 21:09:10 +03:00
Anton Zering 0977bc00e3 #929: adds shortcut to expand nodes recursively 2016-02-25 01:13:31 +01:00
Anton Zering 2ea847ce0b #1039: fixes deletion of single documents with shortcut 2016-02-25 00:51:05 +01:00
Anton Zering fb2b5e0487 #1017: document editor ask to save changes when closing the window 2016-02-23 23:56:06 +01:00
Anton Zering cce30bb55b Changed clone url to use HTTPS instead of SSH
Use HTTPS instead of SSH to allow unauthorized cloning
2016-02-23 22:56:41 +01:00
Dmitry Schetnikovich 98af4fc747 CHANGELOG updated 2016-02-13 16:30:59 +03:00
schetnikovich 2c04edb1b3 List of collections is loading much faster now 2016-02-13 16:19:51 +03:00
Dmitry Schetnikovich e4500e0c5c Generate ZIP archives for Windows 2016-02-13 12:56:48 +03:00
Dmitry Schetnikovich 820c4a86f0 Fix for compilation error under Windows 2016-02-13 12:52:49 +03:00
Dmitry Schetnikovich d6253ca194 Merge pull request #1018 from CaptainPatate/CaptainPatate/fix-typo
Fix typo
2016-02-12 00:26:19 +03:00
schetnikovich 33e27917ee Version RC6 2016-02-11 15:20:06 +03:00
schetnikovich cea04368a9 Support for IPv6 addresses with and without square brackets 2016-02-11 15:19:16 +03:00
schetnikovich fe9eed7322 Removed use of monospaced font in Auth tab 2016-02-10 20:24:26 +03:00
Dmitry Schetnikovich 33304e2e7a README updated 2016-02-10 20:17:43 +03:00
schetnikovich 4cd51a7de6 IPv6 support 2016-02-10 20:16:22 +03:00
Amaury Gauthier 5ffd65b1a2 Fix typo 2016-02-09 15:18:04 +01:00
schetnikovich 82b96f4f63 Merge branch 'master' of github.com:paralect/robomongo 2016-02-06 19:00:45 +03:00
schetnikovich e0ea15adb9 Ad-free Robomongo 2016-02-06 19:00:29 +03:00
Dmitry Schetnikovich 209ce0c0a9 README updated 2016-02-03 14:34:01 +03:00
Dmitry Schetnikovich 620488c318 README updated 2016-02-03 14:31:27 +03:00
schetnikovich a270926397 CHANGELOG updated 2016-02-01 23:08:35 +03:00
schetnikovich 8c830b6f1a Robomongo RC4 2016-02-01 20:50:45 +03:00
schetnikovich 33d58189c4 All operations with MongoDB now over DBClientBase, instead of DBClientConnection 2016-02-01 18:28:21 +03:00
schetnikovich 5d8370a970 Support for SCRAM-SHA-1 and MONGODB-CR authentication mechanisms.
1. Ability to select auth mechanisms for each connection (defaults to SCRAM-SHA-1)
2. Diagnostic Dialog also now uses required mechanisms.
2016-02-01 15:17:10 +03:00
schetnikovich fb3d37e641 Message box with description of error when deleting documents. 2016-01-31 19:36:53 +03:00
schetnikovich b27f747ff2 Handling of errors when inserting/updating/removing documents. 2016-01-31 18:47:50 +03:00
schetnikovich 2854783aeb Always allow to read from slaves. 2016-01-31 17:32:28 +03:00
Dmitry Schetnikovich 4b8aa3deaf Shortcuts now will be created on Windows (on desktop and start menu)
1. A bit simplified syntax is used for NSIS commands
2. All Robomongo CMake files start from "Robomongo" (except "find" packages)
3. Clean uninstallation under Windows (only config file is not deleted)
2016-01-30 20:10:09 +03:00
schetnikovich f5397b7c68 CHANGELOG updated 2016-01-29 21:19:45 +03:00
schetnikovich 047620492c Typo fixed 2016-01-29 16:20:18 +03:00
schetnikovich bf51f5d6c9 Gray text color for hey message 2016-01-29 12:47:37 +03:00
schetnikovich d7f27e16fe Hey message added for the time of campaign. 2016-01-29 07:16:51 +03:00
schetnikovich cfb30c69c0 Merge of BSON utils 2016-01-29 05:00:13 +03:00
schetnikovich 8ed0335b7b Use of std::numeric_limits<double>::digits10 to get max float-point precision
Tests returned back.
2016-01-29 04:58:30 +03:00
Dmitry Schetnikovich 313179dfbe Temporary fix for compilation under Windows 2016-01-28 21:42:52 +03:00
schetnikovich 97503f2e81 Version RC3 2016-01-28 21:15:25 +03:00
schetnikovich 156bda2600 NumberDecimal write protection. 2016-01-28 20:59:48 +03:00
schetnikovich 6a5ad25bde Use of shortest representation for BSON double types.
#870, #831, #921, #842
2016-01-28 20:33:46 +03:00
schetnikovich 6d06a3c83c Cleanup of unused code 2016-01-28 19:50:25 +03:00
schetnikovich 76cb03b523 Correct handling and display of top-most JS/BSON arrays in tree and text modes. 2016-01-27 19:31:43 +03:00
schetnikovich 6a2f8c655e Built-in ISO date parser replaced with ptimeutil 2016-01-25 21:39:32 +03:00
schetnikovich 4f3bf50acd BSON parsing with support for ISODate and UUIDs.
1. Validate Json functionality is back
2. Use of MongoDB built-in parser for ISO Date format
3. Use of MongoDB built-in parser for NumberLong
2016-01-25 21:06:51 +03:00
Dmitry Schetnikovich 84c1679e14 Fix for Windows install directory 2016-01-25 18:39:08 +03:00
schetnikovich 5ce457b6f6 Use versioned install directory for not stable releases under Windows 2016-01-25 18:24:51 +03:00
schetnikovich 071d79b7f7 Uniformed package name for all platforms.
1. All letters are lowercase
2. Includes platform architecture in the name
2016-01-25 17:46:55 +03:00
Dmitry Schetnikovich c4ccae3ef8 Packaging for Windows
1. NSIS package is now generated for Windows
2. Images for NSIS installer added
3. DESCRIPTION file copied to installation package
4. Icon updated to have smaller resolutions (20, 24, 40 and 48)
2016-01-25 17:23:52 +03:00
Dmitry Schetnikovich 3e67fa00d4 Packaging of runtime libraries for Windows 2016-01-24 20:04:54 +03:00
Dmitry Schetnikovich e34ebdf0de Config for 0.9.x versions now namespaced in .config/robomongo/0.9 folder. Loading of .mongorc.js is turned off by default 2016-01-24 19:25:45 +03:00
Dmitry Schetnikovich c6bdd3a455 Multiresolution ICO file for Windows 2016-01-24 18:55:20 +03:00
Dmitry Schetnikovich 81f22b68d7 QAtomicInteger<int> instead of QAtomicInteger<_Bool or bool> 2016-01-24 16:49:18 +03:00
Dmitry Schetnikovich 888084b19b And now we are forced to use int instead of BOOL, because on Unix BOOL doesn't defined and bool cannot be used on Windows 2016-01-24 16:47:16 +03:00
Dmitry Schetnikovich e2ec2a2f0d Forced to use BOOL instead of bool, because on Windows –QAtomicInteger with bool template arg doesn't compile 2016-01-24 16:37:31 +03:00
schetnikovich e80245ba15 Bug fixed which made MongoWorker shutdown unsafe and incorrect. Proposed and implemented by Patrick Horlebein. 2016-01-24 16:22:02 +03:00
schetnikovich 3ef94811eb Migration notes updated 2016-01-24 15:13:56 +03:00
schetnikovich d78ff306e4 Removed notion about v0.9 branch in docs (which is merged with master) 2016-01-24 14:55:18 +03:00
Dmitry Schetnikovich 06285eb556 Merge pull request #996 from paralect/v0.9
Merge with v0.9 branch
2016-01-24 14:47:50 +03:00
schetnikovich 0a4378b9fc Always Use QProxyStyle (thanks to Patrick Allaert) 2016-01-24 14:33:50 +03:00
Dmitry Schetnikovich 8472201a36 Merge pull request #999 from alexbevi/patch-1
Sort system.js functions by name (_id)
2016-01-24 14:21:23 +03:00
Dmitry Schetnikovich 554d3f4950 Parallel build enabled for VS 2016-01-24 14:09:57 +03:00
Dmitry Schetnikovich 300713d1ad Temporary empty environment used when running under Windows 2016-01-23 21:57:17 +03:00
Dmitry Schetnikovich 0c06122b36 Documentation for building Robomongo under Windows updated 2016-01-23 21:47:13 +03:00
Dmitry Schetnikovich 08bf485229 Note to documentation added about use of SSH agent in Git Bash. 2016-01-23 21:39:33 +03:00
Dmitry Schetnikovich 0b3bc255e6 Fix for install.bat under Windows 2016-01-23 21:31:53 +03:00
Dmitry Schetnikovich c8f0acf144 MongoDB debug objects and support for debug builds on Windows. 2016-01-23 20:15:35 +03:00
Dmitry Schetnikovich 6152d64d6a Installation batch frontend for Windows 2016-01-23 19:42:16 +03:00
Dmitry Schetnikovich 916daa76c9 Windows build configuration
1. Platform integration plugins are now installed for Windows
2. Installation of Qt libraries for Windows
3. Warnings that are turned off in MongoDB code,  also turned when compiling Robomongo
2016-01-23 19:40:56 +03:00
Dmitry Schetnikovich 9636f5f0f5 Windows standard libraries 2016-01-22 22:03:57 +03:00
Dmitry Schetnikovich bda503d3c9 Compilation of QScintilla and QJson on Windows. 2016-01-22 21:30:15 +03:00
Dmitry Schetnikovich d39a79b121 Merge branch 'v0.9' of github.com:paralect/robomongo into v0.9 2016-01-22 20:09:00 +03:00
Dmitry Schetnikovich 68cd7ecc70 Towards Robomongo for Windows
1. Build objects for MongoDB in release mode
2. Shell frontend for common build operations
3. Support for basic packaging in installation phase
2016-01-22 20:07:54 +03:00
schetnikovich 3e82292cfc Prerequisites documentation for building Robomongo for Windows platform 2016-01-22 17:23:19 +03:00
schetnikovich f825309d6e Documentation stab for Building Robomongo on Windows 2016-01-21 21:38:12 +03:00
schetnikovich 852c7041d2 Safer operation for directory removing 2016-01-21 14:50:22 +03:00
schetnikovich a9e24caf67 Documentation updated for building Robomongo and MongoDB fork 2016-01-21 14:31:04 +03:00
schetnikovich f006547b37 Support for Mac SDK 10.9 2016-01-21 13:55:32 +03:00
schetnikovich fb796ce1c4 Style changes for Mac platform 2016-01-20 20:43:27 +03:00
schetnikovich 20301dd0dd Qt "qt.conf" file used for installation phase and some build code cleanup made. 2016-01-20 16:54:18 +03:00
schetnikovich 8178aa91d2 RuntimeDependencies.md troubleshooting guide 2016-01-20 13:18:44 +03:00
schetnikovich 47f963f7dc Getting rid of "robomongo.sh" on Linux.
1. RPATH is now used for both Linux and Mac
2. File "qt.conf" now embedded to binary for all platforms
2016-01-19 21:44:26 +03:00
schetnikovich dade11a029 Documentation stub for BuildingRobomongo.md 2016-01-19 20:09:56 +03:00
schetnikovich 4225dda194 Fix for 'bin/run' utility when run under Mac 2016-01-19 19:59:29 +03:00
schetnikovich e1fdff1db7 DMG .DS_Store file 2016-01-19 19:13:12 +03:00
schetnikovich 369a79b110 Creation of Application Bundle for Mac with all dependencies 2016-01-19 17:35:53 +03:00
schetnikovich a692d66106 Installation of frameworks for Mac 2016-01-18 20:48:08 +03:00
schetnikovich 5957ad03ab Readme for icns regeneration 2016-01-18 17:48:58 +03:00
schetnikovich 7dbba28a18 Logo in icns format added 2016-01-18 17:46:09 +03:00
schetnikovich 0c260945b1 Raw iconset for new logo 2016-01-18 17:41:40 +03:00
Alex Bevilacqua 9aaf94fb06 Sort system.js functions by name (_id) 2016-01-17 20:27:18 -05:00
schetnikovich 2ffc14a778 Creationg of databases fixed for MongoDB 3.x 2016-01-17 19:46:00 +03:00
schetnikovich 8910b2f0cb Default settings restored 2016-01-17 19:02:30 +03:00
schetnikovich e2323967e8 Correct background color for TabBar on Linux 2016-01-17 18:43:34 +03:00
schetnikovich d6fdffd59b First steps to style Tab bar for Mac 2016-01-17 18:28:37 +03:00
schetnikovich fd08b27857 Window position for main window and JSON editor now relative to screen size. 2016-01-17 16:31:23 +03:00
schetnikovich a6babd6e0e Bash helper script to run application 2016-01-17 14:38:02 +03:00
schetnikovich 7f371314ce List of MongoDB debug objects 2016-01-16 21:34:41 +03:00
schetnikovich 75e82917aa Compilation for Mac OS 2016-01-16 20:44:35 +03:00
schetnikovich 1befc7e7c5 Mac OS dependencies 2016-01-16 19:27:10 +03:00
schetnikovich ce86901784 Missed DBus library for Linux 2016-01-16 14:38:16 +03:00
schetnikovich 1e40dfa2c0 Several tweaks for building and packaging
1. Linux specific dependencies added
2. Current git commit hash added to package file name
3. Now we use known target Qt5::Core to find Qt lib folder
2016-01-16 14:09:58 +03:00
schetnikovich aa12fbe1c2 Fix installation and packaging for Linux 2016-01-16 13:34:08 +03:00
schetnikovich 510e699bbe Bash frontend intro documentation 2016-01-15 20:48:01 +03:00
schetnikovich 5956997e94 Bash frontends for CMake on Unix-like OSes
1. bin/configure to run CMake configuration
2. bin/build to run CMake build generator
3. bin/install to run CMake 'install/strip' target
4. bin/pack to run CMake 'package" target
5. bin/clean to completely clean 'build' folder
2016-01-15 20:42:13 +03:00
schetnikovich 6cd40d17fe TGZ package creation for Linux 2016-01-15 18:27:30 +03:00
schetnikovich e48fae561b Strip debug info when creating package 2016-01-15 17:54:58 +03:00
schetnikovich b814924352 Do not compile unused lexers for Scintilla (only CPP and JS are left) 2016-01-15 17:35:56 +03:00
schetnikovich dc674d1991 Identified set of Scintilla lexers that are not needed for Robomongo. 2016-01-15 17:15:46 +03:00
schetnikovich f3ecf42f9f PackageRobomongo.cmake added 2016-01-15 17:05:02 +03:00
schetnikovich c5f6f68225 Use relative paths in DESTINATION param of install() command. 2016-01-15 17:00:57 +03:00
schetnikovich 7aaaf6abb6 Several build tweaks for Linux (tested both for release and debug).
1. CMAKE_POSITION_INDEPENDENT_CODE turned on
2. THREADS_PREFER_PTHREADS_FLAT turned on as recommended in module documentation
3. Configuration summary moved to separate file
4. Cleanup of used CXX flags (only -fPIC and -std=c++11 are used for now)
5. Usage of Threads::Threads target instead of explicit link to "pthreads"
2016-01-15 15:35:48 +03:00
schetnikovich 63c942bd20 Installation of Qt plugins 2016-01-15 06:18:58 +03:00
schetnikovich ebbef08258 Robomongo configuration summary updated 2016-01-14 20:30:01 +03:00
schetnikovich 1aff489efe Installation of wrapper script and required ICU libraries 2016-01-14 20:26:09 +03:00
schetnikovich 83e088870e Qt5 libraries copied: Core, Gui and Widgets. 2016-01-14 19:23:10 +03:00
schetnikovich 173a4e7912 Install scripts for Linux. Qt5 libraries copied for distribution. 2016-01-14 19:22:28 +03:00
schetnikovich 9ba567752a JIT enabled (and new icon added :) 2016-01-13 19:48:27 +03:00
schetnikovich f0f0d448ae MongoDB ScriptEngine seems no longer needs to be cleaned 2016-01-13 19:11:14 +03:00
schetnikovich 63f63c4142 Diagnostic output removed from dbshell 2016-01-13 03:18:41 +03:00
schetnikovich 0a135a08b0 CMAKE_INCLUDE_CURRENT_DIR turned off 2016-01-13 03:10:01 +03:00
schetnikovich 802b15228c Several changes
1. Added missed BUILD_MINSIZEREL check
2. Cleanup of robomongo/CMakeLists.txt
3. Removed OS_WIN, OS_MAC and OS_LINUX definitions
4. Q_OBJECT added back to JSLexer
5. Manual moc for QScintilla (automatic doesn't work)
2016-01-12 21:24:49 +03:00
schetnikovich 2459a92a23 Switched to object linking mode with MongoDB instead of static libs.
1. List of objects now read from files
1. Release builds now supported for Linux (and by default)
2. Process of creation of object files is documented
3. In configuration summary we now show Build Type.
2016-01-12 18:52:47 +03:00
schetnikovich 34fc597cc8 FindMongoDB.cmake changes 2016-01-12 16:12:41 +03:00
schetnikovich 13483d3ea2 DefineDefaults.cmake with platform and build type checks 2016-01-11 20:15:14 +03:00
schetnikovich 2776da3660 Formating fix 2016-01-11 19:35:42 +03:00
schetnikovich d819ab361a Default CMAKE_BUILD_TYPE is RelWithDebInfo 2016-01-11 19:33:59 +03:00
schetnikovich 85cbe8e9cd CMake cache cleanuped. All unnecessary cache entries removed 2016-01-11 19:04:25 +03:00
schetnikovich 519fea6f66 FindMongoDB.cmake: INTERFACE IMPORTED instead of STATIC IMPORTED 2016-01-11 15:44:25 +03:00
schetnikovich f35aba90ab Minor changes in file names 2016-01-10 20:30:41 +03:00
schetnikovich 567c2cc2ad FindMongoDB.cmake module now publishes IMPORTED target with all required include dirs, libs and definitions 2016-01-10 20:22:59 +03:00
schetnikovich 47576ae8c0 FindMongoDB.cmake module integrated with Robomongo 2016-01-10 19:14:20 +03:00
schetnikovich b25b33a3a1 CMake target interface is used, instead of DIRECTORY scoped definitions and other compile options 2016-01-10 18:11:23 +03:00
schetnikovich 745bc86275 Readme updated 2016-01-10 17:22:12 +03:00
schetnikovich 128ef1e6fc QScintilla sources moved to third-party/qscintilla/sources folder. README file added 2016-01-10 17:09:48 +03:00
schetnikovich b550bb287a QJson sources moved to /third-party/qjson/sources folder. README file added 2016-01-10 16:54:22 +03:00
schetnikovich 0beb3c886a CMake scripts for QScintilla 2016-01-10 16:10:04 +03:00
schetnikovich b472e90849 CMake script for QJson 2016-01-10 15:41:02 +03:00
schetnikovich 16e09e7e82 Compilation and linking on Linux against MongoDB 3.2
1. Cleanup of CMake (in progress)
  2. FindModule for MongoDB (in progress)
2016-01-09 20:03:55 +03:00
schetnikovich 0eafa778b0 Tada! Robomongo embeds MongoDB 3.2 shell and runs. But for now it cannot connect to MongoDB :). This should be investigated in next days 2016-01-06 22:13:27 +03:00
schetnikovich f8f6f08de9 LogWidget now linked successfully 2016-01-06 21:11:57 +03:00
schetnikovich 226ebe0c75 Files in gui folders dialogs, editors, utils and widgets are compiled and linked 2016-01-06 20:59:45 +03:00
schetnikovich 8c59a8bebb New set of compiled and linked units 2016-01-06 20:48:44 +03:00
schetnikovich 08c72911c5 More compiled and linked units 2016-01-06 20:42:26 +03:00
schetnikovich 71ba8cf9e5 Logbook of migration notes 2016-01-06 20:19:57 +03:00
schetnikovich 81c27fe5dc Successfully linked against upgraded QScintilla2 2016-01-06 20:05:24 +03:00
schetnikovich a04773ccf3 Scintilla upgraded from 3.3.6 to 3.5.4. QScintilla wrapper upgraded from 2.8.4 to 2.9.1 2016-01-06 19:51:40 +03:00
schetnikovich 7273f790d6 Two additional files compiled and linked successfully 2016-01-06 19:47:39 +03:00
schetnikovich b69647d881 Third isolated scope of compilation units 2016-01-06 19:33:42 +03:00
schetnikovich 7226577fcb New isolated set of compilation units compiled and linked successfully 2016-01-06 19:11:23 +03:00
schetnikovich f323fa8b88 Compilation of isolated set of files. Log severity now uses new mongo::logger::LogSeverity() class 2016-01-05 20:31:12 +03:00
schetnikovich 875094a359 Linking with roboshell 2016-01-05 07:19:28 +03:00
schetnikovich 38e7d29a8f BsonUtils and Logger 2016-01-05 02:33:42 +03:00
schetnikovich c716ea4b30 StdUtils, QtUtils and Logger 2016-01-04 21:13:08 +03:00
schetnikovich a2c398540b CMake utils 2016-01-04 17:30:33 +03:00
schetnikovich 4d821f1261 Shell code moved to trash 2016-01-04 14:14:39 +03:00
schetnikovich baaac575c1 Radical project cleanup 2016-01-04 14:07:46 +03:00
schetnikovich ba78c201b8 Ignore vim's *.swp files 2016-01-04 13:31:16 +03:00
schetnikovich 0ec8d76220 Upgraded to newer version of QJson 2016-01-03 20:39:31 +03:00
8032 changed files with 73636 additions and 1822687 deletions
+2 -7
View File
@@ -7,6 +7,7 @@ CMakeLists.txt.user*
.scons
*.kate-swp
*.swp
target/
target-debug/
@@ -18,8 +19,6 @@ libs/
/src/robomongo/robomongo.pro.user.1.3
/src/third-party/mongodb/src/third_party/js-1.7/jswgen
.idea/
# Created by http://www.gitignore.io
@@ -33,6 +32,7 @@ libs/
# Compiled Dynamic libraries
*.so
*.so.*
*.dylib
*.dll
@@ -79,11 +79,6 @@ libs/
*.pro.user
*.pro.user.*
*.moc
moc_*.cpp
qrc_*.cpp
ui_*.h
Makefile*
*-build-*
# QtCreator
+537
View File
@@ -0,0 +1,537 @@
Latest Version:
Robomongo 1.0 (21 Apr, 2017)
http://blog.robomongo.org/robomongo-1-0
Robomongo 1.x:
Major Features:
- Replica set support.
- Update Notifications Bar
- Welcome Tab
- New operation logging for almost all operations.
Major Fixes/Improvements:
- Improved error handling (no double error windows) for almost all operations.
- Timestamp value is represented incorrectly (https://github.com/Studio3T/robomongo/issues/1159)
- Local Timezone shows wrong date (https://github.com/Studio3T/robomongo/issues/501)
* What's new in patch 1.0.3 (7 June, 2017)
- Attempt to prevent MAC OS Sierra crash related to updates notification bar
* What's new in 1.0 (21 Apr, 2017)
New Features:
- Update Notifications Bar
- Welcome Tab
- Welcome Wizard
Improvements:
- Replica set name configurable on UI
- Configuration file system location change
- "About Robomongo" dialog changes
Fixes:
- Fix to avoid the same set name problem (https://github.com/Studio3T/robomongo/issues/1302)
- Timestamp value is represented incorrectly (https://github.com/Studio3T/robomongo/issues/1159)
- Local Timezone shows wrong date (https://github.com/Studio3T/robomongo/issues/501)
- Time zone shown as "000:00" when UTC +00:00 is used as local timezone(https://github.com/Studio3T/robomongo/issues/1309)
* What's new in 1.0-RC1 (1 Feb, 2017)
New Features:
- Replica set support.
- New 'Attributes' column in connections list window showing connection properties such as 'Replica Set', 'SSL' and 'SSH'.
- New operation logging for almost all operations.
Improvements:
- Improved error handling (no double error windows) for all fail and success conditions for the following operations:
. Create, Drop Database
. Create, Edit User
. Create, Drop, Duplicate, Rename Collection
. Insert Document
. Remove document, Delete document, Remove all documents (triggered both from explorer and from result widget)
. Refresh Users
. Refresh Functions
. Refresh Collections
. Connection establish & refresh server fail and success cases.
- Windows size is saved and restored for Edit, View and Insert Document dialogs.
- Connections are automatically imported from the latest Robomongo version.
- Better error reporting/handling and logging have been added for the operations below:
. Create, Drop Function
. Drop User
- More informative and adjusted log level prefix strings haven added for log window. (Error, Warn, Info etc..).
- After a new connection is created, now the focus goes to the newly created connection (end of list) instead of the
beginning of connections list. And when Robomongo is opened, the focus goes to the end of the connection list instead
of beginning.
- Error messages added and error handling for 'remove document', 'remove all documents' operations triggered explorer
and single or multi 'delete document' from results window have been re-implemented and improved.
- Relevant errors are shown for the following cases now:
. Drop attempt of non-existing collection.
. Duplicating a collection with a collection name which already exists finishes silently.
Fixes:
- Fix for the problem where the connections list comes empty if the Robomongo config file or it's directory do not exist.
- Fix for the problem where 'in-progress bar' widget was not centered on main window for "Update Documents/Remove Documents"
operations. https://github.com/paralect/robomongo/issues/1256
- Fix for two problems where the operations 'insert or update documents' in one tab was causing auto reloading of other
unrelated tabs and also multiple error windows to popup. https://github.com/paralect/robomongo/issues/1236
- Fix for the problem where the operations 'remove document', 'remove all documents' triggered explorer and single or
multi 'delete document' from results window were causing auto reloading of other unrelated tabs.
Robomongo 0.9:
Major Features:
- Support for MongoDB 3.x and WiredTiger engine. Robomongo now embeds MongoDB 3.2 shell.
(Ability to use the latest shell functionality)
- SSH tunnel support for connections
- SSL support
- MongoDB Atlas (Cloud MongoDB) support
- Both MONGODB-CR and SCRAM-SHA-1 authentication mechanisms are supported.
- Allow direct connections to Replica Set members and support IPv6 protocol.
- Loading of huge list of collections is now faster.
- Create Collection dialog is now expandable to support all advanced options.
(Supporting all major mongoDB versions 3.2, 3.0, 2.6 and all storage engine types (WiredTiger
and MMAPV1) is added.)
- Windows High DPI support.
- Full size editor with dockable output window.
Fixed:
- Incorrect representation of floating-point numbers (fixed since RC3). This bug was a reason of a big number of issues:
#910, #748, #697, #699, #760, #815, #870, #892,
#894, #905, #945, #974, #978, #990, #831, #842
- SSH connection failure to servers on Ubuntu and OS X with the following error:
"Resource temporarily unavailable. Error when starting up SSH session: -8" (#1090)
What's new in 0.9.0 Final (30 Sep, 2016)
http://blog.robomongo.org/robomongo-0-9-0-final/
New Features:
- Full size editor with dockable output window.
- New JSON object context menu items: "Copy Name" and "Copy Path" are added.
- New database context menu items: "Current Operations" and "Kill Operation" are added.
- Minimize to Tray Icon for Windows.
Other Changes
- Cloud platforms Compose, mLab and Amazon EC2 were tested and added as supported platforms.
- Maximize/Restore result button behavior and icon have been improved.
- For better code quality and code reviews, Robomongo Code Quality and Robomongo Code Review pages have been created.
https://github.com/paralect/robomongo/wiki/Robomongo-Code-Review
https://github.com/paralect/robomongo/wiki/Robomongo-Code-Quality
What's new in RC10 (Aug 8, 2016)
http://blog.robomongo.org/robomongo-rc10/
New Features:
- SSL connections with advanced options are now supported.
- MongoDB Atlas (Cloud MongoDB) is supported.
- Cross Platform High DPI enhancements.
Enhancements:
- For better security, OpenSSL has been upgraded to OpenSSL 1.0.1p.
- Qt has been updated from Qt 5.5 to latest Qt 5.7. With this update there are many
enhancements including cross platform High DPI support.
What's new in RC9 (May 30, 2016)
http://blog.robomongo.org/robomongo-rc9/
New Features:
- Create Collection dialog with advanced options.
- New feature has been added to save/restore window sizes. (#1102)
- Connection settings from previous versions of Robomongo are
now automatically imported starting from Robomongo 0.9.0 RC9. (#1086)
- Support for querying documents by UUIDs is added, both in legacy and new encoding. (#432)
Fixed:
- SSH connection failure to servers on Ubuntu and OS X with the following error:
"Resource temporarily unavailable. Error when starting up SSH session: -8" (#1090)
- Correct handling of create/drop of databases and collections. (#1083)
What's new in RC8 (April 14, 2016)
http://blog.robomongo.org/robomongo-rc8/
What's new in RC7 (March 4, 2016)
http://blog.robomongo.org/robomongo-rc7
What's new in RC6 (February 13, 2016)
http://blog.robomongo.org/ipv6-protocol
What's new in RC5 (February 8, 2016)
http://blog.robomongo.org/campaign-is-over-robomongo-is-not/
What's new in RC4 (February 1, 2016)
http://blog.robomongo.org/robomongo-rc4
What's new in RC3 (January 29, 2016)
http://blog.robomongo.org/robomongo-0-9-0-rc3-released
What's new in RC2 (January 26, 2016)
http://blog.robomongo.org/robomongo-rc2-for-windows-mac-os-x-and-linux
What's new in RC1 (January 17, 2016)
http://blog.robomongo.org/robomongo-rc1-with-full-support-for-mongodb-3
0.8.5 / March 10, 2015
Release 0.8.5 is now deprecated because of a critical bug, that is
described here: http://blog.robomongo.org/robomongo-0-9-0-rc3-released
We recommend to use Robomongo 0.9.0 or newer.
* [Stephen Steneker]
- OS X build fixes for XCode 5 / libc++ (#524)
- OS X specific keyboard shortcut tips (#505)
- View documents fail if collection name is "group" (#414)
- Problem with slash in collection names (#404)
- Add shortcut to open JS file (#408)
- Fullscreen mode not working on OS X (#519)
- Usability request - add initial curly braces to command bar (#506)
- TTL index should allow expiry of 0 seconds (#500)
- Add line numbers to JSON editing windows on OS X (#449)
- Add user preference to have line numbers displayed by default (#564)
- Space after document causes validation error (#544)
- Expand current server as soon as you connect to it (#405)
- Switching tabs using standard keys on OS X (#87)
- Cannot make the Edit Document Window smaller (#548)
- Consistent numbering for tree/table/text view items (#421)
- Reload Query with keyboard shortcut doesn't work (#551)
- Rename "Reload" to "Re-execute query" (#447)
- Add "Copy Timestamp from ObjectId" to context menu for ObjectId fields (#559)
- Bug: Type of Double changed to Int32 on save document (#622)
- "Duplicate Query In New Tab": add to Window menu with keyboard shortcut (#631)
- No errors logged if settings directory cannot be created or settings file cannot be written to (#636)
- Show execution time for operations that don't return results (#455)
- Disable broken "Copy Collection to Database" misfeature (#398)
* [Vladimir Belozyorov]
- View mode reset to default after no results (#509)
- Comment / uncomment selected code in the shell (#467)
- Passphrase and password should be hidden in authentication tab (#433)
- Cursor initialization - place between curly brackets for default find({}) query (#592)
- Include full date/time for log entries (#596)
- Option to disable selected code autoexecution when opening a new tab (#514)
- Tooltip fixes to match current keyboard shortcuts (#598)
- Expand/collapse multiple selections (#591)
- Changes in toolbars visibility are saved in config file (#457)
- Include connection name under shell tabs (#47)
* [Sergey Gavruk]
- SettingsManager typo (#558)
- Ability to disable autocompletion (#512)
* [Kanstantsin Kamkou]
- Increase display width for limit & offset input fields (#458)
* [volans-]
- CreateUserDialog.cpp: fixed typo in warning message
* [Andres Kievsky]
- Added new app icon in a variety of png and iDraw formats (#693)
* [Michael Steinacher]
- Retina text display support (#724)
0.8.4 / November 27, 2013
Read about updates in this version here:
http://robomongo.org/whats-new-in/robomongo-0.8.4.html
RC1:
* SSH support (#117)
* SSL support (first steps) (#100)
* Create or edit index problem (#341)
* Regexp error (with non-latin symbols) (#351)
* Support for latin characters in edit document console (#347)
* Robomongo fails to execute shell "comments" if the comment contains a non-latin character! (#334)
* Crash when add ISODate field (#350)
* Crash at executing several disconnections in a row (#290)
* Deleting multiple documents prompts for each document (#386)
* Connection context menu appears independently of position of Robomongo instance.
* Crash at pressing "Ctrl+T" without any connection.
RC2:
* SSH now works on Mac OS X Mavericks (#401)
* Fixed crash when parsing date (#356)
Final:
* Selected view mode of result panels now preserved between executions. Implemented by Vladimir Belozyorov (github.com/VBelozyorov) (#402)
0.8.3 / October 1, 2013
Read about updates in this version here:
http://robomongo.org/whats-new-in/robomongo-0.8.3.html
* Enable query logging (#108)
* Inserting multiple documents from UI (#173)
* Removing multiple documents from UI (#174)
* Retain current view mode when running search (#93, #79)
* Left panel collections/functions/users navigation doesn't work when authenticating against the DB (#282)
* A way to disable Alt + number shortcut (#192)
* Support mongodb 2.4.x style users (#139)
* Add "Copy JSON" menu item to context menu (#298)
* JSON list validation (#246)
* Crash creating new Database (#291)
* Incorrect handling of TTL Indexes (#313)
* Add the document _id in the tree view (#142)
* BSON Undefined type doesn't rendered to string correctly (#306)
* Entering incorrect symbols as database name isn't handled properly (#262)
* Ability to select UI theme
* We now show number of fields (inside objects) and number of items (inside arrays) in Tree View.
* Support for Mac OS X 10.6 (#287)
* Support for Mac OS X 10.9 (#254)
0.8.2 / September 13, 2013
Read about updates in this version here:
http://robomongo.org/whats-new-in/robomongo-0.8.2.html
0.8.1 / September 6, 2013
Read about updates in this version here:
http://robomongo.org/whats-new-in/robomongo-0.8.1.html
* Table Mode (in this version, only for the first-level fields in documents) (#72)
* Paging Widget tweaks (#247, #203, #244, #243)
* ~/.robomongorc.js file is loaded automatically when new shell is opened
(c:\Users\Name\.robomongorc.js for Windows)
* "Load .mongorc.js" menu item in "Options" top-level now allow to enable/disable loading
of ~/.mongorc.js file. By default it will not load this file.
* Batch Size now configurable (in this version only manually via ~/.config/robomongo.json)
* JSON parser doesn't correctly parse numbers when locale isn't en_EN (#246, #253)
* "Display Dates In" options doesn't saved/loaded correctly (#261)
* [Linux] Support for CentOS
* [Linux] Linux packages now takes 2x less space (10mb instead of 20mb)
* [Windows] Desktop icon isn't created despite corresponding checkbox was checked at installation. (#260)
* [Windows] Invalid symbols in installer for Windows if display language of system isn't English (#259)
0.8.0 / August 23, 2013
Read about updates in this version here:
http://robomongo.org/whats-new-in/robomongo-0.8.0.html
* Ability to save and load files for currently opened shell (#96)
* MongoDB Index management (#74)
* Expand all children recursively (#106)
* Ability to toggle line numbers (press F11) for any editor in Robomongo (#112)
* View Mode settings is persisted now (thanks, Luke Thompson!) (#114)
* Search capability for any editor in Robomongo - press (Ctrl + F) (#32)
* Timezone support: UTC or Local (#224)
* Auto-complete on "Tab" (#95)
* Fixed incorrect handling of Dates (#111)
* Fixed incorrect handling of collections with leading underscore (_) symbol (#109)
* Fixed incorrect rendering of float numbers (#115)
* Fixed incorrect handling of Int64 numbers (#157)
* Fixed incorrect parsing of DBRef sub-objects (#113)
* New build system, based on CMake. Greatly simplified build and package process.
* Qt updated to 5.1 version.
* QScintilla updated to 2.7.2 version.
0.7.1 / April 13, 2013
* Fixed crash when right-clicking on non-primitive elements in Tree View (#85)
* Alt + Cmd + Arrow for switching tabs on Mac (#82)
* Several minor bugs fixed (including #82)
0.7.0 / April 4, 2013
* Support for UUIDs (read more: http://robomongo.org/articles/uuids.html)
0.6.9 / April 3, 2013
* Password is hidden by default (#65)
* Fixed incorrect rendering of large values for the db.stats() results (#70)
* Collection names with invalid (for JS var name) characters now rendered correctly (#71)
0.6.8 / April 1, 2013
* Support for '~/.mongorc.js'
* Various Mac OS X UI fixes
* Fixed crash when pressing Ctrl + W (#60)
* "Copy Value" context menu item for documents in Tree View
0.6.7 / March 26, 2013
* Fixed creation of new tabs based on the current one. Before this fix initial
database for new tab wasn't identical to the "parent". (#56)
* Support for collections that starts from digits (#54)
* [Sergey Gavruk] Duplicate Collection feature (Collection -> Duplicate Collection
* Collection -> Reindex will not run immediately, as before
* Fixed incorrect disposing of tabs resources (connections etc.) (#42)
* [Stephen Steneker] Fixed KeepAlive invalid commands, when not authorised (#41)
* [Sergey Gavruk] Various Mac OS X UI fixes.
0.6.6 / March 23, 2013
* Fixed possible crash when viewing results in text mode (#34)
* Fixed possible crash when testing connection (Diagnostic window)
* Memory leak in explorer's database tree fixed.
0.6.5 / March 17, 2013
* Fixed "Dropped connection" issue (#28).
* Windows Installer now be used to destribute Robomongo.
0.6.4 / March 10, 2013
* Support for JS functions. Create/Edit/Remove/View.
* Loading indicators (three dots for now) for Server, Collections, Functions and Users.
* Count indicators for Server (number of databases), Collections, Functions and Users.
* No need to type "functionName.toString()". You can output source of function
by simply typing its name (like in the shell).
* Support for RegEx, Code and CodeWScope bson elements. But you still cannot edit
documents which contains Code or CodeWScope bson elements.
* About dialog added.
0.6.3 / March 5, 2013
* Script execution can be stopped (this works only for JS code in SpiderMonkey VM) (#23)
* Toolbar buttons shown only if needed (#21, #20)
* MongoDB Connections window opens when application starts.
* Some changes in menu items locations (#25, #26)
* View Mode buttons moved to Options menu.
* Full Screen and Logs functionality hidden right now (postponed for versions after Robomongo 1.0)
0.6.2 / March 4, 2013
* "Users" folder now shows list of users.
* User can be added (Database -> Add User)
* User can be edited (User -> Edit User)
* User can be removed (User -> Remove Users)
* Users can be refreshed (Users (folder) -> Refresh Users)
* List of users can be viewed in the shell (Users (folder) -> View Users)
0.6.1 / March 2, 2013
* Minor script editor and viewer tweaks
0.6.0 / Feb 28, 2013
* Database can be created from UI (Server -> Create Database)
* Database can be dropped from UI (Database -> Drop Database)
* Collection can be created from UI (Database -> Create Collection)
* Collection can be dropped from UI (Collection -> Drop Collection)
* Collection can be renamed from UI (Collection -> Rename Collection)
* All documents can be removed from UI (Collection -> Remove All Documents)
* Minor tweaks in naming of context menu items.
0.5.7 / Feb 27, 2013
* Support for Custom View Modes. First custom view implemented for "db.printCollectionStats()" query. You
still can view multiple output results, even if one of them presented in custom mode.
* "Show Log" context menu item for servers in Explorer.
0.5.6 / Feb 26, 2013
* Support for one-line MongoDB commands ("show dbs", "show collection", "use somedb" etc.). This commands can
be repearted (this will result in multiple output results) or they can be used together with ordinary JavaScript.
The only rule: this command should be the only text on the line, starting from the very beginning of the line.
* Refresh of databases and collections via "Refresh" context menu item.
* This version of Robomongo is the first version compiled in release mode. It works much more faster and uses lower
amount of memory.
0.5.5 / Feb 22, 2013
* New document can be added in a more user friendly way. There are two ways to do it:
1) Right-click on collection in Explorer and select "Insert Document"
2) Right-click at any place of Tree View and select "Insert Document"
* Better formatting of JSON with correct indention.
* Support for ISODate(...) factory function in JSON parser and builder. Date in JSON mode now always
displayed as ISODate(...), like in the shell. Document Editor accepts dates in two forms:
as "new Date(<millisecs>)" and "ISODate(<iso_8601_date_string>)" (this behaviour identical to MongoDB shell behaviour)
* Document editor implemented. Right-click on document in Tree View and select "Edit".
* Document viwer implemented. Right-click on document in Tree View and select "View".
* You can delete selected document in Tree View. (Right-click and select "Delete")
* Validation of JSON in Document Editor/Viewer with error report, highlighting of errors and
cursor positioning just where error is.
* Fixed problem with "signed" dates (dates before Unix Epoch) (#5)
* Fixed problem with UTF-8 (#17)
* Fixed problem with loading indicator in Explorer (#18)
0.5.2 / Jan 26, 2013
In this version autocompletion in Robomongo becomes mostly usable.
* AutoCompletion box now placed just near text you typed (in correct line and column)
* AutoCompletion now works in the middle of the text (not only at the end of line, as before)
* Ctrl + Space will trigger autocompletion for symbols under cursor.
* If you select function in autocompletion box, their open parenthesis will overwrite existing in the text, if such available.
0.5.1 / Jan 24, 2013
* Several autocompletion tweaks.
0.5.0 / Jan 24, 2013
* AutoCompletion. First version.
* Progress indicator for shells.
* Shell result panels now have equal size, if this is possible.
* Code cleanuped a bit.
0.4.6 / Jan 11, 2013
* Tooltip for collections with count and size.
0.4.5 / Jan 8, 2013
* WARNING: configuration file schema changed. Some properties will be
empty in Connection Settings Dialog. Please fill them again.
* Connection test (diagnostic) implemented.
* Indicators in the shell: current server, database and collection (if available)
This indicators are "real" - they respect your actual query.
* Execution time measurement. Displayed for each individual output result.
* Paging for each output result with respect to filtering, ordering, fields,
limit, skip etc. of actual text query (pilot version).
* Connection cloning support in Connections Dialog.
* Databases and collections now displayed in sorted order.
* Batch size extended to 50 documents.
* New shape of Shells.
* New shape of Connection Settings Dialog
* New shape of Connections Dialog.
0.4.0 / Dec 26, 2012
* No more "type 'it' for more results" when we have more than 20 objects in collection.
* Two global modes added - text and tree modes. Switch between them using F3 and F4.
* Two local modes added - text and tree modes. Switch between them using small
icons on Output panels for each resultset.
* Improved performance of json creation (from list of documents).
* Tooltips for tool buttons added.
* Maximization of output panel implemented (via small icon at the top right of output panel)
Click second time to restore back.
* Fix for not working Ctrl-O key shortcut (that opens Connections menu).
0.3.5 / Dec 25, 2012
* Context menu for server, database and collection.
* Tab management (Ctrl+Tab, Ctrl+Shift+Tab, Ctrl+T, Ctrl+F4)
* Context menu for tab
* Submenu for Connect button with connections.
* Hotkeys for first 9 connections (Alt+1, ..., Alt+9)
* Connections reordering via drag'n'drop in Connections dialog.
* Correct focus placement when opening new connection and switching tabs.
* Bonus: F12 - opens connections menu from any place.
* Memory leaks fix.
+44 -284
View File
@@ -1,288 +1,48 @@
cmake_minimum_required(VERSION 2.8.0)
if(POLICY CMP0048)
cmake_policy(SET CMP0048 OLD)
cmake_minimum_required(VERSION 3.0.0)
project(Robomongo)
# Where to look first for CMake modules, before "${CMAKE_ROOT}/Modules" is checked
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/cmake")
# Project version
set(PROJECT_VERSION_MAJOR "1")
set(PROJECT_VERSION_MINOR "0")
set(PROJECT_VERSION_PATCH "3")
set(PROJECT_VERSION_BUILD "")
set(PROJECT_VERSION "${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH}${PROJECT_VERSION_BUILD}")
# Modules
include(RobomongoPrintUtils)
include(RobomongoCMakeDefaults)
include(RobomongoDefaults)
include(RobomongoCommon)
include(RobomongoTrashSymbols)
include(RobomongoTargetArch)
include(RobomongoInstallQt)
include(RobomongoPackage)
# Search for dependencies
find_package(Threading REQUIRED) # Wrapper arround CMake "Threads" module
find_package(Qt5Core REQUIRED)
find_package(Qt5Gui REQUIRED)
find_package(Qt5Widgets REQUIRED)
find_package(Qt5PrintSupport REQUIRED)
find_package(Qt5Network REQUIRED)
find_package(Qt5Xml REQUIRED)
find_package(MongoDB REQUIRED)
find_package(OpenSSL REQUIRED)
if (SYSTEM_MACOSX)
find_package(Qt5MacExtras REQUIRED)
endif()
###
# Settings
#
set(PROJECT_NAME "Robomongo" CACHE STRING "Project Name")
set(PROJECT_NAME_TITLE ${PROJECT_NAME})
set(PROJECT_DOMAIN "www.robomongo.org" CACHE STRING "Internet domain name for ${PROJECT_NAME}")
set(PROJECT_COMPANYNAME "Paralect" CACHE STRING "Company name for ${PROJECT_NAME}")
set(PROJECT_COPYRIGHT "Copyright (C) 2013-2015 ${PROJECT_COMPANYNAME} All Rights Reserved.")
set(PROJECT_COMPANYNAME_DOMAIN "www.paralect.com" CACHE STRING "Internet domain name for ${PROJECT_NAME}")
set(PROJECT_GITHUB_FORK "www.github.com/paralect/robomongo" CACHE STRING "Git fork of ${PROJECT_NAME}")
set(PROJECT_GITHUB_ISSUES "www.github.com/paralect/robomongo/issues" CACHE STRING "Git issue link for ${PROJECT_NAME}")
# Projects
add_subdirectory(src/third-party/libssh2)
add_subdirectory(src/robomongo/ssh)
add_subdirectory(src/third-party/qjson)
add_subdirectory(src/third-party/qscintilla)
add_subdirectory(src/robomongo)
string(TOLOWER ${PROJECT_NAME} PROJECT_NAME_LOWERCASE)
set(MAJOR "0")
set(MINOR "8")
set(PATCH "6")
set(BUILD "dev")
set(SHORT_VERSION ${MAJOR}.${MINOR}.${PATCH} CACHE STRING "${PROJECT_NAME} short version")
set(PROJECT_VERSION "${SHORT_VERSION}${BUILD}" CACHE STRING "${PROJECT_NAME} version")
if(APPLE)
if(DEFINED ENV{MACOSX_DEPLOYMENT_TARGET})
set(MACOSX_DEPLOYMENT_TARGET $ENV{MACOSX_DEPLOYMENT_TARGET})
message("Setting MACOSX_DEPLOYMENT_TARGET to '${MACOSX_DEPLOYMENT_TARGET}'")
elseif(EXISTS "${CMAKE_OSX_SYSROOT}")
string(REGEX REPLACE ".*MacOSX([0-9]+)\\.([0-9]+).*$" "\\1" DARWIN_MAJOR_SDK_VERSION "${CMAKE_OSX_SYSROOT}")
string(REGEX REPLACE ".*MacOSX([0-9]+)\\.([0-9]+).*$" "\\2" DARWIN_MINOR_SDK_VERSION "${CMAKE_OSX_SYSROOT}")
set(MACOSX_DEPLOYMENT_TARGET ${DARWIN_MAJOR_SDK_VERSION}.${DARWIN_MINOR_SDK_VERSION})
set(CMAKE_CXX_FLAGS "--sysroot ${CMAKE_OSX_SYSROOT} ${CMAKE_CXX_FLAGS}")
message("Setting MACOSX_DEPLOYMENT_TARGET to '${MACOSX_DEPLOYMENT_TARGET}'")
endif()
elseif(UNIX AND NOT APPLE)
set(PROJECT_NAME ${PROJECT_NAME_LOWERCASE})
endif()
###
# Configure project
PROJECT(${PROJECT_NAME})
# Show configuration summary
include(RobomongoConfigurationSummary)
###
# Options
IF(WIN32)
OPTION(MANIFEST_ENABLE "Enable Manifest" ON)
if(POLICY CMP0020)
cmake_policy(SET CMP0020 OLD)
endif()
if(POLICY CMP0026)
cmake_policy(SET CMP0026 OLD)
endif()
ENDIF(WIN32)
set(ROBOMONGO_QT_VERSION 5 CACHE STRING "Qt version to use when building Robomongo (can be 4 or 5)")
OPTION(BOOST_ENABLED "Enable boost system support" OFF)
OPTION(OPENSSL_ENABLED "Enable openssl support" ON)
OPTION(SSH_ENABLED "Enable ssh support" ON)
OPTION(CPACK_SUPPORT "Enable package support" ON)
OPTION(DEVELOPER_DYNAMIC_RUNTIME "Build with dynamic C++ runtime" ON)
OPTION(DEVELOPER_FEATURES "Use some debug tricks for developers" OFF)
OPTION(DEVELOPER_ENABLE_TESTS "Enable tests for ${PROJECT_NAME_TITLE} project" ON)
IF(MSVC)
IF(CMAKE_CL_64)
OPTION(BUILD_64X "Build 64bit project" ON)
ELSE()
OPTION(BUILD_64X "Build 64bit project" OFF)
ENDIF()
ELSE()
IF("${OS_ARC}" STREQUAL "64")
OPTION(BUILD_64X "Build 64bit project" ON)
ELSEIF("${OS_ARC}" STREQUAL "32")
OPTION(BUILD_64X "Build 64bit project" OFF)
ELSE()
IF(CMAKE_SIZEOF_VOID_P MATCHES 8)
OPTION(BUILD_64X "Build 64bit project" ON)
ELSE(CMAKE_SIZEOF_VOID_P MATCHES 8)
OPTION(BUILD_64X "Build 64bit project" OFF)
ENDIF(CMAKE_SIZEOF_VOID_P MATCHES 8)
ENDIF()
ENDIF()
IF(CMAKE_COMPILER_IS_GNUCXX OR "${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
IF (NOT CMAKE_BUILD_TYPE)
SET(CMAKE_BUILD_TYPE DEBUG)
ENDIF()
IF(CMAKE_COMPILER_IS_GNUCXX AND NOT MINGW)
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC")
ENDIF()
ENDIF()
INCLUDE(cmake/config.cmake)
DEFINE_DEFAULT_DEFINITIONS()
# Search libraries
# use Qt
DETECT_QT()
##################### Libraries search ###################
IF(DEVELOPER_QT5)
SET(QT_COMPONENTS_TO_USE Qt5Core Qt5Gui Qt5Widgets)
IF(UNIX AND NOT APPLE)
SET(QT_COMPONENTS_TO_USE ${QT_COMPONENTS_TO_USE} Qt5DBus) #for libqxcb
ENDIF(UNIX AND NOT APPLE)
IF(APPLE)
SET(QT_COMPONENTS_TO_USE ${QT_COMPONENTS_TO_USE} Qt5MacExtras)
ENDIF(APPLE)
ELSE()
SET(QT_COMPONENTS_TO_USE QtCore QtGui)
ENDIF()
INTEGRATE_QT(${QT_COMPONENTS_TO_USE})
##########################################################
IF(BUILD_64X)
SET_PROPERTY(GLOBAL PROPERTY FIND_LIBRARY_USE_LIB64_PATHS 1)
IF(CMAKE_COMPILER_IS_GNUCXX)
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -m64")
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -m64 -std=gnu++0x -Wno-unused-local-typedefs -Wno-unused-parameter -Wno-literal-suffix -Wdeprecated-declarations")
SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -m64")
SET(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -m64")
SET(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -m64")
ELSEIF(MSVC)
SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /machine:x64")
SET(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /machine:x64")
SET(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} /machine:x64")
ENDIF()
IF(APPLE)
SET(CMAKE_OSX_ARCHITECTURES x86_64)
ENDIF()
SET(ARCH_TEXT 64)
SET(ARCH_TEXT_PACKAGE x86_64)#amd64
ELSE()
SET_PROPERTY(GLOBAL PROPERTY FIND_LIBRARY_USE_LIB64_PATHS 0)
IF(CMAKE_COMPILER_IS_GNUCXX)
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -m32")
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -m32")
SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -m32")
SET(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -m32")
SET(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -m32")
ELSEIF(MSVC)
SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /machine:x86")
SET(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /machine:x86")
SET(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} /machine:x86")
ENDIF()
IF(APPLE)
SET(CMAKE_OSX_ARCHITECTURES i386)
#-DCMAKE_OSX_ARCHITECTURES= ;i386
ENDIF()
SET(ARCH_TEXT 32)
SET(ARCH_TEXT_PACKAGE i386)
ENDIF()
##################################DEFAULT VALUES##########################################
IF(NOT CMAKE_INSTALL_PREFIX)
SET(CMAKE_INSTALL_PREFIX "${CMAKE_BINARY_DIR}/install")
ENDIF()
IF("${PROJECT_SOURCE_DIR}" STREQUAL "${PROJECT_BINARY_DIR}")
MESSAGE(SEND_ERROR "In-source builds are not allowed.")
ENDIF("${PROJECT_SOURCE_DIR}" STREQUAL "${PROJECT_BINARY_DIR}")
############################################################################
IF(WIN32)
SET(RESOURCE_OS "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}/win.rc")
SET(RESOURCE_OS_IN "${CMAKE_SOURCE_DIR}/install/windows/winres.rc.in")
SET(ICON_FILE "${CMAKE_SOURCE_DIR}/src/robomongo/gui/resources/robo.ico")
SET(LIB_INSTALL_DESTINATION .)
SET(TARGET_INSTALL_DESTINATION .)
ELSEIF(APPLE)
SET(RESOURCE_OS "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}/robomongo.desktop")
SET(RESOURCE_OS_IN "${CMAKE_SOURCE_DIR}/install/robomongo.desktop.in")
SET(ICON_FILE "${CMAKE_SOURCE_DIR}/install/osx/Robomongo.icns")
SET(LIB_INSTALL_DESTINATION .)
SET(TARGET_INSTALL_DESTINATION .)
ELSEIF(UNIX)
SET(RESOURCE_OS "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}/${PROJECT_NAME}.desktop")
SET(RESOURCE_OS_IN "${CMAKE_SOURCE_DIR}/install/robomongo.desktop.in")
SET(ICON_FILE "${CMAKE_SOURCE_DIR}/install/linux/robomongo.png")
SET(LIB_INSTALL_DESTINATION lib)
SET(TARGET_INSTALL_DESTINATION bin)
ENDIF()
# project sources
SET_PROPERTY( GLOBAL PROPERTY USE_FOLDERS ON)
ADD_SUBDIRECTORY(src)
IF(CPACK_SUPPORT)
SET(CPACK_PACKAGE_DESCRIPTION "Shell-centric cross-platform MongoDB management tool.")
SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY "${PROJECT_NAME_TITLE} shell-centric cross-platform MongoDB management tool.")#CPACK_DEBIAN_PACKAGE_DESCRIPTION CPACK_RPM_PACKAGE_SUMMARY
SET(CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_CURRENT_SOURCE_DIR}/DESCRIPTION")#CPACK_RPM_PACKAGE_DESCRIPTION
SET(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/LICENSE")
SET(CPACK_RESOURCE_FILE_README "${CMAKE_CURRENT_SOURCE_DIR}/README.md")
SET(CPACK_RESOURCE_FILE_WELCOME "${CMAKE_CURRENT_SOURCE_DIR}/README.md")
SET(CPACK_PACKAGE_VENDOR ${PROJECT_COMPANYNAME})#CPACK_RPM_PACKAGE_VENDOR
SET(CPACK_PACKAGE_CONTACT "Dmitry Schetnikovich <dima@paralect.com>")#CPACK_DEBIAN_PACKAGE_MAINTAINER
SET(CPACK_PACKAGE_VERSION_MAJOR ${MAJOR})
SET(CPACK_PACKAGE_VERSION_MINOR ${MINOR})
SET(CPACK_PACKAGE_VERSION_PATCH ${SHORT_VERSION})
IF(BUILD)
STRING(REGEX REPLACE " " "" BUILD_ESCAPE ${BUILD})
SET(CPACK_PACKAGE_VERSION_PATCH "${CPACK_PACKAGE_VERSION_PATCH}-${BUILD_ESCAPE}")
ENDIF(BUILD)
SET(CPACK_PACKAGE_VERSION ${CPACK_PACKAGE_VERSION_PATCH})#CPACK_DEBIAN_PACKAGE_VERSION CPACK_RPM_PACKAGE_VERSION
SET(CPACK_PACKAGE_NAME ${PROJECT_NAME})#CPACK_DEBIAN_PACKAGE_NAME CPACK_RPM_PACKAGE_NAME
SET(CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}-${ARCH_TEXT_PACKAGE}")#out package name
SET(CPACK_SOURCE_PACKAGE_FILE_NAME "${CPACK_PACKAGE_FILE_NAME}")
SET(CPACK_PACKAGE_INSTALL_DIRECTORY ${PROJECT_NAME})
SET(CPACK_PACKAGE_EXECUTABLES "${PROJECT_NAME_TITLE};${PROJECT_NAME}")
MESSAGE(STATUS "CPACK_PACKAGE_FILE_NAME: ${CPACK_PACKAGE_FILE_NAME}")
SET(CPACK_MONOLITHIC_INSTALL ON)
IF(WIN32)
IF(NOT CPACK_GENERATOR)
SET(CPACK_GENERATOR NSIS)
ENDIF(NOT CPACK_GENERATOR)
IF(CPACK_GENERATOR STREQUAL "NSIS")
# There is a bug in NSI that does not handle full unix paths properly. Make
# sure there is at least one set of four (4) backlasshes.
#SET(CPACK_NSIS_MODIFY_PATH ON)
SET(CPACK_PACKAGE_ICON "${CMAKE_SOURCE_DIR}/install/windows\\\\nsis-top-logo.bmp")
SET(CPACK_NSIS_INSTALLED_ICON_NAME "\\\\${PROJECT_NAME}.exe")
SET(CPACK_CREATE_DESKTOP_LINKS "${PROJECT_NAME}.exe")
SET(CPACK_NSIS_CREATE_ICONS "CreateShortCut \\\"$SMPROGRAMS\\\\$STARTMENU_FOLDER\\\\${PROJECT_NAME}.lnk\\\" \\\"$INSTDIR\\\\${PROJECT_NAME}.exe\\\"")
SET(CPACK_NSIS_CREATE_ICONS_EXTRA "CreateShortCut \\\"$DESKTOP\\\\${PROJECT_NAME}.lnk\\\" \\\"$INSTDIR\\\\${PROJECT_NAME}.exe\\\"")
SET(CPACK_NSIS_DELETE_ICONS_EXTRA "Delete \\\"$DESKTOP\\\\${PROJECT_NAME}.lnk\\\"")
SET(CPACK_NSIS_DISPLAY_NAME "${CPACK_PACKAGE_INSTALL_DIRECTORY}")
SET(CPACK_NSIS_HELP_LINK "http:\\\\\\\\${PROJECT_COMPANYNAME_DOMAIN}")
SET(CPACK_NSIS_URL_INFO_ABOUT "http:\\\\\\\\${PROJECT_DOMAIN}")
SET(SIDEBAR_IMAGE ${CMAKE_SOURCE_DIR}/install/windows\\\\database.bmp)
SET(CPACK_NSIS_INSTALLER_MUI_ICON_CODE "!define MUI_WELCOMEFINISHPAGE_BITMAP \\\"${SIDEBAR_IMAGE}\\\"")
SET(CPACK_NSIS_CONTACT "me@my-personal-home-page.com")
SET(CPACK_NSIS_MUI_FINISHPAGE_RUN "..\\\\${PROJECT_NAME}.exe")
ENDIF(CPACK_GENERATOR STREQUAL "NSIS")
ELSEIF(APPLE)
IF(NOT CPACK_GENERATOR)
SET(CPACK_GENERATOR DragNDrop)
ENDIF(NOT CPACK_GENERATOR)
#SET(CPACK_OSX_PACKAGE_VERSION "10.5")
ELSEIF(UNIX)
SET(CPACK_STRIP_FILES ON)
#SET(UBUNTU_LP_BUG 300472)
#SET(CPACK_STRIP_FILES "bin/${PROJECT_NAME}")
#SET(CPACK_SOURCE_STRIP_FILES "")
IF(NOT CPACK_GENERATOR)
SET(CPACK_GENERATOR DEB)
ENDIF(NOT CPACK_GENERATOR)
IF(CPACK_GENERATOR STREQUAL "RPM" OR CPACK_GENERATOR STREQUAL "DEB")
SET(CPACK_PACKAGING_INSTALL_PREFIX "/opt/${PROJECT_NAME}")
ENDIF(CPACK_GENERATOR STREQUAL "RPM" OR CPACK_GENERATOR STREQUAL "DEB")
CONFIGURE_FILE("${CMAKE_CURRENT_SOURCE_DIR}/install/linux/postinst.in" "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}/scripts/postinst" @ONLY IMMEDIATE)
FILE(COPY ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}/scripts/postinst DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}
FILE_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE)
CONFIGURE_FILE("${CMAKE_CURRENT_SOURCE_DIR}/install/linux/prerm.in" "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}/scripts/prerm" @ONLY IMMEDIATE)
FILE(COPY ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}/scripts/prerm DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}
FILE_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE)
IF(CPACK_GENERATOR STREQUAL "RPM")
#CPACK_RPM_PACKAGE_ARCHITECTURE CPACK_RPM_PACKAGE_LICENSE CPACK_RPM_PACKAGE_DESCRIPTION CPACK_RPM_SPEC_INSTALL_POST
#SET(CPACK_PACKAGE_RELEASE 1)
SET(CPACK_RPM_PACKAGE_LICENSE "GPL v3")
#SET(CPACK_RPM_PACKAGE_AUTOREQPROV "yes")
SET(CPACK_RPM_PACKAGE_REQUIRES "libc.so.6 >= 2.12, libstdc++.so.6 >= 6.0.13, glibc, openssl, libgcc, mesa-libGL, libicu, gtk2, dbus, pango, libSM, libICE, liberation-sans-fonts")
SET(CPACK_RPM_PACKAGE_RELEASE 1)
SET(CPACK_RPM_PACKAGE_GROUP "Development/Libraries/${PROJECT_COMPANYNAME}")
SET(CPACK_RPM_PACKAGE_ARCHITECTURE ${ARCH_TEXT_PACKAGE})
SET(CPACK_RPM_PACKAGE_VERSION ${SHORT_VERSION})
SET(CPACK_RPM_POST_INSTALL_SCRIPT_FILE "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}/postinst")
SET(CPACK_RPM_PRE_UNINSTALL_SCRIPT_FILE "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}/prerm")
ELSEIF(CPACK_GENERATOR STREQUAL "DEB")
CONFIGURE_FILE("${CMAKE_CURRENT_SOURCE_DIR}/install/linux/fixup_deb.sh.in" "${CMAKE_CURRENT_BINARY_DIR}/fixup_deb.sh" @ONLY IMMEDIATE)
IF(ARCH_TEXT_PACKAGE STREQUAL x86_64)
SET(ARCH_TEXT_PACKAGE amd64)
ENDIF()
SET(CPACK_DEBIAN_PACKAGE_SHLIBDEPS ON)
#CPACK_DEBIAN_PACKAGE_HOMEPAGE The URL of the web site for this package
SET(CPACK_DEBIAN_PACKAGE_DEBUG ON)
SET(CPACK_DEBIAN_PACKAGE_PRIORITY "optional")
SET(CPACK_DEBIAN_PACKAGE_SECTION "database")#input our section
SET(CPACK_DEBIAN_PACKAGE_RECOMMENDS "Unknown")
SET(CPACK_DEBIAN_PACKAGE_SUGGESTS "Unknown")
SET(CPACK_DEBIAN_PACKAGE_ARCHITECTURE ${ARCH_TEXT_PACKAGE})#i386
SET(CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}/postinst;${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}/prerm")
ENDIF(CPACK_GENERATOR STREQUAL "RPM")
ENDIF(WIN32)
INCLUDE(CPack)
ENDIF(CPACK_SUPPORT)
+1 -1
View File
@@ -1,6 +1,6 @@
Robomongo, shell-centric cross-platform MongoDB management tool.
Copyright 2013, Paralect.
Copyright 2014-2017 3T Software Labs Ltd.
The Robomongo is released under the terms of the GNU General Public
License, version 3.
+70 -29
View File
@@ -1,17 +1,69 @@
Decide the future of Robomongo
==============
![Robomongo mascot](http://app.robomongo.org/images/robomongo-64x64.png)
We've started a campaign on [Indiegogo](https://www.indiegogo.com/projects/save-robomongo) in order to continue development of Robomongo. We want to keep Robomongo free forever. Everyone has a chance to decide the future of the project. Read more on [Robomongo website](http://robomongo.org).
About Robomongo
About Robomongo [![Join the chat at https://gitter.im/paralect/robomongo](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/paralect/robomongo?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
===============
[Robomongo](http://www.robomongo.org) is a shell-centric cross-platform MongoDB management tool. Unlike most other MongoDB admin UI tools, Robomongo embeds the actual `mongo` shell in a tabbed interface with access to a shell command line as well as GUI interaction.
Note: Robomongo 0.8.x currently embeds the **MongoDB 2.4.0** shell using the SpiderMonkey JavaScript engine. We are working on updating this to the MongoDB 3.0 shell with V8 for the 0.9.x release series.
Starting from version 0.9, Robomongo is compatibile with MongoDB 3.x (including SCRAM-SHA-1 auth and support for WiredTiger storage engine). Robomongo 0.9 embeds the **MongoDB 3.2** shell.
Robomongo 0.8.x embeds the **MongoDB 2.4.0** shell.
What's new in latest Robomongo 1.0?
====================================
Latest release of Robomongo 1.0 includes:
- Update Notifications Bar
- Welcome Tab
- Welcome Wizard
- Replica set name configurable on UI
- Fixes to avoid same replica set name problem
- Fixes to solve various problems regarding Data and Timestamp data types
Blog: http://blog.robomongo.org/robomongo-1-0/
Download: https://robomongo.org/download
Watch: [Robomongo Youtube channel](https://www.youtube.com/channel/UCM_7WAseRWeeiBikExppstA)
Follow: https://twitter.com/Robomongo
What's Planned for the Next Releases?
====================================
We are currently working towards [Robomongo 2.0 milestone](https://github.com/paralect/robomongo/milestone/21).
Currently in progress:
- MongoDB 3.4 Support
Plans for Future:
- User Roles
- Support execution of multiple simultaneous queries [#1161](https://github.com/paralect/robomongo/issues/1161)
- Selectable mongodb engines [#1249](https://github.com/paralect/robomongo/issues/1249)
- Enhancements for stability, running without crashes ([Stability Milestone](https://github.com/paralect/robomongo/milestone/15))
- More Documentation
- Unit Tests
- Refactoring Debug Log module
Supported Platforms
===============
| MongoDB Versions |
| :-------------------- |
| 3.2 |
| 3.0 |
| 2.6 |
| MongoDB Cloud Platforms|
| :------------ |
| MongoDB Atlas |
| Compose |
| mLab |
| ObjectRocket |
| Amazon EC2 |
| Windows | Mac | Linux |
|:---------------------- | :---------------| :---------------------------|
| Windows 64-bit 10 | Mac OS X 10.11 | Linux Ubuntu 16.04 64-bit* |
Windows 64-bit 8.1 | Mac OS X 10.10 | Linux Ubuntu 14.04 64-bit* |
| Windows 64-bit 7 | | Linux CentOS 7 64-bit* |
| | | Linux CentOS 6 64-bit* |
\* latest stable build
Download
@@ -19,7 +71,7 @@ Download
You can download tested install packages for OS X, Windows, and Linux from our site: [www.robomongo.org](http://www.robomongo.org).
The latest stable release is currently **Robomongo 0.8.5**.
The latest stable release is currently [**Robomongo 1.0**](http://blog.robomongo.org/robomongo-1-0/).
Support
=======
@@ -30,44 +82,33 @@ You can:
- [Create a new issue in the Github issue queue](https://github.com/paralect/robomongo/issues)
- [Join developer discussion on Gitter](https://gitter.im/paralect/robomongo) [![Join the chat at https://gitter.im/paralect/robomongo](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/paralect/robomongo?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
- [Join developer discussion on Gitter](https://gitter.im/paralect/robomongo)
Build
=====
The wiki contains prerequisites and instructions to [Build Robomongo](https://github.com/paralect/robomongo/wiki/Build-Robomongo).
The wiki contains prerequisites and instructions to [Build Robomongo](https://github.com/paralect/robomongo/wiki).
If you want to compile from source yourself, you should be able to do so cleanly from a [release branch](https://github.com/paralect/robomongo/releases).
What's Planned for the Next Release?
====================================
We are currently working toward a [0.9.0 release milestone](https://github.com/paralect/robomongo/milestones/Robomongo%200.9.0)
with some major features targeted including compatibility with MongoDB 3.0
(updated shell, SCRAM-SHA-1 auth, support for WiredTiger storage engine)
and full support for replica sets.
Contribute!
===========
### Vote for Features
Please view our [Magic Backlog](http://app.robomongo.org/backlog) to see features prioritised by donation. The small amount of donations we currently receive are put toward hosting costs.
### Suggest Features
New feature suggestions or UI improvements are always welcome.
[Create a new feature request on github](https://github.com/paralect/robomongo/issues/new)
This project is powered by open source volunteers, so we have a limited amount of development resource to address all requests. We will certainly make best efforts to progress (particularly for those with strong community upvotes).
### Code Contributions
Code contributions are always welcome! Just try to follow our coding style: [Robomongo Coding Style](https://github.com/paralect/robomongo/wiki/Robomongo-Coding-Style).
Code contributions are always welcome! Just try to follow our pre-commit checks and coding style:
- [Robomongo Code Quality](https://github.com/paralect/robomongo/wiki/Robomongo-Code-Quality)
- [Robomongo Coding Style](https://github.com/paralect/robomongo/wiki/Robomongo-Coding-Style)
If you plan to contribute, please create a Github issue (or comment on the relevant existing issue) so we can help coordinate with upcoming release plans.
For a general workflow, see Github's guide to [Fork a Repo](https://help.github.com/articles/fork-a-repo/).
Pull requests (PRs) should generally be for discrete issues (i.e. one issue per PR please) and be clean to merge against the current master branch. It would also be helpful if you can confirm what testing has been done (specific O/S targets and MongoDB versions if applicable).
A usual naming approach for feature branches is `issue-###`. Include the issue number in your commit message / pull request description to link the PR to the original issue.
@@ -87,7 +128,7 @@ There are a number of issues we could use help with reproducing. They are marked
License
=======
Copyright (C) 2013-2015 [Paralect, Inc](http://www.paralect.com)
Copyright 2014-2017 [3T Software Labs Ltd](https://studio3t.com/). All rights reserved.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License version 3 as
+20
View File
@@ -0,0 +1,20 @@
Bash fronted for CMake
======================
If you want to use this scripts, you need to set single environment variable:
export ROBOMONGO_CMAKE_PREFIX_PATH="/path/to/qt-5/5.5/gcc_64;/path/to/robomongo-shell"
Build Robomongo:
$ bin/configure
$ bin/build
Install Robomongo:
$ bin/install
Pack Robomongo:
$ bin/pack
Executable
+8
View File
@@ -0,0 +1,8 @@
#!/usr/bin/env bash
BIN_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" # Get directory of this file
PROJECT_DIR=$(dirname $BIN_DIR) # Get root directory of project
source $BIN_DIR/common/setup $1
cd $BUILD_DIR
cmake --build . "${@:2}" -- -j8
+15
View File
@@ -0,0 +1,15 @@
@echo off
setlocal enableextensions enabledelayedexpansion
rem Path to bin and project folder
set BIN_DIR_WITH_BACKSLASH=%~dp0%
set BIN_DIR=%BIN_DIR_WITH_BACKSLASH:~0,-1%
set PROJECT_DIR=%BIN_DIR%\..
rem Run common setup code
call "%BIN_DIR%\common\setup.bat" %*
if %ERRORLEVEL% neq 0 (exit /b 1)
rem Run build
cd "%BUILD_DIR%"
cmake --build . --config %BUILD_TYPE%
Executable
+7
View File
@@ -0,0 +1,7 @@
#!/usr/bin/env bash
BIN_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" # Get directory of this file
PROJECT_DIR=$(dirname $BIN_DIR) # Get root directory of project
source $BIN_DIR/common/setup $1
cd $VARIANT_DIR && rm -rf $BUILD_DIR_NAME
+15
View File
@@ -0,0 +1,15 @@
@echo off
setlocal enableextensions enabledelayedexpansion
rem Path to bin and project folder
set BIN_DIR_WITH_BACKSLASH=%~dp0%
set BIN_DIR=%BIN_DIR_WITH_BACKSLASH:~0,-1%
set PROJECT_DIR=%BIN_DIR%\..
rem Run common setup code
call "%BIN_DIR%\common\setup.bat" %*
if %ERRORLEVEL% neq 0 (exit /b 1)
rem Clear build directory
cd "%VARIANT_DIR%"
rmdir /s /q "%BUILD_DIR_NAME%"
+49
View File
@@ -0,0 +1,49 @@
#!/usr/bin/env bash
if [ "$1" == "debug" ]; then
BUILD_TYPE=Debug
else
BUILD_TYPE=Release
# Prepend "release" in front of $@
set -- release "$@"
fi
# Build dir name is a lowercase of BUILD_TYPE
# i.e. debug
BUILD_DIR_NAME="$(echo $BUILD_TYPE | tr '[A-Z]' '[a-z]')"
# i.e. /path/to/robomongo/build
VARIANT_DIR=$PROJECT_DIR/build
# i.e. /path/to/robomongo/build/debug
BUILD_DIR=$VARIANT_DIR/$BUILD_DIR_NAME
# i.e. /path/to/robomongo/build/debug/install
INSTALL_PREFIX=$BUILD_DIR/install
# i.e. /path/to/robomongo/build/debug/package
PACK_PREFIX=$BUILD_DIR/package
PREFIX_PATH=$ROBOMONGO_CMAKE_PREFIX_PATH
mkdir -p $BUILD_DIR
if [ "$(uname -s)" == "Darwin" ]; then
# On Mac OS we specify minimal OS version that we support.
#
# The following environment variable will set "-mmacosx-version-min=10.6" option
# for compiler. From documentation to GCC or Clang:
#
# -mmacosx-version-min=version
#
# The earliest version of MacOS X that this executable will run on is
# version. Typical values of version include 10.1, 10.2, and 10.3.9.
#
# This value can also be set with the MACOSX_DEPLOYMENT_TARGET environment
# variable. If both the command-line option is specified and the
# environment variable is set, the command-line option will take precedence.
#
export MACOSX_DEPLOYMENT_TARGET=10.9
fi
+48
View File
@@ -0,0 +1,48 @@
rem Check that ROBOMONGO_CMAKE_PREFIX_PATH is set
if not defined ROBOMONGO_CMAKE_PREFIX_PATH (
echo Set environment variable ROBOMONGO_CMAKE_PREFIX_PATH in order to use this script
echo.
echo For example, execute the following command:
echo setx ROBOMONGO_CMAKE_PREFIX_PATH "c:\Qt-5\5.5\msvc2013_64;c:\robomongo-shell"
echo.
echo You also need to reopen your Windows Command Prompt.
exit /b 1
)
rem Check for debug build type
if %1. == debug. (
set BUILD_TYPE=Debug
) else (
rem If build type wasn't specified - Release mode assumed
if %1. ==. (
set BUILD_TYPE=Release
) else (
echo Invalid build type "%1". Supported build types: debug or release.
exit /b 1
)
)
rem Build dir name (i.e. Release)
set BUILD_DIR_NAME=%BUILD_TYPE%
rem i.e. /path/to/robomongo/build
set VARIANT_DIR=%PROJECT_DIR%\build
rem i.e. /path/to/robomongo/build/debug
set BUILD_DIR=%VARIANT_DIR%\%BUILD_DIR_NAME%
rem i.e. /path/to/robomongo/build/debug/install
set INSTALL_PREFIX=%BUILD_DIR%\install
rem i.e. /path/to/robomongo/build/debug/package
set PACK_PREFIX=%BUILD_DIR%/package
rem Get value from environment variable
set PREFIX_PATH=%ROBOMONGO_CMAKE_PREFIX_PATH%
rem Create BUILD_DIR if it is not exists already
if not exist "%BUILD_DIR%" (
md "%BUILD_DIR%"
)
Vendored Executable
+8
View File
@@ -0,0 +1,8 @@
#!/usr/bin/env bash
BIN_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" # Get directory of this file
PROJECT_DIR=$(dirname $BIN_DIR) # Get root directory of project
source $BIN_DIR/common/setup $1
cd $BUILD_DIR
cmake -D "CMAKE_PREFIX_PATH=$PREFIX_PATH" -D "CMAKE_BUILD_TYPE=$BUILD_TYPE" -D "CMAKE_INSTALL_PREFIX=$INSTALL_PREFIX" "${@:2}" $PROJECT_DIR
+15
View File
@@ -0,0 +1,15 @@
@echo off
setlocal enableextensions enabledelayedexpansion
rem Path to bin and project folder
set BIN_DIR_WITH_BACKSLASH=%~dp0%
set BIN_DIR=%BIN_DIR_WITH_BACKSLASH:~0,-1%
set PROJECT_DIR=%BIN_DIR%\..
rem Run common setup code
call "%BIN_DIR%\common\setup.bat" %*
if %ERRORLEVEL% neq 0 (exit /b 1)
rem Run CMake configuration step
cd "%BUILD_DIR%"
cmake -G "Visual Studio 12 2013 Win64" -D "CMAKE_PREFIX_PATH=%PREFIX_PATH%" -D "CMAKE_BUILD_TYPE=%BUILD_TYPE%" -D "CMAKE_INSTALL_PREFIX=%INSTALL_PREFIX%" %PROJECT_DIR%
Executable
+8
View File
@@ -0,0 +1,8 @@
#!/usr/bin/env bash
BIN_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" # Get directory of this file
PROJECT_DIR=$(dirname $BIN_DIR) # Get root directory of project
source $BIN_DIR/common/setup $1
cd $BUILD_DIR
cmake --build . --target install/strip "${@:2}"
+15
View File
@@ -0,0 +1,15 @@
@echo off
setlocal enableextensions enabledelayedexpansion
rem Path to bin and project folder
set BIN_DIR_WITH_BACKSLASH=%~dp0%
set BIN_DIR=%BIN_DIR_WITH_BACKSLASH:~0,-1%
set PROJECT_DIR=%BIN_DIR%\..
rem Run common setup code
call "%BIN_DIR%\common\setup.bat" %*
if %ERRORLEVEL% neq 0 (exit /b 1)
rem Run install
cd "%BUILD_DIR%"
cmake --build . --config %BUILD_TYPE% --target install
Executable
+8
View File
@@ -0,0 +1,8 @@
#!/usr/bin/env bash
BIN_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" # Get directory of this file
PROJECT_DIR=$(dirname $BIN_DIR) # Get root directory of project
source $BIN_DIR/common/setup $1
cd $BUILD_DIR
cmake --build . --target package "${@:2}"
+15
View File
@@ -0,0 +1,15 @@
@echo off
setlocal enableextensions enabledelayedexpansion
rem Path to bin and project folder
set BIN_DIR_WITH_BACKSLASH=%~dp0%
set BIN_DIR=%BIN_DIR_WITH_BACKSLASH:~0,-1%
set PROJECT_DIR=%BIN_DIR%\..
rem Run common setup code
call "%BIN_DIR%\common\setup.bat" %*
if %ERRORLEVEL% neq 0 (exit /b 1)
rem Run install
cd "%BUILD_DIR%"
cmake --build . --config %BUILD_TYPE% --target package
Executable
+12
View File
@@ -0,0 +1,12 @@
#!/usr/bin/env bash
BIN_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" # Get directory of this file
PROJECT_DIR=$(dirname $BIN_DIR) # Get root directory of project
source $BIN_DIR/common/setup $1
if [ "$(uname -s)" == "Darwin" ]; then
# On Mac OS we should run executable from bundle
"$BUILD_DIR/src/robomongo/Robomongo.app/Contents/MacOS/Robomongo"
else
"$BUILD_DIR/src/robomongo/robomongo"
fi
Executable
+20
View File
@@ -0,0 +1,20 @@
#!/usr/bin/env bash
BIN_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" # Get directory of this file
PROJECT_DIR=$(dirname $BIN_DIR) # Get root directory of project
VERSION="$(echo $1 | tr '[A-Z]' '[a-z]')"
if [ -z "$VERSION" ]; then
echo "Usage: tag <name>"
echo "Example: tag 0.9.0-rc9"
exit
fi
if [ "$(git rev-parse --abbrev-ref HEAD)" != "master" ]; then
echo "Error: You are not on master branch"
exit
fi
cd $PROJECT_DIR
git tag -a "v${VERSION}" -m "${VERSION}"
git push --tags
+142
View File
@@ -0,0 +1,142 @@
#
# Find the MongoDB libraries
#
# This module defines the following variables:
# MongoDB_FOUND
# MongoDB_LIBS
# MongoDB_INCLUDE_DIRS
# MongoDB_DEFINITIONS
#
# Imported target "mongodb" is created
#
# We assume, that at least "mongo" target was build by the following command:
# $ scons mongo
#
#
# Try to find MongoDB directory (uses CMAKE_PREFIX_PATH locations)
find_path(
MongoDB_DIR src/mongo/config.h.in
DOC "Path to MongoDB (github.com/robomongo-shell) root directory"
)
# Find relative path to build directory
if(BUILD_RELEASE OR BUILD_RELWITHDEBINFO OR BUILD_MINSIZEREL)
set(MongoDB_RELATIVE_BUILD_DIR build/opt)
set(MongoDB_OBJECT_LIST_BUILD_TYPE_PART release)
elseif(BUILD_DEBUG)
set(MongoDB_RELATIVE_BUILD_DIR build/debug)
set(MongoDB_OBJECT_LIST_BUILD_TYPE_PART debug)
endif()
# Set absolute path to build directory
set(MongoDB_BUILD_DIR ${MongoDB_DIR}/${MongoDB_RELATIVE_BUILD_DIR})
# Set commong compiler definitons
set(MongoDB_DEFINITIONS
PCRE_STATIC
BOOST_THREAD_VERSION=4
BOOST_THREAD_DONT_PROVIDE_VARIADIC_THREAD
BOOST_THREAD_NO_DEPRECATED
BOOST_THREAD_DONT_PROVIDE_INTERRUPTIONS
BOOST_THREAD_HAS_BUG
MONGO_CONFIG_HAVE_HEADER_UNISTD_H
)
# Set common compiler include directories
set(MongoDB_INCLUDE_DIRS
${MongoDB_DIR}/src
${MongoDB_DIR}/src/third_party/boost-1.56.0
${MongoDB_DIR}/src/third_party/mozjs-38/include
${MongoDB_DIR}/src/third_party/mozjs-38/mongo_sources
${MongoDB_DIR}/src/third_party/pcre-8.37
${MongoDB_BUILD_DIR}
)
if(SYSTEM_LINUX)
set(MongoDB_OBJECT_LIST_PLATFORM_PART linux)
list(APPEND MongoDB_INCLUDE_DIRS
${MongoDB_DIR}/src/third_party/mozjs-38/platform/x86_64/linux/include)
elseif(SYSTEM_WINDOWS)
set(MongoDB_OBJECT_LIST_PLATFORM_PART windows)
list(APPEND MongoDB_INCLUDE_DIRS
${MongoDB_DIR}/src/third_party/mozjs-38/platform/x86_64/windows/include)
elseif(SYSTEM_MACOSX)
set(MongoDB_OBJECT_LIST_PLATFORM_PART macosx)
list(APPEND MongoDB_INCLUDE_DIRS
${MongoDB_DIR}/src/third_party/mozjs-38/platform/x86_64/osx/include)
elseif(SYSTEM_FREEBSD)
set(MongoDB_OBJECT_LIST_PLATFORM_PART freebsd)
list(APPEND MongoDB_INCLUDE_DIRS
${MongoDB_DIR}/src/third_party/mozjs-38/platform/x86_64/freebsd/include)
elseif(SYSTEM_OPENBSD)
set(MongoDB_OBJECT_LIST_PLATFORM_PART openbsd)
list(APPEND MongoDB_INCLUDE_DIRS
${MongoDB_DIR}/src/third_party/mozjs-38/platform/x86_64/openbsd/include)
endif()
# Read list of object files
# See "mongodb/README.md" file (relative to the current folder) for more information.
file(READ
${CMAKE_CURRENT_LIST_DIR}/mongodb/${MongoDB_OBJECT_LIST_PLATFORM_PART}-${MongoDB_OBJECT_LIST_BUILD_TYPE_PART}.objects
MongoDB_RELATIVE_LIBS)
string(STRIP "${MongoDB_RELATIVE_LIBS}" MongoDB_RELATIVE_LIBS)
# Convert string to list
string(REPLACE " " ";" MongoDB_RELATIVE_LIBS ${MongoDB_RELATIVE_LIBS})
# Convert to absolute path
foreach(lib ${MongoDB_RELATIVE_LIBS})
list(APPEND MongoDB_LIBS ${MongoDB_DIR}/${lib})
endforeach()
# Get MongoDB repository recent tag
execute_process(
COMMAND git describe --abbrev=0 --tags
WORKING_DIRECTORY ${MongoDB_DIR}
OUTPUT_VARIABLE MongoDB_RECENT_TAG
OUTPUT_STRIP_TRAILING_WHITESPACE
)
# Handle the QUIETLY and REQUIRED arguments and set ALSA_FOUND to TRUE if
# all listed variables are TRUE
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(MongoDB
FOUND_VAR MongoDB_FOUND # When using CMake 3.0 MONGODB_FOUND variable will be created.
# Make it explicit that variable name is MongoDB_FOUND.
REQUIRED_VARS MongoDB_DIR MongoDB_BUILD_DIR
VERSION_VAR MongoDB_RECENT_TAG
FAIL_MESSAGE "Could not find Robomongo Shell (MongoDB fork). Make sure that CMAKE_PREFIX_PATH points to Robomongo Shell project root.\n")
if(MongoDB_FOUND)
set(MongoDB_VERSION ${MongoDB_RECENT_TAG})
# Original MongoDB link command has the following in the end: m rt dl
set(MongoDB_LIBS
${LINK_WHOLE_ARCHIVE_START} # Linux: -Wl,--whole-archive
${LINK_LIBGROUP_START} # Linux: -Wl,--start-group
${MongoDB_LIBS}
${LINK_LIBGROUP_END} # Linux: -Wl,--end-group
${LINK_WHOLE_ARCHIVE_END} # Linux: -Wl,--no-whole-archive
${CMAKE_DL_LIBS} # Linux: dl
)
# Add imported target
add_library(mongodb INTERFACE IMPORTED)
# Specify INTERFACE properties for this target
set_target_properties(mongodb PROPERTIES
INTERFACE_LINK_LIBRARIES "${MongoDB_LIBS}"
INTERFACE_COMPILE_DEFINITIONS "${MongoDB_DEFINITIONS}"
INTERFACE_INCLUDE_DIRECTORIES "${MongoDB_INCLUDE_DIRS}"
)
endif()
# Cleanup
unset(MongoDB_OBJECT_LIST_BUILD_TYPE_PART)
unset(MongoDB_OBJECT_LIST_PLATFORM_PART)
unset(MongoDB_RELATIVE_BUILD_DIR)
unset(MongoDB_RELATIVE_LIBS)
unset(MongoDB_RECENT_TAG)
+60 -284
View File
@@ -1,274 +1,32 @@
# - Try to find the OpenSSL encryption library
# Once done this will define
##################################################
# Find and Add OpenSSL shared (dynamic) library
#
# - This module defines the following variables:
# OpenSSL_DIR
# OPENSSL_VERSION
#
# OPENSSL_ROOT_DIR - Set this variable to the root installation of OpenSSL
# - Imported shared(dynamic) libraries "ssl" and "crypto" are created.
#
# Read-Only variables:
# OPENSSL_FOUND - system has the OpenSSL library
# OPENSSL_INCLUDE_DIR - the OpenSSL include directory
# OPENSSL_LIBRARIES - The libraries needed to use OpenSSL
# OPENSSL_VERSION - This is set to $major.$minor.$revision$path (eg. 0.9.8s)
#=============================================================================
# Copyright 2006-2009 Kitware, Inc.
# Copyright 2006 Alexander Neundorf <neundorf@kde.org>
# Copyright 2009-2011 Mathieu Malaterre <mathieu.malaterre@gmail.com>
# - It is assumed that OpenSSL has been built and path to OpenSSL build directory is
# added into system(environment) variable ROBOMONGO_CMAKE_PREFIX_PATH.
#
# Distributed under the OSI-approved BSD License (the "License");
# see accompanying file Copyright.txt for details.
#
# This software is distributed WITHOUT ANY WARRANTY; without even the
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
# See the License for more information.
#=============================================================================
# (To distribute this file outside of CMake, substitute the full
# License text for the above reference.)
##################################################
if (UNIX)
find_package(PkgConfig QUIET)
pkg_check_modules(_OPENSSL QUIET openssl)
endif ()
# Try to find OpenSSL directory (uses CMAKE_PREFIX_PATH locations)
#-------------------------------------------
if (WIN32)
# http://www.slproweb.com/products/Win32OpenSSL.html
set(_OPENSSL_ROOT_HINTS
${OPENSSL_ROOT_DIR}
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\OpenSSL (32-bit)_is1;Inno Setup: App Path]"
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\OpenSSL (64-bit)_is1;Inno Setup: App Path]"
ENV OPENSSL_ROOT_DIR
)
file(TO_CMAKE_PATH "$ENV{PROGRAMFILES}" _programfiles)
set(_OPENSSL_ROOT_PATHS
"${_programfiles}/OpenSSL"
"${_programfiles}/OpenSSL-Win32"
"${_programfiles}/OpenSSL-Win64"
"C:/OpenSSL/"
"C:/OpenSSL-Win32/"
"C:/OpenSSL-Win64/"
)
unset(_programfiles)
set(_OPENSSL_ROOT_HINTS_AND_PATHS
HINTS ${_OPENSSL_ROOT_HINTS}
PATHS ${_OPENSSL_ROOT_PATHS}
)
else ()
set(_OPENSSL_ROOT_HINTS
${OPENSSL_ROOT_DIR}
ENV OPENSSL_ROOT_DIR
)
endif ()
find_path(OPENSSL_INCLUDE_DIR
NAMES
openssl/ssl.h
HINTS
${_OPENSSL_INCLUDEDIR}
${_OPENSSL_ROOT_HINTS_AND_PATHS}
PATH_SUFFIXES
include
find_path(
OpenSSL_DIR include/openssl/ssl.h
DOC "Path to OpenSSL (github.com/openssl/openssl) root directory"
)
if(WIN32 AND NOT CYGWIN)
if(MSVC)
# /MD and /MDd are the standard values - if someone wants to use
# others, the libnames have to change here too
# use also ssl and ssleay32 in debug as fallback for openssl < 0.9.8b
# TODO: handle /MT and static lib
# In Visual C++ naming convention each of these four kinds of Windows libraries has it's standard suffix:
# * MD for dynamic-release
# * MDd for dynamic-debug
# * MT for static-release
# * MTd for static-debug
# Find OpenSSL version
#-------------------------------------------
# Implementation details:
# We are using the libraries located in the VC subdir instead of the parent directory eventhough :
# libeay32MD.lib is identical to ../libeay32.lib, and
# ssleay32MD.lib is identical to ../ssleay32.lib
find_library(LIB_EAY_DEBUG
NAMES
libeay32MDd
libeay32d
${_OPENSSL_ROOT_HINTS_AND_PATHS}
PATH_SUFFIXES
"lib"
"VC"
"lib/VC"
)
find_library(LIB_EAY_RELEASE
NAMES
libeay32MD
libeay32
${_OPENSSL_ROOT_HINTS_AND_PATHS}
PATH_SUFFIXES
"lib"
"VC"
"lib/VC"
)
find_library(SSL_EAY_DEBUG
NAMES
ssleay32MDd
ssleay32d
${_OPENSSL_ROOT_HINTS_AND_PATHS}
PATH_SUFFIXES
"lib"
"VC"
"lib/VC"
)
find_library(SSL_EAY_RELEASE
NAMES
ssleay32MD
ssleay32
ssl
${_OPENSSL_ROOT_HINTS_AND_PATHS}
PATH_SUFFIXES
"lib"
"VC"
"lib/VC"
)
set(LIB_EAY_LIBRARY_DEBUG "${LIB_EAY_DEBUG}")
set(LIB_EAY_LIBRARY_RELEASE "${LIB_EAY_RELEASE}")
set(SSL_EAY_LIBRARY_DEBUG "${SSL_EAY_DEBUG}")
set(SSL_EAY_LIBRARY_RELEASE "${SSL_EAY_RELEASE}")
include(SelectLibraryConfigurations)
select_library_configurations(LIB_EAY)
select_library_configurations(SSL_EAY)
set( OPENSSL_LIBRARIES ${SSL_EAY_LIBRARY} ${LIB_EAY_LIBRARY} )
elseif(MINGW)
# same player, for MinGW
set(LIB_EAY_NAMES libeay32)
set(SSL_EAY_NAMES ssleay32)
if(CMAKE_CROSS_COMPILING)
list(APPEND LIB_EAY_NAMES crypto)
list(APPEND SSL_EAY_NAMES ssl)
endif()
find_library(LIB_EAY
NAMES
${LIB_EAY_NAMES}
${_OPENSSL_ROOT_HINTS_AND_PATHS}
PATH_SUFFIXES
"lib"
"lib/MinGW"
)
find_library(SSL_EAY
NAMES
${SSL_EAY_NAMES}
${_OPENSSL_ROOT_HINTS_AND_PATHS}
PATH_SUFFIXES
"lib"
"lib/MinGW"
)
mark_as_advanced(SSL_EAY LIB_EAY)
set( OPENSSL_LIBRARIES ${SSL_EAY} ${LIB_EAY} )
unset(LIB_EAY_NAMES)
unset(SSL_EAY_NAMES)
else()
# Not sure what to pick for -say- intel, let's use the toplevel ones and hope someone report issues:
find_library(LIB_EAY
NAMES
libeay32
HINTS
${_OPENSSL_LIBDIR}
${_OPENSSL_ROOT_HINTS_AND_PATHS}
PATH_SUFFIXES
lib
)
find_library(SSL_EAY
NAMES
ssleay32
HINTS
${_OPENSSL_LIBDIR}
${_OPENSSL_ROOT_HINTS_AND_PATHS}
PATH_SUFFIXES
lib
)
mark_as_advanced(SSL_EAY LIB_EAY)
set( OPENSSL_LIBRARIES ${SSL_EAY} ${LIB_EAY} )
endif()
if(SYSTEM_WINDOWS)
set (OPENSSL_INCLUDE_DIR "${OpenSSL_DIR}/inc32")
else()
if(OPENSSL_USE_STATIC)
find_library(OPENSSL_SSL_LIBRARY
NAMES
libssl.a
libssleay32.a
libssleay32MD.a
HINTS
${_OPENSSL_LIBDIR}
${_OPENSSL_ROOT_HINTS_AND_PATHS}
PATH_SUFFIXES
lib
)
find_library(OPENSSL_CRYPTO_LIBRARY
NAMES
libcrypto.a
HINTS
${_OPENSSL_LIBDIR}
${_OPENSSL_ROOT_HINTS_AND_PATHS}
PATH_SUFFIXES
lib
)
#zlib
set(STATIC_ZLIB_SEARCHES)
# Normal search.
set(STATIC_ZLIB_SEARCH_NORMAL
PATHS "[HKEY_LOCAL_MACHINE\\SOFTWARE\\GnuWin32\\Zlib;InstallPath]"
"$ENV{PROGRAMFILES}/zlib"
)
list(APPEND STATIC_ZLIB_SEARCHES STATIC_ZLIB_SEARCH_NORMAL)
set(STATIC_ZLIB_NAMES libz.a libzlib.a libzdll.a libzlib1.a libzlibd.a libzlibd1.a)
# Try each search configuration.
foreach(search ${STATIC_ZLIB_SEARCHES})
find_library(STATIC_ZLIB_LIBRARY NAMES ${STATIC_ZLIB_NAMES} ${${search}} PATH_SUFFIXES lib)
endforeach()
if(STATIC_ZLIB_LIBRARY)
set(OPENSSL_LIBRARIES ${STATIC_ZLIB_LIBRARY})
endif(STATIC_ZLIB_LIBRARY)
endif(OPENSSL_USE_STATIC)
find_library(OPENSSL_SSL_LIBRARY
NAMES
ssl
ssleay32
ssleay32MD
HINTS
${_OPENSSL_LIBDIR}
${_OPENSSL_ROOT_HINTS_AND_PATHS}
PATH_SUFFIXES
lib
)
find_library(OPENSSL_CRYPTO_LIBRARY
NAMES
crypto
HINTS
${_OPENSSL_LIBDIR}
${_OPENSSL_ROOT_HINTS_AND_PATHS}
PATH_SUFFIXES
lib
)
mark_as_advanced(OPENSSL_CRYPTO_LIBRARY OPENSSL_SSL_LIBRARY)
# compat defines
set(OPENSSL_SSL_LIBRARIES ${OPENSSL_SSL_LIBRARY})
set(OPENSSL_CRYPTO_LIBRARIES ${OPENSSL_CRYPTO_LIBRARY})
set(OPENSSL_LIBRARIES ${OPENSSL_LIBRARIES} ${OPENSSL_SSL_LIBRARY} ${OPENSSL_CRYPTO_LIBRARY})
set (OPENSSL_INCLUDE_DIR "${OpenSSL_DIR}/include")
endif()
function(from_hex HEX DEC)
@@ -303,11 +61,9 @@ function(from_hex HEX DEC)
endfunction()
if (OPENSSL_INCLUDE_DIR)
if (_OPENSSL_VERSION)
set(OPENSSL_VERSION "${_OPENSSL_VERSION}")
elseif(OPENSSL_INCLUDE_DIR AND EXISTS "${OPENSSL_INCLUDE_DIR}/openssl/opensslv.h")
if(OPENSSL_INCLUDE_DIR AND EXISTS "${OPENSSL_INCLUDE_DIR}/openssl/opensslv.h")
file(STRINGS "${OPENSSL_INCLUDE_DIR}/openssl/opensslv.h" openssl_version_str
REGEX "^# *define[\t ]+OPENSSL_VERSION_NUMBER[\t ]+0x([0-9a-fA-F])+.*")
REGEX "^#[\t ]*define[\t ]+OPENSSL_VERSION_NUMBER[\t ]+0x([0-9a-fA-F])+.*")
# The version number is encoded as 0xMNNFFPPS: major minor fix patch status
# The status gives if this is a developer or prerelease and is ignored here.
@@ -340,23 +96,43 @@ if (OPENSSL_INCLUDE_DIR)
endif ()
endif ()
include(FindPackageHandleStandardArgs)
if (OPENSSL_VERSION)
find_package_handle_standard_args(OpenSSL
REQUIRED_VARS
OPENSSL_LIBRARIES
OPENSSL_INCLUDE_DIR
VERSION_VAR
OPENSSL_VERSION
FAIL_MESSAGE
"Could NOT find OpenSSL, try to set the path to OpenSSL root folder in the system variable OPENSSL_ROOT_DIR"
)
else ()
find_package_handle_standard_args(OpenSSL "Could NOT find OpenSSL, try to set the path to OpenSSL root folder in the system variable OPENSSL_ROOT_DIR"
OPENSSL_LIBRARIES
OPENSSL_INCLUDE_DIR
)
endif ()
# Add imported ssl and crypto libraries
#-------------------------------------------
# Add imported target ssl (ssleay32)
add_library(ssl SHARED IMPORTED)
mark_as_advanced(OPENSSL_INCLUDE_DIR OPENSSL_LIBRARIES)
# Add imported target for crypto (libeay32)
add_library(crypto SHARED IMPORTED)
if(SYSTEM_WINDOWS)
set_target_properties(ssl PROPERTIES
INTERFACE_INCLUDE_DIRECTORIES "${OpenSSL_DIR}/inc32"
IMPORTED_IMPLIB "${OpenSSL_DIR}/out32dll/ssleay32.lib"
)
set_target_properties(crypto PROPERTIES
INTERFACE_INCLUDE_DIRECTORIES "${OpenSSL_DIR}/inc32"
IMPORTED_IMPLIB "${OpenSSL_DIR}/out32dll/libeay32.lib"
)
elseif(SYSTEM_MACOSX)
set_target_properties(ssl PROPERTIES
INTERFACE_INCLUDE_DIRECTORIES "${OpenSSL_DIR}/include"
IMPORTED_LOCATION "${OpenSSL_DIR}/libssl.dylib"
)
set_target_properties(crypto PROPERTIES
INTERFACE_INCLUDE_DIRECTORIES "${OpenSSL_DIR}/include"
IMPORTED_LOCATION "${OpenSSL_DIR}/libcrypto.dylib"
)
elseif(SYSTEM_LINUX)
set_target_properties(ssl PROPERTIES
INTERFACE_INCLUDE_DIRECTORIES "${OpenSSL_DIR}/include"
IMPORTED_LOCATION "${OpenSSL_DIR}/libssl.so"
)
set_target_properties(crypto PROPERTIES
INTERFACE_INCLUDE_DIRECTORIES "${OpenSSL_DIR}/include"
IMPORTED_LOCATION "${OpenSSL_DIR}/libcrypto.so"
)
endif()
# End of file
+21
View File
@@ -0,0 +1,21 @@
# This wrapper is created in order to support CMake 3.0
# Only starting from CMake 3.1 "Threads" module exports
# "Threads::Threads" target.
find_package(Threads REQUIRED)
# Support for CMake 3.0
# Export "Threads::Threads" imported target if it wasn't exported.
# This lines are taken from the "FindThreads.cmake" of CMake 3.1:
# https://github.com/Kitware/CMake/blob/v3.1.0/Modules/FindThreads.cmake
if(THREADS_FOUND AND NOT TARGET Threads::Threads)
add_library(Threads::Threads INTERFACE IMPORTED)
if(THREADS_HAVE_PTHREAD_ARG)
set_property(TARGET Threads::Threads PROPERTY INTERFACE_COMPILE_OPTIONS "-pthread")
endif()
if(CMAKE_THREAD_LIBS_INIT)
set_property(TARGET Threads::Threads PROPERTY INTERFACE_LINK_LIBRARIES "${CMAKE_THREAD_LIBS_INIT}")
endif()
endif()
+20
View File
@@ -0,0 +1,20 @@
Quick reference to CMake
========================
if(<constant>)
True if the constant is `1`, `ON`, `YES`, `TRUE`, `Y`, or a non-zero number.
False if the constant is `0`, `OFF`, `NO`, `FALSE`, `N`, `IGNORE`, `NOTFOUND`,
the empty string, or ends in the suffix `-NOTFOUND`. Named boolean constants
are case-insensitive. If the argument is not one of these constants, it is
treated as a variable.
if(<variable>)
True if the variable is defined to a value that is not a false constant. False otherwise.
(Note macro arguments are not variables.)
if(DEFINED <variable>)
True if the given variable is defined. It does not matter if the variable is
true or false just if it has been set. (Note macro arguments are not variables.)
+32
View File
@@ -0,0 +1,32 @@
# Put the include dirs which are in the source or build tree
# before all other include dirs, so the headers in the sources
# are prefered over the already installed ones
# Since cmake 2.4.1
set(CMAKE_INCLUDE_DIRECTORIES_PROJECT_BEFORE ON)
# Use colored output
# Since cmake 2.4.0
set(CMAKE_COLOR_MAKEFILE ON)
# MongoDB compiled with this option
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
# This variable is used by CMake "FindThreads" module
# From documentation to FindThreads module:
# > Please note that the compiler flag can only be
# > used with the imported target. Use of both the imported
# > target as well as this switch is highly recommended for new code.
set(THREADS_PREFER_PTHREAD_FLAG ON)
# Set the default build type to release with debug info
if(NOT CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE RelWithDebInfo
CACHE STRING "Choose the type of build, options are: Debug, Release, RelWithDebInfo, MinSizeRel and None(CMAKE_CXX_FLAGS or CMAKE_C_FLAGS used)"
FORCE)
endif()
# Do not use Qt moc, uic and rcc by default
# Since CMake 2.8.6
set(CMAKE_AUTOMOC OFF)
set(CMAKE_AUTORCC OFF)
set(CMAKE_AUTOUIC OFF)
+3
View File
@@ -0,0 +1,3 @@
set(ROBOMONGO_DISPLAY_NAME "Robomongo")
set(ROBOMONGO_DISPLAY_FULL_NAME "Robomongo ${PROJECT_VERSION}")
+33
View File
@@ -0,0 +1,33 @@
# Show configuration summary and build tip
message("")
message(" _______________[ Robomongo configuration summary ]________________")
message("| ")
message("|-- Dependencies:")
message("| ")
message("| Qt5 Core: ${Qt5Core_VERSION} ${Qt5Core_DIR}")
message("| Qt5 Gui: ${Qt5Gui_VERSION} ${Qt5Gui_DIR}")
message("| Qt5 Widgets: ${Qt5Widgets_VERSION} ${Qt5Widgets_DIR}")
message("| Qt5 PrintSupport: ${Qt5Widgets_VERSION} ${Qt5PrintSupport_DIR}")
message("| Qt5 Network: ${Qt5Network_VERSION} ${Qt5Network_DIR}")
message("| Qt5 Xml: ${Qt5Xml_VERSION} ${Qt5Xml_DIR}")
message("| MongoDB: ${MongoDB_VERSION} ${MongoDB_BUILD_DIR}")
message("| OpenSSL: ${OPENSSL_VERSION} ${OpenSSL_DIR}")
message("|")
message("|-- Summary:")
message("|")
message("| System: ${CMAKE_SYSTEM_NAME}")
if (SYSTEM_MACOSX)
message("| Target SDK: ${CMAKE_OSX_DEPLOYMENT_TARGET}")
endif()
message("| Build type: ${CMAKE_BUILD_TYPE}")
message("| Install path: ${CMAKE_INSTALL_PREFIX}")
message("|")
message("|-- Building and installing:")
message("| ")
message("| Now you can build Robomongo with the following command:")
message("| $ cmake --build .")
message("|")
message("| And install it to ${CMAKE_INSTALL_PREFIX}:")
message("| $ cmake --build . --target install")
message("|__________________________________________________________________")
message("")
+78
View File
@@ -0,0 +1,78 @@
# This files defines:
#
# 1) Platform checks
#
# SYSTEM_MACOSX
# SYSTEM_WINDOWS
# SYSTEM_LINUX
# SYSTEM_FREEBSD
# SYSTEM_OPENBSD
# SYSTEM_NETBSD
#
# 2) Build types checks
#
# BUILD_DEBUG
# BUILD_RELEASE
# BUILD_RELWITHDEBINFO
# BUILD_MINSIZEREL
#
# 3) Link "lib groups" and "whole-archive" options
#
# LINK_LIBGROUP_START
# LINK_LIBGROUP_END
# LINK_WHOLE_ARCHIVE_START
# LINK_WHOLE_ARCHIVE_END
# Platform checks
if(CMAKE_SYSTEM_NAME MATCHES "Darwin")
set(SYSTEM_MACOSX TRUE)
elseif(CMAKE_SYSTEM_NAME MATCHES "Windows")
set(SYSTEM_WINDOWS TRUE)
elseif(CMAKE_SYSTEM_NAME MATCHES "Linux")
set(SYSTEM_LINUX TRUE)
elseif(CMAKE_SYSTEM_NAME MATCHES "FreeBSD")
set(SYSTEM_FREEBSD TRUE)
set(SYSTEM_BSD TRUE)
elseif(CMAKE_SYSTEM_NAME MATCHES "OpenBSD")
set(SYSTEM_OPENBSD TRUE)
set(SYSTEM_BSD TRUE)
elseif(CMAKE_SYSTEM_NAME MATCHES "NetBSD")
set(SYSTEM_NETBSD TRUE)
set(SYSTEM_BSD TRUE)
endif()
# Build types
if("${CMAKE_BUILD_TYPE}" MATCHES "Debug")
set(BUILD_DEBUG TRUE)
elseif("${CMAKE_BUILD_TYPE}" MATCHES "Release")
set(BUILD_RELEASE TRUE)
elseif("${CMAKE_BUILD_TYPE}" MATCHES "RelWithDebInfo")
set(BUILD_RELWITHDEBINFO TRUE)
elseif("${CMAKE_BUILD_TYPE}" MATCHES "MinSizeRel")
set(BUILD_MINSIZEREL TRUE)
endif()
# Compiler checks
# We check Clang using MATCH instead of strict equality, because as of CMake 3.0.0 the
# CMAKE_<LANG>_COMPILER_ID value for Apple-provided Clang is AppleClang. To test
# for both the Apple-provided Clang and the regular Clang we use MATCH.
if(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
set(COMPILER_CLANG TRUE)
elseif(CMAKE_CXX_COMPILER_ID MATCHES "^GNU$")
set(COMPILER_GCC TRUE)
elseif(CMAKE_CXX_COMPILER_ID MATCHES "^MSVC$")
set(COMPILER_MSVC TRUE)
endif()
# Link "groups" and "whole-archive" options
if(SYSTEM_LINUX OR SYSTEM_FREEBSD OR SYSTEM_OPENBSD)
set(LINK_LIBGROUP_START -Wl,--start-group)
set(LINK_LIBGROUP_END -Wl,--end-group)
set(LINK_WHOLE_ARCHIVE_START -Wl,--whole-archive)
set(LINK_WHOLE_ARCHIVE_END -Wl,--no-whole-archive)
elseif(SYSTEM_MACOSX)
set(LINK_LIBGROUP_START "")
set(LINK_LIBGROUP_END "")
set(LINK_WHOLE_ARCHIVE_START -Wl,-all_load)
set(LINK_WHOLE_ARCHIVE_END -Wl,-noall_load)
endif()
+129
View File
@@ -0,0 +1,129 @@
# Note for maintainers
# --------------------
#
# Do not use absolute paths in DESTINATION arguments for install() command.
# Because the same install code will be executed again by CPack. And CPack will
# change internally CMAKE_INSTALL_PREFIX to point to some temporary folder
# for package content.
#
#
# Temporary change
set(CMAKE_INSTALL_PREFIX "${CMAKE_BINARY_DIR}/install"
CACHE STRING "Install path prefix, prepended onto install directories"
FORCE)
if(SYSTEM_LINUX)
set(bin_dir bin)
set(lib_dir lib)
set(resources_dir share)
set(license_dir .)
set(qt_plugins_dir ${lib_dir})
set(qt_conf_dir ${bin_dir})
set(qt_conf_plugins "../lib")
elseif(SYSTEM_MACOSX)
set(bundle_name "Robomongo.app")
set(contents_path ${bundle_name}/Contents)
set(bin_dir ${contents_path}/MacOS)
set(lib_dir ${contents_path}/Frameworks)
set(resources_dir ${contents_path}/Resources)
set(license_dir ${resources_dir})
set(qt_plugins_dir ${contents_path}/PlugIns/Qt)
set(qt_conf_dir ${resources_dir})
set(qt_conf_plugins "PlugIns/Qt")
elseif(SYSTEM_WINDOWS)
set(bin_dir .)
set(lib_dir .)
set(resources_dir .)
set(license_dir .)
set(qt_plugins_dir ${lib_dir})
set(qt_conf_dir ${bin_dir})
set(qt_conf_plugins .)
endif()
# Generate qt.conf file
configure_file(
"${CMAKE_SOURCE_DIR}/install/qt.conf.in"
"${CMAKE_BINARY_DIR}/qt.conf")
# Install qt.conf file
install(
FILES "${CMAKE_BINARY_DIR}/qt.conf"
DESTINATION "${qt_conf_dir}")
# Install OpenSSL dynamic lib files
if(SYSTEM_WINDOWS)
install(
FILES
"${OpenSSL_DIR}/out32dll/ssleay32.dll"
"${OpenSSL_DIR}/out32dll/libeay32.dll"
DESTINATION ${bin_dir})
elseif(SYSTEM_MACOSX)
install(
FILES
"${OpenSSL_DIR}/libssl.1.0.0.dylib"
"${OpenSSL_DIR}/libcrypto.1.0.0.dylib"
DESTINATION ${lib_dir}/lib)
elseif(SYSTEM_LINUX)
install(
FILES
"${OpenSSL_DIR}/libssl.so"
"${OpenSSL_DIR}/libssl.so.1.0.0"
"${OpenSSL_DIR}/libcrypto.so"
"${OpenSSL_DIR}/libcrypto.so.1.0.0"
DESTINATION ${lib_dir})
endif()
# Install binary
install(
TARGETS robomongo
RUNTIME DESTINATION ${bin_dir}
BUNDLE DESTINATION .)
# Install license, copyright and changelogs files
install(
FILES
${CMAKE_SOURCE_DIR}/LICENSE
${CMAKE_SOURCE_DIR}/COPYRIGHT
${CMAKE_SOURCE_DIR}/CHANGELOG
${CMAKE_SOURCE_DIR}/DESCRIPTION
DESTINATION ${license_dir})
# Install common dependencies
install_qt_lib(Core Gui Widgets PrintSupport Network Xml)
install_qt_plugins(QGifPlugin QICOPlugin)
install_icu_libs()
if(SYSTEM_LINUX)
install_qt_lib(XcbQpa DBus)
install_qt_plugins(
QXcbIntegrationPlugin)
elseif(SYSTEM_MACOSX)
install_qt_lib(MacExtras DBus)
install_qt_plugins(
QCocoaIntegrationPlugin
QMinimalIntegrationPlugin
QOffscreenIntegrationPlugin)
# Install icon
install(
FILES "${CMAKE_SOURCE_DIR}/install/macosx/robomongo.icns"
DESTINATION "${resources_dir}")
elseif(SYSTEM_WINDOWS)
install_qt_plugins(
QWindowsIntegrationPlugin
QMinimalIntegrationPlugin
QOffscreenIntegrationPlugin)
# Install runtime libraries:
# msvcp120.dll
# msvcr120.dll
set(CMAKE_INSTALL_SYSTEM_RUNTIME_DESTINATION .)
include(InstallRequiredSystemLibraries)
endif()
+105
View File
@@ -0,0 +1,105 @@
function(install_qt_lib)
foreach(module ${ARGV})
set(target_name Qt5::${module})
set(module_name Qt5${module})
# Get full path to some known Qt library (i.e. /path/to/lib/libQt5Widgets.so.5.5.1)
get_target_property(target_path Qt5::Core LOCATION)
# Get folder path of library (i.e. /path/to/lib)
get_filename_component(qt_lib_dir ${target_path} DIRECTORY)
if (SYSTEM_LINUX)
# Not very good solution, but we simply take all files with *Qt5<module>* in names (including symlinks)
file(GLOB module_libs ${qt_lib_dir}/${CMAKE_SHARED_LIBRARY_PREFIX}${module_name}*)
# Install to "lib" folder
install(FILES ${module_libs}
DESTINATION ${lib_dir})
endif()
if(SYSTEM_MACOSX)
set(module_name Qt${module})
# On Mac OS we are still located in .framework folder,
# and we need to go one level up
get_filename_component(qt_lib_dir ${qt_lib_dir} DIRECTORY)
install(
DIRECTORY ${qt_lib_dir}/${module_name}.framework
DESTINATION ${lib_dir}
PATTERN "*_debug" EXCLUDE # Exclude debug libraries
PATTERN "Headers" EXCLUDE) # Exclude Headers folders
endif()
if (SYSTEM_WINDOWS)
# Install single DLL to lib directory
install(FILES ${qt_lib_dir}/${module_name}${CMAKE_SHARED_LIBRARY_SUFFIX}
DESTINATION ${lib_dir})
endif()
endforeach()
endfunction()
function(install_icu_libs)
# We are trying to get 'lib' folder of Qt installation.
# For this we take some known target (Qt5::Core in this case)
# and taking path to this library.
# Get full path to known library (i.e. /path/to/lib/libQt5Core.so.5.5.1)
get_target_property(target_path Qt5::Core LOCATION)
# Get absolute path to 'lib' folder (which is a parent folder of 'known' library)
get_filename_component(qt_lib_dir ${target_path} DIRECTORY)
# Not very good solution, but we simply take all files with *icu* in names (including symlinks)
file(GLOB icu_libs ${qt_lib_dir}/${CMAKE_SHARED_LIBRARY_PREFIX}icu*)
# Install to "lib" folder
install(FILES ${icu_libs}
DESTINATION ${lib_dir})
endfunction()
# Installs Qt5 plugins. Uses value of global variable "qt_plugins_dir" as
# absolute path to where install plugins.
#
# You can find list of plugin names by examing this variable: Qt5<Module>_PLUGINS
# For example, Qt5Gui_PLUGINS.
#
# Debug plugins, running application in this way:
# QT_DEBUG_PLUGINS=1 ./yourapp
#
# Some examples of plugin names:
# QGifPlugin, QGtk2ThemePlugin, QIbusPlatformInputContextPlugin
#
# Sample:
# install_qt_plugins(QGifPlugin QGtk2ThemePlugin QIbusPlatformInputContextPlugin)
#
function(install_qt_plugins)
foreach(name ${ARGV})
set(target_name Qt5::${name})
# We are trying to get 'plugins' folder of Qt installation.
# Get full path to plugin library (i.e. /path/to/plugins/imageformats/libqgif.so)
get_target_property(target_path ${target_name} LOCATION)
# Get absolute path to parent folder (i.e. /path/to/plugins/imageformats for Qt5::QGifPlugin)
get_filename_component(plugin_dir ${target_path} DIRECTORY)
# Get plugin parent directory (i.e. "imageformats" for Qt5::QGifPlugin)
get_filename_component(plugin_dir_name ${plugin_dir} NAME)
# Get plugin file name (i.e. "libqgif.so" for Qt5::QGifPlugin)
get_filename_component(plugin_file_name ${target_path} NAME)
# Get absolute path to plugins folder (i.e. /path/to/plugins)
get_filename_component(plugins_dir ${plugin_dir} DIRECTORY)
# Install to "lib" folder
install(
FILES ${target_path}
DESTINATION ${qt_plugins_dir}/${plugin_dir_name})
endforeach()
endfunction()
+120
View File
@@ -0,0 +1,120 @@
# Notes for maintainers.
#
# 1. Make sure that we use only lowercase letters in file name of outputed
# package for all platforms and package types.
#
# Get last commit hash
execute_process(
COMMAND git rev-parse --short HEAD
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
OUTPUT_VARIABLE git_hash
OUTPUT_STRIP_TRAILING_WHITESPACE)
# Timestamp (not used for now)
string(TIMESTAMP timestamp "%Y-%m-%d")
# Package name (as it should appear in UI)
set(CPACK_PACKAGE_NAME robomongo)
# Version of the package
set(CPACK_PACKAGE_VERSION_MAJOR ${PROJECT_VERSION_MAJOR})
set(CPACK_PACKAGE_VERSION_MINOR ${PROJECT_VERSION_MINOR})
set(CPACK_PACKAGE_VERSION_PATCH ${PROJECT_VERSION_PATCH})
set(CPACK_PACKAGE_VERSION ${PROJECT_VERSION})
# Where to put generated package
set(CPACK_PACKAGE_DIRECTORY ${CMAKE_BINARY_DIR}/package)
# Disables the component-based install process for installers
# that support it (NSIS, for instance)
set(CPACK_MONOLITHIC_INSTALL ON)
# Strip debug information on platforms that support it
set(CPACK_STRIP_FILES ON)
# Additional information
set(CPACK_PACKAGE_VENDOR "3T Software Labs Ltd")
set(CPACK_PACKAGE_CONTACT robomongo@3t.io)
set(CPACK_PACKAGE_DESCRIPTION "Shell-centric cross-platform MongoDB management tool.")
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Robomongo is a shell-centric cross-platform MongoDB management tool.")
# Use lowercase for system name and package file name
string(TOLOWER ${CMAKE_SYSTEM_NAME} system_name)
string(TOLOWER ${CPACK_PACKAGE_NAME} package_file_name)
string(TOLOWER ${CPACK_PACKAGE_VERSION} package_file_version)
# We use function from TargetArch.cmake module
# Returns string with target architecture value
# Output for common architectures is: i386 or x86_64
target_architecture(target_arch)
# Package file name
set(CPACK_PACKAGE_FILE_NAME ${package_file_name}-${package_file_version}-${system_name}-${target_arch}-${git_hash})
if(SYSTEM_LINUX)
set(CPACK_GENERATOR TGZ)
elseif(SYSTEM_MACOSX)
set(CPACK_GENERATOR DragNDrop)
set(CPACK_DMG_DS_STORE ${CMAKE_SOURCE_DIR}/install/macosx/DMG_DS_Store)
elseif(SYSTEM_WINDOWS)
set(files_dir "${CMAKE_SOURCE_DIR}/install/windows")
set(exe_name "robomongo.exe")
set(CPACK_GENERATOR NSIS ZIP)
set(CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_SOURCE_DIR}/DESCRIPTION")
# License file will be shown in the installation wizard
set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_SOURCE_DIR}/LICENSE")
# Default installation directory (not full path), just the path after
# default "c:\Program Files"
set(CPACK_PACKAGE_INSTALL_DIRECTORY "${ROBOMONGO_DISPLAY_FULL_NAME}")
# A path to the executable inside installed package that contains icon
# This icon is used in Windows "Add or remove programs" control panel
set(CPACK_NSIS_INSTALLED_ICON_NAME "\\\\${exe_name}")
# Create shortcuts on desktop and start-up menu
set(CPACK_NSIS_CREATE_ICONS_EXTRA "
CreateShortCut '$SMPROGRAMS\\\\$STARTMENU_FOLDER\\\\${ROBOMONGO_DISPLAY_FULL_NAME}.lnk' '$INSTDIR\\\\${exe_name}'
CreateShortCut '$DESKTOP\\\\${ROBOMONGO_DISPLAY_FULL_NAME}.lnk' '$INSTDIR\\\\${exe_name}'
")
# Cleanup during uninstallation. This cleanup is required because shortcuts
# will not be deleted automatically.
# Without line '!insertmacro...' shortcut in start menu will not be removed
# (i.e. it doesn't work when we referece '$STARTMENU_FOLDER' that is used
# when creating shortcuts). This solution was found somewhere in internet.
set(CPACK_NSIS_DELETE_ICONS_EXTRA "
!insertmacro MUI_STARTMENU_GETFOLDER Application $MUI_TEMP
Delete '$DESKTOP\\\\${ROBOMONGO_DISPLAY_FULL_NAME}.lnk'
Delete '$SMPROGRAMS\\\\$MUI_TEMP\\\\${ROBOMONGO_DISPLAY_FULL_NAME}.lnk'
")
# The title displayed at the top of the installer
set(CPACK_NSIS_PACKAGE_NAME "${ROBOMONGO_DISPLAY_FULL_NAME}")
# Installer images (for sidebar and topbar)
set(CPACK_PACKAGE_ICON "${files_dir}\\\\nsis-topbar.bmp")
set(CPACK_NSIS_INSTALLER_MUI_ICON_CODE "!define MUI_WELCOMEFINISHPAGE_BITMAP \\\"${files_dir}\\\\nsis-sidebar.bmp\\\"")
# URL to a web site providing more information about application
# This url was noticed at least in "Add or remove programs" control
# panel.
set(CPACK_NSIS_URL_INFO_ABOUT "www.robomongo.org")
# Specify an executable to add an option to run on the finish
# page of the NSIS installer. Without "..\\\\" it dowsn't work for NSIS 2.5
set(CPACK_NSIS_MUI_FINISHPAGE_RUN "..\\\\${exe_name}")
# Trying to set for installer and uninstaller, but this is
# doesn't work and default icons are still used...
set(CPACK_NSIS_MUI_ICON "${files_dir}\\\\robomongo.ico")
set(CPACK_NSIS_MUI_UNIICON "${files_dir}\\\\robomongo.ico")
endif()
include(CPack)
+123
View File
@@ -0,0 +1,123 @@
###
# Prints CMake variables.
#
# Print all variables in the current scope:
#
# print_vars()
# print_vars("") # the same result, as previous line
#
# Print all variables with names, matching regex, case insensitive:
#
# print_vars("SOMEVAR")
# print_vars("someVar") # the same result, as previous line
# print_vars("^CMAKE") # print all variables, that starts from "CMAKE"
# print_vars("VAR$") # ends by "VAR"
# print_vars("^VAR$") # exact match
#
function(print_vars)
if(ARGV0)
set(regex ${ARGV0})
endif()
get_cmake_property(names VARIABLES)
foreach(name ${names})
# Make lowercase variants for case-insensitive comparing
string(TOLOWER "${name}" lc_name)
string(TOLOWER "${regex}" lc_regex)
if(lc_name MATCHES "${lc_regex}")
message("${name}=${${name}}")
endif()
endforeach()
endfunction()
###
# Print content of variable.
#
# print_var(PROJECT_NAME)
# print_var("PROJECT_NAME") # the same result as previous line
#
function(print_var name)
# Show nice output for not defined or empty variables
if(NOT DEFINED ${name})
set(value " is not defined.")
elseif("${${name}}" STREQUAL "")
set(value " is defined but empty.")
else()
set(value "=${${name}}")
endif()
message("${name}${value}")
endfunction()
###
# Prints included directories
#
function(print_include_dirs)
get_property(dirs DIRECTORY PROPERTY INCLUDE_DIRECTORIES)
foreach(dir ${dirs})
message("${dir}")
endforeach()
endfunction()
###
# Prints link directories
#
function(print_link_dirs)
get_property(dirs DIRECTORY PROPERTY LINK_DIRECTORIES)
foreach(dir ${dirs})
message("${dir}")
endforeach()
endfunction()
###
# Prints compile definitions
#
function(print_compile_definitions)
get_property(defs DIRECTORY PROPERTY COMPILE_DEFINITIONS)
foreach(def ${defs})
message("${def}")
endforeach()
endfunction()
###
# Prints target include directories
#
function(print_target_include_dirs target)
get_property(dirs TARGET ${target} PROPERTY INTERFACE_INCLUDE_DIRECTORIES)
foreach(dir ${dirs})
message("${dir}")
endforeach()
endfunction()
###
# Prints target compile definitions
#
function(print_target_compile_definitions target)
get_property(defs TARGET ${target} PROPERTY INTERFACE_COMPILE_DEFINITIONS)
foreach(def ${defs})
message("${def}")
endforeach()
endfunction()
###
# Prints target link libraries
#
function(print_target_link_libraries target)
get_property(defs TARGET ${target} PROPERTY INTERFACE_LINK_LIBRARIES)
foreach(def ${defs})
message("${def}")
endforeach()
endfunction()
###
# Prints Qt5 module plugins
#
function(print_qt_module_plugins module)
foreach(plugin ${Qt5${module}_PLUGINS})
get_target_property(loc ${plugin} LOCATION)
message("Plugin ${plugin} is at location ${loc}")
endforeach()
endfunction()
+154
View File
@@ -0,0 +1,154 @@
# Copyright (c) 2012 Petroules Corporation. All rights reserved.
#
# Redistribution and use in source and binary forms, with or without modification, are permitted provided that the
# following conditions are met:
#
# Redistributions of source code must retain the above copyright notice, this list of conditions and the following
# disclaimer.
#
# Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following
# disclaimer in the documentation and/or other materials provided with the distribution.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED
# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
# PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
# ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
# TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.
# Based on the Qt 5 processor detection code, so should be very accurate
# https://qt.gitorious.org/qt/qtbase/blobs/master/src/corelib/global/qprocessordetection.h
# Currently handles arm (v5, v6, v7), x86 (32/64), ia64, and ppc (32/64)
# Regarding POWER/PowerPC, just as is noted in the Qt source,
# "There are many more known variants/revisions that we do not handle/detect."
set(archdetect_c_code "
#if defined(__arm__) || defined(__TARGET_ARCH_ARM)
#if defined(__ARM_ARCH_7__) \\
|| defined(__ARM_ARCH_7A__) \\
|| defined(__ARM_ARCH_7R__) \\
|| defined(__ARM_ARCH_7M__) \\
|| (defined(__TARGET_ARCH_ARM) && __TARGET_ARCH_ARM-0 >= 7)
#error cmake_ARCH armv7
#elif defined(__ARM_ARCH_6__) \\
|| defined(__ARM_ARCH_6J__) \\
|| defined(__ARM_ARCH_6T2__) \\
|| defined(__ARM_ARCH_6Z__) \\
|| defined(__ARM_ARCH_6K__) \\
|| defined(__ARM_ARCH_6ZK__) \\
|| defined(__ARM_ARCH_6M__) \\
|| (defined(__TARGET_ARCH_ARM) && __TARGET_ARCH_ARM-0 >= 6)
#error cmake_ARCH armv6
#elif defined(__ARM_ARCH_5TEJ__) \\
|| (defined(__TARGET_ARCH_ARM) && __TARGET_ARCH_ARM-0 >= 5)
#error cmake_ARCH armv5
#else
#error cmake_ARCH arm
#endif
#elif defined(__i386) || defined(__i386__) || defined(_M_IX86)
#error cmake_ARCH i386
#elif defined(__x86_64) || defined(__x86_64__) || defined(__amd64) || defined(_M_X64)
#error cmake_ARCH x86_64
#elif defined(__ia64) || defined(__ia64__) || defined(_M_IA64)
#error cmake_ARCH ia64
#elif defined(__ppc__) || defined(__ppc) || defined(__powerpc__) \\
|| defined(_ARCH_COM) || defined(_ARCH_PWR) || defined(_ARCH_PPC) \\
|| defined(_M_MPPC) || defined(_M_PPC)
#if defined(__ppc64__) || defined(__powerpc64__) || defined(__64BIT__)
#error cmake_ARCH ppc64
#else
#error cmake_ARCH ppc
#endif
#endif
#error cmake_ARCH unknown
")
# Set ppc_support to TRUE before including this file or ppc and ppc64
# will be treated as invalid architectures since they are no longer supported by Apple
function(target_architecture output_var)
if(APPLE AND CMAKE_OSX_ARCHITECTURES)
# On OS X we use CMAKE_OSX_ARCHITECTURES *if* it was set
# First let's normalize the order of the values
# Note that it's not possible to compile PowerPC applications if you are using
# the OS X SDK version 10.6 or later - you'll need 10.4/10.5 for that, so we
# disable it by default
# See this page for more information:
# http://stackoverflow.com/questions/5333490/how-can-we-restore-ppc-ppc64-as-well-as-full-10-4-10-5-sdk-support-to-xcode-4
# Architecture defaults to i386 or ppc on OS X 10.5 and earlier, depending on the CPU type detected at runtime.
# On OS X 10.6+ the default is x86_64 if the CPU supports it, i386 otherwise.
foreach(osx_arch ${CMAKE_OSX_ARCHITECTURES})
if("${osx_arch}" STREQUAL "ppc" AND ppc_support)
set(osx_arch_ppc TRUE)
elseif("${osx_arch}" STREQUAL "i386")
set(osx_arch_i386 TRUE)
elseif("${osx_arch}" STREQUAL "x86_64")
set(osx_arch_x86_64 TRUE)
elseif("${osx_arch}" STREQUAL "ppc64" AND ppc_support)
set(osx_arch_ppc64 TRUE)
else()
message(FATAL_ERROR "Invalid OS X arch name: ${osx_arch}")
endif()
endforeach()
# Now add all the architectures in our normalized order
if(osx_arch_ppc)
list(APPEND ARCH ppc)
endif()
if(osx_arch_i386)
list(APPEND ARCH i386)
endif()
if(osx_arch_x86_64)
list(APPEND ARCH x86_64)
endif()
if(osx_arch_ppc64)
list(APPEND ARCH ppc64)
endif()
else()
file(WRITE "${CMAKE_BINARY_DIR}/arch.c" "${archdetect_c_code}")
enable_language(C)
# Detect the architecture in a rather creative way...
# This compiles a small C program which is a series of ifdefs that selects a
# particular #error preprocessor directive whose message string contains the
# target architecture. The program will always fail to compile (both because
# file is not a valid C program, and obviously because of the presence of the
# #error preprocessor directives... but by exploiting the preprocessor in this
# way, we can detect the correct target architecture even when cross-compiling,
# since the program itself never needs to be run (only the compiler/preprocessor)
try_run(
run_result_unused
compile_result_unused
"${CMAKE_BINARY_DIR}"
"${CMAKE_BINARY_DIR}/arch.c"
COMPILE_OUTPUT_VARIABLE ARCH
CMAKE_FLAGS CMAKE_OSX_ARCHITECTURES=${CMAKE_OSX_ARCHITECTURES}
)
# Parse the architecture name from the compiler output
string(REGEX MATCH "cmake_ARCH ([a-zA-Z0-9_]+)" ARCH "${ARCH}")
# Get rid of the value marker leaving just the architecture name
string(REPLACE "cmake_ARCH " "" ARCH "${ARCH}")
# If we are compiling with an unknown architecture this variable should
# already be set to "unknown" but in the case that it's empty (i.e. due
# to a typo in the code), then set it to unknown
if (NOT ARCH)
set(ARCH unknown)
endif()
endif()
set(${output_var} "${ARCH}" PARENT_SCOPE)
endfunction()
+27
View File
@@ -0,0 +1,27 @@
if(SYSTEM_LINUX OR SYSTEM_MACOSX)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=gnu99")
elseif(SYSTEM_WINDOWS)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D_UNICODE -DUNICODE -DWIN32 -D_WIN32 -D_CRT_SECURE_NO_WARNINGS -DBOOST_ALL_NO_LIB")
# Do not show some warnings. We turned off the same warnings as MongoDB do
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /wd4355 /wd4800 /wd4267 /wd4244 /wd4290 /wd4068 /wd4351")
# The /MP option can reduce the total time to compile the source files. This option
# causes the compiler to create one or more copies of itself, each in a separate process.
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /MP")
set(CMAKE_C_FLAGS "${CMAKE_CXX_FLAGS} /MP")
set(CMAKE_CXX_STANDARD_LIBRARIES "${CMAKE_CXX_STANDARD_LIBRARIES} psapi.lib bcrypt.lib Iphlpapi.lib dbghelp.lib ws2_32.lib winmm.lib version.lib")
endif()
set(PROJECT_NAME "Robomongo")
set(PROJECT_NAME_TITLE ${PROJECT_NAME})
set(PROJECT_DOMAIN "www.robomongo.org")
set(PROJECT_COMPANYNAME "3T Software Labs Ltd")
set(PROJECT_COPYRIGHT "Copyright (C) 2014-2017 ${PROJECT_COMPANYNAME} All Rights Reserved.")
set(PROJECT_COMPANYNAME_DOMAIN "https://studio3t.com/")
set(PROJECT_GITHUB_FORK "www.github.com/paralect/robomongo")
set(PROJECT_GITHUB_ISSUES "www.github.com/paralect/robomongo/issues")
string(TOLOWER ${PROJECT_NAME} PROJECT_NAME_LOWERCASE)
+55
View File
@@ -0,0 +1,55 @@
What is this?
-------------
Files in this folder are read by FindMongoDB.cmake script.
We link with MongoDB shell using objects instead of static libs, because:
> We require the use of the 'object' mode for release builds because it is the only linking
> model that works across all of our platforms. We would like to ensure that all of our
> released artifacts are built with the same known-good-everywhere model.
This is a quote from root SConstruct file in MongoDB repository.
It is possible to build MongoDB shell in the following way:
$ scons mongo --link-model=static
Than we will have produced static libs that we can link with. But in release mode MongoDB
SConstruct file do not support static link mode by default. This command will *not* work:
$ scons mongo --release --link-model=static
We decided to use object link mode even for debug builds, in order to use single mode across
all platforms and configurations.
How did you receive content for this files?
-------------------------------------------
First we build MongoDB shell with the following command:
$ scons mongo -j8 --release
Than we remove compiled `mongo` and run the same command again to see only final link command:
$ rm build/opt/mongo/mongo
$ scons mongo -j8 --release > release-link-command.txt
And finally we manually copy/paste list of objects to `<platform>-release.objects` file. Make sure
that they are single-line files.
Almost the same steps we are doing for debug builds:
$ scons mongo -j8 --dbg
$ rm build/debug/mongo/mongo
$ scons mongo -j8 --dbg > debug-link-command.txt
And list of objects is copied to `<platform>-debug.objects` file.
We found, that on Linux (Ubuntu 14.10), list of debug objects differ from list of release objects only
by two files. File `debugallocation.o` is linked in debug mode, but not in release.
File `debugallocation.o` is linked in release mode, but not in debug. Both are located
in `third_party/gperftools-2.2/src` folder. In any way, we keep separate lists of object files
for both configurations. Still we need to test that objects are the same even across different
versions of Linux.
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+55
View File
@@ -0,0 +1,55 @@
Building Robomongo Shell
========================
Robomongo uses [modified version](https://github.com/paralect/robomongo-shell/tree/roboshell-v3.2) of MongoDB that we call Robomongo Shell. Before you can build Robomongo, you have to build Robomongo Shell. The following instructions are applicable only for Mac OS X and Linux. For Windows instructions please check [Building Robomongo on Windows](BuildingRobomongoOnWindows.md).
Build for Mac OS X or Linux
---------------------------
#### Prerequisites
1. Install [Scons](http://scons.org/tag/releases.html) (2.4 or later)
2. Clone Robomongo Shell and checkout to `roboshell-v3.2` branch:
```sh
$ git clone https://github.com/paralect/robomongo-shell.git
$ cd robomongo-shell
$ git checkout roboshell-v3.2
```
3. Build Robomongo Shell:
```sh
$ bin/build
```
Done! Now you can continue with [Step 2](BuildingRobomongo.md#step-2) and build Robomongo
with embedded MongoDB 3.2 shell (that you've just built).
<br/>
#### Advanced helper commands
The following commands are needed only if you are planning to develop or deeper understand
Robomongo or Robomongo Shell build processes.
Clean build files for release mode (folder `build/opt` will be removed):
$ bin/clean
Here is a command that is executed by `bin/build` script:
$ scons mongo -j8 --release --osx-version-min=10.9
Argument `--osx-version-min` is required only for Mac OS.
Build MongoDB shell in debug mode:
$ scons mongo -j8 --dbg
Clear builds:
$ scons -c mongo # clears release build
$ scons -c --dbg mongo # clears debug build
+139
View File
@@ -0,0 +1,139 @@
Building Robomongo (Mac OS X and Linux)
==================
A. Prerequisites
-------------
1. Install CMake (3.2 or later)
2. Install [Scons](http://scons.org/tag/releases.html) (2.4 or later)
3. Install Qt 5.7
```sh
Example installation for MAC OSX and Ubuntu:
Go to http://download.qt.io/archive/qt/5.7/5.7.0/
Download, run and install
qt-opensource-mac-x64-clang-5.7.0.dmg (for MAC OSX)
qt-opensource-linux-x64-5.7.0.run (for Linux)
After successful installation you should have
/path/to/qt-5.7.0/5.7/clang_64 (for MAC OSX)
/path/to/qt-5.7.0/5.7/gcc_64 (for Linux)
More information for installing on Ubuntu:
https://wiki.qt.io/Install_Qt_5_on_Ubuntu
```
4. Download and Build OpenSSL (1.0.1p) - (explained below in section B)
B. Building Robomongo and Dependencies
-------------
#### Step 1. Build OpenSSL (1.0.1p)
Steps to build OpenSSL on MAC:
```sh
Download openssl-1.0.1p (ftp://ftp.openssl.org/source/old/1.0.1/openssl-1.0.1p.tar.gz)
tar -xvzf openssl-1.0.1p.tar.gz
cd /Users/<user>/Downloads/openssl-1.0.1p
./Configure darwin64-x86_64-cc shared --openssldir="@rpath"
make (or sudo make)
mkdir lib
cp libssl.1.0.0.dylib libcrypto.1.0.0.dylib lib/
```
Helper Commands
```sh
// to start fresh build
make clean
```
Steps to build OpenSSL on Linux:
```sh
Download openssl-1.0.1p (ftp://ftp.openssl.org/source/old/1.0.1/openssl-1.0.1p.tar.gz)
tar -xvzf openssl-1.0.1p.tar.gz
cd /home/<user>/Downloads/openssl-1.0.1p
./config shared
make
mkdir lib
cp libssl* libcrypto* lib/
```
#### Step 2. Build Robomongo Shell (fork of MongoDB)
Clone Robomongo Shell and checkout to `roboshell-v3.2` branch:
```sh
$ git clone https://github.com/paralect/robomongo-shell.git
$ cd robomongo-shell
$ git checkout roboshell-v3.2
```
Set special environment variable `ROBOMONGO_CMAKE_PREFIX_PATH` to point to a set of
directories:
1. Location of Qt 5 SDK
2. Location of Robomongo Shell
3. Location of OpenSSL
Separate directories by semicolon `;` (not colon):
// MAC OSX example:
$ export ROBOMONGO_CMAKE_PREFIX_PATH="/path/to/qt-5.7.0/5.7/clang_64;/path/to/robomongo-shell;/path/to/openssl-1.0.1p"
// Ubuntu example:
$ export ROBOMONGO_CMAKE_PREFIX_PATH="/path/to/qt-5.7.0/5.7/gcc_64;/path/to/robomongo-shell;/path/to/openssl-1.0.1p"
Build Robomongo Shell:
```sh
$ bin/build
```
For more information refer to [Building Robomongo Shell](BuildingMongoDB.md)
#### Step 3. Build Robomongo
Download Robomongo:
$ git clone https://github.com/paralect/robomongo
$ cd robomongo
Run configuration step:
$ bin/configure
And finally, build Robomongo:
$ bin/build
To run robomongo:
$ bin/run
**Helper commands**
Clean build files (in order to start build from scratch):
$ bin/clean
Install Robomongo to `build/release/install` folder:
$ bin/install
Create package for your OS in `build/release/package` folder:
$ bin/pack
**Important Notes**
- For Ubuntu 16.04 builds, it has been reported that Robomongo /bin/configure step might fail and installing mesa-common-dev package solves it. Details: https://github.com/paralect/robomongo/issues/1268
- For Centos builds, Robomongo /bin/configure step might fail due to error: `failed to find gl/gl.h`. In this case, the following packages must be installed:
```sh
$ sudo yum install mesa-libGL
$ sudo yum install mesa-libGL-devel
```
+184
View File
@@ -0,0 +1,184 @@
Building Robomongo (Windows)
==============================
A. Prerequisites
-------------
#### 0. Git
Download Git installer from http://git-scm.com (we are using Git-2.7.0-64-bit).
When you'll see "Adjusting your PATH environment" wizard page, select
"Use Git from the Windows Command Prompt" option. This will allow to
execute Git from both Windows Command Prompt and Bash. This is required,
because both MongoDB and Robomongo uses `git` command during build process
which must be perfomed from Windows Command Prompt (not Bash).
On "Configuring the line ending conversion" wizard page, select "Checkout
Windows-style, commit Unix-style line ending" option. This is a common mode
for cross-platform projects and required by both MongoDB and Robomongo.
All other Git installer options are not important (use defaults).
If you are using SSH clone url, start SSH agent and add your private key
with this commands in Git Bash:
$ eval `ssh-agent` # starts ssh agent
$ ssh-add ~/.ssh/mykey # add your key (which can be in any folder)
#### 1. Visual Studio 2013 (i.e. MSVC12) Update 4 or newer
We use Visual Studio 2013 Update 5, and recommend to use this version to save
time for Qt compilation. Currently prebuilt binaries for Qt are available
from official Qt site. But you can use any newer version and compile Qt library
yourself.
If you already have VS2013, you can download Update 5 here:
https://www.microsoft.com/en-us/download/details.aspx?id=48129
Update 4 or newer version is required to compile MongoDB.
#### 2. ActivePython 2.7
Download ActivePython from http://www.activestate.com/activepython/downloads
Download MSI x64 version. Use default settings in installation wizard.
This installer will add path to `python.exe` to your `PATH` variable.
#### 3. Scons 2.3.4
Download Scons from http://scons.org/tag/releases.html
Use ZIP archive, not MSI (we use scons-2.3.4.zip)
Open Command Prompt, navigate to Scons directory and run:
$ setup.py install
This command will make `scons` command accessible from Command Prompt
#### 4. CMake
Download CMake from https://cmake.org/download (we use cmake-3.3.2-win32-x86.exe)
Use installer package, it will allow you to configure your PATH variable and `cmake`
command will be available from Command Prompt. For this set "Add CMake to the system
PATH for current user" in the installer wizard page.
#### 5. Qt 5.7
Download Qt from http://www.qt.io/download-open-source/ (we use Qt Online installer)
When installing Qt, only one component is required by Robomongo:
Qt 5.7
[x] msvc2013 64-bit.
This components contains prebuilt 64-bit binaries for Visual Studio 2013.
You may uncheck all other components to download as little as possible.
#### 6. OpenSSL (1.0.1p)
Download openssl-1.0.1p (ftp://ftp.openssl.org/source/old/1.0.1/openssl-1.0.1p.tar.gz)
B. Building Robomongo and Dependencies
-------------
#### 1. Build OpenSSL (1.0.1p)
Steps to build OpenSSL on windows:
```sh
Open Visual Studio tool x64 Cross Tools Command prompt
cd to the directory where you have openssl sources cd c:\myPath\openssl
perl Configure VC-WIN64A
ms\do_win64a
nmake -f ms\ntdll.mak
```
**Check Point:**
After successful build, newly created sub directory out32dll should contain dynamic lib files libeay32.lib (and libeay32.dll) and ssleay32.lib (and ssleay32.dll); and associated include files will be in newly created folder "inc32".
Helper Commands:
```sh
// clean to start fresh build
nmake -f ms\ntdll.mak clean
```
Refer to OpenSSL documentation for more information:
https://wiki.openssl.org/index.php/Compilation_and_Installation#W64
#### 2. Build Robomongo Shell (fork of MongoDB)
Clone Robomongo Shell and checkout to roboshell-v3.2 branch:
```sh
$ git clone https://github.com/paralect/robomongo-shell.git
$ cd robomongo-shell
$ git checkout roboshell-v3.2
```
Set environment variable `ROBOMONGO_CMAKE_PREFIX_PATH`, required by Robomongo-Shell and Robomongo build scripts, needs to be set according to the following directories:
1. Location of Qt SDK
2. Location of Robomongo Shell
3. Location of OpenSSL
Separate directories by semicolon `;` (not colon). You can do this in Command Prompt:
> setx ROBOMONGO_CMAKE_PREFIX_PATH "d:\Qt-5\5.7\msvc2013_64;d:\Projects\robomongo-shell;c:\myPath\openssl-1.0.1p"
Open VS2013 x64 Native Tools Command Prompt and navigate to `robomongo-shell` folder.
Build shell:
> bin\build
Note that backslash is used (`\`), and not forward slash (`/`).
Clean build files:
> bin\clean
Refer to MongoDB documentation for additional information:
https://docs.mongodb.org/manual/contributors/tutorial/build-mongodb-from-source/#windows-specific-instructions
#### 3. Build Robomongo
Clone Robomongo:
```sh
$ git clone https://github.com/paralect/robomongo.git
```
Open VS2013 x64 Native Tools Command Prompt and navigate to `robomongo` folder.
Run configuration step:
> bin\configure
And finally, build Robomongo:
> bin\build
**Run Robomongo**
Install Robomongo to `build\Release\install` folder:
> bin\install
And run Robomongo
> \robomongo\build\Release\install\Robomongo.exe
**Helper commands**
Clean build files (in order to start build from scratch):
> bin\clean
+76
View File
@@ -0,0 +1,76 @@
Runtime Dependencies
====================
This information is for maintainers. If you want to just use Robomongo - download
prebuild packages for your platform.
Runtime dependencies that are not privided by platforms but required by Robomongo are:
1. Qt libraries
2. Qt plugins
Diagnostic of dependencies
--------------------------
#### Linux
a. View dependencies of executable or shared library:
$ ldd robomongo
$ readelf -d robomongo
b. View dependency tree of executable or shared library:
$ lddtree robomongo
$ ldd -v robomongo
c. View RPATH or RUNPATH records of executable or shared library:
$ objdump -x bin/robomongo | grep "RPATH\|RUNPATH"
$ readelf -d bin/robomongo | grep RPATH
For Robomongo binary it should be `$ORIGIN/../lib`
d. Enable extensive logging for run-time shared library search
$ export LD_DEBUG=files
$ bin/robomongo
Source:
http://tldp.org/HOWTO/Program-Library-HOWTO/shared-libraries.html
e. Modify RPATH using `chrpath` and the dynamic linker and RPATH using paths `patchelf`
$ patchelf --set-rpath '$ORIGIN/../lib' robo
More: https://nixos.org/patchelf.html
$ chrpath -r "/somepath/lib/" robomongo
More:
https://linux.die.net/man/1/chrpath
http://www.programering.com/a/MTOwcDNwATU.html // examples
#### Mac OS X
Show dependencies of executable or shared library:
$ otool -L robomongo
View LC_RPATH records of executable or shared library:
$ otool -l robomongo | grep -C2 RPATH
(option `-C2` asks grep to output 2 context lines before and after the match)
For Robomongo binary it should be `$executable_path/../Frameworks`
Diagnostic of Qt plugins
------------------------
Run Robomongo in the following way to see how plugins are resolved:
$ QT_DEBUG_PLUGINS=1 ./robomongo
Binary file not shown.
+8
View File
@@ -0,0 +1,8 @@
How to generate "icns" icon file
================================
In this directory run:
$ iconutil -c icns Robomongo.iconset
File `Robomongo.icns` will be generated.
+2
View File
@@ -0,0 +1,2 @@
[Paths]
Plugins = PlugIns/Qt
Binary file not shown.
Binary file not shown.

After

Width:  |  Height:  |  Size: 93 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 827 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 61 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 61 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 93 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

+2
View File
@@ -0,0 +1,2 @@
[Paths]
Plugins = @qt_conf_plugins@
+46
View File
@@ -0,0 +1,46 @@
How to generate ICO file from the set of PNGs
=============================================
Install ImageMagick (http://www.imagemagick.org/). Make sure that you
have added its utils to your PATH (installer will give you such an option)
In `icon-set` directory run:
> convert 256x256.png 128x128.png 64x64.png 48x48.png 40x40.png 32x32.png 24x24.png 20x20.png 16x16.png robomongo.ico
File `robomongo.ico` will be generated.
Which icon sizes are used on Windows?
=====================================
The most important sizes are the one that is small. Robomongo should include
16, 20, 24, 40, 48. The bigger sizes are usually scaled well, without notable
degrading in quality.
The following statistic was provided in this answer:
http://stackoverflow.com/a/12283978/407599
> After some testing with an icon with 8, 16, 20, 24, 32, 40, 48, 64, 96, 128
> and 256 pixels (256 in PNG) in Windows 7:
>
> At 100% resolution:
> Explorer uses 16, 40, 48, and 256. Windows Photo Viewer uses 96. Paint uses 256.
>
> At 125% resolution:
> Explorer uses 20, 40, and 256. Windows Photo Viewer uses 96. Paint uses 256.
>
> At 150% resolution:
> Explorer uses 24, 48, and 256. Windows Photo Viewer uses 96. Paint uses 256.
>
> At 200% resolution:
> Explorer uses 40, 64, 96, and 256. Windows Photo Viewer uses 128. Paint uses 256.
>
> So 8, 32 were never used (it's strange to me for 32) and 128 only by Windows Photo
> Viewer with a very high dpi screen, i.e. almost never used.
>
> It means your icon should at least provide 16, 48 and 256 for Windows 7. For supporting
> newer screens with high resolutions, you should provide 16, 20, 24, 40, 48, 64, 96, and 256.
> For Windows 7, all pictures can be compressed using PNG but for backward compatibility with
> Windows XP, 16 to 48 should not be compressed.
Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 717 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 996 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 217 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 54 KiB

After

Width:  |  Height:  |  Size: 129 KiB

Executable → Regular
+11 -11
View File
@@ -1,13 +1,13 @@
#include "verrsrc.h"
IDI_ICON1 ICON "@ICON_FILE@"
IDI_ICON1 ICON "@windows_icon@"
#define VER_FILEVERSION @MAJOR_VER@,@MINOR_VER1@,@MINOR_VER2@
#define VER_FILEVERSION_STR "@MAJOR_VER@.@MINOR_VER1@.@MINOR_VER2@\0"
#define VER_FILEVERSION @PROJECT_VERSION_MAJOR@,@PROJECT_VERSION_MINOR@,@PROJECT_VERSION_PATCH@
#define VER_FILEVERSION_STR "@PROJECT_VERSION_MAJOR@.@PROJECT_VERSION_MINOR@.@PROJECT_VERSION_PATCH@\0"
#define VER_PRODUCTVERSION @MAJOR_VER@,@MINOR_VER1@,@MINOR_VER2@
#define VER_PRODUCTVERSION_STR "@MAJOR_VER@.@MINOR_VER1@.@MINOR_VER2@\0"
#define VER_PRODUCTVERSION @PROJECT_VERSION_MAJOR@,@PROJECT_VERSION_MINOR@,@PROJECT_VERSION_PATCH@
#define VER_PRODUCTVERSION_STR "@PROJECT_VERSION_MAJOR@.@PROJECT_VERSION_MINOR@.@PROJECT_VERSION_PATCH@\0"
1 VERSIONINFO
FILEVERSION VER_FILEVERSION
@@ -26,14 +26,14 @@ IDI_ICON1 ICON "@ICON_FILE@"
BEGIN
BLOCK "040904e4"
BEGIN
VALUE "CompanyName", "@COMPANYNAME@\0"
VALUE "FileDescription", "@PRODUCTNAME@\0"
VALUE "CompanyName", "3T Software Labs Ltd\0"
VALUE "FileDescription", "Robomongo, MongoDB management tool\0"
VALUE "FileVersion", VER_FILEVERSION_STR
VALUE "LegalCopyright", "@PRODUCTCOPYRIGHT@\0"
VALUE "ProductName", "@PRODUCTNAME@\0"
VALUE "LegalCopyright", "Copyright 3T Software Labs Ltd, 2014 - 2017\0"
VALUE "ProductName", "Robomongo\0"
VALUE "ProductVersion", VER_PRODUCTVERSION_STR
VALUE "OriginalFilename", "@SHORTPRODUCTNAME@.exe\0"
VALUE "InternalName", "@SHORTPRODUCTNAME@\0"
VALUE "OriginalFilename", "Robomongo.exe\0"
VALUE "InternalName", "Robomongo\0"
END
END
BLOCK "VarFileInfo"
+11
View File
@@ -0,0 +1,11 @@
This is a logbook for notes about migration to MongoDB 3.2
DocumentTextEditor.cpp
----------------------
Commented error reporting.
Logger.cpp
----------
Commented Logger::print().
+1 -1
View File
@@ -1,6 +1,6 @@
Robomongo shortcut key reference
================================
"3T", "Robomongo"
### Windows/Linux users
Ctrl+Enter or F5 or Ctrl+R
+61
View File
@@ -0,0 +1,61 @@
# BasedOnStyle: Google
AccessModifierOffset: -4
AlignOperands: false
AlignAfterOpenBracket: true
AlignEscapedNewlinesLeft: true
AlignTrailingComments: true
AllowAllParametersOfDeclarationOnNextLine: true
AllowShortBlocksOnASingleLine: false
AllowShortCaseLabelsOnASingleLine: false
AllowShortFunctionsOnASingleLine: Empty
AllowShortIfStatementsOnASingleLine: false
AllowShortLoopsOnASingleLine: false
AlwaysBreakAfterDefinitionReturnType: false
AlwaysBreakBeforeMultilineStrings: true
AlwaysBreakTemplateDeclarations: true
BinPackArguments: false
BinPackParameters: false
BreakBeforeBinaryOperators: None
BreakBeforeBraces: Attach
BreakBeforeTernaryOperators: true
BreakConstructorInitializersBeforeComma: false
ColumnLimit: 100
CommentPragmas: ''
ConstructorInitializerAllOnOneLineOrOnePerLine: true
ConstructorInitializerIndentWidth: 4
ContinuationIndentWidth: 4
Cpp11BracedListStyle: true
DerivePointerAlignment: false
DisableFormat: false
ExperimentalAutoDetectBinPacking: false
ForEachMacros: [ foreach, Q_FOREACH, BOOST_FOREACH ]
IndentCaseLabels: true
IndentFunctionDeclarationAfterType: false
IndentWidth: 4
IndentWrappedFunctionNames: false
KeepEmptyLinesAtTheStartOfBlocks: false
Language: Cpp
MaxEmptyLinesToKeep: 2
NamespaceIndentation: None
ObjCSpaceAfterProperty: false
ObjCSpaceBeforeProtocolList: false
PenaltyBreakBeforeFirstCallParameter: 19
PenaltyBreakComment: 300
PenaltyBreakFirstLessLess: 120
PenaltyBreakString: 1000
PenaltyExcessCharacter: 1000000
PenaltyReturnTypeOnItsOwnLine: 200
PointerAlignment: Left
SpaceAfterCStyleCast: false
SpaceBeforeAssignmentOperators: true
SpaceBeforeParens: ControlStatements
SpaceInEmptyParentheses: false
SpacesBeforeTrailingComments: 2
SpacesInAngles: false
SpacesInCStyleCastParentheses: false
SpacesInContainerLiterals: true
SpacesInParentheses: false
SpacesInSquareBrackets: false
Standard: Cpp11
TabWidth: 4
UseTab: Never
+238
View File
@@ -0,0 +1,238 @@
# Automatically generate code for Qt moc, uic and rcc files
# Since CMake 2.8.6
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_AUTOUIC ON)
#set(sanitize "-fsanitize=address")
#set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${sanitize}")
#set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${sanitize}")
set(SOURCES
# Isolated Scope #1
core/utils/QtUtils.cpp
core/utils/StdUtils.cpp
core/utils/Logger.cpp
core/HexUtils.cpp
core/utils/BsonUtils.cpp
core/settings/CredentialSettings.cpp
core/settings/ConnectionSettings.cpp
core/Event.cpp
core/Enums.cpp
core/EventError.cpp
core/EventBusSubscriber.cpp
core/EventBusDispatcher.cpp
core/EventWrapper.cpp
core/EventBus.cpp
core/KeyboardManager.cpp
core/domain/MongoNamespace.cpp
core/domain/MongoUser.cpp
core/domain/MongoUser.cpp
core/domain/MongoFunction.cpp
core/domain/MongoUtils.cpp
core/domain/MongoCollection.cpp
core/domain/MongoCollectionInfo.cpp
core/domain/MongoQueryInfo.cpp
core/domain/MongoShellResult.cpp
core/domain/CursorPosition.cpp
core/domain/ScriptInfo.cpp
core/events/MongoEventsInfo.cpp
shell/db/ptimeutil.cpp
shell/bson/json.cpp
# Isolated Scope #2
core/engine/ScriptEngine.cpp
core/events/MongoEvents.cpp
core/domain/MongoDocument.cpp
gui/AppStyle.cpp
core/domain/MongoServer.cpp
core/domain/MongoShell.cpp
core/domain/MongoDatabase.cpp
core/domain/App.cpp
core/mongodb/MongoClient.cpp
core/mongodb/MongoWorker.cpp
core/mongodb/ReplicaSet.cpp
core/settings/SettingsManager.cpp
core/AppRegistry.cpp
utils/string_operations.cpp
utils/common.cpp
# Isolated Scope #3
gui/GuiRegistry.cpp
gui/dialogs/AboutDialog.cpp
gui/dialogs/EulaDialog.cpp
gui/dialogs/ConnectionAdvancedTab.cpp
gui/dialogs/ConnectionAuthTab.cpp
gui/dialogs/ConnectionBasicTab.cpp
gui/dialogs/ConnectionDiagnosticDialog.cpp
gui/dialogs/ConnectionDialog.cpp
gui/dialogs/CopyCollectionDialog.cpp
gui/widgets/workarea/IndicatorLabel.cpp
gui/dialogs/CreateCollectionDialog.cpp
gui/dialogs/CreateDatabaseDialog.cpp
gui/dialogs/CreateUserDialog.cpp
gui/utils/ComboBoxUtils.cpp
gui/utils/DialogUtils.cpp
# Isolated scope #4
gui/dialogs/PreferencesDialog.cpp
gui/dialogs/ConnectionsDialog.cpp
gui/dialogs/CreateConnectionDialog.cpp
gui/dialogs/ExportDialog.cpp
# Isolated scope #5
gui/editors/PlainJavaScriptEditor.cpp
gui/editors/JSLexer.cpp
gui/editors/FindFrame.cpp
gui/widgets/explorer/EditIndexDialog.cpp
gui/widgets/workarea/ScriptWidget.cpp
# Isolated scope #6
gui/widgets/explorer/ExplorerCollectionTreeItem.cpp
gui/widgets/explorer/ExplorerTreeItem.cpp
gui/widgets/explorer/ExplorerReplicaSetFolderItem.cpp
gui/widgets/explorer/ExplorerReplicaSetTreeItem.cpp
gui/widgets/explorer/ExplorerDatabaseTreeItem.cpp
gui/widgets/explorer/ExplorerDatabaseCategoryTreeItem.cpp
gui/widgets/explorer/ExplorerUserTreeItem.cpp
gui/widgets/explorer/ExplorerFunctionTreeItem.cpp
gui/dialogs/DocumentTextEditor.cpp
gui/dialogs/FunctionTextEditor.cpp
# Isolated scope #7
gui/widgets/explorer/ExplorerServerTreeItem.cpp
gui/widgets/explorer/ExplorerTreeWidget.cpp
gui/widgets/explorer/ExplorerWidget.cpp
gui/widgets/workarea/BsonTableModel.cpp
gui/widgets/workarea/BsonTableView.cpp
gui/widgets/workarea/BsonTreeItem.cpp
gui/widgets/workarea/BsonTreeModel.cpp
gui/widgets/workarea/BsonTreeView.cpp
core/domain/Notifier.cpp
# Isolated scope #8
gui/widgets/workarea/CollectionStatsTreeItem.cpp
gui/widgets/workarea/CollectionStatsTreeWidget.cpp
gui/widgets/workarea/JsonPrepareThread.cpp
gui/widgets/workarea/OutputItemContentWidget.cpp
gui/widgets/workarea/OutputItemHeaderWidget.cpp
gui/widgets/workarea/OutputWidget.cpp
gui/widgets/workarea/PagingWidget.cpp
gui/widgets/workarea/ProgressBarPopup.cpp
gui/widgets/workarea/QueryWidget.cpp
gui/widgets/workarea/WorkAreaTabBar.cpp
gui/widgets/workarea/WorkAreaTabWidget.cpp
gui/widgets/workarea/WelcomeTab.cpp
# Final scope
gui/widgets/LogWidget.cpp
gui/MainWindow.cpp
gui/dialogs/SSHTunnelTab.cpp
gui/dialogs/SSLTab.cpp
core/settings/SshSettings.cpp
core/settings/SslSettings.cpp
core/settings/ReplicaSetSettings.cpp
core/mongodb/SshTunnelWorker.cpp
resources/robo.qrc
gui/resources/gui.qrc
)
# Robomongo target
add_executable(robomongo MACOSX_BUNDLE WIN32 app/main.cpp ${SOURCES})
target_link_libraries(robomongo
PRIVATE
Qt5::Widgets
Qt5::Network
Qt5::Xml
qjson
qscintilla
mongodb
ssh
Threads::Threads) # Target from FindThreads CMake module
target_include_directories(robomongo
PRIVATE
${CMAKE_HOME_DIRECTORY}/src)
target_compile_definitions(robomongo
PRIVATE
PROJECT_NAME="${PROJECT_NAME}"
PROJECT_NAME_TITLE="${PROJECT_NAME_TITLE}"
PROJECT_COPYRIGHT="${PROJECT_COPYRIGHT}"
PROJECT_DOMAIN="${PROJECT_DOMAIN}"
PROJECT_COMPANYNAME="${PROJECT_COMPANYNAME}"
PROJECT_COMPANYNAME_DOMAIN="${PROJECT_COMPANYNAME_DOMAIN}"
PROJECT_GITHUB_FORK="${PROJECT_GITHUB_FORK}"
PROJECT_GITHUB_ISSUES="${PROJECT_GITHUB_ISSUES}"
PROJECT_VERSION="${PROJECT_VERSION}"
PROJECT_VERSION_SHORT="${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}"
PROJECT_QT_VERSION="${Qt5Core_VERSION}"
PROJECT_NAME_LOWERCASE="${PROJECT_NAME_LOWERCASE}")
if(SYSTEM_WINDOWS)
# Create Windows Resource file
set(windows_icon "${CMAKE_SOURCE_DIR}/install/windows/robomongo.ico")
configure_file(
"${CMAKE_SOURCE_DIR}/install/windows/winres.rc.in"
"${CMAKE_BINARY_DIR}/winres.rc")
unset(windows_icon)
# Add additional source file to "robomongo" target
target_sources(robomongo
PRIVATE
"${CMAKE_BINARY_DIR}/winres.rc")
# Rename output name for Windows
set_target_properties(robomongo PROPERTIES
OUTPUT_NAME "Robomongo")
# Seems that we do not need to do this with recent versions of Qt
target_link_libraries(robomongo
PRIVATE
Qt5::WinMain)
elseif(SYSTEM_MACOSX)
set_target_properties(robomongo PROPERTIES
INSTALL_RPATH "@executable_path/../Frameworks"
OUTPUT_NAME "Robomongo"
MACOSX_BUNDLE_INFO_PLIST "${CMAKE_SOURCE_DIR}/install/macosx/Info.plist.in"
MACOSX_BUNDLE_BUNDLE_NAME "Robomongo"
MACOSX_BUNDLE_GUI_IDENTIFIER "com.3tsoftwarelabs.robomongo"
MACOSX_BUNDLE_INFO_STRING "Robomongo ${PROJECT_VERSION}. Copyright 3T Software Labs Ltd, 2014 - 2017"
MACOSX_BUNDLE_SHORT_VERSION "${PROJECT_VERSION}"
MACOSX_BUNDLE_LONG_VERSION "${PROJECT_VERSION}"
MACOSX_BUNDLE_BUNDLE_VERSION "${PROJECT_VERSION}"
MACOSX_BUNDLE_COPYRIGHT "Copyright 3T Software Labs Ltd, 2014 - 2017"
MACOSX_BUNDLE_ICON_FILE "robomongo")
elseif(SYSTEM_LINUX)
set_target_properties(robomongo PROPERTIES
INSTALL_RPATH "$ORIGIN/../lib"
OUTPUT_NAME "robomongo")
endif()
# Install
include(RobomongoInstall)
#
# Tests targets (code below should be moved to separate file)
#
add_executable(tests WIN32 EXCLUDE_FROM_ALL app/main_test.cpp gui/editors/JSLexer.cpp)
target_link_libraries(tests Qt5::Widgets qjson qscintilla mongodb Threads::Threads)
target_include_directories(tests
PRIVATE
${CMAKE_HOME_DIRECTORY}/src)
# Target that creates original MongoDB shell
# Used to test compilation and linking
add_executable(shell EXCLUDE_FROM_ALL shell/shell/dbshell.cpp)
target_link_libraries(shell
mongodb
Threads::Threads) # Target from FindThreads CMake module
+69 -16
View File
@@ -3,27 +3,80 @@
#include <locale.h>
// Header "mongo/util/net/sock" is needed for mongo::enableIPv6()
// Header "mongo/platform/basic" is required by "sock.h" under Windows
#include <mongo/platform/basic.h>
#include <mongo/util/net/sock.h>
#include <mongo/base/initializer.h>
#include <mongo/util/net/ssl_options.h>
#include "robomongo/core/AppRegistry.h"
#include "robomongo/core/settings/SettingsManager.h"
#include "robomongo/gui/MainWindow.h"
#include "robomongo/gui/AppStyle.h"
#include "robomongo/gui/dialogs/EulaDialog.h"
#include "robomongo/ssh/ssh.h"
int main(int argc, char *argv[])
int main(int argc, char *argv[], char** envp)
{
QApplication app(argc, argv);
Robomongo::detail::initStyle();
setlocale(LC_NUMERIC,"C"); // do not move this line!!!
if (rbm_ssh_init())
return 1;
QRect screenGeometry = QApplication::desktop()->availableGeometry();
QSize size(screenGeometry.width() - 450, screenGeometry.height() - 165);
Robomongo::MainWindow win;
win.resize(size);
#if defined(Q_OS_MAC)
win.setUnifiedTitleAndToolBarOnMac(true);
// Please check, do we really need envp for other OSes?
#ifdef Q_OS_WIN
envp = NULL;
#endif
int x = (screenGeometry.width() - win.width()) / 2;
int y = (screenGeometry.height() - win.height()) / 2;
win.move(x, y);
win.show();
return app.exec();
// Support for IPv6 is disabled by default. Enable it.
mongo::enableIPv6(true);
// Perform SSL-enabled mongo initialization
mongo::sslGlobalParams.sslMode.store(mongo::SSLParams::SSLMode_allowSSL);
// Cross Platform High DPI support - Qt 5.7
QApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
// Initialization routine for MongoDB shell
mongo::runGlobalInitializersOrDie(argc, argv, envp);
// Initialize Qt application
QApplication app(argc, argv);
// On Unix/Linux Qt is configured to use the system locale settings by default.
// This can cause a conflict when using POSIX functions, for instance, when
// converting between data types such as floats and strings, since the notation
// may differ between locales. To get around this problem, call the POSIX
// function setlocale(LC_NUMERIC, "C") right after initializing QApplication or
// QCoreApplication to reset the locale that is used for number formatting to "C"-locale.
// (http://doc.qt.io/qt-5/qcoreapplication.html#locale-settings)
setlocale(LC_NUMERIC, "C");
#ifdef Q_OS_MAC
app.setAttribute(Qt::AA_UseHighDpiPixmaps);
#endif
// EULA License Agreement
auto const settingsManager = Robomongo::AppRegistry::instance().settingsManager();
if (!settingsManager->acceptedEulaVersions().contains(PROJECT_VERSION)) {
Robomongo::EulaDialog eulaDialog;
if (eulaDialog.exec() == QDialog::Rejected) {
rbm_ssh_cleanup();
return 1;
}
// EULA accepted
settingsManager->addAcceptedEulaVersion(PROJECT_VERSION);
settingsManager->save();
}
// Init GUI style
Robomongo::AppStyleUtils::initStyle();
// Application main window
Robomongo::MainWindow mainWindow;
mainWindow.show();
int rc = app.exec();
rbm_ssh_cleanup();
return rc;
}
+26
View File
@@ -0,0 +1,26 @@
#include <QApplication>
#include <QDesktopWidget>
#include <QDebug>
#include <locale.h>
#include <mongo/bson/bsonobjbuilder.h>
#include <robomongo/core/utils/BsonUtils.h>
using namespace Robomongo;
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
mongo::BSONObjBuilder m;
m.append("test", 56);
const mongo::BSONObj &obj = m.obj();
std::string str = BsonUtils::jsonString(obj, mongo::TenGen, 1, DefaultEncoding, Utc);
qDebug() << "Hello!";
qDebug() << QString::fromStdString(str);
return app.exec();
}
+76
View File
@@ -0,0 +1,76 @@
#undef NDEBUG
#include <sstream>
#include <iostream>
#include <assert.h>
#include <limits>
#include <mongo/util/exit_code.h>
#include <mongo/util/net/hostandport.h>
namespace mongo {
extern bool isShell;
void logProcessDetailsForLogRotate() {}
void exitCleanly(ExitCode code) {}
}
void testHostAndPort() {
mongo::HostAndPort hp = mongo::HostAndPort("127.0.0.1", 20017);
assert(hp.toString() == "127.0.0.1:20017");
hp = mongo::HostAndPort("2a03:b0c0:3:d0::f3:1001", 20017);
assert(hp.toString() == "[2a03:b0c0:3:d0::f3:1001]:20017");
// toString() will wrap IPv6 address in brackets even if they
// are already exist. This is true at least for MongoDB 3.2
hp = mongo::HostAndPort("[2a03:b0c0:3:d0::f3:1001]", 20017);
assert(hp.toString() == "[[2a03:b0c0:3:d0::f3:1001]]:20017");
hp = mongo::HostAndPort("[2a03:b0c0:3:d0::f3:1001", 20017);
assert(hp.toString() == "[[2a03:b0c0:3:d0::f3:1001]:20017");
}
void precisionAssert(const std::string &text, double d) {
std::stringstream s;
s.precision(std::numeric_limits<double>::digits10);
s << d;
if (d == (long long)d)
s << ".0";
std::cout << "Checking " << text << " - ";
assert(text == s.str());
std::cout << "Correct. " << std::endl;
}
void testPrecision() {
precisionAssert("-9.987654321", -9.987654321);
precisionAssert("-1.0", -1.0);
precisionAssert("-0.0", -0.0);
precisionAssert("0.0", 0.0);
precisionAssert("9.0", 9.0);
precisionAssert("9.8", 9.8);
precisionAssert("9.9", 9.9);
precisionAssert("9.98", 9.98);
precisionAssert("9.987", 9.987);
precisionAssert("9.9876", 9.9876);
precisionAssert("9.98765", 9.98765);
precisionAssert("9.987654", 9.987654);
precisionAssert("9.9876543", 9.9876543);
precisionAssert("9.98765432", 9.98765432);
precisionAssert("9.987654321", 9.987654321);
precisionAssert("9.987654321", 9.9876543210);
precisionAssert("9.98765432109", 9.98765432109);
precisionAssert("9.987654321098", 9.987654321098);
precisionAssert("9.9876543210987", 9.9876543210987);
precisionAssert("9.98765432109876", 9.98765432109876);
precisionAssert("9.98765432109876", 9.987654321098765);
precisionAssert("9.98765432109877", 9.9876543210987654);
precisionAssert("3.1415", 3.1415);
precisionAssert("1.1", 1.1);
precisionAssert("9.7", 9.7);
}
int main(int argc, char *argv[], char** envp)
{
testHostAndPort();
testPrecision();
return 0;
}
+16
View File
@@ -30,4 +30,20 @@ namespace Robomongo
class MongoDocument;
typedef boost::shared_ptr<MongoDocument> MongoDocumentPtr;
enum ConnectionType {
// This type of connection is shown in Explorer and also opens SSH tunnel for secondary
// connections (if needed)
ConnectionPrimary = 0,
// Never shown in Explorer and uses SSH tunnel from primary connection (if needed)
ConnectionSecondary = 1,
// The same as Primary, but is specifically for testing connections.
ConnectionTest = 2,
// Never shown in Explorer and can be used to refresh (via reconnecting) current connection view
// (i.e. db version, storage engine, current replica set primary, status of replica set etc...)
ConnectionRefresh = 3
};
}
+2 -2
View File
@@ -10,9 +10,9 @@ namespace
template<typename type, int size>
inline type findTypeInArray(const char *(&arr)[size], const char *text)
{
for (int i=0; i < size;++i )
for (int i = 0; i < size; ++i )
{
if (strcmp(text,arr[i])==0)
if (strcmp(text, arr[i]) == 0)
{
return static_cast<type>(i);
}
+27 -5
View File
@@ -1,13 +1,35 @@
#include "robomongo/core/EventError.h"
#include "robomongo/utils/string_operations.h"
namespace Robomongo
{
EventError::EventError() {}
EventError::EventError() :
_isNull(true) {}
EventError::EventError(const std::string &errorMessage) :
_errorMessage(errorMessage) {}
EventError::EventError(const std::string &errorMessage, ErrorCode errorCode /*= Unknown*/,
bool showErrorWindow /* = true */) :
_errorMessage(captilizeFirstChar(errorMessage)),
_errorCode(errorCode),
_showErrorWindow(showErrorWindow),
_isNull(false) {}
bool EventError::isNull() const { return _errorMessage.empty(); }
EventError::EventError(const std::string &errorMessage, ReplicaSet const& replicaSetInfo,
bool showErrorWindow /* = true */ ) :
_errorMessage(errorMessage),
_errorCode(SetPrimaryUnreachable),
_replicaSetInfo(replicaSetInfo),
_showErrorWindow(showErrorWindow),
_isNull(false) {}
bool EventError::isNull() const
{
return _isNull;
}
const std::string &EventError::errorMessage() const
{
return _errorMessage;
}
const std::string &EventError::errorMessage() const { return _errorMessage; }
}
+23 -2
View File
@@ -1,6 +1,8 @@
#pragma once
#include <string>
#include "robomongo/core/mongodb/ReplicaSet.h"
namespace Robomongo
{
/**
@@ -10,7 +12,11 @@ namespace Robomongo
*/
class EventError
{
public:
enum ErrorCode { Unknown, SetPrimaryUnreachable, ServerHasDifferentMembers };
/**
* @brief Creates "null" (or, in other words, empty) error.
* Subsequent call of isNull() on this object will return true.
@@ -21,7 +27,14 @@ namespace Robomongo
* @brief Creates error object with specified error message.
* Subsequent call of isNull() on this object will return false.
*/
explicit EventError(const std::string &errorMessage);
explicit EventError(const std::string &errorMessage, ErrorCode errorCode = Unknown,
bool showErrorWindow = true);
/**
* @brief Creates error object only for replica set connection failures
*/
explicit EventError(const std::string &errorMessage, ReplicaSet const& replicaSetInfo,
bool showErrorWindow = true);
/**
* @brief Tests whether error is "null" (or, in other words, empty).
@@ -35,11 +48,19 @@ namespace Robomongo
* @brief Returns error message that describes this error.
*/
const std::string &errorMessage() const;
ErrorCode errorCode() const { return _errorCode; }
ReplicaSet replicaSetInfo() const { return _replicaSetInfo; }
bool showErrorWindow() const { return _showErrorWindow; }
private:
/**
* @brief Error message
*/
const std::string _errorMessage;
std::string const _errorMessage;
ErrorCode const _errorCode = Unknown;
ReplicaSet const _replicaSetInfo;
bool const _showErrorWindow = true;
bool const _isNull;
};
}
+2 -2
View File
@@ -36,7 +36,7 @@ namespace Robomongo
char *data = new char[bytes];
const char *p = s.c_str();
for( size_t i = 0; i < bytes; i++ ) {
for (size_t i = 0; i < bytes; i++) {
data[i] = mongo::fromHex(p);
p += 2;
}
@@ -159,7 +159,7 @@ namespace Robomongo
mongo::BinDataType binType = element.binDataType();
if (binType != mongo::newUUID && binType != mongo::bdtUUID)
throw new std::invalid_argument("Binary subtype should be 3 (bdtUUID) or 4 (newUUID)");
throw std::invalid_argument("Binary subtype should be 3 (bdtUUID) or 4 (newUUID)");
int len;
const char *data = element.binData(len);
+205 -27
View File
@@ -1,10 +1,15 @@
#include "robomongo/core/domain/App.h"
#include <QHash>
#include <QInputDialog>
#include "robomongo/core/domain/MongoServer.h"
#include "robomongo/core/domain/MongoShell.h"
#include "robomongo/core/domain/MongoCollection.h"
#include "robomongo/core/settings/ConnectionSettings.h"
#include "robomongo/core/settings/ReplicaSetSettings.h"
#include "robomongo/core/settings/SshSettings.h"
#include "robomongo/core/settings/SslSettings.h"
#include "robomongo/core/mongodb/SshTunnelWorker.h"
#include "robomongo/core/EventBus.h"
#include "robomongo/core/utils/QtUtils.h"
#include "robomongo/core/utils/StdUtils.h"
@@ -31,7 +36,11 @@ namespace Robomongo
}
App::App(EventBus *const bus) : QObject(),
_bus(bus) { }
_bus(bus), _lastServerHandle(0) {
_bus->subscribe(this, EstablishSshConnectionResponse::Type);
_bus->subscribe(this, ListenSshConnectionResponse::Type);
_bus->subscribe(this, LogEvent::Type);
}
App::~App()
{
@@ -39,23 +48,85 @@ namespace Robomongo
std::for_each(_servers.begin(), _servers.end(), stdutils::default_delete<MongoServer*>());
}
bool App::openServer(ConnectionSettings *connection, ConnectionType type) {
SshSettings *ssh = connection->sshSettings();
if (ssh->enabled() && ssh->askPassword() &&
(type == ConnectionPrimary || type == ConnectionTest)) {
bool ok = false;
bool isByKey = ssh->authMethod() == "publickey";
std::string passText = isByKey ? "passphrase" : "password";
std::stringstream s;
s << "In order to continue, please provide the " << passText;
if (isByKey)
s << " for the key file";
s << "." << std::endl << std::endl;
if (ssh->authMethod() == "publickey")
s << "Private Key: " << ssh->privateKeyFile() << std::endl;
s << "Server: " << ssh->host() << std::endl;
s << "User: " << ssh->userName() << std::endl;
s << std::endl << "Enter your " << passText << " that will never be stored:";
QString userInput = QInputDialog::getText(NULL, tr("SSH Authentication"),
QtUtils::toQString(s.str()),
QLineEdit::Password, "", &ok);
if (!ok)
return false;
ssh->setAskedPassword(QtUtils::toStdString(userInput));
}
SslSettings *sslSettings = connection->sslSettings();
if (sslSettings->sslEnabled() && sslSettings->usePemFile() && sslSettings->askPassphrase()
&& (type == ConnectionPrimary || type == ConnectionTest))
{
if (!askSslPassphrasePromptDialog(connection))
{
return false;
}
}
openServerInternal(connection, type);
return true;
}
/**
* @brief Creates and opens new server connection.
* Creates and opens new server connection.
* @param connection: ConnectionSettings, that will be owned by MongoServer.
* @param visible: should this server be visible in UI (explorer) or not.
*/
MongoServer *App::openServer(ConnectionSettings *connection,
bool visible)
{
MongoServer *server = new MongoServer(connection, visible);
_servers.push_back(server);
MongoServer *App::openServerInternal(ConnectionSettings* connSettings, ConnectionType type) {
++_lastServerHandle;
if (visible)
_bus->publish(new ConnectingEvent(this, server));
if (type == ConnectionPrimary)
_bus->publish(new ConnectingEvent(this));
LOG_MSG(QString("Connecting to %1...").arg(QtUtils::toQString(server->connectionRecord()->getFullAddress())), mongo::LL_INFO);
server->tryConnect();
return server;
// When connection is SECONDARY or do not have
// ssh settings enabled, continue without SSH Tunnel
if (type == ConnectionSecondary || !connSettings->sshSettings()->enabled()) {
return continueOpenServer(_lastServerHandle, connSettings, type);
}
// Open SSH channel and only after that open connection
LOG_MSG(QString("Creating SSH tunnel to %1:%2...")
.arg(QtUtils::toQString(connSettings->sshSettings()->host()))
.arg(connSettings->sshSettings()->port()), mongo::logger::LogSeverity::Info());
ConnectionSettings* settingsCopy = connSettings->clone();
SshTunnelWorker* sshWorker = new SshTunnelWorker(settingsCopy);
_bus->send(sshWorker, new EstablishSshConnectionRequest(this, _lastServerHandle, sshWorker, settingsCopy, type));
return NULL;
}
/**
@@ -64,47 +135,54 @@ namespace Robomongo
*/
void App::closeServer(MongoServer *server)
{
_servers.erase(std::remove_if(_servers.begin(), _servers.end(), stdutils::RemoveIfFound<MongoServer*>(server)), _servers.end());
_servers.erase(std::remove_if(_servers.begin(), _servers.end(), stdutils::RemoveIfFound<MongoServer*>(server)),
_servers.end());
}
MongoShell *App::openShell(MongoCollection *collection,const QString &filePathToSave)
void App::openShell(MongoCollection *collection, const QString &filePathToSave)
{
ConnectionSettings *connection = collection->database()->server()->connectionRecord();
connection->setDefaultDatabase(collection->database()->name());
QString script = detail::buildCollectionQuery(collection->name(), "find({})");
return openShell(connection, ScriptInfo(script, true, CursorPosition(0, -2), QtUtils::toQString(collection->database()->name()),filePathToSave));
openShell(collection->database()->server(), connection, ScriptInfo(script, true, CursorPosition(0, -2),
QtUtils::toQString(collection->database()->name()), filePathToSave));
}
MongoShell *App::openShell(MongoServer *server,const QString &script, const std::string &dbName,
void App::openShell(MongoServer *server, const QString &script, const std::string &dbName,
bool execute, const QString &shellName,
const CursorPosition &cursorPosition,const QString &filePathToSave)
const CursorPosition &cursorPosition, const QString &filePathToSave)
{
ConnectionSettings *connection = server->connectionRecord();
if (!dbName.empty())
connection->setDefaultDatabase(dbName);
return openShell(connection, ScriptInfo(script, execute, cursorPosition, shellName,filePathToSave));
openShell(server, connection, ScriptInfo(script, execute, cursorPosition, shellName, filePathToSave));
}
MongoShell *App::openShell(MongoDatabase *database, const QString &script,
void App::openShell(MongoDatabase *database, const QString &script,
bool execute, const QString &shellName,
const CursorPosition &cursorPosition,const QString &filePathToSave)
const CursorPosition &cursorPosition, const QString &filePathToSave)
{
ConnectionSettings *connection = database->server()->connectionRecord();
connection->setDefaultDatabase(database->name());
return openShell(connection, ScriptInfo(script, execute, cursorPosition, shellName,filePathToSave));
openShell(database->server(), connection, ScriptInfo(script, execute, cursorPosition,
shellName, filePathToSave));
}
MongoShell *App::openShell(ConnectionSettings *connection, const ScriptInfo &scriptInfo)
void App::openShell(MongoServer* server, ConnectionSettings* connection, const ScriptInfo &scriptInfo)
{
MongoServer *server = openServer(connection, false);
MongoShell *shell = new MongoShell(server,scriptInfo);
MongoServer *serverClone = openServerInternal(connection, ConnectionSecondary);
if (!serverClone || !server)
return;
MongoShell *shell = new MongoShell(serverClone, scriptInfo);
// Connection between explorer's server and tab's MongoShells
_bus->subscribe(server, ReplicaSetRefreshed::Type, shell);
_shells.push_back(shell);
_bus->publish(new OpeningShellEvent(this, shell));
LOG_MSG("Opening shell...", mongo::LL_INFO);
shell->execute();
return shell;
return;
}
/**
@@ -114,7 +192,7 @@ namespace Robomongo
void App::closeShell(MongoShell *shell)
{
// Do nothing, if this shell not owned by this App.
MongoShellsContainerType::iterator it = std::find_if(_shells.begin(),_shells.end(),std::bind1st(std::equal_to<MongoShell *>(),shell));
MongoShellsContainerType::iterator it = std::find_if(_shells.begin(), _shells.end(), std::bind1st(std::equal_to<MongoShell *>(), shell));
if (it == _shells.end())
return;
@@ -122,4 +200,104 @@ namespace Robomongo
closeServer(shell->server());
delete shell;
}
MongoServer *App::continueOpenServer(int serverHandle, ConnectionSettings* connSettings, ConnectionType type,
int localport)
{
ConnectionSettings* connSettingsClone = connSettings->clone();
// Modify connection settings when SSH tunnel is used
if ((type == ConnectionPrimary || type == ConnectionTest)
&& connSettingsClone->sshSettings()->enabled()) {
connSettingsClone->setServerHost("127.0.0.1");
connSettingsClone->setServerPort(localport);
}
MongoServer *server = new MongoServer(serverHandle, connSettingsClone, type);
_servers.push_back(server);
server->runWorkerThread();
auto replicaSetStr = QString::fromStdString(connSettings->connectionName()) + " [Replica Set]";
replicaSetStr = (connSettings->replicaSetSettings()->members().size() > 0)
? replicaSetStr + QString::fromStdString(connSettings->replicaSetSettings()->members()[0])
: replicaSetStr + "";
QString serverAddress = connSettings->isReplicaSet()
? replicaSetStr
: QString::fromStdString(connSettings->getFullAddress());
LOG_MSG(QString("Connecting to %1...").arg(serverAddress), mongo::logger::LogSeverity::Info());
server->tryConnect();
return server;
}
void App::handle(EstablishSshConnectionResponse *event) {
if (event->isError()) {
_bus->publish(new ConnectionFailedEvent(
this, event->serverHandle, event->connectionType, event->error().errorMessage(),
ConnectionFailedEvent::SshConnection));
return;
}
LOG_MSG(QString("SSH tunnel created successfully"), mongo::logger::LogSeverity::Info());
continueOpenServer(event->serverHandle, event->settings, event->connectionType, event->localport);
_bus->send(event->worker, new ListenSshConnectionRequest(this, event->serverHandle, event->connectionType));
}
void App::handle(LogEvent *event) {
if (event->level == LogEvent::RBM_ERROR) {
LOG_MSG(event->message, mongo::logger::LogSeverity::Error());
} else if (event->level == LogEvent::RBM_WARN) {
LOG_MSG(event->message, mongo::logger::LogSeverity::Warning());
} else if (event->level == LogEvent::RBM_INFO) {
LOG_MSG(event->message, mongo::logger::LogSeverity::Info());
} else if (event->level == LogEvent::RBM_DEBUG) {
LOG_MSG(event->message, mongo::logger::LogSeverity::Log());
}
}
void App::handle(ListenSshConnectionResponse *event) {
if (event->isError()) {
_bus->publish(new ConnectionFailedEvent(this, event->serverHandle, event->connectionType, event->error().errorMessage(),
ConnectionFailedEvent::SshChannel));
return;
}
LOG_MSG(QString("SSH tunnel closed."), mongo::logger::LogSeverity::Error());
}
void App::fireConnectionFailedEvent(int serverHandle, ConnectionType type, std::string errormsg,
ConnectionFailedEvent::Reason reason) {
_bus->publish(new ConnectionFailedEvent(this, serverHandle, type, errormsg, reason));
}
bool App::askSslPassphrasePromptDialog(ConnectionSettings *connSettings) const
{
auto sslSettings = connSettings->sslSettings();
bool ok = false;
std::stringstream s;
s << "In order to continue, please provide the passphrase";
s << "." << std::endl << std::endl;
s << "Server: " << connSettings->serverHost() << ":" << connSettings->serverPort() << std::endl;
s << "PEM file: " << sslSettings->pemKeyFile() << std::endl;
s << std::endl << "Enter your PEM key passphrase (will never be stored):";
QString userInput = QInputDialog::getText(NULL, tr("SSL Authentication"),
QtUtils::toQString(s.str()),
QLineEdit::Password, "", &ok);
if (!ok)
{
return false;
}
sslSettings->setPemPassPhrase(QtUtils::toStdString(userInput));
return ok;
}
}
+43 -14
View File
@@ -1,6 +1,7 @@
#pragma once
#include <QObject>
#include <vector>
#include <robomongo/core/events/MongoEvents.h>
#include "robomongo/core/domain/ScriptInfo.h"
@@ -12,9 +13,12 @@ namespace Robomongo
class MongoCollection;
class MongoShell;
class MongoDatabase;
class EstablishSshConnectionResponse;
class LogEvent;
namespace detail
{
/**
/**
* @brief Builds single collection query (i.e. db.my_col.find()) from
* string that doesn't contain "db.my_col." prefix.
*
@@ -43,8 +47,9 @@ namespace Robomongo
* @brief Creates and opens new server connection.
* @param connection: ConnectionSettings, that will be owned by MongoServer.
* @param visible: should this server be visible in UI (explorer) or not.
* @return Succeeded or not
*/
MongoServer *openServer(ConnectionSettings *connection, bool visible);
bool openServer(ConnectionSettings *connection, ConnectionType type);
/**
* @brief Closes MongoServer connection and frees all resources, owned
@@ -55,18 +60,22 @@ namespace Robomongo
/**
* @brief Open new shell based on specified collection
*/
MongoShell *openShell(MongoCollection *collection,const QString &filePathToSave=QString());
void openShell(MongoCollection *collection, const QString &filePathToSave = QString());
MongoShell *openShell(MongoServer *server, const QString &script, const std::string &dbName = std::string(),
void openShell(MongoServer *server, const QString &script, const std::string &dbName = std::string(),
bool execute = true, const QString &shellName = QString(),
const CursorPosition &cursorPosition = CursorPosition(),const QString &file=QString());
const CursorPosition &cursorPosition = CursorPosition(), const QString &file = QString());
MongoShell *openShell(MongoDatabase *database, const QString &script,
void openShell(MongoDatabase *database, const QString &script,
bool execute = true, const QString &shellName = QString(),
const CursorPosition &cursorPosition = CursorPosition(),const QString &filePathToSave=QString());
const CursorPosition &cursorPosition = CursorPosition(), const QString &filePathToSave = QString());
MongoShell *openShell(ConnectionSettings *connection, const ScriptInfo &scriptInfo);
MongoServersContainerType getServers() const {return _servers; };
/**
* @brief Open new shell using explorer's MongoServer (ExplorerServerTreeItem's _server)
*/
void openShell(MongoServer* server, ConnectionSettings* connSettings, const ScriptInfo &scriptInfo);
MongoServersContainerType getServers() const { return _servers; };
/**
* @brief Closes MongoShell and frees all resources, owned by specified MongoShell.
@@ -74,20 +83,40 @@ namespace Robomongo
*/
void closeShell(MongoShell *shell);
void fireConnectionFailedEvent(int serverHandle, ConnectionType type, std::string errormsg, ConnectionFailedEvent::Reason reason);
int getLastServerHandle() const { return _lastServerHandle; };
public Q_SLOTS:
void handle(EstablishSshConnectionResponse *event);
void handle(ListenSshConnectionResponse *event);
void handle(LogEvent *event);
private:
MongoServer *openServerInternal(ConnectionSettings* connSettings, ConnectionType type);
MongoServer *continueOpenServer(int serverHandle, ConnectionSettings* connSettings, ConnectionType type, int localport = 0);
/**
* @brief MongoServers, owned by this App.
* @brief Create prompt dialog to enter SSL PEM key passphrase and save passphrase into SSL settings
* @param connection Pointer to active connection settings
* @return true on success, false otherwise
*/
bool askSslPassphrasePromptDialog(ConnectionSettings *connSettings) const;
/**
* MongoServers, owned by this App.
*/
MongoServersContainerType _servers;
/**
* @brief MongoShells, owned by this App.
* MongoShells, owned by this App.
*/
MongoShellsContainerType _shells;
/**
* @brief EventBus
*/
EventBus *const _bus;
// Increase monotonically when new MongoServer is created
// Never decreases.
int _lastServerHandle;
};
}
@@ -18,7 +18,7 @@ namespace Robomongo
_system = true;
}
std::string MongoCollection::sizeString() const
/* std::string MongoCollection::sizeString() const
{
return MongoUtils::buildNiceSizeString(_info.sizeBytes()).toStdString();
}
@@ -26,5 +26,5 @@ namespace Robomongo
QString MongoCollection::storageSizeString() const
{
return MongoUtils::buildNiceSizeString(_info.storageSizeBytes());
}
}*/
}
+2 -2
View File
@@ -17,8 +17,8 @@ namespace Robomongo
std::string fullName() const { return _ns.toString(); }
MongoDatabase *database() const { return _database; }
std::string sizeString() const;
QString storageSizeString() const;
// std::string sizeString() const;
// QString storageSizeString() const;
private:
@@ -1,10 +1,12 @@
#include "MongoCollectionInfo.h"
#include "robomongo/core/utils/BsonUtils.h"
#include <mongo/client/dbclient.h>
#include <mongo/client/dbclientinterface.h>
namespace Robomongo
{
MongoCollectionInfo::MongoCollectionInfo(mongo::BSONObj stats) : _ns(stats.getStringField("ns"))
MongoCollectionInfo::MongoCollectionInfo(const std::string &ns) : _ns(ns) {}
/* MongoCollectionInfo::MongoCollectionInfo(mongo::BSONObj stats) : _ns(stats.getStringField("ns"))
{
// if "size" and "storageSize" are of type Int32 or Int64, they
// will be converted to double by "numberDouble()" function.
@@ -13,6 +15,6 @@ namespace Robomongo
// NumberLong because of mongodb can have very big collections
_count = BsonUtils::getField<mongo::NumberLong>(stats,"count");
}
}*/
}
@@ -7,7 +7,9 @@ namespace Robomongo
class MongoCollectionInfo
{
public:
MongoCollectionInfo(mongo::BSONObj stats);
MongoCollectionInfo() {}
MongoCollectionInfo(const std::string &ns);
// MongoCollectionInfo(mongo::BSONObj stats);
std::string name() const { return _ns.collectionName(); }
std::string fullName() const { return _ns.toString(); }
@@ -18,16 +20,16 @@ namespace Robomongo
* It is double, because db.stats()'s "size" field may be double
* for large values, while Int32 for small.
*/
double sizeBytes() const { return _sizeBytes; }
// double sizeBytes() const { return _sizeBytes; }
/**
* @brief Storage size in bytes
* It is double, because db.stats()'s "storageSize" field may be double
* for large values, while Int32 for small.
*/
double storageSizeBytes() const { return _storageSizeBytes; }
// double storageSizeBytes() const { return _storageSizeBytes; }
long long count() const { return _count; }
// long long count() const { return _count; }
private:
MongoNamespace _ns;
+170 -35
View File
@@ -5,10 +5,11 @@
#include "robomongo/core/mongodb/MongoWorker.h"
#include "robomongo/core/AppRegistry.h"
#include "robomongo/core/EventBus.h"
#include "robomongo/core/utils/Logger.h"
#include "robomongo/utils/common.h"
namespace Robomongo
{
R_REGISTER_EVENT(MongoDatabaseCollectionListLoadedEvent)
R_REGISTER_EVENT(MongoDatabaseUsersLoadedEvent)
R_REGISTER_EVENT(MongoDatabaseFunctionsLoadedEvent)
@@ -16,14 +17,19 @@ namespace Robomongo
R_REGISTER_EVENT(MongoDatabaseFunctionsLoadingEvent)
R_REGISTER_EVENT(MongoDatabaseCollectionsLoadingEvent)
const std::string MongoDatabase::StorageEngineType::WIRED_TIGER = "wiredTiger";
const std::string MongoDatabase::StorageEngineType::MMAPV1 = "mmapv1";
const float MongoDatabase::DBVersion::MONGODB_2_6 = 2.6f;
const float MongoDatabase::DBVersion::MONGODB_3_0 = 3.0f;
const float MongoDatabase::DBVersion::MONGODB_3_2 = 3.2f;
MongoDatabase::MongoDatabase(MongoServer *server, const std::string &name) :
QObject(),
_system(name == "admin" || name == "local"),
_server(server),
_bus(AppRegistry::instance().bus()),
_name(name)
{
}
_name(name) {}
MongoDatabase::~MongoDatabase()
{
@@ -33,107 +39,148 @@ namespace Robomongo
void MongoDatabase::loadCollections()
{
_bus->publish(new MongoDatabaseCollectionsLoadingEvent(this));
_bus->send(_server->client(), new LoadCollectionNamesRequest(this, _name));
_bus->send(_server->worker(), new LoadCollectionNamesRequest(this, _name));
}
void MongoDatabase::loadUsers()
{
_bus->publish(new MongoDatabaseUsersLoadingEvent(this));
_bus->send(_server->client(), new LoadUsersRequest(this, _name));
_bus->send(_server->worker(), new LoadUsersRequest(this, _name));
}
void MongoDatabase::loadFunctions()
{
_bus->publish(new MongoDatabaseFunctionsLoadingEvent(this));
_bus->send(_server->client(), new LoadFunctionsRequest(this, _name));
_bus->send(_server->worker(), new LoadFunctionsRequest(this, _name));
}
void MongoDatabase::createCollection(const std::string &collection)
void MongoDatabase::createCollection(const std::string &collection, long long size, bool capped, int maxDocNum, const mongo::BSONObj& extraOptions)
{
_bus->send(_server->client(), new CreateCollectionRequest(this, MongoNamespace(_name, collection)));
_bus->send(_server->worker(),
new CreateCollectionRequest(this, MongoNamespace(_name, collection), extraOptions, size, capped, maxDocNum));
}
void MongoDatabase::dropCollection(const std::string &collection)
{
_bus->send(_server->client(), new DropCollectionRequest(this, MongoNamespace(_name, collection)));
_bus->send(_server->worker(), new DropCollectionRequest(this, MongoNamespace(_name, collection)));
}
void MongoDatabase::renameCollection(const std::string &collection, const std::string &newCollection)
{
_bus->send(_server->client(), new RenameCollectionRequest(this, MongoNamespace(_name, collection), newCollection));
_bus->send(_server->worker(), new RenameCollectionRequest(this, MongoNamespace(_name, collection),
newCollection));
}
void MongoDatabase::duplicateCollection(const std::string &collection, const std::string &newCollection)
{
_bus->send(_server->client(), new DuplicateCollectionRequest(this, MongoNamespace(_name, collection), newCollection));
_bus->send(_server->worker(), new DuplicateCollectionRequest(this, MongoNamespace(_name, collection), newCollection));
}
void MongoDatabase::copyCollection(MongoServer *server, const std::string &sourceDatabase, const std::string &collection)
{
_bus->send(_server->client(), new CopyCollectionToDiffServerRequest(this, server->client(), sourceDatabase, collection, _name));
_bus->send(_server->worker(), new CopyCollectionToDiffServerRequest(this, server->worker(), sourceDatabase, collection, _name));
}
void MongoDatabase::createUser(const MongoUser &user, bool overwrite)
{
_bus->send(_server->client(), new CreateUserRequest(this, _name, user, overwrite));
_bus->send(_server->worker(), new CreateUserRequest(this, _name, user, overwrite));
}
void MongoDatabase::dropUser(const mongo::OID &id)
void MongoDatabase::dropUser(const mongo::OID &id, std::string const& userName)
{
_bus->send(_server->client(), new DropUserRequest(this, _name, id));
_bus->send(_server->worker(), new DropUserRequest(this, _name, id, userName));
}
void MongoDatabase::createFunction(const MongoFunction &fun)
{
_bus->send(_server->client(), new CreateFunctionRequest(this, _name, fun));
_bus->send(_server->worker(), new CreateFunctionRequest(this, _name, fun));
}
void MongoDatabase::updateFunction(const std::string &name, const MongoFunction &fun)
{
_bus->send(_server->client(), new CreateFunctionRequest(this, _name, fun, name));
_bus->send(_server->worker(), new CreateFunctionRequest(this, _name, fun, name));
}
void MongoDatabase::dropFunction(const std::string &name)
{
_bus->send(_server->client(), new DropFunctionRequest(this, _name, name));
_bus->send(_server->worker(), new DropFunctionRequest(this, _name, name));
}
void MongoDatabase::handle(LoadCollectionNamesResponse *loaded)
void MongoDatabase::handle(LoadCollectionNamesResponse *event)
{
if (loaded->isError())
return;
if (event->isError()) {
if (_server->connectionRecord()->isReplicaSet()) // replica set
handleIfReplicaSetUnreachable(event);
else // single server
_bus->publish(new MongoDatabaseCollectionListLoadedEvent(this, event->error()));
clearCollections();
const std::vector<MongoCollectionInfo> &colectionsInfos = loaded->collectionInfos();
for (std::vector<MongoCollectionInfo>::const_iterator it = colectionsInfos.begin(); it != colectionsInfos.end(); ++it) {
const MongoCollectionInfo &info = *it;
MongoCollection *collection = new MongoCollection(this, info);
addCollection(collection);
genericEventErrorHandler(event, "Failed to refresh 'Collections'.", _bus, this);
return;
}
clearCollections();
for (auto const& collectionInfo : event->collectionInfos())
addCollection(new MongoCollection(this, collectionInfo));
_bus->publish(new MongoDatabaseCollectionListLoadedEvent(this, _collections));
LOG_MSG("'Collections' refreshed.", mongo::logger::LogSeverity::Info());
}
void MongoDatabase::handle(CreateFunctionResponse *event)
{
if (event->isError()) {
handleIfReplicaSetUnreachable(event);
genericEventErrorHandler(event, "Failed to create function \'" + event->functionName + "\'.", _bus, this);
}
else {
loadFunctions();
LOG_MSG("Function \'" + event->functionName + "\' created.", mongo::logger::LogSeverity::Info());
}
}
void MongoDatabase::handle(CreateUserResponse *event)
{
if (event->isError())
return;
if (event->isError()) {
handleIfReplicaSetUnreachable(event);
genericEventErrorHandler(event, "Failed to create user \'" + event->userName + "\'.", _bus, this);
}
else {
loadUsers();
LOG_MSG("User \'" + event->userName + "\' created.", mongo::logger::LogSeverity::Info());
}
}
void MongoDatabase::handle(LoadUsersResponse *event)
{
if (event->isError())
if (event->isError()) {
if (_server->connectionRecord()->isReplicaSet()) // replica set
handleIfReplicaSetUnreachable(event);
else // single server
_bus->publish(new MongoDatabaseUsersLoadedEvent(this, event->error()));
genericEventErrorHandler(event, "Failed to refresh 'Users'.", _bus, this);
return;
}
_bus->publish(new MongoDatabaseUsersLoadedEvent(this, this, event->users()));
LOG_MSG("'Users' refreshed.", mongo::logger::LogSeverity::Info());
}
void MongoDatabase::handle(LoadFunctionsResponse *event)
{
if (event->isError())
if (event->isError()) {
if (_server->connectionRecord()->isReplicaSet()) // replica set
handleIfReplicaSetUnreachable(event);
else // single server
_bus->publish(new MongoDatabaseFunctionsLoadedEvent(this, event->error()));
genericEventErrorHandler(event, "Failed to refresh 'Functions'.", _bus, this);
return;
}
_bus->publish(new MongoDatabaseFunctionsLoadedEvent(this, this, event->functions()));
LOG_MSG("'Functions' refreshed.", mongo::logger::LogSeverity::Info());
}
void MongoDatabase::clearCollections()
@@ -146,4 +193,92 @@ namespace Robomongo
{
_collections.push_back(collection);
}
void MongoDatabase::handle(CreateCollectionResponse *event)
{
if (event->isError()) {
handleIfReplicaSetUnreachable(event);
genericEventErrorHandler(event, "Failed to create collection \'" + event->collection + "\'.", _bus, this);
}
else {
loadCollections();
LOG_MSG("Collection \'" + event->collection + "\' created.", mongo::logger::LogSeverity::Info());
}
}
void MongoDatabase::handle(DropCollectionResponse *event)
{
if (event->isError()) {
handleIfReplicaSetUnreachable(event);
genericEventErrorHandler(event, "Failed to drop collection \'" + event->collection + "\'.", _bus, this);
}
else {
loadCollections();
LOG_MSG("Collection \'" + event->collection + "\' dropped", mongo::logger::LogSeverity::Info());
}
}
void MongoDatabase::handle(DropFunctionResponse *event)
{
if (event->isError()) {
handleIfReplicaSetUnreachable(event);
genericEventErrorHandler(event, "Failed to remove function \'" + event->functionName + "\'.", _bus, this);
}
else {
loadFunctions();
LOG_MSG("Function \'" + event->functionName + "\' removed", mongo::logger::LogSeverity::Info());
}
}
void MongoDatabase::handle(DropUserResponse *event)
{
if (event->isError()) {
handleIfReplicaSetUnreachable(event);
genericEventErrorHandler(event, "Failed to drop user \'" + event->username + "\'.", _bus, this);
}
else {
loadUsers();
LOG_MSG("User \'" + event->username + "\' dropped", mongo::logger::LogSeverity::Info());
}
}
void MongoDatabase::handle(RenameCollectionResponse *event)
{
if (event->isError()) {
handleIfReplicaSetUnreachable(event);
genericEventErrorHandler(event, "Failed to rename collection.", _bus, this);
}
else {
loadCollections();
LOG_MSG("Collection \'" + event->oldCollection + "\' renamed to \'" +
event->newCollection +"\'." , mongo::logger::LogSeverity::Info());
}
}
void MongoDatabase::handle(DuplicateCollectionResponse *event)
{
if (event->isError()) {
handleIfReplicaSetUnreachable(event);
genericEventErrorHandler(event, "Failed to duplicate collection \'" + event->sourceCollection + "\'.",
_bus, this);
}
else {
loadCollections();
LOG_MSG("Collection \'" + event->sourceCollection + "\' duplicated as \'" +
event->duplicateCollection + "\'.", mongo::logger::LogSeverity::Info());
}
}
void MongoDatabase::handleIfReplicaSetUnreachable(Event *event)
{
if (!_server->connectionRecord()->isReplicaSet())
return;
if (EventError::SetPrimaryUnreachable == event->error().errorCode()) {
auto refreshEvent = ReplicaSetRefreshed(this, event->error(), event->error().replicaSetInfo());
_server->handle(&refreshEvent);
}
}
}
+38 -2
View File
@@ -18,6 +18,25 @@ namespace Robomongo
Q_OBJECT
public:
/**
* @brief Database storage engine type
*/
struct StorageEngineType
{
static const std::string WIRED_TIGER;
static const std::string MMAPV1;
};
/**
* @brief MongoDB version
*/
struct DBVersion
{
static const float MONGODB_2_6;
static const float MONGODB_3_0;
static const float MONGODB_3_2;
};
/**
* @brief MongoDatabase
* @param server: pointer to parent MongoServer
@@ -37,14 +56,14 @@ namespace Robomongo
void loadFunctions();
void createCollection(const std::string &collection);
void createCollection(const std::string &collection, long long size, bool capped, int maxDocNum, const mongo::BSONObj& extraOptions);
void dropCollection(const std::string &collection);
void renameCollection(const std::string &collection, const std::string &newCollection);
void duplicateCollection(const std::string &collection, const std::string &newCollection);
void copyCollection(MongoServer *server, const std::string &sourceDatabase, const std::string &collection);
void createUser(const MongoUser &user, bool overwrite);
void dropUser(const mongo::OID &id);
void dropUser(const mongo::OID &id, std::string const& userName);
void createFunction(const MongoFunction &fun);
void updateFunction(const std::string &name, const MongoFunction &fun);
@@ -64,11 +83,19 @@ namespace Robomongo
void handle(LoadCollectionNamesResponse *event);
void handle(LoadUsersResponse *event);
void handle(LoadFunctionsResponse *event);
void handle(CreateFunctionResponse *event);
void handle(CreateUserResponse *event);
void handle(CreateCollectionResponse *event);
void handle(DropCollectionResponse *event);
void handle(DropFunctionResponse *event);
void handle(DropUserResponse *event);
void handle(RenameCollectionResponse *event);
void handle(DuplicateCollectionResponse *event);
private:
void clearCollections();
void addCollection(MongoCollection *collection);
void handleIfReplicaSetUnreachable(Event *event);
private:
MongoServer *_server;
@@ -86,6 +113,9 @@ namespace Robomongo
Event(sender),
collections(list) { }
MongoDatabaseCollectionListLoadedEvent(QObject *sender, const EventError &error) :
Event(sender, error) {}
std::vector<MongoCollection *> collections;
};
@@ -98,6 +128,9 @@ namespace Robomongo
_users(list),
_database(database) {}
MongoDatabaseUsersLoadedEvent(QObject *sender, const EventError &error) :
Event(sender, error) {}
std::vector<MongoUser> users() const { return _users; }
MongoDatabase *database() const { return _database; }
@@ -115,6 +148,9 @@ namespace Robomongo
_functions(list),
_database(database) {}
MongoDatabaseFunctionsLoadedEvent(QObject *sender, const EventError &error) :
Event(sender, error) {}
std::vector<MongoFunction> functions() const { return _functions; }
MongoDatabase *database() const { return _database; }
+2 -44
View File
@@ -1,6 +1,6 @@
#include "robomongo/core/domain/MongoDocument.h"
#include <mongo/client/dbclient.h>
#include <mongo/client/dbclientinterface.h>
#include "robomongo/core/settings/SettingsManager.h"
#include "robomongo/core/AppRegistry.h"
#include "robomongo/core/utils/BsonUtils.h"
@@ -38,52 +38,10 @@ namespace Robomongo
std::vector<MongoDocumentPtr> MongoDocument::fromBsonObj(const std::vector<mongo::BSONObj> &bsonObjs)
{
std::vector<MongoDocumentPtr> list;
for (std::vector<mongo::BSONObj>::const_iterator it=bsonObjs.begin(); it!=bsonObjs.end(); ++it) {
for (std::vector<mongo::BSONObj>::const_iterator it = bsonObjs.begin(); it != bsonObjs.end(); ++it) {
list.push_back(fromBsonObj(*it));
}
return list;
}
/*
** Convert to json string
*/
void MongoDocument::buildJsonString(std::string &con)
{
BsonUtils::buildJsonString(_bsonObj, con,
AppRegistry::instance().settingsManager()->uuidEncoding(),
AppRegistry::instance().settingsManager()->timeZone());
}
/*
** Build JsonString from list of documents
*/
std::string MongoDocument::buildJsonString(const QList<MongoDocumentPtr> &documents)
{
mongo::StringBuilder sb;
int position = 0;
for (QList<MongoDocumentPtr>::const_iterator it = documents.begin(); it != documents.end(); ++it) {
if (position == 0)
sb << "/* 0 */\n";
else
sb << "\n\n/* " << position << " */\n";
std::string jsonString = (*it)->bsonObj().jsonString(mongo::TenGen, 1);
sb << jsonString;
position++;
}
std::string final = sb.str();
return final;
}
std::string MongoDocument::buildJsonString(const MongoDocumentPtr &doc)
{
//qt4 QTextCodec::setCodecForCStrings(codec);
std::string jsonString = doc->bsonObj().jsonString(mongo::TenGen, 1);
return jsonString;
}
}
-12
View File
@@ -42,17 +42,5 @@ namespace Robomongo
** Return "native" BSONObj
*/
mongo::BSONObj bsonObj() const { return _bsonObj; }
/*
** Convert to json string
*/
void buildJsonString(std::string &con);
/*
** Build JsonString from list of documents
*/
static std::string buildJsonString(const QList<MongoDocumentPtr> &documents);
static std::string buildJsonString(const MongoDocumentPtr &documents);
};
}

Some files were not shown because too many files have changed in this diff Show More