tv_pb.erl

来自「OTP是开放电信平台的简称」· ERL 代码 · 共 688 行 · 第 1/2 页

ERL
688
字号
%%======================================================================%% Function:      %%%% Return Value:  %%%% Description:   %%%% Parameters:    %%======================================================================%% Three cases: no button previously clicked, or same button clicked,%% or some other button clicked.check_marked_row(NewVirtRow, undefined, RealRow, RowMarkP) ->       % No btn already pressed!    {true, RowMarkP#row_mark_params{virtual_row_marked = NewVirtRow,				    real_row_marked    = RealRow}};check_marked_row(NewVirtRow, OldVirtRow, _RealRow, RowMarkP) when NewVirtRow =:= OldVirtRow ->       % The button previously pressed has been pressed again!    {false, RowMarkP#row_mark_params{virtual_row_marked = undefined,				     real_row_marked    = undefined}};check_marked_row(NewVirtRow, _OldVirtRow, RealRow, RowMarkP) ->       % A new btn has been pressed!    {true, RowMarkP#row_mark_params{virtual_row_marked = NewVirtRow,				    real_row_marked    = RealRow}}.%%======================================================================%% Function:      %%%% Return Value:  %%%% Description:   %%%% Parameters:    %%======================================================================set_sort_col(Msg, ProcVars) ->    #pb_set_sort_col{virtual_col = SortCol} = Msg,    tv_pb_funcs:set_new_sort_col(SortCol, ProcVars).    %%======================================================================%% Function:      %%%% Return Value:  %%%% Description:   %%%% Parameters:    %%======================================================================%% Three cases: no button previously clicked, or same button clicked,%% or some other button clicked.mark_col_btn(NewId, undefined, NewVirtCol, _OldVirtCol, _RealCol, _SortCol, ColMarkP) ->       % No btn already pressed!    gs:config(NewId, [{bg, ?COL_MARK_COLOR},		      {fg, {255, 255, 255}}		     ]),    {true, ColMarkP#col_mark_params{col_btn_id         = NewId,				    virtual_col_marked = NewVirtCol}};mark_col_btn(NewId, _OldId, NewVirtCol, OldVirtCol, _RealCol, SortCol, ColMarkP) when NewVirtCol =:= OldVirtCol, NewVirtCol =:= SortCol ->       % The button previously pressed has been pressed again!    gs:config(NewId, [{bg, ?SORT_MARK_COLOR},		      {fg, {0, 0, 0}}		     ]),    {false, ColMarkP#col_mark_params{col_btn_id         = undefined,				     virtual_col_marked = undefined}};mark_col_btn(NewId, _OldId, NewVirtCol, OldVirtCol, _RealCol, _SortCol, ColMarkP) when NewVirtCol =:= OldVirtCol ->       % The button previously pressed has been pressed again!    gs:config(NewId, [{bg, ?DEFAULT_BG_COLOR},		      {fg, {0, 0, 0}}		     ]),    {false, ColMarkP#col_mark_params{col_btn_id         = undefined,				     virtual_col_marked = undefined}};mark_col_btn(NewId, OldId, NewVirtCol, _OldVirtCol, _RealCol, _SortCol, ColMarkP) ->       % A new btn has been pressed!    gs:config(OldId, [{bg, ?DEFAULT_BG_COLOR},			 {fg, {0, 0, 0}}			]),    gs:config(NewId, [{bg, ?COL_MARK_COLOR},		      {fg, {255, 255, 255}}		     ]),    {true, ColMarkP#col_mark_params{col_btn_id         = NewId,				    virtual_col_marked = NewVirtCol}}.    		    		    	    	            %%======================================================================%% Function:      %%%% Return Value:  %%%% Description:   %%%% Parameters:    %%======================================================================handle_col_resizing(RbtnId, RealCol, VirtualCol, Xpos, ProcVars) ->    gs:config(RbtnId, [{motion, true}]),    #process_variables{parent_pid        = ParentPid,		       grid_frame_id     = GrFrId,		       grid_frame_height = Height,		       hbtn_height       = HbtnH,		       resbtn_width      = RbtnW,		       cols_shown        = ColsShown} = ProcVars,        LineId = gs:frame(GrFrId, [{width, 1},			       {height, Height - HbtnH},			       {x, Xpos},			       {y, HbtnH - 1},			       {bg, ?DEFAULT_BG_COLOR}			      ]),    MinColWidth = RbtnW,        OldColWidth = lists:nth(RealCol, ColsShown),    Xdiff = get_xdiff(RbtnId, 1, 0, LineId, Xpos, MinColWidth - OldColWidth),    ParentPid ! #pb_new_colwidth{sender      = self(),				 real_col    = RealCol,				 virtual_col = VirtualCol,				 xdiff       = Xdiff},    gs:config(RbtnId, [{motion, false}]),    gs:destroy(LineId).    %%======================================================================%% Function:      %%%% Return Value:  %%%% Description:   %%%% Parameters:    %%======================================================================get_xdiff(Id, Btn, LastXdiff, LineId, LineXpos, MinAllowedXdiff) ->    receive	{gs, Id, motion, {resbtn, _RealCol, _VirtCol, _OldXpos}, [NewXdiff | _T]} ->	    UsedXdiff = max(MinAllowedXdiff, NewXdiff),	    gs:config(LineId, [{x, LineXpos + UsedXdiff}]),	    get_xdiff(Id, Btn, UsedXdiff, LineId, LineXpos, MinAllowedXdiff);	{gs, Id, buttonrelease, _Data, [Btn | _T]} ->	    LastXdiff;	{gs, Id, buttonrelease, _Data, _Args} ->	    get_xdiff(Id, Btn, LastXdiff, LineId, LineXpos, MinAllowedXdiff);	{gs, Id, buttonpress, _Data, _Args} ->	    get_xdiff(Id, Btn, LastXdiff, LineId, LineXpos, MinAllowedXdiff)    end.%%======================================================================%% Function:      %%%% Return Value:  %%%% Description:   %%%% Parameters:    %%======================================================================init_btns(Msg, ProcVars) ->    #pb_init_btns{parent_id       = ParentId,		  parent_width    = Width,		  parent_height   = Height,		  ypos            = Ypos,		  hbtn_height     = HbtnH,		  resbtn_width    = RbtnW,		  vbtn_width      = VbtnW,		  nof_rows        = NofRows,		  row_height      = RowHeight,		  first_col_shown = FirstColShown,		  cols_shown      = ColsShown} = Msg,    NewProcVars = tv_pb_funcs:init_btns(ParentId, Ypos, HbtnH, VbtnW, RbtnW, 					 FirstColShown, ColsShown, NofRows, 					 RowHeight, ProcVars),    gs:frame(ParentId, [{bg, {0, 0, 0}},			{bw, 0},			{width, 1300},			{height, 1},			{x, 0},			{y, Ypos - 1}		       ]),    NewProcVars#process_variables{grid_frame_width  = Width,				  grid_frame_height = Height				 }.%%======================================================================%% Function:      %%%% Return Value:  %%%% Description:   %%%% Parameters:    %%======================================================================update_hbtns(Msg, ProcVars) ->    #pb_update_hbtns{parent_width    = Width,		     parent_height   = Height,		     first_col_shown = FirstColShown,		     cols_shown      = ColsShown} = Msg,    NewProcVars = tv_pb_funcs:update_hbtns(FirstColShown, ColsShown, ProcVars),    NewProcVars#process_variables{grid_frame_width  = Width,				  grid_frame_height = Height				 }.%%======================================================================%% Function:      %%%% Return Value:  %%%% Description:   %%%% Parameters:    %%======================================================================update_vbtns(Msg, ProcVars) ->    #pb_update_vbtns{color_list       = Colors,		     first_row_shown  = FirstRowShown,		     nof_rows_shown   = NofRowsShown,		     blinking_enabled = BlinkEnabled} = Msg,        tv_pb_funcs:update_vbtns(NofRowsShown, FirstRowShown, Colors, BlinkEnabled, 			      ProcVars).    %%======================================================================%% Function:      %%%% Return Value:  %%%% Description:   %%%% Parameters:    %%======================================================================update_keys(Msg, ProcVars) ->    #pb_key_info{list_of_keys = KeyList} = Msg,    tv_pb_funcs:update_keys(KeyList, ProcVars).%%======================================================================%% Function:      %%%% Return Value:  %%%% Description:   %%%% Parameters:    %%======================================================================max(A, B) when A >= B ->    A;max(_, B) ->    B.    

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?