[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] master 2d5def6 36/76: (*-function): Removed.
From: |
Ian Dunn |
Subject: |
[elpa] master 2d5def6 36/76: (*-function): Removed. |
Date: |
Thu, 23 Feb 2017 19:42:49 -0500 (EST) |
branch: master
commit 2d5def6fd8fd8b3e8b336ac4b850abb6d9242738
Author: Ian D <address@hidden>
Commit: Ian D <address@hidden>
(*-function): Removed.
(enwc-current-backend): New variable.
(enwc-call-backend-function): New function to replace backend variables.
(enwc-get-networks, enwc-request-scan, enwc-connect, enwc-disconnect,
enwc-get-current-nw-id, enwc-check-connecting-p, enwc-get-wireless-nw-props,
enwc-is-wired-p, enwc-get-profile-info, enwc-save-nw-settings): Implemented
`enwc-call-backend-function'.
(enwc-load-backend): New function to load backend.
(enwc-unload-backend): New function to unload backend.
(enwc-setup): Implemented `enwc-load-backend'.
---
lisp/enwc-setup.el | 71 ++++++++++-----------
lisp/enwc.el | 178 +++++++++++++++++++++++------------------------------
2 files changed, 109 insertions(+), 140 deletions(-)
diff --git a/lisp/enwc-setup.el b/lisp/enwc-setup.el
index 746d297..0a4d69a 100644
--- a/lisp/enwc-setup.el
+++ b/lisp/enwc-setup.el
@@ -32,56 +32,49 @@
(require 'enwc-wicd)
(require 'enwc-nm)
-(defvar enwc-backend-symbol-list
- '("scan"
- "get-networks"
- "get-wireless-nw-props"
- "connect"
- "disconnect"
- "get-current-nw-id"
- "check-connecting"
- "is-wired"
- "get-profile-info"
- "save-nw-settings"))
-
-(defun enwc--intern-sym (sym-name suffix)
- (intern (concat "enwc-" sym-name suffix)))
-
-(defun enwc--setq-backend (backend func)
- "Set a backend function."
- (set (intern (concat "enwc-" func "-func"))
- (intern (concat "enwc-" backend "-" func))))
-
-(defun enwc-setup-backend (cur-back)
- "Set up ENWC to use the correct function for the backend CUR-BACK."
- (let* ((sym-name (symbol-name cur-back))
- (esb (apply-partially 'enwc--setq-backend sym-name)))
- (cl-mapc esb enwc-backend-symbol-list)
- (funcall (enwc--intern-sym sym-name "-setup"))))
+(defun enwc-load-backend (&optional backend)
+ "Load the backend BACKEND."
+ (interactive)
+ (unless backend
+ (setq backend
+ (completing-read "Backend: " enwc-backends nil t)))
+ (when (and enwc-current-backend
+ (not (eq enwc-current-backend backend)))
+ (enwc-unload-backend))
+ (let ((service (symbol-value (intern (concat "enwc-"
+ (symbol-name backend)
+ "-dbus-service")))))
+ (unless (dbus-ping :system service)
+ (error "Backend %s is not usable." backend))
+
+ (enwc-call-backend-function "load" backend)
+ (setq enwc-current-backend backend)))
+
+(defun enwc-unload-backend ()
+ "Unload the current backend."
+ (when enwc-current-backend
+ (enwc-call-backend-function "unload")
+ (setq enwc-current-backend nil)))
(defun enwc-setup ()
"Set up ENWC.
-This setups ENWC and confirms that one of the backends can be found
-on D-Bus."
+This sets up ENWC and confirms that one of the backends can be found on D-Bus."
(when enwc-display-mode-line
(enwc-enable-display-mode-line))
- (when (and enwc-auto-scan (> enwc-auto-scan-interval 0))
+ (when (and enwc-auto-scan
+ (> enwc-auto-scan-interval 0)
+ (not enwc-scan-timer))
(setq enwc-scan-timer
(run-at-time t enwc-auto-scan-interval 'enwc-scan t)))
(let ((back-list enwc-backends)
- cur-back)
- (while (and back-list (not cur-back))
+ cur-back pass)
+ (while (and back-list (not pass))
(setq cur-back (pop back-list))
- (unless (dbus-ping :system
- (symbol-value (intern (concat "enwc-"
- (symbol-name cur-back)
- "-dbus-service"))))
- (setq cur-back nil)))
- (if cur-back
- (enwc-setup-backend cur-back)
- (error "No usable backend found."))))
+ (setq pass (ignore-errors (enwc-load-backend cur-back))))
+ (unless pass
+ (error "No usable backend was found."))))
(provide 'enwc-setup)
diff --git a/lisp/enwc.el b/lisp/enwc.el
index 78a835f..6c10d34 100644
--- a/lisp/enwc.el
+++ b/lisp/enwc.el
@@ -111,44 +111,10 @@ connection.
;;; The function variables for the abstract layer.
-(defvar enwc-scan-function nil
- "The function variable for the scan function.
-This variable is set during setup.")
+(defvar enwc-current-backend nil
+ "The backend that ENWC is currently using.
-(defvar enwc-get-networks-function nil
- "A function variable to be used in `enwc-get-networks'.
-This is redefined during setup to be the function to get the network
- list.")
-
-(defvar enwc-get-wireless-nw-props-function nil)
-
-(defvar enwc-connect-function nil
- "The function variable for the connect function.")
-
-(defvar enwc-disconnect-function nil
- "The function variable for the disconnect function.")
-
-(defvar enwc-get-current-nw-id-function nil
- "The function variable to be used in `enwc-get-current-nw-id'.
-This is redefined during setup to be the function to get
-the current network id.")
-
-(defvar enwc-check-connecting-function nil
- "The function variable to be used in `enwc-check-connecting'.
-This is redefined during setup to be the function to
-check whether or not ENWC is connecting.")
-
-(defvar enwc-is-wired-function nil
- "The function variable to be used in `enwc-is-wired'.
-This is redefined during setup to be the function to
-check whether or not a wired connection is active.")
-
-(defvar enwc-get-profile-info-function nil)
-
-(defvar enwc-save-nw-settings-function nil
- "The function variable to be used in `enwc-save-nw-settings'.
-This is redefined during setup to be the function to save
-the network settings of a given network.")
+Do not set this directly. Instead, use `enwc-load-backend'.")
(defvar enwc-display-string " [0%] "
"The mode line display string.
@@ -281,6 +247,15 @@ each word by SEPS, which defaults to \"-\"."
(cl-check-type n integer)
(enwc--byte-list-to-int (nreverse (enwc--int-to-byte-list n))))
+(defun enwc-call-backend-function (function &optional backend &rest args)
+ "Call FUNCTION on backend BACKEND.
+FUNCTION is an ENWC function suffix string.
+If the symbol BACKEND is not specified, then it defaults to
+`enwc-current-backend'."
+ (unless backend
+ (setq backend enwc-current-backend))
+ (apply (intern (format "enwc-%s-%s" backend function)) args))
+
;;;;;;;;;;;;;;;;;;;;
;; ENWC functions ;;
;;;;;;;;;;;;;;;;;;;;
@@ -288,33 +263,34 @@ each word by SEPS, which defaults to \"-\"."
(defun enwc-get-networks ()
"Gets the identifiers for the access points
from a previous scan."
- (funcall enwc-get-networks-function enwc-using-wired))
+ (enwc-call-backend-function "get-networks" nil enwc-using-wired))
-(defun enwc-replace-scan ()
- "Runs a backend scan."
- (funcall enwc-scan-function))
+(defun enwc-request-scan ()
+ "Request a backend scan."
+ (setq enwc-scan-requested t)
+ (enwc-call-backend-function "scan"))
(defun enwc-connect (id)
"Connect to network with id ID.
ID is specific to the backend."
- (funcall enwc-connect-function id enwc-using-wired))
+ (enwc-call-backend-function "connect" nil id enwc-using-wired))
(defun enwc-disconnect ()
"Disconnect from the current network."
- (funcall enwc-disconnect-function enwc-using-wired))
+ (enwc-call-backend-function "disconnect" nil enwc-using-wired))
(defun enwc-get-current-nw-id ()
"Gets the id of the current network id,
or nil if there isn't one.
The returned id is specific to the backend."
- (funcall enwc-get-current-nw-id-function enwc-using-wired))
+ (enwc-call-backend-function "get-current-nw-id" nil enwc-using-wired))
(defun enwc-check-connecting-p ()
"Check to see if there is a connection in progress.
Returns `non-nil' if there is one, nil otherwise."
- (funcall enwc-check-connecting-function))
+ (enwc-call-backend-function "check-connecting"))
(defun enwc-get-wireless-nw-props (id)
"Get the network properties of the wireless network with id ID.
@@ -322,19 +298,19 @@ This will return an associative list with the keys
corresponding to `enwc-details-alist'.
ID is specific to the backend."
- (funcall enwc-get-wireless-nw-props-function id))
+ (enwc-call-backend-function "get-wireless-nw-props" nil id))
(defun enwc-is-wired-p ()
"Checks whether or not ENWC is connected to a wired network.
Note that this is NOT the same as `enwc-using-wired'.
This checks for an active wired connection."
- (funcall enwc-is-wired-function))
+ (enwc-call-backend-function "is-wired"))
(defun enwc-get-profile-info (id)
"Get the profile information for network ID.
ID is specific to the backend."
- (funcall enwc-get-profile-info-function id enwc-using-wired))
+ (enwc-call-backend-function "get-profile-info" nil id enwc-using-wired))
(defun enwc-save-nw-settings (id settings)
"Saves network settings SETTINGS to the network profile with network id ID.
@@ -343,7 +319,7 @@ Gateway, DNS Servers, and Security. WIRED is set to
indicate whether or not
this is a wired network.
ID is specific to the backend."
- (funcall enwc-save-nw-settings-function id settings enwc-using-wired))
+ (enwc-call-backend-function "save-nw-settings" nil id settings
enwc-using-wired))
;;;;;;;;;;;;;;;;;;;;;;
;; Actual Functions ;;
@@ -474,8 +450,7 @@ All back-ends must call enwc-process-scan in some way
upon completion of a scan."
(when enwc-scan-interactive
(message "Scanning..."))
- (setq enwc-scan-requested t)
- (enwc-replace-scan))
+ (enwc-request-scan))
(defun enwc-scan-internal-wired ()
"The scanning routine for a wired connection.
@@ -768,56 +743,57 @@ This is mostly useful to view the text of the hidden
entries."
;; Security ;;
;;;;;;;;;;;;;;
-(defmacro enwc--make-supplicant-multi (key &rest args)
- `(cons (quote ,key)
- (quote (checklist :tag ,(capitalize (enwc--sym-to-str key))
- :format "%{%t%}: %v"
- :sample-face bold
- :indent ,(+ 4 (length (enwc--sym-to-str key)))
- :args ,(mapcar
- (lambda (arg)
- `(item :tag ,arg :value ,(downcase arg)))
- args)))))
-
-(defmacro enwc--make-supplicant-choice (key &rest args)
- `(cons (quote ,key)
- (quote (menu-choice :tag ,(capitalize (enwc--sym-to-str key))
- :format "%[%t%]: %v"
- :sample-face bold
- :args
- ,(mapcar
- (lambda (arg)
- `(item :tag ,(downcase arg) :value
,arg))
- args)))))
-
-(defmacro enwc--make-supplicant-secret (key)
- `(cons (quote ,key)
- (quote (editable-field :tag ,(capitalize (enwc--sym-to-str key))
- :format "%{%t%}: %v"
- :sample-face bold
- :keymap enwc-edit-field-map
- :secret ?*))))
-
-(defmacro enwc--make-supplicant-entry (key)
- `(cons (quote ,key)
- (quote (editable-field :tag ,(capitalize (enwc--sym-to-str key))
- :sample-face bold
- :format "%{%t%}: %v"))))
-
-(defmacro enwc--make-supplicant-file (key)
- `(cons (quote ,key)
- (quote (file :tag ,(capitalize (enwc--sym-to-str key))
- :format "%{%t%}: %v"
- :sample-face bold
- :must-match t))))
-
-(defmacro enwc--make-supplicant-list (key &rest args)
- `(cons (quote ,key)
- (quote (list :tag ,(capitalize (enwc--sym-to-str key))
- :format "%{%t%}: %v"
- :sample-face bold
- :indent ,(length (enwc--sym-to-str key))
- :args ,(mapcar (lambda (x) (cdr (eval x))) args)))))
+(eval-when-compile
+ (defmacro enwc--make-supplicant-multi (key &rest args)
+ `(cons (quote ,key)
+ (quote (checklist :tag ,(capitalize (enwc--sym-to-str key))
+ :format "%{%t%}: %v"
+ :sample-face bold
+ :indent ,(+ 4 (length (enwc--sym-to-str key)))
+ :args ,(mapcar
+ (lambda (arg)
+ `(item :tag ,arg :value ,(downcase
arg)))
+ args)))))
+
+ (defmacro enwc--make-supplicant-choice (key &rest args)
+ `(cons (quote ,key)
+ (quote (menu-choice :tag ,(capitalize (enwc--sym-to-str key))
+ :format "%[%t%]: %v"
+ :sample-face bold
+ :args
+ ,(mapcar
+ (lambda (arg)
+ `(item :tag ,(downcase arg) :value ,arg))
+ args)))))
+
+ (defmacro enwc--make-supplicant-secret (key)
+ `(cons (quote ,key)
+ (quote (editable-field :tag ,(capitalize (enwc--sym-to-str key))
+ :format "%{%t%}: %v"
+ :sample-face bold
+ :keymap enwc-edit-field-map
+ :secret ?*))))
+
+ (defmacro enwc--make-supplicant-entry (key)
+ `(cons (quote ,key)
+ (quote (editable-field :tag ,(capitalize (enwc--sym-to-str key))
+ :sample-face bold
+ :format "%{%t%}: %v"))))
+
+ (defmacro enwc--make-supplicant-file (key)
+ `(cons (quote ,key)
+ (quote (file :tag ,(capitalize (enwc--sym-to-str key))
+ :format "%{%t%}: %v"
+ :sample-face bold
+ :must-match t))))
+
+ (defmacro enwc--make-supplicant-list (key &rest args)
+ `(cons (quote ,key)
+ (quote (list :tag ,(capitalize (enwc--sym-to-str key))
+ :format "%{%t%}: %v"
+ :sample-face bold
+ :indent ,(length (enwc--sym-to-str key))
+ :args ,(mapcar (lambda (x) (cdr (eval x))) args))))))
(defconst enwc-supplicant-alist
(list
- [elpa] master 742b67a 19/76: Removed several network manager functions., (continued)
- [elpa] master 742b67a 19/76: Removed several network manager functions., Ian Dunn, 2017/02/23
- [elpa] master 773cef6 24/76: (enwc-backend-symbol-list): New variable., Ian Dunn, 2017/02/23
- [elpa] master b5686da 17/76: (enwc-wicd-get-sec-types): Removed., Ian Dunn, 2017/02/23
- [elpa] master 7914c48 10/76: (enwc-format-mode-line-string, enwc-update-mode-line): Added the option to customize the information displayed in the mode line., Ian Dunn, 2017/02/23
- [elpa] master 59ca546 20/76: (enwc--str-to-sym): Fixed., Ian Dunn, 2017/02/23
- [elpa] master 1722c02 33/76: enwc-cm.el: Fixed up header and footer., Ian Dunn, 2017/02/23
- [elpa] master c8a0397 29/76: Fixed some compilation errors in enwc.el., Ian Dunn, 2017/02/23
- [elpa] master bb68ed5 37/76: Added ignore rules for byte compiled files., Ian Dunn, 2017/02/23
- [elpa] master 6ed7137 43/76: Fix adding to global-mode-string., Ian Dunn, 2017/02/23
- [elpa] master 968e6f0 46/76: Added tag 2.0 for changeset cc2f7aa4ed36, Ian Dunn, 2017/02/23
- [elpa] master 2d5def6 36/76: (*-function): Removed.,
Ian Dunn <=
- [elpa] master d9cbdb9 39/76: Added some section headers., Ian Dunn, 2017/02/23
- [elpa] master 03a5464 57/76: Changed channel to an integer., Ian Dunn, 2017/02/23
- [elpa] master a6b2b03 61/76: Removed tag 2.0, Ian Dunn, 2017/02/23
- [elpa] master 3491895 14/76: Cleaned up code and consolidated front-end functions., Ian Dunn, 2017/02/23
- [elpa] master 14bcaf4 67/76: Fixed bug with NetworkManager loading, Ian Dunn, 2017/02/23
- [elpa] master 4e43aaf 53/76: Moved editing commands to separate file., Ian Dunn, 2017/02/23
- [elpa] master 141ad1b 65/76: Fixed NetworkManager connection bug., Ian Dunn, 2017/02/23
- [elpa] master 8f08bcb 58/76: Cleaned up network display., Ian Dunn, 2017/02/23
- [elpa] master c30c0d7 38/76: Fixed up a lot of security handling problems., Ian Dunn, 2017/02/23
- [elpa] master 710001f 75/76: Removed packages/enwc in preparation for subtree pull., Ian Dunn, 2017/02/23