| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- /**
- * Menu item handler for recent file menu items.
- */
- function RecentFilesHandler(fileName) {
- this.fileName = fileName;
- }
- RecentFilesHandler.prototype = {};
- RecentFilesHandler.prototype.open = function() {
- NewFile.createMdiChild(this.fileName);
- };
- /**
- * Specialized QMenu class that shows recently used files.
- */
- function RecentFilesMenu(basePath) {
- QMenu.call(this);
- this.basePath = basePath;
- }
- RecentFilesMenu.prototype = new QMenu();
- RecentFilesMenu.prototype.refresh = function() {
- var action;
-
- this.clear();
- var files = RSettings.getRecentFiles();
- if (files.length === 0) {
- this.setEnabled(false);
- return;
- }
-
- this.setEnabled(true);
- for (var i=files.length-1; i>=0 ; --i) {
- var fi = new QFileInfo(files[i]);
- var text = "";
- if (files.length - i < 10) {
- text = "&";
- }
- var fn = fi.fileName().elidedText(this.font, 300);
- var fp = fi.path().elidedText(this.font, 200);
- // make sure ampersand is not interpreted as shortcut indicator:
- fn = fn.replace(/&/g, "&&");
- fp = fp.replace(/&/g, "&&");
- text += (files.length - i) + " "
- + fn + " ["
- + fp + "]";
- action = this.addAction(text);
- var h = new RecentFilesHandler(files[i]);
- action.triggered.connect(h, h.open);
- }
- action = new RGuiAction(qsTranslate("RecentFiles", "&Clear List"), this);
- action.setRequiresDocument(false);
- action.setScriptFile(this.basePath + "/RecentFiles.js");
- action.setGroupSortOrder(1501);
- action.setSortOrder(100);
- action.setWidgetNames(["RecentFilesSubMenu"]);
- RGuiAction.addToWidget(action, this);
- };
- function init(basePath) {
- var action = new RGuiAction(qsTranslate("RecentFiles", "Open &Recent"), RMainWindowQt.getMainWindow());
- var submenu = new RecentFilesMenu(basePath);
- submenu.objectName = "RecentFilesSubMenu";
- File.getMenu().aboutToShow.connect(function() { submenu.refresh(); });
-
- action.setRequiresDocument(false);
- action.checkable = false;
- action.setMenu(submenu);
- action.setGroupSortOrder(1000);
- action.setSortOrder(400);
- action.setWidgetNames(["FileMenu"]);
- }
|