#lang scheme/gui ;; ################################################################################## ;; # ============================================================================== # ;; # MrEd Designer - main.ss # ;; # http://mred-designer.origo.ethz.ch # ;; # Copyright (C) Lozi Jean-Pierre, 2004 - mailto:[email protected] # ;; # Copyright (C) Peter Ivanyi, 2007 # ;; # Copyright (C) Laurent Orseau, 2010 # ;; # ============================================================================== # ;; # # ;; # This program is free software; you can redistribute it and/or # ;; # modify it under the terms of the GNU General Public License # ;; # as published by the Free Software Foundation; either version 2 # ;; # of the License, or (at your option) any later version. # ;; # # ;; # This program is distributed in the hope that it will be useful, # ;; # but WITHOUT ANY WARRANTY; without even the implied warranty of # ;; # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # ;; # GNU General Public License for more details. # ;; # # ;; # You should have received a copy of the GNU General Public License # ;; # along with this program; if not, write to the Free Software # ;; # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # ;; # # ;; ################################################################################## ; TODO before release: ; - make a package (zip file for Origo, .plt for PLaneT) ; TODO: ; - widgets: popup menu (?), message-box, put-file, get-file, get-color-from-user, ; get-font-from-user, get-text-from-user, get-choices from user, ... ; panel:vertical-dragable (+horiz), hierarchy-list, ; - move-one-up, move-one-down in hierarchy (not really needed thanks to Copy/Cut/Paste ?) ; - #f or number for fields like x, min-width, etc. ; - Copy/paste w/o children ? ; - Plugins can add menu items ? ; e.g., the Project plugin adds Save, Load to the menu bar ! ; Then, it should be specific to the project! ; - show/hide for widgets ? ; - project images are relative to project file (not if project not saved)?! ; - a "load template from file" button? (+ save) ; In the "Quick Templates" choice% appear the global templates (the one in the ; "templates" directory) + the templates that are in the same directory as the ; opened project? ; - templates can be used as plugins : add a button in the correct box (Templates ?) ; if there is an associated image, use it ; - The widget-class (gen-code-class) should be optionable ; - "Del" shortcut for "Delete" button ; - generate Stub Controller code ? printf of the method name ; - in template-load.ss: generalize the require of plugin preview classes ; instead of an ad-hoc scheme ; - return to default value: completely rewrite the default property! ; this is useful for updating from an old style ; - prop:range with a slider% for integers between 2 values ; - check ids duplicates when the user changes them! ; - ; General renamings to do: ; - for-each-send -> for-each/send (?) ; - map-send -> map/send (although : append-map) ; - code-gen-class -> widget-code-class (?) ; - mred-id -> med-id (?) ; - prop:... -> ?? ; - code-write -> constructor-code ? (require "mred-plugin.ss" "property-frame.ss" "toolbox-frame.ss" "hierarchy-frame.ss" "mreddesigner-misc.ss" "controller.ss" "templates.ss" ) ; Modify the current directory to be the same as this file directory: (require scheme/runtime-path) (define-runtime-path here-directory (build-path 'same)) (current-directory here-directory) (set-debug #f) ; Load the widget plugins: (load-mred-widget-plugins) ; Load the templates: (make-template-dict) (make-toolbox-frame #:exit-application-callback controller-exit-application #:plugin-button-callback controller-create-mred-id #:generate-code-callback controller-generate-code #:generate-code-to-console-callback controller-generate-code-to-console #:new-project-callback controller-new-project #:load-project-callback controller-load-project #:save-project-callback controller-save-project #:close-project-callback controller-close-project #:add-template-callback controller-load-template #:save-template-callback controller-save-template #:replace-template-callback controller-replace-current-template #:delete-template-callback controller-delete-template #:show-properties-callback controller-show-property-frame #:show-hierarchy-callback controller-show-hierarchy-frame #:cut-callback controller-cut #:copy-callback controller-copy #:paste-callback controller-paste ) (make-property-frame toolbox-frame #:update-callback controller-replace-current-widget ) (make-hierarchy-frame toolbox-frame #:on-select-callback controller-select-mred-id #:delete-callback controller-delete-mred-id #:move-up-callback controller-move-up #:move-down-callback controller-move-down #:cut-callback controller-cut #:copy-callback controller-copy #:paste-callback controller-paste ) (define project-plugin (get-widget-plugin 'project)) (controller-create-mred-id project-plugin) (show-toolbox-frame) (show-property-frame) (show-hierarchy-frame)