gui: Add some collection manager tests

Test ok, update, and import buttons in a Glib::timeout based simulator.

Signed-off-by: Anna Schumaker <schumaker.anna@gmail.com>
This commit is contained in:
Anna Schumaker 2014-01-12 13:05:02 -05:00 committed by Anna Schumaker
parent eff294a7c7
commit 11704b2bfa
9 changed files with 1017 additions and 35 deletions

36
config
View File

@ -4,7 +4,7 @@ import os
# Configuration variables
CONFIG_VERSION = 6.0
CONFIG_DEBUG = True
CONFIG_TESTING = False
#CONFIG_TESTING = False
# Set up default environment
@ -33,19 +33,18 @@ class Config:
def reconfigure(self):
env.Replace( CCFLAGS = self.ENV )
if self.TEST == True:
print "Testing enabled"
env.Append( CCFLAGS = [ "-DCONFIG_TEST" ])
def reset(self, TEST = False):
self.AUDIO = False
self.DATABASE = False
self.DECK = False
self.FILE = False
self.FILTER = False
self.IDLE = False
self.LIBRARY = False
self.PLAYLIST = False
self.PLAYQUEUE = False
def reset(self, TEST = False, ALL = False):
self.AUDIO = ALL
self.DATABASE = ALL
self.DECK = ALL
self.FILE = ALL
self.FILTER = ALL
self.IDLE = ALL
self.LIBRARY = ALL
self.PLAYLIST = ALL
self.PLAYQUEUE = ALL
self.TEST = TEST
self.reconfigure()
@ -57,9 +56,12 @@ Export("env", "CONFIG")
include = SConscript("include/Sconscript")
design = SConscript("design/Sconscript")
gui = SConscript("gui/Sconscript")
#gui = SConscript("gui/Sconscript")
Default("gui")
if CONFIG_TESTING == True:
tests = SConscript("tests/Sconscript")
Depends(gui, tests)
#Default("gui")
#if CONFIG_TESTING == True:
# tests = SConscript("tests/Sconscript")
# Depends(gui, tests)
tests = SConscript("tests/Sconscript")
Default("tests")

View File

@ -2,8 +2,6 @@
Import("env", "CONFIG")
CONFIG.package("gtkmm-3.0")
CONFIG.AUDIO = True
lib = SConscript("../lib/Sconscript");
env.Program("ocarina", Glob("*.cpp") + SConscript("../lib/Sconscript"))
res = Glob("*.cpp")
Return("res")

View File

@ -3,6 +3,7 @@
*/
#include <ocarina.h>
#ifndef CONFIG_TEST
int main(int argc, char **argv)
{
Gtk::Window *window;
@ -13,3 +14,4 @@ int main(int argc, char **argv)
Gtk::Main::run(*window);
return 0;
}
#endif /* CONFIG_TEST */

883
gui/ocarina6-exp.glade Normal file
View File

