X-Git-Url: https://develop.uap-core.de/gitweb/uwplayer.git/blobdiff_plain/5b86e784ed60d047c8d34dec15b35f62cfb1f8f8..f84f78a3ae9a216a4416be5fcb2b219b68e483fe:/application/window.c diff --git a/application/window.c b/application/window.c index eb6335a..4cdeadc 100644 --- a/application/window.c +++ b/application/window.c @@ -42,8 +42,10 @@ static void FileQuitCB(Widget w, void *udata, void *cdata); static void PlayRepeatCB(Widget w, void *udata, void *cdata); static void PlayRepeatListCB(Widget w, void *udata, void *cdata); static void PlayAutoPlayCB(Widget w, void *udata, void *cdata); +static void PlayRandomCB(Widget w, void *udata, void *cdata); static void ViewFullscreenCB(Widget w, void *udata, void *cdata); static void ViewSidebarCB(Widget w, void *udata, void *cdata); +static void ViewAdjustWindowSizeCB(Widget w, void *udata, void *cdata); static void WindowRealized(MainWindow *win); @@ -332,6 +334,8 @@ MainWindow* WindowCreate(Display *display) { PlayListInit(window); + window->adjustWindowSize = true; // auto adjust window size by default + return window; } @@ -421,6 +425,15 @@ static Widget createToggleMenuItem( return menuItem; } +/* + * Creates a menu separator + */ +static Widget createMenuSeparator(Widget menu) { + Widget w = XmCreateSeparator(menu, "separator", NULL, 0); + XtManageChild(w); + return w; +} + static void WindowCreateMenu(MainWindow *win, Widget parent, Arg *mbargs, int nmbargs) { Widget menubar = XmCreateMenuBar(parent, "menubar", mbargs, nmbargs); XtManageChild(menubar); @@ -472,9 +485,18 @@ static void WindowCreateMenu(MainWindow *win, Widget parent, Arg *mbargs, int nm XtVaSetValues(win->playRepeatListButton, XmNindicatorType, XmONE_OF_MANY, NULL); XtVaSetValues(win->playAutoPlayButton, XmNindicatorType, XmONE_OF_MANY, NULL); + createMenuSeparator(playMenu); + + win->playRandom = createToggleMenuItem(playMenu, "playRandom", "Random Playback", 'P', False, NULL, NULL, PlayRandomCB, win); + + // view menu createMenuItem(viewMenu, "viewFullscreen", "Fullscreen", 'F', "F", "F", ViewFullscreenCB, NULL); win->viewSidebarButton = createToggleMenuItem(viewMenu, "viewSidebar", "View Sidebar", 'S', False, NULL, NULL, ViewSidebarCB, win); + + createMenuSeparator(viewMenu); + + win->viewAdjustWindowSize = createToggleMenuItem(viewMenu, "viewAdjustWindowSize", "Adjust Window Size", 'W', TRUE, NULL, NULL, ViewAdjustWindowSizeCB, win); } void go_fullscreen(Display *dsp, Window win) @@ -517,6 +539,8 @@ void WindowFullscreen(MainWindow *win, bool enableFullscreen) { main_window->fullscreen = FALSE; } + WindowShowSidebar(win, enableFullscreen ? false : win->sidebarvisible); + XEvent ev; memset(&ev, 0, sizeof(XEvent)); ev.type = ClientMessage; @@ -617,6 +641,11 @@ static void PlayAutoPlayCB(Widget w, void *udata, void *cdata) { XtVaSetValues(win->playRepeatListButton, XmNset, 0, NULL); } +static void PlayRandomCB(Widget w, void *udata, void *cdata) { + MainWindow *win = udata; + win->playlist.random = XmToggleButtonGadgetGetState(w); +} + static void ViewFullscreenCB(Widget w, void *udata, void *cdata) { if(main_window->fullscreen) { WindowFullscreen(main_window, FALSE); @@ -628,11 +657,13 @@ static void ViewFullscreenCB(Widget w, void *udata, void *cdata) { static void ViewSidebarCB(Widget w, void *udata, void *cdata) { MainWindow *win = udata; XmToggleButtonCallbackStruct *cb = cdata; - if(cb->set) { - WindowShowSidebar(win); - } else { - WindowHideSidebar(win); - } + win->sidebarvisible = cb->set; + WindowShowSidebar(win, cb->set); +} + +static void ViewAdjustWindowSizeCB(Widget w, void *udata, void *cdata) { + MainWindow *win = udata; + win->adjustWindowSize = XmToggleButtonGadgetGetState(w); } void WindowAdjustAspectRatio(MainWindow *win) { @@ -688,17 +719,16 @@ void WindowShowPlayerCursor(MainWindow *win) { win->cursorhidden = False; } -void WindowHideSidebar(MainWindow *win) { - XtUnmanageChild(win->sidebar); - XtVaSetValues(win->player_widget, XmNrightAttachment, XmATTACH_FORM, NULL); +void WindowShowSidebar(MainWindow *win, bool visible) { + if(visible) { + XtManageChild(win->sidebar); + XtVaSetValues(win->player_widget, XmNrightAttachment, XmATTACH_WIDGET, XmNrightWidget, win->sidebar, NULL); + } else { + XtUnmanageChild(win->sidebar); + XtVaSetValues(win->player_widget, XmNrightAttachment, XmATTACH_FORM, NULL); + } } -void WindowShowSidebar(MainWindow *win) { - XtManageChild(win->sidebar); - XtVaSetValues(win->player_widget, XmNrightAttachment, XmATTACH_WIDGET, XmNrightWidget, win->sidebar, NULL); +void WindowUpdate(MainWindow *win) { + SidebarRepaint(win->sidebar); } - - - - -