summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2012-09-18 00:21:09 +0100
committerCarl Hetherington <cth@carlh.net>2012-09-18 00:21:09 +0100
commit48794870183ac5c0dd2b4acc1f9c2e5d7349f284 (patch)
tree1fd791507967788dd39d1dc46abd2d7c9c102e68
parent1e8f1be709e8a3fa58f1147db2e58a39396313d8 (diff)
Basics of a tray-iconned GUI server.
-rw-r--r--icons/16x16/dvdomatic.pngbin0 -> 211 bytes
-rwxr-xr-xrun/servomatic10
-rwxr-xr-xrun/servomatic_cli10
-rwxr-xr-xrun/servomatic_gui10
-rw-r--r--src/tools/servomatic_gui.cc113
-rw-r--r--src/tools/wscript2
-rw-r--r--windows/dvdomatic.rc3
-rw-r--r--windows/dvdomatic_taskbar.icobin0 -> 1150 bytes
-rw-r--r--windows/installer.nsi.in3
9 files changed, 138 insertions, 13 deletions
diff --git a/icons/16x16/dvdomatic.png b/icons/16x16/dvdomatic.png
new file mode 100644
index 000000000..3c5a10f2d
--- /dev/null
+++ b/icons/16x16/dvdomatic.png
Binary files differ
diff --git a/run/servomatic b/run/servomatic
deleted file mode 100755
index 100d0a8bd..000000000
--- a/run/servomatic
+++ /dev/null
@@ -1,10 +0,0 @@
-#!/bin/bash
-
-export LD_LIBRARY_PATH=build/src/lib:$LD_LIBRARY_PATH
-if [ "$1" == "--debug" ]; then
- gdb --args build/src/tools/servomatic
-elif [ "$1" == "--valgrind" ]; then
- valgrind --tool="memcheck" build/src/tools/servomatic
-else
- build/src/tools/servomatic
-fi
diff --git a/run/servomatic_cli b/run/servomatic_cli
new file mode 100755
index 000000000..3dd67d246
--- /dev/null
+++ b/run/servomatic_cli
@@ -0,0 +1,10 @@
+#!/bin/bash
+
+export LD_LIBRARY_PATH=build/src/lib:$LD_LIBRARY_PATH
+if [ "$1" == "--debug" ]; then
+ gdb --args build/src/tools/servomatic_cli
+elif [ "$1" == "--valgrind" ]; then
+ valgrind --tool="memcheck" build/src/tools/servomatic_cli
+else
+ build/src/tools/servomatic_cli
+fi
diff --git a/run/servomatic_gui b/run/servomatic_gui
new file mode 100755
index 000000000..4f1c617cc
--- /dev/null
+++ b/run/servomatic_gui
@@ -0,0 +1,10 @@
+#!/bin/bash
+
+export LD_LIBRARY_PATH=build/src/lib:$LD_LIBRARY_PATH
+if [ "$1" == "--debug" ]; then
+ gdb --args build/src/tools/servomatic_gui
+elif [ "$1" == "--valgrind" ]; then
+ valgrind --tool="memcheck" build/src/tools/servomatic_gui
+else
+ build/src/tools/servomatic_gui
+fi
diff --git a/src/tools/servomatic_gui.cc b/src/tools/servomatic_gui.cc
new file mode 100644
index 000000000..d89bd91ad
--- /dev/null
+++ b/src/tools/servomatic_gui.cc
@@ -0,0 +1,113 @@
+/*
+ Copyright (C) 2012 Carl Hetherington <cth@carlh.net>
+
+ This program 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 2 of the License, or
+ (at your option) any later version.
+
+ This program 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, write to the Free Software
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+*/
+
+#include <boost/thread.hpp>
+#include <wx/taskbar.h>
+#include <wx/icon.h>
+#include "wx_util.h"
+#include "lib/util.h"
+#include "lib/server.h"
+
+using namespace boost;
+
+enum {
+ ID_status = 1,
+ ID_quit
+};
+
+class StatusDialog : public wxDialog
+{
+public:
+ StatusDialog ()
+ : wxDialog (0, wxID_ANY, _("DVD-o-matic encode server"), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE)
+ {
+ wxFlexGridSizer* table = new wxFlexGridSizer (2, 6, 6);
+ table->AddGrowableCol (1, 1);
+
+ add_label_to_sizer (table, this, "Hello");
+
+ SetSizer (table);
+ table->Layout ();
+ table->SetSizeHints (this);
+ }
+};
+
+class TaskBarIcon : public wxTaskBarIcon
+{
+public:
+ TaskBarIcon ()
+ {
+ wxIcon icon (std_to_wx ("taskbar_icon"));
+ SetIcon (icon, std_to_wx ("DVD-o-matic encode server"));
+
+ Connect (ID_status, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler (TaskBarIcon::status));
+ Connect (ID_quit, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler (TaskBarIcon::quit));
+ }
+
+ wxMenu* CreatePopupMenu ()
+ {
+ wxMenu* menu = new wxMenu;
+ menu->Append (ID_status, std_to_wx ("Status..."));
+ menu->Append (ID_quit, std_to_wx ("Quit"));
+ return menu;
+ }
+
+private:
+ void status (wxCommandEvent &)
+ {
+ StatusDialog* d = new StatusDialog;
+ d->Show ();
+ }
+
+ void quit (wxCommandEvent &)
+ {
+ wxTheApp->ExitMainLoop ();
+ }
+};
+
+class App : public wxApp
+{
+public:
+ App ()
+ : wxApp ()
+ , _thread (0)
+ {}
+
+private:
+
+ bool OnInit ()
+ {
+ dvdomatic_setup ();
+
+ new TaskBarIcon;
+
+ _thread = new thread (bind (&App::main_thread, this));
+ return true;
+ }
+
+ void main_thread ()
+ {
+ Server server;
+ server.run ();
+ }
+
+ boost::thread* _thread;
+};
+
+IMPLEMENT_APP (App)
diff --git a/src/tools/wscript b/src/tools/wscript
index ff7134d15..048bdff07 100644
--- a/src/tools/wscript
+++ b/src/tools/wscript
@@ -9,7 +9,7 @@ def build(bld):
if not bld.env.DISABLE_GUI:
# p = ['dvdomatic', 'alignomatic']
- p = ['dvdomatic']
+ p = ['dvdomatic', 'servomatic_gui']
if not bld.env.DISABLE_PLAYER:
p.append('playomatic')
for t in p:
diff --git a/windows/dvdomatic.rc b/windows/dvdomatic.rc
index e6ce66597..97bfac229 100644
--- a/windows/dvdomatic.rc
+++ b/windows/dvdomatic.rc
@@ -1,2 +1,3 @@
-#include "wx-2.8/wx/msw/wx.rc"
id ICON "dvdomatic.ico"
+taskbar_icon ICON "dvdomatic_taskbar.ico"
+#include "wx-2.8/wx/msw/wx.rc"
diff --git a/windows/dvdomatic_taskbar.ico b/windows/dvdomatic_taskbar.ico
new file mode 100644
index 000000000..f4489fa14
--- /dev/null
+++ b/windows/dvdomatic_taskbar.ico
Binary files differ
diff --git a/windows/installer.nsi.in b/windows/installer.nsi.in
index d34258799..3fb2ae457 100644
--- a/windows/installer.nsi.in
+++ b/windows/installer.nsi.in
@@ -84,7 +84,8 @@ File "%deps%/bin/libxml2-2.dll"
File "%binaries%/src/wx/dvdomatic-wx.dll"
File "%binaries%/src/lib/dvdomatic.dll"
File "%binaries%/src/tools/dvdomatic.exe"
-File "%binaries%/src/tools/servomatic.exe"
+File "%binaries%/src/tools/servomatic_cli.exe"
+File "%binaries%/src/tools/servomatic_gui.exe"
CreateShortCut "$DESKTOP\DVD-o-matic.lnk" "$INSTDIR\bin\dvdomatic.exe" ""