@ -0,0 +1,883 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.16.1 -->
<interface>
<requires lib="gtk+" version="3.10"/>
<object class="GtkAdjustment" id="adjustment1">
<property name="upper">100</property>
<property name="step_increment">1</property>
<property name="page_increment">10</property>
</object>
<object class="GtkFileFilter" id="filefilter1">
<mime-types>
<mime-type>inode/directory</mime-type>
</mime-types>
</object>
<object class="GtkImage" id="image10">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="stock">gtk-convert</property>
</object>
<object class="GtkImage" id="image11">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="stock">gtk-refresh</property>
</object>
<object class="GtkListStore" id="o_directories">
<columns>
<!-- column-name Path -->
<column type="gchararray"/>
<!-- column-name Size -->
<column type="guint"/>
</columns>
<data>
<row>
<col id="0" translatable="yes">/home/anna/Music/mp3</col>
<col id="1">1000</col>
</row>
<row>
<col id="0" translatable="yes">/home/anna/Music/flac</col>
<col id="1">2000</col>
</row>
</data>
</object>
<object class="GtkFileChooserDialog" id="o_library_manager">
<property name="can_focus">False</property>
<property name="title" translatable="yes">Ocarina Library Manager</property>
<property name="type_hint">dialog</property>
<property name="action">select-folder</property>
<property name="create_folders">False</property>
<property name="filter">filefilter1</property>
<child internal-child="vbox">
<object class="GtkBox" id="filechooserdialog1-vbox">
<property name="can_focus">False</property>
<property name="orientation">vertical</property>
<property name="spacing">2</property>
<child internal-child="action_area">
<object class="GtkButtonBox" id="filechooserdialog-action_area1">
<property name="can_focus">False</property>
<property name="layout_style">end</property>
<child>
<object class="GtkButton" id="button2">
<property name="label" translatable="yes">Import</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<property name="image">image10</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkButton" id="button3">
<property name="label" translatable="yes">Update All</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<property name="image">image11</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkButton" id="button1">
<property name="label">gtk-ok</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<property name="use_stock">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
<child>
<object class="GtkButton" id="button4">
<property name="label">gtk-cancel</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<property name="use_stock">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">3</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="pack_type">end</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkTreeView" id="treeview3">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="model">o_directories</property>
<child internal-child="selection">
<object class="GtkTreeSelection" id="treeview-selection3"/>
</child>
<child>
<object class="GtkTreeViewColumn" id="treeviewcolumn9">
<property name="title" translatable="yes">Path</property>
<child>
<object class="GtkCellRendererText" id="cellrenderertext9"/>
<attributes>
<attribute name="text">0</attribute>
</attributes>
</child>
</object>
</child>
<child>
<object class="GtkTreeViewColumn" id="treeviewcolumn10">
<property name="title" translatable="yes">Size</property>
<child>
<object class="GtkCellRendererText" id="cellrenderertext10"/>
<attributes>
<attribute name="text">1</attribute>
</attributes>
</child>
</object>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
</object>
</child>
</object>
<object class="GtkTreeStore" id="o_playback"/>
<object class="GtkListStore" id="o_playqueue">
<columns>
<!-- column-name # -->
<column type="gchararray"/>
<!-- column-name Title -->
<column type="gchararray"/>
<!-- column-name Length -->
<column type="gchararray"/>
<!-- column-name Artist -->
<column type="gchararray"/>
<!-- column-name Album -->
<column type="gchararray"/>
<!-- column-name Year -->
<column type="guint"/>
<!-- column-name Genre -->
<column type="gchararray"/>
<!-- column-name Played -->
<column type="gchararray"/>
</columns>
<data>
<row>
<col id="0" translatable="yes">1</col>
<col id="1" translatable="yes">Title 1</col>
<col id="2" translatable="yes">1:11</col>
<col id="3" translatable="yes">Artist 1</col>
<col id="4" translatable="yes">Album 1</col>
<col id="5">2011</col>
<col id="6" translatable="yes">Music</col>
<col id="7" translatable="yes">Never</col>
</row>
<row>
<col id="0" translatable="yes">2</col>
<col id="1" translatable="yes">Title 2</col>
<col id="2" translatable="yes">2:22</col>
<col id="3" translatable="yes">Artist 2</col>
<col id="4" translatable="yes">Album 2</col>
<col id="5">2012</col>
<col id="6" translatable="yes">Music</col>
<col id="7" translatable="yes">2 (2 / 22 / 2012)</col>
</row>
<row>
<col id="0" translatable="yes">3</col>
<col id="1" translatable="yes">Title 3</col>
<col id="2" translatable="yes">3:33</col>
<col id="3" translatable="yes">Artist 3</col>
<col id="4" translatable="yes">Album 3</col>
<col id="5">2013</col>
<col id="6" translatable="yes">Music</col>
<col id="7" translatable="yes">3 ( 3 / 23 / 2013)</col>
</row>
</data>
</object>
<object class="GtkAdjustment" id="o_progress">
<property name="upper">100</property>
<property name="step_increment">1</property>
<property name="page_increment">10</property>
</object>
<object class="GtkWindow" id="o_window">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="title" translatable="yes">Ocarina 6.0</property>
<property name="default_width">1024</property>
<property name="default_height">683</property>
<child>
<object class="GtkBox" id="box2">
<property name="name">=</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="orientation">vertical</property>
<child>
<object class="GtkPaned" id="paned1">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="position">120</property>
<child>
<object class="GtkBox" id="box1">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="orientation">vertical</property>
<child>
<object class="GtkTreeView" id="treeview1">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="model">o_playback</property>
<child internal-child="selection">
<object class="GtkTreeSelection" id="treeview-selection1"/>
</child>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkButton" id="o_open_manager">
<property name="label" translatable="yes">Library Manager</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="resize">False</property>
<property name="shrink">True</property>
</packing>
</child>
<child>
<object class="GtkBox" id="box14">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="vexpand">True</property>
<property name="orientation">vertical</property>
<child>
<object class="GtkBox" id="box15">
<property name="visible">True</property>
<property name="can_focus">False</property>
<child>
<object class="GtkSearchEntry" id="searchentry1">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="primary_icon_name">edit-find-symbolic</property>
<property name="primary_icon_activatable">False</property>
<property name="primary_icon_sensitive">False</property>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkToggleButton" id="o_repeat">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<child>
<object class="GtkImage" id="image8">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="icon_name">media-playlist-repeat</property>
</object>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkToggleButton" id="o_random">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<child>
<object class="GtkImage" id="image9">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="icon_name">media-playlist-shuffle</property>
</object>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkTreeView" id="treeview2">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="model">o_playqueue</property>
<property name="rules_hint">True</property>
<property name="rubber_banding">True</property>
<property name="enable_tree_lines">True</property>
<child internal-child="selection">
<object class="GtkTreeSelection" id="treeview-selection2"/>
</child>
<child>
<object class="GtkTreeViewColumn" id="treeviewcolumn1">
<property name="title" translatable="yes">#</property>
<child>
<object class="GtkCellRendererText" id="cellrenderertext1"/>
<attributes>
<attribute name="text">0</attribute>
</attributes>
</child>
</object>
</child>
<child>
<object class="GtkTreeViewColumn" id="treeviewcolumn2">
<property name="title" translatable="yes">Title</property>
<child>
<object class="GtkCellRendererText" id="cellrenderertext2"/>
<attributes>
<attribute name="text">1</attribute>
</attributes>
</child>
</object>
</child>
<child>
<object class="GtkTreeViewColumn" id="treeviewcolumn3">
<property name="title" translatable="yes">Length</property>
<child>
<object class="GtkCellRendererText" id="cellrenderertext3"/>
<attributes>
<attribute name="text">2</attribute>
</attributes>
</child>
</object>
</child>
<child>
<object class="GtkTreeViewColumn" id="treeviewcolumn4">
<property name="title" translatable="yes">Artist</property>
<child>
<object class="GtkCellRendererText" id="cellrenderertext4"/>
<attributes>
<attribute name="text">3</attribute>
</attributes>
</child>
</object>
</child>
<child>
<object class="GtkTreeViewColumn" id="treeviewcolumn5">
<property name="title" translatable="yes">Album</property>
<child>
<object class="GtkCellRendererText" id="cellrenderertext5"/>
<attributes>
<attribute name="text">4</attribute>
</attributes>
</child>
</object>
</child>
<child>
<object class="GtkTreeViewColumn" id="treeviewcolumn6">
<property name="title" translatable="yes">Year</property>
<child>
<object class="GtkCellRendererText" id="cellrenderertext6"/>
<attributes>
<attribute name="text">5</attribute>
</attributes>
</child>
</object>
</child>
<child>
<object class="GtkTreeViewColumn" id="treeviewcolumn7">
<property name="title" translatable="yes">Genre</property>
<child>
<object class="GtkCellRendererText" id="cellrenderertext7"/>
<attributes>
<attribute name="text">6</attribute>
</attributes>
</child>
</object>
</child>
<child>
<object class="GtkTreeViewColumn" id="treeviewcolumn8">
<property name="title" translatable="yes">Played</property>
<child>
<object class="GtkCellRendererText" id="cellrenderertext8"/>
<attributes>
<attribute name="text">7</attribute>
</attributes>
</child>
</object>
</child>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="resize">True</property>
<property name="shrink">True</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkSeparator" id="separator2">
<property name="visible">True</property>
<property name="can_focus">False</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkGrid" id="grid1">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="column_homogeneous">True</property>
<child>
<object class="GtkBox" id="box3">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="orientation">vertical</property>
<child>
<object class="GtkBox" id="box5">
<property name="visible">True</property>
<property name="can_focus">False</property>
<child>
<object class="GtkLabel" id="o_cur_position">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">0:00</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkScale" id="scale1">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="adjustment">o_progress</property>
<property name="round_digits">1</property>
<property name="draw_value">False</property>
<property name="value_pos">left</property>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="o_total_time">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">0:00</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkBox" id="box4">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="homogeneous">True</property>
<child>
<object class="GtkButton" id="o_play">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<child>
<object class="GtkImage" id="image1">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="stock">gtk-media-play</property>
</object>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkButton" id="o_pause">
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<child>
<object class="GtkImage" id="image2">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="stock">gtk-media-pause</property>
</object>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkButton" id="o_stop">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<child>
<object class="GtkImage" id="image3">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="stock">gtk-stop</property>
</object>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
<child>
<object class="GtkButton" id="o_prev">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<child>
<object class="GtkImage" id="image4">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="stock">gtk-media-previous</property>
</object>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">3</property>
</packing>
</child>
<child>
<object class="GtkButton" id="o_next">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<child>
<object class="GtkImage" id="image5">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="stock">gtk-media-next</property>
</object>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">4</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="label4">
<property name="visible">True</property>
<property name="can_focus">False</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">5</property>
</packing>
</child>
<child>
<object class="GtkToggleButton" id="o_favorite">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<child>
<object class="GtkImage" id="image6">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="icon_name">emblem-favorite</property>
</object>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">6</property>
</packing>
</child>
<child>
<object class="GtkToggleButton" id="o_ban">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<child>
<object class="GtkImage" id="image7">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="icon_name">edit-delete</property>
</object>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">7</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkBox" id="box6">
<property name="visible">True</property>
<property name="can_focus">False</property>
<child>
<object class="GtkCheckButton" id="o_pause_enabled">
<property name="label" translatable="yes">Pause after </property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
<property name="xalign">0</property>
<property name="draw_indicator">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkSpinButton" id="o_pause_count">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="adjustment">adjustment1</property>
<property name="numeric">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="label5">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes"> songs</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
</object>
<packing>
<property name="left_attach">2</property>
<property name="top_attach">0</property>
<property name="width">1</property>
<property name="height">1</property>
</packing>
</child>
<child>
<object class="GtkScrolledWindow" id="scrolledwindow2">
<property name="visible">True</property>
<property name="can_focus">True</property>
<child>
<object class="GtkViewport" id="viewport2">
<property name="visible">True</property>
<property name="can_focus">False</property>
<child>
<object class="GtkBox" id="box7">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="orientation">vertical</property>
<child>
<object class="GtkLabel" id="o_title">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="xalign">0</property>
<property name="label" translatable="yes">&lt;span size='xx-large'&gt;A Random Song Title&lt;/span&gt;</property>
<property name="use_markup">True</property>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="o_artist">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="xalign">0</property>
<property name="label" translatable="yes">&lt;span size='x-large'&gt;By: Some Artist&lt;/span&gt;</property>
<property name="use_markup">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="o_album">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="xalign">0</property>
<property name="label" translatable="yes">&lt;span size='x-large'&gt;From: Some Album&lt;/span&gt;</property>
<property name="use_markup">True</property>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
</object>
</child>
</object>
</child>
</object>
<packing>
<property name="left_attach">0</property>
<property name="top_attach">0</property>
<property name="width">2</property>
<property name="height">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
<child>
<object class="GtkSeparator" id="separator1">
<property name="visible">True</property>
<property name="can_focus">False</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">3</property>
</packing>
</child>
<child>
<object class="GtkBox" id="box12">
<property name="visible">True</property>
<property name="can_focus">False</property>
<child>
<object class="GtkProgressBar" id="progressbar1">
<property name="can_focus">False</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="label11">
<property name="visible">True</property>
<property name="can_focus">False</property>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="label6">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="xalign">1</property>
<property name="label" translatable="yes">S Songs: D days, H hours, M minutes, S seconds</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">4</property>
</packing>
</child>
</object>
</child>
</object>
</interface>

