making standalone DTP editor

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?

Respuestas (1)

dpb
dpb hace alrededor de 2 horas
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

Categorías

Más información sobre Develop Apps Using App Designer en Centro de ayuda y File Exchange.

Etiquetas

Preguntada:

hace alrededor de 23 horas

Respondida:

dpb
hace alrededor de 21 horas

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by