MCPcopy Create free account
hub / github.com/RomanKubiak/ctrlr / exportWithDefaultPanel

Method exportWithDefaultPanel

Source/Native/CtrlrWindows.cpp:82–147  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

80}
81
82const Result CtrlrWindows::exportWithDefaultPanel(CtrlrPanel* panelToWrite, const bool isRestricted, const bool signPanel)
83{
84 if (panelToWrite == nullptr)
85 {
86 return (Result::fail("Windows Native: exportWithDefaultPanel got nullptr for panel"));
87 }
88
89 File me = File::getSpecialLocation(File::currentExecutableFile);
90 File newMe;
91 HANDLE hResource;
92 MemoryBlock panelExportData,panelResourcesData;
93 //MemoryBlock iconData(BinaryData::ico_midi_png, BinaryData::ico_midi_pngSize);
94
95 FileChooser fc(CTRLR_NEW_INSTANCE_DIALOG_TITLE,
96 me.getParentDirectory().getChildFile(File::createLegalFileName(panelToWrite->getProperty(Ids::name))).withFileExtension(me.getFileExtension()),
97 "*"+me.getFileExtension(),
98 panelToWrite->getOwner().getProperty(Ids::ctrlrNativeFileDialogs));
99
100 if (fc.browseForFileToSave(true))
101 {
102 newMe = fc.getResult();
103
104 if (!newMe.hasFileExtension(me.getFileExtension()))
105 {
106 newMe = newMe.withFileExtension(me.getFileExtension());
107 }
108
109 if (!me.copyFileTo (newMe))
110 {
111 return (Result::fail("Windows Native: exportMeWithNewResource can't copy \""+me.getFullPathName()+"\" to \""+newMe.getFullPathName()+"\""));
112 }
113 }
114 else
115 {
116 return (Result::fail("Windows Native: exportMeWithNewResource \"Save file\" dialog failed"));
117 }
118
119 hResource = BeginUpdateResource(newMe.getFullPathName().toUTF8(), FALSE);
120
121 if (hResource)
122 {
123 String error;
124
125 if ( (error = CtrlrPanel::exportPanel (panelToWrite, File(), newMe, &panelExportData, &panelResourcesData, isRestricted)) == "")
126 {
127 if ( writeResource (hResource, MAKEINTRESOURCE(CTRLR_INTERNAL_PANEL_RESID), RT_RCDATA, panelExportData)
128 && writeResource (hResource, MAKEINTRESOURCE(CTRLR_INTERNAL_RESOURCES_RESID), RT_RCDATA, panelResourcesData)
129 )
130 {
131 EndUpdateResource(hResource, FALSE);
132 }
133 else
134 {
135 return (Result::fail("Windows Native: exportMeWithNewResource writeResource[panel] failed"));
136 }
137 }
138 else
139 {

Callers

nothing calls this directly

Calls 12

FileClass · 0.85
browseForFileToSaveMethod · 0.80
copyFileToMethod · 0.80
withFileExtensionMethod · 0.45
getChildFileMethod · 0.45
getParentDirectoryMethod · 0.45
getPropertyMethod · 0.45
getFileExtensionMethod · 0.45
getOwnerMethod · 0.45
getResultMethod · 0.45
hasFileExtensionMethod · 0.45
toUTF8Method · 0.45

Tested by

no test coverage detected