View File

@ -15,19 +15,23 @@ void enable_idle();
*/
static void on_collection_ok()
{
print("OK clicked!\n");
std::string path;
Gtk::FileChooserWidget *chooser;
get_builder()->get_widget("o_collection_chooser", chooser);
path = chooser->get_filename();
library::add_path(path);
enable_idle();
}
static void on_collection_update()
{
print("Update clicked!\n");
//library :: update_all();
library :: update_all();
enable_idle();
}
static void on_collection_import()
{
print("Import clicked!\n");
library :: import();
enable_idle();
}
@ -61,12 +65,21 @@ void enable_idle()
/*
* Ocarina functions
*/
static void connect_button(Glib::RefPtr<Gtk::Builder> &builder,
const std::string &name, void (*func)())
Glib::RefPtr<Gtk::Builder> &get_builder()
{
return builder;
}
Gtk::Button *get_button(const std::string &name)
{
Gtk::Button *button;
builder->get_widget(name, button);
button->signal_clicked().connect(sigc::ptr_fun(func));
return button;
}
static void connect_button(const std::string &name, void (*func)())
{
get_button(name)->signal_clicked().connect(sigc::ptr_fun(func));
}
Gtk::Window *connect_wires()
@ -77,9 +90,9 @@ Gtk::Window *connect_wires()
builder->get_widget("o_window", window);
/* Collection manager */
connect_button(builder, "o_collection_ok", on_collection_ok);
connect_button(builder, "o_collection_update", on_collection_update);
connect_button(builder, "o_collection_import", on_collection_import);
connect_button("o_collection_ok", on_collection_ok);
connect_button("o_collection_update", on_collection_update);
connect_button("o_collection_import", on_collection_import);
return window;
}

