diff --git a/src/+gui_tools/menu_options.m b/src/+gui_tools/menu_options.m index b26b282771574b000cfbf8f3bb21d8a07c1d6391..f76c216760d09dd32b001ad06ad929365db7e92b 100644 --- a/src/+gui_tools/menu_options.m +++ b/src/+gui_tools/menu_options.m @@ -29,7 +29,7 @@ function menu_options(oid, status) % You should have received a copy of the GNU General Public License % along with Dynare. If not, see <http://www.gnu.org/licenses/>. -global M_ oo_ +global M_ oo_ project_info handles = guihandles(getappdata(0,'main_figure')); @@ -70,14 +70,30 @@ switch oid handles.sensitivity_analysis.Enable = status; case 'output' - handles.output_shocks_dec.Enable = status; - handles.output_shocks_decomposition.Enable = status; - handles.output_realtime_shocks_decomposition.Enable = status; - if (isfield(oo_, 'dr') && isfield(oo_.dr, 'ghu')) || isfield(oo_, 'SmoothedShocks') + if strcmpi(status, 'off') + handles.output_shocks_dec.Enable = status; + handles.output_shocks_decomposition.Enable = status; + handles.output_realtime_shocks_decomposition.Enable = status; handles.output_conditional_forecast.Enable = status; - end - if isfield(M_, 'histval_dseries') || isfield(oo_, 'SmoothedVariables') handles.output_forecast.Enable = status; + else + if project_info.estimation_run + handles.output_shocks_dec.Enable = status; + handles.output_shocks_decomposition.Enable = status; + handles.output_realtime_shocks_decomposition.Enable = status; + if (isfield(oo_, 'dr') && isfield(oo_.dr, 'ghu')) || isfield(oo_, 'SmoothedShocks') + handles.output_conditional_forecast.Enable = status; + end + if isfield(M_, 'histval_dseries') || isfield(oo_, 'SmoothedVariables') + handles.output_forecast.Enable = status; + end + end + if project_info.stochastic_simulation_run && project_info.observed_variables_set + handles.output_shocks_dec.Enable = status; + handles.output_shocks_decomposition.Enable = status; + handles.output_realtime_shocks_decomposition.Enable = status; + handles.output_conditional_forecast.Enable = status; + end end otherwise diff --git a/src/gui_estimation.m b/src/gui_estimation.m index b80fff5c805878b74a58c62ac911f6085f59c40a..0a481310b460d47f6f0a15923a981dd316f46d4a 100644 --- a/src/gui_estimation.m +++ b/src/gui_estimation.m @@ -376,7 +376,6 @@ handles.pushbuttonCommandDefinition = uicontrol( ... jObj.stop; jObj.setBusyText('All done!'); - gui_tools.menu_options('output','On'); handles.pushbuttonResults.Enable = 'on'; project_info.modified = true; project_info.estimation_run = true; diff --git a/src/gui_load_mod_file.m b/src/gui_load_mod_file.m index 126ce985acdeca76c9330de990994dc3b3d62ba2..02fc8f45482cd0b12e03b6537a0794a700398a8b 100644 --- a/src/gui_load_mod_file.m +++ b/src/gui_load_mod_file.m @@ -204,9 +204,7 @@ end gui_create_model_settings(); %enable menu options - gui_tools.menu_options('model', 'On'); gui_set_menus(true); - gui_tools.project_log_entry('Running .mod/.dyn file', ['mod_file=' project_info.mod_file]); catch ME %restore globals diff --git a/src/gui_observed_vars.m b/src/gui_observed_vars.m index a3039a0b0f7dd16adabb8222f27765e12ec094fa..881ca0bfb5aab6be41d74f5c7fa1bae64d79533a 100644 --- a/src/gui_observed_vars.m +++ b/src/gui_observed_vars.m @@ -106,6 +106,7 @@ uicontrol(tabId, 'Style','pushbutton','String','Close this tab','Units','normali options_.varobs = varobs(:, 1); end project_info.observed_variables_set = true; + gui_set_menus(true); end catch ME gui_tools.show_error('Error saving observed variables and data file information', ME, 'extended'); diff --git a/src/gui_open_project.m b/src/gui_open_project.m index 7f75bc997a7336b68fa85b20afd1b3e9474e3eae..3090a392db7d730946b116c7a295d6f672be675d 100644 --- a/src/gui_open_project.m +++ b/src/gui_open_project.m @@ -28,7 +28,7 @@ function gui_open_project(hObject) % You should have received a copy of the GNU General Public License % along with Dynare. If not, see <http://www.gnu.org/licenses/>. -global project_info model_settings +global project_info [fileName, pathName] = uigetfile('*.dproj', 'Select Dynare GUI project file:'); if fileName == 0 @@ -65,14 +65,8 @@ try cd(project_info.project_folder); %enable menu options - gui_tools.menu_options('project','On'); + gui_set_menus(true); - if ~isempty(project_info) && isfield(project_info, 'model_name') - gui_tools.menu_options('model','On'); - if ~isempty(model_settings) && ~isempty(fieldnames(model_settings)) - gui_set_menus(true); - end - end project_info.modified = false; gui_tools.project_log_entry('Project Open', ... ['project_name=' project_info.project_name '; project_folder=' project_info.project_folder]); diff --git a/src/gui_set_menus.m b/src/gui_set_menus.m index b180be0e86159bf22d1db3f631d62f200f3ecfa2..4fd9b4b5dbbf481bf71839e0fe0cb1e97690e688 100644 --- a/src/gui_set_menus.m +++ b/src/gui_set_menus.m @@ -28,9 +28,17 @@ function gui_set_menus(enable) % You should have received a copy of the GNU General Public License % along with Dynare. If not, see <http://www.gnu.org/licenses/>. -global project_info +global project_info model_settings if enable + gui_tools.menu_options('project', 'On'); + if isempty(model_settings) || isempty(fieldnames(model_settings)) + return + end + gui_tools.menu_options('model', 'On'); + if isempty(project_info) + return + end if project_info.project_model_stochastic gui_tools.menu_options('estimation', 'On'); gui_tools.menu_options('stochastic', 'On'); @@ -47,6 +55,7 @@ if enable gui_tools.menu_options('output', 'On'); end else + gui_tools.menu_options('model', 'Off'); gui_tools.menu_options('model_special','Off'); gui_tools.menu_options('output','Off'); gui_tools.menu_options('estimation','Off'); diff --git a/src/gui_stoch_simulation.m b/src/gui_stoch_simulation.m index e12eedd396f8c7c2c002ce2052e526c011bff809..67793766e4ec1cd32bec972e916d853696f354fb 100644 --- a/src/gui_stoch_simulation.m +++ b/src/gui_stoch_simulation.m @@ -197,11 +197,10 @@ handles.pushbuttonCommandDefinition = uicontrol( ... end jObj.stop; jObj.setBusyText('Done'); - %enable menu options - gui_tools.menu_options('output','On'); - set(handles.pushbuttonResults, 'Enable', 'on'); + handles.pushbuttonResults.Enable = 'on'; project_info.modified = true; project_info.stochastic_simulation_run = true; + gui_set_menus(true); catch ME jObj.stop; jObj.setBusyText('Done with errors');