making standalone DTP editor
Afficher commentaires plus anciens
Maybe too ambitious, but I was thinking of making a tiny DTP editor with only a few traditional possibilities. InDesign etcetera have far too many possibilities but also lack some. Is it feasible? When I open my application it should have boxes for paper size, margins, font, font size, spreads or not and a few more. Too ambitious? Are there examples?
Réponses (1)
dpb
il y a 7 minutes
Automated code generators are potentially useful these days...you can try the attached as starters...it's generated purely programmatically. Or, you could use its controls layout as pattern in your own AppDesigner app
function tinyDTPApp()
% 1. Create Main Figure Window
fig = uifigure('Name', 'Tiny DTP Setup', 'Position', [100, 100, 750, 450]);
% 2. Control Panel (Left Side)
controlPanel = uipanel(fig, 'Title', 'Document Settings', ...
'Position', [20, 20, 280, 410]);
% Paper Size Dropdown
uilabel(controlPanel, 'Text', 'Paper Size:', 'Position', [15, 340, 80, 22]);
paperDrop = uidropdown(controlPanel, 'Items', {'A4', 'Letter', 'A5', 'Custom'}, ...
'Position', [100, 340, 150, 22]);
% Spreads Toggle
uilabel(controlPanel, 'Text', 'Facing Pages:', 'Position', [15, 290, 80, 22]);
spreadSwitch = uiswitch(controlPanel, 'toggle', 'Items', {'Off', 'On'}, ...
'Position', [120, 290, 45, 20]);
% Margins Input
uilabel(controlPanel, 'Text', 'Margin (mm):', 'Position', [15, 240, 80, 22]);
marginEdit = uinumericeditfield(controlPanel, 'Value', 20, ...
'Position', [100, 240, 150, 22]);
% Font Family
uilabel(controlPanel, 'Text', 'Base Font:', 'Position', [15, 190, 80, 22]);
fontDrop = uidropdown(controlPanel, 'Items', {'Helvetica', 'Times', 'Courier'}, ...
'Position', [100, 190, 150, 22]);
% Font Size
uilabel(controlPanel, 'Text', 'Font Size (pt):', 'Position', [15, 140, 80, 22]);
fontSizeEdit = uinumericeditfield(controlPanel, 'Value', 12, ...
'Position', [100, 140, 150, 22]);
% 3. Preview Canvas (Right Side)
canvasPanel = uipanel(fig, 'Title', 'Page Spread Preview', ...
'Position', [320, 20, 410, 410]);
canvasAxes = uiaxes(canvasPanel, 'Position', [20, 20, 370, 350]);
axis(canvasAxes, 'equal');
canvasAxes.XColor = 'none';
canvasAxes.YColor = 'none';
% Attach Callback to update preview dynamically
updatePreview();
paperDrop.ValueChangedFcn = @(~,~) updatePreview();
spreadSwitch.ValueChangedFcn = @(~,~) updatePreview();
marginEdit.ValueChangedFcn = @(~,~) updatePreview();
% Function to draw simulated page layout
function updatePreview()
cla(canvasAxes);
isSpread = strcmp(spreadSwitch.Value, 'On');
m = marginEdit.Value / 10; % Scale down for display
% Aspect ratio box simulation
if isSpread
% Left & Right Page
rectangle(canvasAxes, 'Position', [0, 0, 10, 14], 'FaceColor', 'w', 'EdgeColor', 'k');
rectangle(canvasAxes, 'Position', [10, 0, 10, 14], 'FaceColor', 'w', 'EdgeColor', 'k');
% Margin lines
rectangle(canvasAxes, 'Position', [m, m, 10-2*m, 14-2*m], 'EdgeColor', 'r', 'LineStyle', '--');
rectangle(canvasAxes, 'Position', [10+m, m, 10-2*m, 14-2*m], 'EdgeColor', 'r', 'LineStyle', '--');
xlim(canvasAxes, [-2, 22]); ylim(canvasAxes, [-2, 16]);
else
% Single Page
rectangle(canvasAxes, 'Position', [0, 0, 10, 14], 'FaceColor', 'w', 'EdgeColor', 'k');
rectangle(canvasAxes, 'Position', [m, m, 10-2*m, 14-2*m], 'EdgeColor', 'r', 'LineStyle', '--');
xlim(canvasAxes, [-2, 12]); ylim(canvasAxes, [-2, 16]);
end
end
end
Catégories
En savoir plus sur Develop Apps Using App Designer dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!