View File

@ -8,5 +8,7 @@
/* wires.cpp */
Gtk::Window *connect_wires();
Gtk::Button *get_button(const std::string &);
Glib::RefPtr<Gtk::Builder> &get_builder();
#endif /* OCARINA_H */

View File

@ -24,11 +24,14 @@ def run_test(target, source, env):
print line.rstrip()
print
def Test(group, src):
def Test(group, src, gui = False):
name, extension = src.rsplit(".", 1)
mods = [ src ]
lib = SConscript("../../lib/Sconscript")
prog = env.Program("%s.test" % name, [ src ] + lib)
mods += SConscript("../../lib/Sconscript")
if gui == True:
mods += SConscript("../../gui/Sconscript")
prog = env.Program("%s.test" % name, mods)
src_files = [ "%s.test" % name ]
if os.path.exists(GOOD % name):
@ -58,7 +61,7 @@ rm_test_dir(xdg.BaseDirectory.xdg_data_home);
# Read SConscript files
#
scripts = [ "print", "file", "database", "index", "filter", "idle", "playlist",
"library", "playqueue", "deck", "audio" ]
"library", "playqueue", "deck", "audio", "gui" ]
for s in scripts:
CONFIG.reset(TEST = True)
SConscript("%s/Sconscript" % s)

