Memory UI

* Add header line to browser
  * Increase font sizes
  * Change to user resizable dialog
This commit is contained in:
David Freese 2020-09-11 06:07:28 -05:00
parent 4bef465cf2
commit 11a01f2773
11 changed files with 381 additions and 103 deletions

View file

@ -230,6 +230,7 @@ flrig_SOURCES += \
UI/rigpanel.cxx \
widgets/combo.cxx \
widgets/Fl_SigBar.cxx \
widgets/flbrowser2.cxx \
widgets/flinput2.cxx \
widgets/flslider2.cxx \
widgets/font_browser.cxx \
@ -258,14 +259,15 @@ EXTRA_DIST = \
include/morse.h \
include/debug.h \
include/dialogs.h \
include/flbrowser2.h \
include/flinput2.h \
include/flslider2.h \
include/fileselect.h \
include/font_browser.h \
include/flrigrc.h \
include/flinput2.h \
include/icons.h \
include/KENWOOD.h \
include/pixmaps.h \
include/flslider2.h \
include/Fl_SigBar.h \
include/FreqControl.h \
include/hspinner.h \

View file

@ -47,7 +47,6 @@ Hspinner *spnrOUTER = (Hspinner *)0;
Hspinner *spnrNOTCH = (Hspinner *)0;
Hspinner *spnrMICGAIN = (Hspinner *)0;
static const int freq_sel_widths[]={110, 70, 70, 0};
static Fl_Double_Window *meter_scale_dialog = (Fl_Double_Window *)0;
static Fl_Double_Window *meter_filters = (Fl_Double_Window *)0;

View file

@ -18,11 +18,13 @@
// along with this program. If not, see <http://www.gnu.org/licenses/>.
// ----------------------------------------------------------------------------
#include "font_browser.h"
Fl_Button *btnAddFreq=(Fl_Button *)0;
Fl_Button *btnPickFreq=(Fl_Button *)0;
Fl_Button *btnDelFreq=(Fl_Button *)0;
Fl_Button *btnClearList=(Fl_Button *)0;
Fl_Browser *FreqSelect=(Fl_Browser *)0;
Fl_Browser2 *FreqSelect=(Fl_Browser2 *)0;
Fl_Input *inAlphaTag=(Fl_Input *)0;
static void cb_btnAddFreq(Fl_Button*, void*) {
@ -48,87 +50,184 @@ static void cb_Close(Fl_Button*, void*) {
static void cb_FreqSelect(Fl_Browser* o, void*) {
select_and_close();
switch (Fl::event_button()) {
case FL_LEFT_MOUSE:
if (Fl::event_clicks()) { // double click
if (o->value())
selectFreq();
o->parent()->hide();
}
break;
case FL_RIGHT_MOUSE:
if (o->value()) selectFreq();
break;
default:
break;
}
}
static void cb_inAlphaTag(Fl_Input*, void*) {
editAlphaTag();
}
static Font_Browser *fntSelectbrowser = 0;
static Fl_Browser *header = 0;
static int freq_sel_widths[] = {140, 15, 70, 15, 80, 15, 0};
extern void updateSelect();
void cbFreqSelectFontBrowser(Fl_Widget*, void*) {
progStatus.memfontnbr = fntSelectbrowser->fontNumber();
progStatus.memfontsize = fntSelectbrowser->fontSize();
if (progStatus.memfontsize > 18) progStatus.memfontsize = 18;
if (progStatus.memfontsize < 10) progStatus.memfontsize = 10;
fntSelectbrowser->hide();
char hdrline[256];
header->clear();
snprintf(hdrline, sizeof(hdrline),
"\
@F%d@S%d@B%d@cFrequency\t\
@F%d@S%d@B%d|\t\
@F%d@S%d@B%d@cBW\t\
@F%d@S%d@B%d|\t\
@F%d@S%d@B%d@cMode\t\
@F%d@S%d@B%d|\t\
@F%d@S%d@B%d@cComments",
progStatus.memfontnbr, progStatus.memfontsize, 247,
progStatus.memfontnbr, progStatus.memfontsize, 247,
progStatus.memfontnbr, progStatus.memfontsize, 247,
progStatus.memfontnbr, progStatus.memfontsize, 247,
progStatus.memfontnbr, progStatus.memfontsize, 247,
progStatus.memfontnbr, progStatus.memfontsize, 247,
progStatus.memfontnbr, progStatus.memfontsize, 247 );
header->add(hdrline);
header->redraw();
updateSelect();
}
void cbFreqFontBrowser()
{
fntSelectbrowser = new Font_Browser;
fntSelectbrowser->fontNumber(progStatus.memfontnbr);
fntSelectbrowser->fontSize(progStatus.memfontsize);
fntSelectbrowser->fontFilter(Font_Browser::FIXED_WIDTH);
fntSelectbrowser->fontFilter(Font_Browser::ALL_TYPES);
fntSelectbrowser->callback(cbFreqSelectFontBrowser);
fntSelectbrowser->show();
}
Fl_Double_Window* Memory_Dialog() {
Fl_Double_Window* w = new Fl_Double_Window(505, 175, _("Flrig Memory"));
Fl_Double_Window* w = new Fl_Double_Window(600, 182, _("Flrig Memory"));
Fl_Group* mm_grp1 = new Fl_Group(2, 2, 60, 133);
mm_grp1->box(FL_ENGRAVED_FRAME);
Fl_Group* mm_grp1 = new Fl_Group(0, 0, 600, 155);
mm_grp1->box(FL_FLAT_BOX);
btnAddFreq = new Fl_Button(6, 6, 51, 22, _("Add @-1>"));
btnAddFreq->tooltip(_("Add to list"));
btnAddFreq->down_box(FL_DOWN_BOX);
btnAddFreq->labelsize(12);
btnAddFreq->callback((Fl_Callback*)cb_btnAddFreq);
btnAddFreq->align(Fl_Align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE));
Fl_Group* mm_grp1a = new Fl_Group(0, 0, 64, 156);
mm_grp1a->box(FL_FLAT_BOX);
btnPickFreq = new Fl_Button(6, 31, 51, 22, _("Pick @-1<"));
btnPickFreq->tooltip(_("Use selected data"));
btnPickFreq->down_box(FL_DOWN_BOX);
btnPickFreq->labelsize(12);
btnPickFreq->callback((Fl_Callback*)cb_btnPickFreq);
btnPickFreq->align(Fl_Align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE));
btnAddFreq = new Fl_Button(2, 1, 60, 22, _("Add @-1>"));
btnAddFreq->tooltip(_("Add to list"));
btnAddFreq->down_box(FL_DOWN_BOX);
btnAddFreq->labelsize(14);
btnAddFreq->callback((Fl_Callback*)cb_btnAddFreq);
btnAddFreq->align(Fl_Align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE));
btnDelFreq = new Fl_Button(6, 57, 51, 22, _("Del @-11+"));
btnDelFreq->tooltip(_("Delete from list"));
btnDelFreq->down_box(FL_DOWN_BOX);
btnDelFreq->labelsize(12);
btnDelFreq->callback((Fl_Callback*)cb_btnDelFreq);
btnDelFreq->align(Fl_Align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE));
btnPickFreq = new Fl_Button(2, 25, 60, 22, _("Pick @-1<"));
btnPickFreq->tooltip(_("Use selected data"));
btnPickFreq->down_box(FL_DOWN_BOX);
btnPickFreq->labelsize(14);
btnPickFreq->callback((Fl_Callback*)cb_btnPickFreq);
btnPickFreq->align(Fl_Align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE));
btnClearList = new Fl_Button(6, 83, 51, 22, _("Clr @-2square"));
btnClearList->tooltip(_("Clear list"));
btnClearList->down_box(FL_DOWN_BOX);
btnClearList->labelsize(12);
btnClearList->callback((Fl_Callback*)cb_btnClearList);
btnClearList->align(Fl_Align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE));
btnDelFreq = new Fl_Button(2, 49, 60, 22, _("Del @-11+"));
btnDelFreq->tooltip(_("Delete from list"));
btnDelFreq->down_box(FL_DOWN_BOX);
btnDelFreq->labelsize(14);
btnDelFreq->callback((Fl_Callback*)cb_btnDelFreq);
btnDelFreq->align(Fl_Align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE));
Fl_Button* close = new Fl_Button(6, 109, 51, 22, _("Close"));
close->tooltip(_("Close Memory dialog"));
close->labelsize(12);
close->callback((Fl_Callback*)cb_Close);
close->align(Fl_Align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE));
btnClearList = new Fl_Button(2, 73, 60, 22, _("Clr @-2square"));
btnClearList->tooltip(_("Clear list"));
btnClearList->down_box(FL_DOWN_BOX);
btnClearList->labelsize(14);
btnClearList->callback((Fl_Callback*)cb_btnClearList);
btnClearList->align(Fl_Align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE));
Fl_Button * btnFontSel = new Fl_Button(2, 97, 60, 22, _("Font"));
btnFontSel->tooltip(_("Select Font/Size"));
btnFontSel->down_box(FL_DOWN_BOX);
btnFontSel->labelsize(14);
btnFontSel->callback((Fl_Callback*)cbFreqFontBrowser);
btnFontSel->align(Fl_Align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE));
Fl_Button* close = new Fl_Button(2, 121, 60, 22, _("Close"));
close->tooltip(_("Close Memory dialog"));
close->labelsize(14);
close->callback((Fl_Callback*)cb_Close);
close->align(Fl_Align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE));
Fl_Box *bx1a = new Fl_Box(0, 143, 66, 2, "");
bx1a->box(FL_NO_BOX);
mm_grp1a->end();
mm_grp1a->resizable(bx1a);
Fl_Group *mm_grp1b = new Fl_Group(66, 0, 534, 155);
mm_grp1b->box(FL_FLAT_BOX);
header = new Fl_Browser(66, 0, 532, 24, "");
header->column_widths(freq_sel_widths);
header->color(247);
char hdrline[256];
snprintf(hdrline, sizeof(hdrline),
"\
@F%d@S%d@B%d@cFrequency\t\
@F%d@S%d@B%d|\t\
@F%d@S%d@B%d@cBW\t\
@F%d@S%d@B%d|\t\
@F%d@S%d@B%d@cMode\t\
@F%d@S%d@B%d|\t\
@F%d@S%d@B%d@cComments",
progStatus.memfontnbr, progStatus.memfontsize, 247,
progStatus.memfontnbr, progStatus.memfontsize, 247,
progStatus.memfontnbr, progStatus.memfontsize, 247,
progStatus.memfontnbr, progStatus.memfontsize, 247,
progStatus.memfontnbr, progStatus.memfontsize, 247,
progStatus.memfontnbr, progStatus.memfontsize, 247,
progStatus.memfontnbr, progStatus.memfontsize, 247 );
header->add(hdrline);
FreqSelect = new Fl_Browser2(66, 24, 532, 131);
FreqSelect->tooltip(
_("\
Left Click: high light\n\
Dbl Left Click: select\n\
Right click: select"));
FreqSelect->type(2);
FreqSelect->labelfont(4);
FreqSelect->labelsize(14);
FreqSelect->textfont(4);
FreqSelect->textsize(14);
FreqSelect->column_widths(freq_sel_widths);
FreqSelect->callback((Fl_Callback*)cb_FreqSelect);
// FreqSelect->has_scrollbar(Fl_Browser_::BOTH_ALWAYS);
mm_grp1b->end();
mm_grp1b->resizable(FreqSelect);
mm_grp1->end();
mm_grp1->resizable(mm_grp1b);
FreqSelect = new Fl_Browser(66, 2, 434, 133);
FreqSelect->tooltip(
_("Right click => pick freq\nDouble-click ==> pick and close\nLeft click => edit Alpha Tag"));
FreqSelect->type(2);
FreqSelect->labelfont(4);
FreqSelect->labelsize(12);
FreqSelect->textfont(4);
FreqSelect->textsize(12);
FreqSelect->callback((Fl_Callback*)cb_FreqSelect);
FreqSelect->has_scrollbar(Fl_Browser_::VERTICAL_ALWAYS);
FreqSelect->column_widths(freq_sel_widths);
Fl_Group* mm_grp2 = new Fl_Group(0, 155, 600, 26);
inAlphaTag = new Fl_Input(290, 140, 190, 25, _("Alpha Tag:"));
inAlphaTag->tooltip(
_("Select Tag from browser window\nLeft click => in Tag field to edit\n[Enter] => when done to update"));
inAlphaTag->callback((Fl_Callback*)cb_inAlphaTag);
inAlphaTag->when(FL_WHEN_ENTER_KEY_ALWAYS);
inAlphaTag = new Fl_Input(66, 156, 532, 24, _("Tag:"));
inAlphaTag->tooltip(
_("Left click => in Tag field to edit\n[Enter] => when done to update"));
inAlphaTag->callback((Fl_Callback*)cb_inAlphaTag);
inAlphaTag->when(FL_WHEN_ENTER_KEY_ALWAYS);
inAlphaTag->textfont(4);
inAlphaTag->textsize(14);
mm_grp2->end();
mm_grp2->resizable(inAlphaTag);
w->end();
w->resizable(mm_grp1);
w->size_range(w->w(), w->h(), 0, 0);
w->resize(
progStatus.memX, progStatus.memY,
progStatus.memW, progStatus.memH);
w->init_sizes();
return w;
}

