add #uiOpenFolder

This commit is contained in:
ddo 2016-08-08 20:07:41 +07:00
parent d93bb2c48f
commit f407c6acc8
3 changed files with 58 additions and 3 deletions

View File

@ -175,6 +175,20 @@ static void onOpenFileClicked(uiButton *b, void *data)
uiFreeText(filename);
}
static void onOpenFolderClicked(uiButton *b, void *data)
{
uiEntry *entry = uiEntry(data);
char *filename;
filename = uiOpenFolder(mainwin);
if (filename == NULL) {
uiEntrySetText(entry, "(cancelled)");
return;
}
uiEntrySetText(entry, filename);
uiFreeText(filename);
}
static void onSaveFileClicked(uiButton *b, void *data)
{
uiEntry *entry = uiEntry(data);
@ -259,10 +273,10 @@ static uiControl *makeDataChoosersPage(void)
1, 0, 1, 1,
1, uiAlignFill, 0, uiAlignFill);
button = uiNewButton("Save File");
button = uiNewButton("Open Folder");
entry = uiNewEntry();
uiEntrySetReadOnly(entry, 1);
uiButtonOnClicked(button, onSaveFileClicked, entry);
uiButtonOnClicked(button, onOpenFolderClicked, entry);
uiGridAppend(grid, uiControl(button),
0, 1, 1, 1,
0, uiAlignFill, 0, uiAlignFill);
@ -270,10 +284,21 @@ static uiControl *makeDataChoosersPage(void)
1, 1, 1, 1,
1, uiAlignFill, 0, uiAlignFill);
button = uiNewButton("Save File");
entry = uiNewEntry();
uiEntrySetReadOnly(entry, 1);
uiButtonOnClicked(button, onSaveFileClicked, entry);
uiGridAppend(grid, uiControl(button),
0, 2, 1, 1,
0, uiAlignFill, 0, uiAlignFill);
uiGridAppend(grid, uiControl(entry),
1, 2, 1, 1,
1, uiAlignFill, 0, uiAlignFill);
msggrid = uiNewGrid();
uiGridSetPadded(msggrid, 1);
uiGridAppend(grid, uiControl(msggrid),
0, 2, 2, 1,
0, 3, 2, 1,
0, uiAlignCenter, 0, uiAlignStart);
button = uiNewButton("Message Box");
@ -341,6 +366,19 @@ static void openClicked(uiMenuItem *item, uiWindow *w, void *data)
uiFreeText(filename);
}
static void openFolderClicked(uiMenuItem *item, uiWindow *w, void *data)
{
char *filename;
filename = uiOpenFolder(mainwin);
if (filename == NULL) {
uiMsgBoxError(mainwin, "No folder selected", "Don't be alarmed!");
return;
}
uiMsgBox(mainwin, "Folder selected", filename);
uiFreeText(filename);
}
static void saveClicked(uiMenuItem *item, uiWindow *w, void *data)
{
char *filename;
@ -403,6 +441,8 @@ int main(void)
menu = uiNewMenu("File");
item = uiMenuAppendItem(menu, "Open");
uiMenuItemOnClicked(item, openClicked, NULL);
item = uiMenuAppendItem(menu, "Open Folder");
uiMenuItemOnClicked(item, openFolderClicked, NULL);
item = uiMenuAppendItem(menu, "Save");
uiMenuItemOnClicked(item, saveClicked, NULL);
item = uiMenuAppendQuitItem(menu);

View File

@ -16,6 +16,19 @@ static void openFile(uiButton *b, void *data)
}
}
static void openFolder(uiButton *b, void *data)
{
char *fn;
fn = uiOpenFolder(parent);
if (fn == NULL)
uiLabelSetText(uiLabel(data), "(cancelled)");
else {
uiLabelSetText(uiLabel(data), fn);
uiFreeText(fn);
}
}
static void saveFile(uiButton *b, void *data)
{
char *fn;
@ -74,6 +87,7 @@ uiBox *makePage5(uiWindow *pw)
uiBoxAppend(page5, uiControl(hbox), 0);
D("Open File", openFile);
D("Open Folder", openFolder);
D("Save File", saveFile);
title = uiNewEntry();

1
ui.h
View File

@ -270,6 +270,7 @@ _UI_EXTERN void uiMenuAppendSeparator(uiMenu *m);
_UI_EXTERN uiMenu *uiNewMenu(const char *name);
_UI_EXTERN char *uiOpenFile(uiWindow *parent);
_UI_EXTERN char *uiOpenFolder(uiWindow *parent);
_UI_EXTERN char *uiSaveFile(uiWindow *parent);
_UI_EXTERN void uiMsgBox(uiWindow *parent, const char *title, const char *description);
_UI_EXTERN void uiMsgBoxError(uiWindow *parent, const char *title, const char *description);