From 51d86ff4fe3db9a2ed8f59949b4cb6fa1deee2de Mon Sep 17 00:00:00 2001 From: Rohit Bhati Date: Mon, 30 Sep 2024 17:22:50 +0530 Subject: [PATCH] Move About pgAdmin 4 menu option to top of application menu for macOS.#7289 --- runtime/src/js/menu.js | 19 +++++++++++++++++++ web/pgadmin/settings/__init__.py | 12 ++++++++++++ 2 files changed, 31 insertions(+) diff --git a/runtime/src/js/menu.js b/runtime/src/js/menu.js index 6609d3445ec..59193d5fa8e 100644 --- a/runtime/src/js/menu.js +++ b/runtime/src/js/menu.js @@ -41,6 +41,25 @@ function buildMenu(pgadminMenus, pgAdminMainScreen, callbacks) { }); let menuFile = pgadminMenus.shift(); + + if (isMac) { + // Add About pgAdmin 4 on top of menu. + const aboutIndex = menuFile.submenu.findIndex((item) => item.label === 'About pgAdmin 4'); + if (aboutIndex !== -1) { + menuFile.submenu.splice(0, 0, menuFile.submenu.splice(aboutIndex, 1)[0]); + menuFile.submenu.splice(1, 0, { type: 'separator' }); + } + // Remove About pgAdmin 4 from help menu. + const helpMenuIndex = pgadminMenus.findIndex((menu) => menu.label === 'Help'); + if (helpMenuIndex !== -1) { + const helpMenu = pgadminMenus[helpMenuIndex]; + const aboutIndexInHelpMenu = helpMenu.submenu.findIndex((item) => item.label === 'About pgAdmin 4'); + if (aboutIndexInHelpMenu !== -1) { + helpMenu.submenu.splice(aboutIndexInHelpMenu, 1); + } + } + } + template.push({ ...menuFile, submenu: [ diff --git a/web/pgadmin/settings/__init__.py b/web/pgadmin/settings/__init__.py index 1d1c9f3b454..26b71cfa17e 100644 --- a/web/pgadmin/settings/__init__.py +++ b/web/pgadmin/settings/__init__.py @@ -11,6 +11,8 @@ import traceback import json +import config + from flask import Response, request, render_template, url_for, current_app from flask_babel import gettext @@ -30,6 +32,8 @@ class SettingsModule(PgAdminModule): def get_own_menuitems(self): + appname = config.APP_NAME + return { 'file_items': [ MenuItem( @@ -38,6 +42,14 @@ def get_own_menuitems(self): module="pgAdmin.Settings", callback='show', label=gettext('Reset Layout') + ), + MenuItem( + name='mnu_about', + priority=999, + module="pgAdmin.About", + callback='about_show', + icon='fa fa-info-circle', + label=gettext('About %(appname)s', appname=appname) ) ] }