View file

@ -452,6 +452,8 @@ Fl_Double_Window* DisplayDialog() {
w->end();
w->position( progStatus.ddX, progStatus.ddY );
return w;
}

33
src/include/flbrowser2.h Normal file
View file

@ -0,0 +1,33 @@
// ----------------------------------------------------------------------------
// Copyright (C) 2014
// David Freese, W1HKJ
//
// This file is part of flrig.
//
// flrig is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation; either version 3 of the License, or
// (at your option) any later version.
//
// flrig is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
// ----------------------------------------------------------------------------
#ifndef FL_BROWSER2_
#define FL_BROWSER2_
#include <FL/Fl_Browser.H>
class Fl_Browser2 : public Fl_Browser
{
public:
Fl_Browser2(int x, int y, int w, int h, const char* l = 0);
int handle(int event);
};
#endif // FL_BROWSER2_

View file

@ -52,6 +52,7 @@
#include <FL/Fl_Input_Choice.H>
#include "flinput2.h"
#include "flbrowser2.h"
#include "Fl_SigBar.h"
#include "FreqControl.h"
#include "combo.h"
@ -399,7 +400,7 @@ extern Fl_Button *btnPickFreq;
extern Fl_Button *btnDelFreq;
extern Fl_Button *btnClearList;
extern Fl_Browser *FreqSelect;
extern Fl_Browser2 *FreqSelect;
extern Fl_Input *inAlphaTag;

