Skip to content

Commit

Permalink
Many fix
Browse files Browse the repository at this point in the history
  • Loading branch information
torikulhabib committed Nov 24, 2021
1 parent b83cf57 commit d39f3e8
Show file tree
Hide file tree
Showing 17 changed files with 443 additions and 212 deletions.
3 changes: 0 additions & 3 deletions meson/post_install.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,10 @@
import subprocess

prefix = environ.get('MESON_INSTALL_PREFIX', '/usr/local')
schemadir = path.join(environ['MESON_INSTALL_PREFIX'], 'share', 'glib-2.0', 'schemas')
datadir = path.join(prefix, 'share')
desktop_database_dir = path.join(datadir, 'applications')

if not environ.get('DESTDIR'):
print('Compiling gsettings schemas…')
subprocess.call(['glib-compile-schemas', schemadir])
print('Updating desktop database…')
subprocess.call(['update-desktop-database', '-q', desktop_database_dir])
print('Updating icon cache…')
Expand Down
149 changes: 124 additions & 25 deletions src/AddUrl.vala
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,12 @@

namespace Gabut {
public class AddUrl : Gtk.Dialog {
public enum DialogType {
ADDURL,
PROPERTY
}
public signal void downloadfile (string url, Gee.HashMap<string, string> options, bool later, int linkmode);
public signal void saveproperty (Gee.HashMap<string, string> options);
private Gtk.Image status_image;
private Gtk.Label sizelabel;
private MediaEntry link_entry;
Expand All @@ -40,16 +45,28 @@ namespace Gabut {
private Gtk.CheckButton usefolder;
private Gtk.FileChooserButton folder_location;
private Gtk.FileChooserButton cookie_location;
private Gee.HashMap<string, string> hashoption = new Gee.HashMap<string, string> ();
public DialogType dialogtype { get; construct; }
private Gee.HashMap<string, string> hashoptions;
public DownloadRow row;

public AddUrl (Gtk.Application application) {
Object (application: application,
dialogtype: DialogType.ADDURL,
resizable: false,
use_header_bar: 1
);
}

public AddUrl.Property (Gtk.Application application) {
Object (application: application,
dialogtype: DialogType.PROPERTY,
resizable: false,
use_header_bar: 1
);
}

construct {
hashoptions = new Gee.HashMap<string, string> ();
var view_mode = new ModeButton () {
hexpand = false,
margin = 2,
Expand Down Expand Up @@ -271,6 +288,11 @@ namespace Gabut {
});

var start_button = new Gtk.Button.with_label (_("Download"));
start_button.clicked.connect (()=> {
set_option ();
download_send (false);
destroy ();
});

var later_button = new Gtk.Button.with_label (_("Download Later"));
later_button.clicked.connect (()=> {
Expand All @@ -279,8 +301,15 @@ namespace Gabut {
destroy ();
});

var save_button = new Gtk.Button.with_label (_("Save"));
save_button.get_style_context ().add_class (Gtk.STYLE_CLASS_SUGGESTED_ACTION);
save_button.clicked.connect (()=> {
set_option ();
saveproperty (hashoptions);
destroy ();
});

var box_action = new Gtk.Grid () {
width_request = 400,
margin_top = 10,
margin_bottom = 10,
column_spacing = 10,
Expand All @@ -289,9 +318,21 @@ namespace Gabut {
orientation = Gtk.Orientation.HORIZONTAL
};
box_action.get_style_context ().add_class (Gtk.STYLE_CLASS_FLAT);
box_action.add (start_button);
box_action.add (close_button);
box_action.add (later_button);

switch (dialogtype) {
case DialogType.PROPERTY:
box_action.width_request = 250;
box_action.add (save_button);
box_action.add (close_button);
break;
default:
box_action.width_request = 350;
box_action.add (start_button);
box_action.add (close_button);
box_action.add (later_button);
break;
}


var maingrid = new Gtk.Grid () {
orientation = Gtk.Orientation.VERTICAL,
Expand Down Expand Up @@ -324,34 +365,47 @@ namespace Gabut {
break;
}
});
start_button.clicked.connect (()=> {
set_option ();
download_send (false);
destroy ();
});
}

private void set_option () {
if (proxy_entry.text != "") {
hashoptions[AriaOptions.PROXY.get_name ()] = proxy_entry.text.strip ();
}
if (port_entry.text != "") {
hashoptions[AriaOptions.PROXYPORT.get_name ()] = port_entry.text.strip ();
}
if (user_entry.text != "") {
hashoptions[AriaOptions.PROXYUSERNAME.get_name ()] = user_entry.text.strip ();
}
if (pass_entry.text != "") {
hashoptions[AriaOptions.PROXYPASSWORD.get_name ()] = pass_entry.text.strip ();
}
if (loguser_entry.text != "") {
hashoptions[AriaOptions.USERNAME.get_name ()] = loguser_entry.text.strip ();
}
if (logpass_entry.text != "") {
hashoptions[AriaOptions.PASSWORD.get_name ()] = logpass_entry.text.strip ();
}
if (usefolder.active) {
hashoption[AriaOptions.DIR.get_name ()] = folder_location.get_file ().get_path ().replace ("/", "\\/");
hashoptions[AriaOptions.DIR.get_name ()] = folder_location.get_file ().get_path ().replace ("/", "\\/");
}
if (usecookie.active) {
hashoption[AriaOptions.COOKIE.get_name ()] = cookie_location.get_file ().get_path ().replace ("/", "\\/");
hashoptions[AriaOptions.COOKIE.get_name ()] = cookie_location.get_file ().get_path ().replace ("/", "\\/");
}
if (proxymethod.active) {
hashoption[AriaOptions.PROXY_METHOD.get_name ()] = "tunnel";
hashoptions[AriaOptions.PROXY_METHOD.get_name ()] = "tunnel";
}
if (refer_entry.text != "") {
hashoption[AriaOptions.REFERER.get_name ()] = refer_entry.text.strip ();
hashoptions[AriaOptions.REFERER.get_name ()] = refer_entry.text.strip ();
}
if (name_entry.text != "") {
hashoption[AriaOptions.OUT.get_name ()] = name_entry.text.strip ();
hashoptions[AriaOptions.OUT.get_name ()] = name_entry.text.strip ();
}
if (useragent_entry.text != "") {
hashoption[AriaOptions.USER_AGENT.get_name ()] = useragent_entry.text.strip ();
hashoptions[AriaOptions.USER_AGENT.get_name ()] = useragent_entry.text.strip ();
}
hashoption[AriaOptions.BT_SAVE_METADATA.get_name ()] = save_meta.active.to_string ();
hashoption[AriaOptions.RPC_SAVE_UPLOAD_METADATA.get_name ()] = save_meta.active.to_string ();
hashoptions[AriaOptions.BT_SAVE_METADATA.get_name ()] = save_meta.active.to_string ();
hashoptions[AriaOptions.RPC_SAVE_UPLOAD_METADATA.get_name ()] = save_meta.active.to_string ();
}

public override void show () {
Expand All @@ -363,18 +417,18 @@ namespace Gabut {
string url = link_entry.text;
if (url.has_prefix ("file://") && url.has_suffix (".torrent")) {
string bencode = file_bencoder (url);
downloadfile (bencode, hashoption, start, LinkMode.TORRENT);
downloadfile (bencode, hashoptions, start, LinkMode.TORRENT);
} else if (url.has_prefix ("file://") && url.has_suffix (".meta4")) {
string bencode = file_bencoder (url);
downloadfile (bencode, hashoption, start, LinkMode.METALINK);
downloadfile (bencode, hashoptions, start, LinkMode.METALINK);
} else if (url.has_prefix ("file://") && url.has_suffix (".metalink")) {
string bencode = file_bencoder (url);
downloadfile (bencode, hashoption, start, LinkMode.METALINK);
downloadfile (bencode, hashoptions, start, LinkMode.METALINK);
} else {
if (url.has_prefix ("magnet:?")) {
downloadfile (url, hashoption, start, LinkMode.MAGNETLINK);
} else {
downloadfile (url, hashoption, start, LinkMode.URL);
downloadfile (url, hashoptions, start, LinkMode.MAGNETLINK);
} else if (url.has_prefix ("http://") || url.has_prefix ("https://") || url.has_prefix ("ftp://") || url.has_prefix ("sftp://")) {
downloadfile (url, hashoptions, start, LinkMode.URL);
}
}
}
Expand All @@ -391,5 +445,50 @@ namespace Gabut {
status_image.gicon = new ThemedIcon (GLib.ContentType.get_generic_icon_name (match_info.fetch (PostServer.MIME)));
sizelabel.label = GLib.format_size (int64.parse (match_info.fetch (PostServer.FILESIZE)));
}

public void property (DownloadRow row) {
this.row = row;
link_entry.text = row.url;
this.hashoptions = row.hashoption;
status_image.gicon = row.imagefile.gicon;
sizelabel.label = GLib.format_size (row.totalsize);
if (hashoptions.has_key (AriaOptions.PROXY.get_name ())) {
proxy_entry.text = hashoptions.@get (AriaOptions.PROXY.get_name ());
}
if (hashoptions.has_key (AriaOptions.PROXYPORT.get_name ())) {
port_entry.text = hashoptions.@get (AriaOptions.PROXYPORT.get_name ());
}
if (hashoptions.has_key (AriaOptions.PROXYUSERNAME.get_name ())) {
user_entry.text = hashoptions.@get (AriaOptions.PROXYUSERNAME.get_name ());
}
if (hashoptions.has_key (AriaOptions.PROXYPASSWORD.get_name ())) {
pass_entry.text = hashoptions.@get (AriaOptions.PROXYPASSWORD.get_name ());
}
if (hashoptions.has_key (AriaOptions.USERNAME.get_name ())) {
loguser_entry.text = hashoptions.@get (AriaOptions.USERNAME.get_name ());
}
if (hashoptions.has_key (AriaOptions.PASSWORD.get_name ())) {
logpass_entry.text = hashoptions.@get (AriaOptions.PASSWORD.get_name ());
}
if (hashoptions.has_key (AriaOptions.DIR.get_name ())) {
folder_location.set_uri (File.new_for_path (hashoptions.@get (AriaOptions.DIR.get_name ()).replace ("\\/", "/")).get_uri ());
}
if (hashoptions.has_key (AriaOptions.COOKIE.get_name ())) {
cookie_location.set_uri (File.new_for_path (hashoptions.@get (AriaOptions.COOKIE.get_name ()).replace ("\\/", "/")).get_uri ());
}
if (hashoptions.has_key (AriaOptions.REFERER.get_name ())) {
refer_entry.text = hashoptions.@get (AriaOptions.REFERER.get_name ());
}
if (hashoptions.has_key (AriaOptions.USER_AGENT.get_name ())) {
useragent_entry.text = hashoptions.@get (AriaOptions.USER_AGENT.get_name ());
}
if (hashoptions.has_key (AriaOptions.OUT.get_name ())) {
name_entry.text = hashoptions.@get (AriaOptions.OUT.get_name ());
}
if (hashoptions.has_key (AriaOptions.PROXY_METHOD.get_name ())) {
proxymethod.active = hashoptions.@get (AriaOptions.PROXY_METHOD.get_name ()) == "tunnel"? true : false;
}
save_meta.active = bool.parse (hashoptions.get (AriaOptions.RPC_SAVE_UPLOAD_METADATA.get_name ())) | bool.parse (hashoptions.get (AriaOptions.RPC_SAVE_UPLOAD_METADATA.get_name ()));
}
}
}
}
2 changes: 1 addition & 1 deletion src/AlertView.vala
Original file line number Diff line number Diff line change
Expand Up @@ -127,4 +127,4 @@ namespace Gabut {
action_revealer.set_reveal_child (false);
}
}
}
}
6 changes: 3 additions & 3 deletions src/Application.vala
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ namespace Gabut {
public override int command_line (ApplicationCommandLine command) {
var dict = command.get_options_dict ();
activate ();
if (dict.contains (GLib.OPTION_REMAINING)) {
if (dict.contains (GLib.OPTION_REMAINING)) {
foreach (string arg_file in dict.lookup_value (GLib.OPTION_REMAINING, VariantType.BYTESTRING_ARRAY).get_bytestring_array ()) {
if (GLib.FileUtils.test (arg_file, GLib.FileTest.EXISTS)) {
dialog_url (File.new_for_path (arg_file).get_uri ());
Expand Down Expand Up @@ -254,7 +254,7 @@ namespace Gabut {
}
}
}

private static void perform_key_event (string accelerator, bool press, ulong delay) {
uint keysym;
Gdk.ModifierType modifiers;
Expand All @@ -279,4 +279,4 @@ namespace Gabut {
return app.run (args);
}
}
}
}
9 changes: 5 additions & 4 deletions src/DownloadRow.vala
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ namespace Gabut {
private Gtk.Label transfer_rate;
private Gtk.ProgressBar progressbar;
private Gtk.Label filename_label;
private Gtk.Image imagefile;
public Gtk.Image imagefile;
private bool stoptimer;
public Gee.HashMap<string, string> hashoption = new Gee.HashMap<string, string> ();

Expand Down Expand Up @@ -86,7 +86,7 @@ namespace Gabut {
if (filename != null) {
Idle.add (()=> {
GabutApp.gabutwindow.application.activate_action ("destroy", new Variant.string (ariagid));
notify_app (_("Download Complete"), (filename));
notify_app (_("Download Complete"), filename);
if (bool.parse (get_dbsetting (DBSettings.DIALOGNOTIF))) {
send_dialog ();
}
Expand Down Expand Up @@ -127,6 +127,7 @@ namespace Gabut {
start_button.tooltip_text = _("Error");
if (ariagid != null) {
filename = get_aria_error (int.parse (aria_tell_status (ariagid, TellStatus.ERRORCODE)));
notify_app (_("Download Error"), filename);
aria_remove (ariagid);
}
if (timeout_id != 0) {
Expand Down Expand Up @@ -257,7 +258,7 @@ namespace Gabut {
}
}
}

public DownloadRow (Sqlite.Statement stmt) {
linkmode = stmt.column_int (DBDownload.LINKMODE);
status = stmt.column_int (DBDownload.STATUS);
Expand Down Expand Up @@ -553,4 +554,4 @@ namespace Gabut {
GabutApp.gabutwindow.application.activate_action ("succes", new Variant.string (builder.str));
}
}
}
}
10 changes: 5 additions & 5 deletions src/Downloader.vala
Original file line number Diff line number Diff line change
Expand Up @@ -123,7 +123,7 @@ namespace Gabut {
}
set {
_transferrate = value;
transfer_rate.label = @"$(GLib.format_size ((uint64) transferrate))";
transfer_rate.label = GLib.format_size ((uint64) transferrate);
}
}

Expand Down Expand Up @@ -160,7 +160,7 @@ namespace Gabut {
}
set {
_aconnection = value;
connectlabel.label = @"$(_aconnection)";
connectlabel.label = _aconnection.to_string ();
}
}

Expand Down Expand Up @@ -452,7 +452,7 @@ namespace Gabut {
bt_req_limit.value_changed.connect (()=> {
aria_set_option (ariagid, AriaOptions.BT_REQUEST_PEER_SPEED_LIMIT, bt_req_limit.value.to_string ());
});

var stack = new Gtk.Stack () {
transition_type = Gtk.StackTransitionType.SLIDE_LEFT_RIGHT,
transition_duration = 500,
Expand Down Expand Up @@ -733,7 +733,7 @@ namespace Gabut {
aria_files_store (ariagid);
if (totalsize > 0 && transferrate > 0) {
uint64 remaining_time = (totalsize - transferred) / transferrate;
timeleft.label = @"$(format_time ((int) remaining_time))";
timeleft.label = format_time ((int) remaining_time);
}
return stoptimer;
}
Expand All @@ -752,4 +752,4 @@ namespace Gabut {
return exist;
}
}
}
}
6 changes: 3 additions & 3 deletions src/FileChooser.vala
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,8 @@ namespace Gabut {
public FileChooser (Gtk.Application application) {
Object (application: application,
title: _("Open"),
action: Gtk.FileChooserAction.OPEN
action: Gtk.FileChooserAction.OPEN,
deletable: false
);
}

Expand All @@ -35,7 +36,6 @@ namespace Gabut {
var metalink = new Gtk.FileFilter ();
metalink.set_filter_name (_("Metalink"));
metalink.add_pattern ("application/metalink+xml");
get_style_context ().add_class (Gtk.STYLE_CLASS_HEADER);

add_filter (torrent);
add_filter (metalink);
Expand All @@ -46,4 +46,4 @@ namespace Gabut {
suggested_button.get_style_context ().add_class (Gtk.STYLE_CLASS_SUGGESTED_ACTION);
}
}
}
}
Loading

0 comments on commit d39f3e8

Please sign in to comment.