6
tests/gui/Sconscript Normal file
View File

@ -0,0 +1,6 @@
#!/usr/bin/python
Import("Test", "CONFIG")
CONFIG.reset(TEST = True, ALL = True)
Test("gui", "gui.cpp", gui = True)

73
tests/gui/gui.cpp Normal file
View File

@ -0,0 +1,73 @@
/*
* Copyright 2013 (c) Anna Schumaker.
*/
#include <idle.h>
#include <ocarina.h>
#include <print.h>
static unsigned int i;
void schedule_test(bool (*func)())
{
i = 0;
Glib::signal_timeout().connect(sigc::ptr_fun(func), 500);
}
void end_test()
{
Gtk::Main::quit();
}
void click_button(const std::string &name)
{
print("Clicking button: %s\n", name.c_str());
get_button(name)->clicked();
}
/* Collection manager tests */
bool test_0()
{
switch (i) {
case 0:
print("Test 0\n");
click_button("o_collection_import");
break;
case 1:
case 4:
case 6:
/* Wait for idle queue to finish */
if (idle::get_progress() == 1)
break;
return true;
case 2:
/* Select filepath */
Gtk::FileChooserWidget *chooser;
get_builder()->get_widget("o_collection_chooser", chooser);
chooser->set_filename("/tmp/library/0");
break;
case 3:
click_button("o_collection_ok");
break;
case 5:
click_button("o_collection_update");
break;
default:
end_test();
return false;
}
i++;
return true;
}
int main(int argc, char **argv)
{
Gtk::Window *window;
Gtk::Main ocarina(argc, argv);
window = connect_wires();
schedule_test(test_0);
Gtk::Main::run(*window);
return 0;
}