X-Git-Url: https://develop.uap-core.de/gitweb/uwplayer.git/blobdiff_plain/5cb490b04836ef624cdd0ba975ee5c2ff2e51a23..HEAD:/application/window.c?ds=sidebyside diff --git a/application/window.c b/application/window.c index 621ada7..96a4510 100644 --- a/application/window.c +++ b/application/window.c @@ -29,6 +29,7 @@ #include "player.h" #include "playlist.h" #include "xdnd.h" +#include "settings.h" #include "Fsb.h" #include "Sidebar.h" @@ -46,6 +47,7 @@ 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 PrefSingleInstanceCB(Widget w, void *udata, void *cdata); static void WindowRealized(MainWindow *win); @@ -479,6 +481,16 @@ static void WindowCreateMenu(MainWindow *win, Widget parent, Arg *mbargs, int nm XmStringFree(s); Widget viewMenu = XmVaCreateSimplePulldownMenu(menubar, "menu", 2, NULL, NULL); + s = XmStringCreateSimple("Preferences"); + Widget prefMenuItem = XtVaCreateManagedWidget( + "menuitem", + xmCascadeButtonWidgetClass, + menubar, + XmNlabelString, s, + NULL); + XmStringFree(s); + Widget prefMenu = XmVaCreateSimplePulldownMenu(menubar, "menu", 3, NULL, NULL); + // file menu createMenuItem(fileMenu, "fileOpen", "Open...", 'O', "CtrlO", "Ctrl+O", FileOpenCB, NULL); createMenuItem(fileMenu, "fileQuit", "Exit", 'E', "CtrlQ", "Ctrl+Q", FileQuitCB, NULL); @@ -493,7 +505,6 @@ static void WindowCreateMenu(MainWindow *win, Widget parent, Arg *mbargs, int nm XtVaSetValues(win->playAutoPlayButton, XmNindicatorType, XmONE_OF_MANY, NULL); XtVaSetValues(win->playRandom, XmNindicatorType, XmONE_OF_MANY, NULL); - // view menu createMenuItem(viewMenu, "viewFullscreen", "Fullscreen", 'F', "F", "F", ViewFullscreenCB, NULL); win->viewSidebarButton = createToggleMenuItem(viewMenu, "viewSidebar", "View Sidebar", 'S', False, NULL, NULL, ViewSidebarCB, win); @@ -501,6 +512,9 @@ static void WindowCreateMenu(MainWindow *win, Widget parent, Arg *mbargs, int nm createMenuSeparator(viewMenu); win->viewAdjustWindowSize = createToggleMenuItem(viewMenu, "viewAdjustWindowSize", "Adjust Window Size", 'W', TRUE, NULL, NULL, ViewAdjustWindowSizeCB, win); + + // preferences menu + win->prefSingleInstanceButton = createToggleMenuItem(prefMenu, "prefSingleInstance", "Single Instance", 'S', FALSE, NULL, NULL, PrefSingleInstanceCB, win); } void go_fullscreen(Display *dsp, Window win) @@ -682,6 +696,28 @@ static void ViewAdjustWindowSizeCB(Widget w, void *udata, void *cdata) { win->adjustWindowSize = XmToggleButtonGadgetGetState(w); } +static void PrefSingleInstanceCB(Widget w, void *udata, void *cdata) { + MainWindow *win = udata; + win->singleInstance = XmToggleButtonGadgetGetState(w); + + Display *dp = XtDisplay(w); + + if(!win->singleInstance) { + ShutdownInstanceSocket(dp); + return; + } + + Bool disable_item = False; + if(CreateSingleInstanceSocket(dp, &disable_item)) { + // TODO: err + disable_item = True; + } + if(disable_item) { + win->singleInstance = 0; + XmToggleButtonGadgetSetState(w, False, False); + } +} + void WindowAdjustAspectRatio(MainWindow *win) { if(!win->player) return; if(!win->player->isactive || win->player->width <= 0 || win->player->height <= 0) return;