0

I've created GUI that has a popup menu with several options (mouse 1 - mouse 10) in it to choose from, and also created a uitable next to it. The popup menu has several options to choose from.

I want to link between the popup menu and the uitable so that each mouse that the user chooses - a new uitable will replace the previous uitable of the previous mouse.

How do I do that?

Here is the relevant code, which is nothing, really:

function mouse_number_Callback(hObject, eventdata, handles)


function uitable1_CellEditCallback(hObject, eventdata, handles)

Thanks!

Hoki
  • 11,637
  • 1
  • 24
  • 43
  • Could you post what code you have thus far? – implmentor Aug 20 '15 at 11:27
  • As you said, the code you posted shows nothing. Please include _more_ relevant code (what's inside the `mouse_number_Callback` function for example) and don't forget to use [code formatting](http://stackoverflow.com/editing-help). – Hoki Aug 20 '15 at 12:06

1 Answers1

0

I'm not sure I've properly understood what did you menan with

each mouse that the user chooses - a new uitable will replace the previous uitable of the previous mouse

and, in turn, the expected behaviour of the GUI.

I've set up a simple GUI containing a table (tag: uitable1) and a popupmenu (tag: popupmenu1).

When the user selects an item in a popupmenu, in the corresponding row of table the string Selected

  • In the uitable1_CreateFcn the content of the table is set to empty strings
  • In the popupmenu1_Callback the index of the item selected in the popoumenu is identified and, in the corresponding row of the table, the string Selected is printed and the previous one deleted.

This is the code of the GUI

function varargout = table_gui(varargin)
% TABLE_GUI MATLAB code for table_gui.fig
%      TABLE_GUI, by itself, creates a new TABLE_GUI or raises the existing
%      singleton*.
%
%      H = TABLE_GUI returns the handle to a new TABLE_GUI or the handle to
%      the existing singleton*.
%
%      TABLE_GUI('CALLBACK',hObject,eventData,handles,...) calls the local
%      function named CALLBACK in TABLE_GUI.M with the given input arguments.
%
%      TABLE_GUI('Property','Value',...) creates a new TABLE_GUI or raises the
%      existing singleton*.  Starting from the left, property value pairs are
%      applied to the GUI before table_gui_OpeningFcn gets called.  An
%      unrecognized property name or invalid value makes property application
%      stop.  All inputs are passed to table_gui_OpeningFcn via varargin.
%
%      *See GUI Options on GUIDE's Tools menu.  Choose "GUI allows only one
%      instance to run (singleton)".
%
% See also: GUIDE, GUIDATA, GUIHANDLES

% Edit the above text to modify the response to help table_gui

% Last Modified by GUIDE v2.5 20-Aug-2015 17:31:24

% Begin initialization code - DO NOT EDIT
gui_Singleton = 1;
gui_State = struct('gui_Name',       mfilename, ...
                   'gui_Singleton',  gui_Singleton, ...
                   'gui_OpeningFcn', @table_gui_OpeningFcn, ...
                   'gui_OutputFcn',  @table_gui_OutputFcn, ...
                   'gui_LayoutFcn',  [] , ...
                   'gui_Callback',   []);
if nargin && ischar(varargin{1})
    gui_State.gui_Callback = str2func(varargin{1});
end

if nargout
    [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
    gui_mainfcn(gui_State, varargin{:});
end
% End initialization code - DO NOT EDIT


% --- Executes just before table_gui is made visible.
function table_gui_OpeningFcn(hObject, eventdata, handles, varargin)
% This function has no output args, see OutputFcn.
% hObject    handle to figure
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
% varargin   command line arguments to table_gui (see VARARGIN)

% Choose default command line output for table_gui
handles.output = hObject;

% Update handles structure
guidata(hObject, handles);

% UIWAIT makes table_gui wait for user response (see UIRESUME)
% uiwait(handles.figure1);


% --- Outputs from this function are returned to the command line.
function varargout = table_gui_OutputFcn(hObject, eventdata, handles) 
% varargout  cell array for returning output args (see VARARGOUT);
% hObject    handle to figure
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

% Get default command line output from handles structure
varargout{1} = handles.output;


% --- Executes on selection change in popupmenu1.
function popupmenu1_Callback(hObject, eventdata, handles)
% hObject    handle to popupmenu1 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

% Hints: contents = cellstr(get(hObject,'String')) returns popupmenu1 contents as cell array
%        contents{get(hObject,'Value')} returns selected item from popupmenu1

% Get the index of the selected popupmenu item
sel_m=get(hObject,'value')
% Clear table content
for i=1:10
   sel_sts{i,1}='      ';
end
% If "--- Select a Mouse ---" has been selected then set table with empty
% string
if(sel_m == 1)
   set(handles.uitable1,'data',sel_sts)
else
% If a "Mouse" has been selected then set "Selected" in the corresponding
% cell of the table
   sel_sts{sel_m - 1,1}='Selected';
   set(handles.uitable1,'data',sel_sts)
end

% --- Executes during object creation, after setting all properties.
function popupmenu1_CreateFcn(hObject, eventdata, handles)
% hObject    handle to popupmenu1 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    empty - handles not created until after all CreateFcns called

% Hint: popupmenu controls usually have a white background on Windows.
%       See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
    set(hObject,'BackgroundColor','white');
end


% --- Executes during object creation, after setting all properties.
function uitable1_CreateFcn(hObject, eventdata, handles)
% hObject    handle to uitable1 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    empty - handles not created until after all CreateFcns called

% Initialize table content with empty string
for i=1:10
   sel_sts{i,1}='      ';
end
set(hObject,'data',sel_sts);

enter image description here

Hope this helps.

il_raffa
  • 5,090
  • 129
  • 31
  • 36
  • Wow! What a detailed answer! So first of all, thank you so much for investing so much in my answer. This almost gets what I wanted: The popup menu is exactly as I wanted it, but the table is supposed to be a totally new table for each mouse, and not just a different row for each mouse. I mean that I collect data and fill a whole table for each mouse separately. However, your code has all that I need anyway, so I'll just modify it a little bit. Thanks a lot again, this was really helpful! Yotam – Yotam de la Zerda Aug 21 '15 at 13:17
  • Your're welcome! Actually it was not clear to me what did you mean with "new table". Perhaps you might want to "accept" the answer :-) – il_raffa Aug 21 '15 at 13:24