View file

@ -38,6 +38,15 @@ struct status {
int mainH;
int UIsize;
bool UIchanged;
int memX;
int memY;
int memW;
int memH;
int ddX;
int ddY;
string xcvr_serial_port;
int comm_baudrate;
int stopbits;
@ -404,6 +413,10 @@ struct status {
int f2, m2, txT_2, rxT_2, offset_2, oF_2;
int f70, m70, txT_70, rxT_70, offset_70, oF_70;
// memory management
Fl_Font memfontnbr;
int memfontsize;
// cwio parameters
int cwioWPM;
int cwioKEYLINE;

View file

@ -47,7 +47,7 @@
#include "status.h"
#define LISTSIZE 200
#define ATAGSIZE 21
#define ATAGSIZE 128 //21
extern bool flrig_abort;

View file

@ -27,6 +27,8 @@
#include <FL/Fl_Progress.H>
#include <FL/Enumerations.H>
#include "dialogs.h"
#include "status.h"
#include "util.h"
#include "rig.h"
@ -49,6 +51,15 @@ status progStatus = {
150, // int mainH;
small_ui, // UISIZE, UIsize;
false, // UIchanged;
20, // int memX;
20, // int memY;
600, // int memW;
164, // int memH;
20, // int ddX;
20, // int ddY;
"NONE", // string xcvr_serial_port;
0, // int comm_baudrate;
2, // int stopbits;
@ -416,7 +427,11 @@ status progStatus = {
28070000L, 6, 0, 0, 0, 600, // f10 meters
50070000L, 6, 0, 0, 0, 600, // f6 meters
144070000L, 6, 0, 0, 0, 600, // f2 meters
432100000L, 6, 0, 0, 0, 600, // f70 cent'
432100000L, 6, 0, 0, 0, 600, // f70 cent'
// memory management
4, // Fl_Font memfontnbr;
14, // int memfontsize;
// cwio parameters
20, // int cwioWPM;
@ -441,6 +456,13 @@ void status::saveLastState()
int mW = mainwindow->w();
int mH = mainwindow->h();
if (dlgMemoryDialog) {
memX = dlgMemoryDialog->x();
memY = dlgMemoryDialog->y();
memW = dlgMemoryDialog->w();
memH = dlgMemoryDialog->h();
}
if (mX >= 0 && mX >= 0) {
mainX = mX;
mainY = mY;
@ -458,6 +480,14 @@ void status::saveLastState()
spref.set("uisize", UIsize);
spref.set("memx", memX);
spref.set("memy", memY);
spref.set("memw", memW);
spref.set("memh", memH);
spref.set("ddx", ddX);
spref.set("ddy", ddY);
spref.set("xcvr_serial_port", xcvr_serial_port.c_str());
spref.set("comm_baudrate", comm_baudrate);
spref.set("comm_stopbits", stopbits);
@ -870,6 +900,9 @@ void status::saveLastState()
spref.set("hrd_buttons", hrd_buttons);
spref.set("sliders_button", sliders_button);
spref.set("memfontnbr", memfontnbr);
spref.set("memfontsize", memfontsize);
spref.set("cwioWPM", cwioWPM);
spref.set("cwio_comp", cwio_comp);
spref.set("cwioKEYLINE", cwioKEYLINE);
@ -901,6 +934,15 @@ bool status::loadXcvrState(string xcvr)
spref.get("mainw", mainW, mainW);
spref.get("mainh", mainH, mainH);
spref.get("uisize", UIsize, UIsize);
spref.get("memx", memX, memX);
spref.get("memy", memY, memY);
spref.get("memw", memW, memW);
spref.get("memh", memH, memH);
spref.get("ddX", ddX, ddX);
spref.get("ddY", ddY, ddY);
if (current_ui_size != -1) {
UIsize = current_ui_size;
}
@ -1407,6 +1449,9 @@ bool status::loadXcvrState(string xcvr)
if (spref.get("hrd_buttons", i, i)) hrd_buttons = i;
spref.get("sliders_button", sliders_button, sliders_button);
spref.get("memfontnbr", memfontnbr, memfontnbr);
spref.get("memfontsize", memfontsize, memfontsize);
spref.get("cwioWPM", cwioWPM, cwioWPM);
spref.get("cwio_comp", cwio_comp, cwio_comp);
spref.get("cwioKEYLINE", cwioKEYLINE, cwioKEYLINE);

View file

@ -1740,7 +1740,7 @@ void clearList() {
}
void updateSelect() {
char szline[80 + ATAGSIZE];
char szline[1000];
char szatag[ATAGSIZE];
int i;
FreqSelect->clear();
@ -1753,18 +1753,29 @@ void updateSelect() {
for (int n = 0; n < numinlist; n++) {
memset(szline, 0, sizeof(szline));
memset(szatag, 0, sizeof(szatag));
for (i = 0; i < ATAGSIZE - 1; i++) {
for (i = 0; i < ATAGSIZE; i++) {
szatag[i] = oplist[n].alpha_tag[i];
if (szatag[i] == 0) szatag[i] = ' ';
if (szatag[i] == '\n') szatag[i] = ' ';
}
bg_clr = (n % 2) ? bg1 : bg2;
snprintf(szline, sizeof(szline),
"@B%d@r%.3f\t@B%d@r%s\t@B%d@r%s\t@B%d@r%s", bg_clr,
oplist[n].freq / 1000.0, bg_clr,
selrig->get_bwname_(oplist[n].iBW, oplist[n].imode), bg_clr,
selrig->get_modename_(oplist[n].imode), bg_clr,
szatag );
snprintf(szline, sizeof(szline), "\
@F%d@S%d@B%d@r%.3f\t\
@F%d@S%d@B%d@.|\t\
@F%d@S%d@B%d@r%s\t\
@F%d@S%d@B%d@.|\t\
@F%d@S%d@B%d@r%s\t\
@F%d@S%d@B%d@.|\t\
@F%d@S%d@B%d@.%s",
progStatus.memfontnbr, progStatus.memfontsize, bg_clr, oplist[n].freq / 1000.0,
progStatus.memfontnbr, progStatus.memfontsize, bg_clr,
progStatus.memfontnbr, progStatus.memfontsize, bg_clr, selrig->get_bwname_(oplist[n].iBW, oplist[n].imode),
progStatus.memfontnbr, progStatus.memfontsize, bg_clr,
progStatus.memfontnbr, progStatus.memfontsize, bg_clr, selrig->get_modename_(oplist[n].imode),
progStatus.memfontnbr, progStatus.memfontsize, bg_clr,
progStatus.memfontnbr, progStatus.memfontsize, bg_clr, szatag );
FreqSelect->add (szline);
//if (n == 0)
//std::cout << szline << std::endl;
}
inAlphaTag->value("");
}
@ -2114,35 +2125,45 @@ void selectFreq() {
}
}
#include <FL/names.h>
void select_and_close()
{
switch (Fl::event_button()) {
case FL_LEFT_MOUSE:
if (FreqSelect->value() > 0)
inAlphaTag->value(oplist[FreqSelect->value() - 1].alpha_tag);
if (Fl::event_clicks()) { // double click
selectFreq();
cbCloseMemory();
}
break;
case FL_RIGHT_MOUSE:
if (FreqSelect->value() > 0)
inAlphaTag->value(oplist[FreqSelect->value() - 1].alpha_tag);
selectFreq();
break;
default:
break;
int key = Fl::event_key();
int btn = Fl::event_button();
if (FreqSelect->value() <= 0) return;
if ((btn == FL_LEFT_MOUSE && Fl::event_clicks()) ||
btn == FL_RIGHT_MOUSE ||
key == FL_Enter ||
key == FL_Left) {
inAlphaTag->value(oplist[FreqSelect->value() - 1].alpha_tag);
selectFreq();
Fl::focus(FreqSelect);
return;
}
// update Alpha Tag field when keyboard scrolling
switch (Fl::event_key()) {
case FL_Up:
case FL_Down:
if (FreqSelect->value() > 0)
inAlphaTag->value(oplist[FreqSelect->value() - 1].alpha_tag);
break;
default:
break;
if (btn == FL_LEFT_MOUSE || key == FL_Up || key == FL_Down) {
inAlphaTag->value(oplist[FreqSelect->value() - 1].alpha_tag);
Fl::focus(FreqSelect);
return;
}
if (key == FL_Right) {
addFreq();
FreqSelect->select(1, 1);
inAlphaTag->value(oplist[0].alpha_tag);
Fl::focus(FreqSelect);
return;
}
if (key == FL_Delete) {
long n = FreqSelect->value();
delFreq();
FreqSelect->select(n, 1);
inAlphaTag->value(oplist[n-1].alpha_tag);
Fl::focus(FreqSelect);
return;
}
}

View file

@ -0,0 +1,63 @@
// =====================================================================
//
// flinput2.cxx
//
// Author: Stelios Buononos, M0GLD
// Copyright: 2010
//
// This file is part of flrig.
//
// This is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation; either version 3 of the License, or
// (at your option) any later version.
//
// This software is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. It is
// copyright under the GNU General Public License.
//
// You should have received a copy of the GNU General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
//
// =====================================================================
#include "config.h"
#include <cctype>
#include <iostream>
#include <FL/Fl.H>
#include <FL/Fl_Window.H>
#include <FL/Fl_Widget.H>
#include <FL/Fl_Input.H>
#include <FL/Fl_Menu_Item.H>
#include <FL/Fl_Tooltip.H>
#include "icons.h"
#include "flbrowser2.h"
#include "gettext.h"
#include "util.h"
#include <FL/names.h>
Fl_Browser2::Fl_Browser2(int x, int y, int w, int h, const char* l)
: Fl_Browser(x, y, w, h, l)
{
}
int Fl_Browser2::handle(int event)
{
int key = Fl::event_key();
if (event == FL_KEYUP &&
( key == FL_Enter ||
key == FL_Left ||
key == FL_Right ||
key == FL_Delete ) ) {
do_callback();
return 1;
}
return Fl_Browser::handle(event);
}