ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/Deliantra-Client/DC/Main.pm
(Generate patch)

Comparing deliantra/Deliantra-Client/DC/Main.pm (file contents):
Revision 1.2 by root, Tue Dec 27 09:17:27 2011 UTC vs.
Revision 1.6 by root, Sat Dec 31 04:23:42 2011 UTC

17 die if $@; 17 die if $@;
18} 18}
19 19
20use common::sense; 20use common::sense;
21use Carp 'verbose'; 21use Carp 'verbose';
22use Cwd ();
22use EV; 23use EV;
23BEGIN { *time = \&EV::time } 24BEGIN { *time = \&EV::time }
24 25
25use List::Util qw(max min); 26use List::Util qw(max min);
26 27
40 # nop at compiletime 41 # nop at compiletime
41} 42}
42 43
43BEGIN { 44BEGIN {
44 $SIG{__DIE__} = sub { 45 $SIG{__DIE__} = sub {
45 return if $^S; 46 return if $^S; # quick reject
47
48 # return if there are any eval contexts in the csall stack
49 for my $i (0..999) {
50 my ($sub, $is_require) = (caller $i)[3, 7]
51 or last;
52 return if $sub eq "(eval)" && !$is_require;
53 }
54
46 crash "CRASH/DIE: $_[0]" => 1; 55 crash "CRASH/DIE: $_[0]" => 1;
47 DC::fatal Carp::longmess "$_[0]"; 56 DC::fatal Carp::longmess "$_[0]";
48 } 57 }
49} 58}
50 59
133our $PL_NOTEBOOK; 142our $PL_NOTEBOOK;
134our $PL_WINDOW; 143our $PL_WINDOW;
135 144
136our $MUSIC_PLAYING_WIDGET; 145our $MUSIC_PLAYING_WIDGET;
137our $LICENSE_WIDGET; 146our $LICENSE_WIDGET;
147our $DOWNLOADS_WIDGET;
138 148
139our $PICKUP_PAGE; 149our $PICKUP_PAGE;
140our $INVENTORY_PAGE; 150our $INVENTORY_PAGE;
141our $STATS_PAGE; 151our $STATS_PAGE;
142our $SKILL_PAGE; 152our $SKILL_PAGE;
1131 text => $CFG->{audio_driver}, 1141 text => $CFG->{audio_driver},
1132 template => "dsound1234", 1142 template => "dsound1234",
1133 tooltip => "You can override the audio driver to use here. Leaving it empty will result " 1143 tooltip => "You can override the audio driver to use here. Leaving it empty will result "
1134 . "in Deliantra picking one automatically. GNU/Linux users often prefer specific " 1144 . "in Deliantra picking one automatically. GNU/Linux users often prefer specific "
1135 . "drivers though, and can experiment with <b>alsa</b>, <b>dsp</b>, <b>esd</b>, <b>pulse</b>, <b>arts</b>, <b>nas</b> " 1145 . "drivers though, and can experiment with <b>alsa</b>, <b>dsp</b>, <b>esd</b>, <b>pulse</b>, <b>arts</b>, <b>nas</b> "
1136 . "or other system-specific drivers. Selecting the wrong driver here will simply result" 1146 . "or other system-specific drivers. Selecting the wrong driver here will simply result "
1137 . "in no sound.", 1147 . "in no sound.",
1138 on_changed => sub { my ($self, $value) = @_; $CFG->{audio_driver} = $value; 1 } 1148 on_changed => sub { my ($self, $value) = @_; $CFG->{audio_driver} = $value; 1 }
1139 ); 1149 );
1140 1150
1141 $table->add_at (0, $row, new DC::UI::Label align => 1, text => "Sound Effects"); 1151 $table->add_at (0, $row, new DC::UI::Label align => 1, text => "Sound Effects");
1841 1851
1842 $table->add_at (0, $row , new DC::UI::Label align => 1, text => "Data Directory"); 1852 $table->add_at (0, $row , new DC::UI::Label align => 1, text => "Data Directory");
1843 $table->add_at (1, $row++, new DC::UI::Label align => 0, text => $Deliantra::VARDIR, tooltip => ""); 1853 $table->add_at (1, $row++, new DC::UI::Label align => 0, text => $Deliantra::VARDIR, tooltip => "");
1844 $table->add_at (0, $row , new DC::UI::Label align => 1, text => "Database Directory"); 1854 $table->add_at (0, $row , new DC::UI::Label align => 1, text => "Database Directory");
1845 $table->add_at (1, $row++, new DC::UI::Label align => 0, text => $DC::DB::DBDIR, tooltip => ""); 1855 $table->add_at (1, $row++, new DC::UI::Label align => 0, text => $DC::DB::DBDIR, tooltip => "");
1856 $table->add_at (0, $row , new DC::UI::Label align => 1, text => "Urlader (Prebuilt)");
1857 $table->add_at (1, $row++, new DC::UI::Label align => 0, text => $ENV{URLADER_VERSION}, tooltip => "");
1846 $table->add_at (0, $row , new DC::UI::Label align => 1, text => "Branch (Prebuilt)"); 1858 $table->add_at (0, $row , new DC::UI::Label align => 1, text => "Branch (Prebuilt)");
1847 $table->add_at (1, $row++, new DC::UI::Label align => 0, text => $::EXE_ID, tooltip => ""); 1859 $table->add_at (1, $row++, new DC::UI::Label align => 0, text => $ENV{URLADER_EXE_ID}, tooltip => "");
1848 $table->add_at (0, $row , new DC::UI::Label align => 1, text => "Version (Prebuilt)"); 1860 $table->add_at (0, $row , new DC::UI::Label align => 1, text => "Version (Prebuilt)");
1849 $table->add_at (1, $row++, new DC::UI::Label align => 0, text => $::EXE_VER, tooltip => ""); 1861 $table->add_at (1, $row++, new DC::UI::Label align => 0, text => $ENV{URLADER_EXE_VER}, tooltip => "");
1850 $table->add_at (0, $row , new DC::UI::Label align => 1, text => "Update (Prebuilt)");
1851 $table->add_at (1, $row++, new DC::UI::Label align => 0, text => $::UPDPAR, tooltip => "");
1852 } 1862 }
1853 1863
1854 $vbox 1864 $vbox
1855} 1865}
1856 1866
2030 2040
2031sub media_window { 2041sub media_window {
2032 my $vb = new DC::UI::VBox; 2042 my $vb = new DC::UI::VBox;
2033 2043
2034 $vb->add (new DC::UI::FancyFrame 2044 $vb->add (new DC::UI::FancyFrame
2035 label => "Currently playing music", 2045 label => "Current background music",
2036 child => new DC::UI::ScrolledWindow scroll_x => 1, scroll_y => 0, 2046 child => new DC::UI::ScrolledWindow scroll_x => 1, scroll_y => 0,
2037 child => ($MUSIC_PLAYING_WIDGET = new DC::UI::Label ellipsise => 0, fontsize => 0.8), 2047 child => ($MUSIC_PLAYING_WIDGET = new DC::UI::Label ellipsise => 0, fontsize => 0.8),
2038 ); 2048 );
2049
2050 $vb->add (new DC::UI::FancyFrame
2051 label => "Current downloads",
2052 child => ($DOWNLOADS_WIDGET = new DC::UI::Table
2053 expand => 1, fontsize => 0.8, padding_x => 4, padding_y => 4),
2054 );
2055
2056 $DOWNLOADS_WIDGET->connect (visibility_change => sub {
2057 my ($self) = @_;
2058
2059 delete $self->{updater};
2060 return unless $_[1];
2061
2062 $self->{updater} = AE::timer 0, 1, sub {
2063 $self->clear;
2064
2065 return unless $CONN;
2066
2067 my @nums = sort { $b <=> $a } keys %{ $CONN->{ix_recv_buf} };
2068
2069 $self->add_at (0, 0, new DC::UI::Label align => 1, text => "Face");
2070 $self->add_at (1, 0, new DC::UI::Label align => 0, text => "Octets/Total");
2071
2072 for my $row (0 .. $#nums) {
2073 my $num = $nums[$row];
2074
2075 my $total = length $CONN->{ix_recv_buf}{$num};
2076 my $got = $total - $CONN->{ix_recv_ofs}{$num};
2077
2078 $self->add_at (0, $row + 1, new DC::UI::Label align => 1, text => $num, tooltip => "");
2079 $self->add_at (1, $row + 1, new DC::UI::Label align => 0, text => "$got/$total", tooltip => "");
2080 }
2081 };
2082 });
2039 2083
2040 $vb->add (new DC::UI::FancyFrame 2084 $vb->add (new DC::UI::FancyFrame
2041 label => "Other media used in this session", 2085 label => "Other media used in this session",
2042 expand => 1, 2086 expand => 1,
2043 child => ($LICENSE_WIDGET = new DC::UI::TextScroller 2087 child => ($LICENSE_WIDGET = new DC::UI::TextScroller
2044 expand => 1, fontsize => 0.8, padding_x => 4, padding_y => 4), 2088 expand => 1, fontsize => 0.8, padding_x => 4, padding_y => 4),
2045 ); 2089 );
2046 2090
2047 $vb 2091 $vb
2048} 2092}
2049 2093
2838 }; 2882 };
2839 } 2883 }
2840 } 2884 }
2841 } 2885 }
2842 2886
2887 # fontconfig doesn't support relative paths anymore, so use abs_path and keep fingers crossed
2888 # these are ignored under windows, for some reason, and thus set in the loader
2843 $ENV{FONTCONFIG_FILE} = DC::find_rcfile "fonts/fonts.conf"; 2889 $ENV{FONTCONFIG_FILE} = "fonts.conf";
2844 $ENV{FONTCONFIG_DIR} = DC::find_rcfile "fonts"; 2890 $ENV{FONTCONFIG_PATH} = Cwd::abs_path DC::find_rcfile "fonts";
2891 $ENV{FONTCONFIG_DIR} = $ENV{FONTCONFIG_PATH}; # helps with older versions
2845 2892
2846 { 2893 {
2847 my @fonts = map DC::find_rcfile "fonts/$_", qw( 2894 my @fonts = map DC::find_rcfile "fonts/$_", qw(
2848 DejaVuSans.ttf 2895 DejaVuSans.ttf
2849 DejaVuSansMono.ttf 2896 DejaVuSansMono.ttf

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines