GUI: remove code duplication
This commit is contained in:
parent
869cbd0af3
commit
0681b4d605
70
GUI/Gtk.hs
70
GUI/Gtk.hs
@ -193,7 +193,23 @@ showErrorDialog str = do
|
|||||||
drawDiag' :: FilePath
|
drawDiag' :: FilePath
|
||||||
-> MyGUI
|
-> MyGUI
|
||||||
-> IO Int
|
-> IO Int
|
||||||
drawDiag' fp mygui =
|
drawDiag' fp mygui = saveAndDrawDiag fp "" mygui
|
||||||
|
|
||||||
|
|
||||||
|
-- |Saves a Diagram which is built from a given file as an SVG.
|
||||||
|
saveDiag' :: FilePath
|
||||||
|
-> MyGUI
|
||||||
|
-> IO Int
|
||||||
|
saveDiag' fp mygui = saveAndDrawDiag fp "out.svg" mygui
|
||||||
|
|
||||||
|
|
||||||
|
-- |Draws and saves a Diagram which is built from a given file.
|
||||||
|
-- If the file to save is left empty, then nothing is saved.
|
||||||
|
saveAndDrawDiag :: FilePath -- ^ obj file to parse
|
||||||
|
-> FilePath -- ^ if/where to save the result
|
||||||
|
-> MyGUI
|
||||||
|
-> IO Int
|
||||||
|
saveAndDrawDiag fp fps mygui =
|
||||||
if cmpExt "obj" fp
|
if cmpExt "obj" fp
|
||||||
then do
|
then do
|
||||||
mesh <- readFile fp
|
mesh <- readFile fp
|
||||||
@ -219,8 +235,8 @@ drawDiag' fp mygui =
|
|||||||
|
|
||||||
case (xD, yD) of
|
case (xD, yD) of
|
||||||
(Just xD', Just yD') -> do
|
(Just xD', Just yD') -> do
|
||||||
let (_, r) = renderDia Cairo
|
let (s, r) = renderDia Cairo
|
||||||
(CairoOptions ""
|
(CairoOptions fps
|
||||||
(Dims (fromIntegral daW) (fromIntegral daH))
|
(Dims (fromIntegral daW) (fromIntegral daH))
|
||||||
SVG False)
|
SVG False)
|
||||||
(diagS (def{
|
(diagS (def{
|
||||||
@ -232,51 +248,9 @@ drawDiag' fp mygui =
|
|||||||
ct = ct'})
|
ct = ct'})
|
||||||
mesh)
|
mesh)
|
||||||
renderWithDrawable dw r
|
renderWithDrawable dw r
|
||||||
return 0
|
if null fps
|
||||||
_ -> return 1
|
then return ()
|
||||||
|
else s
|
||||||
else return 2
|
|
||||||
|
|
||||||
|
|
||||||
-- |Saves a Diagram which is built from a given file as an SVG.
|
|
||||||
saveDiag' :: FilePath
|
|
||||||
-> MyGUI
|
|
||||||
-> IO Int
|
|
||||||
saveDiag' fp mygui =
|
|
||||||
if cmpExt "obj" fp
|
|
||||||
then do
|
|
||||||
mesh <- readFile fp
|
|
||||||
adjustment <- rangeGetAdjustment (hs mygui)
|
|
||||||
scaleVal <- adjustmentGetValue adjustment
|
|
||||||
xlD' <- entryGetText (xl mygui)
|
|
||||||
xuD' <- entryGetText (xu mygui)
|
|
||||||
ylD' <- entryGetText (yl mygui)
|
|
||||||
yuD' <- entryGetText (yu mygui)
|
|
||||||
alg' <- comboBoxGetActive (cB mygui)
|
|
||||||
(daW, daH) <- widgetGetSize (da mygui)
|
|
||||||
gd' <- toggleButtonGetActive (gC mygui)
|
|
||||||
ct' <- toggleButtonGetActive (cC mygui)
|
|
||||||
|
|
||||||
let
|
|
||||||
xD = (,) <$>
|
|
||||||
readMaybe xlD' <*>
|
|
||||||
readMaybe xuD' :: Maybe (Double, Double)
|
|
||||||
yD = (,) <$>
|
|
||||||
readMaybe ylD' <*>
|
|
||||||
readMaybe yuD' :: Maybe (Double, Double)
|
|
||||||
|
|
||||||
case (xD, yD) of
|
|
||||||
(Just xD', Just yD') -> do
|
|
||||||
renderCairo "out.svg"
|
|
||||||
(Dims (fromIntegral daW) (fromIntegral daH))
|
|
||||||
(diagS (def{
|
|
||||||
t = scaleVal,
|
|
||||||
dX = xD',
|
|
||||||
dY = yD',
|
|
||||||
alg = alg',
|
|
||||||
gd = gd',
|
|
||||||
ct = ct'})
|
|
||||||
mesh)
|
|
||||||
return 0
|
return 0
|
||||||
_ -> return 1
|
_ -> return 1
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user